Skip to content

Commit 23c9452

Browse files
iamaeroplaneclaude
andcommitted
Merge upstream/main: catalog discovery, preset wrapping, opencode dispatch fixes
Conflict resolutions: - agents.py: keep extension path rewriting + adopt AGENT_CONFIGS-based skill placeholder check; retain passthrough keys loop for context/agent/model; combine manifest dict-merge with upstream's strategy:wrap preset support; add resolve_skill_placeholders/arg conversion to markdown path while preserving Copilot behavior translation - behavior.py: restore execution:agent/isolated → ("mode","agent") for Copilot (8facd0e accidentally changed these to (None,None)) - tests: replace TestSkillsIntegrationBehaviorTranslation with upstream's TestClaudeDisableModelInvocation; fix translator tests to match restored Copilot mode:agent mappings Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2 parents 3474955 + ab9c702 commit 23c9452

166 files changed

Lines changed: 14341 additions & 4337 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/docs.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ jobs:
5151
uses: actions/configure-pages@v6
5252

5353
- name: Upload artifact
54-
uses: actions/upload-pages-artifact@v3
54+
uses: actions/upload-pages-artifact@v5
5555
with:
5656
path: 'docs/_site'
5757

.github/workflows/test.yml

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ jobs:
1616
uses: actions/checkout@v4
1717

1818
- name: Install uv
19-
uses: astral-sh/setup-uv@cec208311dfd045dd5311c1add060b2062131d57 # v8.0.0
19+
uses: astral-sh/setup-uv@08807647e7069bb48b6ef5acd8ec9567f424441b # v8.1.0
2020

2121
- name: Set up Python
2222
uses: actions/setup-python@v6
@@ -27,16 +27,17 @@ jobs:
2727
run: uvx ruff check src/
2828

2929
pytest:
30-
runs-on: ubuntu-latest
30+
runs-on: ${{ matrix.os }}
3131
strategy:
3232
matrix:
33+
os: [ubuntu-latest, windows-latest]
3334
python-version: ["3.11", "3.12", "3.13"]
3435
steps:
3536
- name: Checkout
3637
uses: actions/checkout@v4
3738

3839
- name: Install uv
39-
uses: astral-sh/setup-uv@cec208311dfd045dd5311c1add060b2062131d57 # v8.0.0
40+
uses: astral-sh/setup-uv@08807647e7069bb48b6ef5acd8ec9567f424441b # v8.1.0
4041

4142
- name: Set up Python ${{ matrix.python-version }}
4243
uses: actions/setup-python@v6
@@ -46,5 +47,9 @@ jobs:
4647
- name: Install dependencies
4748
run: uv sync --extra test
4849

50+
# On windows-latest, bash tests auto-skip unless Git-for-Windows
51+
# bash (MSYS2/MINGW) is detected. The WSL launcher is rejected
52+
# because it cannot handle native Windows paths in test fixtures.
53+
# See tests/conftest.py::_has_working_bash() for details.
4954
- name: Run tests
5055
run: uv run pytest

.zenodo.json

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
{
2+
"title": "Spec Kit",
3+
"description": "Spec Kit is an open source toolkit for Spec-Driven Development (SDD) — a methodology that helps software teams build high-quality software faster by focusing on product scenarios and predictable outcomes. It provides the Specify CLI, slash-command templates, extensions, presets, workflows, and integrations for popular AI coding agents.",
4+
"creators": [
5+
{
6+
"name": "Delimarsky, Den"
7+
},
8+
{
9+
"name": "Riem, Manfred"
10+
}
11+
],
12+
"license": "MIT",
13+
"upload_type": "software",
14+
"keywords": [
15+
"spec-driven development",
16+
"ai coding agents",
17+
"software engineering",
18+
"cli",
19+
"copilot",
20+
"specification"
21+
],
22+
"related_identifiers": [
23+
{
24+
"identifier": "https://github.com/github/spec-kit",
25+
"relation": "isSupplementTo",
26+
"scheme": "url"
27+
}
28+
]
29+
}

AGENTS.md

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -264,13 +264,13 @@ The base classes handle most work automatically. Override only when the agent de
264264
| Override | When to use | Example |
265265
|---|---|---|
266266
| `command_filename(template_name)` | Custom file naming or extension | Copilot → `speckit.{name}.agent.md` |
267-
| `options()` | Integration-specific CLI flags via `--integration-options` | Codex → `--skills` flag |
268-
| `setup()` | Custom install logic (companion files, settings merge) | Copilot → `.agent.md` + `.prompt.md` + `.vscode/settings.json` |
267+
| `options()` | Integration-specific CLI flags via `--integration-options` | Codex → `--skills` flag, Copilot → `--skills` flag |
268+
| `setup()` | Custom install logic (companion files, settings merge) | Copilot → `.agent.md` + `.prompt.md` + `.vscode/settings.json` (default) or `speckit-<name>/SKILL.md` (skills mode) |
269269
| `teardown()` | Custom uninstall logic | Rarely needed; base handles manifest-tracked files |
270270

271271
**Example — Copilot (fully custom `setup`):**
272272

273-
Copilot extends `IntegrationBase` directly because it creates `.agent.md` commands, companion `.prompt.md` files, and merges `.vscode/settings.json`. See `src/specify_cli/integrations/copilot/__init__.py` for the full implementation.
273+
Copilot extends `IntegrationBase` directly because it creates `.agent.md` commands, companion `.prompt.md` files, and merges `.vscode/settings.json`. It also supports a `--skills` mode that scaffolds `speckit-<name>/SKILL.md` under `.github/skills/` using composition with an internal `_CopilotSkillsHelper`. See `src/specify_cli/integrations/copilot/__init__.py` for the full implementation.
274274

275275
### 7. Update Devcontainer files (Optional)
276276

@@ -391,6 +391,24 @@ Implementation: Extends `IntegrationBase` with custom `setup()` method that:
391391
2. Generates companion `.prompt.md` files
392392
3. Merges VS Code settings
393393

394+
**Skills mode (`--skills`):** Copilot also supports an alternative skills-based layout
395+
via `--integration-options="--skills"`. When enabled:
396+
- Commands are scaffolded as `speckit-<name>/SKILL.md` under `.github/skills/`
397+
- No companion `.prompt.md` files are generated
398+
- No `.vscode/settings.json` merge
399+
- `post_process_skill_content()` injects a `mode: speckit.<stem>` frontmatter field
400+
- `build_command_invocation()` returns `/speckit-<stem>` instead of bare args
401+
402+
The two modes are mutually exclusive — a project uses one or the other:
403+
404+
```bash
405+
# Default mode: .agent.md agents + .prompt.md companions + settings merge
406+
specify init my-project --integration copilot
407+
408+
# Skills mode: speckit-<name>/SKILL.md under .github/skills/
409+
specify init my-project --integration copilot --integration-options="--skills"
410+
```
411+
394412
### Forge Integration
395413

396414
Forge has special frontmatter and argument requirements:

CHANGELOG.md

Lines changed: 120 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,126 @@
22

33
<!-- insert new changelog below this comment -->
44

5+
## [0.8.2] - 2026-04-28
6+
7+
### Changed
8+
9+
- Add MarkItDown Document Converter extension to community catalog (#2390)
10+
- feat: Speckit preset fiction book v1.7 - Support for RAG (Chroma DB) offline semantic search (#2367)
11+
- fix(extensions): use explicit UTF-8 encoding when reading manifest YAML (#2370)
12+
- catalog: add m365 community extension
13+
- docs: replace deprecated --ai flag with --integration in all documentation (#2359)
14+
- feat(extensions,presets): authenticate GitHub-hosted catalog and download requests with GITHUB_TOKEN/GH_TOKEN (#2331)
15+
- Update extensify to v1.1.0 in community catalog (#2337)
16+
- feat(init): deprecate --no-git flag, gate deprecations at v0.10.0 (#2357)
17+
- Add Spec Orchestrator extension to community catalog (#2350)
18+
- chore: release 0.8.1, begin 0.8.2.dev0 development (#2356)
19+
20+
## [0.8.1] - 2026-04-24
21+
22+
### Changed
23+
24+
- fix(plan): use .specify/feature.json to allow /speckit.plan on custom git branches (#2305) (#2349)
25+
- feat(vibe): migrate to SkillsIntegration from the old prompts-based MarkdownIntegration (#2336)
26+
- docs: move community presets table to docs site, add missing entries (#2341)
27+
- docs(presets): add lean preset README and enrich catalog metadata (#2340)
28+
- fix: resolve command references per integration type (dot vs hyphen) (#2354)
29+
- Update product-forge to v1.5.1 in community catalog (#2352)
30+
- chore(deps): bump astral-sh/setup-uv from 8.0.0 to 8.1.0 (#2345)
31+
- fix: replace xargs trim with sed to handle quotes in descriptions (#2351)
32+
- feat: register jira preset in community catalog (#2224)
33+
- feat: Preset screenwriting (#2332)
34+
- chore: release 0.8.0, begin 0.8.1.dev0 development (#2333)
35+
36+
## [0.8.0] - 2026-04-23
37+
38+
### Changed
39+
40+
- feat(presets): Composition strategies (prepend, append, wrap) for templates, commands, and scripts (#2133)
41+
- feat(copilot): support `--integration-options="--skills"` for skills-based scaffolding (#2324)
42+
- docs(install): add pipx as alternative installation method (#2288)
43+
- Add Memory MD community extension (#2327)
44+
- Update version-guard to v1.2.0 (#2321)
45+
- fix: `--force` now overwrites shared infra files during init and upgrade (#2320)
46+
- chore: release 0.7.5, begin 0.7.6.dev0 development (#2322)
47+
48+
## [0.7.5] - 2026-04-22
49+
50+
### Changed
51+
52+
- fix: resolve skill placeholders for all SKILL.md agents, not just codex/kimi (#2313)
53+
- feat(cli): add specify self check and self upgrade stub (#2316)
54+
- Update version-guard to v1.1.0 (#2318)
55+
- docs: move community presets from README to docs/community (#2314)
56+
- catalog: add wireframe extension (v0.1.1) (#2262)
57+
- Move community walkthroughs from README to docs/community (#2312)
58+
- docs(readme): list red-team in community-extensions table (#2311)
59+
- feat(catalog): add red-team extension to community catalog (#2306)
60+
- Add superpowers-bridge community extension (#2309)
61+
- feat: implement preset wrap strategy (#2189)
62+
- fix(agents): block directory traversal in command write paths (#2229) (#2296)
63+
- chore: release 0.7.4, begin 0.7.5.dev0 development (#2299)
64+
65+
## [0.7.4] - 2026-04-21
66+
67+
### Changed
68+
69+
- fix(copilot): use --yolo to grant all permissions in non-interactive mode (#2298)
70+
- feat: add CITATION.cff and .zenodo.json for academic citation support (#2291)
71+
- Add spec-validate to community catalog (#2274)
72+
- feat: register Ripple in community catalog (#2272)
73+
- Add version-guard to community catalog (#2286)
74+
- Add spec-reference-loader to community catalog (#2285)
75+
- Add memory-loader to community catalog (#2284)
76+
- fix(integrations): strip UTF-8 BOM when reading agent context files (#2283)
77+
- Preset fiction book writing1.6 (#2270)
78+
- fix(integrations): migrate Antigravity (agy) layout to .agents/ and deprecate --skills (#2276)
79+
- chore: release 0.7.3, begin 0.7.4.dev0 development (#2263)
80+
81+
## [0.7.3] - 2026-04-17
82+
83+
### Changed
84+
85+
- fix: replace shell-based context updates with marker-based upsert (#2259)
86+
- Add Community Friends page to docs site (#2261)
87+
- Add Spec Scope extension to community catalog (#2172)
88+
- docs: add Community-maintained plugin for Claude Code and GitHub Copilot CLI that installs Spec Kit skills via the plugin marketplace to README (#2250)
89+
- fix: suppress CRLF warnings in auto-commit.ps1 (#2258)
90+
- feat: register Blueprint in community catalog (#2252)
91+
- preset: Update preset-fiction-book-writing to community catalog -> v1.5.0 (#2256)
92+
- chore(deps): bump actions/upload-pages-artifact from 3 to 5 (#2251)
93+
- fix: add reference/*.md to docfx content glob (#2248)
94+
- chore: release 0.7.2, begin 0.7.3.dev0 development (#2247)
95+
96+
## [0.7.2] - 2026-04-16
97+
98+
### Changed
99+
100+
- docs: add core commands reference and simplify README CLI section (#2245)
101+
- docs: add workflows reference, reorganize into docs/reference/, and add --version flag (#2244)
102+
- docs: add presets reference page and rename pack_id to preset_id (#2243)
103+
- docs: add extensions reference page and integrations FAQ (#2242)
104+
- docs: consolidate integration documentation into docs/integrations.md (#2241)
105+
- feat: update memorylint and superpowers-bridge versions to 1.3.0 with new download URLs (#2240)
106+
- feat: Integration catalog — discovery, versioning, and community distribution (#2130)
107+
- Add Catalog CI extension to community catalog (#2239)
108+
- Added issues extension (#2194)
109+
- chore: release 0.7.1, begin 0.7.2.dev0 development (#2235)
110+
111+
## [0.7.1] - 2026-04-15
112+
113+
### Changed
114+
115+
- ci: add windows-latest to test matrix (#2233)
116+
- docs: remove deprecated --skip-tls references from local-development guide (#2231)
117+
- fix: allow Claude to chain skills for hook execution (#2227)
118+
- docs: merge TESTING.md into CONTRIBUTING.md, remove TESTING.md (#2228)
119+
- Add agent-assign extension to community catalog (#2030)
120+
- fix: unofficial PyPI warning (#1982) and legacy extension command name auto-correction (#2017) (#2027)
121+
- feat: register architect-preview in community catalog (#2214)
122+
- chore: deprecate --ai flag in favor of --integration on specify init (#2218)
123+
- chore: release 0.7.0, begin 0.7.1.dev0 development (#2217)
124+
5125
## [0.7.0] - 2026-04-14
6126

7127
### Changed

CITATION.cff

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
cff-version: 1.2.0
2+
message: >-
3+
If you use Spec Kit in your research or reference it in a paper,
4+
please cite it using the metadata below.
5+
type: software
6+
title: "Spec Kit"
7+
abstract: >-
8+
Spec Kit is an open source toolkit for Spec-Driven Development (SDD) —
9+
a methodology that helps software teams build high-quality software faster
10+
by focusing on product scenarios and predictable outcomes. It provides the
11+
Specify CLI, slash-command templates, extensions, presets, workflows, and
12+
integrations for popular AI coding agents.
13+
authors:
14+
- given-names: Den
15+
family-names: Delimarsky
16+
alias: localden
17+
- given-names: Manfred
18+
family-names: Riem
19+
alias: mnriem
20+
repository-code: "https://github.com/github/spec-kit"
21+
url: "https://github.github.io/spec-kit/"
22+
license: MIT
23+
version: "0.7.3"
24+
date-released: "2026-04-17"
25+
keywords:
26+
- spec-driven development
27+
- ai coding agents
28+
- software engineering
29+
- cli
30+
- copilot
31+
- specification

CONTRIBUTING.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ These are one time installations required to be able to test your changes locall
1111
1. Install [Python 3.11+](https://www.python.org/downloads/)
1212
1. Install [uv](https://docs.astral.sh/uv/) for package management
1313
1. Install [Git](https://git-scm.com/downloads)
14-
1. Have an [AI coding agent available](README.md#-supported-ai-agents)
14+
1. Have an [AI coding agent available](README.md#-supported-ai-coding-agent-integrations)
1515

1616
<details>
1717
<summary><b>💡 Hint if you are using <code>VSCode</code> or <code>GitHub Codespaces</code> as your IDE</b></summary>
@@ -94,15 +94,15 @@ uv pip install -e .
9494
# Ensure the `specify` binary in this environment points at your working tree so the agent runs the branch you're testing.
9595

9696
# Initialize a test project using your local changes
97-
uv run specify init <temp-dir>/speckit-test --ai <agent> --offline
97+
uv run specify init <temp-dir>/speckit-test --integration <agent>
9898
cd <temp-dir>/speckit-test
9999

100100
# Open in your agent
101101
```
102102

103103
#### Manual testing process
104104

105-
Any change that affects a slash command's behavior requires manually testing that command through an AI agent and submitting results with the PR.
105+
Any change that affects a slash command's behavior requires manually testing that command through a coding agent and submitting results with the PR.
106106

107107
1. **Identify affected commands** — use the [prompt below](#determining-which-tests-to-run) to have your agent analyze your changed files and determine which commands need testing.
108108
2. **Set up a test project** — scaffold from your local branch (see [Testing setup](#testing-setup)).

0 commit comments

Comments
 (0)