@ralph-loop-control/plan-tasks.json @ralph-loop-control/plan-completed-tasks.json @ralph-loop-control/activity.md @CLAUDE.md
We are building the RaidCoffee frontend application based on the specifications in ralph-loop-control/plan-tasks.json.
- Read ralph-loop-control/activity.md to understand recent progress and context
- Read CLAUDE.md for development guidelines and conventions
- Open ralph-loop-control/plan-tasks.json and select the SINGLE highest priority task where
passesisfalse- Priority order: Foundation tasks first, then dependent tasks
- Check the
dependenciesfield - only work on tasks whose dependencies are ALL markedpasses: true
CRITICAL: Work on exactly ONE task per iteration
- Navigate to the
frontend/directory (or use make commands from project root) - If this is the first task, initialize the project:
cd frontend && bunx create-next-app@latest . --typescript --tailwind --eslint --app --src-dir --import-alias "@/*"
- Implement the specific task requirements
- Run type checking:
make fe-type-check - Run linting:
make fe-lint - Run all frontend checks:
make fe-check - If tests exist, run them:
make fe-test - Use the Playwright MCP to test if the integration between frontend and backend is working accordingly
- Use make commands from project root (preferred):
- Type check:
make be-mypy - Run tests:
make be-test - Run linter:
make be-lint - Run all checks:
make be-check
- Type check:
- Or use UV directly:
cd backend && uv run <command>
After implementing a task:
-
Start the local development server (if applicable):
- Full stack:
make dev(starts infra + runs migrations + starts backend on port 8000 + frontend on port 3001) - Backend only:
make be-dev(port 8000) - Frontend only:
make fe-dev(port 3001) - Infrastructure only:
make up-infra(postgres + valkey)
- Full stack:
-
Use specialized agents:
- Frontend
- nextjs-developer - for App Router features
- react-specialist - fpr React 19 components
- typescript-pro - for type safety
- test-automator - for Vitest
- Backend
- python-pro - para código Python 3.13+ com type hints
- postgres-pro - para otimizações do banco
- api-designer - para design de endpoints REST
- database-optimizer - para queries SQLAlchemy eficientes
- Frontend
-
Use Playwright MCP for visual verification (for tasks with UI output):
- Navigate to the URL:
mcp__playwright__browser_navigatewithurl: "http://localhost:3001/..." - Take a snapshot:
mcp__playwright__browser_snapshotto capture page accessibility tree - Take a screenshot:
mcp__playwright__browser_take_screenshotwithfilename: "screenshots/XX-YY.png" - Screenshot naming convention:
{epic-number}-{task-number}.png(e.g.,01-01.png,02-03.png) - Always put screenshots in
screenshotsfolder - Verify the implementation visually matches requirements
IMPORTANT: Screenshots are REQUIRED for tasks that produce visual output (pages, components, UI changes). For non-visual tasks (configuration, dependencies, types, utilities), document "N/A - No visual output" in activity.md.
- Navigate to the URL:
-
Update ralph-loop-control/activity.md with a dated progress entry including:
- Task ID that was completed
- What was implemented
- Screenshot filename (or "N/A - No visual output" for non-visual tasks)
- Any relevant notes
-
Remove task from ralph-loop-control/plan-tasks.json:
- Move the task from ralph-loop-control/plan-tasks.json to ralph-loop-control/plan-completed-tasks.json
- Set
passestotruefor the completed task - Update
completed_attimestamp
-
Make a git commit and open a pull request:
- Create a semantic branch with all code changes
- name the branch after the field
branch_name - Use the /commit command to make a commit
- Open up a PR in github
- Use the /pr-review-toolkit:review-pr agent or python-code-review-engineer agent to review the code and apply the findings
- Run the code-simplifier agent to review all PR changes and apply the findings
- Fix all problems
- Push branch to remote
- Change back to main branch
- Do NOT run
git init- the repository is already initialized - Do NOT include files from
ralph-loop-controlfolder in the branch and PR - Do NOT change git remotes
- Do NOT work on multiple tasks in a single iteration
- Do NOT skip dependency checks
- Prefer
makecommands when available (seemake help) - lsp Use the LSP servers for the available languages for semantic code retrieval and editing tools, always use for python and typescript code
- context7 for up to date documentation on third party code and libraries
- rg: Use 'rg --files | rg pattern' or 'rg --files -g pattern' instead of 'find -name' for better performance
- Agents/Subagents: If there is a specialized agent/subagent to solve a problem or better meet a need, always use that agent
When there is no task in the ralph-loop-control/plan-tasks.json file, output:
COMPLETE
If a task cannot be completed:
- Document the error in activity.md
- Keep
passes: falsefor that task - Add a
blocked_reasonfield to the task - Proceed to the next available task (if any)