Skip to content

Universal (Bronze) conformance checks

Reference: Universal (Bronze) conformance checks

Section titled “Reference: Universal (Bronze) conformance checks”

The Universal tier is the portable floor: every plugin must pass it, on any agentskills.io agent, regardless of house style. Each check fires findings tagged reqId: "U<n>"; tier-report buckets them into the universal tier, and a Universal error fails the gate at every tier (Bronze gates Silver and Gold). U10 (no-dashes) was retired from the spine in Standard v0.11 (ADR 0028, a stylistic house preference, not a portability rule), so the Universal set is U1-U9 and U11-U13.

reqIdModuleWhat it checksStandardConditional?Example fix
U1scripts/checks/library-json.mjslibrary.json is present and valid JSON with the identity fields a tool needs (name, version, tier, standard)sec 5, sec 5.1noAdd or repair library.json (use askit-build-settings), then re-run node scripts/check.mjs.
U2scripts/checks/anatomy.mjsThe agentskills.io anatomy is present: a root AGENTS.md and the standard component folderssec 3.10noScaffold the anatomy with askit-init-plugin (a root AGENTS.md and the skills/ agents/ commands/ folders).
U3scripts/checks/frontmatter-valid.mjsEvery component’s frontmatter parses and carries a name and a descriptionsec 3.1noRepair the SKILL.md frontmatter so it parses and carries a name and a description (askit-build-skill improve mode).
U4scripts/checks/name-matches-dir.mjsA component’s declared name equals its directory in kebab-casesec 3.1noMake the component name equal its directory in kebab-case (askit-build-skill improve mode).
U5scripts/checks/description-score.mjsEach skill description clears the clarity floor (a concrete action plus a use-when trigger, under the length cap). Warn-only; house provenance (dropped under --profile plain-plugin)sec 8.1no (warn)Rewrite the description to state the action and the use-when trigger with real keywords, under 1024 chars.
U6scripts/checks/reference-links.mjsEvery references/ link resolves to a file that exists (broken progressive-disclosure links fail)sec 3.1noFix or remove the broken references/ link so every reference resolves.
U7scripts/checks/instruction-budget.mjsA component body stays under the instruction budget (a longer body risks the model dropping later steps). Warn-onlysec 1no (warn)Extract the longest section into references/ and point to it, bringing the body under the budget.
U8scripts/checks/manifest-drift.mjsThe committed native manifests (.claude-plugin/, .codex-plugin/plugin.json) match what gen-manifest produces from library.json (version drift is an error, the release-tag invariant)sec 5noRegenerate the native manifests: node scripts/generators/gen-manifest.mjs . --write --target=all.
U9scripts/checks/version-match.mjspackage.json version equals library.json version (the source of truth)sec 5noAlign every component version with library.json (askit-release version mode).
U11scripts/checks/mcp-valid.mjsEvery MCP server definition is well-formed and commits no inline secretsec 3.9yes (MCP servers present)Repair the MCP server definition and move any inline secret to an env reference (askit-build-mcp improve mode).
U12scripts/checks/mermaid-valid.mjsEvery fenced mermaid block is structurally valid (a recognized keyword, balanced brackets, no tabs) so it renders rather than showing a broken boxsec 2.1, sec 8.4yes (diagrams present)Fix the mermaid block so it parses (askit-build-docs improve mode).
U13scripts/checks/skill-registration.mjsEvery skill on disk is registered in the plugin’s enumerating manifest (library.json components.skills, else a .claude-plugin/marketplace.json plugins[] catalog), and every registered skill exists on disk. Distinct from U8, which compares generated manifests to library.jsonsec 2.1yes (enumerating manifest present)Register the unregistered skill in library.json components.skills[] (or the marketplace plugins[] catalog), or remove a registration entry that has no skills/<name>/ directory.

U13 ships under a burndown. Introduced at Standard v0.12 (ADR 0035), U13 is a warn for the 0.12 minor and becomes a gate-failing error at v0.13 (the warn-for-one-minor policy of STANDARD.md sec 7.7). It is the first requirement to exercise that policy.

Provenance. Most Universal checks are objective (a defect true regardless of any standard - a dead link, malformed JSON, manifest drift) or vendor-cited. Two are house conventions: U2 (root AGENTS.md) and U5 (description scorer), which --profile plain-plugin drops when grading a third-party plugin you do not own. The provenance split is recorded per check in scripts/lib/registry.mjs; see gate-config.md.

The Silver and Gold reference pages are silver-checks.md and gold-checks.md. For how the tiers compose and the burndown reads, see ../explanation/conformance-and-tiers.md.