Develop Small Feature
Implement the feature or fix described below, carrying it through the full branch → TDD → static checks → user verification → commit → PR lifecycle.
This skill is scoped to small, well-scoped changes (a handful of files, a
settled approach). For large or uncertain work — spanning many files, needing
real debugging/trial-and-error, or warranting a deep review — use
heavy-implementer and/or the code-review/simplify skills directly
instead of forcing this flow.
Spec: $ARGUMENTS
If no spec is given as an argument, use the specification already established in this conversation (the user's most recent instructions, requirements already discussed, or an agreed-on OpenSpec change). Do not ask the user to repeat themselves if the spec is already clear from context; ask only if it is genuinely ambiguous.
Steps
Feature branch. Run
git branch --show-current.- If already on a branch other than the repository's default branch (e.g.
an existing
feature/*branch), stay on it — do not switch. - If on the default branch, invoke the create-feature-branch skill to create and switch to a new feature branch derived from the spec.
- If already on a branch other than the repository's default branch (e.g.
an existing
Implement, test-first. Invoke the tdd skill to implement the change (red → green → refactor), delegating the work to the implementer agent by default. Do not use
heavy-implementerunless the user explicitly asks for it, orimplementerreports (or a retry shows) that the change needs cross-file debugging/trial-and-error it can't resolve — in that case escalate the rest of the work toheavy-implementer, which can drive its own TDD loop directly.Static checks. Delegate to test-runner to run the target repo's lint/format/check commands (e.g.
npm run checkfor this marketplace) and report pass/fail. Let auto-fixable issues (formatters) be fixed directly; for remaining lint errors, delegate the fix to implementer and re-run the checks.- This intentionally replaces a full code-review/simplify pass — this
skill targets small changes where lint + tests + the user's own look are
enough. If the diff turns out larger or riskier than expected, tell the
user and suggest running the
code-revieworsimplifyskill manually.
- This intentionally replaces a full code-review/simplify pass — this
skill targets small changes where lint + tests + the user's own look are
enough. If the diff turns out larger or riskier than expected, tell the
user and suggest running the
Request user verification. Before committing, tell the user what was implemented and ask them to manually verify the behavior (e.g. run the app, exercise the feature) against the uncommitted working tree. Stop and wait for their confirmation — do not commit yet.
Commit. Once the user confirms the change works, invoke the commit-changes skill to commit the work with a Conventional Commits message.
Create the PR. Invoke the create-pull-request skill to open a PR. Unless the user specifies another target, the PR is for merging into the
mainbranch.
Notes
- Follow the steps in order; do not skip the test-first loop or the user-verification step even for small changes.
- Keep delegations to
implementer/heavy-implementerfocused — pass only the spec/context each one needs, and rely on their report contracts rather than pasting full diffs, test output, or logs into this conversation. - If step 4 (user verification) turns up a problem, fix it (re-delegate to
implementer, or escalate per step 2 if it's non-trivial), re-run static checks, and only then proceed to commit. - If a genuine blocker comes up (ambiguous spec, a check that cannot be made to pass), stop and surface it to the user rather than guessing.
Output Format
Report progress step by step:
- Step name and outcome (done / blocked / waiting on user).
- The branch name in use.
- Files changed, once implementation is done (from implementer's or heavy-implementer's report).
- Step 3's static-check result summary.
- At step 4, an explicit request for the user to verify the behavior, then stop.
- At step 6, the resulting PR URL.