A practical, engineering-first approach for using role-based LLM support in real software work.
Start with a clear problem statement and acceptance criteria. Keep it focused on the outcome, scope, and why the change matters.
Choose the tools or models by role: planning, implementation, review, verification. Define dependencies, files, and commands for the task.
Package each step as a small, reversible task with objective, scope, constraints, commands, and evidence requirements. If a step cannot be reviewed quickly or reverted cleanly, it is too large and should be split.
Send the task packet to the implementing tool. Expect code plus a precise summary of files changed, a minimal diff summary, commands run, command results, unresolved risks, and acceptance criteria status.
The review role checks correctness, regressions, edge cases, project rules, and whether the evidence is sufficient.
A change is not accepted until the required lint, typecheck, tests, and project-specific verification commands have actually been run and reported.
Execute targeted runtime checks and scenario testing for behavior that automated verification does not cover.
Keep commits tied to completed task packets. Record the verification commands and results in the change note.
Note: This is still one tool critiquing another. The difference is that planning, implementation, review, and verification are explicit roles, which makes the process easier to audit and repeat.
Keep durable rules in project guidance files, not in every prompt. Use a repo-level document such as AGENTS.md, REVIEW.md, or CLAUDE.md for long-lived conventions.
Keep the prompt focused on the specific task, scope, and acceptance criteria.
Objective: Add a new endpoint for exporting user settings as JSON.
Scope: backend route only, app/server/users.js and tests/server/users.test.js.
Constraints: preserve current auth flow, do not change UI.
Commands:
npm test -- users.test.js
npm run lint -- app/server/users.js
Acceptance criteria:
- endpoint returns 200 and valid JSON
- unauthorized requests return 401
- unit tests cover error paths
Required output:
- route implementation diff
- test results
- verification commands run