Skip to content

Commit fb76d4c

Browse files
committed
Merge remote-tracking branch 'upstream/main' into fix/offline-install-1752
2 parents 9c0a6dd + 1a21bde commit fb76d4c

File tree

15 files changed

+184
-26
lines changed

15 files changed

+184
-26
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: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,8 @@ gh release create "$VERSION" \
7979
.genreleases/spec-kit-template-kimi-ps-"$VERSION".zip \
8080
.genreleases/spec-kit-template-trae-sh-"$VERSION".zip \
8181
.genreleases/spec-kit-template-trae-ps-"$VERSION".zip \
82+
.genreleases/spec-kit-template-pi-sh-"$VERSION".zip \
83+
.genreleases/spec-kit-template-pi-ps-"$VERSION".zip \
8284
.genreleases/spec-kit-template-generic-sh-"$VERSION".zip \
8385
.genreleases/spec-kit-template-generic-ps-"$VERSION".zip \
8486
--title "Spec Kit Templates - $VERSION_NO_V" \

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

Lines changed: 6 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, trae, 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)
@@ -459,6 +459,10 @@ function Build-Variant {
459459
New-Item -ItemType Directory -Force -Path $rulesDir | Out-Null
460460
Generate-Commands -Agent 'trae' -Extension 'md' -ArgFormat '$ARGUMENTS' -OutputDir $rulesDir -ScriptVariant $Script
461461
}
462+
'pi' {
463+
$cmdDir = Join-Path $baseDir ".pi/prompts"
464+
Generate-Commands -Agent 'pi' -Extension 'md' -ArgFormat '$ARGUMENTS' -OutputDir $cmdDir -ScriptVariant $Script
465+
}
462466
'generic' {
463467
$cmdDir = Join-Path $baseDir ".speckit/commands"
464468
Generate-Commands -Agent 'generic' -Extension 'md' -ArgFormat '$ARGUMENTS' -OutputDir $cmdDir -ScriptVariant $Script
@@ -475,7 +479,7 @@ function Build-Variant {
475479
}
476480

477481
# Define all agents and scripts
478-
$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', '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')
479483
$AllScripts = @('sh', 'ps')
480484

481485
function Normalize-List {

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

Lines changed: 5 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 trae 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
@@ -295,6 +295,9 @@ build_variant() {
295295
trae)
296296
mkdir -p "$base_dir/.trae/rules"
297297
generate_commands trae md "\$ARGUMENTS" "$base_dir/.trae/rules" "$script" ;;
298+
pi)
299+
mkdir -p "$base_dir/.pi/prompts"
300+
generate_commands pi md "\$ARGUMENTS" "$base_dir/.pi/prompts" "$script" ;;
298301
generic)
299302
mkdir -p "$base_dir/.speckit/commands"
300303
generate_commands generic md "\$ARGUMENTS" "$base_dir/.speckit/commands" "$script" ;;
@@ -304,7 +307,7 @@ build_variant() {
304307
}
305308

306309
# Determine agent list
307-
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 generic)
310+
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)
308311
ALL_SCRIPTS=(sh ps)
309312

310313
validate_subset() {

AGENTS.md

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -33,18 +33,19 @@ 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 |
4950
| **Trae** | `.trae/rules/` | Markdown | N/A (IDE-based) | Trae IDE |
5051
| **Generic** | User-specified via `--ai-commands-dir` | Markdown | N/A | Bring your own agent |
@@ -85,7 +86,7 @@ This eliminates the need for special-case mappings throughout the codebase.
8586
- `folder`: Directory where agent-specific files are stored (relative to project root)
8687
- `commands_subdir`: Subdirectory name within the agent folder where command/prompt files are stored (default: `"commands"`)
8788
- Most agents use `"commands"` (e.g., `.claude/commands/`)
88-
- 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)
8990
- This field enables `--ai-skills` to locate command templates correctly for skill generation
9091
- `install_url`: Installation documentation URL (set to `None` for IDE-based agents)
9192
- `requires_cli`: Whether the agent requires a CLI tool check during initialization
@@ -323,6 +324,7 @@ Require a command-line tool to be installed:
323324
- **SHAI**: `shai` CLI
324325
- **Tabnine CLI**: `tabnine` CLI
325326
- **Kimi Code**: `kimi` CLI
327+
- **Pi Coding Agent**: `pi` CLI
326328

327329
### IDE-Based Agents
328330

@@ -336,7 +338,7 @@ Work within integrated development environments:
336338

337339
### Markdown Format
338340

339-
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
340342

341343
**Standard format:**
342344

@@ -374,6 +376,10 @@ Command content with {SCRIPT} and {{args}} placeholders.
374376
## Directory Conventions
375377

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

README.md

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -191,6 +191,7 @@ See Spec-Driven Development in action across different scenarios with these comm
191191
| [Jules](https://jules.google.com/) || |
192192
| [Kilo Code](https://github.com/Kilo-Org/kilocode) || |
193193
| [opencode](https://opencode.ai/) || |
194+
| [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) |
194195
| [Qwen Code](https://github.com/QwenLM/qwen-code) || |
195196
| [Roo Code](https://roocode.com/) || |
196197
| [SHAI (OVHcloud)](https://github.com/ovh/shai) || |
@@ -211,14 +212,14 @@ The `specify` command supports the following options:
211212
| Command | Description |
212213
| ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- |
213214
| `init` | Initialize a new Specify project from the latest template |
214-
| `check` | Check for installed tools (`git`, `claude`, `gemini`, `code`/`code-insiders`, `cursor-agent`, `windsurf`, `qwen`, `opencode`, `codex`, `kiro-cli`, `shai`, `qodercli`, `vibe`, `kimi`) |
215+
| `check` | Check for installed tools (`git`, `claude`, `gemini`, `code`/`code-insiders`, `cursor-agent`, `windsurf`, `qwen`, `opencode`, `codex`, `kiro-cli`, `shai`, `qodercli`, `vibe`, `kimi`, `pi`) |
215216

216217
### `specify init` Arguments & Options
217218

218219
| Argument/Option | Type | Description |
219220
| ---------------------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
220221
| `<project-name>` | Argument | Name for your new project directory (optional if using `--here`, or use `.` for current directory) |
221-
| `--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`) |
222+
| `--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`) |
222223
| `--ai-commands-dir` | Option | Directory for agent command files (required with `--ai generic`, e.g. `.myagent/commands/`) |
223224
| `--script` | Option | Script variant to use: `sh` (bash/zsh) or `ps` (PowerShell) |
224225
| `--ignore-agent-tools` | Flag | Skip checks for AI agent tools like Claude Code |
@@ -263,6 +264,9 @@ specify init my-project --ai vibe
263264
# Initialize with IBM Bob support
264265
specify init my-project --ai bob
265266

267+
# Initialize with Pi Coding Agent support
268+
specify init my-project --ai pi
269+
266270
# Initialize with Antigravity support
267271
specify init my-project --ai agy --ai-skills
268272

@@ -440,7 +444,7 @@ specify init . --force --ai claude
440444
specify init --here --force --ai claude
441445
```
442446

443-
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:
447+
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:
444448

445449
```bash
446450
specify init <project_name> --ai claude --ignore-agent-tools

docs/installation.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
## Prerequisites
44

55
- **Linux/macOS** (or Windows; PowerShell scripts now supported without WSL)
6-
- AI coding agent: [Claude Code](https://www.anthropic.com/claude-code), [GitHub Copilot](https://code.visualstudio.com/), [Codebuddy CLI](https://www.codebuddy.ai/cli) or [Gemini CLI](https://github.com/google-gemini/gemini-cli)
6+
- AI coding agent: [Claude Code](https://www.anthropic.com/claude-code), [GitHub Copilot](https://code.visualstudio.com/), [Codebuddy CLI](https://www.codebuddy.ai/cli), [Gemini CLI](https://github.com/google-gemini/gemini-cli), or [Pi Coding Agent](https://pi.dev)
77
- [uv](https://docs.astral.sh/uv/) for package management
88
- [Python 3.11+](https://www.python.org/downloads/)
99
- [Git](https://git-scm.com/downloads)
@@ -35,6 +35,7 @@ uvx --from git+https://github.com/github/spec-kit.git specify init <project_name
3535
uvx --from git+https://github.com/github/spec-kit.git specify init <project_name> --ai gemini
3636
uvx --from git+https://github.com/github/spec-kit.git specify init <project_name> --ai copilot
3737
uvx --from git+https://github.com/github/spec-kit.git specify init <project_name> --ai codebuddy
38+
uvx --from git+https://github.com/github/spec-kit.git specify init <project_name> --ai pi
3839
```
3940

4041
### Specify Script Type (Shell vs PowerShell)

docs/upgrade.md

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -289,8 +289,9 @@ This tells Spec Kit which feature directory to use when creating specs, plans, a
289289

290290
```bash
291291
ls -la .claude/commands/ # Claude Code
292-
ls -la .gemini/commands/ # Gemini
293-
ls -la .cursor/commands/ # Cursor
292+
ls -la .gemini/commands/ # Gemini
293+
ls -la .cursor/commands/ # Cursor
294+
ls -la .pi/prompts/ # Pi Coding Agent
294295
```
295296

296297
3. **Check agent-specific setup:**
@@ -398,7 +399,7 @@ The `specify` CLI tool is used for:
398399
- **Upgrades:** `specify init --here --force` to update templates and commands
399400
- **Diagnostics:** `specify check` to verify tool installation
400401

401-
Once you've run `specify init`, the slash commands (like `/speckit.specify`, `/speckit.plan`, etc.) are **permanently installed** in your project's agent folder (`.claude/`, `.github/prompts/`, etc.). Your AI assistant reads these command files directly—no need to run `specify` again.
402+
Once you've run `specify init`, the slash commands (like `/speckit.specify`, `/speckit.plan`, etc.) are **permanently installed** in your project's agent folder (`.claude/`, `.github/prompts/`, `.pi/prompts/`, etc.). Your AI assistant reads these command files directly—no need to run `specify` again.
402403

403404
**If your agent isn't recognizing slash commands:**
404405

@@ -410,6 +411,9 @@ Once you've run `specify init`, the slash commands (like `/speckit.specify`, `/s
410411

411412
# For Claude
412413
ls -la .claude/commands/
414+
415+
# For Pi
416+
ls -la .pi/prompts/
413417
```
414418

415419
2. **Restart your IDE/editor completely** (not just reload window)

0 commit comments

Comments
 (0)