Skip to content

v0.18.0

Choose a tag to compare

@github-actions github-actions released this 30 Apr 17:15

Added

  • agentskills.io standard layout: framework skills migrated to the spec-aligned layout — only SKILL.md at the root, with scripts/ (executable code), references/ (docs loaded on demand, including ops.md / ops/), and assets/ (static resources: templates/, constants/, schemas/, checklists/, policies/, verify/). Old flat layout (category dirs at the skill root) remains fully supported by canopy-runtime — Read references resolve literally. /canopy improve can migrate legacy skills on user opt-in.
  • compatibility field on every ## Tree skill: spec-compliant free-text declaring the canopy-runtime requirement and its source repo, listing install tools as alternatives (gh skill install, git clone, install.sh/install.ps1, plugin marketplace) so the agent picks the install method its environment supports. Per agentskills.io spec, compatibility is a max-500-char string — structured shapes like compatibility: { requires: [...] } are non-spec and rejected by /canopy validate / migrated by /canopy improve. Authoring ops (CREATE, SCAFFOLD, CONVERT_TO_CANOPY, MODIFY) emit the canonical free-text form automatically.
  • Safety preamble on every ## Tree skill: a fail-fast guard block at the top of the body that halts execution on agents without canopy-runtime active. Prevents silent wrong execution on unsupported platforms.
  • canopy-runtime self-activation: canopy-runtime/SKILL.md now includes an Activation section that writes the marker block to CLAUDE.md (Claude Code) or .github/copilot-instructions.md (Copilot). Replaces the explicit /canopy:canopy activate step for all install paths.
    • Who writes the marker block, by install path:
      • install.sh / install.ps1 — the script writes it during install. Shell-context, no agent to defer to → project is fully activated when install completes.
      • gh skill install — file placement only. Marker block is written by the next agent invocation that loads canopy-runtime/SKILL.md and runs Activation.
      • Claude Code plugin marketplace — same as gh skill install: file placement only; agent writes the block on first load.
    • Idempotent — running Activation on a fully activated project is a no-op.
  • Repo context detection: CREATE and SCAFFOLD choose the target skill location based on context.repo_context — distribution repos (skills/ at root) get skills written to skills/<name>/; consumer projects get them in .claude/skills/<name>/ or .github/skills/<name>/.
  • Cross-skill extraction constraint: REFACTOR_SKILLS now requires extracted shared logic to become a complete, named, installable skill (with its own SKILL.md, compatibility field, and safety preamble); dependent skills declare it via compatibility. No more bare shared files referenced from sibling directories — preserves agentskills.io skill autonomy.
  • SKILL.md uppercase enforcement: validate.sh and /canopy validate flag lowercase skill.md files. Required for case-sensitive filesystems (Linux, macOS APFS) and for gh skill install discovery.
  • Frontmatter compliance enforcement: argument-hint and user-invocable are non-spec at frontmatter root and must live inside metadata. validate.sh rejects root-level placement.
  • Cross-client install target (agentskills.io spec): a single install at .agents/skills/ serves both Claude Code and GitHub Copilot. canopy-runtime self-identifies the active host at runtime and applies the matching runtime spec (runtime-claude.md or runtime-copilot.md) — no path-derived platform detection. Cross-client is additive; existing claude / copilot / both install targets are preserved.
    • install.sh --target agents and install.ps1 -Target agents install to .agents/skills/. Marker block goes to whichever instructions file already exists (CLAUDE.md and/or .github/copilot-instructions.md); CLAUDE.md is created as fallback.
    • gh skill install ... --dir .agents/skills is the equivalent path for the gh-CLI flow. Newer gh (2.91+) defaults Copilot installs to .agents/skills/ automatically.
    • VSCode extension's install commands include a Cross-client pick alongside Claude Code, Copilot, and Both, in both the install-script and gh-skill flows.
  • Skills-root resolution in canopy-runtime: <skills-root> is the first matching directory containing canopy-runtime/SKILL.md. Recognized roots, in order: .agents/skills/.claude/skills/.github/skills/. dispatch-schema.json's explicit_target_platform enum gains cross-client.

Changed

  • commands/ directory renamed → scripts/ (matches agentskills.io standard).
  • ops.md and ops/ moved under references/ (as documentation loaded on demand, per the agentskills.io progressive-disclosure pattern).
  • All static resource directories (schemas/, templates/, constants/, checklists/, policies/, verify/) moved under assets/.
  • IMPROVE op extended with agentskills.io compliance checks: missing compatibility, missing safety preamble, root-level argument-hint/user-invocable, lowercase skill.md, structured-object compatibility (migrated to spec-compliant free-text). Optionally migrates legacy flat layout to the standard layout.
  • CONVERT_TO_REGULAR op now strips compatibility field and safety preamble (regular agentskills.io skills don't require them).
  • canopy-runtime category-directory documentation updated for new layout in skill-resources.md, framework-ops.md, runtime-claude.md, runtime-copilot.md.
  • canopy-runtime platform detection moved from path-derived to runtime self-identification — the agent identifies itself (Claude Code / Copilot / other) instead of inferring from the skills-root path. runtime-claude.md and runtime-copilot.md use the abstract <skills-root> placeholder so both specs work regardless of install location.
  • Marker block content restructured as bulleted (with nested) lists for readability and updated to mention all three skills roots. CI parity check across marker-block.md, install.sh, install.ps1, and the vscode extension's MARKER_BLOCK constant still enforced.
  • Marker block canonical file moved from skills/canopy/assets/constants/marker-block.md to skills/canopy-runtime/assets/constants/marker-block.md. Reason: gh skill install canopy-runtime does not transitively pull canopy; the runtime must be self-contained for activation. Authoring ops (/canopy activate) cross-reference the new location via ../canopy-runtime/....

Notes

  • Not a breaking change: existing consumer skills using the legacy flat layout continue to execute correctly. canopy-runtime resolves Read references literally; old skills don't need migration. Existing --target claude / copilot / both install flows unchanged. Cross-client is purely additive.
  • VSCode extension claude-canopy-vscode updated in lockstep — language ID file patterns rewritten for new layout (commands/*.{ps1,sh}scripts/*.{ps1,sh}; templates/*assets/templates/*; etc.) AND extended to also recognize .agents/skills/ paths. Diagnostics flag old-layout skills with a "consider migrating" hint.