LearnNewsExamplesServices
Frontmatter
id11427
titleImplement ADR 0008: SKILL.md Anatomy and Authoring Contract
stateClosed
labels
documentationenhancementaiarchitecturemodel-experience
assigneesneo-opus-4-7
createdAtMay 15, 2026, 4:48 PM
updatedAtMay 16, 2026, 12:05 PM
githubUrlhttps://github.com/neomjs/neo/issues/11427
authorneo-opus-4-7
commentsCount1
parentIssuenull
subIssues[]
subIssuesCompleted0
subIssuesTotal0
blockedBy[]
blocking[]
closedAtMay 16, 2026, 12:05 PM

Implement ADR 0008: SKILL.md Anatomy and Authoring Contract

Closeddocumentationenhancementaiarchitecturemodel-experience
neo-opus-4-7
neo-opus-4-7 commented on May 15, 2026, 4:48 PM

Context

Existing skill-anatomy substrate is documented across multiple locations:

  • .agents/skills/create-skill/SKILL.md + .agents/skills/create-skill/references/skill-authoring-guide.md (authoritative implementation guide)
  • learn/agentos/ProgressiveDisclosureSkills.md (high-level overview)
  • learn/guides/fundamentals/CodebaseOverview.md (cross-reference)
  • .agents/skills/skills.manifest.schema.json (machine contract)
  • AGENTS.md §21 (trigger pointers)

No single authoritative source exists. Per ADR 0006 (ADRs as Graph-Queryable Entities), ADRs are the canonical authority substrate for first-class architectural decisions; per ADR 0005 §2.1, ADR_REQUIRED classification fires when a proposal defines a durable substrate-management framework, introduces a primitive, and decomposes into multiple sub-decisions. Skill anatomy meets all three criteria but has not yet been codified as an ADR (the substrate-truth predates the ADR-at-Graduation discipline ADR 0005 established).

Empirical anchor — PR #11424 Cycle-1→Cycle-4 cascade: the ticket #11422 body cited an Antigravity V-B-A finding ("only name and description fields from SKILL.md frontmatter are loaded into the agent context; the triggers: field is silently dropped") in paragraph 1, then pivoted to "We must KEEP the triggers: field to preserve the canonical repo tooling/docs contract" two paragraphs later — an un-V-B-A'd assertion. The premise-prescription drift survived 3 review cycles before operator-direct V-B-A surfaced it. A canonical ADR codifying skill-anatomy decisions would have been the V-B-A target during ticket-intake, catching the drift at source.

The Problem

Substrate-pillar skill-shape decisions live scattered across create-skill skill payload + adjacent docs + JSON schema. Cross-session future-agent V-B-A has no graph-queryable authority target. Future skill-shape friction (e.g., new harness arrives with different loading semantics) lacks a single amendment surface.

The Architectural Reality

Skills are a substrate-pillar primitive consumed by all 3 harnesses (Claude Code, Antigravity, Codex). The contract spans:

  • Frontmatter shape — currently name + description only (per PR #11424 corrective; triggers: field is dead substrate)
  • Description-as-cross-harness-router — description carries trigger semantics inline (AGENTS.md §21 shape)
  • Body shape — Map (always-loaded SKILL.md, minimal router) vs World Atlas (conditional references/<file>.md payload)
  • Optional substratereferences/ for procedural-depth content, assets/ for templates/snippets
  • Manifest contract.agents/skills/skills.manifest.json mirrors frontmatter + declares routerByteBudget + payloadBudget + claudeSymlinkRequired + downstreamDocsTargets
  • Cross-harness semantics — Anthropic Progressive Disclosure standard; cross-harness symlink discipline for Claude (per existing claudeSymlinkRequired field)

Per ADR 0005 §2.1 ADR_REQUIRED checklist:

  • ✅ Defines durable substrate-management framework (skill primitive)
  • ✅ Introduces primitive (Skill as cross-harness loadable substrate)
  • ✅ Decomposes into multiple sub-decisions (6 surfaces above)

Per ADR 0006: ADRs are the canonical graph-queryable authority substrate for this class of decision.

Per ADR 0007 (Compaction Taxonomy): Map vs World Atlas split is the load-time discipline this ADR formalizes for the skill substrate specifically.

The Fix

File learn/agentos/decisions/0008-skill-anatomy-and-authoring-contract.md (or next available ADR number at PR-time) codifying:

  1. §1 Context — empirical anchor: PR #11424 cascade; substrate-pillar status of skills; absence of canonical authority pre-ADR
  2. §2 Decision — frontmatter shape (name + description only) + description-as-router semantics + Map/Atlas body decomposition + manifest contract fields + cross-harness loading semantics
  3. §3 Consumer enumeration — 3 harnesses + DreamService graph (per ADR 0006 weighting) + ticket-intake V-B-A target + create-skill implementation skill + future Sandbox skill-shape reasoning
  4. §4 Substrate Boundaries.agents/skills/ (skill files) + learn/agentos/ (ADR + ProgressiveDisclosureSkills.md) + AGENTS.md §21 (trigger pointers) + .agents/skills/skills.manifest.schema.json (machine contract) + lint scripts
  5. §5 Anti-Patternstriggers: field hallucination (the PR #11424 anchor); parent-directory symlink (per bootstrapWorktree.mjs rationale); cross-scope-bundling; Map bloat without Atlas extraction
  6. §6 Supersedes — absorbed substrate: create-skill/references/skill-authoring-guide.md becomes implementation companion; ProgressiveDisclosureSkills.md becomes cross-reference doc; AGENTS.md §21 stays trigger-pointer-only
  7. §7 Open Questions — if any (e.g., per-harness loading-semantics differences, future schema evolution gates)

Implementation tasks for the picking-up agent:

  • Draft ADR 0008 body sourcing from existing substrate + PR #11424 corrective truth
  • Cross-link ADR 0008 from create-skill SKILL.md as Source of Authority
  • Cross-link ADR 0008 from ProgressiveDisclosureSkills.md
  • Cross-link ADR 0008 from CodebaseOverview.md
  • Status flow: Proposed → operator content-accuracy approval at merge → Accepted

Acceptance Criteria

  • ADR file exists at learn/agentos/decisions/NNNN-skill-anatomy-and-authoring-contract.md (NNNN = next available number)
  • §1 Context cites PR #11424 cascade as empirical anchor + ADR 0005/0006/0007 as adjacent substrate
  • §2 Decision section codifies all 6 sub-decisions enumerated above (frontmatter, router semantics, Map/Atlas, manifest, harness semantics, cross-harness symlinks)
  • §3 Consumer section enumerates 3 harnesses + DreamService + ticket-intake + create-skill + future-Sandbox reasoning
  • §4 Substrate Boundaries section enumerates all 5 substrate locations
  • §5 Anti-Patterns section includes the triggers: field hallucination anchor (PR #11424 cascade), parent-symlink anti-pattern, cross-scope-bundling, Map bloat
  • §6 Supersedes section maps absorbed substrate cleanly
  • create-skill SKILL.md updated to cite ADR as Source of Authority
  • ProgressiveDisclosureSkills.md updated to cross-reference ADR
  • CodebaseOverview.md updated to cross-reference ADR
  • PR body follows ADR 0005 §2.3 amended lifecycle: peer-approved + green CI + human-merge = content-accuracy approval implicit

Out of Scope

  • Rewriting the create-skill skill payload (downstream after ADR lands; this ticket only adds the Source-of-Authority cross-link)
  • Sweeping skill-shape changes across .agents/skills/ (PR #11424 ships in parallel; this ticket does not block on it)
  • Per-harness SDK changes for skill loading (separate concern; if friction arises, ADR 0008 amendment cycle would govern)
  • Documentation drift sweep across older guides (separate cleanup ticket if needed post-merge)

Avoided Traps / Gold Standards Rejected

  • Generic React-component-shape parallels: Neo skills are cross-harness loadable substrate, not UI components; React-shape conventions misframe.
  • "Just document in CLAUDE.md / CODEX.md": harness-local docs don't establish cross-harness authority. Memory Core graph queries need a canonical artifact per ADR 0006.
  • Discussion-first Ideation Sandbox path: the substrate-truth is already V-B-A'd via PR #11424's empirical cascade; the topic is codification of established decisions, not architectural exploration. Per ADR 0005 §2.3 amended lifecycle, normal-ticket flow suffices. (Operator-confirmed this path: "new ticket if you agree.")

Empirical Anchors

  • PR #11424 Cycle-1 → Cycle-4 cascade: premise-prescription drift in #11422 body survived 3 review cycles; operator-V-B-A trail trace surfaced the substrate-truth (Discussion #11419 → ticket → PR). A canonical ADR would have been the V-B-A target at ticket-intake. Reference: PRR_kwDODSospM8AAAABADvn_w (my Cycle-4 corrective with empirical V-B-A documentation).
  • Discussion #11419 Cycle 2.5 Antigravity V-B-A: "only name and description fields from SKILL.md frontmatter are loaded into the agent context; the triggers: field is silently dropped."
  • ADR 0005 §2.1 ADR_REQUIRED classification: 3/3 criteria met (durable framework + primitive + multi-sub-decision).
  • ADR 0006 graph-queryability: this ADR depends on the graph-substrate ADR 0006 establishes.
  • ADR 0007 Compaction Taxonomy: Map/Atlas split is the load-time discipline this ADR specializes for skills.

Related

  • ADR 0005 — ADR-at-Graduation for Ideation Sandbox
  • ADR 0006 — ADRs as Graph-Queryable Entities
  • ADR 0007 — AGENTS.md Compaction Taxonomy
  • PR #11424 — Phase B SKILL.md description-router-hardening (companion implementation; substrate-truth source)
  • Ticket #11422 — Phase B (the sub-ticket whose premise-prescription drift surfaced the need)
  • .agents/skills/create-skill/ — implementation skill (consumer + downstream-update target)
  • Discussion #11419 — graduation source for ADR 0007 (adjacent substrate-pillar)

Origin Session ID

656c0935-0b3e-4b06-9b14-548524275859

Handoff Retrieval Hint

Memory query: "SKILL.md frontmatter triggers field is dead substrate — harnesses load description only" OR "PR #11424 Cycle-4 corrective premise-prescription drift". Cross-reference: ADR 0007 (Compaction Taxonomy) Map vs Atlas pattern for skill body decomposition.

tobiu referenced in commit 50dbcfa - "docs(agentos): codify SKILL.md anatomy and authoring contract as ADR 0008 (#11427) (#11428) on May 16, 2026, 12:05 PM
tobiu closed this issue on May 16, 2026, 12:05 PM