Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/plugin/marketplace.json
Original file line number Diff line number Diff line change
Expand Up @@ -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": "."
},
{
Expand Down
6 changes: 4 additions & 2 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -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`)
Expand All @@ -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
Comment thread
nicolehaugen marked this conversation as resolved.
`@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
Expand Down Expand Up @@ -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
Expand Down
2 changes: 1 addition & 1 deletion CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
7 changes: 5 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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 |
Expand Down Expand Up @@ -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) |
Expand Down Expand Up @@ -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.
Expand Down Expand Up @@ -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
Expand Down
4 changes: 2 additions & 2 deletions plugin.json
Original file line number Diff line number Diff line change
@@ -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"
Expand Down
62 changes: 62 additions & 0 deletions skills/speckit-artifact/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
---
name: speckit-artifact
Comment thread
nicolehaugen marked this conversation as resolved.
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: '<list|info|lookup> [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 <name> --json
specify artifact info <kind>:<name> --json
specify artifact info <name> --kind <command|template|script|hook> --json

# Resolve a manifest-backed stack layer to its effective contribution
specify artifact lookup <lookupId> --json
```

## Identifiers

- An artifact `id` has the form `<kind>:<name>`, 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.
8 changes: 7 additions & 1 deletion skills/speckit-extension/SKILL.md
Original file line number Diff line number Diff line change
@@ -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: '<list|add|remove|search|info|update|enable|disable|set-priority|catalog> [extension]'
---

Expand All @@ -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 <query>
specify extension info <name>

Expand Down Expand Up @@ -52,6 +53,11 @@ specify extension catalog remove <name>
## 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.
Expand Down
7 changes: 6 additions & 1 deletion skills/speckit-preset/SKILL.md
Original file line number Diff line number Diff line change
@@ -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: '<list|add|remove|search|resolve|info|set-priority|enable|disable|catalog> [preset id]'
---

Expand All @@ -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 <query>
specify preset info <id>
specify preset resolve <name> # show which template a name resolves to
Expand All @@ -48,6 +49,10 @@ specify preset catalog remove <name>
## 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
Expand Down