Skip to content

Commit 23e0c5c

Browse files
authored
Merge pull request #695 from briananderson1222/q-agent
Amazon Q Developer CLI Integration
2 parents e3b456c + 12b823e commit 23e0c5c

File tree

8 files changed

+54
-22
lines changed

8 files changed

+54
-22
lines changed

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,5 +38,7 @@ gh release create "$VERSION" \
3838
.genreleases/spec-kit-template-auggie-ps-"$VERSION".zip \
3939
.genreleases/spec-kit-template-roo-sh-"$VERSION".zip \
4040
.genreleases/spec-kit-template-roo-ps-"$VERSION".zip \
41+
.genreleases/spec-kit-template-q-sh-"$VERSION".zip \
42+
.genreleases/spec-kit-template-q-ps-"$VERSION".zip \
4143
--title "Spec Kit Templates - $VERSION_NO_V" \
4244
--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
@@ -172,13 +172,16 @@ build_variant() {
172172
roo)
173173
mkdir -p "$base_dir/.roo/commands"
174174
generate_commands roo md "\$ARGUMENTS" "$base_dir/.roo/commands" "$script" ;;
175+
q)
176+
mkdir -p "$base_dir/.amazonq/prompts"
177+
generate_commands q md "\$ARGUMENTS" "$base_dir/.amazonq/prompts" "$script" ;;
175178
esac
176179
( cd "$base_dir" && zip -r "../spec-kit-template-${agent}-${script}-${NEW_VERSION}.zip" . )
177180
echo "Created $GENRELEASES_DIR/spec-kit-template-${agent}-${script}-${NEW_VERSION}.zip"
178181
}
179182

180183
# Determine agent list
181-
ALL_AGENTS=(claude gemini copilot cursor qwen opencode windsurf codex kilocode auggie roo)
184+
ALL_AGENTS=(claude gemini copilot cursor qwen opencode windsurf codex kilocode auggie roo q)
182185
ALL_SCRIPTS=(sh ps)
183186

184187

AGENTS.md

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,8 @@ Specify supports multiple AI agents by generating agent-specific command files a
3838
| **Qwen Code** | `.qwen/commands/` | TOML | `qwen` | Alibaba's Qwen Code CLI |
3939
| **opencode** | `.opencode/command/` | Markdown | `opencode` | opencode CLI |
4040
| **Windsurf** | `.windsurf/workflows/` | Markdown | N/A (IDE-based) | Windsurf IDE workflows |
41+
| **Amazon Q Developer CLI** | `.amazonq/prompts/` | Markdown | `q` | Amazon Q Developer CLI |
42+
4143

4244
### Step-by-Step Integration Guide
4345

@@ -55,7 +57,8 @@ AI_CHOICES = {
5557
"cursor": "Cursor",
5658
"qwen": "Qwen Code",
5759
"opencode": "opencode",
58-
"windsurf": "Windsurf" # Add new agent here
60+
"windsurf": "Windsurf",
61+
"q": "Amazon Q Developer CLI" # Add new agent here
5962
}
6063
```
6164

@@ -69,10 +72,11 @@ agent_folder_map = {
6972
"qwen": ".qwen/",
7073
"opencode": ".opencode/",
7174
"codex": ".codex/",
72-
"windsurf": ".windsurf/", # Add new agent folder here
75+
"windsurf": ".windsurf/",
7376
"kilocode": ".kilocode/",
7477
"auggie": ".auggie/",
75-
"copilot": ".github/"
78+
"copilot": ".github/",
79+
"q": ".amazonq/" # Add new agent folder here
7680
}
7781
```
7882

@@ -99,7 +103,7 @@ Modify `.github/workflows/scripts/create-release-packages.sh`:
99103

100104
##### Add to ALL_AGENTS array:
101105
```bash
102-
ALL_AGENTS=(claude gemini copilot cursor qwen opencode windsurf)
106+
ALL_AGENTS=(claude gemini copilot cursor qwen opencode windsurf q)
103107
```
104108

105109
##### Add case statement for directory structure:
@@ -206,7 +210,7 @@ Work within integrated development environments:
206210
## Command File Formats
207211

208212
### Markdown Format
209-
Used by: Claude, Cursor, opencode, Windsurf
213+
Used by: Claude, Cursor, opencode, Windsurf, Amazon Q Developer
210214

211215
```markdown
212216
---

README.md

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,7 @@ Want to see Spec Kit in action? Watch our [video overview](https://www.youtube.c
133133
| [Kilo Code](https://github.com/Kilo-Org/kilocode) || |
134134
| [Auggie CLI](https://docs.augmentcode.com/cli/overview) || |
135135
| [Roo Code](https://roocode.com/) || |
136+
| [Amazon Q Developer CLI](https://aws.amazon.com/developer/learning/q-developer-cli/) | ⚠️ | Amazon Q Developer CLI [does not support](https://github.com/aws/amazon-q-developer-cli/issues/3064) custom arguments for slash commands. |
136137
| [Codex CLI](https://github.com/openai/codex) | ⚠️ | Codex [does not support](https://github.com/openai/codex/issues/2890) custom arguments for slash commands. |
137138

138139
## 🔧 Specify CLI Reference
@@ -151,7 +152,7 @@ The `specify` command supports the following options:
151152
| Argument/Option | Type | Description |
152153
|------------------------|----------|------------------------------------------------------------------------------|
153154
| `<project-name>` | Argument | Name for your new project directory (optional if using `--here`, or use `.` for current directory) |
154-
| `--ai` | Option | AI assistant to use: `claude`, `gemini`, `copilot`, `cursor`, `qwen`, `opencode`, `codex`, `windsurf`, `kilocode`, `auggie`, or `roo` |
155+
| `--ai` | Option | AI assistant to use: `claude`, `gemini`, `copilot`, `cursor`, `qwen`, `opencode`, `codex`, `windsurf`, `kilocode`, `auggie`, `roo`, or `q` |
155156
| `--script` | Option | Script variant to use: `sh` (bash/zsh) or `ps` (PowerShell) |
156157
| `--ignore-agent-tools` | Flag | Skip checks for AI agent tools like Claude Code |
157158
| `--no-git` | Flag | Skip git repository initialization |
@@ -268,7 +269,7 @@ Our research and experimentation focus on:
268269
## 🔧 Prerequisites
269270

270271
- **Linux/macOS** (or WSL2 on Windows)
271-
- AI coding agent: [Claude Code](https://www.anthropic.com/claude-code), [GitHub Copilot](https://code.visualstudio.com/), [Gemini CLI](https://github.com/google-gemini/gemini-cli), [Cursor](https://cursor.sh/), [Qwen CLI](https://github.com/QwenLM/qwen-code), [opencode](https://opencode.ai/), [Codex CLI](https://github.com/openai/codex), or [Windsurf](https://windsurf.com/)
272+
- AI coding agent: [Claude Code](https://www.anthropic.com/claude-code), [GitHub Copilot](https://code.visualstudio.com/), [Gemini CLI](https://github.com/google-gemini/gemini-cli), [Cursor](https://cursor.sh/), [Qwen CLI](https://github.com/QwenLM/qwen-code), [opencode](https://opencode.ai/), [Codex CLI](https://github.com/openai/codex), [Windsurf](https://windsurf.com/), or [Amazon Q Developer CLI](https://aws.amazon.com/developer/learning/q-developer-cli/)
272273
- [uv](https://docs.astral.sh/uv/) for package management
273274
- [Python 3.11+](https://www.python.org/downloads/)
274275
- [Git](https://git-scm.com/downloads)
@@ -318,6 +319,7 @@ specify init <project_name> --ai qwen
318319
specify init <project_name> --ai opencode
319320
specify init <project_name> --ai codex
320321
specify init <project_name> --ai windsurf
322+
specify init <project_name> --ai q
321323
# Or in current directory:
322324
specify init . --ai claude
323325
specify init . --ai codex
@@ -330,7 +332,7 @@ specify init . --force --ai claude
330332
specify init --here --force --ai claude
331333
```
332334

333-
The CLI will check if you have Claude Code, Gemini CLI, Cursor CLI, Qwen CLI, opencode, or Codex CLI 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:
335+
The CLI will check if you have Claude Code, Gemini CLI, Cursor CLI, Qwen CLI, opencode, Codex CLI, or Amazon Q Developer CLI 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:
334336

335337
```bash
336338
specify init <project_name> --ai claude --ignore-agent-tools

scripts/bash/update-agent-context.sh

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,12 +30,12 @@
3030
#
3131
# 5. Multi-Agent Support
3232
# - Handles agent-specific file paths and naming conventions
33-
# - Supports: Claude, Gemini, Copilot, Cursor, Qwen, opencode, Codex, Windsurf
33+
# - Supports: Claude, Gemini, Copilot, Cursor, Qwen, opencode, Codex, Windsurf, Kilo Code, Auggie CLI, or Amazon Q Developer CLI
3434
# - Can update single agents or all existing agent files
3535
# - Creates default Claude file if no agent files exist
3636
#
3737
# Usage: ./update-agent-context.sh [agent_type]
38-
# Agent types: claude|gemini|copilot|cursor|qwen|opencode|codex|windsurf
38+
# Agent types: claude|gemini|copilot|cursor|qwen|opencode|codex|windsurf|kilocode|auggie|q
3939
# Leave empty to update all existing agent files
4040

4141
set -e
@@ -69,6 +69,7 @@ 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"
7171
ROO_FILE="$REPO_ROOT/.roo/rules/specify-rules.md"
72+
Q_FILE="$REPO_ROOT/AGENTS.md"
7273

7374
# Template file
7475
TEMPLATE_FILE="$REPO_ROOT/.specify/templates/agent-file-template.md"
@@ -580,9 +581,12 @@ update_specific_agent() {
580581
roo)
581582
update_agent_file "$ROO_FILE" "Roo Code"
582583
;;
584+
q)
585+
update_agent_file "$Q_FILE" "Amazon Q Developer CLI"
586+
;;
583587
*)
584588
log_error "Unknown agent type '$agent_type'"
585-
log_error "Expected: claude|gemini|copilot|cursor|qwen|opencode|codex|windsurf|kilocode|auggie|roo"
589+
log_error "Expected: claude|gemini|copilot|cursor|qwen|opencode|codex|windsurf|kilocode|auggie|roo|q"
586590
exit 1
587591
;;
588592
esac
@@ -641,6 +645,11 @@ update_all_existing_agents() {
641645
update_agent_file "$ROO_FILE" "Roo Code"
642646
found_agent=true
643647
fi
648+
649+
if [[ -f "$Q_FILE" ]]; then
650+
update_agent_file "$Q_FILE" "Amazon Q Developer CLI"
651+
found_agent=true
652+
fi
644653

645654
# If no agent files exist, create a default Claude file
646655
if [[ "$found_agent" == false ]]; then
@@ -665,7 +674,7 @@ print_summary() {
665674
fi
666675

667676
echo
668-
log_info "Usage: $0 [claude|gemini|copilot|cursor|qwen|opencode|codex|windsurf|kilocode|auggie|roo]"
677+
log_info "Usage: $0 [claude|gemini|copilot|cursor|qwen|opencode|codex|windsurf|kilocode|auggie|q]"
669678
}
670679

671680
#==============================================================================

scripts/powershell/update-agent-context.ps1

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ Mirrors the behavior of scripts/bash/update-agent-context.sh:
99
2. Plan Data Extraction
1010
3. Agent File Management (create from template or update existing)
1111
4. Content Generation (technology stack, recent changes, timestamp)
12-
5. Multi-Agent Support (claude, gemini, copilot, cursor, qwen, opencode, codex, windsurf)
12+
5. Multi-Agent Support (claude, gemini, copilot, cursor, qwen, opencode, codex, windsurf, kilocode, auggie, roo, q)
1313
1414
.PARAMETER AgentType
1515
Optional agent key to update a single agent. If omitted, updates all existing agent files (creating a default Claude file if none exist).
@@ -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','roo')]
28+
[ValidateSet('claude','gemini','copilot','cursor','qwen','opencode','codex','windsurf','kilocode','auggie','roo','q')]
2929
[string]$AgentType
3030
)
3131

@@ -54,6 +54,7 @@ $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'
5656
$ROO_FILE = Join-Path $REPO_ROOT '.roo/rules/specify-rules.md'
57+
$Q_FILE = Join-Path $REPO_ROOT 'AGENTS.md'
5758

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

@@ -376,7 +377,8 @@ function Update-SpecificAgent {
376377
'kilocode' { Update-AgentFile -TargetFile $KILOCODE_FILE -AgentName 'Kilo Code' }
377378
'auggie' { Update-AgentFile -TargetFile $AUGGIE_FILE -AgentName 'Auggie CLI' }
378379
'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 }
380+
'q' { Update-AgentFile -TargetFile $Q_FILE -AgentName 'Amazon Q Developer CLI' }
381+
default { Write-Err "Unknown agent type '$Type'"; Write-Err 'Expected: claude|gemini|copilot|cursor|qwen|opencode|codex|windsurf|kilocode|auggie|roo|q'; return $false }
380382
}
381383
}
382384

@@ -393,6 +395,7 @@ function Update-AllExistingAgents {
393395
if (Test-Path $KILOCODE_FILE) { if (-not (Update-AgentFile -TargetFile $KILOCODE_FILE -AgentName 'Kilo Code')) { $ok = $false }; $found = $true }
394396
if (Test-Path $AUGGIE_FILE) { if (-not (Update-AgentFile -TargetFile $AUGGIE_FILE -AgentName 'Auggie CLI')) { $ok = $false }; $found = $true }
395397
if (Test-Path $ROO_FILE) { if (-not (Update-AgentFile -TargetFile $ROO_FILE -AgentName 'Roo Code')) { $ok = $false }; $found = $true }
398+
if (Test-Path $Q_FILE) { if (-not (Update-AgentFile -TargetFile $Q_FILE -AgentName 'Amazon Q Developer CLI')) { $ok = $false }; $found = $true }
396399
if (-not $found) {
397400
Write-Info 'No existing agent files found, creating default Claude file...'
398401
if (-not (Update-AgentFile -TargetFile $CLAUDE_FILE -AgentName 'Claude Code')) { $ok = $false }
@@ -407,7 +410,7 @@ function Print-Summary {
407410
if ($NEW_FRAMEWORK) { Write-Host " - Added framework: $NEW_FRAMEWORK" }
408411
if ($NEW_DB -and $NEW_DB -ne 'N/A') { Write-Host " - Added database: $NEW_DB" }
409412
Write-Host ''
410-
Write-Info 'Usage: ./update-agent-context.ps1 [-AgentType claude|gemini|copilot|cursor|qwen|opencode|codex|windsurf|kilocode|auggie|roo]'
413+
Write-Info 'Usage: ./update-agent-context.ps1 [-AgentType claude|gemini|copilot|cursor|qwen|opencode|codex|windsurf|kilocode|auggie|roo|q]'
411414
}
412415

413416
function Main {

src/specify_cli/__init__.py

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,7 @@ def _github_auth_headers(cli_token: str | None = None) -> dict:
7777
"kilocode": "Kilo Code",
7878
"auggie": "Auggie CLI",
7979
"roo": "Roo Code",
80+
"q": "Amazon Q Developer CLI",
8081
}
8182
# Add script type choices
8283
SCRIPT_TYPE_CHOICES = {"sh": "POSIX Shell (bash/zsh)", "ps": "PowerShell"}
@@ -750,7 +751,7 @@ def ensure_executable_scripts(project_path: Path, tracker: StepTracker | None =
750751
@app.command()
751752
def init(
752753
project_name: str = typer.Argument(None, help="Name for your new project directory (optional if using --here, or use '.' for current directory)"),
753-
ai_assistant: str = typer.Option(None, "--ai", help="AI assistant to use: claude, gemini, copilot, cursor, qwen, opencode, codex, windsurf, kilocode, or auggie"),
754+
ai_assistant: str = typer.Option(None, "--ai", help="AI assistant to use: claude, gemini, copilot, cursor, qwen, opencode, codex, windsurf, kilocode, auggie or q"),
754755
script_type: str = typer.Option(None, "--script", help="Script type to use: sh or ps"),
755756
ignore_agent_tools: bool = typer.Option(False, "--ignore-agent-tools", help="Skip checks for AI agent tools like Claude Code"),
756757
no_git: bool = typer.Option(False, "--no-git", help="Skip git repository initialization"),
@@ -765,7 +766,7 @@ def init(
765766
766767
This command will:
767768
1. Check that required tools are installed (git is optional)
768-
2. Let you choose your AI assistant (Claude Code, Gemini CLI, GitHub Copilot, Cursor, Qwen Code, opencode, Codex CLI, Windsurf, Kilo Code, or Auggie CLI)
769+
2. Let you choose your AI assistant (Claude Code, Gemini CLI, GitHub Copilot, Cursor, Qwen Code, opencode, Codex CLI, Windsurf, Kilo Code, Auggie CLI, or Amazon Q Developer CLI)
769770
3. Download the appropriate template from GitHub
770771
4. Extract the template to a new project directory or current directory
771772
5. Initialize a fresh git repository (if not --no-git and no existing repo)
@@ -782,6 +783,7 @@ def init(
782783
specify init my-project --ai codex
783784
specify init my-project --ai windsurf
784785
specify init my-project --ai auggie
786+
specify init my-project --ai q
785787
specify init --ignore-agent-tools my-project
786788
specify init . --ai claude # Initialize in current directory
787789
specify init . # Initialize in current directory (interactive AI selection)
@@ -906,6 +908,10 @@ def init(
906908
if not check_tool("auggie", "https://docs.augmentcode.com/cli/setup-auggie/install-auggie-cli"):
907909
install_url = "https://docs.augmentcode.com/cli/setup-auggie/install-auggie-cli"
908910
agent_tool_missing = True
911+
elif selected_ai == "q":
912+
if not check_tool("q", "https://github.com/aws/amazon-q-developer-cli"):
913+
install_url = "https://aws.amazon.com/developer/learning/q-developer-cli/"
914+
agent_tool_missing = True
909915
# GitHub Copilot and Cursor checks are not needed as they're typically available in supported IDEs
910916

911917
if agent_tool_missing:
@@ -1030,7 +1036,8 @@ def init(
10301036
"kilocode": ".kilocode/",
10311037
"auggie": ".augment/",
10321038
"copilot": ".github/",
1033-
"roo": ".roo/"
1039+
"roo": ".roo/",
1040+
"q": ".amazonq/"
10341041
}
10351042

10361043
if selected_ai in agent_folder_map:
@@ -1119,6 +1126,7 @@ def check():
11191126
tracker.add("opencode", "opencode")
11201127
tracker.add("codex", "Codex CLI")
11211128
tracker.add("auggie", "Auggie CLI")
1129+
tracker.add("q", "Amazon Q Developer CLI")
11221130

11231131
git_ok = check_tool_for_tracker("git", tracker)
11241132
claude_ok = check_tool_for_tracker("claude", tracker)
@@ -1132,14 +1140,15 @@ def check():
11321140
opencode_ok = check_tool_for_tracker("opencode", tracker)
11331141
codex_ok = check_tool_for_tracker("codex", tracker)
11341142
auggie_ok = check_tool_for_tracker("auggie", tracker)
1143+
q_ok = check_tool_for_tracker("q", tracker)
11351144

11361145
console.print(tracker.render())
11371146

11381147
console.print("\n[bold green]Specify CLI is ready to use![/bold green]")
11391148

11401149
if not git_ok:
11411150
console.print("[dim]Tip: Install git for repository management[/dim]")
1142-
if not (claude_ok or gemini_ok or cursor_ok or qwen_ok or windsurf_ok or kilocode_ok or opencode_ok or codex_ok or auggie_ok):
1151+
if not (claude_ok or gemini_ok or cursor_ok or qwen_ok or windsurf_ok or kilocode_ok or opencode_ok or codex_ok or auggie_ok or q_ok):
11431152
console.print("[dim]Tip: Install an AI assistant for the best experience[/dim]")
11441153

11451154

templates/plan-template.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ scripts:
2424
→ Update Progress Tracking: Initial Constitution Check
2525
5. Execute Phase 0 → research.md
2626
→ If NEEDS CLARIFICATION remain: ERROR "Resolve unknowns"
27-
6. Execute Phase 1 → contracts, data-model.md, quickstart.md, agent-specific template file (e.g., `CLAUDE.md` for Claude Code, `.github/copilot-instructions.md` for GitHub Copilot, `GEMINI.md` for Gemini CLI, `QWEN.md` for Qwen Code or `AGENTS.md` for opencode).
27+
6. Execute Phase 1 → contracts, data-model.md, quickstart.md, agent-specific template file (e.g., `CLAUDE.md` for Claude Code, `.github/copilot-instructions.md` for GitHub Copilot, `GEMINI.md` for Gemini CLI, `QWEN.md` for Qwen Code, or `AGENTS.md` for all other agents).
2828
7. Re-evaluate Constitution Check section
2929
→ If new violations: Refactor design, return to Phase 1
3030
→ Update Progress Tracking: Post-Design Constitution Check

0 commit comments

Comments
 (0)