From 239ea41842842f21ccac72c8e3d8827174afad60 Mon Sep 17 00:00:00 2001 From: Defame1297 Date: Tue, 11 Aug 2026 18:05:45 +0000 Subject: [PATCH] fix(kyberforge): swap plugin.json signals for apm.yml in skill-audit/forge MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit skill-audit's cross-plugin path check now also recognizes .apm/skills/ / as a breaking reference shape, alongside the existing plugins//skills// pattern — the APM-native equivalent of the same cache-isolation problem. forge.md's Step 4 plugin-version-bump detection switches from "any directory containing a plugin.json" to the same apm.yml+type: walk-up used elsewhere in this batch, and hands off to apm-workflow (bump the single apm.yml version) instead of the deprecated plugin-author. Refs: #89 --- plugins/kyberforge/skills/forge/SKILL.md | 16 ++++++++-------- plugins/kyberforge/skills/skill-audit/SKILL.md | 2 +- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/plugins/kyberforge/skills/forge/SKILL.md b/plugins/kyberforge/skills/forge/SKILL.md index b7429c1..9ac4d45 100644 --- a/plugins/kyberforge/skills/forge/SKILL.md +++ b/plugins/kyberforge/skills/forge/SKILL.md @@ -65,18 +65,18 @@ When the intent spans multiple artifact types (e.g. a new skill inside a new plu ## Step 4 — Bump plugin version (if applicable) -After the routed skill finishes, check if the artifact was created or updated inside a plugin directory (any directory containing a `plugin.json`). +After the routed skill finishes, check if the artifact was created or updated inside a package by walking up from the artifact's path to the nearest ancestor `apm.yml` that declares a top-level `type:` field (`instructions`/`skill`/`hybrid`/`prompts`). An `apm.yml` with no `type:` field is a marketplace-only manifest (see `plugins/kyberforge/docs/research/docs/microsoft-apm/monorepo-and-repo-shapes.md`) — it does not count as a match; skip it and keep walking up. **Skip this step if:** -- The artifact is standalone (not in any plugin) or scoped to user agent directories -- The author skill already bumped the plugin version (check the skill's audit output or completion message for version bump evidence) +- No ancestor `apm.yml` with a `type:` field is found (the artifact is standalone or scoped to user agent directories) +- The author skill already bumped the package version (check the skill's audit output or completion message for version bump evidence) -**If the artifact is in a plugin and no version bump was done:** +**If a typed `apm.yml` is found and no version bump was done:** -Invoke `kyberforge:plugin-author` as a **clean-context subagent** (fresh, not forked) with this brief: +Invoke `kyberforge:apm-workflow` as a **clean-context subagent** (fresh, not forked) with this brief: -> "The plugin at `` gained a new `` (``). Run the UPDATE flow to bump `version` in both manifests (Copilot and CC). Determine whether to bump minor (0.1.0) or patch (0.0.1) based on whether this is a new capability (minor) or a fix/refactor (patch). Do not release or tag — just update the manifests and commit." +> "The package at `` gained a new `` (``). Bump the `version` field in that package's `apm.yml`. Determine whether to bump minor (0.1.0) or patch (0.0.1) based on whether this is a new capability (minor) or a fix/refactor (patch). Do not release or tag — just update `apm.yml` and commit." -Use a clean-context subagent (not forked) so the version bump decision is made independently without anchoring to the earlier authoring context. This gives plugin-author a clear, isolated directive. +Use a clean-context subagent (not forked) so the version bump decision is made independently without anchoring to the earlier authoring context. This gives apm-workflow a clear, isolated directive. -Report completion to the user: "Updated `` version from X.Y.Z to X.Y.Z to reflect the new ``." +Report completion to the user: "Updated `` version from X.Y.Z to X.Y.Z to reflect the new ``." diff --git a/plugins/kyberforge/skills/skill-audit/SKILL.md b/plugins/kyberforge/skills/skill-audit/SKILL.md index 474c784..6db7d40 100644 --- a/plugins/kyberforge/skills/skill-audit/SKILL.md +++ b/plugins/kyberforge/skills/skill-audit/SKILL.md @@ -92,7 +92,7 @@ Check each pattern is appropriate and correctly formed: - No non-spec files at the skill root (e.g. META.md, extra config files outside permitted directories) - Optional directories contain real content — not just unfilled placeholder READMEs - `README.md` present and accurately describes the skill and its files -- No cross-plugin path references in SKILL.md, scripts/, references/, or assets/ — paths using `../`, `../../`, or absolute repo paths (e.g. `plugins//skills//`) break when the plugin is installed to a cache; flag any found +- No cross-plugin path references in SKILL.md, scripts/, references/, or assets/ — paths using `../`, `../../`, or absolute repo paths (e.g. `plugins//skills//`, or its APM-native equivalent `.apm/skills//`) break when the plugin is installed to a cache; flag any found - `references/sources.md` is exempt from the cross-plugin path check — `Research doc:` fields are development-only provenance pointers, not runtime references; they intentionally reference paths outside the skill directory and are expected to be non-resolvable after plugin install; `validate-provenance.sh` handles this gracefully by silently skipping upstream checks when those paths don't resolve - `tests/` is exempt from the cross-plugin path check — test files are dev-only and may reference repo-level test infrastructure (e.g. a shared `tests/test_helper/`). This dependency must be declared in `tests/README.md`; flag if tests exist but `tests/README.md` is absent or does not document the dependency