Skip to content
Development
Skill

/squid-clean-docs

Strip redundancy from prose — docs, READMEs, code comments, docstrings — keeping behaviour identical.

BOOST
From plugin
squid
20515 skills5 agents
Install
$ npx -y skills add iusztinpaul/squid --skill squid-clean-docs --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/squid-clean-docs

Context preview

The summary Claude sees to decide when to auto-load this skill.

Strip redundancy from prose — docs, READMEs, code comments, docstrings — keeping behaviour identical.

SKILL.md

squid-clean-docs.SKILL.md
name: squid-clean-docs
disable-model-invocation: true
argument-hint: "[scope-path] (default: whole repo)"
description: >-
  Strip redundancy from prose — docs, READMEs, code comments, docstrings — keeping behaviour
  identical.

Clean docs — remove words, keep behaviour

You are the **cleaner**. You delete redundant prose — markdown docs, code comments, docstrings; you do **not** touch executable code. Zero behaviour diff is the contract — if a deletion could alter runtime, it is out of scope.

`$ARGUMENTS` is an optional scope path (`docs/`, `src/ingest/`). Empty means the whole repo.

When NOT to use — never touch these without explicit opt-in

| Excluded | Why | | -------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | | `docs/adr/`, `docs/notes/` | ADRs are immutable historical records; notes are the user's. | | `CHANGELOG*`, `LICENSE*` | Append-only / legally load-bearing. | | `.github/` | Issue/PR templates and workflow files are functional surface, not reader prose. | | Generated + vendored trees (`node_modules/`, `.venv/`, `dist/`, `vendor/`, `*_pb2.py`) | Not authored; regenerated on build. | | Linter/type directives (`# noqa`, `# type: ignore`, `# pragma: no cover`) | These are code, not comments. | | Doctest examples (`>>>` blocks in docstrings) | Executable tests, not prose. |

Step 1 — Confirm scope

State the default exclusion list above, then ask (one round, `AskUserQuestion`): **what else is off-limits?** Do not scan until answered.

Step 2 — Apply the keep/delete test

Read every candidate file whole — never delete on a filename or a skim; a comment can only be judged next to the line it sits on.

**A comment or docstring survives only if it states something the code cannot.** A constraint, a non-obvious _why_, a limit, a workaround and its issue link. If it narrates _what_ the next line does, it is noise — delete it.

| Delete | Keep | | -------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | | `# increment the counter` above `i += 1` | `# Chunk at 200 tokens — the embedding model truncates above 256.` | | A docstring restating the signature: `"""Takes a user_id and returns a User."""` | `"""Returns None for soft-deleted users; callers must handle it (see #412)."""` | | `# TODO: refactor this someday` (no owner, no issue) | `# TODO(#88): drop once the v1 endpoint is retired.` | | `# Fixed the bug where...` — history belongs in git | `# Retry 3×: the upstream API 502s under ~5% of cold starts.` |

**Docs:** a section dies when it duplicates a section that lives elsewhere. Keep exactly one home for each idea; replace the copy with a one-line cross-reference. A README that repeats `CONTRIBUTING.md`'s install steps loses them and links instead.

**Tasks/templates:** collapse repeated task files into one template plus the deltas; keep the template.

Step 3 — Plan of attack (the output artifact)

Print one table in chat. Do not write it to disk unless the user asks.

| File | What goes | Rule (Step 2) | ~Lines | | --------------------- | --------------------------------------------- | ----------------- | ------ | | `src/ingest/chunk.py` | 4 narrating comments, 1 signature docstring | restates code | −12 | | `README.md` | install section duplicating `CONTRIBUTING.md` | one home per idea | −18 |

Stop and wait for explicit approval. Do not edit before it.

Step 4 — Execute

Apply the approved plan. Commit one category at a time (`comments`, `docs`) so any revert is surgical.

Step 5 — Verify

Behaviour must be provably unchanged before hand-off:

  • Test + lint suite green (`make pre-commit && make unit-tests`, or the project's equivalent) —

docstring deletions can break doctests and doc builds.

  • `git diff --stat` touches only prose and docstrings — **no logic lines**.
  • No broken internal links: every path, heading, or anchor you deleted or moved has no remaining

referrers.

Anything red: revert that commit, do not "fix forward".

Step 6 — Hand-off

Report lines removed per category and the verify result. If the README was reorganised, say what moved where.

Notes on shape

  • **Removing beats rewriting.** Prefer deleting a paragraph to shortening it.
  • If the caveman plugin is installed, run this first and `/caveman-compress` after — this decides what

exists, that compresses wording.

Read more
Ships withsquid

The Software Factory

Get the whole plugin

Other skills on squid.