feature-spec
Skill2 starsChanged 6 months agoMITView on GitHub
Write a feature specification at `docs/features/<YYYY-MM-DD>-<slug>-feature.md` for a single bounded feature on an existing Godot project. Use AFTER `codebase-survey` and BEFORE `feature-plan`. Soft-gates implementation skills (opt-out via `/skip-design`). NOT for greenfield design (use `gdd-writer`) and NOT for technical decomposition (use `feature-plan`).
20 other projects use a version of this.
Adopted by
Most recently taken up by
- insight68/Skillstheir own version, first seen Nov 8, 2026
- CesarRivasP/feature-spectheir own version, first seen Oct 15, 2026
- PiloTracer/pilo.ai.logicbisontheir own version, first seen Oct 11, 2026
- akachandan1/proofstacktheir own version, first seen Oct 11, 2026
- edu6565/claude-skillstheir own version, first seen Oct 11, 2026
- WikiEducationFoundation/WikiEduDashboardtheir own version, first seen Oct 9, 2026
Used with
Projects with it also use changelog.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
HashiCorpSkillchangelog
Add a `.changelog/<PR_NUMBER>.txt` entry for a GitHub Pull Request, commit, and push.
Also in 4 projects that use this
Other versions20 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 20
- WikiEducationFoundation/WikiEduDashboard★ 431same name
- PackmindHub/packmind★ 321same name
- https-deeplearning-ai/sc-spec-driven-development-files★ 310same name
- natnew/awesome-ai-scientists★ 20same name
- yasunori0418/skills★ 9same name
- insight68/Skills★ 5same name
- carreiras/claude-skills★ 4same name
- devexpert-io/harness-starter★ 4same name
- gonimar/claude-web-studio★ 4same name
- CesarRivasP/feature-spec★ 1same name
10 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository33 other files it gives its agents.
- CLAUDE.mdCLAUDE.md
- bootstrap-godot-projectSkill
- codebase-surveySkill
- create-autoloadSkill
- create-componentSkill
- create-resourceSkill
- create-sceneSkill
- create-state-machineSkill
- export-configSkill
- feature-planSkill
- game-brainstormingSkill
- gdd-writerSkill
- genre-pack-3d-actionSkill
- genre-pack-platformerSkill
- genre-pack-topdownSkill
- genre-pack-turnbasedSkill
- godot-patternsSkill
- gut-test-writerSkill
- networking-foundationSkill
- performance-auditSkill
- save-schema-migrationSkill
- setup-collision-layersSkill
- setup-git-godotSkill
- setup-input-mapSkill
- setup-localizationSkill
- setup-save-systemSkill
- sfx-generatorSkill
- shader-writerSkill
- subagent-dev-modeSkill
- ui-patterns-godotSkill
- update-docsSkill
- using-godot-superpowersSkill
- writing-game-planSkill
The file
We split this skill into the rules it gives an agent
9 rules. 0 are common, 6 are distinctive, and 3 are very specific to this project.
0
Common
Most of the 18 edited versions we read keep these.
6
Distinctive
This author's own choices. Worth a look.
3
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 18
After codebase-survey finishes, on a project that already has code.
- Distinctive: line 22
Do NOT use this skill for:
- Distinctive: line 53
If any of the three conditions fails, the survey is mandatory — write it before drafting the spec.
- Distinctive: line 98
If the feature contradicts a pillar, stop and revisit — either the pillar is wrong or the feature is.
- Very specific: line 121
After playtesting, when the spec is closed, drop the [HYPOTHESIS] tag and migrate the entry into the GDD's Mechanics section (the …
- Distinctive: line 159
If you cannot describe a rollback, the feature is too entangled — split it.
- Distinctive: line 168
One feature per spec: If two changes ship together but are independent, write two specs.
- Distinctive: line 171
Reference the GDD by path: Never restate the GDD inside the spec.
- Very specific: line 188
When all sections are approved, ask the user to flip Status: Approved.
“Common” is measured: kept by at least 6 in 10 of the 18 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Feature Spec
Surgical design document for one bounded feature added to an existing game. Lives between the GDD (whole game) and the plan (technical decomposition).
<SOFT-GATE>
By default, do not invoke implementation skills (`bootstrap-godot-project`, `create-*`, `setup-*`, `genre-pack-*`, `shader-writer`, `sfx-generator`, `export-config`) until BOTH a feature spec AND a feature plan exist for the feature, and the user has explicitly approved them. The feature plan is produced by the `feature-plan` skill that runs after this one. Opt-out: the user may bypass with `/skip-design` — warn once that bounded features still benefit from a 5-minute spec to catch regression-risk before code, get a confirmation, then proceed.
</SOFT-GATE>When to invoke
- After
codebase-surveyfinishes, on a project that already has code. - The change is bounded enough to fit in one document (one mechanic, one system tweak, one UI screen).
- A GDD already exists for the project — the feature inherits its pillars.
Do NOT use this skill for:
- Greenfield projects — use
game-brainstorming→gdd-writer(full GDD). - Cross-cutting refactors touching every system — that's a re-plan; escalate to Trail A: redo
game-brainstorming→gdd-writer→writing-game-planfrom scratch. Do NOT silently mutate a feature spec into a whole-game plan. - Bug fixes with a known repro — direct edit +
code-reviewer.
File path convention
- Location:
docs/features/ - Filename:
<YYYY-MM-DD>-<slug>-feature.md(same<YYYY-MM-DD>-<slug>prefix used by the matching survey). - One spec per feature. Major scope rewrites get a NEW dated file; never edit historical specs.
- The plan file is
docs/plans/<YYYY-MM-DD>-<slug>-feature-plan.mdand references this spec by path.
Inputs
- The survey:
docs/features/<YYYY-MM-DD>-<slug>-survey.md— strongly recommended, optional only under the trivial-feature shortcut below. - The current GDD:
docs/design/*-gdd.md(latest). - The user's feature description (one or two sentences).
Trivial-feature shortcut (single rule, mirrored in feature-plan)
A feature qualifies as trivial if and only if ALL of these hold:
- Touches exactly one file.
- Adds no new mechanic (no
[HYPOTHESIS]block). - Adds no new public surface (no new signal, no new exported var, no new autoload, no new input action).
If trivial:
- Skip
codebase-surveyentirely. - In this spec, fill only
Problem,Player-facing change,Acceptance criteria,Rollback plan. Keep the file under 30 lines. - In the spec header, set
Survey reference: none (trivial shortcut)exactly —feature-plankeys off this string to allow a missing survey.
If any of the three conditions fails, the survey is mandatory — write it before drafting the spec. The hard implementation gate applies regardless of trivial / non-trivial.
Spec structure
Save to docs/features/<YYYY-MM-DD>-<slug>-feature.md with these sections:
1. Header
# Feature Spec — <Feature Working Title>
- **Slug**: <kebab-case>
- **Date**: <YYYY-MM-DD>
- **Author**: <user> + Claude (godot-superpowers)
- **GDD reference**: docs/design/<YYYY-MM-DD>-<slug>-gdd.md
- **Survey reference**: docs/features/<YYYY-MM-DD>-<slug>-survey.md *(or exactly `none (trivial shortcut)` if the trivial-feature shortcut applies — see "Trivial-feature shortcut" below)*
- **Status**: Draft | Approved | In Progress | Done2. Problem
One short paragraph: why the feature exists. Player pain, design gap, GDD pillar under-served. No solution yet.
Rule: if the problem can't be stated without naming the solution, the problem is not yet understood — go back and dig.
3. Player-facing change
What the player sees, feels, and does that they couldn't before. Use design language ("the Hero leaps a second time mid-air"), not code language ("Player.jump() checks jump_count").
4. Scope IN
Bullet list — exactly what this feature delivers.
5. Scope OUT
Bullet list — what is explicitly not in this feature. Anti-scope-creep clause. Common entries: extra polish, related-but-separate ideas, full new genre packs.
6. Integration with existing systems
| Existing element | How the feature interacts |
| GDD pillar "Frantic mobility" | Feature reinforces it (more options mid-air) |
HealthComponent | Feature subscribes to damaged to cancel itself |
| Save system | New tunable persists via existing PlayerStats resource |
If the feature contradicts a pillar, stop and revisit — either the pillar is wrong or the feature is.
7. New mechanics (only if any)
For each net-new mechanic, reuse the gdd-writer mechanic template:
## [HYPOTHESIS] {Mechanic Name}
One- to three-sentence description.
**How it works:**
- What the player does / sees
- How it integrates with existing mechanics
- What decisions / consequences it creates
**Why this mechanic:**
Tie to a GDD pillar. If it doesn't reinforce one, cut it.
**Risks:**
- Balance, feel, complexity creep.After playtesting, when the spec is closed, drop the [HYPOTHESIS] tag and migrate the entry into the GDD's Mechanics section (the update-docs skill flags this).
8. Regression risks
Lift directly from the survey's "Regression hotspots" + "Integration points". For each, state what the feature must not break.
| Hotspot | What must keep working |
Player.jump() callers | Existing single-jump behavior unchanged when feature disabled |
EventBus.player_died subscribers | Feature does not reorder or block emission |
9. Acceptance criteria
Bullet, testable, behavior-only. These feed into feature-plan (test plan) and file-verifier.
- [ ] In-air, pressing jump within `jump_buffer` window after the first jump triggers a second jump.
- [ ] After the second jump, no further jumps occur until landing.
- [ ] Landing on any surface tagged `floor` resets jump count to 0.
- [ ] Existing single-jump tests still pass.10. Tuning numbers
Design intent only. Exact tuning lives in .tres resources or constants. Always pair a number with its rationale.
- `max_jumps = 2` — pillar "Frantic mobility" demands aerial expressiveness without trivializing platforming.
- `jump_buffer = 0.12s` — matches existing buffer for input parity.11. Rollback plan
How to disable / undo the feature if it ships and breaks something. Examples:
- "Set
PlayerStats.max_jumps = 1to revert behavior — code path unchanged." - "Remove autoload
DashManagerand the input actiondash— no migration needed." - "Feature is a new scene only; deleting it has zero effect on existing scenes."
If you cannot describe a rollback, the feature is too entangled — split it.
12. Open questions
Lift each [OPEN] from the survey, add new ones surfaced by the spec. Each must resolve before the user marks the spec Approved.
Writing rules
- No class names, no file paths, no code. Those live in
feature-plan. - One feature per spec. If two changes ship together but are independent, write two specs.
- Tag uncertain claims
[HYPOTHESIS]. Drop the tag once playtested. - Numbers stay in the spec for design intent; exact tuning lives in
.tresconstants. - Reference the GDD by path. Never restate the GDD inside the spec.
Anti-patterns to avoid
| Anti-pattern | Why bad | Fix |
| Code or class names in the spec | Implementation detail; rots fast | Move to feature-plan |
| Solution dressed as problem | Hides the real player pain | Restate problem without naming the fix |
| Empty Scope OUT | Scope creep guaranteed | Force at least 2 entries |
| Missing rollback plan | Feature can't be cleanly retracted | Add it or split the feature |
| Restating the GDD inline | Doubles the maintenance surface | Reference by path |
| Confirmed mechanics without playtest | False certainty | Keep [HYPOTHESIS] until validated |
Approval gate
Walk the user through the spec section by section. After each, ask: "Approve this section, change it, or skip?"
When all sections are approved, ask the user to flip Status: Approved. Then hand off to feature-plan.
Cross-references
codebase-survey— produces the input survey.feature-plan— consumes this spec to produce the technical plan.gdd-writer— owns whole-game design; mechanic template is reused here.update-docs— after merge, syncs spec ↔ GDD (promotes confirmed[HYPOTHESIS]mechanics into the GDD).
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

