Canopy Skills for VS Code
IntelliSense, semantic diagnostics, and go-to-definition for Canopy skills — the declarative, tree-structured execution framework for AI agents. Tracks framework v0.17.1.
What is Canopy?Canopy is a framework for writing AI skills as structured, executable code rather than freeform prose. Instead of describing what an AI agent should do in plain text, you define skills as a tree of named operations with explicit control flow, inputs, and outputs — then run them through Claude Code or GitHub Copilot. A Canopy skill looks like this:
Key ideas:
Canopy turns AI instructions into something you can read, review, version-control, lint, and refactor — like real code. InstallationThe extension is distributed as a
Quick StartOpen your project, then run these from the Command Palette (
What this extension doesTurns Canopy skill files into a first-class editor experience: live semantic validation with Quick Fixes, autocomplete for every primitive and custom op, inline hover docs, and go-to-definition across the skill → project → framework op lookup chain. Ships scaffolding commands for every resource type plus direct integration with the Canopy AI agent via In actionAutocomplete for primitives and custom opsType a tree-node prefix and get completions for every
Semantic diagnostics with Quick FixesReal-time validation catches primitive signature violations, missing frontmatter, wrong
Inline documentation for every primitiveHover any
CommandsAll commands are accessible via the Command Palette ( Install (
|
| Command | What it does |
|---|---|
| Install... | Unified entry point; presents a Quick Pick of the three install methods with availability badges based on which CLIs (git, gh skill, claude) are on PATH |
| Install (via install script) | Clone canopy and run install.sh / install.ps1. Picks Claude or Copilot target; writes the canopy-runtime ambient marker block automatically. Requires git. |
| Install as Agent Skill (gh skill) | gh skill install per checked skill. Picks Claude Code or GitHub Copilot agent. Writes the marker block too (gh skill itself doesn't). Requires gh ≥ 2.90.0. |
| Install as Claude Code Plugin | Copies the three /plugin slash commands (marketplace add + install + activate) to clipboard for paste in a Claude Code session. Plugin install bundles all three skills. |
✨ Skill — describe it, let AI write it (Canopy Skill category)
Start here. No deep framework knowledge required — describe what you want in plain English and the Canopy AI agent writes, validates, and refines the skill for you. Auto-detects the installed AI target (Claude Code under .claude/ or GitHub Copilot under .github/) and invokes claude "<prompt>" or gh copilot suggest "<prompt>".
| Command | What it does |
|---|---|
| Create Skill | Describe a skill; the agent writes it end-to-end |
| Modify Skill | Pick a skill and describe the change |
| Scaffold Skill | Provide a name; the agent creates the blank structure |
| Convert to Canopy | Converts a plain-markdown skill to Canopy tree format |
| Validate Skill | Checks a skill against all framework rules |
| Improve Skill | Aligns a skill with the latest framework conventions |
| Advise | Ask the agent a design question about Canopy |
| Refactor Skills | Extracts shared ops and resources across multiple skills |
| Convert to Regular Skill | Converts a Canopy skill back to plain markdown |
| Help | Lists all available agent operations |
Scaffold — manual authoring (Canopy Template category)
For authors who know the framework and prefer to hand-write skills and resources. Each command drops a correctly-structured blank file at the right path — you fill in the content.
| Command | Description |
|---|---|
| New Skill | Creates SKILL.md + ops.md for a new skill |
| New Verify File | Scaffolds a verify/ checklist |
| New Template | Scaffolds a templates/ file (.md, .yaml, or .yaml.gotmpl) |
| New Constants File | Scaffolds a constants/ lookup file |
| New Policy File | Scaffolds a policies/ rule file |
| New Commands File | Scaffolds a commands/ script (.ps1 or .sh) |
| New Schema | Scaffolds a schemas/ file |
Features
Syntax highlighting
Five language IDs cover all Canopy file types:
| Language | Files | Highlights |
|---|---|---|
canopy |
SKILL.md, ops.md |
Tree notation, IF/ELSE/SWITCH/CASE/DEFAULT/FOR_EACH/BREAK/END, ASK/SHOW_PLAN/VERIFY_EXPECTED/EXPLORE, <</>>, op names, binding expressions |
canopy-verify |
verify/*.md, checklists/*.md |
Checkbox items |
canopy-template |
templates/*.md, templates/*.yaml |
<token> placeholders |
canopy-resource |
constants/*.md, policies/*.md, schemas/*.md, references/*.md |
Tables, numbered rules |
canopy-commands |
commands/*.ps1, commands/*.sh |
# === Section Name === headers |
All patterns cover both .claude/ (Claude Code) and .github/ (GitHub Copilot) targets.
IntelliSense
Completions in SKILL.md and ops.md:
| Completion | What it suggests |
|---|---|
| Op names | Ops from the current skill, project-level ops, and framework primitives; inserts the correct tree-node prefix (* / ├── ) automatically |
| Primitives | All framework built-ins with descriptions |
| Frontmatter | name, description, argument-hint, license, metadata, allowed-tools, user-invocable (full agentskills.io spec) |
| Category resources | Read `category/path` directives for constants/, policies/, templates/, schemas/, checklists/, verify/, references/ |
Hover documentation
Hovering over a framework primitive or a custom op shows its description, expected << input and >> output, and a usage example.
Go-to-definition
Press F12 (or right-click → Go to Definition) on any ALL_CAPS identifier. The extension resolves through:
- Current skill's
ops.md - Consumer-defined cross-skill ops (if any)
- Framework primitives (statically defined in the extension; defined in canopy at
skills/canopy-runtime/references/framework-ops.md)
Semantic diagnostics
Real-time squiggles for:
| Check | Catches |
|---|---|
| Frontmatter | Missing name or description, empty values, unknown keys |
| Tree syntax | >> before <<, empty operator slots |
| Primitive signatures | IF/ELSE_IF without <<; ASK without \| options; SHOW_PLAN without >>; VERIFY_EXPECTED wrong path prefix; ELSE/BREAK with spurious operators; EXPLORE without >> |
| Resource references | Read `category/path` uses a recognised category and the file exists on disk; VERIFY_EXPECTED target file existence |
| Unknown ops | Configurable severity for ALL_CAPS names not found in any registry |
| Op conformance hints | Tree node's <</>> usage doesn't match the op's declared signature |
Requirements
- VS Code 1.85 or later
- For Install (via install script):
gitin PATH - For Install as Agent Skill (gh skill):
ghCLI v2.90.0+ in PATH (theskillsubcommand) - For Canopy Skill commands targeting Claude:
claudeCLI in PATH (each command surfaces an "open download" link if missing)
Settings
| Setting | Default | Description |
|---|---|---|
canopy.frameworkUrl |
https://github.com/kostiantyn-matsebora/claude-canopy |
Framework repo URL used by install commands |
canopy.validate.enabled |
true |
Enable/disable all real-time validation |
canopy.validate.unknownOps |
"warning" |
Severity for unresolved op names: error, warning, hint, none |
canopy.validate.opConformance |
true |
Show hints when <</>> usage doesn't match the op's declared signature |
Building from source
npm install
npm run compile # one-shot TypeScript compile
npm run watch # watch mode
npm run package # produces canopy-skills-<version>.vsix
Press F5 in VS Code to open an Extension Development Host with the extension loaded.


