Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Write a new doc in the right place with the right name. Use when asked to "write a doc", "where should this doc go", "add an ADR", "document this decision", "new spec", or "new feature plan".
.claude/skills/hashgraph-online-author/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-04 | ✗→✓ | ▲ Improved | 170% | 0% |
| case-02 | ✗→✓ | ▲ Improved | 18% | 0% |
| case-03 | ✗→✓ | ▲ Improved | 63% | 0% |
| case-08 | ✗→✓ | ▲ Improved | 41% | 0% |
| case-09 | ✗→✓ | ▲ Improved | 8% | 0% |
Author docs the docflow way: choose category → apply naming → fill template → cross-link. Companion of router (read side) and changelog (history). Templates live in the plugin's templates/ dir; /docflow:init drops them into a repo.
> A doc's filename should tell a teammate what + when without opening it. If it can't, rename.
Direct, tech + business. No filler.
| The doc answers… | Category | Folder | |------------------|----------|--------| | WHAT a feature does (user-facing) | product spec | product-spec/ | | HOW it's built (data flow, API contract, lifecycle) | technical spec | specs/ | | WHY we chose an approach | decision (ADR) | decisions/ | | HOW to do X / a convention / cheat sheet | reference | references/ | | WHAT's planned / status / roadmap | plan | plans/ (features/, hygiene/, upcoming/) | | Current quality / known bugs / audit | review | reviews/ (active/, archive/, bugs/) | | WHAT shipped, by month | changelog | changelog/ — see changelog |
One doc, one category. If it spans two, it's two docs that cross-link.
| Folder | Pattern | Example | |--------|---------|---------| | product-spec/ | NN-topic.md (stable, reading order) | 04-jobs.md | | specs/ | (mmm-yy)-topic.md (dated snapshot) | (apr-26)-tab-system-workflow.md | | references/ | topic.md (stable) | newtable-component.md | | decisions/ | NNNN-title.md (monotonic, never reused) | 0001-url-as-state.md | | plans/features/ | (mmm-yy)-feature-name.md | (apr-26)-create-job-stepper.md | | plans/hygiene/ | (mmm-yy)-topic.md | (apr-26)-codebase-cleanup.md | | plans/upcoming/ | rolling roadmap, no dates | critical.md, now.md, next.md, later.md | | reviews/active/,archive/ | (mmm-yy)-topic.md | (may-26)-tab-system.md | | changelog/ | (mmm-yy).md | (may-26).md |
Rules:
camelCase or snake_case.(mmm-yy)- prefix on dated docs: lowercase 3-letter month + 2-digit year — jan feb mar apr may jun jul aug sep oct nov dec.NN-, NNNN-) for ordered series that are not snapshots — product-spec reading order, ADRs.-feature.md, -spec.md, -doc.md. Add a qualifier only when a sibling would otherwise collide (tab-system-overview + tab-system-qa-guide).(apr-26)-tab-system-*).Don't start specs/plans from blank — generate a draft from the real repo, then verify:
bash scripts/docflow-spec.sh <code-path> → pre-fills files, exports (Architecture), types (Data), paths+verbs (API), hooks (Flow). You group + confirm + write Risks.bash scripts/docflow-plan.sh --days 30 → backlog candidates from TODO/FIXME + git churn. You triage into horizons.Both write drafts marked <!-- auto -->; curate before shipping. Then fill manually where heuristics can't reach:
Each category has a skeleton in the plugin's templates/. Key shapes:
ADR (decisions/NNNN-title.md):
markdown# NNNN — Title > **Status:** proposed | accepted | superseded by [NNNN](...) | deprecated > **Date:** YYYY-MM-DD > **Deciders:** names/handles ## Context — what forced the decision? constraints, prior pain ## Decision — what we chose (one sentence, then detail) ## Consequences — good / bad / what gets harder ## Alternatives considered — each + why rejected
Write an ADR for: cross-cutting choices, non-obvious trade-offs, reversals (supersede the old one — never edit it). NOT for: version bumps, one-file refactors, taste.
Spec (specs/(mmm-yy)-topic.md): header block (Module: / Route: / Branch:), then numbered sections — architecture, data model, API surface, state, edge cases. Plus a Related: block linking plan + review + ADRs.
Feature plan (plans/features/(mmm-yy)-name.md): Status / Owner / Surface header, then ## What shipped (table w/ commit refs) · ## In flight · ## Queued.
Review (reviews/...): Last updated / Scope header, scorecard table, P0/P1/P2 findings.
Bidirectional. The chain that ties a feature together:
product-spec/NN-feature.md (WHAT)
↕
specs/(mmm-yy)-feature.md (HOW) ──► decisions/NNNN-*.md (WHY)
↕
plans/features/(mmm-yy)-feature.md (STATUS)
↕
reviews/active/(mmm-yy)-feature.md (QUALITY)Related: list (plan, review, ADRs).README.md indexes everything — add your new doc to it.[text](<specs/(may-26)-file.md>) — not [text](specs/(may-26)-file.md).
bash scripts/docflow-map.sh <DOCS_ROOT> → updates <DOCS_ROOT>/INDEX.md (the compact path — purpose tree every agent reads first). New doc needs a clear H1 — that becomes its one-liner.README.md index + the folder's own README if it has one.## Update Log or the feature/changelog table.bash scripts/docflow-validate.sh --target <REPO ROOT> and fix validation errors before reporting completion.changelog/ (see changelog).grep -rn "old-name\.md" every cross-link, fix README entries, re-run the link check.bash# link integrity — empty output = all local links resolve bash scripts/check-links.sh <DOCS_ROOT>
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-04 | fail→pass | 6,782 | 7,352 | +8% | 1 | 1 | 0% | 1,237 | 3,341 | +170% | 0 | 0 | — |
case-10 | pass→pass | 10,392 | 4,658 | -55% | 1 | 1 | 0% | 1,561 | 2,882 | +85% | 0 | 0 | — |
case-01 | fail→fail | 21,588 | 17,225 | -20% | 1 | 1 | 0% | 2,401 | 4,152 | +73% | 0 | 0 | — |
case-02 | fail→pass | 25,394 | 22,419 | -12% | 1 | 1 | 0% | 3,749 | 4,431 | +18% | 0 | 0 | — |
case-03 | fail→pass | 18,667 | 12,761 | -32% | 1 | 1 | 0% | 2,367 | 3,863 | +63% | 0 | 0 | — |
case-05 | pass→pass | 16,079 | 6,812 | -58% | 1 | 1 | 0% | 1,861 | 2,837 | +52% | 0 | 0 | — |
case-06 | fail→fail | 7,678 | 5,971 | -22% | 1 | 1 | 0% | 1,199 | 2,442 | +104% | 0 | 0 | — |
case-07 | fail→fail | 7,865 | 4,363 | -45% | 1 | 1 | 0% | 1,222 | 2,601 | +113% | 0 | 0 | — |
case-08 | fail→pass | 13,014 | 4,163 | -68% | 1 | 1 | 0% | 1,908 | 2,691 | +41% | 0 | 0 | — |
case-09 | fail→pass | 23,903 | 13,261 | -45% | 1 | 1 | 0% | 3,947 | 4,277 | +8% | 0 | 0 | — |
case-11 | pass→pass | 6,062 | 3,592 | -41% | 1 | 1 | 0% | 862 | 2,624 | +204% | 0 | 0 | — |
case-12 | fail→pass | 13,028 | 3,702 | -72% | 1 | 1 | 0% | 2,383 | 2,299 | -4% | 0 | 0 | — |
case-13 | fail→pass | 7,718 | 1,961 | -75% | 1 | 1 | 0% | 1,497 | 2,233 | +49% | 0 | 0 | — |
case-14 | fail→pass | 8,650 | 2,809 | -68% | 1 | 1 | 0% | 1,428 | 2,345 | +64% | 0 | 0 | — |
case-15 | fail→pass | 13,062 | 2,628 | -80% | 1 | 1 | 0% | 2,211 | 2,209 | -0% | 0 | 0 | — |
case-16 | fail→fail | 5,229 | 6,949 | +33% | 1 | 1 | 0% | 640 | 3,445 | +438% | 0 | 0 | — |
case-17 | fail→fail | 12,785 | 17,439 | +36% | 1 | 1 | 0% | 1,862 | 5,002 | +169% | 0 | 0 | — |
case-18 | pass→pass | 11,031 | 3,116 | -72% | 1 | 1 | 0% | 1,483 | 2,512 | +69% | 0 | 0 | — |
case-19 | fail→pass | 14,536 | 3,242 | -78% | 1 | 1 | 0% | 1,513 | 2,360 | +56% | 0 | 0 | — |
case-20 | pass→pass | 11,292 | 6,065 | -46% | 1 | 1 | 0% | 1,702 | 2,904 | +71% | 0 | 0 | — |
case-21 | pass→pass | 11,766 | 2,370 | -80% | 1 | 1 | 0% | 1,671 | 2,196 | +31% | 0 | 0 | — |
case-22 | pass→pass | 7,321 | 6,191 | -15% | 1 | 1 | 0% | 1,235 | 2,774 | +125% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted. The headline lift of +45 percentage points is the difference between those two pass rates over the 22 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.