Best for
- Use when you need to create, generate, or draft a test plan for a branch, need to analyze test coverage, or need to identify what tests to write for specific files or directories.
testdouble/han/han-coding/skills/automated-test-planning/SKILL.md
Produce a standalone test plan by analyzing code for test coverage gaps and edge cases. Use when you need to create, generate, or draft a test plan for a branch, need to analyze test coverage, or need to identify what tests to write for specific files or directories. Does not produce a plain-language plan for a person to run tests by hand — use manual-test-planning for that. Does not write test code — use tdd to implement behavior test-first. Does not refine existing plans — use iterative-plan-r
Decision brief
Produce a standalone test plan by analyzing code for test coverage gaps and edge cases. Does not produce a plain-language plan for a person to run tests by hand — use manual-test-planning for that.
Compatibility matrix
| Platform | Status | Evidence | What to check |
|---|---|---|---|
| Codex | Not declared | No explicit evidence | Portability before use |
| Claude Code | Not declared | No explicit evidence | Portability before use |
| Cursor | Not declared | No explicit evidence | Portability before use |
| Gemini CLI | Not declared | No explicit evidence | Portability before use |
Installation
The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.
npx skills add https://github.com/testdouble/han --skill "han-coding/skills/automated-test-planning"Inspect the Agent Skill "automated-test-planning" from https://github.com/testdouble/han/blob/55e15f752b12f6f90923eb38f7cd25e8e51bf07b/han-coding/skills/automated-test-planning/SKILL.md at commit 55e15f752b12f6f90923eb38f7cd25e8e51bf07b. List every install step, command, network request, credential, file read/write, external action, and rollback step. Explain whether it fits my task. Do not install or execute anything until I approve.
Workflow
Resolve project config: read CLAUDE.md's Project Discovery section for test command (under Commands and Tests, not Frameworks and Tooling), language, and framework; fall back to project-discovery.md. Store found values for use in later steps.
Launch the testing agents in parallel using the Agent tool with runinbackground: true. Pass each agent the file list from Step 1. In Mode A or Mode B, include on branch {branch} in agent prompts if a branch name was detected by the script; in Mode C or when no branch was detecte…
Combine findings from every dispatched agent into a unified, prioritized test plan:
Before generating, invoke han-communication:readability-guidance to source the shared readability standard into your context, then apply it as you write the plan's plain-language spine (Summary, What Needs Testing and Why, What Each Test Covers), holding the named audience: the…
Dispatch two reviewers against the generated test plan, in parallel, using the Agent tool. The plan is produced in-channel, so embed the full plan text in each agent's prompt (in place of {plan text} below). If the plan was written to a file, pass that path instead and let the a…
Permission review
The documentation asks the agent to read local files, directories, or repositories.
Inspect the file list before launching. Skip any that do not apply.Evidence record
| Signal | Value | Evidence type | Meaning |
|---|---|---|---|
| Quality score | 94/100 | Computed | Documentation, specificity, maintenance, and trust rules |
| Repository stars | 181 | Source | Repository attention, not individual Skill quality |
| Compatibility | 0 platforms | Source | Declared in the catalog source record |
| Usage guide | automated source guide | Editorial | Generated or reviewed according to the visible evidence level |
Pinned source
which git 2>/dev/null || echo "not installed"find . -maxdepth 1 -name "CLAUDE.md" -type ffind . -maxdepth 3 -name "project-discovery.md" -type fecho "${CLAUDE_CONFIG_DIR:-$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.
Resolve project config: read CLAUDE.md's ## Project Discovery section for test command (under
### Commands and Tests, not ### Frameworks and Tooling), language, and framework; fall back to project-discovery.md.
Store found values for use in later steps.
Scope determination: Check git installed from Project Context. If empty or not installed, skip to Mode C
below.
Run ${CLAUDE_SKILL_DIR}/scripts/detect-test-context.sh and parse its output. If git-available: false, skip to Mode
C below.
Mode A: Full git context — git-available: true and the output contains a changed-files-start block with content.
Mode B: Uncommitted changes — git-available: true but output contains changed-files: none.
git diff (unstaged changes), git diff --cached (staged changes), and git status --short
(untracked files) to identify changed files; if any files are found, use those as scopeMode C: No git / no changes found — git missing, not in a repo, or no changes detected in any state.
node_modules/, .git/, vendor/,
dist/, build/, __pycache__/, lock files; present the discovered files and ask the user to confirm scopeBuild a list of source files to analyze: expand directories to find source files; identify relevant source files from branch changes or project structure for descriptions.
Launch the testing agents in parallel using the Agent tool with run_in_background: true. Pass each agent the
file list from Step 1. In Mode A or Mode B, include on branch {branch} in agent prompts if a branch name was detected
by the script; in Mode C or when no branch was detected, omit the branch reference entirely. If the user described what
they want tested, include that description in every agent prompt so they can focus their analysis.
Launch han-core:test-engineer agent — prompt: "Analyze test coverage for the following files{on branch {branch} if applicable}: {file list}. Recommend tests only at the public API: the inputs a real caller supplies, the outputs and side effects they observe, and the interactions the unit has with the objects and services it collaborates with. Do not recommend tests that reach into private methods, internal state, or implementation structure — if two implementations would produce the same observable behavior, the test must pass for both. Cover the critical behaviors a caller depends on and stop; do not specify a test for every branch, private helper, or intermediate value. Apply the YAGNI rule from ../../references/yagni-rule.md — recommend a test only when the code commits to a behavior the test verifies AND the failure mode is realistic for this codebase. Symmetry, completeness, and hypothetical scaling are YAGNI; defer those to the Deferred Tests section with the trigger that would justify writing them. {any additional context from user arguments}"
Launch han-core:edge-case-explorer agent — prompt: "Explore edge cases for the following files{on branch {branch} if applicable}: {file list}. Focus on inputs, integration points, and error paths observable through the public API and through interactions with collaborating objects and services — not internal state or private implementation. Apply the YAGNI rule from ../../references/yagni-rule.md — raise an edge case only when a real caller produces the input, the failure mode has plausible production trigger, or the case is critical-path correctness regardless of caller. Hypothetical adversaries the code doesn't face and symmetry-driven boundaries go to Dropped Edge Cases with the trigger that would justify revisiting. {any additional context from user arguments}"
Inspect the file list before launching. Skip any that do not apply.
Launch han-core:concurrency-analyst agent — only if the file list touches threads, async/await, goroutines, actors, shared mutable state across requests, timers, locks, or message queues. Prompt: "Identify concurrency test gaps for the following files{on branch {branch} if applicable}: {file list}. Focus on race conditions, lock ordering, shared-resource contention, deadlock potential, and async error handling that should be covered by tests. {any additional context from user arguments}"
Launch han-core:adversarial-security-analyst agent — only if the file list touches authentication, authorization, input validation, data isolation, session handling, crypto, file uploads, external API calls with secrets, or SQL/ORM query construction. Prompt: "Identify negative security tests that should exist for the following files{on branch {branch} if applicable}: {file list}. Focus on exploit paths that tests could catch before production — authorization bypass, injection, broken isolation, insecure defaults. Return test recommendations, not general threat modeling. {any additional context from user arguments}"
Extra agents named in the project config's ## Extra Agents list join this conditional-dispatch pool under the same
file-list-signal selection, per ../../references/config-rule.md: dispatch one only
when the file list carries a signal matching its stated specialty, and skip an entry that does not resolve to a
dispatchable agent with a one-line note.
Wait for every dispatched agent to complete and collect full output for processing in Step 3.
Combine findings from every dispatched agent into a unified, prioritized test plan:
Reason: YAGNI — {gate failure} and the trigger that would justify writing the test (a third real customer hits the
edge case, the feature actually ships the path, a measured production failure occurs, etc.). When several recommended
low-level tests can be replaced by one durable behavioral test that catches the same realistic failure modes, replace
them with the single test and record the dropped low-level tests under Deferred with
Reason: YAGNI — single behavioral test catches the same realistic failure modes.Before generating, invoke han-communication:readability-guidance to source the shared readability standard into your
context, then apply it as you write the plan's plain-language spine (Summary, What Needs Testing and Why, What Each Test
Covers), holding the named audience: the engineer who will implement the tests. The frame governs how a fact is said,
never whether a required fact appears — keep the file:line references, test levels, and TP-IDs the plan depends on.
Use the template at template.md for the output structure. The test plan leads with plain language and defers the implementation detail.
Writing rules:
Lead with behavior. These rules make the plan a human-readable overview first and an implementation outline second:
## Technical Reference region. Describe what needs testing and what would break without it, in
functional terms a reader who has not seen the code can follow. Name files, types, and test levels only where they
aid understanding.## Technical Reference region, below the plain-language spine. A reader who only needs to know what to test and why
can stop above.Fill in all sections:
Dispatch two reviewers against the generated test plan, in parallel, using the Agent tool. The plan is produced
in-channel, so embed the full plan text in each agent's prompt (in place of {plan text} below). If the plan was
written to a file, pass that path instead and let the agent read it.
Launch han-core:information-architect agent — prompt: "Audit the following test plan for findability,
orientation, and comprehension. The intended audience is an engineer or technically-literate stakeholder who needs to
understand what needs testing and why before reading the implementation detail. Check: (1) Do the plain-language
Summary, What Needs Testing and Why, and What Each Test Covers sections appear before the ## Technical Reference
region? If the plain-language content is missing or sits below the reference detail, that is a finding. (2) Does the
Summary paragraph read for someone who has not seen the code — no file paths, TP-IDs, or framework jargon? (3) Does
the heading list let a scanning reader see where the plain-language overview ends and the deep Technical Reference
begins? (4) Do the What Each Test Covers lines cross-link to their TP-IDs so a reader can move from plain language to
detail? Return a list of structural edits; do not return an empty list unless the plan leads with plain language and
defers the implementation detail.\n\n{plan text}"
Launch han-core:junior-developer agent — prompt: "Review the following test plan as a generalist teammate who has not seen this code. Reading only the plain-language sections (Summary, What Needs Testing and Why, What Each Test Covers), can you understand what needs testing and why it matters without dropping into the Technical Reference? Flag any plain-language line that is unclear, leans on undefined jargon, assumes context a reader would not have, or states a test without conveying what would break if it were missing. Return a list of clarity findings with the section and line they apply to; return an empty list only if the plain-language layer stands on its own.\n\n{plan text}"
Apply every actionable edit the agents return. For findings that require author judgment (scope or audience ambiguity), surface them to the user with a recommended resolution; do not silently resolve.
Once every actionable edit is applied and the plan is final, dispatch han-communication:readability-editor (one Agent
call) to audit and rewrite the plan's prose against the readability standard. If the plan was written to a file, pass the
editor that file path; if it is in-channel, pass the plan text and apply the returned rewrite. Also pass the named
audience: the engineer who will implement the tests; the editor reads han-communication's own canonical rule, so pass no
rule path. It must preserve every fact and operate on prose regions only — never inside code fences, tables, or the
TP-NNN test identifiers, which must survive unchanged so they still resolve. Apply its rewrite to the plan.
Then run the standardized readability self-check (the shared standard is in your context from
han-communication:readability-guidance) over the plan's prose regions only — never inside code fences, tables, or the
TP-NNN identifiers. Confirm each criterion and fix any failure before presenting:
Run the readability rule's standardized six-point 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, never whether a required fact appears.
Alternatives
coreyhaines31/marketingskills
When the user wants to plan, design, or implement an A/B test or experiment, or build a growth experimentation program. Also use when the user mentions "A/B test," "split test," "experiment," "test this change," "variant copy," "multivariate test," "hypothesis," "should I test this," "which version is better," "test two versions," "statistical significance," "how long should I run this test," "growth experiments," "experiment velocity," "experiment backlog," "ICE score," "experimentation program
alirezarezvani/claude-skills
App Store Optimization (ASO) toolkit for researching keywords, analyzing competitor rankings, generating metadata suggestions, and improving app visibility on Apple App Store and Google Play Store. Use when the user asks about ASO, app store rankings, app metadata, app titles and descriptions, app store listings, app visibility, or mobile app marketing on iOS or Android. Supports keyword research and scoring, competitor keyword analysis, metadata optimization, A/B test planning, launch checklist
JasonColapietro/suede-creator-skills
Suede-owned experimentation discipline for hypotheses, sample sizing, test duration, significance, and repeatable experiment programs. Use when comparing variants, deciding whether a result is reliable, or building an experiment backlog and cadence. NOT FOR: analytics instrumentation (use suede-analytics), post-click conversion diagnosis (use suede-site-alchemy), or writing the variant copy itself (use suede-copy).
narrative-io/narrative-skills-marketplace
Translate a fuzzy analytical question into a rigorous investigation plan. Interrogates the ask, grounds the plan in the available data dictionary, applies analytical best practices, and produces a structured brief of query specifications for a downstream query-writing skill. Plans, does not write SQL. Use when: "why did X drop", "is there a relationship between A and B", "who are our highest-value customers", "what's driving the change in Y", "investigate this trend", "design an analysis for", "