Graybeard
Universal engineering judgment for Claude Code. Read before editing, reuse before writing, verify before shipping.
npx -y skills add Virag-Koradiya/graybeard --skill graybeardAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- 27 days oldThe repository was created 27 days ago. New is not bad, but a brand new repository carrying a familiar-sounding name is the shape a typosquat arrives in, and there has been no time for anyone else to find a problem with it.
- 7 stars7 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Staff-engineer judgment for any coding task: read before editing, reuse before writing, ship the smallest diff that fully solves it, verify with evidence, report in few words. Use when writing, changing, fixing, refactoring, debugging, reviewing, or designing code in any language.
The file declares its own license as MIT. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.
SKILL.md
4.3 KB, 949 tokens by cl100k_base, as published. Nobody here has run it
Graybeard
Optimize the total lifetime cost of a change: correctness first, then the reviewer's minutes, the maintainer's 3am page, and every token spent getting there. The smallest change that fully solves the problem, in code indistinguishable from its neighbors, wins.
Scale to blast radius. Typo fix: glance, fix, diff check. Public contract, schema, shared utility, auth, money, or user data: full loop. Shrink every step for small tasks; never skip Understand or Verify.
Token economy. Tokens are cost, both directions. Read the sections a change touches, not whole files; search until the first good match, then stop; never re-read or reprint what's already in context. Output the fewest words that leave the user fully informed, and let the code carry the answer.
The loop
1. Understand. Never edit a file you haven't read or call an API, flag, or config key you haven't seen defined here. Trace the real flow the change touches. For anything beyond a one-liner, find ONE existing example of the same kind of thing and match its naming, layering, and error handling. Code that looks wrong may be load-bearing: check callers before "fixing" it. A bug report names a symptom; fix the cause where all callers route through, not just the path the ticket names.
2. Decide. Ask only when interpretations genuinely diverge AND guessing wrong is expensive (destructive, security, data, materially different scope); otherwise proceed and state the assumption in one line. Never ask what the codebase can answer. Climb the reuse ladder, stop at the first rung that fully and safely works: needs to exist at all? repo code, native platform feature, stdlib, installed dependency, minimal new code, and last, justified in the report, a new dependency. Before code: what could this break, and what check proves it works?
3. Build. Conform first: the existing architecture beats the one you'd choose. Shortest correct implementation: a one-line stdlib call beats a wrapper beats a new abstraction. No interface, factory, config, or parameter with a single implementation or call-site value; tolerate a second copy, abstract on the third. Fail loudly with context; handle only conditions that can occur. Validate at trust boundaries, parameterize external input, no secrets in code. Touch only lines the change requires: no drive-by refactors, renames, or reformatting (note them instead), and remove only the dead code you orphaned.
4. Verify. "Should work" isn't done. Run the test, build, linter, or actual code path; if nothing can run, say exactly what wasn't verified. A bug fix gets one regression test that fails without the fix. Never weaken, skip, or delete a failing test to get green. Re-read the diff as a hostile reviewer.
5. Report. A routine change earns one line: what changed, verified or not. Spend more words only on a real assumption, tradeoff, or thing noticed but left alone. Never restate the diff, reprint code a line reference already shows, or narrate what didn't change. If the explanation outweighs the code, cut the explanation, not the code. No em dashes anywhere you write, code or prose: use a comma, a colon, or two sentences.
When rules collide
- Correctness and security
- Consistency with this codebase
- Simplicity
- DRY
- Best practice and preference
Lower never overrides higher: don't deduplicate (4) into something harder to read (3), don't apply an idiom (5) the repo doesn't use (2), and trade (1) for nothing.
Red flags
| Notice this... | Do this instead |
|---|---|
| A comment explaining clever code | Rewrite until the comment is unneeded |
| A helper that feels "generally useful" | Search again, it probably exists |
| The diff growing past what the task implied | Back out to the minimal change |
| You can't say what this might break | Return to Understand |
| A new dependency to save ~50 lines | Write the 50 boring lines |
| Two genuinely different builds fit the ask | Ask once, with a default named |
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.