Purpose
Create FEATURE documentation only. Inspect code as needed, but write only FEATURE docs and .backtrail/features.md.
FEATURE records describe user-visible capability, product behavior, workflows, and acceptance criteria that benefit from durable capability specs.
Input
Use the text after this skill invocation as the feature brief.
Resources
- Use
assets/feature-template.mdas the FEATURE template.
Statuses
- Allowed statuses:
Proposed,Accepted,Rejected,Implemented. - Create step writes
Proposed; reserveImplementedfor completed implementation.
Workflow
- If the brief does not identify user-visible capability or product behavior, ask for the feature topic before creating files.
- Read
.backtrail/features.md, related FEATURE, ADR, and CHANGE docs, and relevant code. If.backtrail/features.mdor.backtrail/features/is missing, plan to create it. - Apply the FEATURE gate before creating files.
- Create FEATUREs only for user-visible capability, product behavior, workflow, or acceptance criteria needing a durable capability spec.
- Route durable architecture choices to
backtrail-create-adrwhen brief constrains future work or changes architecture, repository structure, public contracts, generated output, build/test workflow, dependencies, or reversibility. - Route concrete implementation work with no feature-spec need to
backtrail-create-change. - If the gate fails, stop and explain which artifact fits better. Do not create FEATURE files.
- Determine the FEATURE number.
- Use an explicit number only when it appears at the start of input, after optional whitespace.
- Supported prefixes:
FEATURE-014,FEATURE 014,F-014,#14,#014,014,14. - Normalize to five digits:
#14 Export runs->FEATURE-00014,.backtrail/features/feature-00014-export-runs.md. - Do not scan the input body for FEATURE numbers.
- If no starting number exists, use the highest
FEATURE-NNNNNfrom.backtrail/features.md+ 1. - If
.backtrail/features.mdis missing, create it and start atFEATURE-00001unless the brief has an explicit starting number.
- Stop if
.backtrail/features/feature-NNNNN-title-slug.mdalready exists. - Assess whether dedicated rollback detail is required. Require it when the capability:
- destroys or irreversibly transforms data;
- creates a public contract or compatibility break;
- changes authentication, authorization, security, billing, or financial behavior;
- requires a migration, compatibility window, coordinated deployment, or manual recovery; or
- would be materially costly, risky, or operationally complex to reverse.
- Present rough approach before writing.
- capability
- users/use cases
- scope and non-goals
- acceptance criteria
- dependencies
- independent risks, when useful
- rollback assessment and, only when a trigger applies, the reversal or recovery plan
- related FEATUREs/ADRs, if any
- Ask only questions that change capability, users, scope, compatibility, acceptance criteria, dependencies, or a required reversal or recovery plan.
- Create
.backtrail/features/feature-NNNNN-title-slug.mdfromassets/feature-template.md.- Add a dedicated
## Rollbacksection only when a trigger in step 6 applies. - Omit the section rather than filling it with generic text when no trigger applies.
- Add separate risk analysis when useful without adding
## Rollbacksolely for that analysis.
- Add a dedicated
- Save the FEATURE and its
.backtrail/features.mdentry with statusProposed. - Ask whether to promote to
AcceptedorRejected.- Use three choices when
request_user_inputis available:Accepted,Rejected,Leave Proposed. Accepted: update status in the FEATURE and.backtrail/features.md.Rejected: update status in the FEATURE and.backtrail/features.md.Leave Proposed: leaveProposed.
- Use three choices when
- Offer to proceed with creating a CHANGE after FEATURE creation.
- Use Yes/No buttons when
request_user_inputis available. Yes: usebacktrail-create-change.No: skip to the next step.
- Use Yes/No buttons when
- Stop after docs/status changes. Do not implement code.
Question UX
- Use
request_user_inputwhen available for two or three meaningful choices. - For yes/no decisions, present
YesandNochoices. - For FEATURE status after creation, present
Accepted,Rejected, andLeave Proposedchoices. - If
request_user_inputis unavailable, ask one concise plain-text question with numbered choices. - Do not claim that a skill can switch modes or force button rendering.
Guardrails
- Do not change implementation code, non-FEATURE templates, configs, or tests.
- Do not overwrite existing FEATURE files.
- Do not create ADR or CHANGE records directly; use the matching Backtrail creation skill.
- Do not treat numbers in input body as FEATURE numbers.
- Do not mark FEATURE as
Implementedduring creation. Set it later when implementation CHANGE records finish. - Superseding or replacing another FEATURE requires explicit user confirmation.