Self-Review — critique your own implementation before calling it done
SkillDev toolsPost-implementation self-review. Use AFTER finishing ANY code implementation or change — before declaring it done, committing, or opening a PR — to critique your own work: re-read the diff adversarially, confirm unit tests cover every branch/edge, kill duplication, follow clean-code/SOLID and the repo's own docs & invariants, decide if something should become documentation, update/prune memory, and strip outdated comments. Trigger it whenever you've just written or modified code and are about to wrap up, even if the user didn't explicitly ask for a review.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the Self-Review — critique your own implementation before calling it done skill
What this skill tells your AI
The instructions your AI receives, as published by mad-labs-org/tbh-meter in .claude/skills/self-review/SKILL.md and read by ahel’s review.
You just wrote this, which makes you the worst-positioned person to spot its flaws: you know what you meant, not what you wrote. This skill forces a deliberate change of hats — stop building and become the reviewer who's seeing the change for the first time and is mildly skeptical of it. Run it after any non-trivial implementation, before you declare it done, commit, or open a PR.
How to run it
Go through each dimension below against the actual change (git diff plus the files you
touched), not your memory of it. For each dimension, either confirm it's clean or fix it.
Close with the short report at the bottom — what you checked, what you changed, and anything
you deliberately left alone and why.
1. Re-read the whole diff, adversarially
Read every changed line end to end, as a reviewer rather than the author. Does it actually do
what was asked — including the edge cases and failure paths, not just the happy path? Is
anything half-done, stubbed, or left as a TODO? Did debugging residue survive — stray
prints / console.log, commented-out code, temporary probes, scratch files, hardcoded test
values?
2. Tests cover every detail
For each new branch, edge case, and error path there should be a test that actually asserts the behavior — not a happy-path smoke test, and not a vacuous assertion that passes no matter what. The litmus test: if someone reintroduced the bug you just fixed (or broke a branch you just added), would a test go red? If not, the coverage has a hole. And don't claim green — run the suite and watch it pass.
3. Kill duplication (DRY), without over-abstracting
Repeated expressions, literals, or blocks → lift them into a well-named variable, function, or constant (a magic number or string is duplication waiting to drift out of sync). But resist abstracting two things that are only coincidentally similar — a forced abstraction couples things that should be free to evolve apart. Extract when it's the same idea, not just the same shape.
4. Clean code & SOLID, in the codebase's accent
Names should say what they mean and match the surrounding conventions. Functions do one thing and stay small; watch for a god-function quietly accreting responsibilities. Dependencies point the right way, so a change in one concern doesn't ripple across many. Above all: write code that reads like the code already there — match its idioms, error-handling, and structure instead of importing your own preferred style.
5. Honor the repo's guidelines & invariants
Re-open the relevant CLAUDE.md, area docs, and guideline files and check the change against
them — they encode hard-won rules. Respect documented invariants (the kind whose violation
silently corrupts data or breaks the build). If the repo keeps an anti-patterns or review
checklist, sweep the diff against it. When your instinct conflicts with an established
convention, the convention wins.
6. Should any of this become documentation?
If you changed behavior, architecture, a contract, or a non-obvious decision, ask whether a doc should capture it — a new file, or an update to the README / area docs. If you changed a value or rule that a drift-test or a doc references, update the doc in the same change so they don't fall out of sync.
7. Memory — add what's durable, prune what's now wrong
Save the non-obvious, lasting facts this work surfaced: decisions, gotchas, cross-cutting facts. Don't save what the repo or git history already records — that's noise. Just as important, this is garbage collection: update memories this change made stale, and delete memories that turned out to be wrong. A confident-but-wrong memory is worse than none.
8. Comments — the WHY, current, no lies
Remove comments that are now outdated or incorrect; a comment that contradicts the code is worse than no comment. Comments should explain why (the non-obvious reason), not narrate what the code plainly says. Match the surrounding comment density, and delete any scaffolding or note-to-self comments you left mid-build.
9. Working-tree hygiene
Confirm the change set is only what you intended: no stray temp files, no unrelated edits swept
in, no debug logging left on. git status and git diff should read like a clean, reviewable
change.
10. Final verification, reported honestly
Run the project's gates (lint + types + tests) and watch them pass with your own eyes; for UI work, verify on real output, not just unit tests. Then report faithfully — if something failed, was skipped, or is still uncertain, say so. Don't round "probably fine" up to "done".
Report
Close the pass with a concise summary so the review is itself reviewable:
Self-review:
- Diff / edge cases: <clean | fixed X>
- Tests (every branch?): <covered + ran green | gap: …>
- Duplication / clean-code: <clean | extracted X>
- Guidelines / invariants: <followed | fixed X>
- Docs: <none needed | updated X>
- Memory: <added X | pruned stale Y | none>
- Comments / cleanup: <clean | removed X>
- Gates: <lint/types/tests result>
- Left intentionally: <thing + why, if any>
Signals
- GitHub stars
- 38
- Forks
- 4
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
self-review-mad-labs-org- Source
- github.com/mad-labs-org/tbh-meter