From ank
Generate a single-file HTML "story-paced" walkthrough of a finished feature for human code review. Use after completing a feature or merging a PR — produces docs/review/<slug>.html with sidebar nav, Why/Tradeoff/Deferred callouts, status pills, and a reviewer's checklist.
How this skill is triggered — by the user, by Claude, or both
Slash command
/ank:review-boardThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
A single self-contained HTML file at `docs/review/<slug>.html` that a human reviewer can read top-to-bottom to understand a finished feature. Not a diff summary — GitHub already does that. The value is the **why** and the **shape**: what we were trying to do, the non-obvious decisions, the tradeoffs accepted, what was deferred, and what to spot-check.
A single self-contained HTML file at docs/review/<slug>.html that a human reviewer can read top-to-bottom to understand a finished feature. Not a diff summary — GitHub already does that. The value is the why and the shape: what we were trying to do, the non-obvious decisions, the tradeoffs accepted, what was deferred, and what to spot-check.
Before generating, open the reference example at examples/walkthrough-example.html. It is the visual + structural target — pattern-match against it. Copy its <style> block and scroll-spy <script> verbatim into the new document. Match its shape: sticky sidebar with numbered TOC, scroll-spy active highlighting, story-paced sections, Why / Tradeoff / Deferred callouts, status pills, ASCII diagrams in the architecture section. The example's content describes one specific past feature — the structure, voice, and density carry over; the words do not.
git symbolic-ref refs/remotes/origin/HEAD (fallback to main)./review-board 39 or /review-board https://github.com/owner/repo/pull/39) — use gh pr view <n> --json title,body,commits,files and gh pr diff <n> as the source of truth.scripts/collect_context.sh [pr_number] from the skill directory. It produces sectioned output with === HEADER === markers — parse it instead of making 8 separate calls.git diff <base>...HEAD (or gh pr diff <n>) exceeds 5000 lines, do not paste it — summarize file-by-file from the stat instead.TASKS.md entry, GitHub issue body).Use AskUserQuestion for things you can't infer from code. Skip any question whose answer is obvious from commit messages, PR body, or the current chat conversation.
Pick the right mode before asking:
AskUserQuestion with mutually-exclusive options for the most contested call (usually the non-obvious decision or tradeoff), and note the other reads in the question's body. Let the user redirect rather than answer from scratch.The five things to elicit (in either mode):
callout.why.callout.tradeoff.Adapt section names to the feature, but keep the arc:
good / warn / bad / accent)..diagram block if there is one to draw.story-section per significant module or decision. This is where most Why/Tradeoff callouts live.callout.deferred entries with reasons.ul.compact.Write to docs/review/<slug>.html:
<slug> = pr-<number>.<slug> = current branch name with / replaced by - (e.g. feature/new-checkout → feature-new-checkout).main/master, i.e. collect_context.sh reports mode=single-head): using the literal branch name would clobber the file on the next merge. Use commit-<short-sha> instead (e.g. commit-a1b2c3d).Create docs/review/ if it doesn't exist.
<style> block and scroll-spy <script> verbatim from examples/walkthrough-example.html. Do not rewrite, retheme, or trim the CSS — visual consistency across walkthroughs is a feature. Replace the sidebar TOC, header (title / task ID / issue / PR / branch / commit / header pills), and <section class="story-section"> bodies with content for the current feature. Keep the same set of CSS classes (callout.why, callout.tradeoff, callout.deferred, pill.good/warn/bad/accent, diagram, pillrow, compact, etc.).good pills on stubs. If a module is partial, use warn and say so.After writing the HTML, run these checks. Fix anything that fails; don't tell the user the file is ready until they all pass.
grep -nE 'Term1|Term2|Term3' docs/review/<slug>.html | grep -v '<!--'
Any hit that wasn't deliberately written for the current feature is a bug — re-edit.<li><a href="#X"> in the sidebar must match a <section id="X"> further down, and vice versa. Mismatches break the scroll-spy and the TOC links. Run:
diff <(grep -oE 'href="#[a-z0-9-]+"' docs/review/<slug>.html | sort -u) \
<(grep -oE 'id="[a-z0-9-]+"' docs/review/<slug>.html | sort -u | sed 's/id=/href=#/' | sed 's/"/"#/' )
(or just eyeball the two lists side by side.)ls the ones you cited.<span class="pill good|warn|bad">. For each, confirm the underlying code actually matches that label. If you used good for "implemented", that file should actually be implemented — not stubbed.callout.why, callout.tradeoff, and callout.deferred should have a real cause expressible in one sentence. If you can't, delete the callout.npx claudepluginhub ananthanandanan/skills --plugin ankGuides creation, editing, and verification of skills for AI coding agents using test-driven development with subagent scenarios. Use when authoring or debugging skills.