{"id":49283249,"url":"https://github.com/kostiantyn-matsebora/claude-canopy-vscode","last_synced_at":"2026-05-10T23:20:05.112Z","repository":{"id":353602824,"uuid":"1213661435","full_name":"kostiantyn-matsebora/claude-canopy-vscode","owner":"kostiantyn-matsebora","description":"VS Code extension for Canopy — IntelliSense, diagnostics, and go-to-definition for Claude Code / GitHub Copilot skill files.","archived":false,"fork":false,"pushed_at":"2026-04-24T15:23:04.000Z","size":1863,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-04-24T17:20:36.240Z","etag":null,"topics":["ai","canopy","claude","claude-code","copilot","intellisense","language-server","skill","vscode-extension"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kostiantyn-matsebora.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-04-17T16:12:51.000Z","updated_at":"2026-04-22T19:45:23.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/kostiantyn-matsebora/claude-canopy-vscode","commit_stats":null,"previous_names":["kostiantyn-matsebora/claude-canopy-vscode"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/kostiantyn-matsebora/claude-canopy-vscode","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kostiantyn-matsebora%2Fclaude-canopy-vscode","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kostiantyn-matsebora%2Fclaude-canopy-vscode/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kostiantyn-matsebora%2Fclaude-canopy-vscode/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kostiantyn-matsebora%2Fclaude-canopy-vscode/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kostiantyn-matsebora","download_url":"https://codeload.github.com/kostiantyn-matsebora/claude-canopy-vscode/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kostiantyn-matsebora%2Fclaude-canopy-vscode/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32274982,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-25T18:29:39.964Z","status":"ssl_error","status_checked_at":"2026-04-25T18:29:32.149Z","response_time":59,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai","canopy","claude","claude-code","copilot","intellisense","language-server","skill","vscode-extension"],"created_at":"2026-04-25T20:00:50.308Z","updated_at":"2026-05-10T23:20:05.088Z","avatar_url":"https://github.com/kostiantyn-matsebora.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Canopy Skills for VS Code\n\n\u003e Write Claude Code / GitHub Copilot skills as executable code, not prose.\n\n[![Marketplace Version](https://vsmarketplacebadges.dev/version-short/canopy-ai.canopy-skills.svg)](https://marketplace.visualstudio.com/items?itemName=canopy-ai.canopy-skills)\n[![Installs](https://vsmarketplacebadges.dev/installs-short/canopy-ai.canopy-skills.svg)](https://marketplace.visualstudio.com/items?itemName=canopy-ai.canopy-skills)\n[![Rating](https://vsmarketplacebadges.dev/rating-short/canopy-ai.canopy-skills.svg)](https://marketplace.visualstudio.com/items?itemName=canopy-ai.canopy-skills\u0026ssr=false#review-details)\n[![Latest Release](https://img.shields.io/github/v/release/kostiantyn-matsebora/claude-canopy-vscode?label=release\u0026color=0969da)](https://github.com/kostiantyn-matsebora/claude-canopy-vscode/releases/latest)\n[![CI](https://img.shields.io/github/actions/workflow/status/kostiantyn-matsebora/claude-canopy-vscode/ci.yml?branch=master\u0026label=CI)](https://github.com/kostiantyn-matsebora/claude-canopy-vscode/actions/workflows/ci.yml)\n[![Tracks Canopy](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fraw.githubusercontent.com%2Fkostiantyn-matsebora%2Fclaude-canopy-vscode%2Fmaster%2Fpackage.json\u0026query=%24.canopyVersion\u0026prefix=v\u0026label=tracks%20canopy\u0026color=2da44e)](https://github.com/kostiantyn-matsebora/claude-canopy/releases)\n[![License](https://img.shields.io/badge/license-MIT-0969da)](LICENSE)\n\n[![agentskills.io](https://img.shields.io/badge/agentskills.io-compatible-0969da)](https://agentskills.io)\n[![Claude Code](https://img.shields.io/badge/Claude%20Code-compatible-D97757?logo=anthropic\u0026logoColor=white)](https://code.claude.com/docs/en/skills)\n[![GitHub Copilot](https://img.shields.io/badge/GitHub%20Copilot-compatible-000?logo=githubcopilot\u0026logoColor=white)](https://code.visualstudio.com/docs/copilot/customization/agent-skills)\n\nIntelliSense, semantic diagnostics, and go-to-definition for [Canopy](https://github.com/kostiantyn-matsebora/claude-canopy) skills — the declarative, tree-structured execution framework for AI agents. Tracks framework **v0.22.0**.\n\n\u003e **Available on the VS Code Marketplace** under the [`canopy-ai`](https://marketplace.visualstudio.com/publishers/canopy-ai) publisher — search for **Canopy Skills** in the Extensions panel, or install via `code --install-extension canopy-ai.canopy-skills`. Pre-Marketplace `.vsix` artifacts are still attached to each [GitHub Release](https://github.com/kostiantyn-matsebora/claude-canopy-vscode/releases/latest) for offline installs.\n\n## What is Canopy?\n\n**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.\n\nA Canopy skill looks like this:\n\n```markdown\n---\nname: review-pr\ndescription: Review a pull request for correctness and style\n---\n\n## Tree\n\n* FETCH_PR \u003c\u003c PR_URL\n* IF \u003c\u003c changes_are_large \u003e\u003e\n  * SPLIT_INTO_SECTIONS\n* ELSE\n  * REVIEW_IN_ONE_PASS\n* SHOW_PLAN \u003e\u003e review_summary\n```\n\nKey ideas:\n\n- **Skills** (`SKILL.md`) define behavior as a tree of operation calls.\n- **Ops** (`ops.md`) define reusable named operations local to a skill or shared across skills.\n- **Framework primitives** (`IF`, `ELSE_IF`, `ELSE`, `SWITCH`, `CASE`, `DEFAULT`, `FOR_EACH`, `BREAK`, `END`, `ASK`, `SHOW_PLAN`, `VERIFY_EXPECTED`, `EXPLORE`) are built-in control-flow + interaction + execution ops provided by the framework.\n- **Resources** (constants, policies, templates, schemas, verify checklists, command scripts, references) are supporting files co-located with each skill.\n- Skills install at one of three roots — `.agents/skills/` (cross-client, `gh skill 2.91+` default), `.claude/skills/` (Claude Code), or `.github/skills/` (Copilot). canopy-runtime resolves `\u003cskills-root\u003e` automatically.\n\nCanopy turns AI instructions into something you can read, review, version-control, lint, and refactor — like real code.\n\n## Installation\n\nThe extension is distributed as a `.vsix` on GitHub Releases until the Marketplace listing is live.\n\n1. Download the latest `canopy-skills-\u003cversion\u003e.vsix` from the [Releases page](https://github.com/kostiantyn-matsebora/claude-canopy-vscode/releases/latest).\n2. Install from the command line:\n   ```bash\n   code --install-extension canopy-skills-\u003cversion\u003e.vsix\n   ```\n   Or in VS Code: **Extensions** panel → **…** menu → **Install from VSIX…** → pick the file.\n\n## Quick Start\n\nOpen your project, then run these from the Command Palette (`Ctrl+Shift+P` / `Cmd+Shift+P`):\n\n1. **`Canopy Install: Install...`**\n   - Pick an install method: script / `gh skill` / Claude Code plugin\n   - Pick a target: Claude Code, Copilot, Both, or **Cross-client** (`.agents/skills/`)\n   - Installs the three framework skills. The marker block self-writes on first agent load — install scripts also write it eagerly.\n2. **Create your first skill** (requires `claude` or `gh copilot` on `PATH`)\n   - **`Canopy Skill: Create Skill`** — describe it in plain English; the agent scaffolds and validates\n   - **`Canopy Template: New Skill`** — drop a blank `SKILL.md` + `ops.md` and hand-author\n3. **Edit the generated `SKILL.md`** — these activate automatically:\n   - Autocomplete for primitives and custom ops\n   - Hover docs on every `ALL_CAPS` identifier\n   - `F12` go-to-definition\n   - Real-time diagnostics with Quick Fixes\n4. **Run the skill** from your AI agent\n   - Claude Code auto-discovers `.claude/skills/`\n   - Copilot loads `.github/skills/`\n   - Iterate with `Canopy Skill: Modify / Validate / Improve Skill`\n\n## What this extension does\n\nTurns 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. Tracks the framework's evolving feature surface — subagent dispatch markers (v0.20+), per-skill `metadata.canopy-features` slice manifest with drift detection (v0.21+), and universal op contracts with static type-flow analysis through the binding graph (v0.22+). Ships scaffolding commands for every resource type plus direct integration with the Canopy AI agent via `claude` or `gh copilot suggest`.\n\n## In action\n\n### Autocomplete for primitives and custom ops\n\nType a tree-node prefix and get completions for every `IF`, `ELSE`, `ASK`, `SHOW_PLAN`, `VERIFY_EXPECTED`, and any custom op defined in the current skill, the project, or the framework.\n\n![Autocomplete popup showing primitives with their signatures](images/screenshots/autocomplete.png)\n\n### Semantic diagnostics with Quick Fixes\n\nReal-time validation catches primitive signature violations, missing frontmatter, wrong `\u003c\u003c`/`\u003e\u003e` usage, and broken resource references — before you run the skill.\n\n![Diagnostic squiggle on VERIFY_EXPECTED with a Quick Fix suggesting the correct path syntax](images/screenshots/diagnostics.png)\n\n### Inline documentation for every primitive\n\nHover any `ALL_CAPS` identifier to see its signature, description, and how it flows with `\u003c\u003c` / `\u003e\u003e` — no context switching to the framework docs.\n\n![Hover tooltip showing SHOW_PLAN primitive documentation and example usage](images/screenshots/hover-docs.png)\n\n## Commands\n\nAll commands are accessible via the Command Palette (`Ctrl+Shift+P` / `Cmd+Shift+P`). Commands are grouped into three categories that sort alphabetically in the palette to give you a natural workflow order: **Canopy Install** → **Canopy Skill** → **Canopy Template**.\n\n### Install (`Canopy Install` category)\n\nInstall the Canopy framework into your project. Each command shows a Quick Pick of the three skills (canopy, canopy-runtime, canopy-debug) — all checked by default.\n\n| Command | What it does |\n|---|---|\n| **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 |\n| **Install (via install script)** | Clone canopy and run `install.sh` / `install.ps1`. Picks target (Claude / Copilot / Both / Cross-client `.agents/skills/`); writes the canopy-runtime ambient marker block during install (shell-context, no agent to defer to). Requires `git`. |\n| **Install as Agent Skill (gh skill)** | `gh skill install` per checked skill. Picks target (Claude Code / Copilot / Cross-client; cross-client uses `--dir .agents/skills`). Writes the marker block proactively too. Marker block also self-writes via canopy-runtime's Activation on first agent load. Requires `gh` ≥ 2.90.0. |\n| **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. The `activate` step is a safety net — canopy-runtime self-activates on first agent load. |\n\n### ✨ Skill — describe it, let AI write it (`Canopy Skill` category)\n\n**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 \"\u003cprompt\u003e\"` or `gh copilot suggest \"\u003cprompt\u003e\"`.\n\n| Command | What it does |\n|---|---|\n| **Create Skill** | Describe a skill; the agent writes it end-to-end |\n| **Modify Skill** | Pick a skill and describe the change |\n| **Scaffold Skill** | Provide a name; the agent creates the blank structure |\n| **Convert to Canopy** | Converts a plain-markdown skill to Canopy tree format |\n| **Validate Skill** | Checks a skill against all framework rules |\n| **Improve Skill** | Aligns a skill with the latest framework conventions |\n| **Advise** | Ask the agent a design question about Canopy |\n| **Refactor Skills** | Extracts shared ops and resources across multiple skills |\n| **Convert to Regular Skill** | Converts a Canopy skill back to plain markdown |\n| **Help** | Lists all available agent operations |\n\n### Scaffold — manual authoring (`Canopy Template` category)\n\nFor 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.\n\n| Command | Description |\n|---|---|\n| **New Skill** | Creates `SKILL.md` + `ops.md` for a new skill |\n| **New Verify File** | Scaffolds a `verify/` checklist |\n| **New Template** | Scaffolds a `templates/` file (`.md`, `.yaml`, or `.yaml.gotmpl`) |\n| **New Constants File** | Scaffolds a `constants/` lookup file |\n| **New Policy File** | Scaffolds a `policies/` rule file |\n| **New Commands File** | Scaffolds a `commands/` script (`.ps1` or `.sh`) |\n| **New Schema** | Scaffolds a `schemas/` file |\n\n## Features\n\n### Syntax highlighting\n\nFive language IDs cover all Canopy file types:\n\n| Language | Files | Highlights |\n|---|---|---|\n| `canopy` | `SKILL.md`, `ops.md`, `references/ops.md`, `references/ops/*.md` | Tree notation, `IF`/`ELSE`/`SWITCH`/`CASE`/`DEFAULT`/`FOR_EACH`/`BREAK`/`END`, `ASK`/`SHOW_PLAN`/`VERIFY_EXPECTED`/`EXPLORE`, `\u003c\u003c`/`\u003e\u003e`, op names, binding expressions |\n| `canopy-verify` | `assets/verify/*.md`, `verify/*.md`, `assets/checklists/*.md`, `checklists/*.md` | Checkbox items |\n| `canopy-template` | `assets/templates/*.md`, `templates/*.md`, `assets/templates/*.yaml`, `templates/*.yaml` | `\u003ctoken\u003e` placeholders |\n| `canopy-resource` | `assets/constants/*.md`, `constants/*.md`, `assets/policies/*.md`, `policies/*.md`, `assets/schemas/*.md`, `schemas/*.md`, `references/*.md` | Tables, numbered rules |\n| `canopy-commands` | `scripts/*.ps1`, `scripts/*.sh`, `commands/*.ps1`, `commands/*.sh` (legacy) | `# === Section Name ===` headers |\n\nAll patterns cover all three skills roots: `.agents/` (cross-client), `.claude/` (Claude Code), and `.github/` (Copilot). The agentskills.io standard layout (`assets/`, `scripts/`, `references/`) and the legacy flat layout (category dirs at the skill root) are both recognised.\n\n### IntelliSense\n\nCompletions in `SKILL.md` and `ops.md`:\n\n| Completion | What it suggests |\n|---|---|\n| Op names | Ops from the current skill, project-level ops, and framework primitives; inserts the correct tree-node prefix (`* ` / `├── `) automatically |\n| Primitives | All framework built-ins with descriptions |\n| Frontmatter | `name`, `description`, `compatibility`, `license`, `metadata`, `allowed-tools` at root (agentskills.io spec); `argument-hint`, `user-invocable` inside `metadata` |\n| Category resources | ``Read `category/path` `` directives for `constants/`, `policies/`, `templates/`, `schemas/`, `checklists/`, `verify/`, `references/` |\n\n### Hover documentation\n\nHovering over a framework primitive or a custom op shows its description, expected `\u003c\u003c` input and `\u003e\u003e` output, and a usage example.\n\n### Go-to-definition\n\nPress `F12` (or right-click → Go to Definition) on any `ALL_CAPS` identifier. The extension resolves through:\n\n1. Current skill's `ops.md`\n2. Consumer-defined cross-skill ops (if any)\n3. Framework primitives (statically defined in the extension; canonical source is canopy's `skills/canopy-runtime/references/ops.md` index plus per-feature slice files under `skills/canopy-runtime/references/ops/\u003cslice\u003e.md`)\n\n### Semantic diagnostics\n\nReal-time squiggles for:\n\n| Check | Catches |\n|---|---|\n| Frontmatter | Missing `name` or `description`, empty values, unknown keys, `argument-hint`/`user-invocable` at root (must live in `metadata`) |\n| Compatibility shape | Block-form / inline-flow maps flagged with migration hint (`compatibility` must be a free-text string per agentskills.io spec); \u003e500 char values flagged; canopy-runtime mention hint on `## Tree` skills |\n| Tree syntax | `\u003e\u003e` before `\u003c\u003c`, empty operator slots |\n| Primitive signatures | `IF`/`ELSE_IF` without `\u003c\u003c`; `ASK` without `\\|` options; `SHOW_PLAN` without `\u003e\u003e`; `VERIFY_EXPECTED` wrong path prefix; `ELSE`/`BREAK` with spurious operators; `EXPLORE` without `\u003e\u003e` |\n| Resource references | ``Read `category/path` `` uses a recognised category and the file exists on disk; `VERIFY_EXPECTED` target file existence |\n| Unknown ops | Configurable severity for `ALL_CAPS` names not found in any registry |\n| Op conformance hints | Tree node's `\u003c\u003c`/`\u003e\u003e` usage doesn't match the op's declared signature |\n| Subagent dispatch (v0.20+) | Bidirectional bold-vs-marker drift between op definition and call sites; missing `Output contract:` schema files; strict-input-contract violations (`context.\u003cname\u003e` not in signature) |\n| Universal contract markers (v0.22+) | Bare `\u003e **Input contract:** \\`...\\`` / `\u003e **Output contract:** \\`...\\`` blockquote paths must exist on disk; schema top-level `properties` must cover the op's `\u003c\u003c` / `\u003e\u003e` named fields |\n| Binding-graph type flow (v0.22+) | When an op carries an `Output contract`, downstream consumers binding `\u003c\u003c ctx.\u003ckey\u003e` are checked — warns when `\u003ckey\u003e` is not declared in the producer's output schema |\n| Canopy-features manifest (v0.21+) | `metadata.canopy-features` declares-but-unused / used-but-undeclared drift; `core` listed (implicit-always-loaded); unrecognized slice values |\n| Canopy-contracts manifest (v0.22+) | `metadata.canopy-contracts` value other than `strict`; `strict` declared on a skill with no contract-bearing ops |\n\n## Requirements\n\n- VS Code 1.85 or later\n- For **Install (via install script)**: `git` in PATH\n- For **Install as Agent Skill (gh skill)**: `gh` CLI v2.90.0+ in PATH (the `skill` subcommand)\n- For **Canopy Skill** commands targeting Claude: `claude` CLI in PATH (each command surfaces an \"open download\" link if missing)\n\n## Settings\n\n| Setting | Default | Description |\n|---|---|---|\n| `canopy.frameworkUrl` | `https://github.com/kostiantyn-matsebora/claude-canopy` | Framework repo URL used by install commands |\n| `canopy.validate.enabled` | `true` | Enable/disable all real-time validation |\n| `canopy.validate.unknownOps` | `\"warning\"` | Severity for unresolved op names: `error`, `warning`, `hint`, `none` |\n| `canopy.validate.opConformance` | `true` | Show hints when `\u003c\u003c`/`\u003e\u003e` usage doesn't match the op's declared signature |\n\n## Building from source\n\n```bash\nnpm install\nnpm run compile      # one-shot TypeScript compile\nnpm run watch        # watch mode\nnpm run package      # produces canopy-skills-\u003cversion\u003e.vsix\n```\n\nPress `F5` in VS Code to open an Extension Development Host with the extension loaded.\n\n## Links\n\n- [Canopy framework](https://github.com/kostiantyn-matsebora/claude-canopy)\n- [Extension source](https://github.com/kostiantyn-matsebora/claude-canopy-vscode)\n- [Changelog](CHANGELOG.md)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkostiantyn-matsebora%2Fclaude-canopy-vscode","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkostiantyn-matsebora%2Fclaude-canopy-vscode","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkostiantyn-matsebora%2Fclaude-canopy-vscode/lists"}