/** * Prometheus Plan Template * * The markdown template structure for work plans generated by Prometheus. * Includes TL;DR, context, objectives, verification strategy, TODOs, and success criteria. */ export const PROMETHEUS_PLAN_TEMPLATE = `## Plan Structure Generate plan to: \`.sisyphus/plans/{name}.md\` \`\`\`markdown # {Plan Title} ## TL;DR > **Quick Summary**: [1-2 sentences capturing the core objective and approach] > > **Deliverables**: [Bullet list of concrete outputs] > - [Output 1] > - [Output 2] > > **Estimated Effort**: [Quick | Short | Medium | Large | XL] > **Parallel Execution**: [YES - N waves | NO - sequential] > **Critical Path**: [Task X → Task Y → Task Z] --- ## Context ### Original Request [User's initial description] ### Interview Summary **Key Discussions**: - [Point 1]: [User's decision/preference] - [Point 2]: [Agreed approach] **Research Findings**: - [Finding 1]: [Implication] - [Finding 2]: [Recommendation] ### Metis Review **Identified Gaps** (addressed): - [Gap 1]: [How resolved] - [Gap 2]: [How resolved] --- ## Work Objectives ### Core Objective [1-2 sentences: what we're achieving] ### Concrete Deliverables - [Exact file/endpoint/feature] ### Definition of Done - [ ] [Verifiable condition with command] ### Must Have - [Non-negotiable requirement] ### Must NOT Have (Guardrails) - [Explicit exclusion from Metis review] - [AI slop pattern to avoid] - [Scope boundary] --- ## Verification Strategy (MANDATORY) > This section is determined during interview based on Test Infrastructure Assessment. > The choice here affects ALL TODO acceptance criteria. ### Test Decision - **Infrastructure exists**: [YES/NO] - **User wants tests**: [TDD / Tests-after / Manual-only] - **Framework**: [bun test / vitest / jest / pytest / none] ### If TDD Enabled Each TODO follows RED-GREEN-REFACTOR: **Task Structure:** 1. **RED**: Write failing test first - Test file: \`[path].test.ts\` - Test command: \`bun test [file]\` - Expected: FAIL (test exists, implementation doesn't) 2. **GREEN**: Implement minimum code to pass - Command: \`bun test [file]\` - Expected: PASS 3. **REFACTOR**: Clean up while keeping green - Command: \`bun test [file]\` - Expected: PASS (still) **Test Setup Task (if infrastructure doesn't exist):** - [ ] 0. Setup Test Infrastructure - Install: \`bun add -d [test-framework]\` - Config: Create \`[config-file]\` - Verify: \`bun test --help\` → shows help - Example: Create \`src/__tests__/example.test.ts\` - Verify: \`bun test\` → 1 test passes ### If Automated Verification Only (NO User Intervention) > **CRITICAL PRINCIPLE: ZERO USER INTERVENTION** > > **NEVER** create acceptance criteria that require: > - "User manually tests..." / "사용자가 직접 테스트..." > - "User visually confirms..." / "사용자가 눈으로 확인..." > - "User interacts with..." / "사용자가 직접 조작..." > - "Ask user to verify..." / "사용자에게 확인 요청..." > - ANY step that requires a human to perform an action > > **ALL verification MUST be automated and executable by the agent.** > If a verification cannot be automated, find an automated alternative or explicitly note it as a known limitation. Each TODO includes EXECUTABLE verification procedures that agents can run directly: **By Deliverable Type:** | Type | Verification Tool | Automated Procedure | |------|------------------|---------------------| | **Frontend/UI** | Playwright browser via playwright skill | Agent navigates, clicks, screenshots, asserts DOM state | | **TUI/CLI** | interactive_bash (tmux) | Agent runs command, captures output, validates expected strings | | **API/Backend** | curl / httpie via Bash | Agent sends request, parses response, validates JSON fields | | **Library/Module** | Node/Python REPL via Bash | Agent imports, calls function, compares output | | **Config/Infra** | Shell commands via Bash | Agent applies config, runs state check, validates output | **Evidence Requirements (Agent-Executable):** - Command output captured and compared against expected patterns - Screenshots saved to .sisyphus/evidence/ for visual verification - JSON response fields validated with specific assertions - Exit codes checked (0 = success) --- ## Execution Strategy ### Parallel Execution Waves > Maximize throughput by grouping independent tasks into parallel waves. > Each wave completes before the next begins. \`\`\` Wave 1 (Start Immediately): ├── Task 1: [no dependencies] └── Task 5: [no dependencies] Wave 2 (After Wave 1): ├── Task 2: [depends: 1] ├── Task 3: [depends: 1] └── Task 6: [depends: 5] Wave 3 (After Wave 2): └── Task 4: [depends: 2, 3] Critical Path: Task 1 → Task 2 → Task 4 Parallel Speedup: ~40% faster than sequential \`\`\` ### Dependency Matrix | Task | Depends On | Blocks | Can Parallelize With | |------|------------|--------|---------------------| | 1 | None | 2, 3 | 5 | | 2 | 1 | 4 | 3, 6 | | 3 | 1 | 4 | 2, 6 | | 4 | 2, 3 | None | None (final) | | 5 | None | 6 | 1 | | 6 | 5 | None | 2, 3 | ### Agent Dispatch Summary | Wave | Tasks | Recommended Agents | |------|-------|-------------------| | 1 | 1, 5 | delegate_task(category="...", load_skills=[...], run_in_background=true) | | 2 | 2, 3, 6 | dispatch parallel after Wave 1 completes | | 3 | 4 | final integration task | --- ## TODOs > Implementation + Test = ONE Task. Never separate. > EVERY task MUST have: Recommended Agent Profile + Parallelization info. - [ ] 1. [Task Title] **What to do**: - [Clear implementation steps] - [Test cases to cover] **Must NOT do**: - [Specific exclusions from guardrails] **Recommended Agent Profile**: > Select category + skills based on task domain. Justify each choice. - **Category**: \`[visual-engineering | ultrabrain | artistry | quick | unspecified-low | unspecified-high | writing]\` - Reason: [Why this category fits the task domain] - **Skills**: [\`skill-1\`, \`skill-2\`] - \`skill-1\`: [Why needed - domain overlap explanation] - \`skill-2\`: [Why needed - domain overlap explanation] - **Skills Evaluated but Omitted**: - \`omitted-skill\`: [Why domain doesn't overlap] **Parallelization**: - **Can Run In Parallel**: YES | NO - **Parallel Group**: Wave N (with Tasks X, Y) | Sequential - **Blocks**: [Tasks that depend on this task completing] - **Blocked By**: [Tasks this depends on] | None (can start immediately) **References** (CRITICAL - Be Exhaustive): > The executor has NO context from your interview. References are their ONLY guide. > Each reference must answer: "What should I look at and WHY?" **Pattern References** (existing code to follow): - \`src/services/auth.ts:45-78\` - Authentication flow pattern (JWT creation, refresh token handling) - \`src/hooks/useForm.ts:12-34\` - Form validation pattern (Zod schema + react-hook-form integration) **API/Type References** (contracts to implement against): - \`src/types/user.ts:UserDTO\` - Response shape for user endpoints - \`src/api/schema.ts:createUserSchema\` - Request validation schema **Test References** (testing patterns to follow): - \`src/__tests__/auth.test.ts:describe("login")\` - Test structure and mocking patterns **Documentation References** (specs and requirements): - \`docs/api-spec.md#authentication\` - API contract details - \`ARCHITECTURE.md:Database Layer\` - Database access patterns **External References** (libraries and frameworks): - Official docs: \`https://zod.dev/?id=basic-usage\` - Zod validation syntax - Example repo: \`github.com/example/project/src/auth\` - Reference implementation **WHY Each Reference Matters** (explain the relevance): - Don't just list files - explain what pattern/information the executor should extract - Bad: \`src/utils.ts\` (vague, which utils? why?) - Good: \`src/utils/validation.ts:sanitizeInput()\` - Use this sanitization pattern for user input **Acceptance Criteria**: > **CRITICAL: AGENT-EXECUTABLE VERIFICATION ONLY** > > - Acceptance = EXECUTION by the agent, not "user checks if it works" > - Every criterion MUST be verifiable by running a command or using a tool > - NO steps like "user opens browser", "user clicks", "user confirms" > - If you write "[placeholder]" - REPLACE IT with actual values based on task context **If TDD (tests enabled):** - [ ] Test file created: src/auth/login.test.ts - [ ] Test covers: successful login returns JWT token - [ ] bun test src/auth/login.test.ts → PASS (3 tests, 0 failures) **Automated Verification (ALWAYS include, choose by deliverable type):** **For Frontend/UI changes** (using playwright skill): \\\`\\\`\\\` # Agent executes via playwright browser automation: 1. Navigate to: http://localhost:3000/login 2. Fill: input[name="email"] with "test@example.com" 3. Fill: input[name="password"] with "password123" 4. Click: button[type="submit"] 5. Wait for: selector ".dashboard-welcome" to be visible 6. Assert: text "Welcome back" appears on page 7. Screenshot: .sisyphus/evidence/task-1-login-success.png \\\`\\\`\\\` **For TUI/CLI changes** (using interactive_bash): \\\`\\\`\\\` # Agent executes via tmux session: 1. Command: ./my-cli --config test.yaml 2. Wait for: "Configuration loaded" in output 3. Send keys: "q" to quit 4. Assert: Exit code 0 5. Assert: Output contains "Goodbye" \\\`\\\`\\\` **For API/Backend changes** (using Bash curl): \\\`\\\`\\\`bash # Agent runs: curl -s -X POST http://localhost:8080/api/users \\ -H "Content-Type: application/json" \\ -d '{"email":"new@test.com","name":"Test User"}' \\ | jq '.id' # Assert: Returns non-empty UUID # Assert: HTTP status 201 \\\`\\\`\\\` **For Library/Module changes** (using Bash node/bun): \\\`\\\`\\\`bash # Agent runs: bun -e "import { validateEmail } from './src/utils/validate'; console.log(validateEmail('test@example.com'))" # Assert: Output is "true" bun -e "import { validateEmail } from './src/utils/validate'; console.log(validateEmail('invalid'))" # Assert: Output is "false" \\\`\\\`\\\` **For Config/Infra changes** (using Bash): \\\`\\\`\\\`bash # Agent runs: docker compose up -d # Wait 5s for containers docker compose ps --format json | jq '.[].State' # Assert: All states are "running" \\\`\\\`\\\` **Evidence to Capture:** - [ ] Terminal output from verification commands (actual output, not expected) - [ ] Screenshot files in .sisyphus/evidence/ for UI changes - [ ] JSON response bodies for API changes **Commit**: YES | NO (groups with N) - Message: \`type(scope): desc\` - Files: \`path/to/file\` - Pre-commit: \`test command\` --- ## Commit Strategy | After Task | Message | Files | Verification | |------------|---------|-------|--------------| | 1 | \`type(scope): desc\` | file.ts | npm test | --- ## Success Criteria ### Verification Commands \`\`\`bash command # Expected: output \`\`\` ### Final Checklist - [ ] All "Must Have" present - [ ] All "Must NOT Have" absent - [ ] All tests pass \`\`\` --- `