configure.md said apm.yml's `type:` field "constrains what .apm/ may contain" and that changing it later "does not retroactively validate what is already on disk" — both implying a validation step that does not exist. Read against the installed apm-cli 0.28.0: PackageContentType controls how a package is processed during install/compile, apm_package.py only enum-checks the declared string, and validate_apm_package() branches on the structural type derived from files on disk, never on the declared field. There is no content-vs-type mismatch check anywhere. The hazard is therefore the opposite of what the wording primed for: silent omission. A package declaring type: instructions while shipping .apm/skills/ installs no skill and compiles AGENTS.md only, exits 0, and reports success having shipped none of its primitives. The rule is now to verify deployed output rather than the exit code. apm-orchestrate carried the same wording as a Hard Rule and is corrected in step; its separate defects stay with #120. Also refreshes the exemplar figures this branch had re-staled.264a5dbset them to 3,222 words of references;6cb47f8then added 63 words and invalidated them, and the correction above adds more. Re-measured after all edits: body 237 and whole-file 304 both still hold, references total 3,416. body-discipline.md's "roughly 3,200" moves with it. ADR-0020 is deliberately untouched — it self-pins its citations tof9b919d— as is the git-commits negative example pinned to5e23250. Refs #99
kyberforge
Skills and agents for creating, maintaining, and managing a Claude Code / Copilot CLI plugin marketplace.
Install
Claude Code:
claude plugin marketplace add <owner>/<repo>
claude plugin install kyberforge@<marketplace-name>
GitHub Copilot CLI:
copilot plugin marketplace add <owner>/<repo>
copilot plugin install kyberforge
Local (development):
# Claude Code
claude --plugin-dir ./plugins/kyberforge
# GitHub Copilot CLI
copilot plugin install ./plugins/kyberforge
Contents
Authoring source lives in .apm/. The skills/, agents/, and hooks/hooks.json paths below are the generated mirror that plugin hosts actually scan — produced by scripts/sync-plugin-content.sh, never hand-edited (ADR-0017).
| Component | Path | Description |
|---|---|---|
| Skills | .apm/skills/ → skills/ |
Slash commands available after install |
| Agents | .apm/agents/*.agent.md → agents/ |
Role-based agents; one vendor-neutral .agent.md per agent, copied verbatim to both targets (ADR-0016) |
| Hooks | .apm/hooks/ → hooks/hooks.json |
Event-triggered automation — read by Claude Code only, see below |
| MCP servers | .mcp.json |
Model Context Protocol server definitions (hand-authored at the plugin root) |
Hooks are Claude Code-only in practice. Claude Code convention-scans hooks/hooks.json at the plugin root, so that file is live. Copilot CLI has no default hooks path — agents and skills default to agents/ and skills/, but hooks defaults to nothing (docs/research/docs/github-copilot-plugins/configuration.md:47), so Copilot reads hooks only via an explicit "hooks": "hooks.json" pointer in plugin.json (docs/research/docs/github-copilot-plugins/examples.md:49). apm's manifest compiler strips pointer fields from every manifest it generates, so neither .claude-plugin/plugin.json nor .github/plugin/plugin.json carries one, and re-injecting it is the option ADR-0017 explicitly rejected. Copilot therefore loads no hooks from this plugin — and did not load them from the old root-level hooks.json either. The Copilot half of this row is aspirational, not current behaviour.
Skills
| Skill | Description |
|---|---|
forge |
Grill an unclassified "I want to add something" request, decide whether it's a skill, agent, plugin, or marketplace entry, then route to the matching author skill |
skill-author |
Create or improve a skill from scratch, audit findings, or inline feedback |
skill-audit |
Audit a skill directory against the agentskills.io spec and produce a findings report |
agent-author |
Author an agent definition file |
agent-audit |
Audit an agent definition across structure, provider safety, description and body quality, and provenance; produces a findings report |
apm-install |
Install or upgrade the apm CLI and set up the agent runtimes it drives (Copilot CLI, Codex, Gemini, generic llm) |
apm-workflow |
Author apm.yml, scaffold an apm package/marketplace, install dependencies, and compile/pack/publish/audit apm content |
Pre-commit tooling (pc-author, pc-run) lives in the git plugin, not here.
Author
Defame1297