Skip to content

Silver (Convergent) conformance checks

Reference: Silver (Convergent) conformance checks

Section titled “Reference: Silver (Convergent) conformance checks”

Seven checks (S1-S7) earn Silver tier. Each fires findings tagged reqId: "S<n>"; tier-report buckets them into the convergent tier and lists unmet ones in blocked.convergent.

reqIdModuleWhat it checksStandardConditional?Example fix
S1scripts/checks/agent-targets.mjslibrary.json.agent-targets is a non-empty array of claude/codexsec 5.1, sec 2.2noAdd "agent-targets": ["claude", "codex"] to library.json.
S2scripts/checks/prefix.mjslibrary.json.prefix is lowercase kebab-case ending in -sec 8.2noAdd "prefix": "<short>-" to library.json (e.g. "askit-").
S3scripts/checks/components-index.mjslibrary.json.components.skills and library.json.components.subagents indexes match on-disk skills/ and agents/ respectivelysec 5.1, sec 10.3noEnsure library.json.components.skills lists each on-disk skill and library.json.components.subagents lists each on-disk subagent, each with {name, path, version, tier, status}. An undeclared component or a dangling declaration both fail S3.
S4scripts/checks/chain-contract.mjsagents/_chain-permitted.yaml has no orphan or phantom entries; contract is present when chaining is in usesec 3.6yes (chaining-in-use)Orphan: a frontmatter chain: invocation not listed under the caller in the contract - add the <caller>: [<callee>] entry. Phantom: a contract entry naming a caller or callee that matches no on-disk component - remove the stale entry or create the missing component.
S5scripts/checks/workflow-skills.mjsWorkflows reference only on-disk skillssec 3.4yes (workflows exist)Fix the workflow’s steps: list to reference an existing skill name.
S6scripts/checks/per-target-presence.mjsEach agent-targets entry has its native manifest on disk (.claude-plugin/plugin.json / .codex-plugin/plugin.json)sec 5.1, sec 10.1yes (agent-targets declared)Run node scripts/generators/gen-manifest.mjs . --write --target=all to generate the missing native manifest.
S7scripts/checks/command-contract.mjsEvery commands/<name>.md declares a non-empty description and a maps-to that resolves to exactly one on-disk skill or workflowsec 3.2, sec 8.1yes (commands exist)Missing description: add a non-empty description to the frontmatter. Missing maps-to: add the key naming the backing skill or workflow. Unresolved maps-to: correct the name or create the missing component.

Subagents are Claude-only for plugin distribution (Standard sec 3.3). Codex v0.135 plugins cannot ship subagents (plugin.json has no agents field; [agents.*] is a user-level config.toml concern). A subagent declares agent-targets: [claude] in its frontmatter. For S3, a subagent’s presence on disk as agents/<name>.md is what matters - there is no Codex artifact to cross-check. The S6 dual-target component-level check does not apply to subagents in this phase; S6 remains a plugin-manifest-level check.

Findings cite their Standard section in the message, so an agent reading a report can navigate to the rule. Convergent errors do NOT fail the gate at the Universal tier - they appear in blocked.convergent until the plugin declares convergent and addresses them.