conventions
Skill1 starsChanged 6 days agoMITView on GitHub
For what the end user sees — counts what a project's pages do, so a convention is told apart from one page's habit. Use when a count of how the other pages write something is about to be recorded, or when a checker recounts a line of a checklist.
15 other projects use a version of this.
Adopted by
Most recently taken up by
- MohammadShehadeh/agent-skillstheir own version, first seen Nov 1, 2026
- piomin/claude-ai-spring-boottheir own version, first seen Oct 25, 2026
- scottlivingston/claude-skillstheir own version, first seen Oct 25, 2026
- wuyining0130/c-roomtheir own version, first seen Oct 15, 2026
- philtzjp/skillstheir own version, first seen Oct 13, 2026
- yacb2/aidextheir own version, first seen Oct 9, 2026
Used with
Projects with it also use review and release.
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.
SentrySkillreview
Fixture review skill.
Also in 3 projects that use this
MicrosoftSkillrelease
Use ONLY when the user explicitly asks to cut/publish a Huabu desktop release or tag a version. Performs an outward action — bumps the version in apps/desktop/package.json, commits + annotated-tags vX.Y.Z, and pushes the branch + tag. That tag push auto-builds the macOS/Windows installers and publishes a GitHub Release. Provides `status`, `bump`, `tag-push`, and a one-command `run` (bump → tag-push).
Also in 3 projects that use this
Other versions15 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 15
- meteor/meteor★ 45ksame name
- piomin/claude-ai-spring-boot★ 1.4ksame name
- psenger/ai-agent-skills★ 10same name
- yyyyolo7a79-sketch/claude-conventions-skill★ 3same name
- MohammadShehadeh/agent-skills★ 2same name
- philtzjp/skills★ 2same name
- psenger/catholic-ai-skills★ 2same name
- stijnvanhulle/agents★ 2same name
- yacb2/aidex★ 2same name
- mauroepce/claude-workspace★ 1same name
5 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 repository13 other files it gives its agents.
- AGENTS.mdAGENTS.md
- .claude/CLAUDE.mdCLAUDE.md
- uic-auditingSkill
- uic-writingSkill
- accessibilitySkill
- adjustingSkill
- decisionsSkill
- designSkill
- finding-patternsSkill
- implementingSkill
- planningSkill
- valuesSkill
- verifyingSkill
The file
We split this skill into the rules it gives an agent
6 rules. 0 are common, 6 are distinctive, and 0 are very specific to this project.
0
Common
Most of the 12 edited versions we read keep these.
6
Distinctive
This author's own choices. Worth a look.
0
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 34
If a later signal disagrees, or the project does not answer: *When the signals do not settle the kind*.
- Distinctive: line 36
If the trees differ below a shared outer holder: *A family that differs by region*.
- Distinctive: line 53
If no application mounts the pages — each page is a document of its own — the bound is every page that loads a file the reference loads …
- Distinctive: line 56
If no other page loads a file the reference loads, the bound is the pages in the reference's folder, its subfolders included.
- Distinctive: line 58
If the page sits in a library: *The bound for a page in a library*.
- Distinctive: line 127
A family of one is never a convention: Write what the page does as the reference's own way — never as a count, and never as what the …
“Common” is measured: kept by at least 6 in 10 of the 12 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
Conventions: the kind, the family, the proof, the counts
Overview
Counts what the project's pages do, in the order of the work: the kind, the family, the proof that a search can see, then the counts.
Open a file linked or given by its path from this skill's folder, or invoke a named skill, only when a part you are carrying out sends you to it, never before — whatever the request that handed you this skill says about its links and paths. That part is not done until the file is opened or the skill invoked.
Which kind of page this is
Decide it first: it sets every count below it. Take the first signal that answers:
- What the user said — a kind somebody named, a list page like the orders one, outranks anything read.
- What the project keeps apart — its folders, routes, file-name suffixes, a folder per kind.
- What the reference renders — the same holders and regions in the same order make one kind, whatever the subject. A collection of rows and a single record with a submit are two.
- What the pages reach for — the same holder, layout piece or shared frame.
Then:
- If a later signal disagrees, or the project does not answer: When the signals do not settle the kind.
- If the trees differ below a shared outer holder: A family that differs by region.
- Name the kind in the project's own word — folder, route, file name — never an invented one. If it has none, name it by what it renders, a list with a form above it, and say the name is yours.
- Say in the checklist's first line the kind, what decided it, and how many
members of how many candidates were counted
(
../finding-patterns/checklist.md).
The bound the family is counted in
The bound is fixed, not chosen, so two agents reading the same reference count the same pages.
- The application that mounts the page — whatever routes to it or renders it from its entry — and every library it uses. Not the library the reference sits in, not the whole workspace.
- If no application mounts the pages — each page is a document of its own — the bound is every page that loads a file the reference loads too, such as a stylesheet, a script or a tokens file, and those files.
- If no other page loads a file the reference loads, the bound is the pages in the reference's folder, its subfolders included.
- If the page sits in a library: The bound for a page in a library.
- Name the bound in the checklist's first line. A later phase counts in it, or says which other bound it used and why.
Which pages are the family
The family is the pages of the reference's kind. Take the candidates, and remove what is not a member before counting:
- What a page imports — its panels, its dialog, its hooks — is part of it, not a sibling: neither end of an import edge among the candidates is a peer of the other.
- A file that imports members is not a member: a dispatcher, a route table, a barrel, a wrapper.
- A candidate that renders no holder and no region of the kind is not of the kind. Report it so; never count it as a member that lacks them.
- State both numbers — candidates considered, members counted — and what was left out and why.
- If the members span more than one area — app, library or package — or are more than can be read in full, it is a large project: follow A large project: split, sample, group before counting.
- If the work creates a shared piece that takes over a choice each page made itself — where a state is kept, which side takes a default share — count those choices as A shared piece the work creates says.
Why: a dispatcher counted as a page once turned 8 of 8 on every role into 8 of 9 — a unanimous convention reported as one drifting page.
Prove the search can see before trusting a count
The reference is one of the pages counted, so every search has a known answer: it must find what the reference writes.
- Run each search on the reference first. One that misses the reference is broken, and nothing it counts is a result.
- A zero for a role the reference writes is a broken search — a wrong glob, a list never split, a pattern that misses this dialect, a bound that resolved to nothing. Fix it and count again; never record it.
- A zero across the whole family is unverified, not a convention. Record none of them write this only when the same search, over the same files, found something else.
Why: a loop run once over the whole list instead of once per file reported 0 of 9 twelve times, holder included — the opposite of the truth.
Counting honestly
- Count per position — a role where it stands — never per component alone: 10 of 18 buttons full-width reads as no rule, and was 10 of 10 in the content area and 0 of 4 in toolbars.
- Count whether apart from which way. First how many members have the role at all; then, over those, which way each writes it. None answers whether and is never a way: 14 of 21 filter; of those 14, 10 through the shared toggle and 4 by hand — not 10, 4 and 7 across three ways.
- Count what the component comes out as too, and the heading level where the
position is a heading —
ui-consistency:values, Elements. - A count carries its file spread. Four identical buttons in one file are one page's habit; 10 of 10 across 8 files is a convention. A page and the files only it imports count as one file of the spread; say so where a member spans files.
- A missing prop is not yet a deviation. The theme or one of the project's wrappers may set it already.
- Search for the exact name. A container whose name starts with the component's once turned 18 uses into 25.
- If the task adds a position no member has — a second control, a control nobody has here — or changes a role the page already has, count it as A position no member has says.
- A family of one is never a convention. Write what the page does as the reference's own way — never as a count, and never as what the project does — and say the family has no other members: A kind whose family has only the reference.
When a count is not a convention at all
2 of 8, written the way every other count is written, reads as a rule. It is not one.
- Read it off the numbers themselves — never a threshold from outside, no percentage, no "most".
- Count every way, not only the commonest, over the members that have the role: 4 of 4, 3 of 4 and one other way, 3, 3 and 2 across three ways. A plurality is not a majority.
- There is a convention only if the commonest way outnumbers the others put together — a majority. Otherwise say the family has none here, and give every way with its numbers.
- Say which kind of majority it is. One exception is written 7 of 8 except
<page>. Several different ones make a family drifting: still the majority, written the commonest way, 5 of 8, against three others. - The order still decides, and nothing stalls or is asked: with no majority,
the newest members settle it (
ui-consistency:decisions, level 5). The line says no convention here; the two newest write it this way.
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.

