plan-a-feature

plan-a-feature is a skill for Claude Code from testdouble/han. It costs 166 tokens per session (8,037 once invoked), scanned A, original, MIT.

An interview-based planning tool that creates a feature specification from scratch. It works through product and technical decisions step by step before implementation begins.

In plain words
What is it for?
Use it to plan, design, scope, or specify a new feature, capability, or system behavior.
Why use it?
It helps turn an unclear idea into an agreed description of what the feature should do and how its decisions fit together.

Skill for Claude Code

Written for Claude Code: allowed-tools in frontmatter. Also seen: mentions CLAUDE.md; mentions subagents; mentions AGENTS.md.

Runs only inside its plugin — its command needs a path that Claude Code sets for a plugin’s own hooks and for nothing else. Install the plugin, not this.

Part of the han-planning plugin — 6 skills, 1 agent shipped together

Good fit Use it to plan, design, scope, or specify a new feature, capability, or system behavior.

Compare 6 skills from other repositories ↓
Install

Getting it into your agent

This one installs as part of its plugin. Adding the marketplace and installing the plugin brings it with everything else the plugin ships.

Claude Code
/plugin marketplace add testdouble/han
Claude Code
/plugin install han-planning

Made for: Claude Code.

Or install han-planning, the plugin that ships this one along with the rest of its 6 skills, 1 agent.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for plan-a-feature

README.md
[![agentmods](https://agentmods.dev/badge/skills/testdouble/han/plan-a-feature/github.svg)](https://agentmods.dev/skills/testdouble/han/plan-a-feature)
Your own site
<a href="https://agentmods.dev/skills/testdouble/han/plan-a-feature"><img src="https://agentmods.dev/badge/skills/testdouble/han/plan-a-feature/github.svg" alt="Measured on agentmods" height="20"></a>

Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.

agentmods 80×15 button for plan-a-feature

Your own site · 80×15
<a href="https://agentmods.dev/skills/testdouble/han/plan-a-feature"><img src="https://agentmods.dev/badge/skills/testdouble/han/plan-a-feature.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 166 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 8,037 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. A grade says what 26 rules found in the file — not that it is safe.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5.1 $0.00166 $0.08037
Opus 5.5 $0.00066 $0.03215
Sonnet 5.5 $0.00033 $0.01607
Haiku 4.5 $0.00017 $0.00804

Measured 1mo ago against content hash 01216f311bab, method: parsed. Prices are Anthropic first-party input rates as of 2026-10-07, from the pricing page.

Security

Grade A, and why

plan-a-feature scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 1mo ago.

The scan reads SKILL.md. This mod also ships 1 executable file (scripts/verify-design-images.sh), listed below but not scanned — reading those needs a real analyzer, not pattern matching.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

han-planning/skills/plan-a-feature/SKILL.md · 492 lines

How it starts

The opening of the file, as written. The whole thing — 492 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Project Context

  • CLAUDE.md: !find . -maxdepth 1 -name "CLAUDE.md" -type f
  • project-discovery.md: !find . -maxdepth 3 -name "project-discovery.md" -type f
  • personal config directory: !bash "${CLAUDE_PLUGIN_ROOT}/scripts/han-config-dir.sh" 2>/dev/null || echo "$HOME/.claude"
  • project .han/config.md: !cat .han/config.md 2>/dev/null || echo ""

As your first action, use the Read tool on .han/config.md inside the personal config directory path above. A read that returns no file is no personal configuration: continue silently. When that file or the project .han/config.md probe supplies content, apply it per config-rule.md, which governs precedence between the two files, relative-path resolution, and what to do with a file that reads but cannot be used.

Operating Principles

  • Interview relentlessly, but explore first. If a question can be answered by reading the codebase, project docs, coding standards, ADRs, or existing feature specs — or by querying a read-only tool already available to this session that authoritatively answers it (for example a connected schema or data-source tool) — explore instead of asking. Only surface questions that genuinely require the user's judgment. The connected-tool path is gated on availability, not on a fresh judgment: use it only when such a read-only tool is actually permitted to this skill; if none is available, ask the user as today (see Step 4).
  • Walk the design tree. Decisions have dependencies. Resolve foundational decisions first (what the feature does, who uses it, what outcome it produces). Then descend into dependent decisions (flow, states, edge cases, coordination points). Never ask a dependent question before its parent is settled.
  • Recommend, then ask. For every question surfaced to the user, provide a recommended answer with rationale grounded in evidence (code, docs, conventions, or stated goals). The user can accept, redirect, or provide a nuanced response.
  • Behavior, not implementation, in the spec. The specification captures WHAT the feature does, for WHOM, and WHY — at a level a reader who has never opened the codebase can understand. Language primitives, file/line references, function or class names, library mechanics, implementation patterns, and internal env/flag names DO NOT appear in feature-specification.md. Product-level subsystem names ("events processing system", "backend service"), user-facing UI vocabulary (popover, modal, toast), URL paths, behavioral verbs, and user-observable states DO. Technology brand names generalize one level up (NATS → "events processing system"; PostgreSQL → "database"; Redis → "cache"). This rule is language-agnostic — it applies equally to Go, Rails, Node, Python, Swift, Kotlin, and frontend JavaScript code. Any examples given in references or templates are illustrative, not an exhaustive deny-list.
  • Load-bearing mechanics go in feature-technical-notes.md, not the spec. When a mechanic is load-bearing for a behavior — meaning the behavioral commitment in the spec is only correct because of that mechanic (ordering, durability, consistency, visibility timing) — the behavioral consequence goes in the spec sentence, and the mechanic goes in a T# note linked inline from that sentence. The tech-notes file is LAZILY created — it exists only when at least one load-bearing mechanic qualified. Mechanics that are discoverable from the code repo (an existing pattern, an in-use library, a documented convention) do NOT belong in the tech-notes file either — plan-implementation will find them from the code. Mechanics that do not affect observable behavior are pure implementation and belong in the implementation plan, not here.
  • YAGNI is a first-class operating principle. Apply the evidence-based YAGNI rule in yagni-rule.md to every commitment the spec carries. An item with no accepted evidence is demoted to ## Deferred (YAGNI) with its reopening trigger, never silently dropped and never silently kept. An item with evidence gets the simpler-version test.
  • Evidence quality is the companion principle. Apply evidence-rule.md alongside YAGNI. YAGNI gates inclusion; this one characterizes the quality of what each commitment rests on, through trust classes, the corroboration gate on web claims, and a distinct label for no evidence at any tier.
  • The run stays inside the boundary it descends from. The skill records the work item's stated scope and exclusions before the interview, per planning-boundary-rule.md. Every commitment is checked against it, and anything the boundary excludes lands in a visible cut list, per scope-justification-rule.md.
  • Visual material the user supplies is kept, and reaches every reviewer. Persist it beside the spec as it arrives, never at document-write time, and pass its paths in every reviewer's brief. The session context is the only copy until it reaches disk, and a compaction destroys it. The boundary rule owns the convention.
  • Questions to the user arrive one at a time, led by the consequence. Per operator-escalation-rule.md. The opening confirmation turn is the one exception, and the one turn that carries more than one ask.

Read the full file on GitHub · 492 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 1mo ago Changed · -10 lines · +31 tokens per session 01216f311bab
  2. 1mo ago First seen · 502 lines · 135 tokens per session scan A 08e48e122a77

Subscribe to this mod's changes

plan-a-feature is a skill published in the GitHub repository testdouble/han (319 stars, last pushed 4d ago), licensed MIT. It adds 166 tokens to every session and 8,037 once invoked, about $0.0007 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-09-03.

Related

Other skills, from other repositories

gaia-issue-resolver

End-to-end plan → implement → review pipeline that takes one triaged Gaia issue to a merged-ready PR, with Kill Criteria on the issue and zero follow-up debt. Use when someone says: "resolve this issue", "take #N end-to-end", "work the P0 queue", "fix and ship this issue", "run the resolver", "close out this issue…

gaia-research/gaia-skill-heaven · 174 tokens

odoo-task-completion

Use when wrapping up a project.task ticket — after writing the code, before claiming done. Orchestrates the code-review pass, the test-runner pass, and a customer-readiness check. Invoke instead of saying "I think it's done.".

omas-odoo/odoo-superpowers · 55 tokens

odoo-task-completion

Use when wrapping up a project.task ticket — after writing the code, before claiming done. Orchestrates the code-review pass, the test-runner pass, and a customer-readiness check. Invoke instead of saying "I think it's done.".

assoumaaa/odoo-superpowers · 55 tokens

customer-onboarding-and-implementation

Takes a new customer from signature to working — setting a definition of live that both sides agreed before the contract was signed, planning and staffing the implementation, running data migration and integration realistically, training the people who will actually use it, and handing over to the ongoing…

cbrock84/headcount · 94 tokens

customer-success-management

Runs the ongoing relationship with accounts after the sale — segmenting coverage against account value, building a health score that predicts rather than describes, running reviews customers find worth attending, forecasting renewals honestly, and finding expansion that follows usage instead of quota. Use this to…

cbrock84/headcount · 85 tokens

service-desk

Runs the IT service desk — intake, triage, prioritization, escalation, knowledge, and the metrics that improve service rather than distort it. Use this to set up or fix a service desk, design ticket priority and escalation, reduce repeat contacts, structure a knowledge base, or work out why a desk hitting its targets…

cbrock84/headcount · 73 tokens