| Duplicate content | Two artifacts cover overlapping scope, or their descriptions share trigger phrases | MERGE — present both, propose one |
| Misplaced content | A checklist or procedure in an agent body; a convention in an agent; a workflow in a rule; expertise in a skill (the Pick the right artifact table in intelligence-authoring) | MOVE — a move, not a rewrite: both files change together |
| Over the cap | SKILL.md over 1000 lines, rule over 500, agent over 200 | SPLIT — two artifacts, or move detail into references/<topic>.md |
| Rule links to a rule | A markdown link from one rule to another (R1) | UNLINK — name the rule instead: always-on rules are inlined into AGENTS.md and the scoped channels carry only scoped rules, so the link is dead in at least one output |
| Machine facts in a rule | OS, shell, editor or a local absolute path (R2) | MOVE — these belong in a personal, gitignored CLAUDE.md; a rule is committed and read by everyone, including whoever is on another platform |
| Literal path or command in a skill | A path outside the skill's own folder baked into a procedure (R3) | PARAMETERIZE — a skill is executed, so a literal path breaks the moment the layout moves; resolve it from a rule or from config.yaml. Exempt: the skill's own bundle (references/, scripts/, assets/ — content is co-located with its skill by default); rules and agents (describing the repository is their job); an example inside an output-format block; the resolution step itself |
| Skill with no verification | Nothing at the end proves the procedure worked (R4) | FLAG — a procedure that proves nothing is a note, or just the work: give it a verification, or delete it |
| Reserved prefix | A project artifact named intelligence-* | RENAME — the prefix belongs to the engine, and the updater prunes what matches it |
| Naming | A skill that is not <domain>-<verb>-<noun>, or a domain invented rather than reused | RENAME — or introduce the new domain deliberately |
| Stale | No edits in 6+ months and nothing cross-references it | ARCHIVE — move to <umbrella>/_archive/ |
| Negative-framed judgement call | "Never do X" where a positive default fits, outside safety / security / output-format | REWRITE — state the default; reserve NEVER for true must-nots |
| Unbacked reason | A rule asserts a why — a number, a measurement, a tool's behaviour — that nothing in the repo or in that tool's documentation supports | FLAG — an invented reason is worse than none: it sounds like evidence. Surface it with a draft; never rewrite the meaning yourself |
| Always-on rule that should be scoped | A concern that only matters in one area, loaded into every session and inlined into AGENTS.md | SCOPE — add paths:, or justify the cost out loud |
| Weak / duplicate description | Identical to a sibling, or too vague to choose between them | DIFFERENTIATE — add the distinguishing trigger |
| Description over budget | Over ~250 characters (the shared registry budget); over 1024 the tools reject the artifact outright | TRIM — keep the distinguishing trigger, drop the rest |
| Missing frontmatter field | name or description absent | PATCH — add it |
| Orphan rule | Nothing points at it and nothing loads it | FLAG — intentional, or dead? |