Concretize
🤖 My Claude Code config!From the repository description
npx -y skills add TomerAberbach/claude-config --skill concretizeAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 0 stars0 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.
SKILL.md
5.3 KB, ~1.3k tokens by cl100k_base, as published. Nobody here has run it
Replace jargon and imported metaphors in the target with concrete language: name what is actually there, keep the terms the domain itself uses, and drop borrowed figures of speech that the reader must translate back into meaning.
Target
jj show --git
Arguments: $ARGUMENTS
Concretize the target named in the arguments if given; otherwise the code or prose changed in the current commit shown above; if there are no arguments and the commit has no changes, ask the user what to concretize and stop.
Principles
- Name the thing, not a picture of it. A metaphor borrows a word from another domain to gesture at meaning, and the reader must translate the picture back. Replace it with the plain term for the real thing: a "seam" is a boundary, a "load-bearing" call is a required one.
- The domain's own words stay. A term the field uses in its specs and docs is not jargon to strip; it is the concrete name. "Socket", "stream", "deadlock", "idempotent", "quorum" earn their place even though each began as a metaphor. The test: would a practitioner write this word in a precise spec, or only in a blog post? Keep the first kind; cut the second.
- Plain over fancy, even within the domain. When two correct terms fit, pick the one a newcomer to the team understands. Don't reach for the rarer or grander word when it buys no precision; complexity is worth it only when it names a distinction the simpler word would lose.
- Concretize, don't change meaning. Replacing a word must preserve the claim. If a metaphor is carrying a real distinction no plain term captures, keep it and say why rather than flatten the meaning.
These principles double as the test for a replacement: make one only when the result is more concrete AND says the same thing. They aren't exhaustive; reason from first principles when none fits cleanly.
Workflow
- Read the whole target once so you understand what it actually refers to before renaming anything. For code, note how to run its tests or typecheck.
- Find the candidates: jargon, imported metaphors, and needlessly fancy terms (see "What to replace"). Most words are fine; that's expected.
- For each candidate, decide with the principles: is it the domain's own term (keep), or borrowed decoration (replace with the concrete name)? When unsure whether a word is domain vocabulary, check how the surrounding code and docs use it before cutting.
- If nothing should change, tell the user and stop. Don't manufacture edits.
- Apply the changes:
- In prose and comments, edit the wording in place.
- For an identifier built on a metaphor, rename it. Treat this as a behavior-preserving rename: update every reference, and never change a name that callers outside the target depend on without restoring the public name.
- If you renamed any code, run the covering tests or a typecheck to confirm behavior is unchanged. Pure prose edits need no test run.
- Report what changed: each term replaced and the concrete word it became, and any metaphor you deliberately kept because it is the domain's term or carries a distinction no plain word does.
What to replace
- Imported metaphors that decorate rather than name. "seam", "load-bearing", "surface area", "blast radius", "north star", "first-class citizen", "the crux", "in the weeds", "table stakes", "move the needle", "boil the ocean", "heavy lift". Each names something concrete: a boundary, a required dependency, the exposed API, the scope of impact, the goal, fully supported, the key part.
- Verbs used as filler. "leverage" is "use"; "surface" (as a verb) is "show" or "report"; "unpack" is "explain". Plain verbs say the same thing.
- Fancy words that buy no precision. "utilize" is "use", "facilitate" is "help", "myriad" is "many". Prefer the short, common word unless the long one names a real distinction.
- Vague abstractions standing in for a concrete referent. "handle the data", "do
the processing", "manage the state" name nothing; say what the code does to
what. This often points at a rename or extraction, which you should use
/stratifyfor.
What to keep
- Domain terms that began as metaphors but are now the field's precise vocabulary: "socket", "stream", "thread", "port", "tree", "branch", "deadlock", "handshake", "garbage collection". These are concrete to anyone in the domain.
- A metaphor that carries a distinction no plain term captures. If replacing it would lose real meaning, keep it. Note why in your report.
- Terms of art the project already uses consistently, even if you'd pick
different words. Concretizing should not fork the project's vocabulary; if a
whole vocabulary needs aligning, then you should use
/ubiquitize-language. - Anything you don't fully understand. Investigate or leave it; don't guess a word away and lose its meaning.
Fixing mistakes
- A test or typecheck breaks after a rename: a reference was missed or the name is used outside the target. Find the other references or restore the original name.
- A replacement reads less clearly than the metaphor: the metaphor was doing real work. Put it back and note it as a deliberate keep.
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.