Skip to content
Back to skills

Keel Tidy

ASecurity

Layout-hygiene ritual — sweep stray/obsolete files (loose root scripts, dead code, logs, stale scratch), attach EVIDENCE to each (references incl. reports/ citations, test collection; age never decides alone), then triage with approval — module-ize · delete (git is the archive; deletes are a separately-confirmed list, never inside a blanket yes) · scratch/archive/ · gitignore the class. Never touches memory files or the reports/ evidence trail.

  • 9 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added September 5, 2026
ai-agentsgogit

Security analysis

A100/100

Scanned September 5, 2026

npx -y skills add muratsilahtaroglu/claude-code-starter-kit --skill keel-tidy --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Keel Tidy?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Keel Tidy
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/muratsilahtaroglu-keel-tidy/badge)](https://www.skillsdirectory.com/skills/muratsilahtaroglu-keel-tidy)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: keel-tidy
description: Layout-hygiene ritual — sweep stray/obsolete files (loose root scripts, dead code, logs, stale scratch), attach EVIDENCE to each (references incl. reports/ citations, test collection; age never decides alone), then triage with approval — module-ize · delete (git is the archive; deletes are a separately-confirmed list, never inside a blanket yes) · scratch/archive/ · gitignore the class. Never touches memory files or the reports/ evidence trail.
---

# /keel-tidy — the §3.10 sweep: no file left unanswered

When: layout drift is felt (loose files at the repo root, stray one-off scripts, logs/caches in the
tree, `scratch/` overflowing), at a phase boundary, or every ~5 sessions as hygiene. This is the
ritual arm of rules.md §3.10 — "no file of unclear purpose is left in the main source tree". It is
NOT `/keel-distill`'s job: distill curates the MEMORY files (§9 caps), tidy curates the FILE TREE
(§3 layout) — different axis, different risk, and a file sweep bolted onto a cap rotation would
derail both.

## 1. Sweep — collect candidates deterministically
- **Repo-root files outside the discipline scaffold** (CLAUDE.md · rules.md · HANDOVER/LESSONS/TASKS/
  PLAN · README/LICENSE/CONTRIBUTING · Makefile/pyproject/lockfiles · dotfiles) — §3.10: the root
  holds scaffold only; application code lives under `src/`.
- **Runtime junk anywhere:** `*.log` · `*.tmp` · `__pycache__/` · `.pytest_cache/` · editor swap
  files · stray outputs sitting outside `reports/`.
- **`scratch/` items NOTHING CITES.** The criterion is citation, NOT age: a probe named by a
  `reports/` note, ADR or doc is that claim's permanent EVIDENCE (§10.40) and stays put however old it
  is (field case: a probe untouched for 18 days was the independent measurement behind that week's
  decision). Check BOTH directions — `grep -rl "scratch/<name>" reports/ docs/ *.md` for path
  citations, then `grep -rl "<name>" reports/` for the report whose FILENAME carries the id; a
  path-only check reported a live folder as dead on a real project. Also flag any scratch file
  missing its 1-line purpose comment (§3.10) — that one IS a per-file check.
- **Source files nothing references:** not imported (grep the module name across `src/` + `tests/`),
  absent from Makefile/CI, not collected by the test runner, no `docs/architecture.md` row.

**Off-limits (other jurisdictions):** memory files + `docs/adr/` (distill / the owner) · `reports/`
(the §2.8 evidence trail — prune only on an explicit ask) · `research/` findings (§8.30) ·
`tests/fixtures/` golden sets (§10.39) · paths already git-ignored.

## 2. Evidence per candidate — never vibes
One line each: referenced-by (imports / Makefile / CI / docs / **`reports/` citations**) ·
test-collected? · tracked or untracked · last git touch — recorded LAST and never decisive on its own.
A test that LOOKS dead may be a regression fixture guarding a fixed bug (check `tests/fixtures/` and
the tests-folder README why-lines), and a scratch probe that looks abandoned may be a permanent
report's evidence. **Watch the grep itself:** `\b` inside `grep -E` silently matches NOTHING on some
platforms — a citation sweep using it returned a clean, plausible, entirely wrong "0 references"
(reports/2026-08-18-scratch-layout-audit.md). A zero-reference result is a reason to re-check the
instrument before it becomes a delete list (§10.37).

## 3. Triage table → user approval (nothing moves without it)
- **Belongs in the tree** → move under `src/`/`tests/` + an `architecture.md` row (§1.6).
- **Obsolete + TRACKED** → **DELETE** — git history IS the archive; moving a dead tracked file into an
  "archive" folder relocates clutter instead of removing it.
- **Unsure / maybe-later / UNTRACKED experiment** → `scratch/archive/<topic>/` with a 1-line purpose
  header (the §3.10 triad's middle door).
- **Runtime junk** → delete AND add the PATTERN to `.gitignore` so the class never returns (§10.39:
  fix the class, not the instance).
Present ONE table — file · evidence · verdict · action. **Deletions are their own separately-confirmed
list:** a blanket "apply all" NEVER covers delete rows — read the delete list back and get an explicit
yes on it (per row on request); anything not explicitly confirmed is NOT deleted (it stays, or drops to
`scratch/archive/` if the user prefers). State recoverability honestly in the table: a tracked delete
is restorable (`git log --diff-filter=D` → `git checkout <sha>^ -- <path>`); an UNTRACKED delete is
gone for good — flag those rows. Apply only approved rows, never silently.

## 4. Cascade + verify + record
- Cascade every move/delete: grep the old path across `*.md` (README, docs/, folder READMEs),
  Makefile, CI — update or remove every reference (§0a cascade discipline).
- `make test` after moves (imports break silently); hooks/CI still green.
- Record: HANDOVER (a) one-liner (`keel-tidy: N moved · M deleted · K ignored`), `architecture.md`
  rows for moves, and a LESSONS `[rule]`/`[gotcha]` line when a junk class earned a `.gitignore`
  pattern. Commit with approval (§1.3).

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.