From speckit-tldr
Generate a review-oriented TLDR of GitHub Spec Kit artifacts (spec.md and/or plan.md) as a self-contained HTML dashboard plus a Markdown version, to make reviewing those files in a pull request faster. Use this skill whenever the user wants to review, summarize, "TLDR", skim, or get an overview of a Spec Kit spec.md or plan.md, whenever they are reviewing a PR that touches files under specs/<feature>/, or whenever they mention spec-driven development (SDD) review, even if they do not explicitly say "TLDR". This skill produces an on-ramp to reading the document (with pointers back into it), NOT a replacement for reading it.
How this skill is triggered — by the user, by Claude, or both
Slash command
/speckit-tldr:tldr [spec|plan|both|<path-to-md>][spec|plan|both|<path-to-md>]This skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Produce a fast, review-oriented overview of Spec Kit `spec.md` / `plan.md` files.
Produce a fast, review-oriented overview of Spec Kit spec.md / plan.md files.
The goal is to cut the time a PR reviewer spends getting oriented, while
deliberately surfacing the spots that deserve close reading rather than hiding
them. A TLDR here is an entry point into the document, not a substitute for it.
Parse the invocation argument ($ARGUMENTS), and also honor natural language in
the user's message. Resolution order:
specs/042-foo/plan.md) → operate on exactly that file;
detect spec vs plan from the filename.spec / plan → restrict to that artifact type. both (or no argument) →
process both spec.md and plan.md for the target feature.To find the feature directory when no path is given:
specs/*<feature>*/.specs/<feature>/*.md
files (see Step 2). If still ambiguous, list the candidates under specs/ and
ask which feature.Spec Kit convention: each feature lives in specs/<NNN-feature-name>/ with
spec.md, plan.md, and often research.md, data-model.md, contracts/,
tasks.md. Only spec.md and plan.md are in scope for this skill.
This skill defaults to reviewer mode. Establish what changed so items can be
marked changedInPR:
# Base for comparison: the merge-base with the default branch (adjust if needed).
git merge-base HEAD origin/main 2>/dev/null || git merge-base HEAD main
# Per-file changed line ranges:
git diff --unified=0 <base>...HEAD -- specs/<feature>/spec.md
git diff --unified=0 <base>...HEAD -- specs/<feature>/plan.md
Map changed line ranges back to the headings/items you extract so each item gets
changedInPR: true|false. If this is not a PR (no meaningful diff, or the user
asked for a plain overview), set every item's changedInPR to false and skip
the change-filter affordance — the rest of the flow is unchanged.
Read the file(s), then extract into the DATA schema described in
assets/tldr.template.html (a single JSON object the template renders). The
what to extract and the flag taxonomy differ by artifact type:
spec.md, follow references/extraction-spec.md.plan.md, follow references/extraction-plan.md.Both reference files define exactly which fields to pull and which flags to raise. Read the relevant one(s) before extracting. Do not invent content that is not in the source; if a required section is absent, that absence is itself a flag (e.g. a requirement with no acceptance criteria).
Produce both formats (unless the user asked for only one):
assets/tldr.template.html, replace the
/* === DATA PLACEHOLDER === */ block with your populated DATA object, and
write the result. The template is self-contained (no network/build needed) and
handles all rendering, the flag-summary bar, and the "changed in PR" filter.assets/tldr.template.md. This version renders inline in
a GitHub PR comment or file view (GitHub strips styled HTML, so Markdown is the
PR-native surface). Keep it scannable; lead with open questions / flags.Write to a tldr/ directory next to the source (create if missing), or to the
path the user specifies:
specs/<feature>/tldr/spec.tldr.html
specs/<feature>/tldr/spec.tldr.md
specs/<feature>/tldr/plan.tldr.html
specs/<feature>/tldr/plan.tldr.md
When scope is both, you may also emit a combined feature.tldr.html that
includes both sections (the template supports a spec section, a plan section,
or both). After writing, tell the user the file paths and give a one-line summary
of the most important flags found.
Each extracted item may carry zero or more flags. Keep the meanings consistent; the template colors them and counts them in the summary bar.
| flag | meaning |
|---|---|
ambiguous | wording allows multiple readings; not precise enough to implement |
untestable | no measurable / verifiable acceptance criterion |
missing-criteria | a requirement with no acceptance criteria at all |
unanswered | an open question / [NEEDS CLARIFICATION] marker |
mismatch | spec↔plan disagreement (plan does something the spec doesn't ask for, or vice versa) |
uncovered | (when tasks.md is present) a requirement with no covering task |
constitution | conflicts with a rule in constitution.md / Constitution Check |
dependency-gap | depends on something undefined / not yet decided |
changed-in-pr | added or modified by the PR under review |
unanswered, missing-criteria, mismatch, and constitution are high-severity
and must appear at the top of the output regardless of where they occur in the
source.
spec.md / plan.md.Creates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.
npx claudepluginhub qurore/speckit-tldr --plugin speckit-tldr