skill-align — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited skill-align (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.
Core responsibility: Keep every public-facing document in sync with the actual skill inventory. The skills directory is the source of truth — all documents derive from it.
Input: None required. Reads the live state of skills/ and all documentation on every run. Optionally: a specific skill name or tier to focus the audit.
Output:
[GAP], [STALE], or [WRONG] with file and descriptionREADME.md, docs/how-it-works.md, docs/configuration.md, docs/practical-guide.md, CLAUDE.md, .github/ISSUE_TEMPLATE/bug_report.ymlHow to verify this skill did its job:
grep -rn "requirements atom\|framework:requirements\b" \
docs/ README.md CLAUDE.md .github/ skills/ \
--include="*.md" --include="*.yml"Any result from this grep means the sync is incomplete. A clean run returns no output.
Also verify: every skill in skills/ appears in the bug_report.yml dropdown and the how-it-works.md inventory tables.
Read the skills directory tree. Do NOT assume you already know the inventory — always read from files.
find skills/ -name "SKILL.md" | sortFor each SKILL.md found, extract:
name: field (frontmatter)tier: inferred from path (atoms/, molecules/, refiners/)paths\.\w+ in the fileframework: references (molecules only).lattice/standards/ path (refiners only).lattice/\w+/ paths (molecules only)Build a structured inventory:
atoms: [name, config_key, has_refiner, has_defaults_md]
molecules: [name, composes[], output_subfolder]
refiners: [name, config_key, produces_path, consumed_by_atom]Read references/audit-checklist.md for the complete per-document audit rules before starting Phase 2.
Work through every document in this order. For each, apply the checks in references/audit-checklist.md. Log every finding as:
[GAP] file:line — description of what is missing or wrong
[STALE] file:line — description of what refers to something that no longer exists
[WRONG] file:line — description of a relationship (consumed-by, produces) that is incorrectDocuments to audit:
docs/how-it-works.mddocs/configuration.mddocs/practical-guide.mdREADME.mdCLAUDE.md.github/ISSUE_TEMPLATE/bug_report.yml.github/ISSUE_TEMPLATE/skill_request.yml (generic — only check if skill-specific examples are present).github/ISSUE_TEMPLATE/documentation.yml (generic — only check if skill names appear)knowledge-base/requirement-forge-requirements.md (if exists — check it matches current skill names)Present a consolidated findings report before making any changes:
## Lattice Sync — Findings
### docs/how-it-works.md
[GAP] Atoms table missing: requirement-quality
[STALE] Refiners in Depth: requirement-forge-refiner consumed-by says "molecule" but should say "requirement-quality atom"
### .github/ISSUE_TEMPLATE/bug_report.yml
[GAP] Skill dropdown missing: requirement-quality (atom)
Total: N gaps, M stale references, P wrong relationshipsAsk: "Ready to apply all fixes? Or are there any findings you want to skip?"
Apply every agreed fix. For each document, make all changes in a single edit pass — do not make multiple passes over the same file.
After all fixes are applied, run one final verification grep to confirm no old references remain:
# Check for stale atom names or wrong consumed-by text
grep -rn "<old-name>\|consumed.*molecule\|consumed.*wrong" \
docs/ README.md CLAUDE.md .github/ --include="*.md" --include="*.yml"If the grep returns results, fix them before declaring done.
If the user wants to push the updated skills to their AI tool's skills directory:
./tools/install.sh /path/to/your/skills/folderAsk the user for the target path if not provided. Default for Claude Code: ~/.claude/skills/.
The most error-prone relationship in Lattice documentation is the refiner → atom → molecule chain. Documents frequently drift to say a refiner is "consumed by the molecule" when it's actually consumed by an atom that the molecule composes.
For every refiner in the live inventory, derive the correct relationship dynamically:
paths.{key}[WRONG]Exception: review-refiner is consumed by the review molecule directly — it configures the molecule's workflow, not an atom. This is the only correct molecule-direct consumption in the current framework.
.lattice/ subfoldersEvery molecule that writes living documents must use a named subfolder. If a new molecule is found that writes to .lattice/ and its subfolder is not in this list, flag it for addition to CLAUDE.md:
standards/ — refiner outputscontext/ — feature anchor docs (context-anchoring atom)learnings/ — review insightsreviews/ — review logtransform/ — plan-transformation outputrequirements/ — requirement-forge outputThe sync is complete when:
skills/ appears in the docs/how-it-works.md inventory tablesdocs/configuration.md paths table with the right consumed-by atombug_report.yml skill dropdownbug_report.yml skill dropdownbug_report.yml skill dropdownCLAUDE.md known subfolders list covers every .lattice/ output directoryskills/README.md and docs/how-it-works.md use current molecule names in the right orderSee references/audit-checklist.md for the exhaustive per-document rules.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.