Files
holocron/plugins/kyberforge
Defame1297 a85bdbed42 fix(kyberforge): restore skill-audit's script-failure fallback and E100 diagnostic
The ADR-0020 body trim took `skill-audit` from 2,623 body words to a dispatch
shape, and two things went out with it that were not padding.

The manual structural fallback was one. Its replacement was a single sentence
telling the auditor to report an INFO when `validate.sh` cannot run — so with no
`python3` or no PyYAML, `skill-audit` reported the gap honestly and then audited
nothing structural at all. Every ADR-0020 measurement, the whole-file ceilings,
the name-to-directory match, the `references/` pointer check and the script
hygiene checks silently left the audit. A skill's whole Structure dimension
hanging on one optional interpreter is the same vacuous-pass shape the gate
scripts were just fixed for, one layer up.

The `E100 Runtime error ... does not exist` diagnostic was the other. That exit
code means an explicit relative `--config` was passed to `vale-wrap.sh` while
vale itself was installed and working; without the note, Step 1's fallback reads
exit 2 as "vale unavailable" and downgrades the description, body-discipline and
patterns dimensions to full LLM judgment for a config error it could have fixed.
That misreading is already recorded in CONTEXT.md as the reason both audit skills
stopped passing `--config` at all.

Both are restored in `references/validation-scripts.md`, loaded only when a Step 1
script fails — so the body pays nothing for them on a clean run, which is what the
dispatch pattern is for. The file also carries the by-hand boundary-target
procedure and the three ways to misread the result, including that
`INFO ... DID NOT RUN` is not a pass.

`references/file-structure.md` gains the one sanctioned spelling for a cross-skill
reference. The possessive form (``skill-audit's references/validation-scripts.md``)
is the only spelling both rules accept: a full repo path is what that section
already forbids, and a bare `references/<file>.md` is now a hard ERROR from the
ADR-0020 pointer check, which requires the file to exist in the skill's *own*
directory. Without the rule the two constraints look mutually exclusive.

Refs: ADR-0020
2026-08-16 16:40:00 +00:00
..

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