Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Run a multi-agent review of code comments and markdown documentation for unnecessary content, then fix the issues. Covers what-restating comments, name-mirroring doc comments, status-update prose, and other documentation noise. Use when the user asks to "simplify docs", "simplify documentation", "clean up comments", "clean up docs", "review documentation", "strip unnecessary comments", "reduce doc noise", or "run simplify-docs".
.claude/skills/tobihagemann-simplify-docs/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-05 | ✗→✓ | ▲ Improved | 125% | 0% |
| case-14 | ✗→✓ | ▲ Improved | 56% | 0% |
| case-16 | ✗→✓ | ▲ Improved | 261% | 0% |
| case-18 | ✗→✓ | ▲ Improved | 67% | 0% |
| case-09 | ✓→✗ | ▼ Worse | 98% | 0% |
Review code comments and markdown documentation for unnecessary content, then fix the issues.
Determine what to review:
git diff --cached), use that.git diff, git diff --cached, git diff HEAD) based on the current git state. When the branch is an open pull request, resolve its base with gh pr view --json baseRefName --jq '.baseRefName', run git fetch origin <base-branch>, and diff against origin/<base-branch>...HEAD: a local branch of the same name can sit behind the remote, which puts the merge base before an already-merged pull request and pulls merged work into the scope. If there are no git changes, default to a full-tree sweep of source files plus top-level markdown.State the resolved file list before launching the agents: add --name-only to a diff command, or list the files for a file or directory scope.
Launch both agents below with spawn_agent / wait_agent using inherited model defaults, issuing every call in one batch. Do not issue one and await its result before issuing the rest. Pass the scope from Step 1 to each agent. Every sub-agent's prompt must direct it to treat the shared working tree and its git index as read-only and to reach its findings by reading and reasoning; fixes happen in Step 3. HEAD stays where it is: read other refs with git show <ref>:<path> rather than git checkout or git switch.
Confine the sub-agent's prompt to what to review, plus the conventions and factual properties that bear on it. Pass a property of the existing prose as a fact the sub-agent weighs, such as "the file documents non-obvious third-party behavior". Leave out any statement that tells the sub-agent what verdict to reach about that property, such as "the file is deliberately comment-dense, judge against that established bar", because it binds the sub-agent to accept the very property the review exists to assess.
Both sub-agent prompts must also carry the readability criteria below and the constraint that follows them, applied to the prose that survives that agent's own list:
- **Term** — description label separator is not a chain.Every split above keeps its connectives. Leave clauses joined when their relationship is the point (cause and effect, condition and consequence, contrast, qualification, scope) and separating them would make the reader rebuild the connection.
Review code files in scope. Beyond the auto-loaded instruction files, walk each directory that is an ancestor of a reviewed file, from the project root down, and read its AGENTS.override.md when one is present, otherwise its AGENTS.md — a directory's file governs only the files at or below it, and an override replaces that directory's AGENTS.md rather than adding to it. Flag a comment when it misdescribes the code, or when it adds no information beyond what the code already says:
Keep these: comments that capture a load-bearing constraint the code itself cannot express — a hidden constraint or invariant, a workaround for a specific bug (ideally with a reference), a non-obvious performance characteristic, a pointer to a spec or RFC section, or behavior that would surprise a future reader and lead them to "fix" working code. Greenfield test: would you write this comment if the code had been greenfield from day one? Keeping a comment and finding it accurate are separate judgments: a comment that captures a real constraint still gets corrected when it describes that constraint wrongly.
For each finding, propose: delete it, correct it, tighten to the load-bearing WHY, restructure it for readability, or flag a refactor that would make the comment unnecessary.
Review markdown files in scope (READMEs, AGENTS.md, docs/, contributor guides). Flag passages that add no information beyond what the reader can derive from current state:
Keep these: passages that explain motivation, capture constraints or tradeoffs the code can't express, document interfaces meant for outside readers, or record decisions whose rationale would otherwise be lost.
For each flagged passage, propose: delete it, tighten it, restructure it for readability, or rewrite it as timeless current-state prose.
Wait for both agents to complete. Aggregate their findings, then apply each fix directly, skipping false positives. When uncertain whether a comment captures a non-obvious WHY, keep it.
When the scope is a diff, confine fixes to prose the changeset authored or falsified. Prose the change left both untouched and accurate stays as it is, however badly it reads.
Report the outcome as a table, one row per finding, keeping every cell to a single line:
| File | Finding | Outcome | |------|---------|---------|
Where Outcome is one of:
Keep the report to the table. When the table would be empty, report one line stating the docs were already clean instead.
Then call update_plan to mark this step completed and continue with the next step of the active workflow.
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-03 | fail→fail | 4,538 | 5,229 | +15% | 1 | 1 | 0% | 328 | 2,525 | +670% | 0 | 0 | — |
case-01 | fail→fail | 21,339 | 48,514 | +127% | 1 | 1 | 0% | 3,177 | 2,482 | -22% | 0 | 0 | — |
case-02 | fail→fail | 4,265 | 4,870 | +14% | 1 | 1 | 0% | 190 | 2,460 | +1195% | 0 | 0 | — |
case-04 | fail→fail | 12,344 | 6,052 | -51% | 1 | 1 | 0% | 2,154 | 2,637 | +22% | 0 | 0 | — |
case-05 | fail→pass | 7,536 | 7,121 | -6% | 1 | 1 | 0% | 1,491 | 3,356 | +125% | 0 | 0 | — |
case-06 | pass→pass | 6,883 | 1,614 | -77% | 1 | 1 | 0% | 1,248 | 2,551 | +104% | 0 | 0 | — |
case-07 | fail→fail | 6,315 | 3,666 | -42% | 1 | 1 | 0% | 1,186 | 2,903 | +145% | 0 | 0 | — |
case-08 | pass→pass | 6,017 | 3,466 | -42% | 1 | 1 | 0% | 1,161 | 3,001 | +158% | 0 | 0 | — |
case-09 | pass→fail | 9,166 | 26,809 | +192% | 1 | 1 | 0% | 1,480 | 2,927 | +98% | 0 | 0 | — |
case-10 | fail→fail | 9,102 | 7,692 | -15% | 1 | 1 | 0% | 1,640 | 3,199 | +95% | 0 | 0 | — |
case-11 | pass→pass | 21,104 | 5,707 | -73% | 1 | 1 | 0% | 1,593 | 2,802 | +76% | 0 | 0 | — |
case-12 | fail→fail | 6,028 | 6,206 | +3% | 1 | 1 | 0% | 1,076 | 2,774 | +158% | 0 | 0 | — |
case-13 | pass→pass | 9,571 | 1,671 | -83% | 1 | 1 | 0% | 1,508 | 2,550 | +69% | 0 | 0 | — |
case-14 | fail→pass | 11,102 | 3,543 | -68% | 1 | 1 | 0% | 1,882 | 2,935 | +56% | 0 | 0 | — |
case-15 | fail→fail | 11,985 | 7,286 | -39% | 1 | 1 | 0% | 2,045 | 3,085 | +51% | 0 | 0 | — |
case-16 | fail→pass | 4,205 | 3,376 | -20% | 1 | 1 | 0% | 806 | 2,911 | +261% | 0 | 0 | — |
case-22 | fail→fail | 3,123 | 7,698 | +146% | 1 | 1 | 0% | 344 | 2,841 | +726% | 0 | 0 | — |
case-17 | pass→pass | 8,436 | 22,455 | +166% | 1 | 1 | 0% | 1,590 | 3,241 | +104% | 0 | 0 | — |
case-18 | fail→pass | 9,574 | 5,045 | -47% | 1 | 1 | 0% | 1,869 | 3,117 | +67% | 0 | 0 | — |
case-19 | fail→fail | 12,961 | 2,746 | -79% | 1 | 1 | 0% | 2,170 | 2,740 | +26% | 0 | 0 | — |
case-20 | fail→fail | 10,239 | 5,627 | -45% | 1 | 1 | 0% | 2,174 | 2,501 | +15% | 0 | 0 | — |
case-21 | pass→fail | 18,813 | 6,465 | -66% | 1 | 1 | 0% | 3,781 | 2,722 | -28% | 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, and 13 counted toward the lift figure. The other 9 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +9 percentage points is the difference between those two pass rates over the 13 comparable cases. 4 cases got worse with the skill loaded, and they are included in that figure.
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.
| Model | Method | Date | Lift |
|---|---|---|---|
| gemini-3.6-flash | verified | 8/21/2026 | 0% |
Other measured skills in the registry, with their headline benchmark lift.