Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
113d189
Add OSS community-health files for public release (#1)
mnriem Jul 2, 2026
7b2254e
Install assess canvas extension
mnriem Jul 31, 2026
2bedb53
Guide assess prerequisite setup
mnriem Jul 31, 2026
2b93e9d
Initialize Spec Kit assess pipeline
mnriem Jul 31, 2026
0a68a44
Capture Spec Kit canvas idea
mnriem Jul 31, 2026
9555db2
Research Spec Kit SDD canvas idea
mnriem Jul 31, 2026
e490115
Define Spec Kit SDD canvas problem
mnriem Jul 31, 2026
2945b53
Shape Spec Kit SDD canvas concept
mnriem Jul 31, 2026
fa48ae9
Decide Spec Kit SDD canvas assessment
mnriem Jul 31, 2026
b2f4de9
Support rerunning assess stages
mnriem Jul 31, 2026
507313d
Align canvas with assess stage contracts
mnriem Jul 31, 2026
990012c
Render assessment Markdown previews
mnriem Jul 31, 2026
3ed6e32
Open artifacts in dedicated window
mnriem Jul 31, 2026
eba7fcf
Keep artifact preview in canvas
mnriem Jul 31, 2026
bdd60fb
Add targeted clarification workflow
mnriem Jul 31, 2026
ae156a9
Clarify target user segment
mnriem Jul 31, 2026
8028ad7
Honor assess rerun overwrite intent
mnriem Jul 31, 2026
d8c5079
Refresh shaped canvas concept
mnriem Jul 31, 2026
46dbb90
Refresh canvas assessment decision
mnriem Jul 31, 2026
90815f4
Recommend full visual SDD workspace
mnriem Jul 31, 2026
515bf76
Reassess full visual SDD workspace
mnriem Jul 31, 2026
7f16601
Refine visual SDD workflow problem
mnriem Jul 31, 2026
4807283
Align SDD canvas concept with visual goal
mnriem Jul 31, 2026
7a3392f
Reassess full visual SDD workspace
mnriem Jul 31, 2026
eb1499a
Merge remote-tracking branch 'upstream/main' into mnriem-install-asse…
mnriem Aug 3, 2026
bcdb1c1
Address assess canvas review feedback
mnriem Aug 3, 2026
53a06a9
Harden assess canvas runtime
mnriem Aug 3, 2026
676076d
Package assess canvas with plugin
mnriem Aug 3, 2026
bb42722
Finalize Copilot App canvas integration
mnriem Aug 3, 2026
30f8f18
Split assessment canvas plugin
mnriem Aug 3, 2026
b5942a2
Clarify Copilot integration scope
mnriem Aug 3, 2026
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
10 changes: 8 additions & 2 deletions .github/plugin/marketplace.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,15 +4,21 @@
"name": "GitHub"
},
"metadata": {
"description": "Spec Kit plugins for GitHub Copilot CLI.",
"version": "0.15.0"
"description": "Spec Kit integrations for GitHub Copilot CLI and the GitHub Copilot App.",
"version": "0.15.1"
},
"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",
"source": "."
},
{
"name": "spec-kit-copilot-assess",
"description": "Adds an Idea Assessment canvas for the Spec Kit assess extension.",
"version": "0.1.0",
"source": "plugins/spec-kit-copilot-assess"
}
]
}
30 changes: 20 additions & 10 deletions AGENTS.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,16 @@
# AGENTS.md — Maintainer guidance for the Spec Kit Copilot plugin
# AGENTS.md — Maintainer guidance for Spec Kit Copilot integrations

This file captures the design decisions behind this plugin so they are not
This file captures the design decisions behind these integrations so they are not
accidentally reverted when revving or regenerating it. Read this before adding,
removing, or regenerating skills.

## What this plugin is
## What this repository is

The **Copilot integration hub for Spec Kit**. It can contain independently versioned
Copilot CLI/App plugins, skills, extensions, canvases, hooks, and workflow surfaces.
Do not assume every integration belongs in the core skills plugin.

## Core skills plugin

A **GitHub Copilot CLI plugin** (`plugin.json` + `skills/<name>/SKILL.md`) that
exposes the Spec Kit **`specify` CLI** to the Copilot agent. Each skill documents a
Expand Down Expand Up @@ -44,13 +50,16 @@ runs the CLI.
handles upgrading an already-installed CLI. Keep this prerequisite wiring when
adding new skills.

3. **The plugin is not pinned to a specific Specify CLI version.** It targets the
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
`@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. When revving the plugin, bump those
versions together and update the README "Versioning" note. Note: `specify init` stamps
the plugin/skills themselves, not the CLI release. Marketplace metadata and each
plugin entry must match the component they describe; do not force unrelated plugins
to share a version. When revving a plugin, update its manifest, marketplace entry,
and README version note together. Note: `specify init` stamps
whichever installed CLI version ran it into the generated project
(`.specify/init-options.json`, integration manifests), so the CLI version is
determined at init time, not by this plugin.
Expand All @@ -67,16 +76,17 @@ runs the CLI.
and automatically on the next session start. This is distinct from this plugin's own
skills, which are refreshed with `copilot plugin install` / `/plugin`.

## When revving the plugin
## When revving the core skills plugin

1. Re-enumerate the `specify` CLI surface for the **latest** release
(`specify <group> --help`, including nested `catalog` / `step` groups).
2. Add/adjust skills for new or changed command groups — but keep decision (1):
no integration-management skill, and `init` stays Copilot + skills mode
(`--integration copilot --integration-options="--skills"`).
3. Bump the plugin's own `version` in `plugin.json` + both versions in
`.github/plugin/marketplace.json` together (independent plugin semver), and update
the README "Versioning" note. Keep the `speckit-cli-setup` skill installing the
3. Bump the core plugin's `version` in `plugin.json` and its marketplace entry
together. Bump marketplace metadata when the catalog changes. Do not bump
`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.
4. Reinstall and verify. `copilot plugin install` takes a `plugin@marketplace`,
Expand Down
86 changes: 59 additions & 27 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,28 +1,39 @@
# Spec Kit Copilot Plugin
# Spec Kit for GitHub Copilot

A GitHub Copilot CLI **skills plugin** that exposes the [Spec Kit](https://github.com/github/spec-kit)
`specify` command-line tool to the Copilot agent.
**Copilot-native integrations for Spec Kit across GitHub Copilot CLI, the Copilot
App, and VS Code.**

Instead of dispatching prompts to a separate agent, this plugin gives Copilot a set
of focused **skills** — one per `specify` command group — so the agent knows when and
how to drive the `specify` CLI on your behalf (scaffolding Copilot projects, managing
extensions/presets/bundles, running workflows, and maintaining the CLI).
This repository hosts Copilot-specific integrations and Spec Kit components tailored
for Copilot: CLI skills, App canvases, and future plugins, hooks, or workflow surfaces.
Spec Kit remains agent-agnostic; this companion repository provides the first-class
Copilot experience around it.

**Status:** active development. This is a companion to the agent-agnostic
[Spec Kit](https://github.com/github/spec-kit) project, focused on making the Copilot
CLI and Copilot App integration smoother.
**Status:** active development.

## Background

[Spec Kit](https://github.com/github/spec-kit) provides the `specify` CLI for
Spec-Driven Development and is intentionally agent-agnostic. This repository delivers
the **Copilot** companion: a skills plugin so Copilot CLI and Copilot App users get a
first-class, guided experience driving `specify` without leaving the agent.
[Spec Kit](https://github.com/github/spec-kit) provides the `specify` CLI and
agent-independent foundations for Spec-Driven Development. This repository packages
the integrations that are specifically useful to Copilot users without adding
Copilot-only behavior to the core Spec Kit project.

Contributions are welcome — see [CONTRIBUTING.md](CONTRIBUTING.md) to get started, and
[open issues](https://github.com/github/spec-kit-copilot/issues) for the current roadmap.

## Skills
## Plugins

| 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-assess` | 0.1.0 | Copilot App canvas | Optional visual dashboard for the Spec Kit `assess` extension |

The plugins are independently installable and versioned. Install the core skills,
the assessment canvas, or both.

## Core skills plugin

`spec-kit-copilot` gives Copilot focused skills—one per `specify` command group—so
the agent knows when and how to drive the CLI on your behalf.

| Skill | Wraps | Purpose |
| --- | --- | --- |
Expand All @@ -41,43 +52,58 @@ field tells Copilot when to load the skill; the body documents the exact `specif
sub-commands, options, and usage notes. The plugin is described by the
[`plugin.json`](plugin.json) manifest at the repository root.

## Assessment canvas plugin

`spec-kit-copilot-assess` ships `assess-canvas`, a side-panel dashboard for the
optional Spec Kit `assess` extension. It visualizes the intake → research → define
→ shape → decide funnel, previews artifacts, and invokes the generated assess skills.
When the project is not initialized for Spec Kit or does not have `assess`
installed, the canvas guides the agent through setup first.

The canvas has its own plugin manifest and release cadence; installing the core
`spec-kit-copilot` skills does not enable it. The canvas SDK is currently experimental,
so its wire protocol may change in future Copilot CLI releases.

## Requirements

- [GitHub Copilot CLI](https://docs.github.com/en/copilot/concepts/agents/copilot-cli/about-copilot-cli)
- Copilot CLI 1.0.71 or later when installing `spec-kit-copilot-assess`
- The Spec Kit `specify` CLI on your `PATH`:

```bash
uv tool install specify-cli # or: pipx install specify-cli
specify --version
```

> **Versioning:** this plugin is **not** pinned to a specific Specify CLI version.
> It targets the **latest** `specify` published on PyPI (package `specify-cli`), with a
> **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
> upgrade with `uv tool install specify-cli` / `uv tool upgrade specify-cli` (or the
> `pipx` equivalents), or `specify self upgrade`. The plugin's own `version` in
> `plugin.json` is independent of the CLI version.
> `pipx` equivalents), or `specify self upgrade`. Each plugin's own `version` is
> independent of the CLI version.

## Installation

### Via marketplace (recommended)

This repository ships a marketplace manifest at
[`.github/plugin/marketplace.json`](.github/plugin/marketplace.json). Register the
marketplace, then install the plugin from it:
marketplace, then install either or both plugins:

```bash
copilot plugin marketplace add OWNER/spec-kit-copilot
copilot plugin install spec-kit-copilot@spec-kit-marketplace
copilot plugin install spec-kit-copilot-assess@spec-kit-marketplace
```

### Local development install
### Local development loading

Point `copilot plugin install` at this directory while iterating (note: direct
path/URL installs are deprecated and may be removed in a future release):
Load either plugin directly from a checkout while iterating:

```bash
copilot plugin install ./spec-kit-copilot
copilot --plugin-dir . plugin list
copilot --plugin-dir plugins/spec-kit-copilot-assess plugin list
```

Verify it loaded:
Expand All @@ -88,13 +114,14 @@ copilot plugin list
/skills list
```

> When iterating on the plugin locally, run `copilot plugin install ./spec-kit-copilot`
> again to refresh the cached components.
For a persistent branch install, use `OWNER/REPO` for the core plugin or
`OWNER/REPO:plugins/spec-kit-copilot-assess` for the canvas plugin.

Uninstall with the plugin's `name` (from `plugin.json`), not its path:

```bash
copilot plugin uninstall spec-kit-copilot
copilot plugin uninstall spec-kit-copilot-assess
```

## Usage
Expand Down Expand Up @@ -122,10 +149,15 @@ See this plugin driving Spec-Driven Development end to end with this community-c

```javascript
spec-kit-copilot/
├── plugin.json # Plugin manifest (required)
├── plugin.json # Core skills plugin manifest
├── README.md
├── .github/plugin/
│ └── marketplace.json # Marketplace manifest (for distribution)
├── plugins/
│ └── spec-kit-copilot-assess/
│ ├── plugin.json # Assessment canvas plugin manifest
│ └── extensions/
│ └── assess-canvas/
└── skills/
├── speckit-cli-setup/SKILL.md
├── speckit-init/SKILL.md
Expand Down
104 changes: 104 additions & 0 deletions plugins/spec-kit-copilot-assess/extensions/assess-canvas/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,104 @@
# assess-canvas

A GitHub Copilot **canvas extension** that wraps the Spec Kit
[`assess`](https://github.com/github/spec-kit) extension — the five-stage idea
**discovery funnel** (`intake → research → define → shape → decide`) that turns
an idea into a **go / needs-clarification / kill** decision before it enters
Spec-Driven Development.

The canvas gives that pipeline a side-panel UI: it lists every assessment under
`.specify/assessments/<slug>/`, shows which stages are done, previews each
Markdown artifact, and drives the pipeline by invoking the generated
`speckit-assess-*` skills through the agent.

## What it does

- **Funnel overview** — a live count of how many ideas have reached each stage,
plus a tally of `go` / `needs-clarification` / `kill` verdicts.
- **Per-idea cards** — title, slug, a pill per stage (done / next / pending),
the recorded verdict, and a one-click **Run &lt;next stage&gt;** button.
- **Rerun from any stage** — every available stage pill stays enabled. Clicking
one opens its run dialog, where the current artifact can also be previewed.
Rerun explicitly authorizes overwrite, uses the existing artifact as context,
preserves still-valid content, and marks later artifacts stale until rerun.
- **Stage-aware inputs** — intake requires an idea; research and define require
substantive text only when their upstream artifacts are absent; shape
requires `problem.md`; decide requires `problem.md` and warns that a missing
`concept.md` prevents a go verdict. Optional stage guidance is passed through.
- **Rendered artifact preview** — view completed Markdown artifacts
(`intake.md`, `research.md`, `problem.md`, `concept.md`, `decision.md`) as
formatted headings, lists, code, blockquotes, and tables in a dedicated
full-width canvas view with a **Back to dashboard** control.
- **Targeted clarification** — clarification items in designated question
sections render a **Clarify** action. The canvas requires an answer in a
confirmation dialog before it sends a validated stage rerun and overwrite
request to the agent.
- **New idea → intake** — paste an idea (or URL), optionally set a slug, and
kick off `speckit-assess-intake`.
- **Guided prerequisite setup** — when Spec Kit or the `assess` extension is
missing, the canvas makes setup the first step and sends the required setup
work to the agent instead of forwarding an unavailable assess command.
- **Live updates** — the panel refreshes automatically (SSE) as the assess
commands write new artifacts.

The canvas is **read-only against the filesystem**; it never writes assessment
files. All changes happen through the `assess` commands themselves, so the
extension's safety guardrails still apply.

## How it drives the pipeline

Buttons in the canvas POST to a loopback HTTP endpoint, which calls
`session.send({ prompt: "/skill:speckit-assess-<stage> slug=<slug>" })`. The skill
runs in your normal chat session — watch the transcript for the agent's work
and any prompts (e.g. slug confirmation, URL-fetch approval).

Each open canvas gets a random capability token. The loopback server requires
that token and its canonical Host/Origin on UI, API, and event-stream requests.

Commands are restricted to the five `speckit-assess-*` skills and slugs are
normalized to `[a-z0-9-]`, so the canvas can only trigger assess stages.

## Agent-callable actions

- `list_assessments` — returns all assessments with per-stage progress and verdict.
- `setup_assess` — asks the agent to initialize Spec Kit and install `assess`.
- `clarify_item` — validates a clarification by artifact/index/question, captures the
user's answer, and reruns the owning stage.
- `run_stage` — runs or reruns a stage
(`{ slug, stage, idea?, instructions?, overwrite? }`) by sending the matching
command. Existing artifacts require `overwrite: true`.

## Install

**Via marketplace (recommended):**

```bash
copilot plugin marketplace add OWNER/spec-kit-copilot
copilot plugin install spec-kit-copilot-assess@spec-kit-marketplace
```

The plugin manifest lives at `plugins/spec-kit-copilot-assess/plugin.json` and
declares this directory through its `extensions/` component path.

**Anywhere else (gist):** share it as a private gist
("Share extension as gist…" in the command palette, or the `share_extension`
tool), then install with "Install extension from gist…" into
`~/.copilot/extensions/` so it follows you across projects. The bundled
`copilot-extension.json` manifest is what makes the gist install flow recognize
it.

## Requirements

The canvas detects whether the project is initialized and whether `assess` is
installed. If either prerequisite is missing, it presents a setup action before
the intake form. Assessments are written under
`.specify/assessments/<slug>/`.

## Files

| File | Purpose |
|------|---------|
| `extension.mjs` | SDK wiring: per-instance loopback server, HTTP + SSE endpoints, canvas actions, `session.send` driving. |
| `assess.mjs` | Filesystem scan: project-root resolution, stage/verdict detection, safe artifact reads. |
| `index.html` | The dashboard UI (served to the canvas iframe). |
| `copilot-extension.json` | Manifest for gist share/install. |
Loading