Feature Development
Goal: build what was actually asked for, keep the user in control, leave a record.
Steps
Understand the request. Read the parts of the codebase the feature touches. If the requirement is ambiguous, ask ONE short question with 2-3 concrete options — do not start coding on a guess.
Classify the risk (L0-L3). Check the automatic escalation triggers in the constitution. State the level in your Plan message.
Propose. Send the Problem / Plan / Risk / Question message. Plain language, 2-3 sentences of plan. For L2/L3: wait for approval (and consult the advisor first, if available). For L1: proceed unless the user objects.
Implement in the smallest coherent slice.
- Match the existing code style and structure.
- Write tests alongside the code, not as an afterthought. Test the behavior the user asked for, including the failure paths — not just the happy path.
- No speculative abstractions. Build for the requirement you have.
Verify. Run the
verify-workskill before claiming anything is done.Record.
- Journal entry:
docs/agent-journal/YYYY-MM-DD-feature-<slug>.md(format: What was asked / Plan / What was done / How verified). - If the feature changed an API surface other people integrate with,
write an integration brief (see
integration-briefskill).
- Journal entry:
Close the loop. Report Done / Verified / Recorded, and ask the user — briefly — if they want anything changed. The user's answer, not your report, ends the task.
Do not
- Do not dump implementation details into chat. They belong in the journal.
- Do not silently change existing behavior "while you're there". Separate concern, separate proposal.
- Do not add config options, hooks, or extension points nobody asked for.