Skip to content

Commit 32c6e7f

Browse files
medhatgalalmnriemCopilot
authored
feat: add kiro-cli and AGENT_CONFIG consistency coverage (#1690)
* feat: add kiro-cli and AGENT_CONFIG consistency coverage * fix: address PR feedback for kiro-cli migration * test: assert init invocation result in --here mode test * test: capture init result in here-mode command test * chore: save local unapproved work in progress * fix: resolve remaining PR1690 review threads * Update src/specify_cli/__init__.py Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * test: reduce brittleness in ai help alias assertion * fix: resolve PR1690 ruff syntax regression --------- Co-authored-by: Manfred Riem <15701806+mnriem@users.noreply.github.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
1 parent 9cf33e8 commit 32c6e7f

19 files changed

+306
-88
lines changed

.devcontainer/devcontainer.json

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,8 +50,6 @@
5050
"kilocode.Kilo-Code",
5151
// Roo Code
5252
"RooVeterinaryInc.roo-cline",
53-
// Amazon Developer Q
54-
"AmazonWebServices.amazon-q-vscode",
5553
// Claude Code
5654
"anthropic.claude-code"
5755
],

.devcontainer/post-create.sh

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

54-
echo -e "\n🤖 Installing Amazon Q CLI..."
55-
# 👉🏾 https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/command-line-verify-download.html
56-
57-
run_command "curl --proto '=https' --tlsv1.2 -sSf 'https://desktop-release.q.us-east-1.amazonaws.com/latest/q-x86_64-linux.zip' -o 'q.zip'"
58-
run_command "curl --proto '=https' --tlsv1.2 -sSf 'https://desktop-release.q.us-east-1.amazonaws.com/latest/q-x86_64-linux.zip.sig' -o 'q.zip.sig'"
59-
cat > amazonq-public-key.asc << 'EOF'
60-
-----BEGIN PGP PUBLIC KEY BLOCK-----
61-
62-
mDMEZig60RYJKwYBBAHaRw8BAQdAy/+G05U5/EOA72WlcD4WkYn5SInri8pc4Z6D
63-
BKNNGOm0JEFtYXpvbiBRIENMSSBUZWFtIDxxLWNsaUBhbWF6b24uY29tPoiZBBMW
64-
CgBBFiEEmvYEF+gnQskUPgPsUNx6jcJMVmcFAmYoOtECGwMFCQPCZwAFCwkIBwIC
65-
IgIGFQoJCAsCBBYCAwECHgcCF4AACgkQUNx6jcJMVmef5QD/QWWEGG/cOnbDnp68
66-
SJXuFkwiNwlH2rPw9ZRIQMnfAS0A/0V6ZsGB4kOylBfc7CNfzRFGtovdBBgHqA6P
67-
zQ/PNscGuDgEZig60RIKKwYBBAGXVQEFAQEHQC4qleONMBCq3+wJwbZSr0vbuRba
68-
D1xr4wUPn4Avn4AnAwEIB4h+BBgWCgAmFiEEmvYEF+gnQskUPgPsUNx6jcJMVmcF
69-
AmYoOtECGwwFCQPCZwAACgkQUNx6jcJMVmchMgEA6l3RveCM0YHAGQaSFMkguoAo
70-
vK6FgOkDawgP0NPIP2oA/jIAO4gsAntuQgMOsPunEdDeji2t+AhV02+DQIsXZpoB
71-
=f8yY
72-
-----END PGP PUBLIC KEY BLOCK-----
73-
EOF
74-
run_command "gpg --batch --import amazonq-public-key.asc"
75-
run_command "gpg --verify q.zip.sig q.zip"
76-
run_command "unzip -q q.zip"
77-
run_command "chmod +x ./q/install.sh"
78-
run_command "./q/install.sh --no-confirm"
79-
run_command "rm -rf ./q q.zip q.zip.sig amazonq-public-key.asc"
54+
echo -e "\n🤖 Installing Kiro CLI..."
55+
# https://kiro.dev/docs/cli/
56+
KIRO_INSTALLER_URL="https://cli.kiro.dev/install"
57+
KIRO_INSTALLER_SHA256="7487a65cf310b7fb59b357c4b5e6e3f3259d383f4394ecedb39acf70f307cffb"
58+
KIRO_INSTALLER_PATH="$(mktemp)"
59+
60+
cleanup_kiro_installer() {
61+
rm -f "$KIRO_INSTALLER_PATH"
62+
}
63+
trap cleanup_kiro_installer EXIT
64+
65+
run_command "curl -fsSL \"$KIRO_INSTALLER_URL\" -o \"$KIRO_INSTALLER_PATH\""
66+
run_command "echo \"$KIRO_INSTALLER_SHA256 $KIRO_INSTALLER_PATH\" | sha256sum -c -"
67+
68+
run_command "bash \"$KIRO_INSTALLER_PATH\""
69+
70+
kiro_binary=""
71+
if command -v kiro-cli >/dev/null 2>&1; then
72+
kiro_binary="kiro-cli"
73+
elif command -v kiro >/dev/null 2>&1; then
74+
kiro_binary="kiro"
75+
else
76+
echo -e "\033[0;31m[ERROR] Kiro CLI installation did not create 'kiro-cli' or 'kiro' in PATH.\033[0m" >&2
77+
exit 1
78+
fi
79+
80+
run_command "$kiro_binary --help > /dev/null"
8081
echo "✅ Done"
8182

8283
echo -e "\n🤖 Installing CodeBuddy CLI..."

.github/ISSUE_TEMPLATE/agent_request.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ body:
88
value: |
99
Thanks for requesting a new agent! Before submitting, please check if the agent is already supported.
1010
11-
**Currently supported agents**: Claude Code, Gemini CLI, GitHub Copilot, Cursor, Qwen Code, opencode, Codex CLI, Windsurf, Kilo Code, Auggie CLI, Roo Code, CodeBuddy, Qoder CLI, Amazon Q Developer CLI, Amp, SHAI, IBM Bob, Antigravity
11+
**Currently supported agents**: Claude Code, Gemini CLI, GitHub Copilot, Cursor, Qwen Code, opencode, Codex CLI, Windsurf, Kilo Code, Auggie CLI, Roo Code, CodeBuddy, Qoder CLI, Kiro CLI, Amp, SHAI, IBM Bob, Antigravity
1212
1313
- type: input
1414
id: agent-name

.github/ISSUE_TEMPLATE/bug_report.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ body:
7575
- Roo Code
7676
- CodeBuddy
7777
- Qoder CLI
78-
- Amazon Q Developer CLI
78+
- Kiro CLI
7979
- Amp
8080
- SHAI
8181
- IBM Bob

.github/ISSUE_TEMPLATE/feature_request.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ body:
6969
- Roo Code
7070
- CodeBuddy
7171
- Qoder CLI
72-
- Amazon Q Developer CLI
72+
- Kiro CLI
7373
- Amp
7474
- SHAI
7575
- IBM Bob

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,8 @@ gh release create "$VERSION" \
4646
.genreleases/spec-kit-template-amp-ps-"$VERSION".zip \
4747
.genreleases/spec-kit-template-shai-sh-"$VERSION".zip \
4848
.genreleases/spec-kit-template-shai-ps-"$VERSION".zip \
49-
.genreleases/spec-kit-template-q-sh-"$VERSION".zip \
50-
.genreleases/spec-kit-template-q-ps-"$VERSION".zip \
49+
.genreleases/spec-kit-template-kiro-cli-sh-"$VERSION".zip \
50+
.genreleases/spec-kit-template-kiro-cli-ps-"$VERSION".zip \
5151
.genreleases/spec-kit-template-agy-sh-"$VERSION".zip \
5252
.genreleases/spec-kit-template-agy-ps-"$VERSION".zip \
5353
.genreleases/spec-kit-template-bob-sh-"$VERSION".zip \

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

Lines changed: 17 additions & 6 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, q, bob, qodercli, shai, agy, generic
17+
Valid agents: claude, gemini, copilot, cursor-agent, qwen, opencode, windsurf, codex, kilocode, auggie, roo, codebuddy, amp, kiro-cli, bob, qodercli, shai, agy, generic
1818
1919
.PARAMETER Scripts
2020
Comma or space separated subset of script types to build (default: both)
@@ -335,9 +335,9 @@ function Build-Variant {
335335
$cmdDir = Join-Path $baseDir ".agents/commands"
336336
Generate-Commands -Agent 'amp' -Extension 'md' -ArgFormat '$ARGUMENTS' -OutputDir $cmdDir -ScriptVariant $Script
337337
}
338-
'q' {
339-
$cmdDir = Join-Path $baseDir ".amazonq/prompts"
340-
Generate-Commands -Agent 'q' -Extension 'md' -ArgFormat '$ARGUMENTS' -OutputDir $cmdDir -ScriptVariant $Script
338+
'kiro-cli' {
339+
$cmdDir = Join-Path $baseDir ".kiro/prompts"
340+
Generate-Commands -Agent 'kiro-cli' -Extension 'md' -ArgFormat '$ARGUMENTS' -OutputDir $cmdDir -ScriptVariant $Script
341341
}
342342
'bob' {
343343
$cmdDir = Join-Path $baseDir ".bob/commands"
@@ -347,10 +347,21 @@ function Build-Variant {
347347
$cmdDir = Join-Path $baseDir ".qoder/commands"
348348
Generate-Commands -Agent 'qodercli' -Extension 'md' -ArgFormat '$ARGUMENTS' -OutputDir $cmdDir -ScriptVariant $Script
349349
}
350+
'shai' {
351+
$cmdDir = Join-Path $baseDir ".shai/commands"
352+
Generate-Commands -Agent 'shai' -Extension 'md' -ArgFormat '$ARGUMENTS' -OutputDir $cmdDir -ScriptVariant $Script
353+
}
354+
'agy' {
355+
$cmdDir = Join-Path $baseDir ".agent/workflows"
356+
Generate-Commands -Agent 'agy' -Extension 'md' -ArgFormat '$ARGUMENTS' -OutputDir $cmdDir -ScriptVariant $Script
357+
}
350358
'generic' {
351359
$cmdDir = Join-Path $baseDir ".speckit/commands"
352360
Generate-Commands -Agent 'generic' -Extension 'md' -ArgFormat '$ARGUMENTS' -OutputDir $cmdDir -ScriptVariant $Script
353361
}
362+
default {
363+
throw "Unsupported agent '$Agent'."
364+
}
354365
}
355366

356367
# Create zip archive
@@ -360,7 +371,7 @@ function Build-Variant {
360371
}
361372

362373
# Define all agents and scripts
363-
$AllAgents = @('claude', 'gemini', 'copilot', 'cursor-agent', 'qwen', 'opencode', 'windsurf', 'codex', 'kilocode', 'auggie', 'roo', 'codebuddy', 'amp', 'q', 'bob', 'qodercli', 'shai', 'agy', 'generic')
374+
$AllAgents = @('claude', 'gemini', 'copilot', 'cursor-agent', 'qwen', 'opencode', 'windsurf', 'codex', 'kilocode', 'auggie', 'roo', 'codebuddy', 'amp', 'kiro-cli', 'bob', 'qodercli', 'shai', 'agy', 'generic')
364375
$AllScripts = @('sh', 'ps')
365376

366377
function Normalize-List {
@@ -425,4 +436,4 @@ foreach ($agent in $AgentList) {
425436
Write-Host "`nArchives in ${GenReleasesDir}:"
426437
Get-ChildItem -Path $GenReleasesDir -Filter "spec-kit-template-*-${Version}.zip" | ForEach-Object {
427438
Write-Host " $($_.Name)"
428-
}
439+
}

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

Lines changed: 5 additions & 6 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 amp shai bob 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 kiro-cli agy bob qodercli 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
@@ -212,9 +212,9 @@ build_variant() {
212212
shai)
213213
mkdir -p "$base_dir/.shai/commands"
214214
generate_commands shai md "\$ARGUMENTS" "$base_dir/.shai/commands" "$script" ;;
215-
q)
216-
mkdir -p "$base_dir/.amazonq/prompts"
217-
generate_commands q md "\$ARGUMENTS" "$base_dir/.amazonq/prompts" "$script" ;;
215+
kiro-cli)
216+
mkdir -p "$base_dir/.kiro/prompts"
217+
generate_commands kiro-cli md "\$ARGUMENTS" "$base_dir/.kiro/prompts" "$script" ;;
218218
agy)
219219
mkdir -p "$base_dir/.agent/workflows"
220220
generate_commands agy md "\$ARGUMENTS" "$base_dir/.agent/workflows" "$script" ;;
@@ -230,7 +230,7 @@ build_variant() {
230230
}
231231

232232
# Determine agent list
233-
ALL_AGENTS=(claude gemini copilot cursor-agent qwen opencode windsurf codex kilocode auggie roo codebuddy amp shai q agy bob qodercli generic)
233+
ALL_AGENTS=(claude gemini copilot cursor-agent qwen opencode windsurf codex kilocode auggie roo codebuddy amp shai kiro-cli agy bob qodercli generic)
234234
ALL_SCRIPTS=(sh ps)
235235

236236
norm_list() {
@@ -277,4 +277,3 @@ done
277277

278278
echo "Archives in $GENRELEASES_DIR:"
279279
ls -1 "$GENRELEASES_DIR"/spec-kit-template-*-"${NEW_VERSION}".zip
280-

AGENTS.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ Specify supports multiple AI agents by generating agent-specific command files a
4444
| **Roo Code** | `.roo/rules/` | Markdown | N/A (IDE-based) | Roo Code IDE |
4545
| **CodeBuddy CLI** | `.codebuddy/commands/` | Markdown | `codebuddy` | CodeBuddy CLI |
4646
| **Qoder CLI** | `.qoder/commands/` | Markdown | `qodercli` | Qoder CLI |
47-
| **Amazon Q Developer CLI** | `.amazonq/prompts/` | Markdown | `q` | Amazon Q Developer CLI |
47+
| **Kiro CLI** | `.kiro/prompts/` | Markdown | `kiro-cli` | Kiro CLI |
4848
| **Amp** | `.agents/commands/` | Markdown | `amp` | Amp CLI |
4949
| **SHAI** | `.shai/commands/` | Markdown | `shai` | SHAI CLI |
5050
| **IBM Bob** | `.bob/commands/` | Markdown | N/A (IDE-based) | IBM Bob IDE |
@@ -86,7 +86,7 @@ This eliminates the need for special-case mappings throughout the codebase.
8686
- `folder`: Directory where agent-specific files are stored (relative to project root)
8787
- `commands_subdir`: Subdirectory name within the agent folder where command/prompt files are stored (default: `"commands"`)
8888
- Most agents use `"commands"` (e.g., `.claude/commands/`)
89-
- Some agents use alternative names: `"agents"` (copilot), `"workflows"` (windsurf, kilocode, agy), `"prompts"` (codex, q), `"command"` (opencode - singular)
89+
- Some agents use alternative names: `"agents"` (copilot), `"workflows"` (windsurf, kilocode, agy), `"prompts"` (codex, kiro-cli), `"command"` (opencode - singular)
9090
- This field enables `--ai-skills` to locate command templates correctly for skill generation
9191
- `install_url`: Installation documentation URL (set to `None` for IDE-based agents)
9292
- `requires_cli`: Whether the agent requires a CLI tool check during initialization
@@ -96,7 +96,7 @@ This eliminates the need for special-case mappings throughout the codebase.
9696
Update the `--ai` parameter help text in the `init()` command to include the new agent:
9797

9898
```python
99-
ai_assistant: str = typer.Option(None, "--ai", help="AI assistant to use: claude, gemini, copilot, cursor-agent, qwen, opencode, codex, windsurf, kilocode, auggie, codebuddy, new-agent-cli, or q"),
99+
ai_assistant: str = typer.Option(None, "--ai", help="AI assistant to use: claude, gemini, copilot, cursor-agent, qwen, opencode, codex, windsurf, kilocode, auggie, codebuddy, new-agent-cli, or kiro-cli"),
100100
```
101101

102102
Also update any function docstrings, examples, and error messages that list available agents.
@@ -117,7 +117,7 @@ Modify `.github/workflows/scripts/create-release-packages.sh`:
117117
##### Add to ALL_AGENTS array
118118

119119
```bash
120-
ALL_AGENTS=(claude gemini copilot cursor-agent qwen opencode windsurf q)
120+
ALL_AGENTS=(claude gemini copilot cursor-agent qwen opencode windsurf kiro-cli)
121121
```
122122

123123
##### Add case statement for directory structure
@@ -317,7 +317,7 @@ Require a command-line tool to be installed:
317317
- **Cursor**: `cursor-agent` CLI
318318
- **Qwen Code**: `qwen` CLI
319319
- **opencode**: `opencode` CLI
320-
- **Amazon Q Developer CLI**: `q` CLI
320+
- **Kiro CLI**: `kiro-cli` CLI
321321
- **CodeBuddy CLI**: `codebuddy` CLI
322322
- **Qoder CLI**: `qodercli` CLI
323323
- **Amp**: `amp` CLI
@@ -335,7 +335,7 @@ Work within integrated development environments:
335335

336336
### Markdown Format
337337

338-
Used by: Claude, Cursor, opencode, Windsurf, Amazon Q Developer, Amp, SHAI, IBM Bob
338+
Used by: Claude, Cursor, opencode, Windsurf, Kiro CLI, Amp, SHAI, IBM Bob
339339

340340
**Standard format:**
341341

CHANGELOG.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
1515
- Changed Copilot file extension from `.md` to `.agent.md` in `CommandRegistrar.AGENT_CONFIGS` so Copilot recognizes agent files
1616
- Added generation of companion `.prompt.md` files in `.github/prompts/` during extension command registration, matching the release packaging behavior
1717
- Added cleanup of `.prompt.md` companion files when removing extensions via `specify extension remove`
18-
18+
- Fixed a syntax regression in `src/specify_cli/__init__.py` in `_build_ai_assistant_help()` that broke `ruff` and `pytest` collection in CI.
1919
## [0.1.12] - 2026-03-02
2020

2121
### Changed

0 commit comments

Comments
 (0)