diff --git a/plugins/kyberforge/.apm/skills/skill-author/references/deployment-modes.md b/plugins/kyberforge/.apm/skills/skill-author/references/deployment-modes.md index 33884bd..5b2e9ae 100644 --- a/plugins/kyberforge/.apm/skills/skill-author/references/deployment-modes.md +++ b/plugins/kyberforge/.apm/skills/skill-author/references/deployment-modes.md @@ -5,15 +5,15 @@ source_keys: # Deployment Modes -Skills deploy standalone, or as part of a package — either a legacy plugin-mode cache install or an APM (`apm.yml`-governed `.apm/` tree, compiled via `apm compile`). All resolve relative paths from the skill root — the SKILL.md body works the same in any of them. Differences only arise when referencing files *outside* the skill directory. +Skills deploy standalone, or as part of an APM package (an `apm.yml`-governed `.apm/` tree, compiled via `apm compile`). Some consumers also receive a package through a host's plugin install, which copies it into a cache. All modes resolve relative paths from the skill root — the SKILL.md body works the same in any of them. Differences only arise when referencing files *outside* the skill directory. -## Cache isolation (plugin mode) +## Cache isolation (host plugin install) -When a plugin is installed, its directory is copied to a cache. Only the plugin's own files are copied. **Any path that leaves the skill directory breaks post-install:** +When a host installs a plugin, it copies the plugin directory to a cache. Only the plugin's own files are copied. **Any path that leaves the skill directory breaks post-install:** ``` ../other-skill/validate.sh # breaks -plugins/kyberforge/skills/other-skill/ # breaks +plugins//.apm/skills/other/ # breaks ../../shared/utils.sh # breaks ``` diff --git a/plugins/kyberforge/.apm/skills/skill-author/references/improve.md b/plugins/kyberforge/.apm/skills/skill-author/references/improve.md index 5d0d118..c3cb2dc 100644 --- a/plugins/kyberforge/.apm/skills/skill-author/references/improve.md +++ b/plugins/kyberforge/.apm/skills/skill-author/references/improve.md @@ -76,6 +76,19 @@ into compliance first — the gates are hot and carry no baseline file, so a one non-compliant skill cannot be committed until the description and body meet `references/contract.md`. Treat that retrofit as part of the same change, not a follow-up. +Retrofit against the number that actually failed: the audit reports description characters and +body-only words separately. Audit the skill in its real package directory, never a scratch copy, +where boundary resolution reports `DID NOT RUN` and exits 0 without checking anything. Cut in this +order, stopping once the gate clears; the order puts the cuts that lose the least behaviour first: + +1. Gotchas that paraphrase a step below them — delete the Gotcha, keep the step. +2. Spec restatements — text repeating a published spec, a tool's `--help`, or a limit the + validator already enforces. +3. Capability enumeration — keep one capability clause in the description; drop the rest. +4. Per-flow prose — move each flow into its own `references/` file behind a dispatch table. + +Still over after all four means the skill does two jobs: split it rather than compressing prose. + If a signal points to a script or reference file, edit that file directly rather than adding a workaround in SKILL.md. diff --git a/plugins/kyberforge/.apm/skills/skill-author/tests/new-skill.bats b/plugins/kyberforge/.apm/skills/skill-author/tests/new-skill.bats index 91d13d5..a96a189 100644 --- a/plugins/kyberforge/.apm/skills/skill-author/tests/new-skill.bats +++ b/plugins/kyberforge/.apm/skills/skill-author/tests/new-skill.bats @@ -146,7 +146,7 @@ EOF } @test "scaffold emits a live metadata.version seeded at 0.1.0 (ADR-0022)" { - # The scaffold must clear .pre-commit-config.yaml's `skill-frontmatter` hook + # The scaffold must clear .pre-commit-config.yaml's `skill-size-check` hook # on its first commit: a commented-out metadata block ships a skill with no # version and is blocked. Assert the field is live, not a comment. bash "$SCRIPT" my-tool "$DEST"