standards
Skill0 starsChanged 57 days agoMITView on GitHub
Use when about to commit, write or design tests, name identifiers, write user-facing copy, choose an ID type, or push — enforces my non-negotiable conventions for commits, test design, repo hygiene, inclusive language, IDs, and pre-push checks.
11 other projects use a version of this.
Adopted by
Most recently taken up by
- rylsherdamz-rgb/stellar-forgetheir own version, first seen Nov 8, 2026
- nearmap/shipyardtheir own version, first seen Nov 8, 2026
- denolfe/dotfilestheir own version, first seen Nov 2, 2026
- grezxune/ai-toolstheir own version, first seen Oct 25, 2026
- azamkhanuk/context-centraltheir own version, first seen Oct 11, 2026
- austintgriffith/ethskillstheir own version, first seen Oct 8, 2026
Used with
Projects with it also use spec and design.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
SentrySkillspec
Produce a verified spec — problem, desired outcome, and acceptance criteria — before building. Use when given a GitHub/Linear issue link, when starting from a fuzzy in-conversation idea, or asked to "figure out what to do" / "scope this" / "what should I build" — whenever the *what* isn't yet pinned down. Grills the ambiguities, checks the premise against the code, and produces acceptance criteria you sign off on — then hands to design-first.
Also in 3 projects that use this
Microsoft AzureSkilldesign
Design rules and conventions for the API Center Portal. Use when editing detail pages, card components, badges, layout, navigation, sidebars, or headers. Covers badge styling, metadata placement, page navigation patterns, and layout alignment.
Also in 3 projects that use this
Other versions11 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 11
- BankrBot/openclaw-skills★ 1.2ksame name
- BankrBot/skills★ 1.2ksame name
- austintgriffith/ethskills★ 303same name
- denolfe/dotfiles★ 88same name
- rylsherdamz-rgb/stellar-forge★ 17same name
- azamkhanuk/context-central★ 2same name
- yknnv/brownspec★ 2same name
- emretasss/stellar-paygate-mcp★ 1same name
- nearmap/shipyard★ 1same name
- farzanmrz/meta-dev★ 0same name
1 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository14 other files it gives its agents.
- arch-barSkill
- commsSkill
- context-budgetSkill
- exploit-huntSkill
- gdprSkill
- gen-umlSkill
- perf-barSkill
- postmortemSkill
- security-barSkill
- spec-intakeSkill
- stack-gotchasSkill
- stacksSkill
- task-flowSkill
- ux-barSkill
The file
We split this skill into the rules it gives an agent
11 rules. 0 are common, 5 are distinctive, and 6 are very specific to this project.
0
Common
Most of the 8 edited versions we read keep these.
5
Distinctive
This author's own choices. Worth a look.
6
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 17
No trailers: never add Co-Authored-By:, and never add a 🤖 Generated with Claude Code footer to commits or PR bodies.
- Very specific: line 33
No trailers, no footer: never a 🤖 Generated with Claude Code footer and never Co-Authored-By: — same rule as commits.
- Very specific: line 43
No mock-only tests: Don't vi.fn()/spy a port and assert it was called — that tests wiring, not behavior.
- Distinctive: line 46
A VO getter is not a test: Test the behavior the value object enforces (validation, equality, immutability), not the generated property.
- Very specific: line 54
If an internal doc reaches the repo anyway: git rm it (or rewrite history with the user's OK if already pushed) and move it to …
- Distinctive: line 68
Don't churn third-party/library names you don't control — fix what's yours.
- Distinctive: line 70
Don't assume the reader's gender: impersonal or neutral 2nd person — "te damos la bienvenida", not "bienvenidos".
- Distinctive: line 71
Don't assume family shape or roles: "la familia de…", not "los papás/padres de…".
- Very specific: line 78
Default to UUID v7 (uuidv7, RFC 9562) for any newly generated entity ID — no need to ask each time.
- Distinctive: line 83
Run all the gates CI runs, as one batched call — not just tests:
- Very specific: line 87
Prefer the project's single verify/check script if it exposes one.
“Common” is measured: kept by at least 6 in 10 of the 8 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
standards
Overview
My non-negotiable conventions — the floor every other skill stands on. When one applies, follow it exactly; it overrides generic defaults. Flag a real conflict once, then proceed (don't rehash).
Commits
- One line only:
type(scope): subject— English, imperative. No body unless I explicitly ask. Detail belongs in the PR description, not the commit. - No trailers: never add
Co-Authored-By:, and never add a🤖 Generated with Claude Codefooter to commits or PR bodies. - Pick the Conventional Commit type honestly:
feat/fixcut releases;chore/docs/refactor/testdon't. Scaffolding ischore, notfeat. - In release-please + auto-merge repos the amend window is ~seconds. Get the one-line message right the first time.
- Bots are exempt: dependabot / release-please author their own commits with structured multi-line bodies (machine-readable footers, changelogs). That's expected — the one-line rule governs commits I write, not bot commits.
- Integrate PRs by rebase — never squash, never a merge commit.
mainstays strictly linear; release-please keeps its release PR rebased onmainautomatically.
Branches
- Never commit straight to the default branch. Feature work goes on a short-lived branch (
feat/…,fix/…,chore/…), pushed and opened as a PR — even in a solo repo. - One branch = one purpose; keep it small. Integrate by rebase (see Commits), then delete the branch.
mainstays strictly linear. - Bots are exempt: release-please and dependabot manage their own branches/PRs.
Pull Requests
- Title: same
type(scope): subjectas a commit — English, imperative, one line. - Body — clear and simple to read, by sections (the structure lives here, not in a repo template file): What & why (1-2 sentences) → Changes (short bullets) → Testing (commands run + result) → Notes (risks / screenshots / follow-ups). Drop any section that doesn't apply — scannable, no filler, no checklist boilerplate.
- No trailers, no footer: never a
🤖 Generated with Claude Codefooter and neverCo-Authored-By:— same rule as commits. - Link the issue with
Closes #Nwhen there is one. - No canned assurance prose — "ensured all tests pass", "followed the existing conventions", "preserved the original behaviour". It reads as generated because it is padding: say what changed. Watchlist in
comms/references/ai-tells.md.
Tests
Fewer, higher-signal tests over a high count. Before writing one, ask: "If I delete this, what real bug could ship undetected?" If the answer is "none / TypeScript catches it", don't write it.
- No mock-only tests. Don't
vi.fn()/spy a port and assert it was called — that tests wiring, not behavior. Build a small in-memory fake of the port and assert the observable outcome. - Prefer integration-flavored tests: one test exercising use case → service → repository (memory repo) beats three mock-at-every-seam unit tests.
- Skip trivial passthroughs: a use case that just forwards to an already-tested service needs no test of its own.
- A VO getter is not a test. Test the behavior the value object enforces (validation, equality, immutability), not the generated property.
- Coverage % is not a target. 80% with rich behavioral assertions beats 100% of trivial ones.
Repo hygiene
- Never
git add -A/git add ./git add --all. Inspectgit status --shortand stage explicit paths. - Repo holds only project code + README (+ LICENSE/config). Internal docs, specs, plans and checklists live outside the repo in a sibling
../<repo>-notes/dir — never committed, and never.gitignore'd either (gitignoring a doc is itself the violation; just don't stage it). - Skill defaults are wrong here — override them.
brainstorming,writing-plansandtask-flowdefault to saving specs/plans atdocs/superpowers/...inside the repo and then committing them. Do NOT follow that. When bootstrapping a project, create../<repo>-notes/as a sibling of the repo before the first spec/plan write, and target it from that very first Write. The first time a spec lands indocs/inside the repo, the rule is already broken. - If an internal doc reaches the repo anyway:
git rmit (or rewrite history with the user's OK if already pushed) and move it to../<repo>-notes/. Never "fix" it by adding the path to.gitignore. - Code, identifiers, log strings, file/var names, UI strings → English. Comments minimal — only the non-obvious "why". Watchlist of generated-code tells in
references/code-tells.md.
Inclusive language
Applies to identifiers, comments, commits, log strings and user-facing copy in every locale. Swap the term at write time; if a neutral genuinely reads worse, flag it once and pick the least-bad rephrase — don't revert to the excluding form.
- Code / technical (English) — never introduce the legacy term in new code:
master/slave→primary/replica,leader/follower, ormain/worker(by domain); the default branch ismain.whitelist/blacklist→allowlist/blocklist(orallowed/blocked).grandfathered→legacy/pre-existing;sanity check→quick check/validation.dummy→placeholder/sample;man-hours→person-hours;manned→staffed.- Don't churn third-party/library names you don't control — fix what's yours.
- User-facing copy (ca/en/es/eu/gl/va) — neutral & collective, never split forms or neologisms:
- Don't assume the reader's gender: impersonal or neutral 2nd person — "te damos la bienvenida", not "bienvenidos".
- Don't assume family shape or roles: "la familia de…", not "los papás/padres de…"; "tu familia" / "persona adulta", not "mamá/papá".
- Neutralize with real words, not "/" splits and not "-x/-e": "peques" / "la infancia" (not "niños/as", not "niñes"); "participantes" / "quien juega" (not "usuarios/as"); "el equipo". If no neutral term fits, rephrase the sentence rather than gender it.
- Skip ableist/violent filler ("está de locos", "te vas a volver loco") when a plain neutral exists.
eskills:ux-barenforces this for UI strings;eskills:standardsfor code, commits and identifiers;eskills:commsfor text sent to a person outside this machine.
IDs
- Default to UUID v7 (
uuidv7, RFC 9562) for any newly generated entity ID — no need to ask each time. The ~1 KB dependency is acceptable; time-ordering is worth it. - No-flag exceptions: short URL-friendly slugs (not UUIDs at all). If a project already standardized on v4, follow it — don't refactor existing IDs unprompted.
Before pushing
Run all the gates CI runs, as one batched call — not just tests:
lint + typecheck + tests
- Prefer the project's single
verify/checkscript if it exposes one. Passing CI is the floor, not a stretch goal. - Non-negotiable whenever the task ends in a push (especially "súbelo para que aplique release") — lint failures gate releases too.
Pushback discipline
Once I validate a decision ("OK, hazlo"), stop adding caveats or re-validation on the same point. Group critical warnings once, up front. Push back again only for genuinely new, un-flagged risks (security, data loss).
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

