Files
clawd/antfarm/workflows/feature-dev/workflow.yml
Echo dc64d18224 fix: convert antfarm from broken submodule to regular directory
Fixes Gitea 500 error caused by invalid submodule reference.
Converted antfarm from pseudo-submodule (missing .gitmodules) to
regular directory with all source files.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-11 16:03:37 +00:00

344 lines
8.9 KiB
YAML

# Ralph loop (https://github.com/snarktank/ralph) — each agent runs in a fresh
# session with clean context. Memory persists via git history and progress files.
id: feature-dev
name: Feature Development Workflow
version: 5
description: |
Story-based execution pipeline. Planner decomposes tasks into user stories.
Setup prepares the environment and establishes baseline.
Developer implements each story (with tests) in a fresh session. Verifier checks each story.
Then integration/E2E testing, PR creation, and code review.
cron:
interval_ms: 120000 # 2 minute polling (default era 5 min)
agents:
- id: planner
name: Planner
role: analysis
description: Decomposes tasks into ordered user stories.
model: opus # Use Opus for strategic planning
workspace:
baseDir: agents/planner
files:
AGENTS.md: agents/planner/AGENTS.md
SOUL.md: agents/planner/SOUL.md
IDENTITY.md: agents/planner/IDENTITY.md
- id: setup
name: Setup
role: coding
description: Prepares environment, creates branch, establishes baseline.
workspace:
baseDir: agents/setup
files:
AGENTS.md: ../../agents/shared/setup/AGENTS.md
SOUL.md: ../../agents/shared/setup/SOUL.md
IDENTITY.md: ../../agents/shared/setup/IDENTITY.md
- id: developer
name: Developer
role: coding
description: Implements features, writes tests, creates PRs.
workspace:
baseDir: agents/developer
files:
AGENTS.md: agents/developer/AGENTS.md
SOUL.md: agents/developer/SOUL.md
IDENTITY.md: agents/developer/IDENTITY.md
- id: verifier
name: Verifier
role: verification
description: Quick sanity check - did developer actually do the work?
workspace:
baseDir: agents/verifier
files:
AGENTS.md: ../../agents/shared/verifier/AGENTS.md
SOUL.md: ../../agents/shared/verifier/SOUL.md
IDENTITY.md: ../../agents/shared/verifier/IDENTITY.md
- id: tester
name: Tester
role: testing
description: Integration and E2E testing after all stories are implemented.
workspace:
baseDir: agents/tester
files:
AGENTS.md: agents/tester/AGENTS.md
SOUL.md: agents/tester/SOUL.md
IDENTITY.md: agents/tester/IDENTITY.md
- id: reviewer
name: Reviewer
role: analysis
description: Reviews PRs, requests changes or approves.
workspace:
baseDir: agents/reviewer
files:
AGENTS.md: agents/reviewer/AGENTS.md
SOUL.md: agents/reviewer/SOUL.md
IDENTITY.md: agents/reviewer/IDENTITY.md
steps:
- id: plan
agent: planner
input: |
Decompose the following task into ordered user stories for autonomous execution.
TASK:
{{task}}
Instructions:
1. Explore the codebase to understand the stack, conventions, and patterns
2. Break the task into small user stories (max 20)
3. Order by dependency: schema/DB first, backend, frontend, integration
4. Each story must fit in one developer session (one context window)
5. Every acceptance criterion must be mechanically verifiable
6. Always include "Typecheck passes" as the last criterion in every story
7. Every story MUST include test criteria — "Tests for [feature] pass"
8. The developer is expected to write tests as part of each story
Reply with:
STATUS: done
REPO: /path/to/repo
BRANCH: feature-branch-name
STORIES_JSON: [ ... array of story objects ... ]
expects: "STATUS: done"
max_retries: 2
on_fail:
escalate_to: human
- id: setup
agent: setup
input: |
Prepare the development environment for this feature.
TASK:
{{task}}
REPO: {{repo}}
BRANCH: {{branch}}
Instructions:
1. cd into the repo
2. Create the feature branch (git checkout -b {{branch}})
3. Read package.json, CI config, test config to understand the build/test setup
4. Run the build to establish a baseline
5. Run the tests to establish a baseline
6. Report what you found
Reply with:
STATUS: done
BUILD_CMD: <build command>
TEST_CMD: <test command>
CI_NOTES: <brief CI notes>
BASELINE: <baseline status>
expects: "STATUS: done"
max_retries: 2
on_fail:
escalate_to: human
- id: implement
agent: developer
type: loop
loop:
over: stories
completion: all_done
fresh_session: true
verify_each: true
verify_step: verify
input: |
Implement the following user story. You are working on ONE story in a fresh session.
TASK (overall):
{{task}}
REPO: {{repo}}
BRANCH: {{branch}}
BUILD_CMD: {{build_cmd}}
TEST_CMD: {{test_cmd}}
CURRENT STORY:
{{current_story}}
COMPLETED STORIES:
{{completed_stories}}
STORIES REMAINING: {{stories_remaining}}
VERIFY FEEDBACK (if retrying):
{{verify_feedback}}
PROGRESS LOG:
{{progress}}
Instructions:
1. Read progress.txt — especially the Codebase Patterns section
2. Pull latest on the branch
3. Implement this story only
4. Write tests for this story's functionality
5. Run typecheck / build
6. Run tests to confirm they pass
7. Commit: feat: {{current_story_id}} - {{current_story_title}}
8. Append to progress.txt
9. Update Codebase Patterns if you found reusable patterns
Reply with:
STATUS: done
CHANGES: what you implemented
TESTS: what tests you wrote
expects: "STATUS: done"
max_retries: 2
on_fail:
escalate_to: human
- id: verify
agent: verifier
input: |
Verify the developer's work on this story.
TASK (overall):
{{task}}
REPO: {{repo}}
BRANCH: {{branch}}
CHANGES: {{changes}}
TEST_CMD: {{test_cmd}}
CURRENT STORY:
{{current_story}}
PROGRESS LOG:
{{progress}}
Check:
1. Code exists (not just TODOs or placeholders)
2. Each acceptance criterion for the story is met
3. Tests were written for this story's functionality
4. Tests pass (run {{test_cmd}})
5. No obvious incomplete work
6. Typecheck passes
Reply with:
STATUS: done
VERIFIED: What you confirmed
Or if incomplete:
STATUS: retry
ISSUES:
- What's missing or incomplete
expects: "STATUS: done"
on_fail:
retry_step: implement
max_retries: 2
on_exhausted:
escalate_to: human
- id: test
agent: tester
input: |
Integration and E2E testing of the implementation.
TASK:
{{task}}
REPO: {{repo}}
BRANCH: {{branch}}
CHANGES: {{changes}}
BUILD_CMD: {{build_cmd}}
TEST_CMD: {{test_cmd}}
PROGRESS LOG:
{{progress}}
Your job (integration/E2E testing — unit tests were already written per-story):
1. Run the full test suite ({{test_cmd}}) to confirm everything passes together
2. Look for integration issues between stories
3. If this is a UI feature, use agent-browser to test it end-to-end
4. Check cross-cutting concerns: error handling, edge cases across features
5. Verify the overall feature works as a cohesive whole
Reply with:
STATUS: done
RESULTS: What you tested and the outcomes
Or if issues found:
STATUS: retry
FAILURES:
- Specific test failures or bugs found
expects: "STATUS: done"
on_fail:
retry_step: implement
max_retries: 2
on_exhausted:
escalate_to: human
- id: pr
agent: developer
input: |
Create a pull request for your changes.
TASK:
{{task}}
REPO: {{repo}}
BRANCH: {{branch}}
CHANGES: {{changes}}
RESULTS: {{results}}
PROGRESS LOG:
{{progress}}
Create a PR with:
- Clear title summarizing the change
- Description explaining what and why
- Reference to what was tested
Use: gh pr create
Reply with:
STATUS: done
PR: URL to the pull request
expects: "STATUS: done"
on_fail:
escalate_to: human
- id: review
agent: reviewer
input: |
Review the pull request.
PR: {{pr}}
TASK: {{task}}
CHANGES: {{changes}}
PROGRESS LOG:
{{progress}}
Review for:
- Code quality and clarity
- Potential bugs or issues
- Test coverage
- Follows project conventions
Use: gh pr view, gh pr diff
If changes needed, add comments to the PR explaining what needs to change.
Reply with:
STATUS: done
DECISION: approved
Or if changes needed:
STATUS: retry
DECISION: changes_requested
FEEDBACK:
- What needs to change
expects: "STATUS: done"
on_fail:
retry_step: implement
max_retries: 3
on_exhausted:
escalate_to: human