From ace0f66da9da3b70043d58257159befa1093ddf7 Mon Sep 17 00:00:00 2001 From: Nicole Haugen Date: Wed, 16 Sep 2026 12:02:04 -0500 Subject: [PATCH 1/3] Add artifact introspection skill Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> --- .github/plugin/marketplace.json | 4 +- README.md | 7 +++- plugin.json | 4 +- skills/speckit-artifact/SKILL.md | 62 +++++++++++++++++++++++++++++++ skills/speckit-extension/SKILL.md | 8 +++- skills/speckit-preset/SKILL.md | 7 +++- 6 files changed, 84 insertions(+), 8 deletions(-) create mode 100644 skills/speckit-artifact/SKILL.md diff --git a/.github/plugin/marketplace.json b/.github/plugin/marketplace.json index 5247e79..3790c86 100644 --- a/.github/plugin/marketplace.json +++ b/.github/plugin/marketplace.json @@ -5,13 +5,13 @@ }, "metadata": { "description": "Spec Kit integrations for GitHub Copilot CLI and the GitHub Copilot App.", - "version": "0.18.1" + "version": "0.19.0" }, "plugins": [ { "name": "spec-kit-copilot", "description": "Exposes the Spec Kit (specify) CLI to GitHub Copilot CLI as skills for spec-driven development.", - "version": "0.15.0", + "version": "0.16.0", "source": "." }, { diff --git a/README.md b/README.md index 4c5e939..8b248ea 100644 --- a/README.md +++ b/README.md @@ -39,7 +39,7 @@ Contributions are welcome — see [CONTRIBUTING.md](CONTRIBUTING.md) to get star | Plugin | Version | Surface | Purpose | | --- | --- | --- | --- | -| `spec-kit-copilot` | 0.15.0 | Copilot CLI and App agent | Core skills that teach Copilot how to run `specify` | +| `spec-kit-copilot` | 0.16.0 | Copilot CLI and App agent | Core skills that teach Copilot how to run `specify` | | `spec-kit-copilot-assess` | 0.1.0 | Copilot App canvas | Optional visual dashboard for the Spec Kit `assess` extension | | `spec-kit-copilot-bugfix` | 0.1.0 | Copilot App canvas | Optional visual dashboard for the Spec Kit `bug` extension | | `spec-kit-copilot-sdd` | 0.1.0 | Copilot App canvas | Optional visual dashboard for the core spec-driven development workflow | @@ -78,6 +78,7 @@ the agent knows when and how to drive the CLI on your behalf. | `speckit-check` | `specify check`, `specify version` | Verify tools, report version/features | | `speckit-extension` | `specify extension …` | Install/update/search spec-kit extensions (+ catalogs) | | `speckit-preset` | `specify preset …` | Install/search/resolve presets (+ catalogs) | +| `speckit-artifact` | `specify artifact …` | Inspect commands, templates, scripts, hooks, and their composition stacks | | `speckit-bundle` | `specify bundle …` | Discover, install, update, and author bundles (+ catalogs) | | `speckit-workflow` | `specify workflow …` | Run/resume/inspect automation workflows (+ catalogs) | | `speckit-workflow-step` | `specify workflow step …` | Manage workflow step types (+ catalogs) | @@ -127,7 +128,8 @@ own README for full details. > **Versioning:** each plugin has an independent version and is not pinned to a > specific Specify CLI version. The core plugin targets the **latest** `specify` > published on PyPI (package `specify-cli`), with a -> minimum floor of **>= 0.11** for the `bundle` / `workflow step` skills. Install or +> minimum floor of **>= 0.11** for the `bundle` / `workflow step` skills and +> **>= 1.0.7** for the `artifact` skill and preset/extension JSON inventory. Install or > upgrade with `uv tool install specify-cli` / `uv tool upgrade specify-cli` (or the > `pipx` equivalents), or `specify self upgrade`. Each plugin's own `version` is > independent of the CLI version. @@ -252,6 +254,7 @@ spec-kit-copilot/ ├── speckit-check/SKILL.md ├── speckit-extension/SKILL.md ├── speckit-preset/SKILL.md + ├── speckit-artifact/SKILL.md ├── speckit-bundle/SKILL.md ├── speckit-workflow/SKILL.md ├── speckit-workflow-step/SKILL.md diff --git a/plugin.json b/plugin.json index 2de52d0..4bcf32d 100644 --- a/plugin.json +++ b/plugin.json @@ -1,7 +1,7 @@ { "name": "spec-kit-copilot", - "description": "Spec Kit for GitHub Copilot CLI. Exposes the Specify CLI — part of GitHub Spec Kit, a toolkit for Spec-Driven Development (SDD) — to the Copilot agent as skills for scaffolding projects and managing extensions, presets, bundles, and workflows.", - "version": "0.15.0", + "description": "Spec Kit for GitHub Copilot CLI. Exposes the Specify CLI — part of GitHub Spec Kit, a toolkit for Spec-Driven Development (SDD) — to the Copilot agent as skills for scaffolding projects and managing extensions, presets, artifacts, bundles, and workflows.", + "version": "0.16.0", "author": { "name": "GitHub", "url": "https://github.com/github/spec-kit-copilot" diff --git a/skills/speckit-artifact/SKILL.md b/skills/speckit-artifact/SKILL.md new file mode 100644 index 0000000..5d29d3c --- /dev/null +++ b/skills/speckit-artifact/SKILL.md @@ -0,0 +1,62 @@ +--- +name: speckit-artifact +description: 'Inspect the effective Spec Kit artifact inventory and composition stacks via `specify artifact`. USE FOR: listing commands/templates/scripts/hooks, explaining which preset or extension layer supplies an artifact, inspecting resolution precedence and hidden layers, checking hook registration, or resolving a stack lookupId to its validated contribution. DO NOT USE FOR: installing or changing presets/extensions (use speckit-preset or speckit-extension), resolving only a preset-managed filename (use speckit-preset), or running an artifact.' +argument-hint: ' [artifact name or lookupId] --json' +--- + +# Spec Kit — artifacts + +Inspect commands, templates, scripts, hooks, and their effective composition +stacks with the **Specify CLI** `specify artifact` command group. Requires +Specify CLI **>= 1.0.7**. + +> **Prerequisite:** needs the `specify` CLI. If `specify --version` fails, install it +> with the **speckit-cli-setup** skill first. + +## When to use + +- List every command, template, script, and hook visible to a Spec Kit project. +- Explain which project, preset, extension, or built-in layer supplies an artifact. +- Inspect precedence, composition strategy, active layers, and hidden layers. +- Check whether declared hooks are registered and active. +- Resolve a stack entry back to the validated manifest contribution Spec Kit uses. + +## How to invoke + +```bash +# Full artifact inventory, including composition stacks +specify artifact list --json + +# Inspect one artifact by bare name or source-agnostic artifact id +specify artifact info --json +specify artifact info : --json +specify artifact info --kind --json + +# Resolve a manifest-backed stack layer to its effective contribution +specify artifact lookup --json +``` + +## Identifiers + +- An artifact `id` has the form `:`, such as + `command:speckit.specify`. Pass this value to `specify artifact info`. +- A stack entry's `lookupId` identifies the preset or extension contribution + behind that layer. Pass this opaque value unchanged to + `specify artifact lookup`. +- Built-in layers do not have a `lookupId`. Project or convention-only layers may + not have a manifest contribution that `lookup` can resolve. + +## Notes + +- All `specify artifact` subcommands are read-only. +- `--json` is currently required. A missing `--json` is a usage error. +- Run commands from an initialized Spec Kit project containing `.specify/`. +- `list` and `info` return ordered stacks. For commands, templates, and scripts, + index `0` is the winning layer. Hook stacks are additive, so multiple entries + can be active. +- Composition strategies are `replace`, `wrap`, `prepend`, `append`, and + `additive` for hooks. +- `active` and `hidden` are independent: an inactive layer can still participate + in composed output unless a higher `replace` layer hides it. +- Hook artifact ids percent-encode event and target-command components. Reuse ids + and lookupIds exactly as returned instead of constructing them manually. diff --git a/skills/speckit-extension/SKILL.md b/skills/speckit-extension/SKILL.md index 486a364..eae78ec 100644 --- a/skills/speckit-extension/SKILL.md +++ b/skills/speckit-extension/SKILL.md @@ -1,6 +1,6 @@ --- name: speckit-extension -description: 'Manage Spec Kit extensions via `specify extension`. USE FOR: installing/removing/updating spec-kit extensions, searching the extension catalog, showing extension info, enabling/disabling extensions, setting extension resolution priority, managing extension catalogs. DO NOT USE FOR: presets (use speckit-preset), bundles (use speckit-bundle), or workflows (use speckit-workflow).' +description: 'Manage Spec Kit extensions via `specify extension`. USE FOR: listing installed extensions as text or JSON, installing/removing/updating extensions, searching the extension catalog, showing extension info, enabling/disabling extensions, setting resolution priority, or managing extension catalogs. DO NOT USE FOR: artifact composition stacks (use speckit-artifact), presets (use speckit-preset), bundles (use speckit-bundle), or workflows (use speckit-workflow).' argument-hint: ' [extension]' --- @@ -23,6 +23,7 @@ group. Extensions add reusable commands/hooks to a spec-kit project. ```bash # Discover specify extension list +specify extension list --json # machine-readable installed inventory (CLI >= 1.0.7) specify extension search specify extension info @@ -52,6 +53,11 @@ specify extension catalog remove ## Notes - Resolution priority: **lower number = higher precedence** (default `10`). +- `specify extension list --json` requires Specify CLI **>= 1.0.7** and returns + installed extensions only, even when combined with `--available` or `--all`. + Each item includes `id`, `name`, `description`, `version`, nullable `author`, + `priority`, `enabled`, normalized `source`, and `provides` counts for commands, + templates, scripts, and hooks. - Prefer `specify extension search` first so you install the correct extension ID. - `--dev` is for local development of an extension; point it at the extension's source directory. diff --git a/skills/speckit-preset/SKILL.md b/skills/speckit-preset/SKILL.md index 02c25a8..e929413 100644 --- a/skills/speckit-preset/SKILL.md +++ b/skills/speckit-preset/SKILL.md @@ -1,6 +1,6 @@ --- name: speckit-preset -description: 'Manage Spec Kit presets via `specify preset`. USE FOR: installing/removing presets, searching the preset catalog, showing preset info, resolving which template a preset name maps to, enabling/disabling presets, setting preset resolution priority, managing preset catalogs. DO NOT USE FOR: extensions (use speckit-extension), bundles (use speckit-bundle), or workflows (use speckit-workflow).' +description: 'Manage Spec Kit presets via `specify preset`. USE FOR: listing installed presets as text or JSON, installing/removing presets, searching the preset catalog, showing preset info, resolving which template a preset name maps to, enabling/disabling presets, setting resolution priority, or managing preset catalogs. DO NOT USE FOR: full artifact composition stacks (use speckit-artifact), extensions (use speckit-extension), bundles (use speckit-bundle), or workflows (use speckit-workflow).' argument-hint: ' [preset id]' --- @@ -23,6 +23,7 @@ Presets bundle templates/configuration for a particular domain or workflow. ```bash # Discover specify preset list +specify preset list --json # machine-readable installed inventory (CLI >= 1.0.7) specify preset search specify preset info specify preset resolve # show which template a name resolves to @@ -48,6 +49,10 @@ specify preset catalog remove ## Notes - Resolution priority: **lower number = higher precedence** (default `10`). +- `specify preset list --json` requires Specify CLI **>= 1.0.7**. It preserves + CLI resolution order (highest precedence first) and returns `id`, `name`, + `description`, `version`, nullable `author`, `priority`, `enabled`, normalized + `source`, and `provides` counts for commands, templates, and scripts. - **Catalogs are added discovery-only by default.** `specify preset catalog add` requires `--name` and defaults to `--no-install-allowed`; presets from a discovery-only catalog can be browsed but not installed (install errors with a From 97718f1055b16195864325ac4399c68f650fbf47 Mon Sep 17 00:00:00 2001 From: Nicole Haugen Date: Wed, 16 Sep 2026 12:52:51 -0500 Subject: [PATCH 2/3] Document artifact skill compatibility Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> --- AGENTS.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/AGENTS.md b/AGENTS.md index 42c9c63..3aab9f8 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -37,6 +37,7 @@ runs the CLI. - `speckit-cli-setup` → detect/install the `specify` CLI (bootstrap; prerequisite for all others) - `speckit-init` → `specify init` (Copilot only) - `speckit-check` → `specify check`, `specify version` + - `speckit-artifact` → `specify artifact …` - `speckit-extension` → `specify extension …` (+ `catalog`) - `speckit-preset` → `specify preset …` (+ `catalog`) - `speckit-bundle` → `specify bundle …` (+ `catalog`) @@ -53,7 +54,8 @@ runs the CLI. 3. **Plugins are independently versioned and are not pinned to Specify CLI.** The core `spec-kit-copilot` plugin targets the **latest** `specify` published on PyPI (package `specify-cli`), with a minimum floor - of **>= 0.11** for the `bundle` / `workflow step` skills — do **not** hard-pin an + of **>= 0.11** for the `bundle` / `workflow step` skills and **>= 1.0.7** for the + `artifact` skill and preset/extension JSON inventory — do **not** hard-pin an `@vX.Y.Z` install tag in the skills. The plugin's own `version` in `plugin.json` and `.github/plugin/marketplace.json` is an **independent** semver that tracks changes to the plugin/skills themselves, not the CLI release. Marketplace metadata and each @@ -124,7 +126,7 @@ toolchains: `spec-kit-copilot-assess` unless that plugin changes. Update the README "Versioning" note. Keep the `speckit-cli-setup` skill installing the **latest** `specify-cli` from PyPI (no `@vX.Y.Z` pin); only touch the `>= 0.11` - minimum notes if the floor actually changes. + and `>= 1.0.7` minimum notes if the floors actually change. 4. Reinstall and verify. `copilot plugin install` takes a `plugin@marketplace`, `owner/repo`, `owner/repo:path`, or git URL — it does **not** accept a local path. After the change is pushed and the marketplace catalog is refreshed From 385eba504960ac196c028a25f05dd3860fc89b01 Mon Sep 17 00:00:00 2001 From: Nicole Haugen Date: Wed, 16 Sep 2026 12:57:12 -0500 Subject: [PATCH 3/3] docs: sync contributor CLI floors Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> --- CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 7e4bfe2..c12950e 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -47,7 +47,7 @@ Here are a few things you can do that will increase the likelihood of your pull ### Versioning -This plugin is **not** pinned to a specific `specify` CLI version — it targets the **latest** `specify-cli` published on PyPI, with a minimum floor of **>= 0.11** for the `bundle` / `workflow step` skills. The plugin's own `version` in `plugin.json` (and `.github/plugin/marketplace.json`) is an independent semver that tracks changes to the plugin/skills, not the CLI release. When revving, bump `plugin.json` and both `.github/plugin/marketplace.json` versions together, and update the README "Versioning" note. See [`AGENTS.md`](AGENTS.md) for the full checklist. +This plugin is **not** pinned to a specific `specify` CLI version — it targets the **latest** `specify-cli` published on PyPI, with a minimum floor of **>= 0.11** for the `bundle` / `workflow step` skills and **>= 1.0.7** for the `artifact` skill and preset/extension JSON inventory. The plugin's own `version` in `plugin.json` (and `.github/plugin/marketplace.json`) is an independent semver that tracks changes to the plugin/skills, not the CLI release. When revving, bump `plugin.json` and both `.github/plugin/marketplace.json` versions together, and update the README "Versioning" note. See [`AGENTS.md`](AGENTS.md) for the full checklist. ## Resources