Skip to content
Back to skills

Capture Feature Intent

ASecurity

Run a short questionnaire with the human to capture WHY a newly-shipped feature exists and what about it is intentional, then write their answers into that feature's Intent section in docs/features/. Use only when a feat: ships new user-facing capability. Never for fix/refactor/chore/docs. Never fabricate intent — if the human isn't available, the page ships with Intent marked pending.

  • 3 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added September 29, 2026
ai-agentsgotesting

Works with

  • terminal

Security analysis

A100/100

Scanned October 2, 2026

npx -y skills add martinappberg/chimaera --skill capture-feature-intent --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Capture Feature Intent?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Capture Feature Intent
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/martinappberg-capture-feature-intent-chimaera/badge)](https://www.skillsdirectory.com/skills/martinappberg-capture-feature-intent-chimaera)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: capture-feature-intent
description: "Run a short questionnaire with the human to capture WHY a newly-shipped feature exists and what about it is intentional, then write their answers into that feature's Intent section in docs/features/. Use only when a feat: ships new user-facing capability. Never for fix/refactor/chore/docs. Never fabricate intent — if the human isn't available, the page ships with Intent marked pending."
---

# Capturing feature intent

The derived half of a [feature page](../../../docs/features/README.md) (what / how / where) comes
from code. The **why** — why the feature exists, what behavior is a promise vs an incidental
implementation detail, what a future agent must not "helpfully" change — cannot be derived from
code. It is human ground truth, and it is the single most valuable thing in the catalog, because
it stops a later agent from "fixing" something that was deliberate. This skill captures it.

## The gate — this is the whole point

Run this **only** when the change is a `feat:` — a genuinely new user-facing capability. "Feature"
is defined in exactly one place: the release mapping in
[`scripts/version-bump.sh`](../../../scripts/version-bump.sh) (a `feat:` subject → a minor bump).
This skill points at that definition rather than restating it, so the two can never drift.

- **Triggers:** `feat:` (and `feat!:`). The same bar as a minor/major version bump.
- **Does NOT trigger:** `fix:` · `perf:` · `revert:` · `refactor:` · `chore:` · `docs:` · `test:` ·
  `ci:` · `build:` · `style:`. Patches, cleanups, and tweaks get **no** intent questionnaire, ever —
  that gate is what keeps the Intent sections free of patch-level noise.

If you're unsure whether a change is a `feat:`, resolve *that* first (the
[ship-pr](../ship-pr/SKILL.md) skill owns the version-prefix decision) — don't run this on a maybe.

## The questionnaire (ask the human, verbatim answers)

Ask these directly, in the session, of the person who built or is shipping the feature. Keep it to
these — short is the point. Use their words; do not answer on their behalf or infer from code.

Reuse answers or explicit decisions the human already supplied in this session.
Ask only for missing intent; do not repeat answered questions. Record the source
and capture date so later agents can distinguish those answers from derived facts.

1. **Why does this feature exist — what problem does it solve for the user?**
2. **How settled is it — what's a real promise you intend to keep, versus "this is just how it works
   for now" and free to change?**
3. **What non-obvious decision or constraint shaped it, and what did you deliberately leave out or
   leave open for later?**
4. **Is there anything a future agent must NOT change because it's intentional — or is this area
   open to change?**

Four questions. If an answer makes another redundant, fold them — don't pad to four. If the human
volunteers something outside these (e.g. where the feature might go next), keep it; the questions are
a floor, not a cage.

**Don't assume the feature is mature.** "It's provisional — most of this could change; only the
*why* is settled" is a valid and valuable answer, not a non-answer. Capture it plainly: a future
agent needs to know what is **not** a locked contract just as much as what is. Questions 2–4 are
worded to welcome that — never push the human to invent firm promises or must-not-touch rules that
don't exist yet.

**Grade the intent: core bet vs addition.** A handful of decisions are genuine **core bets**
(don't-change). Most features are **additions to the core** — deliberate today but improvable, and
the maintainer's standing rule is *"don't be too strict about additions; they can change if
improved."* When you write the Intent, say which grade each point is, and reserve "do not change"
for the core. Over-freezing an addition is as harmful as under-recording a core bet.

(This wording is the result of pressure-testing the questions live on real features; the original
phrasing assumed more certainty than early features have, and lacked the core-vs-addition grade. See
the worked examples — [linked-terminals.md](../../../docs/features/linked-terminals.md) and the other
[feature pages](../../../docs/features/README.md) — and the "how to read Intent" note in the catalog
index.)

## Writing the answers

Append to the feature page's `## Intent` section (below the derived/intent divider — keep the split
obvious; this content is human ground truth, structurally separate from the regenerable half). Use a
sub-heading naming the specific capability and a capture date, then the answers. For example:

```markdown
### <Feature> — why it exists
_Captured <YYYY-MM-DD> (from <who>, or "the maintainer")._

- **Problem it solves:** …their answer…
- **How settled it is (intended vs provisional):** …what's a promise vs "for now"…
- **Deliberately open / where it may go:** …left out, left open, future direction…
- **Do not change (or: open to change):** …what's load-bearing, or plainly that it's open…
```

For a filled-in example, see the first entry in
[docs/features/linked-terminals.md](../../../docs/features/linked-terminals.md).

Leave the "_No intent captured yet — pending…_" placeholder in place until you actually have
answers; replace it only with real ones.

## If the human isn't available

**Never fabricate intent.** Ship the page with the Intent section reading *pending* (the default
placeholder), and note in the PR that intent capture is outstanding. A missing Intent section is
honest; a guessed one is a landmine — a future agent will treat it as a constraint.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.