- feynman/skills/workflow-bootstrap/SKILL.md - Bootstrap skill - feynman/memory-template.md - Memory template - feynman/README.md - Feynman configs documentation - scripts/setup.sh - Updated to auto-install Feynman configs if detected - docs/workflow/INDEX.md - Updated with Feynman integration info - README.md - Updated with Feynman integration section When running 'pnpm run setup': 1. Checks for Feynman installation 2. Installs workflow-bootstrap skill to ~/.feynman/agent/skills/ 3. Creates .feynman/memory.md from template 4. Gives two-layer nudge: skill (manual) + memory (automatic)
192 lines
6.1 KiB
Bash
192 lines
6.1 KiB
Bash
#!/bin/bash
|
|
#
|
|
# Setup script for workflow template
|
|
# - Installs pnpm if missing
|
|
# - Installs dependencies
|
|
# - Sets up pre-commit hook
|
|
# - Installs Feynman skill and memory (if Feynman detected)
|
|
#
|
|
|
|
set -e
|
|
|
|
echo "=========================================="
|
|
echo "Workflow Template Setup"
|
|
echo "=========================================="
|
|
echo ""
|
|
|
|
# Colors
|
|
RED='\033[0;31m'
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
NC='\033[0m' # No Color
|
|
|
|
# ============================================
|
|
# Step 0: Check for feynman directory
|
|
# ============================================
|
|
FEYNMAN_DIR=""
|
|
FEYNMAN_SKILLS_DIR=""
|
|
FEYNMAN_DETECTED=false
|
|
|
|
# Check common feynman locations
|
|
if [ -d "$HOME/.feynman/agent/skills" ]; then
|
|
FEYNMAN_DIR="$HOME/.feynman"
|
|
FEYNMAN_SKILLS_DIR="$HOME/.feynman/agent/skills"
|
|
FEYNMAN_DETECTED=true
|
|
elif [ -d "$HOME/.config/feynman/agent/skills" ]; then
|
|
FEYNMAN_DIR="$HOME/.config/feynman"
|
|
FEYNMAN_SKILLS_DIR="$HOME/.config/feynman/agent/skills"
|
|
FEYNMAN_DETECTED=true
|
|
fi
|
|
|
|
# Check if skill already installed
|
|
SKILL_INSTALLED=false
|
|
if [ -d "feynman/skills/workflow-bootstrap" ]; then
|
|
if [ "$FEYNMAN_DETECTED" = true ] && [ -d "$FEYNMAN_SKILLS_DIR/workflow-bootstrap" ]; then
|
|
SKILL_INSTALLED=true
|
|
fi
|
|
fi
|
|
|
|
# ============================================
|
|
# Step 1: Check/install pnpm
|
|
echo "Checking for pnpm..."
|
|
|
|
if command -v pnpm &> /dev/null; then
|
|
echo -e "${GREEN}pnpm found: $(pnpm --version)${NC}"
|
|
else
|
|
echo -e "${YELLOW}pnpm not found. Installing...${NC}"
|
|
|
|
# Try corepack first (ships with Node 16+)
|
|
if command -v corepack &> /dev/null; then
|
|
echo "Using corepack to enable pnpm..."
|
|
corepack enable
|
|
corepack prepare pnpm@latest --activate
|
|
# Try npm as fallback
|
|
elif command -v npm &> /dev/null; then
|
|
echo "Using npm to install pnpm globally..."
|
|
npm install -g pnpm
|
|
else
|
|
echo ""
|
|
echo -e "${RED}ERROR: Neither pnpm, corepack, nor npm found.${NC}"
|
|
echo ""
|
|
echo "Please install Node.js first:"
|
|
echo " - https://nodejs.org (recommended)"
|
|
echo " - Or via your system's package manager"
|
|
echo ""
|
|
echo "After installing Node.js, re-run this setup:"
|
|
echo " pnpm run setup"
|
|
echo ""
|
|
exit 1
|
|
fi
|
|
|
|
echo -e "${GREEN}pnpm installed: $(pnpm --version)${NC}"
|
|
fi
|
|
|
|
echo ""
|
|
|
|
# Step 2: Install dependencies
|
|
echo "Installing dependencies..."
|
|
pnpm install
|
|
|
|
# Step 3: Install pre-commit hook
|
|
echo ""
|
|
echo "Setting up pre-commit hook..."
|
|
|
|
# Detect git directory
|
|
if [ -d ".git" ]; then
|
|
mkdir -p .git/hooks
|
|
else
|
|
echo -e "${YELLOW}Warning: .git directory not found. Run 'git init' first if this is a new repo.${NC}"
|
|
echo "Creating hooks directory anyway..."
|
|
mkdir -p .git/hooks
|
|
fi
|
|
|
|
# Create pre-commit hook
|
|
cat > .git/hooks/pre-commit << 'EOF'
|
|
#!/bin/bash
|
|
# Pre-commit hook for issue-based workflow
|
|
# Automatically installed by pnpm run setup
|
|
|
|
node .hooks/issue-linter.js
|
|
EOF
|
|
|
|
chmod +x .git/hooks/pre-commit
|
|
|
|
# Also make setup script executable
|
|
chmod +x scripts/setup.sh
|
|
|
|
echo -e "${GREEN}Pre-commit hook installed.${NC}"
|
|
echo ""
|
|
|
|
# ============================================
|
|
# Step 4: Install Feynman configs (if feynman detected)
|
|
# ============================================
|
|
if [ "$FEYNMAN_DETECTED" = true ] && [ "$SKILL_INSTALLED" = false ]; then
|
|
echo "=========================================="
|
|
echo "Feynman Detected"
|
|
echo "=========================================="
|
|
echo ""
|
|
echo -e "${YELLOW}Feynman installation found at: $FEYNMAN_DIR${NC}"
|
|
|
|
# Check if feynman directory is writable
|
|
if [ -w "$FEYNMAN_SKILLS_DIR" ]; then
|
|
echo "Installing workflow-bootstrap skill..."
|
|
mkdir -p "$FEYNMAN_SKILLS_DIR/workflow-bootstrap"
|
|
cp -f feynman/skills/workflow-bootstrap/SKILL.md "$FEYNMAN_SKILLS_DIR/workflow-bootstrap/"
|
|
echo -e "${GREEN}Skill installed to: $FEYNMAN_SKILLS_DIR/workflow-bootstrap/${NC}"
|
|
|
|
# Also create/update memory in the project if .feynman exists
|
|
if [ -d ".feynman" ]; then
|
|
if [ ! -f ".feynman/memory.md" ]; then
|
|
echo "Creating .feynman/memory.md..."
|
|
cp feynman/memory-template.md .feynman/memory.md
|
|
echo -e "${GREEN}Memory template installed to: .feynman/memory.md${NC}"
|
|
else
|
|
echo -e "${YELLOW}.feynman/memory.md already exists. Skipping.${NC}"
|
|
fi
|
|
fi
|
|
|
|
echo ""
|
|
echo "Feynman can now bootstrap this workflow for any new project."
|
|
echo "Trigger phrases:"
|
|
echo " - 'feynman, start a new project'"
|
|
echo " - 'set up the workflow'"
|
|
echo " - 'apply the workflow template'"
|
|
echo ""
|
|
else
|
|
echo -e "${YELLOW}Warning: Feynman skills directory not writable.${NC}"
|
|
echo "To install the workflow-bootstrap skill manually:"
|
|
echo " mkdir -p $FEYNMAN_SKILLS_DIR/workflow-bootstrap"
|
|
echo " cp feynman/skills/workflow-bootstrap/SKILL.md $FEYNMAN_SKILLS_DIR/workflow-bootstrap/"
|
|
echo ""
|
|
fi
|
|
elif [ "$SKILL_INSTALLED" = true ]; then
|
|
echo -e "${GREEN}Workflow-bootstrap skill already installed.${NC}"
|
|
else
|
|
echo "=========================================="
|
|
echo "Feynman Not Detected"
|
|
echo "=========================================="
|
|
echo ""
|
|
echo -e "${YELLOW}Feynman not found. The workflow-bootstrap skill was not installed.${NC}"
|
|
echo ""
|
|
echo "To install Feynman: https://github.com/your-org/feynman"
|
|
echo ""
|
|
echo "After installing Feynman, you can manually copy the skill:"
|
|
echo " mkdir -p ~/.feynman/agent/skills"
|
|
echo " cp -r feynman/skills/* ~/.feynman/agent/skills/"
|
|
echo ""
|
|
fi
|
|
|
|
# Step 5: Summary
|
|
echo "=========================================="
|
|
echo -e "${GREEN}Setup complete!${NC}"
|
|
echo "=========================================="
|
|
echo ""
|
|
echo "Next steps:"
|
|
echo " 1. Read docs/workflow/INDEX.md"
|
|
echo " 2. Check .issues/INDEX.md for open issues"
|
|
echo " 3. Start working on an issue or create a new one"
|
|
echo ""
|
|
echo "The pre-commit hook will validate issue files before every commit."
|
|
echo "Code changes without a valid issue file will be rejected."
|
|
echo ""
|