Use this precedence order:
AGENTS.mdfor operating, evidence, mutation, ownership, archive, and handoff rules..agents/skills/*/SKILL.mdand.codex/agents/*.tomlfor repository-local maintenance behavior while working in this repository.registry/*.yamlfor distributed capabilities, agent roles, packs, personas, skill resources, and upstream snapshot provenance.skills/*/SKILL.mdfor canonical distributed workflows.docs/architecture/overview.mdanddocs/authoring/skills.mdfor maintained design guidance.- Generated adapters as read-only optional export artifacts.
Files under the ignored local .archive/ are optional historical context only and never active policy or distributable template content.
- Codex App/CLI and Hermes Agent are the only primary runtime targets. Treat every other export as optional maintenance output.
- The repository root is the installable plugin;
skills/remains the only canonical distributed workflow source. .codex-plugin/plugin.jsondefines the plugin identity and exposes./skills/directly..claude-plugin/marketplace.jsonis the Codex-supported repository marketplace compatibility path used by the GitHub install flow.- Hermes Agent installs the same canonical catalog through
npx skills add <repo> -a hermes-agent; the CLI copies individual skill directories, so runtime helpers must be bundled inside each skill. - Generated Hermes, Codex, pack, and per-project outputs are optional export artifacts. Canonical agent-role templates live in
agents/and are materialized project-locally; never create a second hand-maintained plugin skill tree. - Keep Codex plugin metadata, the Hermes Agent-discoverable root catalog, repository URL, and registry synchronized through
scripts/validate.pyand packaging tests. - Increment the plugin semantic version when a distributed plugin change must invalidate an installed cache.
.agents/skills/is the only allowed repository-local maintenance skill tree. It is tracked for maintainers, excluded from plugin skill exports, and never added to capability or pack registries..codex/agents/and.codex/config.tomlmay activate repository-local maintenance roles. These roles are never added toregistry/agent-roles.yamlor project scaffold templates.workflows/repository-maintenance.mdis the maintained human-readable workflow for improving this kit.- Repository-local maintenance skills may route to distributed skills but must not duplicate their specialist procedures.
- Keep internal IDs out of generated adapters, packs, project overlays, and installed game projects. Validate this boundary through
scripts/validate.pyand governance tests.
- Use
Verifiedonly for commands, tests, builds, primary-source inspection, or artifacts that were actually observed. - Use
Snapshotfor commit-, configuration-, environment-, or version-specific facts. - Use
Unverifiedfor hypotheses and forecasts. - Use
BLOCKEDwhen a tool, dependency, permission, live project, or model runner is unavailable. Never convertBLOCKEDintoPASS. - A PASS claim requires a command, exit code, and artifact path where applicable.
- Compile success is not regression proof; performance claims require a baseline, scenario, hardware, sample count, and measured delta.
- Use
draftorexperimentalbefore real studio adoption is confirmed. - Use
betafor a catalog or workflow adopted in a real studio project. Maintainer confirmation may be recorded asSnapshot; beta does not claim that every skill has individual verified dogfood evidence. betadoes not require a per-skill promotion record.stablerequires verified dogfood plus Tier-B, behavior, and pressure evidence;releaseadditionally requires a runtime matrix and sanitized session history.- Keep maturity separate from task evidence: a beta skill must still report individual claims as
Verified,Snapshot,Unverified, orBLOCKEDaccording to what was observed. - A lifecycle audit may honestly remain
BLOCKEDfor missing model, runtime, history, upstream, or KPI evidence while catalog beta maturity remains valid. Never treat that absence aspremature_maturity; that gate applies tostableandrelease.
- Read-only inspection is the default.
- Low-risk reversible changes require a visible diff and verification command.
- Medium-risk changes require exact scope, backup or manifest, restore information, and a named reviewer.
- High-risk, destructive, database, service-control, credential, or publish actions require explicit human approval and a dry run.
- Never mutate
.research/repositories, private studio projects, or external repositories during kit development. - Never patch generated adapters or packs by hand.
- One writer owns a file, scene, prefab, generated output, or shared registry at a time.
- Review and investigation lanes are read-only. The integrator owns registry resolution and the final verdict.
- Preserve unrelated tracked and untracked work. Do not reset, checkout, clean, branch, commit, or push unless explicitly requested.
- Default
commit_policyisask.
- Generated files start with
# Generated by scripts/<tool>. Do not edit manually.or the format-appropriate equivalent. - Root
scripts/files are the canonical helper sources.registry/skill-resources.yamlmaps them into self-contained skill directories throughscripts/sync_skill_resources.py. - Change the canonical skill, root helper, or registry, then regenerate. Never patch
skills/*/scripts/by hand. - Generators must preserve unmanaged project-local files and refuse unsafe replacement.
.archive/is ignored local-only storage; never require or package it.- Archive only completed plans or cleanup notes that remain useful to the local maintainer.
- Active workflows must not require archived files.
- Reproducible runner output belongs under ignored
evidence/local/or CI artifacts. - Promote durable decisions into maintained docs before relying on them across clones.
A durable handoff records repository/path, branch, goal, owned scope, do-not-touch scope, files changed, commands and exit codes, Verified results, Snapshot assumptions, Unverified hypotheses, BLOCKED items, failures, decisions, restore information, next actions, and a reactivation prompt.
Do not use a handoff as a substitute for verification that is locally available.
Run before handoff:
python -B scripts/sync_skill_resources.py . --check
python -B -m unittest discover -s tests -p "test_*.py"
python -B scripts/validate.py .
python -B scripts/route_eval.py .
python -B scripts/secret_scan.py .
python -B scripts/policy_check.py .
python -B scripts/external_collision_eval.py .
python -B scripts/doctor.py --check --root .
Run scripts/check_originality.py and scripts/catalog_audit.py as lifecycle audits. Run scripts/dogfood_eval.py . --export evidence/local/dogfood-cases.jsonl and scripts/dogfood_eval.py . --status evidence/local/dogfood-status.json when preparing a governed dogfood session. Their honest result may be BLOCKED when upstream content, governed runners, session history, live projects, or verified dogfood evidence is unavailable.