$npx -y skills add testdouble/han --skill han-feedbackCapture structured feedback on the Han skills and agents used in the current session and optionally post it as a GitHub issue to testdouble/han. Use at the end of any session where one or more han-* skills or agents ran, to rate a run, log what worked and what didn't, or submit o
| 1 | ## Project Context |
| 2 | |
| 3 | - Today's date: !`date +%Y-%m-%d` |
| 4 | |
| 5 | # Capture Feedback |
| 6 | |
| 7 | ## Operating Principles |
| 8 | |
| 9 | - **The whole han-* family is in scope.** Capture skills and agents from every Han plugin (`han-core`, `han-planning`, `han-coding`, `han-github`, `han-reporting`, `han-feedback`, and any future `han-*` plugin). Skills and agents from non-Han plugins are out of scope. |
| 10 | - **Invocations count, not completions.** A skill or agent is considered used if it appeared in the session, regardless of whether it finished or was cancelled. Feedback on a partial run is still feedback. |
| 11 | - **Agents count even when a skill dispatched them.** Most Han agents run because a skill dispatched them. Those agents are still in scope; record which ones contributed so the feedback names where specialist value came from. |
| 12 | - **Conservative defaults on posting.** The feedback directory is user-space. The posting target is a public GitHub repository. Ambiguous confirmation is treated as a stop, not a go. |
| 13 | - **One file per day per run.** Do not overwrite existing feedback for today. If a skill or agent is already covered by a file for today, skip it. |
| 14 | - **Compacted sessions limit visibility.** The skill can only see turns present in the context window. If the session was compacted before running this skill, earlier invocations may not be visible. |
| 15 | |
| 16 | ## Step 1: Identify Han skills and agents used this session |
| 17 | |
| 18 | Look back through the conversation for any use of a Han plugin component. A component counts as used if it was invoked, regardless of whether it completed or was cancelled. |
| 19 | |
| 20 | **Han skills.** Look for invocations of skills namespaced to any `han-*` plugin. The namespace is the plugin name followed by a colon: `han-core:`, `han-planning:`, `han-coding:`, `han-github:`, `han-reporting:`, `han-feedback:`, and the same shape for any future `han-*` plugin (treat a bare `han:` prefix as Han too). Watch for slash-command invocations (like `/han-planning:plan-a-feature`), messages showing a skill launching (like "Launching skill: han-planning:plan-a-feature"), and any output that identifies a specific Han skill ran. |
| 21 | |
| 22 | **Han agents.** Look for dispatches of agents from any `han-*` plugin. For example, an `Agent` tool call whose `subagent_type` is `han-core:adversarial-security-analyst`, or skill output naming a Han agent it launched (`evidence-based-investigator`, `project-manager`, `risk-analyst`, and so on). Record each distinct Han agent that ran, whether a skill dispatched it or it was invoked directly. |
| 23 | |
| 24 | Build one list of the Han skills used and one list of the Han agents used. Deduplicate each. |
| 25 | |
| 26 | If no Han skill or agent invocations are visible in the current context window, ask the user before stopping: "No Han skill or agent invocations are visible in this context window. If you ran Han skills or agents earlier but the session was compacted, list what you used and I will generate feedback for them." If the user confirms none were used, stop without writing any file. |
| 27 | |
| 28 | ## Step 2: Create the feedback directory if it does not exist |
| 29 | |
| 30 | Check whether `~/.claude/han-feedback/` exists by running `ls ~/.claude/han-feedback/ 2>/dev/null`. If the command fails (directory absent), run `mkdir -p ~/.claude/han-feedback/` before proceeding. |
| 31 | |
| 32 | ## Step 3: Check for existing feedback today |
| 33 | |
| 34 | Run `ls ~/.claude/han-feedback/ 2>/dev/null` and identify any files whose name begins with today's date (from Project Context). A skill or agent that already has a feedback file for today is skipped in this run. |
| 35 | |
| 36 | If everything used in this session already has a feedback file for today, report the existing file paths and stop. |
| 37 | |
| 38 | ## Step 4: Determine the filename |
| 39 | |
| 40 | Compute the filename as `{TODAY}-{short-names}.md`, where: |
| 41 | |
| 42 | - Each component's short name is its plugin namespace stripped (everything up to and including the colon). For example `han-planning:plan-a-feature` becomes `plan-a-feature`, `han-github:post-code-review-to-pr` becomes `post-code-review-to-pr`, and the agent `han-core:risk-analyst` becomes `risk-analyst`. |
| 43 | - Join the short names of the **skills** being processed in this run with hyphens. Skills name the file because they are the unit of work; the agents are recorded inside the file. |
| 44 | - When a session used Han agents directly with no Han skill, use the agent short names instead. |
| 45 | - `{TODAY}` is today's date from Project Context. |
| 46 | |
| 47 | Example: a session with `ha |