Skip to content

Commit 7a70465

Browse files
committed
Merge upstream/main into fix/offline-install-1752, resolve CHANGELOG conflict
2 parents e292a1c + f21eb71 commit 7a70465

22 files changed

+1716
-116
lines changed

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,8 @@ gh release create "$VERSION" \
5959
.genreleases/spec-kit-template-vibe-ps-"$VERSION".zip \
6060
.genreleases/spec-kit-template-kimi-sh-"$VERSION".zip \
6161
.genreleases/spec-kit-template-kimi-ps-"$VERSION".zip \
62+
.genreleases/spec-kit-template-trae-sh-"$VERSION".zip \
63+
.genreleases/spec-kit-template-trae-ps-"$VERSION".zip \
6264
.genreleases/spec-kit-template-generic-sh-"$VERSION".zip \
6365
.genreleases/spec-kit-template-generic-ps-"$VERSION".zip \
6466
--title "Spec Kit Templates - $VERSION_NO_V" \

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

Lines changed: 7 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, generic
1818
1919
.PARAMETER Scripts
2020
Comma or space separated subset of script types to build (default: both)
@@ -454,6 +454,11 @@ 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+
}
457462
'generic' {
458463
$cmdDir = Join-Path $baseDir ".speckit/commands"
459464
Generate-Commands -Agent 'generic' -Extension 'md' -ArgFormat '$ARGUMENTS' -OutputDir $cmdDir -ScriptVariant $Script
@@ -470,7 +475,7 @@ function Build-Variant {
470475
}
471476

472477
# 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')
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')
474479
$AllScripts = @('sh', 'ps')
475480

476481
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 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 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
@@ -292,6 +292,9 @@ build_variant() {
292292
kimi)
293293
mkdir -p "$base_dir/.kimi/skills"
294294
create_kimi_skills "$base_dir/.kimi/skills" "$script" ;;
295+
trae)
296+
mkdir -p "$base_dir/.trae/rules"
297+
generate_commands trae md "\$ARGUMENTS" "$base_dir/.trae/rules" "$script" ;;
295298
generic)
296299
mkdir -p "$base_dir/.speckit/commands"
297300
generate_commands generic md "\$ARGUMENTS" "$base_dir/.speckit/commands" "$script" ;;
@@ -301,7 +304,7 @@ build_variant() {
301304
}
302305

303306
# Determine agent list
304-
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)
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)
305308
ALL_SCRIPTS=(sh ps)
306309

307310
validate_subset() {

AGENTS.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ Specify supports multiple AI agents by generating agent-specific command files a
4646
| **Tabnine CLI** | `.tabnine/agent/commands/` | TOML | `tabnine` | Tabnine CLI |
4747
| **Kimi Code** | `.kimi/skills/` | Markdown | `kimi` | Kimi Code CLI (Moonshot AI) |
4848
| **IBM Bob** | `.bob/commands/` | Markdown | N/A (IDE-based) | IBM Bob IDE |
49+
| **Trae** | `.trae/rules/` | Markdown | N/A (IDE-based) | Trae IDE |
4950
| **Generic** | User-specified via `--ai-commands-dir` | Markdown | N/A | Bring your own agent |
5051

5152
### Step-by-Step Integration Guide

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
@@ -39,6 +59,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
3959
- feat(cli): add `--offline` flag to `specify init` to scaffold from bundled assets instead of downloading from GitHub (for air-gapped/enterprise environments)
4060
- feat(cli): embed release scripts (bash + PowerShell) in wheel and invoke at runtime for guaranteed parity with GitHub release ZIPs
4161
- feat(release): build and publish `specify_cli-*.whl` Python wheel as a release asset for enterprise/offline installation (#1752)
62+
- feat(cli): polite deep merge for VSCode settings.json with JSONC support via `json5` and zero-data-loss fallbacks
4263
- feat(presets): Pluggable preset system with preset catalog and template resolver
4364
- Preset manifest (`preset.yml`) with validation for artifact, command, and script types
4465
- `PresetManifest`, `PresetRegistry`, `PresetManager`, `PresetCatalog`, `PresetResolver` classes in `src/specify_cli/presets.py`

README.md

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

172172
- **[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.
173173

174+
- **[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.
175+
174176
## 🤖 Supported AI Agents
175177

176178
| Agent | Support | Notes |
@@ -197,6 +199,7 @@ See Spec-Driven Development in action across different scenarios with these comm
197199
| [Kimi Code](https://code.kimi.com/) || |
198200
| [Windsurf](https://windsurf.com/) || |
199201
| [Antigravity (agy)](https://antigravity.google/) || Requires `--ai-skills` |
202+
| [Trae](https://www.trae.ai/) || |
200203
| Generic || Bring your own agent — use `--ai generic --ai-commands-dir <path>` for unsupported agents |
201204

202205
## 🔧 Specify CLI Reference

extensions/README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@ The following community-contributed extensions are available in [`catalog.commun
7979
| DocGuard — CDD Enforcement | Canonical-Driven Development enforcement. Validates, scores, and traces project documentation with automated checks, AI-driven workflows, and spec-kit hooks. Zero dependencies. | [spec-kit-docguard](https://github.com/raccioly/docguard) |
8080
| Fleet Orchestrator | Orchestrate a full feature lifecycle with human-in-the-loop gates across all SpecKit phases | [spec-kit-fleet](https://github.com/sharathsatish/spec-kit-fleet) |
8181
| Jira Integration | Create Jira Epics, Stories, and Issues from spec-kit specifications and task breakdowns with configurable hierarchy and custom field support | [spec-kit-jira](https://github.com/mbachorik/spec-kit-jira) |
82+
| Learning Extension | Generate educational guides from implementations and enhance clarifications with mentoring context | [spec-kit-learn](https://github.com/imviancagrace/spec-kit-learn) |
8283
| Project Health Check | Diagnose a Spec Kit project and report health issues across structure, agents, features, scripts, extensions, and git | [spec-kit-doctor](https://github.com/KhawarHabibKhan/spec-kit-doctor) |
8384
| Project Status | Show current SDD workflow progress — active feature, artifact status, task completion, workflow phase, and extensions summary | [spec-kit-status](https://github.com/KhawarHabibKhan/spec-kit-status) |
8485
| Ralph Loop | Autonomous implementation loop using AI agent CLI | [spec-kit-ralph](https://github.com/Rubiss/spec-kit-ralph) |

extensions/RFC-EXTENSION-SYSTEM.md

Lines changed: 39 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -359,12 +359,15 @@ specify extension add jira
359359
"installed_at": "2026-01-28T14:30:00Z",
360360
"source": "catalog",
361361
"manifest_hash": "sha256:abc123...",
362-
"enabled": true
362+
"enabled": true,
363+
"priority": 10
363364
}
364365
}
365366
}
366367
```
367368

369+
**Priority Field**: Extensions are ordered by `priority` (lower = higher precedence). Default is 10. Used for template resolution when multiple extensions provide the same template.
370+
368371
### 3. Configuration
369372

370373
```bash
@@ -1084,11 +1087,15 @@ List installed extensions in current project.
10841087
$ specify extension list
10851088
10861089
Installed Extensions:
1087-
✓ jira (v1.0.0) - Jira Integration
1088-
Commands: 3 | Hooks: 2 | Status: Enabled
1089-
1090-
✓ linear (v0.9.0) - Linear Integration
1091-
Commands: 1 | Hooks: 1 | Status: Enabled
1090+
✓ Jira Integration (v1.0.0)
1091+
jira
1092+
Create Jira issues from spec-kit artifacts
1093+
Commands: 3 | Hooks: 2 | Priority: 10 | Status: Enabled
1094+
1095+
✓ Linear Integration (v0.9.0)
1096+
linear
1097+
Create Linear issues from spec-kit artifacts
1098+
Commands: 1 | Hooks: 1 | Priority: 10 | Status: Enabled
10921099
```
10931100

10941101
**Options:**
@@ -1196,10 +1203,9 @@ Next steps:
11961203

11971204
**Options:**
11981205

1199-
- `--from URL`: Install from custom URL or Git repo
1200-
- `--version VERSION`: Install specific version
1201-
- `--dev PATH`: Install from local path (development mode)
1202-
- `--no-register`: Skip command registration (manual setup)
1206+
- `--from URL`: Install from a remote URL (archive). Does not accept Git repositories directly.
1207+
- `--dev`: Install from a local path in development mode (the PATH is the positional `extension` argument).
1208+
- `--priority NUMBER`: Set resolution priority (lower = higher precedence, default 10)
12031209

12041210
#### `specify extension remove NAME`
12051211

@@ -1280,6 +1286,29 @@ $ specify extension disable jira
12801286
To re-enable: specify extension enable jira
12811287
```
12821288

1289+
#### `specify extension set-priority NAME PRIORITY`
1290+
1291+
Change the resolution priority of an installed extension.
1292+
1293+
```bash
1294+
$ specify extension set-priority jira 5
1295+
1296+
✓ Extension 'Jira Integration' priority changed: 10 → 5
1297+
1298+
Lower priority = higher precedence in template resolution
1299+
```
1300+
1301+
**Priority Values:**
1302+
1303+
- Lower numbers = higher precedence (checked first in resolution)
1304+
- Default priority is 10
1305+
- Must be a positive integer (1 or higher)
1306+
1307+
**Use Cases:**
1308+
1309+
- Ensure a critical extension's templates take precedence
1310+
- Override default resolution order when multiple extensions provide similar templates
1311+
12831312
---
12841313

12851314
## Compatibility & Versioning

extensions/catalog.community.json

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"schema_version": "1.0",
3-
"updated_at": "2026-03-16T00:00:00Z",
3+
"updated_at": "2026-03-17T00:00:00Z",
44
"catalog_url": "https://raw.githubusercontent.com/github/spec-kit/main/extensions/catalog.community.json",
55
"extensions": {
66
"archive": {
@@ -559,6 +559,37 @@
559559
"created_at": "2026-02-20T00:00:00Z",
560560
"updated_at": "2026-02-22T00:00:00Z"
561561
},
562+
"learn": {
563+
"name": "Learning Extension",
564+
"id": "learn",
565+
"description": "Generate educational guides from implementations and enhance clarifications with mentoring context.",
566+
"author": "Vianca Martinez",
567+
"version": "1.0.0",
568+
"download_url": "https://github.com/imviancagrace/spec-kit-learn/archive/refs/tags/v1.0.0.zip",
569+
"repository": "https://github.com/imviancagrace/spec-kit-learn",
570+
"homepage": "https://github.com/imviancagrace/spec-kit-learn",
571+
"documentation": "https://github.com/imviancagrace/spec-kit-learn/blob/main/README.md",
572+
"changelog": "https://github.com/imviancagrace/spec-kit-learn/blob/main/CHANGELOG.md",
573+
"license": "MIT",
574+
"requires": {
575+
"speckit_version": ">=0.1.0"
576+
},
577+
"provides": {
578+
"commands": 2,
579+
"hooks": 1
580+
},
581+
"tags": [
582+
"learning",
583+
"education",
584+
"mentoring",
585+
"knowledge-transfer"
586+
],
587+
"verified": false,
588+
"downloads": 0,
589+
"stars": 0,
590+
"created_at": "2026-03-17T00:00:00Z",
591+
"updated_at": "2026-03-17T00:00:00Z"
592+
},
562593
"verify": {
563594
"name": "Verify Extension",
564595
"id": "verify",

pyproject.toml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[project]
22
name = "specify-cli"
3-
version = "0.3.0"
3+
version = "0.3.1"
44
description = "Specify CLI, part of GitHub Spec Kit. A tool to bootstrap your projects for Spec-Driven Development (SDD)."
55
requires-python = ">=3.11"
66
dependencies = [
@@ -14,6 +14,7 @@ dependencies = [
1414
"pyyaml>=6.0",
1515
"packaging>=23.0",
1616
"pathspec>=0.12.0",
17+
"json5>=0.13.0",
1718
]
1819

1920
[project.scripts]

0 commit comments

Comments
 (0)