Skip to content
Back to skills

Find Wasted Code

ASecurity

Use ONLY when the operator runs "/find-wasted-code" (or explicitly asks to "scan the repo for dead-end tool calls / broken links / missing helpers / footgun configs / silent push-through"). Statically scans THIS repo for friction footguns and writes a tracked report to docs/wasted-code/report.md. Manual-trigger ONLY — do NOT auto-invoke; the skill carries disable-model-invocation and no hook wires it. Read-only except the one report write. Findings are review candidates, never auto-fixes. Do ...

  • 9 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added September 13, 2026
ai-agentspythongoshellbashgit

Works with

  • claude code
  • cursor
  • cli

Security analysis

A100/100

Pro scans all 3 files and shows the line behind each finding

Scanned September 13, 2026

npx -y skills add fusebase-dev/fusebase-flow --skill find-wasted-code --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Find Wasted Code?

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

Security grade badge for Find Wasted Code
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/fusebase-dev-find-wasted-code/badge)](https://www.skillsdirectory.com/skills/fusebase-dev-find-wasted-code)

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: find-wasted-code
description: Use ONLY when the operator runs "/find-wasted-code" (or explicitly asks to "scan the repo for dead-end tool calls / broken links / missing helpers / footgun configs / silent push-through"). Statically scans THIS repo for friction footguns and writes a tracked report to docs/wasted-code/report.md. Manual-trigger ONLY — do NOT auto-invoke; the skill carries disable-model-invocation and no hook wires it. Read-only except the one report write. Findings are review candidates, never auto-fixes. Do NOT use for token/transcript economy (/token-waste-audit), for process ceremony (/find-wasted-effort), or for CLI/Flow drift health (/fusebase-health).
disable-model-invocation: true
source_inspiration: conceptual-only
license_status: clean-room-original
fusebase_flow_version: "4.5"
risk_level: low
invocation: manual
expected_outputs:
  - a Mode-A chat summary plus a tracked report at docs/wasted-code/report.md
  - per-rule findings (W1-W4) each labelled broken/confirmed or candidate/inconclusive, evidence + suggested fix + why-it-might-be-intentional
  - a Coverage section (W5 swallow baseline, unresolved references, skipped inputs) — silence is auditable, not clean
related_workflows:
  - eight-phase-flow.md
hook_dependencies:
  - none
---

# Find Wasted Code (static friction-footgun audit)

The **active, static inverse of a papercuts log**. A papercuts tool is *passive* —
an agent must notice friction and file it. This audit *scans the repo* for the
same north-star footguns and writes them down, so nobody has to notice first:

> Agents hit friction constantly — **dead-end tool calls, broken links, missing
> helpers, footgun configs — and silently push through without telling anyone.**

It is the third audit sibling, on a distinct axis:

| | `/find-wasted-code` (this) | `/find-wasted-effort` | `/token-waste-audit` |
|---|---|---|---|
| Axis | code-per-friction (footguns) | process-per-outcome (ceremony) | tokens-per-rule (consumption) |
| Inputs | repo source: docs, skills, commands, hooks, settings | Flow artifacts on disk | Claude transcripts |
| Output | **`docs/wasted-code/report.md` (TRACKED)** | `state/audit/<date>.md` (gitignored) | `state/audit/<date>.md` (gitignored) |
| Trigger | **`/find-wasted-code` ONLY (never auto)** | `/find-wasted-effort` (auto-invocable) | `/token-waste-audit` |

## How to run

1. `python hooks/local/find-wasted-code.py` (if `python` is missing, `python3 …`). Optional: `--print` (summary only, no write), `--date YYYY-MM-DD` (deterministic in-report date), `--selftest` (per-rule golden fixtures), `--root PATH`.
2. Read the report it wrote (`docs/wasted-code/report.md`): the per-rule findings + the Coverage section.
3. Interpret every row as a review **candidate**, never a verdict or an auto-fix. `broken`/`confirmed` = the target is provably absent from repo state; `candidate`/`inconclusive` = needs human judgment. Ambiguous references are listed under **Coverage → Unresolved**, never as defects.
4. Output a Mode-A chat summary: totals by rule/severity, the W5 baseline counts, and the top confirmed `broken` items. Do not paste raw file contents.
5. The report is **tracked** (papercuts philosophy — it shows up in diffs). It is redaction-safe by construction and will not trip the pre-commit secret scanner. Fixes are the operator/PO's call — this audit surfaces, it does not mutate.

## The rules (one per north-star category)

> Per-rule signatures, the conservative confirmed-vs-coverage contract, and the false-positive classes: `references/rule-catalog.md` and `references/false-positive-examples.md`. Cite them; don't restate.

| # | Rule | What it confirms (`broken`) | What it leaves as Coverage |
|---|---|---|---|
| W1 | Dead-end tool/script references | a root-explicit interpreter/`./`-run path (`bash hooks/local/<name>.sh`) that is absent | cwd-ambiguous paths, placeholders, design docs (specs/backlog excluded) |
| W2 | Broken internal links | a Markdown link whose path is absent, or whose anchor no heading yields (target slug-confident) | non-Markdown anchors, slug-ambiguous targets (→ `inconclusive`), external/placeholder dests |
| W3 | Missing helpers | a shell `source` of a static root-explicit script that is absent | `related_workflows`/`hook_dependencies` (ambiguous field shape) → unresolved |
| W4 | Footgun config | a settings hook `command` wired to a handler that does not exist (silently never fires) | dead policy keys (no stdlib YAML) — future |
| W5 | Silent push-through | — (no confirmed findings in v1) | swallowed-error **baseline** (broad/trivial `except`; shell `2>/dev/null`/`\|\| true`/`\|\| return 0`) as review candidates |

## Conservative by construction (load-bearing)

A finding is `confirmed` ONLY when provable from repository state. Everything
ambiguous is Coverage, never a defect — so the audit never blocks or annoys the
operator with a false positive. This is the same "don't block the human operator"
floor the framework holds everywhere. W5 is deliberately a *measured baseline*,
not a finding list: this repo intentionally fails open/closed in many places
(best-effort cleanup, fail-closed scanners), so generic swallow-detection cannot
be low-false-positive — the operator reviews the baseline and annotates
intentional swallows with `find-wasted-code: ignore W5 — <reason>`.

## Trigger isolation

- **Claude Code:** hard guarantee via `disable-model-invocation: true` — the model cannot auto-load this skill; only `/find-wasted-code` runs it.
- **Other adapters (Codex/Cursor/Gemini):** advisory — the narrow description above will not match ordinary work, and no hook wires the analyzer. Invoke by name or `/prompts:find-wasted-code`.
- No lifecycle hook (SessionStart/Stop/PostToolUse/UserPromptSubmit) references this skill or its analyzer. It is inert until the operator triggers it.

## Read-only-to-the-project

The analyzer writes ONLY `docs/wasted-code/report.md`, containment-checked to
inside the repo, symlink/hardlink-refusing, atomic, and sentinel-guarded (it will
not overwrite a hand-authored file lacking its generated-file sentinel). No
memory, overlay, spec, policy, or source edits. Fixes are proposed, never applied.

## Non-Claude surfaces

Invoke the `find-wasted-code` skill by name and run the analyzer directly
(`python hooks/local/find-wasted-code.py`); it is stdlib-only and
surface-independent. Metrics come from repo state, so there is no transcript
dependency.

## Clean-room note

Original Fusebase Flow content. Designed after reviewing public agent-friction
and self-improvement projects (papercuts, agentlogs, friction-logging-toolkit,
self_improving_coding_agent, opencode-autolearn) for *concepts only* — the
north-star framing and severity vocabulary. No third-party code, prompts, skill
files, or hook scripts are copied; the analyzer, rule contract, and report format
are clean-room original. See `docs/source-map.md`.

Files in this skill

  • SKILL.md6.8 KB
  • references/false-positive-examples.md3 KB
  • references/rule-catalog.md6.2 KB

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…