Synthèse automatique
Définit le style maison applicable à tous les fichiers du dépôt : lignes d'environ 50 colonnes, indentation de 2 espaces, structure aplatie et commentaires explicatifs qui définissent chaque acronyme.
Points forts
- Seuil concret et vérifiable (52 colonnes) avec une commande awk prête à l'emploi
- Patrons de repliement montrés en JS et en Rust : coupure après opérateurs, avant opérateurs logiques, aux points des chaînes
- Doctrine claire contre l'imbrication : clauses de garde, retours anticipés, extraction de fonctions nommées
- Conventions de commentaires précises (bannière d'en-tête, règles de section, commentaires de bloc au-dessus du code)
Limites
- Le format étroit est justifié par un cas personnel (aperçu sur téléphone) et peut entrer en conflit avec des formateurs automatiques comme Prettier ou rustfmt
- L'exemption des « tokens insécables » repose sur le jugement humain, sans règle mécanisable
- Fournit peu d'outillage au-delà d'une commande awk ponctuelle
À charger avant de créer ou modifier un fichier du dépôt afin que le code produit respecte immédiatement le style maison.
Pour un projet extérieur dont les règles de formatage sont déjà fixées par un linter ou un formateur d'équipe.
Analyse de sécurité
SûrThis is a writing/style guide with no declared tools and no instructions to execute destructive, network, or secret-handling actions. The only shell snippet is a read-only awk line-length checker.
Aucun point d'attention détecté
Comment cette analyse est faiteExemples
Rewrite src/parser.js in the narrow house style: wrap every line at 50 columns, keep 2-space indentation, and add the framed file header banner explaining what the file is.Review this Rust file against the narrow house style — flag lines over 52 columns, nesting deeper than three levels, and any acronym used without a defining comment.Reformat config/pipeline.yml to about 50 columns with 2-space indent, keeping long tokens on their own lines and adding short explanatory comments above each section.name: narrow description: The house style for EVERY file in this repo — source, tests, docs, configs. ~50-column lines (they fit Michael's phone preview pane), 2-space indent, flat structure, and rich explanatory comments that define every acronym. Load this before writing or editing any file.
narrow — the house style
Applies to all files: source, documentation, tests, configs, mailbox messages. No file type is exempt; only unbreakable tokens are (below).
1. The rule, verbatim
Source lines <= ~50 columns (they fit his phone preview pane). 2-space indent. Deep nesting is a design smell — flatten or extract.
And its two companions, also verbatim:
Define every acronym at its definition site in a comment the first time it appears (RPN = Reverse Polish Notation, TTS = Text To Speech, DHT = Distributed Hash Table, DI = Dependency Injection, etc.).
Comments are rich and explanatory on purpose — he loves reading the code. Match that voice.
2. Interpreting "~50"
-
Aim at 50. The
~is a small grace, not a loophole: the working checker in this repo flags anything past 52:awk 'length > 52 {print FILENAME":"FNR}' *.js -
Unbreakable tokens are exempt: a long URL, a base58 program id, a JSON string value, a markdown table row. Put the token on its own line; keep the prose around it narrow.
-
WHY 50: lines fit a phone preview pane. The code is read on a phone more often than on a monitor. If it wraps there, it's wrong here.
3. Wrapping patterns (examples)
Break after operators/commas, indent the continuation 2 spaces (or align into the call):
// BAD — 80 wide, unreadable on the phone
const e = { ...ev, _seq: seq, _at: ev._at || now(), _id: ev._id || nodeId + ':' + seq };
// GOOD — the same object, narrow
const e = {
...ev, _seq: seq,
_at: ev._at || now(),
_id: ev._id || nodeId + ':' + seq,
};
// GOOD — conditions split before operators
if (top.kind !== 'op') break;
if (tp > p || (tp === p && a === 'L'))
out.push(st.pop());
// GOOD — rust chains break at the dot
ben.balance = ben
.balance
.checked_add(amount)
.ok_or(LedgerError::Overflow)?;
Flatten instead of nesting: early-return, or extract a named helper. Three indent levels is the smell threshold.
// BAD — nesting as control flow
if (a.type === 'KEY') {
if (k === 'C') {
return [{ type: 'Cleared' }];
} else { ... }
}
// GOOD — guards, one level
if (action.type !== 'KEY') return [];
if (k === 'C') return [{ type: 'Cleared' }];
4. Comments — where they go
File header banner (every source file): a framed block stating what the file IS, the philosophy it carries, and any diagram worth drawing. Pattern:
/* ==============================================
* NAME — one-line role (<=50 col house)
* ----------------------------------------------
* Several sentences of real explanation. Why
* this exists, what doctrine it enforces, what
* the reader must not break.
* ============================================ */
Section rules split a file into named parts:
// -- the event tape -----------------------
// ---- instruction contexts -------------------
Block comments ABOVE the code they explain — a short paragraph before a function or a tricky region, never a novel inside it:
// fold one event, notify, return its effects.
// an event carries identity (_id) and origin
// (_origin = the node that first decided it) so
// sync can dedup and avoid echo loops.
function commit(ev) { ... }
Trailing comments only for tiny labels that fit the same line:
const log = []; // append-only facts
const RATE: u64 = 100; // tokens per cent
5. Comments — the voice
- Rich and explanatory on purpose. The comments teach; the reader is here for pleasure as much as reference. Explain WHY and the doctrine, not what the next line syntactically does.
- Define every acronym at first use, in a
comment, at its definition site:
PDA = Program Derived Address,SBF = Solana Bytecode Format. - State invariants in CAPS where they matter:
THE LOG IS NEVER REWRITTEN. - It's fine — encouraged — for a comment to carry personality ("a browser is enemy territory for secrets"), as long as it's also precise.
6. Tests and docs too
- Test files open with the same banner, and it
lists the numbered claims the file proves.
Test names are sentences:
ok('log keeps originals — never rewritten', ...). - Markdown prose wraps at ~50 like everything else; long links/table rows are the exempt tokens. Headers small and frequent; tables for status, prose for reasoning.
- 2-space indent everywhere, including YAML, JSON (where formatting is ours to choose), and shell.
Du fichier au premier essai
Le téléchargement contient exactement le contenu affiché sur cette fiche. Cette copie peut différer de la dernière version du dépôt source.
Consulter la source et ses fichiers annexesCe téléchargement contient uniquement SKILL.md. Les scripts, références, modèles et dépendances éventuels ne sont pas inclus. Récupérez les fichiers nécessaires depuis la source en conservant leur arborescence avant de poursuivre.
1. Télécharger le fichier
Télécharger SKILL.mdDepuis la racine d’un projet de test, enregistrez le fichier sous .skill-downloads/narrow-house-style-mryiqfum/SKILL.md, ou utilisez la commande suivante. Ce dossier sert à examiner la skill avant son installation.
Commande pour macOS/Linux ou WSL : un shell POSIX et curl sont nécessaires. Sous Windows sans WSL, utilisez le bouton de téléchargement et créez le dossier manuellement.
mkdir -p '.skill-downloads/narrow-house-style-mryiqfum' && curl --fail --show-error --location 'https://skills-guides.com/api/skills/narrow-house-style-mryiqfum/download' --output '.skill-downloads/narrow-house-style-mryiqfum/SKILL.md.part' && mv '.skill-downloads/narrow-house-style-mryiqfum/SKILL.md.part' '.skill-downloads/narrow-house-style-mryiqfum/SKILL.md'2. Vérifier les prérequis
Lisez SKILL.md avant de l’utiliser. Si le fichier cite des scripts ou services externes, examinez-les et préparez les accès nécessaires dans votre environnement de test.
Aucune section de prérequis reconnue dans ce fichier. Cela ne signifie pas qu’il est autonome : les bibliothèques, outils et accès peuvent être cités ailleurs dans le contenu ou dans le dépôt source.
Les plateformes de la fiche sont des indications du catalogue. Les chemins ci-dessous suivent la documentation des outils ; ils ne prouvent pas que cette skill y a été exécutée. Aucune version minimale de ces outils n’est attestée pour cette fiche.
3. Charger la skill
Après vérification, copiez le dossier complet dans le projet avec l’une des commandes ci-dessous, puis ouvrez une nouvelle session de l’outil. La commande s’arrête si un dossier du même nom existe déjà : comparez les fichiers avant de le remplacer.
Claude Code
test -f '.skill-downloads/narrow-house-style-mryiqfum/SKILL.md' && test -s '.skill-downloads/narrow-house-style-mryiqfum/SKILL.md' && mkdir -p '.claude/skills' && test ! -e '.claude/skills/narrow' && cp -R '.skill-downloads/narrow-house-style-mryiqfum' '.claude/skills/narrow'Cursor
test -f '.skill-downloads/narrow-house-style-mryiqfum/SKILL.md' && test -s '.skill-downloads/narrow-house-style-mryiqfum/SKILL.md' && mkdir -p '.cursor/skills' && test ! -e '.cursor/skills/narrow' && cp -R '.skill-downloads/narrow-house-style-mryiqfum' '.cursor/skills/narrow'OpenSkills
OpenSkills doit déjà être installé. La procédure locale install/read est contrôlée avec OpenSkills 1.5.0, qui exige Node.js ≥ 20.6.0. Aucun slug du catalogue n’est résolu automatiquement.
Installation officielle d’OpenSkillsopenskills install './.skill-downloads/narrow-house-style-mryiqfum'openskills read 'narrow-house-style-mryiqfum'La lecture doit afficher le contenu du fichier installé et son dossier de base. Elle ne lance ni la skill ni ses dépendances.
Pour un agent qui lit AGENTS.md, synchronisez ensuite l’index. Cette commande modifie AGENTS.md : relisez le diff avant de l’utiliser.
openskills syncMode manuel ou autre outil : joignez SKILL.md à une conversation, ou ouvrez-le dans un agent capable de lire les fichiers. Ajoutez les ressources annexes nécessaires. Il n’existe pas de dossier universel reconnu par tous les outils.
4. Faire un premier essai
Utilisez une entrée courte et fictive : un endpoint d’API, un petit document ou un brief d’interface. Dans une nouvelle conversation, joignez le fichier ou donnez son chemin à l’agent, puis adaptez cette demande :
Lis .skill-downloads/narrow-house-style-mryiqfum/SKILL.md et applique ses instructions à cet exemple : [décrire une entrée de test]. Indique les fichiers, dépendances ou accès qui manquent. Produis le résultat demandé par la skill sans inventer de données ni exécuter de script non examiné.Résultat attendu : une sortie correspondant aux instructions de la skill, ou une liste précise des prérequis manquants. Une simple confirmation de lecture ne valide pas le premier usage. Si une ressource externe est indisponible, ce parcours reste à tester.
Bonnes pratiques React Hook Form
Developpement
Maîtrisez React Hook Form : évitez les anti-patterns, gérez les abonnements, et traitez correctement reset, dirty state et entrées contrôlées.
Migration Emotion vers Mantine
Developpement
Migrer les styled-components Emotion vers des composants Mantine avec style props et modules CSS. Pour convertir .styled.tsx ou supprimer les imports @emotion.
Détecteur de dérive de périmètre
Developpement
Analyse les diffs git par rapport à une intention pour détecter la dérive de périmètre, fichiers non liés et PR trop larges, puis suggère de garder, diviser ou justifier.