Skip to content

Commit fbf5248

Browse files
authored
Merge branch 'main' into add-cognitive-squad-extension
2 parents 4657bf6 + 1a21bde commit fbf5248

28 files changed

+1982
-205
lines changed

.devcontainer/post-create.sh

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,10 @@ echo -e "\n🤖 Installing OpenCode CLI..."
5151
run_command "npm install -g opencode-ai@latest"
5252
echo "✅ Done"
5353

54+
echo -e "\n🤖 Installing Pi Coding Agent..."
55+
run_command "npm install -g @mariozechner/pi-coding-agent@latest"
56+
echo "✅ Done"
57+
5458
echo -e "\n🤖 Installing Kiro CLI..."
5559
# https://kiro.dev/docs/cli/
5660
KIRO_INSTALLER_URL="https://kiro.dev/install.sh"

.github/workflows/scripts/create-github-release.sh

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,10 @@ gh release create "$VERSION" \
5858
.genreleases/spec-kit-template-vibe-ps-"$VERSION".zip \
5959
.genreleases/spec-kit-template-kimi-sh-"$VERSION".zip \
6060
.genreleases/spec-kit-template-kimi-ps-"$VERSION".zip \
61+
.genreleases/spec-kit-template-trae-sh-"$VERSION".zip \
62+
.genreleases/spec-kit-template-trae-ps-"$VERSION".zip \
63+
.genreleases/spec-kit-template-pi-sh-"$VERSION".zip \
64+
.genreleases/spec-kit-template-pi-ps-"$VERSION".zip \
6165
.genreleases/spec-kit-template-generic-sh-"$VERSION".zip \
6266
.genreleases/spec-kit-template-generic-ps-"$VERSION".zip \
6367
--title "Spec Kit Templates - $VERSION_NO_V" \

.github/workflows/scripts/create-release-packages.ps1

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
1515
.PARAMETER Agents
1616
Comma or space separated subset of agents to build (default: all)
17-
Valid agents: claude, gemini, copilot, cursor-agent, qwen, opencode, windsurf, codex, kilocode, auggie, roo, codebuddy, amp, kiro-cli, bob, qodercli, shai, tabnine, agy, vibe, kimi, generic
17+
Valid agents: claude, gemini, copilot, cursor-agent, qwen, opencode, windsurf, codex, kilocode, auggie, roo, codebuddy, amp, kiro-cli, bob, qodercli, shai, tabnine, agy, vibe, kimi, trae, pi, generic
1818
1919
.PARAMETER Scripts
2020
Comma or space separated subset of script types to build (default: both)
@@ -454,6 +454,15 @@ function Build-Variant {
454454
New-Item -ItemType Directory -Force -Path $skillsDir | Out-Null
455455
New-KimiSkills -SkillsDir $skillsDir -ScriptVariant $Script
456456
}
457+
'trae' {
458+
$rulesDir = Join-Path $baseDir ".trae/rules"
459+
New-Item -ItemType Directory -Force -Path $rulesDir | Out-Null
460+
Generate-Commands -Agent 'trae' -Extension 'md' -ArgFormat '$ARGUMENTS' -OutputDir $rulesDir -ScriptVariant $Script
461+
}
462+
'pi' {
463+
$cmdDir = Join-Path $baseDir ".pi/prompts"
464+
Generate-Commands -Agent 'pi' -Extension 'md' -ArgFormat '$ARGUMENTS' -OutputDir $cmdDir -ScriptVariant $Script
465+
}
457466
'generic' {
458467
$cmdDir = Join-Path $baseDir ".speckit/commands"
459468
Generate-Commands -Agent 'generic' -Extension 'md' -ArgFormat '$ARGUMENTS' -OutputDir $cmdDir -ScriptVariant $Script
@@ -470,7 +479,7 @@ function Build-Variant {
470479
}
471480

472481
# Define all agents and scripts
473-
$AllAgents = @('claude', 'gemini', 'copilot', 'cursor-agent', 'qwen', 'opencode', 'windsurf', 'codex', 'kilocode', 'auggie', 'roo', 'codebuddy', 'amp', 'kiro-cli', 'bob', 'qodercli', 'shai', 'tabnine', 'agy', 'vibe', 'kimi', 'generic')
482+
$AllAgents = @('claude', 'gemini', 'copilot', 'cursor-agent', 'qwen', 'opencode', 'windsurf', 'codex', 'kilocode', 'auggie', 'roo', 'codebuddy', 'amp', 'kiro-cli', 'bob', 'qodercli', 'shai', 'tabnine', 'agy', 'vibe', 'kimi', 'trae', 'pi', 'generic')
474483
$AllScripts = @('sh', 'ps')
475484

476485
function Normalize-List {

.github/workflows/scripts/create-release-packages.sh

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ set -euo pipefail
66
# Usage: .github/workflows/scripts/create-release-packages.sh <version>
77
# Version argument should include leading 'v'.
88
# Optionally set AGENTS and/or SCRIPTS env vars to limit what gets built.
9-
# AGENTS : space or comma separated subset of: claude gemini copilot cursor-agent qwen opencode windsurf codex kilocode auggie roo codebuddy amp shai tabnine kiro-cli agy bob vibe qodercli kimi generic (default: all)
9+
# AGENTS : space or comma separated subset of: claude gemini copilot cursor-agent qwen opencode windsurf codex kilocode auggie roo codebuddy amp shai tabnine kiro-cli agy bob vibe qodercli kimi trae pi generic (default: all)
1010
# SCRIPTS : space or comma separated subset of: sh ps (default: both)
1111
# Examples:
1212
# AGENTS=claude SCRIPTS=sh $0 v0.2.0
@@ -291,6 +291,12 @@ build_variant() {
291291
kimi)
292292
mkdir -p "$base_dir/.kimi/skills"
293293
create_kimi_skills "$base_dir/.kimi/skills" "$script" ;;
294+
trae)
295+
mkdir -p "$base_dir/.trae/rules"
296+
generate_commands trae md "\$ARGUMENTS" "$base_dir/.trae/rules" "$script" ;;
297+
pi)
298+
mkdir -p "$base_dir/.pi/prompts"
299+
generate_commands pi md "\$ARGUMENTS" "$base_dir/.pi/prompts" "$script" ;;
294300
generic)
295301
mkdir -p "$base_dir/.speckit/commands"
296302
generate_commands generic md "\$ARGUMENTS" "$base_dir/.speckit/commands" "$script" ;;
@@ -300,7 +306,7 @@ build_variant() {
300306
}
301307

302308
# Determine agent list
303-
ALL_AGENTS=(claude gemini copilot cursor-agent qwen opencode windsurf codex kilocode auggie roo codebuddy amp shai tabnine kiro-cli agy bob vibe qodercli kimi generic)
309+
ALL_AGENTS=(claude gemini copilot cursor-agent qwen opencode windsurf codex kilocode auggie roo codebuddy amp shai tabnine kiro-cli agy bob vibe qodercli kimi trae pi generic)
304310
ALL_SCRIPTS=(sh ps)
305311

306312
norm_list() {

AGENTS.md

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -33,19 +33,21 @@ Specify supports multiple AI agents by generating agent-specific command files a
3333
| **Cursor** | `.cursor/commands/` | Markdown | `cursor-agent` | Cursor CLI |
3434
| **Qwen Code** | `.qwen/commands/` | Markdown | `qwen` | Alibaba's Qwen Code CLI |
3535
| **opencode** | `.opencode/command/` | Markdown | `opencode` | opencode CLI |
36-
| **Codex CLI** | `.codex/commands/` | Markdown | `codex` | Codex CLI |
36+
| **Codex CLI** | `.codex/prompts/` | Markdown | `codex` | Codex CLI |
3737
| **Windsurf** | `.windsurf/workflows/` | Markdown | N/A (IDE-based) | Windsurf IDE workflows |
38-
| **Kilo Code** | `.kilocode/rules/` | Markdown | N/A (IDE-based) | Kilo Code IDE |
39-
| **Auggie CLI** | `.augment/rules/` | Markdown | `auggie` | Auggie CLI |
40-
| **Roo Code** | `.roo/rules/` | Markdown | N/A (IDE-based) | Roo Code IDE |
38+
| **Kilo Code** | `.kilocode/workflows/` | Markdown | N/A (IDE-based) | Kilo Code IDE |
39+
| **Auggie CLI** | `.augment/commands/` | Markdown | `auggie` | Auggie CLI |
40+
| **Roo Code** | `.roo/commands/` | Markdown | N/A (IDE-based) | Roo Code IDE |
4141
| **CodeBuddy CLI** | `.codebuddy/commands/` | Markdown | `codebuddy` | CodeBuddy CLI |
4242
| **Qoder CLI** | `.qoder/commands/` | Markdown | `qodercli` | Qoder CLI |
4343
| **Kiro CLI** | `.kiro/prompts/` | Markdown | `kiro-cli` | Kiro CLI |
4444
| **Amp** | `.agents/commands/` | Markdown | `amp` | Amp CLI |
4545
| **SHAI** | `.shai/commands/` | Markdown | `shai` | SHAI CLI |
4646
| **Tabnine CLI** | `.tabnine/agent/commands/` | TOML | `tabnine` | Tabnine CLI |
4747
| **Kimi Code** | `.kimi/skills/` | Markdown | `kimi` | Kimi Code CLI (Moonshot AI) |
48+
| **Pi Coding Agent** | `.pi/prompts/` | Markdown | `pi` | Pi terminal coding agent |
4849
| **IBM Bob** | `.bob/commands/` | Markdown | N/A (IDE-based) | IBM Bob IDE |
50+
| **Trae** | `.trae/rules/` | Markdown | N/A (IDE-based) | Trae IDE |
4951
| **Generic** | User-specified via `--ai-commands-dir` | Markdown | N/A | Bring your own agent |
5052

5153
### Step-by-Step Integration Guide
@@ -84,7 +86,7 @@ This eliminates the need for special-case mappings throughout the codebase.
8486
- `folder`: Directory where agent-specific files are stored (relative to project root)
8587
- `commands_subdir`: Subdirectory name within the agent folder where command/prompt files are stored (default: `"commands"`)
8688
- Most agents use `"commands"` (e.g., `.claude/commands/`)
87-
- Some agents use alternative names: `"agents"` (copilot), `"workflows"` (windsurf, kilocode), `"prompts"` (codex, kiro-cli), `"command"` (opencode - singular)
89+
- Some agents use alternative names: `"agents"` (copilot), `"workflows"` (windsurf, kilocode), `"prompts"` (codex, kiro-cli, pi), `"command"` (opencode - singular)
8890
- This field enables `--ai-skills` to locate command templates correctly for skill generation
8991
- `install_url`: Installation documentation URL (set to `None` for IDE-based agents)
9092
- `requires_cli`: Whether the agent requires a CLI tool check during initialization
@@ -322,6 +324,7 @@ Require a command-line tool to be installed:
322324
- **SHAI**: `shai` CLI
323325
- **Tabnine CLI**: `tabnine` CLI
324326
- **Kimi Code**: `kimi` CLI
327+
- **Pi Coding Agent**: `pi` CLI
325328

326329
### IDE-Based Agents
327330

@@ -335,7 +338,7 @@ Work within integrated development environments:
335338

336339
### Markdown Format
337340

338-
Used by: Claude, Cursor, opencode, Windsurf, Kiro CLI, Amp, SHAI, IBM Bob, Kimi Code, Qwen
341+
Used by: Claude, Cursor, opencode, Windsurf, Kiro CLI, Amp, SHAI, IBM Bob, Kimi Code, Qwen, Pi
339342

340343
**Standard format:**
341344

@@ -373,6 +376,10 @@ Command content with {SCRIPT} and {{args}} placeholders.
373376
## Directory Conventions
374377

375378
- **CLI agents**: Usually `.<agent-name>/commands/`
379+
- **Common prompt-based exceptions**:
380+
- Codex: `.codex/prompts/`
381+
- Kiro CLI: `.kiro/prompts/`
382+
- Pi: `.pi/prompts/`
376383
- **IDE agents**: Follow IDE-specific patterns:
377384
- Copilot: `.github/agents/`
378385
- Cursor: `.cursor/commands/`

CHANGELOG.md

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,26 @@ Recent changes to the Specify CLI and templates are documented here.
77
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
88
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
99

10+
## [0.3.1] - 2026-03-17
11+
12+
### Changed
13+
14+
- docs: add greenfield Spring Boot pirate-speak preset demo to README (#1878)
15+
- fix(ai-skills): exclude non-speckit copilot agent markdown from skills (#1867)
16+
- feat: add Trae IDE support as a new agent (#1817)
17+
- feat(cli): polite deep merge for settings.json and support JSONC (#1874)
18+
- feat(extensions,presets): add priority-based resolution ordering (#1855)
19+
- fix(scripts): suppress stdout from git fetch in create-new-feature.sh (#1876)
20+
- fix(scripts): harden bash scripts — escape, compat, and error handling (#1869)
21+
- Add cognitive-squad to community extension catalog (#1870)
22+
- docs: add Go / React brownfield walkthrough to community walkthroughs (#1868)
23+
- chore: update DocGuard extension to v0.9.8 (#1859)
24+
- Feature: add specify status command (#1837)
25+
- fix(extensions): show extension ID in list output (#1843)
26+
- feat(extensions): add Archive and Reconcile extensions to community catalog (#1844)
27+
- feat: Add DocGuard CDD enforcement extension to community catalog (#1838)
28+
29+
1030
## [0.3.0] - 2026-03-13
1131

1232
### Changed
@@ -35,6 +55,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
3555

3656
### Added
3757

58+
- feat(cli): polite deep merge for VSCode settings.json with JSONC support via `json5` and zero-data-loss fallbacks
3859
- feat(presets): Pluggable preset system with preset catalog and template resolver
3960
- Preset manifest (`preset.yml`) with validation for artifact, command, and script types
4061
- `PresetManifest`, `PresetRegistry`, `PresetManager`, `PresetCatalog`, `PresetResolver` classes in `src/specify_cli/presets.py`

README.md

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -160,6 +160,8 @@ See Spec-Driven Development in action across different scenarios with these comm
160160

161161
- **[Brownfield Go / React dashboard demo](https://github.com/mnriem/spec-kit-go-brownfield-demo)** — Demonstrates spec-kit driven entirely from the **terminal using GitHub Copilot CLI**. Extends NASA's open-source Hermes ground support system (Go) with a lightweight React-based web telemetry dashboard, showing that the full constitution → specify → plan → tasks → implement workflow works from the terminal.
162162

163+
- **[Greenfield Spring Boot MVC with a custom preset](https://github.com/mnriem/spec-kit-pirate-speak-preset-demo)** — Builds a Spring Boot MVC application from scratch using a custom pirate-speak preset, demonstrating how presets can reshape the entire spec-kit experience: specifications become "Voyage Manifests," plans become "Battle Plans," and tasks become "Crew Assignments" — all generated in full pirate vernacular without changing any tooling.
164+
163165
## 🤖 Supported AI Agents
164166

165167
| Agent | Support | Notes |
@@ -178,6 +180,7 @@ See Spec-Driven Development in action across different scenarios with these comm
178180
| [Jules](https://jules.google.com/) || |
179181
| [Kilo Code](https://github.com/Kilo-Org/kilocode) || |
180182
| [opencode](https://opencode.ai/) || |
183+
| [Pi Coding Agent](https://pi.dev) || Pi doesn't have MCP support out of the box, so `taskstoissues` won't work as intended. MCP support can be added via [extensions](https://github.com/badlogic/pi-mono/tree/main/packages/coding-agent#extensions) |
181184
| [Qwen Code](https://github.com/QwenLM/qwen-code) || |
182185
| [Roo Code](https://roocode.com/) || |
183186
| [SHAI (OVHcloud)](https://github.com/ovh/shai) || |
@@ -186,6 +189,7 @@ See Spec-Driven Development in action across different scenarios with these comm
186189
| [Kimi Code](https://code.kimi.com/) || |
187190
| [Windsurf](https://windsurf.com/) || |
188191
| [Antigravity (agy)](https://antigravity.google/) || Requires `--ai-skills` |
192+
| [Trae](https://www.trae.ai/) || |
189193
| Generic || Bring your own agent — use `--ai generic --ai-commands-dir <path>` for unsupported agents |
190194

191195
## 🔧 Specify CLI Reference
@@ -197,14 +201,14 @@ The `specify` command supports the following options:
197201
| Command | Description |
198202
| ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- |
199203
| `init` | Initialize a new Specify project from the latest template |
200-
| `check` | Check for installed tools (`git`, `claude`, `gemini`, `code`/`code-insiders`, `cursor-agent`, `windsurf`, `qwen`, `opencode`, `codex`, `kiro-cli`, `shai`, `qodercli`, `vibe`, `kimi`) |
204+
| `check` | Check for installed tools (`git`, `claude`, `gemini`, `code`/`code-insiders`, `cursor-agent`, `windsurf`, `qwen`, `opencode`, `codex`, `kiro-cli`, `shai`, `qodercli`, `vibe`, `kimi`, `pi`) |
201205

202206
### `specify init` Arguments & Options
203207

204208
| Argument/Option | Type | Description |
205209
| ---------------------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
206210
| `<project-name>` | Argument | Name for your new project directory (optional if using `--here`, or use `.` for current directory) |
207-
| `--ai` | Option | AI assistant to use: `claude`, `gemini`, `copilot`, `cursor-agent`, `qwen`, `opencode`, `codex`, `windsurf`, `kilocode`, `auggie`, `roo`, `codebuddy`, `amp`, `shai`, `kiro-cli` (`kiro` alias), `agy`, `bob`, `qodercli`, `vibe`, `kimi`, or `generic` (requires `--ai-commands-dir`) |
211+
| `--ai` | Option | AI assistant to use: `claude`, `gemini`, `copilot`, `cursor-agent`, `qwen`, `opencode`, `codex`, `windsurf`, `kilocode`, `auggie`, `roo`, `codebuddy`, `amp`, `shai`, `kiro-cli` (`kiro` alias), `agy`, `bob`, `qodercli`, `vibe`, `kimi`, `pi`, or `generic` (requires `--ai-commands-dir`) |
208212
| `--ai-commands-dir` | Option | Directory for agent command files (required with `--ai generic`, e.g. `.myagent/commands/`) |
209213
| `--script` | Option | Script variant to use: `sh` (bash/zsh) or `ps` (PowerShell) |
210214
| `--ignore-agent-tools` | Flag | Skip checks for AI agent tools like Claude Code |
@@ -249,6 +253,9 @@ specify init my-project --ai vibe
249253
# Initialize with IBM Bob support
250254
specify init my-project --ai bob
251255

256+
# Initialize with Pi Coding Agent support
257+
specify init my-project --ai pi
258+
252259
# Initialize with Antigravity support
253260
specify init my-project --ai agy --ai-skills
254261

@@ -426,7 +433,7 @@ specify init . --force --ai claude
426433
specify init --here --force --ai claude
427434
```
428435

429-
The CLI will check if you have Claude Code, Gemini CLI, Cursor CLI, Qwen CLI, opencode, Codex CLI, Qoder CLI, Tabnine CLI, Kiro CLI, or Mistral Vibe installed. If you do not, or you prefer to get the templates without checking for the right tools, use `--ignore-agent-tools` with your command:
436+
The CLI will check if you have Claude Code, Gemini CLI, Cursor CLI, Qwen CLI, opencode, Codex CLI, Qoder CLI, Tabnine CLI, Kiro CLI, Pi, or Mistral Vibe installed. If you do not, or you prefer to get the templates without checking for the right tools, use `--ignore-agent-tools` with your command:
430437

431438
```bash
432439
specify init <project_name> --ai claude --ignore-agent-tools

0 commit comments

Comments
 (0)