Files
holocron/plugins/kyberforge/.apm/skills/agent-author/scripts
Defame1297 4a5c3c0cff feat(kyberforge): enforce the ADR-0020 context contract for skills and agents
Skill name+description pairs are preloaded into every session, costing
~6,200 tokens across 39 skills before any skill is invoked. The authoring
rules mandated that growth: skill-author:104 and description-quality.md:21
both required padding, while skill-author:102 (the deflating rule) had no
FAIL condition behind it.

Gates (blocking, no baseline file):
- description 250 chars SUGGESTION / 400 FAIL, measured on the folded
  YAML value
- body-only 600 words SUGGESTION / 900 FAIL, independent of the unchanged
  whole-file 2770-word / 500-line spec backstop
- every boundary-clause routing target must resolve to a real skill or
  agent; catches skill-improve, neuledge-context and gitea-labels
- agents take the description gates but deliberately no body gate; a test
  pins that absence

Vale: DescriptionOpener widened to ^This\b, new CompositionNote rule
banning architecture notes from descriptions. 10 hits, 0 false positives.

Kyberforge's own four skills retrofitted: descriptions 3,364 -> 938 chars
(-72%), bodies 8,306 -> 2,487 words (-70%), all via the apm-workflow
dispatch pattern. Fixes the skill-improve dangling route and the
agent-author misroute to manual review.

Also fixes a pre-existing false positive where any line-initial 'read '
was flagged as interactive input, which had already caused two scripts to
be rewritten around it.

Refs: ADR-0020
2026-08-14 21:13:13 +00:00
..

scripts/

new-agent.sh

Scaffolds agent definition file(s) from a single root directory input.

Usage: new-agent.sh <agent-name> <root>

Resolves scope by walking up from <root>: a type:-bearing apm.yml found at or above <root> → plugin/APM scope (single file at <package-root>/.apm/agents/<name>.agent.md; an apm.yml without type: is a marketplace-only manifest and is skipped); <root> exactly ~ → user scope (~/.claude/agents/ + ~/.copilot/agents/); otherwise project scope (<root>/.claude/agents/ + <root>/.github/agents/). Each file is a no-op if it already exists. See --help for full usage.

Tests: tests/new-agent.bats (requires bats-support and bats-assert) — source-only. scripts/sync-plugin-content.sh strips <category>/<name>/tests from the generated mirror (ADR-0017), so this file exists in a repo checkout of .apm/skills/agent-author/ and not in an installed plugin.