Adapt skill-author/skill-audit/agent-author/agent-audit to author/audit APM-native (.apm/) content #89
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Retargets four
kyberforgeskills —skill-author,skill-audit,agent-author,agent-audit— so they author/audit APM-native.apm/content for target packages, now that #88'sapm-install/apm-workflow/apm-orchestrateartifacts have landed (merged via PR #91).This issue does not touch this repo's own plugins. Per ADR-0015 and this repo's
CONTEXT.mdPlugin glossary entry, this repo'splugin.json/marketplace.jsonmanifests stay hand-authored, unconverted, until #90 executes. #89 only changes where the four skills above point when authoring/auditing a target package — which, until #90 lands, is never this repo's own plugins.Scope
In scope:
skill-author— authors into.apm/skills/<name>/instead ofplugins/<name>/skills/<name>/.skill-audit— validates.apm/skills/content; one prose change (see below).agent-author— plugin scope only: authors a single vendor-neutral.apm/agents/<name>.agent.mdinstead of a Claude Code.md+ Copilot.agent.mdpair. Project scope (.claude/agents/+.github/agents/) and user scope (~/.claude/agents/+~/.copilot/agents/) are unaffected — both keep today's dual-file pair model per ADR-0005/ADR-0008, unsuperseded outside plugin scope.agent-audit— plugin-scope validation restructured to match (see below). Project/user scope unaffected.forge.mdStep 4 (plugin-version-bump detection) — narrow fix only: detection swaps fromplugin.jsontoapm.yml, handoff swaps fromplugin-authortoapm-workflow. No other change toforge.md's routing/grilling logic.Explicitly out of scope:
plugin-author/marketplace-author— fully superseded, deleted as part of #90 (see #90).forge's Step 1–3 (grill/classify/route) — untouched..apm/— that's #90.agents/) and ADR-0014 (Vale prefilter path regexes) — both flagged by ADR-0015 as needing revisiting, both confirmed during grilling to be #90's job, not #89's: neither concerns content authored for a target package, only this repo's own plugin layout, which doesn't change under #89.Design decisions (resolved via grilling, 2026-08-11)
apm.ymlthat declares atype:field (instructions/skill/hybrid/prompts) — that directory is the package root, and.apm/skills/<name>/(or.apm/agents/<name>.agent.md) is written relative to that root. Atype:-lessapm.ymldoesn't count as a match: per APM's monorepo-hybrid shape (docs/research/docs/microsoft-apm/monorepo-and-repo-shapes.md), a repo-rootapm.ymlcarrying only amarketplace:block (listing sibling packages by local path, e.g../packages/plugin-a) is a marketplace listing, not a package — it has no.apm/tree of its own. Walking past it to find a real package-levelapm.yml(or falling through to the "missing, scaffold first" precondition below when none exists) prevents a not-yet-scaffolded package in a monorepo from being misattributed to the repo root. Full switch, no dual-mode/fallback toplugin.jsondetection — #90 is the immediate next step, so no transitional dual-mode logic is built for a window that closes almost immediately.apm.ymlscaffolding is notskill-author/agent-author's job. If no ancestor directory has atype:-bearingapm.yml(per Detection above), stop and point the user toapm-workflow/apm-orchestrateto scaffold the package first (apm plugin init, run from inside the intended package directory — e.g.packages/<name>/in a monorepo, not the repo root). Clean responsibility line:apm-workflowowns package-shape decisions (type:,targets:,compilation:); the author skills only author into an already-scaffolded package.apm.yml'sincludes:list, if notauto, isskill-author/agent-author's job to update — append the new primitive's path themselves after authoring it, relative to the package root resolved above. Unlike scaffolding, this is a mechanical one-line fixup on a file already known to exist, not a package-shape decision — same spirit asskill-authoralready owning its ownSKILL.mdversion bump.tools:field and all Claude-only fields (isolation,maxTurns,effort,memory,permissionMode) are omitted entirely from plugin-scope.apm/agents/<name>.agent.md— onlyname/description/model/body. Root cause: APM's agent primitive has no per-target compile integrator (confirmed via APM source) —apm compileverbatim-copies the whole frontmatter to both Claude Code and Copilot CLI, and theirtools:vocabularies are incompatible (space-separated string vs. alias list), so a value correct for one harness is wrong for the other. Omitting is the only option that never ships a wrong value to a real harness. Tracked in ADR-0016 (new), which partially supersedes ADR-0005 and ADR-0008's plugin-scope clauses — project/user scope keeps the dual-file model those ADRs already describe, unchanged.agent-auditrestructures for plugin scope: drops the### Pair consistencydimension (nothing to pair — one file); repurposes### Provider safetyfrom a CC-vs-Copilot field-leakage check into a vendor-neutral-field allowlist check (FAIL on any field beyondname/description/model); adds a new SUGGESTION finding when an agent's description/body implies a tool restriction or Claude-only behavior the frontmatter can no longer express — visibility into the ADR-0016 limitation without pretending the schema can do something it can't.references/field-inventory.md's mechanism (external,source_keys-tracked reference file — ADR-0009) is unchanged; its content gains a plugin-scope allowlist shape alongside the existing project/user-scope two-blocklist shape. Project/user-scopeagent-auditbehavior is otherwise unchanged.skill-auditchange is a single prose edit: the File structure dimension's cross-plugin path check (currently flagsplugins/<plugin>/skills/<other-skill>/-shaped references) gets a second recognized shape,.apm/skills/<other-skill>/. No script changes —validate.sh/validate-provenance.shhave no path assumptions to update.Research
plugins/kyberforge/docs/research/docs/microsoft-apm/— all five APM primitive schemas documented (skills, agents, prompts, instructions, hooks), including source-code-verified per-target compile behavior, plusmonorepo-and-repo-shapes.md(package-vs-marketplaceapm.ymlshapes, used above to fix the Detection design decision against a monorepo layout).Depends on #88 (merged).
Adapt plugin-author/marketplace-author/skill-author/agent-author/forge to author APM-native (.apm/) contentto Adapt skill-author/agent-author to author APM-native (.apm/) contentAdapt skill-author/agent-author to author APM-native (.apm/) contentto Adapt skill-author/skill-audit/agent-author/agent-audit to author/audit APM-native (.apm/) content