checklist
Skill0 starsChanged 3 months agoMITView on GitHub
Turn a checklist the project maintains into an interactive page, then apply what comes back — render a markdown checklist as a page someone can tick and annotate, parse the changes block they paste into the chat, and edit the source file from it. Use when a project has a checklist document that people work through.
12 other projects use a version of this.
Adopted by
Most recently taken up by
- thistleknot/skillstheir own version, first seen Nov 8, 2026
- Hainrixz/claude-dbtheir own version, first seen Nov 1, 2026
- chrisbrine/checklisttheir own version, first seen Oct 25, 2026
- brianharms/skill-checklisttheir own version, first seen Oct 15, 2026
- mehrad-dm/mastermindtheir own version, first seen Oct 13, 2026
- Mapsui/Mapsuitheir own version, first seen Oct 8, 2026
Other versions12 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 12
- Mapsui/Mapsui★ 1.6ksame name
- unlearndev/skills★ 101same name
- ArvorCo/Relentless★ 98same name
- mehrad-dm/mastermind★ 23same name
- Hainrixz/claude-db★ 22same name
- deciqAI/knowledge-skills★ 13same name
- Huangjiacong1314520/SKILLS★ 4same name
- chrisbrine/checklist★ 1same name
- KazukiShinomiya/sdd-starter★ 1same name
- Nexus-Organization-Infosec/ClaudeSkills★ 1same name
2 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository4 other files it gives its agents.
- articleSkill
- initSkill
- newSkill
- questionnaireSkill
The file
We split this skill into the rules it gives an agent
3 rules. 0 are common, 2 are distinctive, and 1 is very specific to this project.
0
Common
Most of the 9 edited versions we read keep these.
2
Distinctive
This author's own choices. Worth a look.
1
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 36
If .render/ does not exist yet, run /render:init first.
- Distinctive: line 143
if the note describes a step that is now wrong, the fix is to reword the instruction — and say so, because rewording it costs that item its …
- Distinctive: line 146
Never drop a note because you could not place it.
“Common” is measured: kept by at least 6 in 10 of the 9 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Checklist pages on the render engine
When
The project maintains a checklist as a markdown file — a release checklist, an onboarding list, a set of steps somebody works through — and somebody has to actually work through it.
The loop is: document in → page out → person ticks and annotates → changes block in → the document gets edited. You own the last step; the plugin owns everything before it.
This is the opposite data flow to /render:questionnaire. A
questionnaire's spec is written for the renderer and the page collects new
data. Here the file already exists, belongs to the project, and stays the truth;
the page is a view of it and hands back a diff.
What this plugin does not decide
The plugin never writes to the source file. It is a renderer: it supplies the fingerprints, the parsed diff and the drift check. Applying them is yours, because that is where the change gets a review step, and because a renderer with write access to a project's documents is a different tool with different failure modes.
It also does not decide what belongs on a checklist, when one is due, or where a note ends up. That is the consuming project's business.
1. Scaffold the kind page — once per project
If .render/ does not exist yet, run /render:init first.
A checklist family is one page folder plus wherever the documents already live. The page is three lines and never changes again:
# .render/pages/checklist/__init__.py
"""Checklists — one page per markdown file in docs/checklists/."""
TITLE = "Checklist"
KIND = "checklist"
SOURCES = "docs/checklists/*.md" # glob relative to ROOT — one output per matchSOURCES is the lifecycle. Every document that matches gets a page; move one
out of the glob and --prune deletes the page that belonged to it.
Point the glob at where the documents already are. Do not move them into
.render/ — they are the project's content, they existed before the
page, and somebody who never renders anything still has to be able to read them.
2. Leave the document alone
The whole point is that it stays a document, and ordinary markdown already works:
##is a group,- [ ]and- [x]are items,~~…~~is obsolete- indented lines under an item are its detail;
path:anddue:are annotations - everything else is prose and renders where it stands
Optional frontmatter adds title, deadline, deadline-label,
handback-marker and exclude. Add them if they help. Do not restructure a
file to suit the renderer — if it renders badly, that is worth knowing about
the file, or about the renderer.
A document that breaks a structural rule is refused with every finding printed
at once — fix what the findings name. Open
${CLAUDE_PLUGIN_ROOT}/docs/spec-checklist.md only when a finding or an
advanced feature needs the full grammar.
Two things are worth telling the person whose file it is:
excludekeeps a block off the page while it stays in the file — for content that is a record rather than a task. It is opt-in and per block.- Two items that read exactly the same in one group are refused, because their state could then only be told apart by position. That is a defect a reader hits too.
3. Render
python3 .render/render.py --check
python3 .render/render.py --page checklist:<file-stem> # just this one
python3 .render/render.py --prune # drop orphaned pagesA document that fails validation is not rendered — every finding is printed and the run exits non-zero, while every other document still renders. Fix the document; never work around the validator.
Then tell the person where the file is. It is one self-contained file: it works offline, and what they tick stays in their browser until they copy it out.
4. Apply what comes back
The person pastes the changes block. Save the paste to a file (or pipe it in) and let the shipped parser do the mechanics — never parse it by eye:
python3 "${CLAUDE_PLUGIN_ROOT}/scripts/handback.py" paste.txt --source docs/checklists/<file>.mdThe script checks based-on: against the file's current fingerprint, joins
every item id, and prints the split that matters:
edits (n)— apply verbatim with Edit. Exact line edits,L<line>: old → new; they are the whole mechanical half.judgment (n)— yours. Notes, cleared notes, anything editorial the script refuses to turn into an edit — see below. This is also where the two person-states land:na("does not apply" — an affirmative answer) anddeferred("later"). The checkbox syntax cannot hold either, so decide per item — an n/a item is usually struck (with the reason) or annotated; a deferred one usually stays open, perhaps with adue:line. Propose; never resolve silently.control-mismatch:/unmatched:/warning:— the block and the file disagree somewhere short of drift. Read them before applying anything.
Exit 3 is drift — the file changed while the page was open. Stop and ask. Say what changed in the file since, and offer to re-render so the person can redo the affected part. Never reconcile it silently: a diff forced onto a document that moved underneath it is how somebody's edit disappears.
Exit 2 means no usable block — usually a truncated copy. Ask for the paste
again. (The grammar itself lives in ${CLAUDE_PLUGIN_ROOT}/docs/handback.md;
you should not need it unless the report surprises you.)
Notes are the interesting part
A tick says a task was done. A note says it was done differently, or could not be done, or should not have been on the list. Where it goes is the project's decision, and it is usually not the checklist:
- it may belong in the ticket, the log, or the conversation
- a note on an item still open is the signal to consider striking that item — the person is saying the instruction did not survive contact with reality. Propose it; do not do it silently. Marking an item obsolete changes what the document says, which is why the browser cannot do it either.
- if the note describes a step that is now wrong, the fix is to reword the instruction — and say so, because rewording it costs that item its tick
Never drop a note because you could not place it. Quote it back.
5. Iterating
Editing the document re-renders only its page, and what people have ticked survives — state is keyed by a fingerprint over the instruction text alone. Adding an annotation, adding detail, reordering items, renaming a heading and striking something out all cost nothing. Rewording an instruction costs that one item its tick, on purpose: the page can no longer honestly claim the tick was about this text.
Say so when you reword something for somebody.
Never
- Never let the plugin write to the source document, and never add a step that does it automatically. The review is the point.
- Never apply a diff whose
based-on:does not match. Re-render and ask. - Never rewrite a maintained document to render more tidily. Prose in an awkward place is rendered where it stands; that is a feature of the kind.
- Never copy the checklist kind into a project. It lives in the engine and
is imported; a copy forks on day one and never receives a behaviour fix. A
project that needs a page type the plugin does not ship writes its own kind in
.render/kinds/<name>.py— a different thing from forking this one. - Never write project-side CSS or JS for these pages. The components, the
state kit and the copy mechanics are in the design system; anything missing
gets added there and documented in
design-manual.mdfirst (6b and 11).
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

