Make A Plan
penpot/penpot
Planning flow — research the subject of this session, produce an implementation plan with the planner skill, resolve open questions with the user in plain language, and save the final plan to…
Produces a plain-language stakeholder summary from an existing feature specification, for sharing with non-technical stakeholders before implementation kicks off.
$ npx skills add testdouble/han --skill stakeholder-summary -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install testdouble/han stakeholder-summary --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/testdouble/han.git skills-src && mkdir -p .claude/skills && cp -r skills-src/han-reporting/skills/stakeholder-summary .claude/skills/stakeholder-summary && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "stakeholder-summary" agent skill from https://github.com/testdouble/han/tree/main/han-reporting/skills/stakeholder-summary into .claude/skills/stakeholder-summary/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "stakeholder-summary", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/testdouble/han/tree/main/han-reporting/skills/stakeholder-summaryType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add testdouble/han --skill stakeholder-summary -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install testdouble/han stakeholder-summary --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/testdouble/han.git skills-src && mkdir -p .agents/skills && cp -r skills-src/han-reporting/skills/stakeholder-summary .agents/skills/stakeholder-summary && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "stakeholder-summary" agent skill from https://github.com/testdouble/han/tree/main/han-reporting/skills/stakeholder-summary into .agents/skills/stakeholder-summary/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "stakeholder-summary", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add testdouble/han --skill stakeholder-summary -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install testdouble/han stakeholder-summary --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/testdouble/han.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/han-reporting/skills/stakeholder-summary .cursor/skills/stakeholder-summary && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "stakeholder-summary" agent skill from https://github.com/testdouble/han/tree/main/han-reporting/skills/stakeholder-summary into .cursor/skills/stakeholder-summary/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "stakeholder-summary", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/testdouble/han.git --path han-reporting/skills/stakeholder-summary--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add testdouble/han --skill stakeholder-summary -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install testdouble/han stakeholder-summary --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/testdouble/han.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/han-reporting/skills/stakeholder-summary .gemini/skills/stakeholder-summary && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "stakeholder-summary" agent skill from https://github.com/testdouble/han/tree/main/han-reporting/skills/stakeholder-summary into .gemini/skills/stakeholder-summary/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "stakeholder-summary", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install testdouble/han stakeholder-summaryInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add testdouble/han --skill stakeholder-summary -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/testdouble/han.git skills-src && mkdir -p .github/skills && cp -r skills-src/han-reporting/skills/stakeholder-summary .github/skills/stakeholder-summary && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "stakeholder-summary" agent skill from https://github.com/testdouble/han/tree/main/han-reporting/skills/stakeholder-summary into .github/skills/stakeholder-summary/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "stakeholder-summary", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add testdouble/han --skill stakeholder-summary -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install testdouble/han stakeholder-summary --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/testdouble/han.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/han-reporting/skills/stakeholder-summary .opencode/skills/stakeholder-summary && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "stakeholder-summary" agent skill from https://github.com/testdouble/han/tree/main/han-reporting/skills/stakeholder-summary into .opencode/skills/stakeholder-summary/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "stakeholder-summary", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
stakeholder-summaryProduces a plain-language stakeholder summary from an existing feature specification, for sharing with non-technical stakeholders before implementation kicks off.
Stakeholder Summary is an agent skill from testdouble/han. Produces a plain-language stakeholder summary from an existing feature specification, for sharing with non-technical stakeholders before implementation kicks off. Use when the user wants to draft a stakeholder summary, executive summary, or business summary of a feature spec or PRD. Does not write the spec itself — use plan-a-feature. Does not sequence the build into phases — use plan-a-phased-build. Does not produce an implementation plan — use plan-implementation.
Its SKILL.md is about 6.3k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files, including reference files (for example `references/stakeholder-summary-template.md`).
It sits in Writing & Content, covering PRD writing, Plain language and style rules and Planning. The repository describes itself as: Han: AI skills and agents for "Solo" product engineers and small teams. The licence is MIT.
7 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit abba73a. It shows what the files ask for, not the result of running them.
Pre-approves these tools, so the agent can use them without asking each time:
ReadWriteEditGlobGrepAgentBash(find *)Bash(bash "${CLAUDE_PLUGIN_ROOT}/scripts/han-config-dir.sh")From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
bashFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Stakeholder Summary loads about 6.3k tokens when it runs, and up to ~7.6k if it reads all its reference files. Until then it costs about 123 tokens; SKILL.md has 3,668 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from testdouble/han at commit abba73a, republished under its MIT licence (© testdouble). 3,668 words, ~6,270 tokens.
.claude/skills/stakeholder-summary/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.find . -maxdepth 1 -name "CLAUDE.md" -type ffind . -maxdepth 3 -name "project-discovery.md" -type fbash "${CLAUDE_PLUGIN_ROOT}/scripts/han-config-dir.sh" 2>/dev/null || echo "$HOME/.claude"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.
han-communication:readability-guidance and applies it, holding the named audience: the non-technical
stakeholder. The plain-language rules above are this skill's domain-specific supplement to the shared standard, not a
replacement for it. The standard's dedicated han-communication:readability-editor rewrite pass (Step 5) is this
skill's readability rewrite; it and the standardized self-check (Step 6, Pass B) take the place of the freehand
plain-language rewrite this skill used to run, so the summary gets one readability review, not two. The standard
governs how the summary reads, never whether a required fact from the spec survives.Read the user's argument and conversation context. Identify:
feature-specification.md, but
may be a PRD, design doc, or similar. If the user did not name a file, ask in one short message which file to
summarize.stakeholder-summary.md in the same directory as the source file. Do not place it anywhere
else unless the user explicitly says so.If stakeholder-summary.md already exists in the target directory, ask the user whether to overwrite, append a
timestamp suffix, or stop. Do not silently overwrite.
Read the feature specification end-to-end. Then capture:
Read the CLAUDE.md in the project named in the specification and project-discovery.md if present — they may surface
vocabulary or naming conventions the stakeholder summary should follow.
For every piece of content destined for the summary, apply a translation pass:
If a piece of content cannot be translated without losing meaning, leave it out. The summary is for feedback on shape and direction, not technical correctness.
Invoke han-communication:readability-guidance to surface the shared readability standard into your context, then draft
against it. Use the template at
references/stakeholder-summary-template.md. Write the file at the
resolved output path, filling in each section in order:
# {{Feature Name}} — Stakeholder Summary. Derive the feature name from the source spec's title or H1.flowchart TD showing the user-facing decision and its branches. Keep nodes short and customer-readable. It is
acceptable to omit if the change truly has no user interface impact, but this will be rare.flowchart LR diagrams. The number of diagrams in
each subsection — both "today" and "after this change" — matches the number of meaningfully distinct paths the spec
actually describes. Never invent paths to hit a template count. Never collapse genuinely distinct paths into one
diagram to fit a template count. One today diagram and three "after this change" diagrams is correct if that is what
the spec needs; two today diagrams and one "after this change" diagram is also correct if that is what the spec
needs. Both subsections follow the same shape:style highlighting
on the problem nodes. If there is only one current path worth showing (the common case), produce a single "Today"
diagram with a one-sentence lead-in above it and no prose block below — the lead-in is enough. If there are two or
more current paths, each diagram gets a one-sentence lead-in and a 3 to 5 sentence prose block immediately below
that walks the reader through the flow, names the pain point, and names what makes this current path distinct from the
other current paths.Write the file in one pass once the content is ready — the document is short enough that incremental saves are unnecessary. After writing, read it back end-to-end and rewrite any sentence that still leaks implementation detail.
Dispatch han-communication:readability-editor over the drafted summary to rewrite it for the non-technical stakeholder
against the shared readability standard, preserving every fact from the source spec. This is the skill's dedicated
readability rewrite; it replaces the freehand plain-language rewrite the skill used to do at the end of Step 4.
han-communication:readability-editor — rewrite the summary at the output path against the shared readability
standard for the named audience (the non-technical stakeholder), preserving every fact: every capability, exclusion,
quantity, named system-in-customer-terms, and stated condition survives with its precision intact. It operates on
prose regions only: it does not touch the Mermaid diagram bodies (their customer-readable node and edge labels are
checked separately in Step 6, Pass C), and it leaves no engineering artifacts behind. Pass it the output-file path and
the named audience; the editor reads han-communication's own canonical rule, so pass no rule path. It rewrites the
file in place and returns a rubric verdict and a fact-preservation ledger.Apply its rewrite. If the editor reports it could not preserve a fact while satisfying a criterion, keep the fact.
Run three passes before reporting the summary as done. Each pass has a single focus, and each pass begins with a fresh Read of the output file from disk — do not check against working memory or the draft you held while writing. The Read tool call is required, not optional. Working memory drifts from what actually landed on disk; only the file contents matter.
First, use the Read tool to load the output file from disk. Then list every load-bearing claim the document makes — capability included, capability deferred, behavior described in a diagram, prose narrative below a diagram, item under "What is intentionally not in this slice", trade-off or framing call in "What we are asking stakeholders". For every pair of claims, ask: does claim X assert something that claim Y denies or implies the opposite of? Pay special attention to:
For every contradiction found, take an evidence-based approach to resolving it:
AskUserQuestion to surface a structured ask containing:After applying any contradiction-driven edits, Read the file from disk again before continuing. Pass B and Pass C must run against the post-fix contents.
First, use the Read tool to load the output file from disk. The readability-editor already rewrote the summary in
Step 5; this pass confirms the standardized self-check (the shared standard is in your context from
han-communication:readability-guidance) holds, over the document's prose regions only — never inside the Mermaid
diagram bodies. Apply any fix with Edit.
Run the readability rule's standardized self-check, which is already in your context from the readability-guidance
invocation above. Correct every failure before presenting. Its fidelity criterion is not optional: the standard governs
how the content is said, and drops a required fact only when the reader asked for less and losing it would not change
what they do next.
Three things are this skill's own, layered on top of that check:
If Pass B required any edits, apply them with Edit, then Read the file again from disk before starting Pass C. The Pass C read-through must run against the post-fix contents, not your memory of what you intended to fix.
First, use the Read tool to load the output file from disk again — even if Pass B required no edits. This re-load is what makes Pass C an actual third pass rather than a continuation of Pass B's attention. Then read the document straight through, top to bottom, as someone arriving cold. Verify the document builds on itself rather than assuming context from a later section:
If any check in any pass fails, fix it with Edit and Read the file again before re-running the affected pass. If a Pass A edit changes content that Pass B or Pass C already cleared, re-run those passes against the new content — contradiction fixes can re-introduce language or reading-order issues that the earlier passes caught. Do not present a summary that fails Pass A or Pass B — a stakeholder who reads a contradiction or has to ask "what does X mean?" has already lost trust in the document.
Summarize for the user in one short message:
Ask whether the user wants to refine wording, add or remove a question, or consider the summary ready to share.
© testdouble, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 1 other file (references) in han-reporting/skills/stakeholder-summary of testdouble/han.
Open the folder on GitHubat commit abba73a
Stakeholder Summary next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Stakeholder Summary this skilltestdouble/han | 279 | — | ~6.3k | Automated safety check: Pass | MIT | |
| Make A Planpenpot/penpot | 61k | — | ~1.6k | Automated safety check: Pass | MPL-2.0 | |
| Reminddavidondrej/skills | 4.1k | — | ~266 | Automated safety check: Pass | MIT | |
| Science Communicationbrycewang-stanford/Auto-Empirical-Research-Skills | 4.5k | — | ~3.1k | Automated safety check: Pass | Custom licence | |
| Reportkv0906/pm-kit | 138 | — | ~1.7k | Automated safety check: Notes | MIT | |
| Contextpilot SavingsEfficientContext/ContextPilot | 140 | — | ~1.4k | Automated safety check: Pass | MIT |
penpot/penpot
Planning flow — research the subject of this session, produce an implementation plan with the planner skill, resolve open questions with the user in plain language, and save the final plan to…
davidondrej/skills
Rewrite the last response simpler and shorter in plain English, prefixed with a 3-5 sentence TLDR of the conversation so far.
brycewang-stanford/Auto-Empirical-Research-Skills
Translating technical findings for non-technical audiences. An agent skill from brycewang-stanford/Auto-Empirical-Research-Skills.
kv0906/pm-kit
Executive briefing in plain language — report to me like I'm the CEO or product owner.
EfficientContext/ContextPilot
A skill your agent uses when a user asks how many tokens (or how much context/cost) ContextPilot has saved, or wants a ContextPilot savings status/summary inside Hermes Agent — e.g.
Wirasm/prp
Turns a PRD, issue or description into an implementation-ready plan grounded in codebase evidence, adding root-cause analysis for bugs and publishing issue plans back to the issue.
testdouble/han
Convert a stakeholder summary markdown file into a single self-contained HTML executive report — bottom line and decision asks up front, supporting detail later — styled with a Test Double-derived…
testdouble/han
Update Han plugin documentation so every skill, agent, guidance doc, index, and cross-reference is current and accurate.
testdouble/han
Authoritative guidance for building Claude Code skills, agents, and plugins, plus init and update steps that install and refresh the plugin-building skills in the current repository.
testdouble/han
Cut a Han release: update CHANGELOG.md with the changes since the last release, bump and tag every plugin that changed as {plugin-name}--v{version} so a version-constrained dependency can resolve…
testdouble/han
Generate a PR description from the current branch's changes against a GitHub PR, using the gh CLI.
testdouble/han
Builds a feature implementation plan from an existing feature specification (or equivalent context) through a facilitated team conversation.
Produces a plain-language stakeholder summary from an existing feature specification, for sharing with non-technical stakeholders before implementation kicks off. Stakeholder Summary is an agent skill from testdouble/han. Produces a plain-language stakeholder summary from an existing feature specification, for sharing with non-technical stakeholders before implementation kicks off.
Stakeholder Summary fits situations like: the user wants to draft a stakeholder summary; executive summary; business summary of a feature spec.
Run `npx skills add testdouble/han --skill stakeholder-summary -a claude-code`. Or copy the skill folder (han-reporting/skills/stakeholder-summary in testdouble/han) into .claude/skills/stakeholder-summary in your project. Claude Code loads it when a task matches its description.
Run `npx skills add testdouble/han --skill stakeholder-summary -a codex`. Or copy the skill folder (han-reporting/skills/stakeholder-summary in testdouble/han) into .agents/skills/stakeholder-summary in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add testdouble/han --skill stakeholder-summary -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/stakeholder-summary, .gemini/skills/stakeholder-summary, .github/skills/stakeholder-summary and .opencode/skills/stakeholder-summary in your project.
Going by SKILL.md and its folder, Stakeholder Summary needs the command-line tools its instructions call (bash). Its frontmatter pre-approves these tools: Read, Write, Edit, Glob, Grep, Agent, Bash(find *), Bash(bash "${CLAUDE_PLUGIN_ROOT}/scripts/han-config-dir.sh").
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Stakeholder Summary is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 6.3k tokens (SKILL.md is roughly 25k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 1.3k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Stakeholder Summary: Make A Plan (penpot/penpot, 61k stars), Remind (davidondrej/skills, 4.1k stars), Science Communication (brycewang-stanford/Auto-Empirical-Research-Skills, 4.5k stars) and Report (kv0906/pm-kit, 138 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
testdouble (a GitHub organization) maintains it in testdouble/han, which has 279 GitHub stars. The repository holds 54 skills in this directory. The repository was last updated on October 1, 2026.
Source: testdouble/han on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.