--- name: work-issue description: End-to-end workflow for resolving a GitHub issue in astro-mermaid — triages complexity, then runs brainstorm → TDD → implement → docs/spec → code review at the right depth. Use when the user says "work issue N", "fix issue N", "/work-issue N", or asks to resolve a GitHub issue/PR in this repo. --- # Work an Issue Resolve a GitHub issue for **astro-mermaid** with ceremony scaled to its complexity. Two phases — triage, then execute the tier. The argument is an issue number (or PR number). If none is given, ask which issue. ## Step 0 — Load context - `gh issue view ` (or `gh pr view `) — read the full body and comments. - Read `AGENTS.md`, `astro-mermaid-integration.js`, `astro-mermaid-integration.d.ts`. - Create a branch: `git checkout -b fix/issue--` (use `feat/` for features). Never work on `main`. ## Step 1 — Triage into a tier Classify the issue, then state the tier to the user before proceeding: - **Trivial** — typo, dep bump, doc-only, copy fix. → Skip to "Implement" + "Verify". No subagents. - **Standard** — a contained bug or feature with clear scope. → TDD → implement → docs → **one** code-reviewer subagent. - **Subtle** — touches client serialization/security, the public config API, or has multiple viable approaches (the #18 class). → Full pipeline including the brainstorm subagent and an adversarial review. When unsure, round **up** a tier. ## Step 2 — Brainstorm (Subtle tier only) Spawn the **brainstorm** subagent (Agent tool, `subagent_type: "brainstorm"`) with the issue text. Wait for its ranked approaches. Pick one, tell the user which and why. Do not skip this for security/API issues — it exists to stop naive fixes (see #18). ## Step 3 — TDD (Standard + Subtle) Write the failing test FIRST in `test/` (vitest). It must encode the regression that motivated the issue — i.e. it fails on `origin/main` and passes after the fix. Run `npm test` and confirm the new test fails for the right reason before implementing. ## Step 4 — Implement Make the change in `astro-mermaid-integration.js` (and `.d.ts` if the public API changes). Honor the hard rules in `AGENTS.md` — especially: **never serialize user functions to the client.** Run `npm test` until green. ## Step 5 — Spec & docs update If the public API or behavior changed, update in the same commit: - `astro-mermaid-integration.d.ts` (types) - `README.md` and `docs/API.md` - `CHANGELOG.md` → `[Unreleased]` Skip only for genuinely internal changes. ## Step 6 — Verify in a demo (when user-visible) If the change affects rendering, add/adjust an example in a demo's content and confirm it renders (the `verify` or `run` skill, or a quick Playwright check). Refresh the stale `file:..` copy first: `cp astro-mermaid-integration.js astro-mermaid-integration.d.ts /node_modules/astro-mermaid/`. ## Step 7 — Code review (Standard + Subtle) Spawn the **code-reviewer** subagent (`subagent_type: "code-reviewer"`) on the diff. Address every **blocking** finding (re-run review if needed). Report nits to the user. ## Step 8 — Commit & push - Conventional Commits — `fix:` for bugs, `feat:` for features. Reference the issue (`fixes #`). - End the commit body with the `Co-Authored-By` trailer. - Push the branch. Tell the user the branch is up and offer to open/update the PR (`gh pr create`). ## Notes - Never edit `version` in `package.json` — semantic-release owns it. - `docs:`/`chore:`/`test:` commits do not trigger a release; a `fix:`/`feat:` must carry the user-facing change for it to ship.