--- name: ralph-new description: Create a new greenfield project with full Ralph Loop automation. Use when starting a new project from scratch, creating a new application, or when the user says "ralph new", "new project", or "build me". disable-model-invocation: true allowed-tools: Read, Write, Edit, Bash, Glob, Grep, WebFetch, AskUserQuestion --- # Ralph New Project Skill Create a new greenfield project with full Ralph Loop automation including PRD generation, task database, Playwright testing, and automatic execution of all tasks. ## CRITICAL: AUTONOMOUS EXECUTION After gathering requirements and setting up the project, you MUST automatically start the Ralph Loop and continue working until ALL tasks are complete. Do NOT stop after setup - the goal is fully autonomous development. ## WORKFLOW ### Phase 1: Gather Requirements **Step 1.1: Get User Input** Ask the user what they want to build. Accept: - Text description - Document paths (read them with Read tool) - URLs (fetch with WebFetch) ``` What would you like to build? You can: - Describe it in text - Provide document path(s) with requirements - Provide URL(s) with specifications ``` **Step 1.2: Read All Input Documents** If user provides documents: 1. Read each document using the Read tool 2. Summarize key requirements from each 3. Combine into unified requirements **Step 1.3: Ask Clarifying Questions** You MUST ask clarifying questions using AskUserQuestion tool: 1. **Tech Stack**: What programming language/framework? 2. **Database**: What database if needed? 3. **Testing**: Confirm Playwright for E2E testing 4. **Authentication**: Does it need auth? What type? 5. **Any constraints**: Performance, security requirements? Wait for user answers before proceeding. ### Phase 2: Fetch Documentation **Step 2.1: Identify Technologies** Based on user answers, identify all technologies needed. **Step 2.2: Fetch Context7 Documentation** For each technology, fetch current documentation using Context7 MCP tools or WebFetch. Technology mapping: - Next.js → nextjs - React → react - FastAPI → fastapi - Django → django - Express → express - Playwright → playwright ### Phase 3: Create PRD with Tasks **Step 3.1: Detect Platform** ```bash # Detect operating system if [[ "$OSTYPE" == "msys" ]] || [[ "$OSTYPE" == "win32" ]] || [[ -n "$WINDIR" ]]; then PLATFORM="windows" else PLATFORM="unix" fi ``` **Step 3.2: Create Project Structure** ```bash mkdir -p docs scripts tests/e2e ``` **Step 3.3: Generate PRD.md** Create PRD.md with this exact structure: ```markdown # Project Requirements Document ## Project Overview [Brief description] ## Tech Stack - Language: [e.g., Python 3.12] - Framework: [e.g., FastAPI] - Database: [e.g., SQLite] - Testing: Playwright for E2E, pytest/jest for unit ## User Stories ### US-001: [Title] **Description:** As a [user], I want [feature] so that [benefit]. **Acceptance Criteria:** - [ ] [Criterion 1] - [ ] [Criterion 2] - [ ] All tests pass **Test Steps (Playwright):** ```json [ {"step": 1, "action": "navigate", "target": "/path"}, {"step": 2, "action": "click", "target": "selector"}, {"step": 3, "action": "verify", "target": "text", "expected": "result"} ] ``` ``` **TASK SIZING:** Each task MUST be completable in ONE context window (~10 min). **STORY ORDERING:** 1. Schema/database changes 2. Backend logic / API endpoints 3. UI components 4. Integration tests **Step 3.4: Create progress.txt** ```markdown # Progress Log ## Project: [Name] Started: [Date] ## Learnings (Patterns discovered during development) ``` **Step 3.5: Create AGENTS.md** ```markdown # Agent Patterns ## Reusable Patterns (Document patterns that work) ## Known Issues (Track issues and solutions) ``` ### Phase 4: Initialize Database **Step 4.1: Check Prerequisites** ```bash # Check SQLite sqlite3 --version 2>/dev/null || echo "SQLite not found" ``` If not available, install: - **Windows:** `winget install SQLite.SQLite` - **macOS:** `brew install sqlite3` - **Linux:** `sudo apt install sqlite3` **Step 4.2: Copy Schema and Initialize** Copy the schema from Ralph Skill templates directory and initialize: ```bash # Initialize database sqlite3 ralph.db < templates/schema.sql ``` Or create schema inline if template not available. **Step 4.3: Import Tasks** For each user story in PRD.md: ```bash sqlite3 ralph.db "INSERT INTO tasks (task_id, name, type, status) VALUES ('US-001', 'Story title', 'user_story', 'planned');" ``` ### Phase 5: Copy Loop Scripts and Dashboard Copy the Ralph loop scripts and dashboard to the project: **For Unix (Linux/macOS):** ```bash # Copy scripts cp [ralph-skill-path]/scripts/ralph.sh scripts/ cp [ralph-skill-path]/scripts/ralph-db.sh scripts/ chmod +x scripts/*.sh # Copy dashboard cp [ralph-skill-path]/templates/dashboard.html . cp [ralph-skill-path]/templates/schema.sql templates/ ``` **For Windows:** ```powershell Copy-Item [ralph-skill-path]\scripts\ralph.ps1 scripts\ Copy-Item [ralph-skill-path]\scripts\ralph-db.ps1 scripts\ # Copy dashboard Copy-Item [ralph-skill-path]\templates\dashboard.html . Copy-Item [ralph-skill-path]\templates\schema.sql templates\ ``` **Note:** The `[ralph-skill-path]` is typically: - **Personal skills:** `~/.claude/skills/ralph-new/` (Unix) or `$env:USERPROFILE\.claude\skills\ralph-new\` (Windows) - **If cloned:** The path where you cloned Ralph-Skill repository If templates are not available, create them inline or download from: `https://raw.githubusercontent.com/kroegha/Ralph-Skill/main/templates/` ### Phase 6: Setup Playwright Testing **For Node.js projects:** ```bash npm init -y npm install -D @playwright/test npx playwright install chromium ``` **For Python projects:** ```bash pip install pytest-playwright playwright install chromium ``` Create initial test structure in `tests/e2e/`. ### Phase 7: START THE RALPH LOOP (AUTOMATIC) **CRITICAL: You MUST start the loop automatically. Do NOT ask the user to run it.** **Step 7.1: Detect Platform and Run Loop** ```bash # Detect platform if [[ "$OSTYPE" == "msys" ]] || [[ "$OSTYPE" == "win32" ]] || [[ -n "$WINDIR" ]]; then # Windows - use PowerShell powershell.exe -ExecutionPolicy Bypass -File scripts/ralph.ps1 -MaxIterations 50 else # Unix (Linux/macOS) ./scripts/ralph.sh 50 fi ``` **Step 7.2: Alternative - Inline Loop Execution** If the loop scripts cannot be run externally, implement the loop inline: ``` WHILE there are pending tasks in ralph.db: 1. Get next task: sqlite3 ralph.db "SELECT task_id FROM tasks WHERE status='planned' ORDER BY priority LIMIT 1;" 2. Mark as in-progress: sqlite3 ralph.db "UPDATE tasks SET status='in-progress' WHERE task_id='[ID]';" 3. IMPLEMENT the task (write code, create files) 4. RUN tests: npx playwright test OR pytest tests/e2e 5. IF tests pass: - Mark complete: sqlite3 ralph.db "UPDATE tasks SET status='completed' WHERE task_id='[ID]';" - Update PRD.md checkbox to [x] - Commit: git add . && git commit -m "Complete [task_id]: [description]" 6. IF tests fail: - Log error to progress.txt - Increment failure count - If 3+ failures, mark as failed 7. CONTINUE to next task END WHILE ``` **Step 7.3: Loop Until Complete** Continue working on tasks until: - All tasks are marked `completed` in ralph.db - OR all remaining tasks are marked `failed` (blocked) When all tasks complete, output: ``` COMPLETE ``` When blocked by failures, output: ``` FAILED ``` ## CROSS-PLATFORM COMMANDS REFERENCE | Action | Windows (PowerShell) | Unix (Bash) | |--------|---------------------|-------------| | Create directory | `New-Item -ItemType Directory -Path "dir"` | `mkdir -p dir` | | Copy file | `Copy-Item src dest` | `cp src dest` | | Check if file exists | `Test-Path "file"` | `[[ -f file ]]` | | Run SQLite | `sqlite3 ralph.db "query"` | `sqlite3 ralph.db "query"` | | Run Playwright | `npx playwright test` | `npx playwright test` | | Git commit | `git commit -m "msg"` | `git commit -m "msg"` | ## COMPLETION REQUIREMENTS You have NOT completed this skill until: 1. All user stories are implemented 2. All Playwright tests pass 3. All tasks are marked complete in ralph.db 4. Final commit is made 5. `COMPLETE` is output DO NOT stop after setup. DO NOT ask user to run the loop. Run it automatically.