$npx -y skills add testdouble/han --skill plan-a-feature-to-confluenceBuilds a feature specification from scratch with plan-a-feature and publishes it to a user-specified Confluence location, posting the spec as a parent page and each companion artifact (decision log, team findings, technical notes) as a child page beneath it. Use when the user wan
| 1 | # Plan a Feature to Confluence |
| 2 | |
| 3 | This skill builds a feature specification with the core `han-planning:plan-a-feature` |
| 4 | skill, lets the user review the result, and then publishes it to a Confluence |
| 5 | location that **the user must specify**. It is a thin orchestrator: the planning |
| 6 | work belongs to `han-planning:plan-a-feature`, and the publishing work belongs to |
| 7 | `han-atlassian:markdown-to-confluence`. This skill only validates its inputs, runs the |
| 8 | planning skill to a temporary folder, gets the user's review and publish choice, |
| 9 | and hands each file to the publisher. |
| 10 | |
| 11 | `han-planning:plan-a-feature` produces a small **set** of files — the primary |
| 12 | `feature-specification.md` plus companion artifacts under `artifacts/` (the |
| 13 | decision log, the team findings, and a lazily-created technical-notes file). This |
| 14 | skill publishes the **spec as a parent page** and each companion artifact as a |
| 15 | **child page** beneath it, so the whole plan lands in Confluence as one small |
| 16 | page tree. The files cross-reference each other with relative links that do not |
| 17 | resolve once each file is its own Confluence page. Because this skill decides |
| 18 | every page's title up front, it rewrites those cross-file links into Confluence |
| 19 | **title-based page-link macros** (the `<ac:link><ri:page ri:content-title="..."/>…</ac:link>` |
| 20 | form; Step 5 gives the exact macro to emit, link body and all) before creating |
| 21 | any page — these resolve by title at view time, so no page URL or ID has to exist |
| 22 | first. That collapses publishing to a **single create pass**: |
| 23 | there is no separate relink-and-update pass, and each page is created exactly |
| 24 | once. |
| 25 | |
| 26 | The six steps below are the whole skill. It does not resolve Confluence pages or |
| 27 | call the Confluence MCP create/update tools itself; `han-atlassian:markdown-to-confluence` |
| 28 | owns all of that. |
| 29 | |
| 30 | ## Step 1: Validate Inputs |
| 31 | |
| 32 | Confirm the skill has everything it needs before spending effort producing a |
| 33 | plan: |
| 34 | |
| 35 | 1. **Atlassian MCP reachable (hard requirement).** Call |
| 36 | `mcp__claude_ai_Atlassian__getAccessibleAtlassianResources` to confirm the |
| 37 | server is connected and retrieve the cloud ID(s). If the tool is not |
| 38 | available, the call errors, or it returns no accessible resources (typically |
| 39 | an authentication or configuration problem), **stop immediately**. Tell the |
| 40 | user this skill requires the Atlassian MCP server to be installed, configured, |
| 41 | and authenticated, and that they can re-run it once it is connected. Do not |
| 42 | fall back to a local-only run; for local-only planning, point them at |
| 43 | `han-planning:plan-a-feature`. This preflight runs first so a missing server fails |
| 44 | before any planning work begins. |
| 45 | 2. **A feature to plan.** Confirm the request names a feature, capability, or |
| 46 | system behavior to specify. This — together with the `size` argument and any |
| 47 | relevant conversation context — is forwarded to `han-planning:plan-a-feature` |
| 48 | verbatim in Step 2. If the request is too thin to start, let |
| 49 | `han-planning:plan-a-feature` run its own interview; do not pre-empt it here. |
| 50 | 3. **A Confluence destination.** Confirm the request provides a target location: |
| 51 | a **Confluence page URL** (to update that page, or create the spec as a child |
| 52 | under it), or a **space** (key or name) plus an optional **parent page**. If |
| 53 | none was provided, ask for one with `AskUserQuestion`, explaining plainly that |
| 54 | the skill needs an exact destination because it does not search Confluence. Do |
| 55 | not resolve the page tree here — only confirm a location was given. Carry it |
| 56 | through to Step 5; `han-atlassian:markdown-to-confluence` resolves it. |
| 57 | |
| 58 | ## Step 2: Produce the Plan to a Temporary Folder |
| 59 | |
| 60 | Invoke the `han-planning:plan-a-feature` skill with the **Skill** tool, **forwarding |
| 61 | all provided context** verbatim: the `size` argument (if the user passed |
| 62 | `small`, `medium`, or `large`), the feature description, any known constraints or |
| 63 | entry points, and the relevant c |