Feature Management
Manage Runners' feature pipeline: specs live in docs/features/, tracking lives in GitHub Issues with the feature label.
Usage
/feature <action> [args]
Actions
new <name>
Create a new feature from scratch.
- Ask the user to describe the feature (motivation, scope, key decisions).
- Assign the next available number by checking existing files in
docs/features/.
- Create
docs/features/{number}-{slug}.md with sections: Motivation, Scope, Implementation Phases, Verification.
- Pick a priority (see Priority below). If the user didn't state one, propose one and confirm before filing. Don't file unlabeled.
- Create a GitHub Issue with labels
feature and the chosen P0/P1/P2/P3:
- Title:
feat: <short description>
- Body: Motivation, Scope summary, Implementation Phases, and a reference back to the spec file.
- Command shape:
gh issue create --label feature --label P1 --title "…" --body "…"
- Update
docs/features/README.md to include the new spec.
- Report the spec path, issue URL, and assigned priority.
list
Show all features, sorted by priority.
- Fetch open features with priority + metadata as JSON so they can be sorted:
gh issue list --label feature --state open --limit 50 --json number,title,labels,createdAt,assignees
- List all spec files in
docs/features/ (excluding README).
- Sort the rows by priority (
P0 first, then P1, P2, P3, then unlabeled-by-priority last). Within a priority bucket, sort by spec number ascending.
- Present a combined view: Priority, feature name, # (issue), spec file (if exists), Created. Issues without a P-label show
— in priority and a callout asking the user to triage them.
- If the user asks for closed/shipped features too, repeat with
--state all and add a State column.
close <issue-number>
Mark a feature as shipped.
- Close the GitHub Issue:
gh issue close <number>
- If a matching spec file exists in
docs/features/, move it to
docs/features/archive/ with git mv. Shipped code is the source
of truth, but the spec stays around as the "what we were going for"
record (mirrors docs/impls/archive/).
- Update
docs/features/README.md to drop the archived entry from
the index.
prioritize <issue-number> <P0|P1|P2|P3>
Set or change the priority of an existing feature.
- Remove any existing P-label on the issue, then add the new one:
gh issue edit <number> --remove-label P0 --remove-label P1 --remove-label P2 --remove-label P3 --add-label <priority>
(Removing all four is safe — gh ignores remove-label for labels not present.)
- Confirm the new priority.
spec <issue-number-or-name>
Open or create a spec for an existing feature issue.
- If a spec file already exists, show its path.
- If not, create one following the same format as
new, pre-populated from the issue body.
Labels
feature — all feature issues use this label.
bug — for bug reports (not managed by this skill).
P0 / P1 / P2 / P3 — priority, exactly one per issue.
Priority
Every feature gets exactly one priority label. Rubric:
- P0 — Required for the next ship; nothing else moves until this lands. Rare for features.
- P1 — Wanted this cycle; blocks an active user workflow or has a stakeholder commitment.
- P2 — Real product win, but no urgency. Pick up when the P1 queue is clear.
- P3 — Idea / nice-to-have / "if we ever revisit X." OK to sit indefinitely; closing as
wontfix later is fine.
When in doubt between two levels, pick the lower-urgency one and say why; over-labeling P0/P1 dilutes the signal.
Conventions
- Spec files are numbered sequentially:
01-product-spec.md, 02-ai-quick-explain.md, etc.
- Slugs are lowercase kebab-case derived from the feature name.
- Specs for shipped features move to
docs/features/archive/ — the
implementation is the source of truth, but the spec stays as the
"what we were going for" record (mirrors docs/impls/archive/).
- The
docs/features/README.md index only lists in-progress/planned specs.
Notes
- Do not commit or push unless the user explicitly asks.
- When creating issues, always include a reference to the spec file path in the issue body.
- When creating specs, always include a reference to the GitHub issue URL.
1---2name: feature3description: Create, list, or manage feature specs and GitHub issues4---56# Feature Management78Manage Runners' feature pipeline: specs live in `docs/features/`, tracking lives in GitHub Issues with the `feature` label.910## Usage1112`/feature <action> [args]`1314### Actions1516#### `new <name>`17Create a new feature from scratch.18191. Ask the user to describe the feature (motivation, scope, key decisions).202. Assign the next available number by checking existing files in `docs/features/`.213. Create `docs/features/{number}-{slug}.md` with sections: Motivation, Scope, Implementation Phases, Verification.224. **Pick a priority** (see Priority below). If the user didn't state one, propose one and confirm before filing. Don't file unlabeled.235. Create a GitHub Issue with labels `feature` and the chosen `P0`/`P1`/`P2`/`P3`:24 - Title: `feat: <short description>`25 - Body: Motivation, Scope summary, Implementation Phases, and a reference back to the spec file.26 - Command shape: `gh issue create --label feature --label P1 --title "…" --body "…"`276. Update `docs/features/README.md` to include the new spec.287. Report the spec path, issue URL, and assigned priority.2930#### `list`31Show all features, sorted by priority.32331. Fetch open features with priority + metadata as JSON so they can be sorted:34 `gh issue list --label feature --state open --limit 50 --json number,title,labels,createdAt,assignees`352. List all spec files in `docs/features/` (excluding README).363. Sort the rows by priority (`P0` first, then `P1`, `P2`, `P3`, then unlabeled-by-priority last). Within a priority bucket, sort by spec number ascending.374. Present a combined view: **Priority**, feature name, **#** (issue), spec file (if exists), **Created**. Issues without a P-label show `—` in priority and a callout asking the user to triage them.385. If the user asks for closed/shipped features too, repeat with `--state all` and add a **State** column.3940#### `close <issue-number>`41Mark a feature as shipped.42431. Close the GitHub Issue: `gh issue close <number>`442. If a matching spec file exists in `docs/features/`, move it to45 `docs/features/archive/` with `git mv`. Shipped code is the source46 of truth, but the spec stays around as the "what we were going for"47 record (mirrors `docs/impls/archive/`).483. Update `docs/features/README.md` to drop the archived entry from49 the index.5051#### `prioritize <issue-number> <P0|P1|P2|P3>`52Set or change the priority of an existing feature.53541. Remove any existing P-label on the issue, then add the new one:55 `gh issue edit <number> --remove-label P0 --remove-label P1 --remove-label P2 --remove-label P3 --add-label <priority>`56 (Removing all four is safe — `gh` ignores remove-label for labels not present.)572. Confirm the new priority.5859#### `spec <issue-number-or-name>`60Open or create a spec for an existing feature issue.61621. If a spec file already exists, show its path.632. If not, create one following the same format as `new`, pre-populated from the issue body.6465## Labels6667- `feature` — all feature issues use this label.68- `bug` — for bug reports (not managed by this skill).69- `P0` / `P1` / `P2` / `P3` — priority, exactly one per issue.7071## Priority7273Every feature gets exactly one priority label. Rubric:7475- **P0** — Required for the next ship; nothing else moves until this lands. Rare for features.76- **P1** — Wanted this cycle; blocks an active user workflow or has a stakeholder commitment.77- **P2** — Real product win, but no urgency. Pick up when the P1 queue is clear.78- **P3** — Idea / nice-to-have / "if we ever revisit X." OK to sit indefinitely; closing as `wontfix` later is fine.7980When in doubt between two levels, pick the lower-urgency one and say why; over-labeling P0/P1 dilutes the signal.8182## Conventions8384- Spec files are numbered sequentially: `01-product-spec.md`, `02-ai-quick-explain.md`, etc.85- Slugs are lowercase kebab-case derived from the feature name.86- Specs for shipped features move to `docs/features/archive/` — the87 implementation is the source of truth, but the spec stays as the88 "what we were going for" record (mirrors `docs/impls/archive/`).89- The `docs/features/README.md` index only lists in-progress/planned specs.9091## Notes9293- Do not commit or push unless the user explicitly asks.94- When creating issues, always include a reference to the spec file path in the issue body.95- When creating specs, always include a reference to the GitHub issue URL.