canonical-repo-structure — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited canonical-repo-structure (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
A repository is a map of ownership. Each artifact has one canonical source, zero or more generated projections, and at most one compatibility path per runtime that truly needs the old entrypoint.
_archive/, .legacy, commented-out blocks, or "kept just in case" copiesA repo is not just storage. It is an operating map for future agents. When one command body lives in three places, no reader knows which behavior is real. When generated output is hand-edited, the next generation run destroys the change. When dead code is moved into _archive/, every grep, router, audit, and cold-start reader has to rediscover that the file is dead.
Canonical organization is therefore a reliability feature. The correct tree is not the smallest tree; it is the tree where source, generated output, compatibility paths, and historical records are visibly different. Preserve live capability, preserve historical recovery in git, and remove dead weight from the live working tree.
git rev-parse --show-toplevel from the path you will touch. For nested repos, commit in the nearest owning repo, not in the parent that happens to list or ignore the path.AGENTS.md, implementation-ownership registry, document-routing table, package entrypoints, and runtime constraints. If a runtime can only read a specific path, leave a minimal shim there and put the logic in the canonical project-owned path.git rm for tracked files. Do not move dead code to an archive folder or leave commented-out code. Record what was removed, why it was dead, the replacement or shim target if one exists, and a recovery command such as git log --all --oneline -- <path> followed by git checkout <sha>^ -- <path>.*.md, *.sh, *.json, package scripts, command manifests, and owning docs for the old path/name. Fix live references; leave changelog/ADR/report mentions alone unless they are themselves wrong.| Artifact kind | Canonical home | Compatibility rule |
|---|---|---|
| Project-specific system code | Owning project repo, usually under lib/, scripts/, bin/, or the project-specific command/prompt directory | Leave a shim only when a runtime mechanically resolves from a fixed path |
| Individual skill content | skills/skills/<subject>/<skill-name>/SKILL.md plus sibling artifacts | Do not author skill content in generated marketplace exports |
| Skill Graph schema, audit, prompt, and tooling system code | skill-graph/ paths owned by the Skill Graph project | Runtime command files outside skill-graph/ carry only pointer/delegation text when required |
| Generated manifests, indexes, exports, and status files | Generated by their named script | Regenerate from source; do not patch by hand unless the generator is the thing being fixed |
| Documentation truth | The owning doc named by the routing table | Indexes and pointer files link to the owner; they do not duplicate the body |
| Removed or superseded code | Git history, changelog explanation, and optional removed-path registry | No _archive/, .legacy, or commented-out implementation body in the live tree |
| Evidence | Action |
|---|---|
| Live imports, package scripts, runtime command resolution, tests, or documented user entrypoint still call the path | Keep it or convert it into a thin shim after moving logic |
| Path exists only for a runtime that cannot resolve the canonical location | Keep a registered shim with no business logic and a documented removal condition |
| Path is generated from a source file | Delete manual edits, fix source/generator, and regenerate |
| Only frozen historical records mention it | Remove the live artifact and leave the historical records unchanged |
| No live references, job complete, superseded owner wired, or one-shot migration finished | git rm, update changelog/registry as required, and record recovery command |
| You cannot prove whether it is live | Keep it for now and flag the uncertainty; do not guess-delete |
2026-06-07T14:32+02:00, not just 2026-06-07.| Use instead | When |
|---|---|
version-control | The task is choosing branch strategy, rebase vs merge, release tags, commit boundaries, or worktree lifecycle without changing canonical artifact ownership. |
refactor | The task is behavior-preserving code restructuring inside an already canonical implementation path. |
doc-updater | The task is only routing a code change to its owning docs and verifying docs changed in the same commit. |
taxonomy-design | The task is only designing categories, facets, controlled vocabularies, or classification assignment rules. |
code-review | The task is reviewing a PR/diff holistically for bugs, security, performance, and tests. |
AGENTS.md - repo ownership, document routing, and implementation ownership rulesdocs/reference/implementation-ownership.md - canonical implementation registry and compatibility-shim contractdocs/reference/artifact-lifecycle-contract.md - lifecycle metadata and changelog discipline for non-skill artifacts.claude/rules/delete-dont-archive.md - confirmed-dead code is deleted to git history, not archived in the treeskill-graph/AGENTS.md - Skill Graph canonical-location rule, delete-to-git-history directive, and timestamped changelog requirementskill-graph/SKILL_GRAPH.md - Skill Graph source vs generated marketplace distinctiondocs/reference/documentation-standards.md - one canonical source per fact and generated/reference verification gates~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.