Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Use when auditing repo hygiene in any codebase — file layout, git history, config sprawl, ignore contracts, open-source readiness. Assess by default, fix on request; treats the repository as a product whose users are contributors.
.claude/skills/automagik-dev-repo-hygiene/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-05 | ✗→✓ | ▲ Improved | 69% | 0% |
| case-08 | ✗→✓ | ▲ Improved | 61% | 0% |
| case-12 | ✗→✓ | ▲ Improved | 31% | 0% |
| case-13 | ✗→✓ | ▲ Improved | 11% | 0% |
| case-18 | ✗→✓ | ▲ Improved | 4% | 0% |
Runtime syntax: invoke the plugin copy through the active runtime's owner-qualified skill selector; use a bare selector only when intentionally selecting a user-tier copy (a separately installed personal copy; Genie no longer seeds this tier). Cross-skill prose below uses bare names as portable semantic routes; the orchestrator resolves the selector for the active runtime.
This lane audits a repository as a product whose users are contributors — its layout, history, and configuration either invite people in or quietly turn them away. Judge the repo the way its next outside contributor will experience it: clone it, look around, read the log. Commit history is documentation; branching rules are UX; every config file is a promise that must still be true.
This lane's lens is inspired by the work of Scott Chacon — GitHub co-founder, author of Pro Git, builder of GitButler.
Assess and report by default. Apply changes only when the invocation explicitly asks (e.g. "fix", "clean up", "apply"). When you spot a finding outside this lane (architecture, security, tests), name it in one line as a handoff to the relevant lane skill under skills/ — do not investigate it yourself. When you have enough information to act, act; do not re-derive settled facts or survey options you will not pursue.
Never judge against generic convention when the repo states its own. Before any verdict, read what exists of: CLAUDE.md / AGENTS.md, README, CONTRIBUTING, the package manifest, .gitignore, git hook tooling (husky, pre-commit, commitlint or equivalents), and CI config. These define the repo's intended contracts — your job is to find where reality has drifted from them, and where a contract is missing entirely. Deliberate tradeoffs documented there (bot commits, generated files kept on purpose, submodule workflows) are design, not defects.
Genie-framework repos: if .genie/ exists, its contract is: wishes/, brainstorms/, and INDEX.md are git-tracked; genie.db (and WAL/SHM siblings) must be ignored. Verify with git check-ignore and git ls-files .genie/.
Repo profile — recall, verify, persist. Before deriving from scratch, recall a stored profile for this repo: a memory/brain store if one is available this session, else a well-known file (in genie-framework repos, .genie/repo-profile.md). For this lane the profile records the ignore contracts, config-to-enforcement map, commit conventions, and documented tradeoffs. Recalled anchors are hypotheses, not truth — spot-check them against current code and report drift as a finding. After the audit, persist what discovery learned back to the store: update rather than duplicate, delete what proved wrong.
Profile write boundary. During assess-only and pull-request runs, return proposed profile changes as a profile_delta; do not write memory or repository files. Persist a profile only when the user explicitly asks.
git ls-files at top level plus ls for untracked clutter. Flag stray root files, tracked generated files, and ignore-contract violations both ways. Done when every top-level entry has a verdict: earns its place / sprawl / misplaced.git check-ignore -v against local-state and build-artifact paths; git status --porcelain for leakage. Done when each contract from discovery is confirmed or broken with evidence.git log --oneline -50: commit-convention conformance, bot-to-human ratio, whether human messages explain why; sample git log --stat for accidental large binaries or secrets. Done when history quality fits one sentence with examples.Every claim traces to a command output from this session; anything unchecked is stated as unchecked, not implied covered. Failed or erroring checks are reported with their output.
Lead with a one-sentence verdict on overall hygiene. Then findings ranked by cost-to-the-next-contributor, each with evidence (command + result or file path), why it matters, and the concrete action — precise enough to execute verbatim on ask. Close with cross-lane handoffs. In a genie-framework repo, use CRITICAL/HIGH/MEDIUM/LOW for finding severities and SHIP/FIX-FIRST/BLOCKED only for the overall verdict and offer — without starting it — to crystallize the top findings into a wish via wish.
.genie/) mix tracked docs and ignored databases on purpose — verify against the framework's contract, not against "dotdirs shouldn't be tracked."| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 9,674 | 7,333 | -24% | 1 | 1 | 0% | 785 | 1,722 | +119% | 0 | 0 | — |
case-02 | fail→fail | 6,032 | 4,923 | -18% | 1 | 1 | 0% | 269 | 1,574 | +485% | 0 | 0 | — |
case-03 | fail→fail | 9,466 | 6,303 | -33% | 1 | 1 | 0% | 642 | 1,585 | +147% | 0 | 0 | — |
case-09 | pass→pass | 4,310 | 2,985 | -31% | 1 | 1 | 0% | 724 | 1,764 | +144% | 0 | 0 | — |
case-04 | fail→fail | 15,663 | 7,340 | -53% | 1 | 1 | 0% | 2,531 | 1,747 | -31% | 0 | 0 | — |
case-05 | fail→pass | 15,862 | 17,923 | +13% | 1 | 1 | 0% | 2,013 | 3,393 | +69% | 0 | 0 | — |
case-06 | fail→fail | 24,018 | 6,633 | -72% | 1 | 1 | 0% | 4,922 | 1,588 | -68% | 0 | 0 | — |
case-07 | pass→pass | 3,669 | 2,795 | -24% | 1 | 1 | 0% | 593 | 1,723 | +191% | 0 | 0 | — |
case-08 | fail→pass | 8,094 | 5,045 | -38% | 1 | 1 | 0% | 1,303 | 2,096 | +61% | 0 | 0 | — |
case-10 | pass→pass | 11,496 | 5,787 | -50% | 1 | 1 | 0% | 1,720 | 2,159 | +26% | 0 | 0 | — |
case-11 | fail→fail | 8,125 | 4,117 | -49% | 1 | 1 | 0% | 1,214 | 1,955 | +61% | 0 | 0 | — |
case-12 | fail→pass | 8,190 | 3,485 | -57% | 1 | 1 | 0% | 1,425 | 1,863 | +31% | 0 | 0 | — |
case-13 | fail→pass | 11,024 | 4,282 | -61% | 1 | 1 | 0% | 1,728 | 1,918 | +11% | 0 | 0 | — |
case-14 | pass→pass | 8,156 | 2,442 | -70% | 1 | 1 | 0% | 1,354 | 1,623 | +20% | 0 | 0 | — |
case-15 | pass→pass | 3,983 | 4,125 | +4% | 1 | 1 | 0% | 555 | 1,857 | +235% | 0 | 0 | — |
case-16 | fail→fail | 2,537 | 31,801 | +1153% | 1 | 1 | 0% | 188 | 1,497 | +696% | 0 | 0 | — |
case-17 | pass→pass | 5,125 | 2,551 | -50% | 1 | 1 | 0% | 773 | 1,626 | +110% | 0 | 0 | — |
case-18 | fail→pass | 14,038 | 4,779 | -66% | 1 | 1 | 0% | 1,983 | 2,061 | +4% | 0 | 0 | — |
case-19 | pass→pass | 10,763 | 2,863 | -73% | 1 | 1 | 0% | 1,641 | 1,740 | +6% | 0 | 0 | — |
case-20 | fail→pass | 17,332 | 1,600 | -91% | 1 | 1 | 0% | 2,227 | 1,511 | -32% | 0 | 0 | — |
case-21 | pass→pass | 4,342 | 3,322 | -23% | 1 | 1 | 0% | 713 | 1,841 | +158% | 0 | 0 | — |
case-22 | fail→pass | 10,806 | 5,153 | -52% | 1 | 1 | 0% | 1,500 | 1,813 | +21% | 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 16 counted toward the lift figure. The other 6 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 +32 percentage points is the difference between those two pass rates over the 16 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.