Restore the /plan-agent:planning skill's HTML output guarantee by adding an unconditional ExitPlanMode self-bootstrap step — so the harness can never force the skill into .md output mode regardless of how the session was entered.
File fix-planning-html-output.html
Path docs/plans/fix-planning-html-output.html
Acceptance Criteria 0 / 3 done

Context

When the harness sees a command named planning it can independently enter plan mode, which forces a .md plan file with a random slug path — overriding the skill's own “always write HTML” guarantee. v0.8.0 deliberately removed ExitPlanMode from allowed-tools as part of the plan-mode handshake removal, but that also removed the escape hatch. The git-agent skills solve this with an unconditional self-bootstrap: call ExitPlanMode as the very first action — a no-op when plan mode is already off, a fix when it is on.

Steps

doneAdd ExitPlanMode to allowed-tools in SKILL.md
Without it in allowed-tools, the model cannot call the tool — the schema is deferred and the call fails silently or triggers a permission prompt.
Verify
Grep the allowed-tools line in kit/plugins/plan-agent/skills/planning/SKILL.md and confirm ExitPlanMode appears. ToolSearch must also be present (already was).
doneAdd Step 0 (Self-bootstrap) as the unconditional first workflow step
The step must run before any read, write, or clarify action — including --quick — so there is no code path where the skill executes inside harness plan mode. The step text explains the two-part load pattern: ToolSearch select:ExitPlanMode first, then ExitPlanMode.
Verify
Read the ## Workflow section of SKILL.md and confirm Step 0 appears before Step 1 (Clarify) and explicitly states it is unconditional and must not be skipped for any flag.
doneBump version to 0.11.2 and update CHANGELOG
Patch bump signals a bug fix to downstream consumers. The CHANGELOG entry documents the root cause so the v0.8.0 reasoning is not accidentally re-applied in a future cleanup.
Verify
grep "plan-agent" .claude-plugin/marketplace.json shows 0.11.2. CHANGELOG.md has entries for both v0.11.1 (ExitPlanMode fix) and v0.11.2 (scope constraint) with root-cause context.

Verification

Invoke /plan-agent:planning test objective --quick in a session where the harness has entered plan mode. Confirm:

  1. The first tool call is ToolSearch (loading ExitPlanMode), followed immediately by ExitPlanMode.
  2. The skill writes a .html file under docs/plans/ — not a .md file.
  3. The filename follows verb-target kebab-case (e.g. test-objective.html).