Skip to content

Commit 9348c45

Browse files
committed
Update with Roo Code support
1 parent ad746ce commit 9348c45

File tree

8 files changed

+35
-9
lines changed

8 files changed

+35
-9
lines changed

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,5 +36,7 @@ gh release create "$VERSION" \
3636
.genreleases/spec-kit-template-kilocode-ps-"$VERSION".zip \
3737
.genreleases/spec-kit-template-auggie-sh-"$VERSION".zip \
3838
.genreleases/spec-kit-template-auggie-ps-"$VERSION".zip \
39+
.genreleases/spec-kit-template-roo-sh-"$VERSION".zip \
40+
.genreleases/spec-kit-template-roo-ps-"$VERSION".zip \
3941
--title "Spec Kit Templates - $VERSION_NO_V" \
4042
--notes-file release_notes.md

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

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -169,13 +169,16 @@ build_variant() {
169169
auggie)
170170
mkdir -p "$base_dir/.augment/commands"
171171
generate_commands auggie md "\$ARGUMENTS" "$base_dir/.augment/commands" "$script" ;;
172+
roo)
173+
mkdir -p "$base_dir/.roo/commands"
174+
generate_commands roo md "\$ARGUMENTS" "$base_dir/.roo/commands" "$script" ;;
172175
esac
173176
( cd "$base_dir" && zip -r "../spec-kit-template-${agent}-${script}-${NEW_VERSION}.zip" . )
174177
echo "Created $GENRELEASES_DIR/spec-kit-template-${agent}-${script}-${NEW_VERSION}.zip"
175178
}
176179

177180
# Determine agent list
178-
ALL_AGENTS=(claude gemini copilot cursor qwen opencode windsurf codex kilocode auggie)
181+
ALL_AGENTS=(claude gemini copilot cursor qwen opencode windsurf codex kilocode auggie roo)
179182
ALL_SCRIPTS=(sh ps)
180183

181184

CHANGELOG.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,12 @@ All notable changes to the Specify CLI will be documented in this file.
55
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
66
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
77

8+
## [0.0.15] - 2025-09-21
9+
10+
### Added
11+
12+
- Support for Roo Code.
13+
814
## [0.0.14] - 2025-09-21
915

1016
### Changed

README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,7 @@ Want to see Spec Kit in action? Watch our [video overview](https://www.youtube.c
106106
| [Windsurf](https://windsurf.com/) || |
107107
| [Kilo Code](https://github.com/Kilo-Org/kilocode) || |
108108
| [Auggie CLI](https://docs.augmentcode.com/cli/overview) || |
109+
| [Roo Code](https://roocode.com/) || |
109110
| [Codex CLI](https://github.com/openai/codex) | ⚠️ | Codex [does not support](https://github.com/openai/codex/issues/2890) custom arguments for slash commands. |
110111

111112
## 🔧 Specify CLI Reference
@@ -124,7 +125,7 @@ The `specify` command supports the following options:
124125
| Argument/Option | Type | Description |
125126
|------------------------|----------|------------------------------------------------------------------------------|
126127
| `<project-name>` | Argument | Name for your new project directory (optional if using `--here`) |
127-
| `--ai` | Option | AI assistant to use: `claude`, `gemini`, `copilot`, `cursor`, `qwen`, `opencode`, `codex`, `windsurf`, `kilocode`, or `auggie` |
128+
| `--ai` | Option | AI assistant to use: `claude`, `gemini`, `copilot`, `cursor`, `qwen`, `opencode`, `codex`, `windsurf`, `kilocode`, `auggie`, or `roo` |
128129
| `--script` | Option | Script variant to use: `sh` (bash/zsh) or `ps` (PowerShell) |
129130
| `--ignore-agent-tools` | Flag | Skip checks for AI agent tools like Claude Code |
130131
| `--no-git` | Flag | Skip git repository initialization |

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[project]
22
name = "specify-cli"
3-
version = "0.0.14"
3+
version = "0.0.15"
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 = [

scripts/bash/update-agent-context.sh

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,7 @@ AGENTS_FILE="$REPO_ROOT/AGENTS.md"
6868
WINDSURF_FILE="$REPO_ROOT/.windsurf/rules/specify-rules.md"
6969
KILOCODE_FILE="$REPO_ROOT/.kilocode/rules/specify-rules.md"
7070
AUGGIE_FILE="$REPO_ROOT/.augment/rules/specify-rules.md"
71+
ROO_FILE="$REPO_ROOT/.roo/rules/specify-rules.md"
7172

7273
# Template file
7374
TEMPLATE_FILE="$REPO_ROOT/.specify/templates/agent-file-template.md"
@@ -576,9 +577,12 @@ update_specific_agent() {
576577
auggie)
577578
update_agent_file "$AUGGIE_FILE" "Auggie CLI"
578579
;;
580+
roo)
581+
update_agent_file "$ROO_FILE" "Roo Code"
582+
;;
579583
*)
580584
log_error "Unknown agent type '$agent_type'"
581-
log_error "Expected: claude|gemini|copilot|cursor|qwen|opencode|codex|windsurf|kilocode|auggie"
585+
log_error "Expected: claude|gemini|copilot|cursor|qwen|opencode|codex|windsurf|kilocode|auggie|roo"
582586
exit 1
583587
;;
584588
esac
@@ -633,6 +637,11 @@ update_all_existing_agents() {
633637
found_agent=true
634638
fi
635639

640+
if [[ -f "$ROO_FILE" ]]; then
641+
update_agent_file "$ROO_FILE" "Roo Code"
642+
found_agent=true
643+
fi
644+
636645
# If no agent files exist, create a default Claude file
637646
if [[ "$found_agent" == false ]]; then
638647
log_info "No existing agent files found, creating default Claude file..."
@@ -656,7 +665,7 @@ print_summary() {
656665
fi
657666

658667
echo
659-
log_info "Usage: $0 [claude|gemini|copilot|cursor|qwen|opencode|codex|windsurf|kilocode|auggie]"
668+
log_info "Usage: $0 [claude|gemini|copilot|cursor|qwen|opencode|codex|windsurf|kilocode|auggie|roo]"
660669
}
661670

662671
#==============================================================================

scripts/powershell/update-agent-context.ps1

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ Relies on common helper functions in common.ps1
2525
#>
2626
param(
2727
[Parameter(Position=0)]
28-
[ValidateSet('claude','gemini','copilot','cursor','qwen','opencode','codex','windsurf','kilocode','auggie')]
28+
[ValidateSet('claude','gemini','copilot','cursor','qwen','opencode','codex','windsurf','kilocode','auggie','roo')]
2929
[string]$AgentType
3030
)
3131

@@ -53,6 +53,7 @@ $AGENTS_FILE = Join-Path $REPO_ROOT 'AGENTS.md'
5353
$WINDSURF_FILE = Join-Path $REPO_ROOT '.windsurf/rules/specify-rules.md'
5454
$KILOCODE_FILE = Join-Path $REPO_ROOT '.kilocode/rules/specify-rules.md'
5555
$AUGGIE_FILE = Join-Path $REPO_ROOT '.augment/rules/specify-rules.md'
56+
$ROO_FILE = Join-Path $REPO_ROOT '.roo/rules/specify-rules.md'
5657

5758
$TEMPLATE_FILE = Join-Path $REPO_ROOT '.specify/templates/agent-file-template.md'
5859

@@ -374,7 +375,8 @@ function Update-SpecificAgent {
374375
'windsurf' { Update-AgentFile -TargetFile $WINDSURF_FILE -AgentName 'Windsurf' }
375376
'kilocode' { Update-AgentFile -TargetFile $KILOCODE_FILE -AgentName 'Kilo Code' }
376377
'auggie' { Update-AgentFile -TargetFile $AUGGIE_FILE -AgentName 'Auggie CLI' }
377-
default { Write-Err "Unknown agent type '$Type'"; Write-Err 'Expected: claude|gemini|copilot|cursor|qwen|opencode|codex|windsurf|kilocode|auggie'; return $false }
378+
'roo' { Update-AgentFile -TargetFile $ROO_FILE -AgentName 'Roo Code' }
379+
default { Write-Err "Unknown agent type '$Type'"; Write-Err 'Expected: claude|gemini|copilot|cursor|qwen|opencode|codex|windsurf|kilocode|auggie|roo'; return $false }
378380
}
379381
}
380382

@@ -390,6 +392,7 @@ function Update-AllExistingAgents {
390392
if (Test-Path $WINDSURF_FILE) { if (-not (Update-AgentFile -TargetFile $WINDSURF_FILE -AgentName 'Windsurf')) { $ok = $false }; $found = $true }
391393
if (Test-Path $KILOCODE_FILE) { if (-not (Update-AgentFile -TargetFile $KILOCODE_FILE -AgentName 'Kilo Code')) { $ok = $false }; $found = $true }
392394
if (Test-Path $AUGGIE_FILE) { if (-not (Update-AgentFile -TargetFile $AUGGIE_FILE -AgentName 'Auggie CLI')) { $ok = $false }; $found = $true }
395+
if (Test-Path $ROO_FILE) { if (-not (Update-AgentFile -TargetFile $ROO_FILE -AgentName 'Roo Code')) { $ok = $false }; $found = $true }
393396
if (-not $found) {
394397
Write-Info 'No existing agent files found, creating default Claude file...'
395398
if (-not (Update-AgentFile -TargetFile $CLAUDE_FILE -AgentName 'Claude Code')) { $ok = $false }
@@ -404,7 +407,7 @@ function Print-Summary {
404407
if ($NEW_FRAMEWORK) { Write-Host " - Added framework: $NEW_FRAMEWORK" }
405408
if ($NEW_DB -and $NEW_DB -ne 'N/A') { Write-Host " - Added database: $NEW_DB" }
406409
Write-Host ''
407-
Write-Info 'Usage: ./update-agent-context.ps1 [-AgentType claude|gemini|copilot|cursor|qwen|opencode|codex|windsurf|kilocode|auggie]'
410+
Write-Info 'Usage: ./update-agent-context.ps1 [-AgentType claude|gemini|copilot|cursor|qwen|opencode|codex|windsurf|kilocode|auggie|roo]'
408411
}
409412

410413
function Main {

src/specify_cli/__init__.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@ def _github_auth_headers(cli_token: str | None = None) -> dict:
7474
"windsurf": "Windsurf",
7575
"kilocode": "Kilo Code",
7676
"auggie": "Auggie CLI",
77+
"roo": "Roo Code",
7778
}
7879
# Add script type choices
7980
SCRIPT_TYPE_CHOICES = {"sh": "POSIX Shell (bash/zsh)", "ps": "PowerShell"}
@@ -1015,7 +1016,8 @@ def init(
10151016
"windsurf": ".windsurf/",
10161017
"kilocode": ".kilocode/",
10171018
"auggie": ".augment/",
1018-
"copilot": ".github/"
1019+
"copilot": ".github/",
1020+
"roo": ".roo/"
10191021
}
10201022

10211023
if selected_ai in agent_folder_map:

0 commit comments

Comments
 (0)