From c65b0fbb62768ee395bb588ececb08b460194102 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Den=20Delimarsky=20=F0=9F=8C=BA?=
<53200638+localden@users.noreply.github.com>
Date: Sun, 21 Sep 2025 11:38:04 -0700
Subject: [PATCH 01/15] Update templates based on #419
---
templates/commands/constitution.md | 2 +-
templates/commands/implement.md | 2 +-
templates/commands/plan.md | 2 +-
templates/commands/specify.md | 2 +-
templates/commands/tasks.md | 2 +-
5 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/templates/commands/constitution.md b/templates/commands/constitution.md
index 671d2c9..008bf20 100644
--- a/templates/commands/constitution.md
+++ b/templates/commands/constitution.md
@@ -2,7 +2,7 @@
description: Create or update the project constitution from interactive or provided principle inputs, ensuring all dependent templates stay in sync.
---
-The user input to you can be provided directly by the agent or in `$ARGUMENTS` - you **MUST** consider it before proceeding with the prompt (if not empty).
+The user input to you can be provided directly by the agent or as an argument parameter - you **MUST** consider it before proceeding with the prompt (if not empty).
User input:
diff --git a/templates/commands/implement.md b/templates/commands/implement.md
index 19e45f7..6137f18 100644
--- a/templates/commands/implement.md
+++ b/templates/commands/implement.md
@@ -5,7 +5,7 @@ scripts:
ps: scripts/powershell/check-prerequisites.ps1 -Json -RequireTasks -IncludeTasks
---
-The user input to you can be provided directly by the agent or in `$ARGUMENTS` - you **MUST** consider it before proceeding with the prompt (if not empty).
+The user input to you can be provided directly by the agent or as an argument parameter - you **MUST** consider it before proceeding with the prompt (if not empty).
User input:
diff --git a/templates/commands/plan.md b/templates/commands/plan.md
index afb9c90..7c74f63 100644
--- a/templates/commands/plan.md
+++ b/templates/commands/plan.md
@@ -5,7 +5,7 @@ scripts:
ps: scripts/powershell/setup-plan.ps1 -Json
---
-The user input to you can be provided directly by the agent or in `$ARGUMENTS` - you **MUST** consider it before proceeding with the prompt (if not empty).
+The user input to you can be provided directly by the agent or as an argument parameter - you **MUST** consider it before proceeding with the prompt (if not empty).
User input:
diff --git a/templates/commands/specify.md b/templates/commands/specify.md
index 474f7b0..de09e23 100644
--- a/templates/commands/specify.md
+++ b/templates/commands/specify.md
@@ -5,7 +5,7 @@ scripts:
ps: scripts/powershell/create-new-feature.ps1 -Json "{ARGS}"
---
-The user input to you can be provided directly by the agent or in `$ARGUMENTS` - you **MUST** consider it before proceeding with the prompt (if not empty).
+The user input to you can be provided directly by the agent or as an argument parameter - you **MUST** consider it before proceeding with the prompt (if not empty).
User input:
diff --git a/templates/commands/tasks.md b/templates/commands/tasks.md
index 792dd23..7fc862d 100644
--- a/templates/commands/tasks.md
+++ b/templates/commands/tasks.md
@@ -5,7 +5,7 @@ scripts:
ps: scripts/powershell/check-prerequisites.ps1 -Json
---
-The user input to you can be provided directly by the agent or in `$ARGUMENTS` - you **MUST** consider it before proceeding with the prompt (if not empty).
+The user input to you can be provided directly by the agent or as an argument parameter - you **MUST** consider it before proceeding with the prompt (if not empty).
User input:
From 86aaf2daed714501df8d1d757cf8bb3bf979f0fa Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Den=20Delimarsky=20=F0=9F=8C=BA?=
<53200638+localden@users.noreply.github.com>
Date: Sun, 21 Sep 2025 11:42:22 -0700
Subject: [PATCH 02/15] Stop splitting the warning over multiple lines
---
src/specify_cli/__init__.py | 5 +----
1 file changed, 1 insertion(+), 4 deletions(-)
diff --git a/src/specify_cli/__init__.py b/src/specify_cli/__init__.py
index 4e1d111..72f986e 100644
--- a/src/specify_cli/__init__.py
+++ b/src/specify_cli/__init__.py
@@ -1013,13 +1013,10 @@ def init(
console.print()
console.print(steps_panel)
- # Add Codex warning if using Codex
if selected_ai == "codex":
warning_text = """[bold yellow]Important Note:[/bold yellow]
-Custom prompts do not yet support arguments in Codex. You may need to manually
-specify additional project instructions directly in prompt files located in
-[cyan].codex/prompts/[/cyan].
+Custom prompts do not yet support arguments in Codex. You may need to manually specify additional project instructions directly in prompt files located in [cyan].codex/prompts/[/cyan].
For more information, see: [cyan]https://github.com/openai/codex/issues/2890[/cyan]"""
From cef4e8f49549593a28951db8a137d4600bf4dc91 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Den=20Delimarsky=20=F0=9F=8C=BA?=
<53200638+localden@users.noreply.github.com>
Date: Sun, 21 Sep 2025 11:45:33 -0700
Subject: [PATCH 03/15] Update README.md
---
README.md | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/README.md b/README.md
index bacba21..d2fd54a 100644
--- a/README.md
+++ b/README.md
@@ -163,6 +163,12 @@ After running `specify init`, your AI coding agent will have access to these sla
| `/tasks` | Generate actionable task lists for implementation |
| `/implement` | Execute all tasks to build the feature according to the plan |
+### Environment Variables
+
+| Variable | Description |
+|------------------|------------------------------------------------------------------------------------------------|
+| `SPECIFY_FEATURE` | Override feature detection for non-git repositories. Set to the feature directory name (e.g., `001-photo-albums`) to work on a specific feature when not using git branches.
**Must be set in the context of the agent you're working with prior to using `/plan` or follow-up commands. |
+
## π Core philosophy
Spec-Driven Development is a structured process that emphasizes:
From 33652bf143d0edb5a58adb116184ca8c38ab592d Mon Sep 17 00:00:00 2001
From: Den Delimarsky <53200638+localden@users.noreply.github.com>
Date: Sun, 21 Sep 2025 11:51:24 -0700
Subject: [PATCH 04/15] Update templates/commands/tasks.md
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
---
templates/commands/tasks.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/templates/commands/tasks.md b/templates/commands/tasks.md
index 7fc862d..eb0ef2b 100644
--- a/templates/commands/tasks.md
+++ b/templates/commands/tasks.md
@@ -5,7 +5,7 @@ scripts:
ps: scripts/powershell/check-prerequisites.ps1 -Json
---
-The user input to you can be provided directly by the agent or as an argument parameter - you **MUST** consider it before proceeding with the prompt (if not empty).
+The user input to you can be provided directly by the agent or as a command argument - you **MUST** consider it before proceeding with the prompt (if not empty).
User input:
From 713af3c3143dd70db7d7cc06db3ce0032e7b3ac4 Mon Sep 17 00:00:00 2001
From: Den Delimarsky <53200638+localden@users.noreply.github.com>
Date: Sun, 21 Sep 2025 11:51:32 -0700
Subject: [PATCH 05/15] Update templates/commands/specify.md
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
---
templates/commands/specify.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/templates/commands/specify.md b/templates/commands/specify.md
index de09e23..652c86a 100644
--- a/templates/commands/specify.md
+++ b/templates/commands/specify.md
@@ -5,7 +5,7 @@ scripts:
ps: scripts/powershell/create-new-feature.ps1 -Json "{ARGS}"
---
-The user input to you can be provided directly by the agent or as an argument parameter - you **MUST** consider it before proceeding with the prompt (if not empty).
+The user input to you can be provided directly by the agent or as a command argument - you **MUST** consider it before proceeding with the prompt (if not empty).
User input:
From ebf53e10b309daaf213cddfcaa180335be6b2dfd Mon Sep 17 00:00:00 2001
From: Den Delimarsky <53200638+localden@users.noreply.github.com>
Date: Sun, 21 Sep 2025 11:51:40 -0700
Subject: [PATCH 06/15] Update templates/commands/plan.md
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
---
templates/commands/plan.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/templates/commands/plan.md b/templates/commands/plan.md
index 7c74f63..466f231 100644
--- a/templates/commands/plan.md
+++ b/templates/commands/plan.md
@@ -5,7 +5,7 @@ scripts:
ps: scripts/powershell/setup-plan.ps1 -Json
---
-The user input to you can be provided directly by the agent or as an argument parameter - you **MUST** consider it before proceeding with the prompt (if not empty).
+The user input to you can be provided directly by the agent or as a command argument - you **MUST** consider it before proceeding with the prompt (if not empty).
User input:
From 026aa69aadc742eaec2307593d2ad9c842dd9918 Mon Sep 17 00:00:00 2001
From: Den Delimarsky <53200638+localden@users.noreply.github.com>
Date: Sun, 21 Sep 2025 11:51:46 -0700
Subject: [PATCH 07/15] Update templates/commands/implement.md
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
---
templates/commands/implement.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/templates/commands/implement.md b/templates/commands/implement.md
index 6137f18..af7ec23 100644
--- a/templates/commands/implement.md
+++ b/templates/commands/implement.md
@@ -5,7 +5,7 @@ scripts:
ps: scripts/powershell/check-prerequisites.ps1 -Json -RequireTasks -IncludeTasks
---
-The user input to you can be provided directly by the agent or as an argument parameter - you **MUST** consider it before proceeding with the prompt (if not empty).
+The user input can be provided directly by the agent or as a command argumentβyou **MUST** consider it before proceeding with the prompt (if not empty).
User input:
From ef05d4846a90651f71a4f369be1151505608b523 Mon Sep 17 00:00:00 2001
From: Den Delimarsky <53200638+localden@users.noreply.github.com>
Date: Sun, 21 Sep 2025 11:51:54 -0700
Subject: [PATCH 08/15] Update templates/commands/constitution.md
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
---
templates/commands/constitution.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/templates/commands/constitution.md b/templates/commands/constitution.md
index 008bf20..605e936 100644
--- a/templates/commands/constitution.md
+++ b/templates/commands/constitution.md
@@ -2,7 +2,7 @@
description: Create or update the project constitution from interactive or provided principle inputs, ensuring all dependent templates stay in sync.
---
-The user input to you can be provided directly by the agent or as an argument parameter - you **MUST** consider it before proceeding with the prompt (if not empty).
+The user input to you can be provided directly by the agent or as a command argument - you **MUST** consider it before proceeding with the prompt (if not empty).
User input:
From 39b33ebd22403d0cc7bf0d61a2707b0a81139158 Mon Sep 17 00:00:00 2001
From: Den Delimarsky <53200638+localden@users.noreply.github.com>
Date: Sun, 21 Sep 2025 11:52:10 -0700
Subject: [PATCH 09/15] Update README.md
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index d2fd54a..82e4ab2 100644
--- a/README.md
+++ b/README.md
@@ -167,7 +167,7 @@ After running `specify init`, your AI coding agent will have access to these sla
| Variable | Description |
|------------------|------------------------------------------------------------------------------------------------|
-| `SPECIFY_FEATURE` | Override feature detection for non-git repositories. Set to the feature directory name (e.g., `001-photo-albums`) to work on a specific feature when not using git branches.
**Must be set in the context of the agent you're working with prior to using `/plan` or follow-up commands. |
+| `SPECIFY_FEATURE` | Override feature detection for non-Git repositories. Set to the feature directory name (e.g., `001-photo-albums`) to work on a specific feature when not using Git branches.
**Must be set in the context of the agent you're working with prior to using `/plan` or follow-up commands. |
## π Core philosophy
From dceb903804a725d2546fe9680c0fa095e55db1b6 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Den=20Delimarsky=20=F0=9F=8C=BA?=
<53200638+localden@users.noreply.github.com>
Date: Sun, 21 Sep 2025 12:32:16 -0700
Subject: [PATCH 10/15] Updates with Kilo Code support
---
.../workflows/scripts/create-github-release.sh | 2 ++
.../scripts/create-release-packages.sh | 5 ++++-
AGENTS.md | 16 ++++++++++++++--
CHANGELOG.md | 10 ++++++++++
CONTRIBUTING.md | 2 +-
README.md | 17 +++++++++++++++++
pyproject.toml | 2 +-
scripts/bash/update-agent-context.sh | 13 +++++++++++--
scripts/powershell/update-agent-context.ps1 | 9 ++++++---
src/specify_cli/__init__.py | 15 +++++++++------
10 files changed, 75 insertions(+), 16 deletions(-)
diff --git a/.github/workflows/scripts/create-github-release.sh b/.github/workflows/scripts/create-github-release.sh
index 86ce3f7..19ab47a 100644
--- a/.github/workflows/scripts/create-github-release.sh
+++ b/.github/workflows/scripts/create-github-release.sh
@@ -32,5 +32,7 @@ gh release create "$VERSION" \
.genreleases/spec-kit-template-windsurf-ps-"$VERSION".zip \
.genreleases/spec-kit-template-codex-sh-"$VERSION".zip \
.genreleases/spec-kit-template-codex-ps-"$VERSION".zip \
+ .genreleases/spec-kit-template-kilocode-sh-"$VERSION".zip \
+ .genreleases/spec-kit-template-kilocode-ps-"$VERSION".zip \
--title "Spec Kit Templates - $VERSION_NO_V" \
--notes-file release_notes.md
\ No newline at end of file
diff --git a/.github/workflows/scripts/create-release-packages.sh b/.github/workflows/scripts/create-release-packages.sh
index 0021c56..591c791 100644
--- a/.github/workflows/scripts/create-release-packages.sh
+++ b/.github/workflows/scripts/create-release-packages.sh
@@ -163,13 +163,16 @@ build_variant() {
codex)
mkdir -p "$base_dir/.codex/prompts"
generate_commands codex md "\$ARGUMENTS" "$base_dir/.codex/prompts" "$script" ;;
+ kilocode)
+ mkdir -p "$base_dir/.kilocode/workflows"
+ generate_commands kilocode md "\$ARGUMENTS" "$base_dir/.kilocode/workflows" "$script" ;;
esac
( cd "$base_dir" && zip -r "../spec-kit-template-${agent}-${script}-${NEW_VERSION}.zip" . )
echo "Created $GENRELEASES_DIR/spec-kit-template-${agent}-${script}-${NEW_VERSION}.zip"
}
# Determine agent list
-ALL_AGENTS=(claude gemini copilot cursor qwen opencode windsurf codex)
+ALL_AGENTS=(claude gemini copilot cursor qwen opencode windsurf codex kilocode)
ALL_SCRIPTS=(sh ps)
diff --git a/AGENTS.md b/AGENTS.md
index 6d85d98..971f436 100644
--- a/AGENTS.md
+++ b/AGENTS.md
@@ -86,7 +86,19 @@ case $agent in
esac
```
-#### 4. Update Agent Context Scripts
+#### 4. Update GitHub Release Script
+
+Modify `.github/workflows/scripts/create-github-release.sh` to include the new agent's packages:
+
+```bash
+gh release create "$VERSION" \
+ # ... existing packages ...
+ .genreleases/spec-kit-template-windsurf-sh-"$VERSION".zip \
+ .genreleases/spec-kit-template-windsurf-ps-"$VERSION".zip \
+ # Add new agent packages here
+```
+
+#### 5. Update Agent Context Scripts
##### Bash script (`scripts/bash/update-agent-context.sh`):
@@ -132,7 +144,7 @@ switch ($AgentType) {
}
```
-#### 5. Update CLI Tool Checks (Optional)
+#### 6. Update CLI Tool Checks (Optional)
For agents that require CLI tools, add checks in the `check()` command and agent validation:
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 07e6a29..7d85bf7 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -5,6 +5,16 @@ All notable changes to the Specify CLI will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
+## [0.0.13] - 2025-09-21
+
+### Added
+
+- Support for Kilo Code. Thank you [@shahrukhkhan489](https://github.com/shahrukhkhan489) with [#394](https://github.com/github/spec-kit/pull/394).
+
+### Changed
+
+- Warning displayed to ensure that folks are aware that they might need to add their agent folder to `.gitignore`.
+
## [0.0.12] - 2025-09-21
### Changed
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 06461ee..17baec8 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -11,7 +11,7 @@ These are one time installations required to be able to test your changes locall
1. Install [Python 3.11+](https://www.python.org/downloads/)
1. Install [uv](https://docs.astral.sh/uv/) for package management
1. Install [Git](https://git-scm.com/downloads)
-1. Have an AI coding agent available: [Claude Code](https://www.anthropic.com/claude-code), [GitHub Copilot](https://code.visualstudio.com/), [Gemini CLI](https://github.com/google-gemini/gemini-cli), or [Qwen Code](https://github.com/QwenLM/qwen-code). We're working on adding support for other agents as well.
+1. Have an [AI coding agent available](README.md#-supported-ai-agents)
## Submitting a pull request
diff --git a/README.md b/README.md
index d2fd54a..d2cbf41 100644
--- a/README.md
+++ b/README.md
@@ -17,6 +17,7 @@
- [π€ What is Spec-Driven Development?](#-what-is-spec-driven-development)
- [β‘ Get started](#-get-started)
- [π½οΈ Video Overview](#οΈ-video-overview)
+- [π€ Supported AI Agents](#-supported-ai-agents)
- [π§ Specify CLI Reference](#-specify-cli-reference)
- [π Core philosophy](#-core-philosophy)
- [π Development phases](#-development-phases)
@@ -92,6 +93,20 @@ Want to see Spec Kit in action? Watch our [video overview](https://www.youtube.c
[](https://www.youtube.com/watch?v=a9eR1xsfvHg&pp=0gcJCckJAYcqIYzv)
+## π€ Supported AI Agents
+
+| Agent | Support | Notes |
+|-----------------------------------------------------------|---------|---------------------------------------------------|
+| [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 Code](https://github.com/QwenLM/qwen-code) | β
| |
+| [opencode](https://opencode.ai/) | β
| |
+| [Windsurf](https://windsurf.com/) | β
| |
+| [Kilo Code](https://github.com/Kilo-Org/kilocode) | β
| |
+| [Codex CLI](https://github.com/openai/codex) | β οΈ | Codex [does not support](https://github.com/openai/codex/issues/2890) custom arguments for slash commands. |
+
## π§ Specify CLI Reference
The `specify` command supports the following options:
@@ -220,6 +235,8 @@ Our research and experimentation focus on:
- [Python 3.11+](https://www.python.org/downloads/)
- [Git](https://git-scm.com/downloads)
+If you encounter issues with an agent, please open an issue so we can refine the integration.
+
## π Learn more
- **[Complete Spec-Driven Development Methodology](./spec-driven.md)** - Deep dive into the full process
diff --git a/pyproject.toml b/pyproject.toml
index e44820b..4b5f73c 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -1,6 +1,6 @@
[project]
name = "specify-cli"
-version = "0.0.12"
+version = "0.0.13"
description = "Specify CLI, part of GitHub Spec Kit. A tool to bootstrap your projects for Spec-Driven Development (SDD)."
requires-python = ">=3.11"
dependencies = [
diff --git a/scripts/bash/update-agent-context.sh b/scripts/bash/update-agent-context.sh
index 96131f5..e35ae4b 100644
--- a/scripts/bash/update-agent-context.sh
+++ b/scripts/bash/update-agent-context.sh
@@ -66,6 +66,7 @@ CURSOR_FILE="$REPO_ROOT/.cursor/rules/specify-rules.mdc"
QWEN_FILE="$REPO_ROOT/QWEN.md"
AGENTS_FILE="$REPO_ROOT/AGENTS.md"
WINDSURF_FILE="$REPO_ROOT/.windsurf/rules/specify-rules.md"
+KILOCODE_FILE="$REPO_ROOT/.kilocode/rules/specify-rules.md"
# Template file
TEMPLATE_FILE="$REPO_ROOT/.specify/templates/agent-file-template.md"
@@ -568,9 +569,12 @@ update_specific_agent() {
windsurf)
update_agent_file "$WINDSURF_FILE" "Windsurf"
;;
+ kilocode)
+ update_agent_file "$KILOCODE_FILE" "Kilo Code"
+ ;;
*)
log_error "Unknown agent type '$agent_type'"
- log_error "Expected: claude|gemini|copilot|cursor|qwen|opencode|codex|windsurf"
+ log_error "Expected: claude|gemini|copilot|cursor|qwen|opencode|codex|windsurf|kilocode"
exit 1
;;
esac
@@ -615,6 +619,11 @@ update_all_existing_agents() {
found_agent=true
fi
+ if [[ -f "$KILOCODE_FILE" ]]; then
+ update_agent_file "$KILOCODE_FILE" "Kilo Code"
+ found_agent=true
+ fi
+
# If no agent files exist, create a default Claude file
if [[ "$found_agent" == false ]]; then
log_info "No existing agent files found, creating default Claude file..."
@@ -638,7 +647,7 @@ print_summary() {
fi
echo
- log_info "Usage: $0 [claude|gemini|copilot|cursor|qwen|opencode|codex|windsurf]"
+ log_info "Usage: $0 [claude|gemini|copilot|cursor|qwen|opencode|codex|windsurf|kilocode]"
}
#==============================================================================
diff --git a/scripts/powershell/update-agent-context.ps1 b/scripts/powershell/update-agent-context.ps1
index 5204b47..27a058d 100644
--- a/scripts/powershell/update-agent-context.ps1
+++ b/scripts/powershell/update-agent-context.ps1
@@ -25,7 +25,7 @@ Relies on common helper functions in common.ps1
#>
param(
[Parameter(Position=0)]
- [ValidateSet('claude','gemini','copilot','cursor','qwen','opencode','codex','windsurf')]
+ [ValidateSet('claude','gemini','copilot','cursor','qwen','opencode','codex','windsurf','kilocode')]
[string]$AgentType
)
@@ -51,6 +51,7 @@ $CURSOR_FILE = Join-Path $REPO_ROOT '.cursor/rules/specify-rules.mdc'
$QWEN_FILE = Join-Path $REPO_ROOT 'QWEN.md'
$AGENTS_FILE = Join-Path $REPO_ROOT 'AGENTS.md'
$WINDSURF_FILE = Join-Path $REPO_ROOT '.windsurf/rules/specify-rules.md'
+$KILOCODE_FILE = Join-Path $REPO_ROOT '.kilocode/rules/specify-rules.md'
$TEMPLATE_FILE = Join-Path $REPO_ROOT '.specify/templates/agent-file-template.md'
@@ -370,7 +371,8 @@ function Update-SpecificAgent {
'opencode' { Update-AgentFile -TargetFile $AGENTS_FILE -AgentName 'opencode' }
'codex' { Update-AgentFile -TargetFile $AGENTS_FILE -AgentName 'Codex CLI' }
'windsurf' { Update-AgentFile -TargetFile $WINDSURF_FILE -AgentName 'Windsurf' }
- default { Write-Err "Unknown agent type '$Type'"; Write-Err 'Expected: claude|gemini|copilot|cursor|qwen|opencode|codex|windsurf'; return $false }
+ 'kilocode' { Update-AgentFile -TargetFile $KILOCODE_FILE -AgentName 'Kilo Code' }
+ default { Write-Err "Unknown agent type '$Type'"; Write-Err 'Expected: claude|gemini|copilot|cursor|qwen|opencode|codex|windsurf|kilocode'; return $false }
}
}
@@ -384,6 +386,7 @@ function Update-AllExistingAgents {
if (Test-Path $QWEN_FILE) { if (-not (Update-AgentFile -TargetFile $QWEN_FILE -AgentName 'Qwen Code')) { $ok = $false }; $found = $true }
if (Test-Path $AGENTS_FILE) { if (-not (Update-AgentFile -TargetFile $AGENTS_FILE -AgentName 'Codex/opencode')) { $ok = $false }; $found = $true }
if (Test-Path $WINDSURF_FILE) { if (-not (Update-AgentFile -TargetFile $WINDSURF_FILE -AgentName 'Windsurf')) { $ok = $false }; $found = $true }
+ if (Test-Path $KILOCODE_FILE) { if (-not (Update-AgentFile -TargetFile $KILOCODE_FILE -AgentName 'Kilo Code')) { $ok = $false }; $found = $true }
if (-not $found) {
Write-Info 'No existing agent files found, creating default Claude file...'
if (-not (Update-AgentFile -TargetFile $CLAUDE_FILE -AgentName 'Claude Code')) { $ok = $false }
@@ -398,7 +401,7 @@ function Print-Summary {
if ($NEW_FRAMEWORK) { Write-Host " - Added framework: $NEW_FRAMEWORK" }
if ($NEW_DB -and $NEW_DB -ne 'N/A') { Write-Host " - Added database: $NEW_DB" }
Write-Host ''
- Write-Info 'Usage: ./update-agent-context.ps1 [-AgentType claude|gemini|copilot|cursor|qwen|opencode|codex|windsurf]'
+ Write-Info 'Usage: ./update-agent-context.ps1 [-AgentType claude|gemini|copilot|cursor|qwen|opencode|codex|windsurf|kilocode]'
}
function Main {
diff --git a/src/specify_cli/__init__.py b/src/specify_cli/__init__.py
index 72f986e..cc6ca73 100644
--- a/src/specify_cli/__init__.py
+++ b/src/specify_cli/__init__.py
@@ -72,6 +72,7 @@ AI_CHOICES = {
"opencode": "opencode",
"codex": "Codex CLI",
"windsurf": "Windsurf",
+ "kilocode": "Kilo Code",
}
# Add script type choices
SCRIPT_TYPE_CHOICES = {"sh": "POSIX Shell (bash/zsh)", "ps": "PowerShell"}
@@ -747,7 +748,7 @@ def ensure_executable_scripts(project_path: Path, tracker: StepTracker | None =
@app.command()
def init(
project_name: str = typer.Argument(None, help="Name for your new project directory (optional if using --here)"),
- ai_assistant: str = typer.Option(None, "--ai", help="AI assistant to use: claude, gemini, copilot, cursor, qwen, opencode, codex, or windsurf"),
+ ai_assistant: str = typer.Option(None, "--ai", help="AI assistant to use: claude, gemini, copilot, cursor, qwen, opencode, codex, windsurf, or kilocode"),
script_type: str = typer.Option(None, "--script", help="Script type to use: sh or ps"),
ignore_agent_tools: bool = typer.Option(False, "--ignore-agent-tools", help="Skip checks for AI agent tools like Claude Code"),
no_git: bool = typer.Option(False, "--no-git", help="Skip git repository initialization"),
@@ -761,7 +762,7 @@ def init(
This command will:
1. Check that required tools are installed (git is optional)
- 2. Let you choose your AI assistant (Claude Code, Gemini CLI, GitHub Copilot, Cursor, Qwen Code, opencode, Codex CLI, or Windsurf)
+ 2. Let you choose your AI assistant (Claude Code, Gemini CLI, GitHub Copilot, Cursor, Qwen Code, opencode, Codex CLI, Windsurf, or Kilo Code)
3. Download the appropriate template from GitHub
4. Extract the template to a new project directory or current directory
5. Initialize a fresh git repository (if not --no-git and no existing repo)
@@ -1036,9 +1037,11 @@ def check():
tracker.add("claude", "Claude Code CLI")
tracker.add("gemini", "Gemini CLI")
tracker.add("qwen", "Qwen Code CLI")
- tracker.add("code", "VS Code (for GitHub Copilot)")
+ tracker.add("code", "Visual Studio Code")
+ tracker.add("code-insiders", "Visual Studio Code Insiders")
tracker.add("cursor-agent", "Cursor IDE agent (optional)")
tracker.add("windsurf", "Windsurf IDE (optional)")
+ tracker.add("kilocode", "Kilo Code IDE (optional)")
tracker.add("opencode", "opencode")
tracker.add("codex", "Codex CLI")
@@ -1047,10 +1050,10 @@ def check():
gemini_ok = check_tool_for_tracker("gemini", "https://github.com/google-gemini/gemini-cli", tracker)
qwen_ok = check_tool_for_tracker("qwen", "https://github.com/QwenLM/qwen-code", tracker)
code_ok = check_tool_for_tracker("code", "https://code.visualstudio.com/", tracker)
- if not code_ok:
- code_ok = check_tool_for_tracker("code-insiders", "https://code.visualstudio.com/insiders/", tracker)
+ code_insiders_ok = check_tool_for_tracker("code-insiders", "https://code.visualstudio.com/insiders/", tracker)
cursor_ok = check_tool_for_tracker("cursor-agent", "https://cursor.sh/", tracker)
windsurf_ok = check_tool_for_tracker("windsurf", "https://windsurf.com/", tracker)
+ kilocode_ok = check_tool_for_tracker("kilocode", "https://kilocode.com/", tracker)
opencode_ok = check_tool_for_tracker("opencode", "https://opencode.ai/", tracker)
codex_ok = check_tool_for_tracker("codex", "https://github.com/openai/codex", tracker)
@@ -1060,7 +1063,7 @@ def check():
if not git_ok:
console.print("[dim]Tip: Install git for repository management[/dim]")
- if not (claude_ok or gemini_ok or cursor_ok or qwen_ok or windsurf_ok or opencode_ok or codex_ok):
+ 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):
console.print("[dim]Tip: Install an AI assistant for the best experience[/dim]")
From 494cdede53270765f66a2895592077ecd5ea85f7 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Den=20Delimarsky=20=F0=9F=8C=BA?=
<53200638+localden@users.noreply.github.com>
Date: Sun, 21 Sep 2025 12:32:45 -0700
Subject: [PATCH 11/15] Update AGENTS.md
---
AGENTS.md | 11 ++++++++++-
1 file changed, 10 insertions(+), 1 deletion(-)
diff --git a/AGENTS.md b/AGENTS.md
index 971f436..fa0725f 100644
--- a/AGENTS.md
+++ b/AGENTS.md
@@ -67,7 +67,16 @@ Update all help text and examples to include the new agent:
- Function docstrings and examples
- Error messages with agent lists
-#### 3. Update Release Package Script
+#### 3. Update README Documentation
+
+Update the **Supported AI Agents** section in `README.md` to include the new agent:
+
+- Add the new agent to the table with appropriate support level (Full/Partial)
+- Include the agent's official website link
+- Add any relevant notes about the agent's implementation
+- Ensure the table formatting remains aligned and consistent
+
+#### 4. Update Release Package Script
Modify `.github/workflows/scripts/create-release-packages.sh`:
From ceba130e52e0bfb08952b18572dcdfcb9df8ad74 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Den=20Delimarsky=20=F0=9F=8C=BA?=
<53200638+localden@users.noreply.github.com>
Date: Sun, 21 Sep 2025 12:48:58 -0700
Subject: [PATCH 12/15] Add support for Auggie
---
.../scripts/create-github-release.sh | 2 +
.../scripts/create-release-packages.sh | 5 ++-
AGENTS.md | 17 ++++++++
CHANGELOG.md | 2 +
README.md | 3 +-
pyproject.toml | 2 +-
scripts/bash/update-agent-context.sh | 13 +++++-
scripts/powershell/update-agent-context.ps1 | 7 +++-
src/specify_cli/__init__.py | 42 +++++++++++++++++--
9 files changed, 82 insertions(+), 11 deletions(-)
diff --git a/.github/workflows/scripts/create-github-release.sh b/.github/workflows/scripts/create-github-release.sh
index 19ab47a..dc6c7d2 100644
--- a/.github/workflows/scripts/create-github-release.sh
+++ b/.github/workflows/scripts/create-github-release.sh
@@ -34,5 +34,7 @@ gh release create "$VERSION" \
.genreleases/spec-kit-template-codex-ps-"$VERSION".zip \
.genreleases/spec-kit-template-kilocode-sh-"$VERSION".zip \
.genreleases/spec-kit-template-kilocode-ps-"$VERSION".zip \
+ .genreleases/spec-kit-template-auggie-sh-"$VERSION".zip \
+ .genreleases/spec-kit-template-auggie-ps-"$VERSION".zip \
--title "Spec Kit Templates - $VERSION_NO_V" \
--notes-file release_notes.md
\ No newline at end of file
diff --git a/.github/workflows/scripts/create-release-packages.sh b/.github/workflows/scripts/create-release-packages.sh
index 591c791..425de86 100644
--- a/.github/workflows/scripts/create-release-packages.sh
+++ b/.github/workflows/scripts/create-release-packages.sh
@@ -166,13 +166,16 @@ build_variant() {
kilocode)
mkdir -p "$base_dir/.kilocode/workflows"
generate_commands kilocode md "\$ARGUMENTS" "$base_dir/.kilocode/workflows" "$script" ;;
+ auggie)
+ mkdir -p "$base_dir/.augment/commands"
+ generate_commands auggie md "\$ARGUMENTS" "$base_dir/.augment/commands" "$script" ;;
esac
( cd "$base_dir" && zip -r "../spec-kit-template-${agent}-${script}-${NEW_VERSION}.zip" . )
echo "Created $GENRELEASES_DIR/spec-kit-template-${agent}-${script}-${NEW_VERSION}.zip"
}
# Determine agent list
-ALL_AGENTS=(claude gemini copilot cursor qwen opencode windsurf codex kilocode)
+ALL_AGENTS=(claude gemini copilot cursor qwen opencode windsurf codex kilocode auggie)
ALL_SCRIPTS=(sh ps)
diff --git a/AGENTS.md b/AGENTS.md
index fa0725f..59b9956 100644
--- a/AGENTS.md
+++ b/AGENTS.md
@@ -59,6 +59,23 @@ AI_CHOICES = {
}
```
+Also update the `agent_folder_map` in the same file to include the new agent's folder for the security notice:
+
+```python
+agent_folder_map = {
+ "claude": ".claude/",
+ "gemini": ".gemini/",
+ "cursor": ".cursor/",
+ "qwen": ".qwen/",
+ "opencode": ".opencode/",
+ "codex": ".codex/",
+ "windsurf": ".windsurf/", # Add new agent folder here
+ "kilocode": ".kilocode/",
+ "auggie": ".auggie/",
+ "copilot": ".github/"
+}
+```
+
#### 2. Update CLI Help Text
Update all help text and examples to include the new agent:
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 7d85bf7..64a5f5a 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -10,6 +10,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Added
- Support for Kilo Code. Thank you [@shahrukhkhan489](https://github.com/shahrukhkhan489) with [#394](https://github.com/github/spec-kit/pull/394).
+- Support for Auggie CLI. Thank you [@hungthai1401](https://github.com/hungthai1401) with [#137](https://github.com/github/spec-kit/pull/137)
+- Agent folder security notice displayed after project provisioning completion, warning users that some agents may store credentials or auth tokens in their agent folders and recommending adding relevant folders to `.gitignore` to prevent accidental credential leakage.
### Changed
diff --git a/README.md b/README.md
index 90f46d9..d5b371b 100644
--- a/README.md
+++ b/README.md
@@ -105,6 +105,7 @@ Want to see Spec Kit in action? Watch our [video overview](https://www.youtube.c
| [opencode](https://opencode.ai/) | β
| |
| [Windsurf](https://windsurf.com/) | β
| |
| [Kilo Code](https://github.com/Kilo-Org/kilocode) | β
| |
+| [Auggie CLI](https://docs.augmentcode.com/cli/overview) | β
| |
| [Codex CLI](https://github.com/openai/codex) | β οΈ | Codex [does not support](https://github.com/openai/codex/issues/2890) custom arguments for slash commands. |
## π§ Specify CLI Reference
@@ -123,7 +124,7 @@ The `specify` command supports the following options:
| Argument/Option | Type | Description |
|------------------------|----------|------------------------------------------------------------------------------|
| `` | Argument | Name for your new project directory (optional if using `--here`) |
-| `--ai` | Option | AI assistant to use: `claude`, `gemini`, `copilot`, `cursor`, `qwen`, `opencode`, `codex`, or `windsurf` |
+| `--ai` | Option | AI assistant to use: `claude`, `gemini`, `copilot`, `cursor`, `qwen`, `opencode`, `codex`, `windsurf`, `kilocode`, or `auggie` |
| `--script` | Option | Script variant to use: `sh` (bash/zsh) or `ps` (PowerShell) |
| `--ignore-agent-tools` | Flag | Skip checks for AI agent tools like Claude Code |
| `--no-git` | Flag | Skip git repository initialization |
diff --git a/pyproject.toml b/pyproject.toml
index 4b5f73c..1754fe9 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -1,6 +1,6 @@
[project]
name = "specify-cli"
-version = "0.0.13"
+version = "0.0.14"
description = "Specify CLI, part of GitHub Spec Kit. A tool to bootstrap your projects for Spec-Driven Development (SDD)."
requires-python = ">=3.11"
dependencies = [
diff --git a/scripts/bash/update-agent-context.sh b/scripts/bash/update-agent-context.sh
index e35ae4b..7a3dea8 100644
--- a/scripts/bash/update-agent-context.sh
+++ b/scripts/bash/update-agent-context.sh
@@ -67,6 +67,7 @@ QWEN_FILE="$REPO_ROOT/QWEN.md"
AGENTS_FILE="$REPO_ROOT/AGENTS.md"
WINDSURF_FILE="$REPO_ROOT/.windsurf/rules/specify-rules.md"
KILOCODE_FILE="$REPO_ROOT/.kilocode/rules/specify-rules.md"
+AUGGIE_FILE="$REPO_ROOT/.augment/rules/specify-rules.md"
# Template file
TEMPLATE_FILE="$REPO_ROOT/.specify/templates/agent-file-template.md"
@@ -572,9 +573,12 @@ update_specific_agent() {
kilocode)
update_agent_file "$KILOCODE_FILE" "Kilo Code"
;;
+ auggie)
+ update_agent_file "$AUGGIE_FILE" "Auggie CLI"
+ ;;
*)
log_error "Unknown agent type '$agent_type'"
- log_error "Expected: claude|gemini|copilot|cursor|qwen|opencode|codex|windsurf|kilocode"
+ log_error "Expected: claude|gemini|copilot|cursor|qwen|opencode|codex|windsurf|kilocode|auggie"
exit 1
;;
esac
@@ -623,6 +627,11 @@ update_all_existing_agents() {
update_agent_file "$KILOCODE_FILE" "Kilo Code"
found_agent=true
fi
+
+ if [[ -f "$AUGGIE_FILE" ]]; then
+ update_agent_file "$AUGGIE_FILE" "Auggie CLI"
+ found_agent=true
+ fi
# If no agent files exist, create a default Claude file
if [[ "$found_agent" == false ]]; then
@@ -647,7 +656,7 @@ print_summary() {
fi
echo
- log_info "Usage: $0 [claude|gemini|copilot|cursor|qwen|opencode|codex|windsurf|kilocode]"
+ log_info "Usage: $0 [claude|gemini|copilot|cursor|qwen|opencode|codex|windsurf|kilocode|auggie]"
}
#==============================================================================
diff --git a/scripts/powershell/update-agent-context.ps1 b/scripts/powershell/update-agent-context.ps1
index 27a058d..0c90548 100644
--- a/scripts/powershell/update-agent-context.ps1
+++ b/scripts/powershell/update-agent-context.ps1
@@ -25,7 +25,7 @@ Relies on common helper functions in common.ps1
#>
param(
[Parameter(Position=0)]
- [ValidateSet('claude','gemini','copilot','cursor','qwen','opencode','codex','windsurf','kilocode')]
+ [ValidateSet('claude','gemini','copilot','cursor','qwen','opencode','codex','windsurf','kilocode','auggie')]
[string]$AgentType
)
@@ -52,6 +52,7 @@ $QWEN_FILE = Join-Path $REPO_ROOT 'QWEN.md'
$AGENTS_FILE = Join-Path $REPO_ROOT 'AGENTS.md'
$WINDSURF_FILE = Join-Path $REPO_ROOT '.windsurf/rules/specify-rules.md'
$KILOCODE_FILE = Join-Path $REPO_ROOT '.kilocode/rules/specify-rules.md'
+$AUGGIE_FILE = Join-Path $REPO_ROOT '.augment/rules/specify-rules.md'
$TEMPLATE_FILE = Join-Path $REPO_ROOT '.specify/templates/agent-file-template.md'
@@ -372,7 +373,8 @@ function Update-SpecificAgent {
'codex' { Update-AgentFile -TargetFile $AGENTS_FILE -AgentName 'Codex CLI' }
'windsurf' { Update-AgentFile -TargetFile $WINDSURF_FILE -AgentName 'Windsurf' }
'kilocode' { Update-AgentFile -TargetFile $KILOCODE_FILE -AgentName 'Kilo Code' }
- default { Write-Err "Unknown agent type '$Type'"; Write-Err 'Expected: claude|gemini|copilot|cursor|qwen|opencode|codex|windsurf|kilocode'; return $false }
+ 'auggie' { Update-AgentFile -TargetFile $AUGGIE_FILE -AgentName 'Auggie CLI' }
+ default { Write-Err "Unknown agent type '$Type'"; Write-Err 'Expected: claude|gemini|copilot|cursor|qwen|opencode|codex|windsurf|kilocode|auggie'; return $false }
}
}
@@ -387,6 +389,7 @@ function Update-AllExistingAgents {
if (Test-Path $AGENTS_FILE) { if (-not (Update-AgentFile -TargetFile $AGENTS_FILE -AgentName 'Codex/opencode')) { $ok = $false }; $found = $true }
if (Test-Path $WINDSURF_FILE) { if (-not (Update-AgentFile -TargetFile $WINDSURF_FILE -AgentName 'Windsurf')) { $ok = $false }; $found = $true }
if (Test-Path $KILOCODE_FILE) { if (-not (Update-AgentFile -TargetFile $KILOCODE_FILE -AgentName 'Kilo Code')) { $ok = $false }; $found = $true }
+ if (Test-Path $AUGGIE_FILE) { if (-not (Update-AgentFile -TargetFile $AUGGIE_FILE -AgentName 'Auggie CLI')) { $ok = $false }; $found = $true }
if (-not $found) {
Write-Info 'No existing agent files found, creating default Claude file...'
if (-not (Update-AgentFile -TargetFile $CLAUDE_FILE -AgentName 'Claude Code')) { $ok = $false }
diff --git a/src/specify_cli/__init__.py b/src/specify_cli/__init__.py
index cc6ca73..220697c 100644
--- a/src/specify_cli/__init__.py
+++ b/src/specify_cli/__init__.py
@@ -73,6 +73,7 @@ AI_CHOICES = {
"codex": "Codex CLI",
"windsurf": "Windsurf",
"kilocode": "Kilo Code",
+ "auggie": "Auggie CLI",
}
# Add script type choices
SCRIPT_TYPE_CHOICES = {"sh": "POSIX Shell (bash/zsh)", "ps": "PowerShell"}
@@ -748,7 +749,7 @@ def ensure_executable_scripts(project_path: Path, tracker: StepTracker | None =
@app.command()
def init(
project_name: str = typer.Argument(None, help="Name for your new project directory (optional if using --here)"),
- ai_assistant: str = typer.Option(None, "--ai", help="AI assistant to use: claude, gemini, copilot, cursor, qwen, opencode, codex, windsurf, or kilocode"),
+ ai_assistant: str = typer.Option(None, "--ai", help="AI assistant to use: claude, gemini, copilot, cursor, qwen, opencode, codex, windsurf, kilocode, or auggie"),
script_type: str = typer.Option(None, "--script", help="Script type to use: sh or ps"),
ignore_agent_tools: bool = typer.Option(False, "--ignore-agent-tools", help="Skip checks for AI agent tools like Claude Code"),
no_git: bool = typer.Option(False, "--no-git", help="Skip git repository initialization"),
@@ -762,7 +763,7 @@ def init(
This command will:
1. Check that required tools are installed (git is optional)
- 2. Let you choose your AI assistant (Claude Code, Gemini CLI, GitHub Copilot, Cursor, Qwen Code, opencode, Codex CLI, Windsurf, or Kilo Code)
+ 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)
3. Download the appropriate template from GitHub
4. Extract the template to a new project directory or current directory
5. Initialize a fresh git repository (if not --no-git and no existing repo)
@@ -778,6 +779,7 @@ def init(
specify init my-project --ai opencode
specify init my-project --ai codex
specify init my-project --ai windsurf
+ specify init my-project --ai auggie
specify init --ignore-agent-tools my-project
specify init --here --ai claude
specify init --here --ai codex
@@ -879,6 +881,10 @@ def init(
if not check_tool("codex", "Install from: https://github.com/openai/codex"):
console.print("[red]Error:[/red] Codex CLI is required for Codex projects")
agent_tool_missing = True
+ elif selected_ai == "auggie":
+ if not check_tool("auggie", "Install from: https://docs.augmentcode.com/cli/setup-auggie/install-auggie-cli"):
+ console.print("[red]Error:[/red] Auggie CLI is required for Auggie CLI projects")
+ agent_tool_missing = True
# GitHub Copilot and Cursor checks are not needed as they're typically available in supported IDEs
if agent_tool_missing:
@@ -982,6 +988,32 @@ def init(
console.print(tracker.render())
console.print("\n[bold green]Project ready.[/bold green]")
+ # Agent folder security notice
+ agent_folder_map = {
+ "claude": ".claude/",
+ "gemini": ".gemini/",
+ "cursor": ".cursor/",
+ "qwen": ".qwen/",
+ "opencode": ".opencode/",
+ "codex": ".codex/",
+ "windsurf": ".windsurf/",
+ "kilocode": ".kilocode/",
+ "auggie": ".auggie/",
+ "copilot": ".github/"
+ }
+
+ if selected_ai in agent_folder_map:
+ agent_folder = agent_folder_map[selected_ai]
+ security_notice = Panel(
+ f"Some agents may store credentials, auth tokens, or other identifying and private artifacts in the agent folder within your project.\n"
+ f"Consider adding [cyan]{agent_folder}[/cyan] (or parts of it) to [cyan].gitignore[/cyan] to prevent accidental credential leakage.",
+ title="[yellow]Agent Folder Security[/yellow]",
+ border_style="yellow",
+ padding=(1, 2)
+ )
+ console.print()
+ console.print(security_notice)
+
# Boxed "Next steps" section
steps_lines = []
if not here:
@@ -1010,7 +1042,7 @@ def init(
steps_lines.append(" 2.4 [cyan]/tasks[/] - Generate actionable tasks")
steps_lines.append(" 2.5 [cyan]/implement[/] - Execute implementation")
- steps_panel = Panel("\n".join(steps_lines), title="Next steps", border_style="cyan", padding=(1,2))
+ steps_panel = Panel("\n".join(steps_lines), title="Next Steps", border_style="cyan", padding=(1,2))
console.print()
console.print(steps_panel)
@@ -1044,6 +1076,7 @@ def check():
tracker.add("kilocode", "Kilo Code IDE (optional)")
tracker.add("opencode", "opencode")
tracker.add("codex", "Codex CLI")
+ tracker.add("auggie", "Auggie CLI (optional)")
git_ok = check_tool_for_tracker("git", "https://git-scm.com/downloads", tracker)
claude_ok = check_tool_for_tracker("claude", "https://docs.anthropic.com/en/docs/claude-code/setup", tracker)
@@ -1056,6 +1089,7 @@ def check():
kilocode_ok = check_tool_for_tracker("kilocode", "https://kilocode.com/", tracker)
opencode_ok = check_tool_for_tracker("opencode", "https://opencode.ai/", tracker)
codex_ok = check_tool_for_tracker("codex", "https://github.com/openai/codex", tracker)
+ auggie_ok = check_tool_for_tracker("auggie", "https://auggie.io/", tracker)
console.print(tracker.render())
@@ -1063,7 +1097,7 @@ def check():
if not git_ok:
console.print("[dim]Tip: Install git for repository management[/dim]")
- 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):
+ 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):
console.print("[dim]Tip: Install an AI assistant for the best experience[/dim]")
From ecf17576722da2f6220aba2398aca6877b4612a1 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Den=20Delimarsky=20=F0=9F=8C=BA?=
<53200638+localden@users.noreply.github.com>
Date: Sun, 21 Sep 2025 12:53:35 -0700
Subject: [PATCH 13/15] Cleanup the check command
---
CHANGELOG.md | 3 ++-
src/specify_cli/__init__.py | 36 ++++++++++++++++++------------------
2 files changed, 20 insertions(+), 19 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 64a5f5a..e469e53 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -10,12 +10,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Added
- Support for Kilo Code. Thank you [@shahrukhkhan489](https://github.com/shahrukhkhan489) with [#394](https://github.com/github/spec-kit/pull/394).
-- Support for Auggie CLI. Thank you [@hungthai1401](https://github.com/hungthai1401) with [#137](https://github.com/github/spec-kit/pull/137)
+- Support for Auggie CLI. Thank you [@hungthai1401](https://github.com/hungthai1401) with [#137](https://github.com/github/spec-kit/pull/137).
- Agent folder security notice displayed after project provisioning completion, warning users that some agents may store credentials or auth tokens in their agent folders and recommending adding relevant folders to `.gitignore` to prevent accidental credential leakage.
### Changed
- Warning displayed to ensure that folks are aware that they might need to add their agent folder to `.gitignore`.
+- Cleaned up the `check` command output.
## [0.0.12] - 2025-09-21
diff --git a/src/specify_cli/__init__.py b/src/specify_cli/__init__.py
index 220697c..cae96ac 100644
--- a/src/specify_cli/__init__.py
+++ b/src/specify_cli/__init__.py
@@ -357,13 +357,13 @@ def run_command(cmd: list[str], check_return: bool = True, capture: bool = False
return None
-def check_tool_for_tracker(tool: str, install_hint: str, tracker: StepTracker) -> bool:
+def check_tool_for_tracker(tool: str, tracker: StepTracker) -> bool:
"""Check if a tool is installed and update tracker."""
if shutil.which(tool):
tracker.complete(tool, "available")
return True
else:
- tracker.error(tool, f"not found - {install_hint}")
+ tracker.error(tool, "not found")
return False
@@ -1071,25 +1071,25 @@ def check():
tracker.add("qwen", "Qwen Code CLI")
tracker.add("code", "Visual Studio Code")
tracker.add("code-insiders", "Visual Studio Code Insiders")
- tracker.add("cursor-agent", "Cursor IDE agent (optional)")
- tracker.add("windsurf", "Windsurf IDE (optional)")
- tracker.add("kilocode", "Kilo Code IDE (optional)")
+ tracker.add("cursor-agent", "Cursor IDE agent")
+ tracker.add("windsurf", "Windsurf IDE")
+ tracker.add("kilocode", "Kilo Code IDE")
tracker.add("opencode", "opencode")
tracker.add("codex", "Codex CLI")
- tracker.add("auggie", "Auggie CLI (optional)")
+ tracker.add("auggie", "Auggie CLI")
- git_ok = check_tool_for_tracker("git", "https://git-scm.com/downloads", tracker)
- claude_ok = check_tool_for_tracker("claude", "https://docs.anthropic.com/en/docs/claude-code/setup", tracker)
- gemini_ok = check_tool_for_tracker("gemini", "https://github.com/google-gemini/gemini-cli", tracker)
- qwen_ok = check_tool_for_tracker("qwen", "https://github.com/QwenLM/qwen-code", tracker)
- code_ok = check_tool_for_tracker("code", "https://code.visualstudio.com/", tracker)
- code_insiders_ok = check_tool_for_tracker("code-insiders", "https://code.visualstudio.com/insiders/", tracker)
- cursor_ok = check_tool_for_tracker("cursor-agent", "https://cursor.sh/", tracker)
- windsurf_ok = check_tool_for_tracker("windsurf", "https://windsurf.com/", tracker)
- kilocode_ok = check_tool_for_tracker("kilocode", "https://kilocode.com/", tracker)
- opencode_ok = check_tool_for_tracker("opencode", "https://opencode.ai/", tracker)
- codex_ok = check_tool_for_tracker("codex", "https://github.com/openai/codex", tracker)
- auggie_ok = check_tool_for_tracker("auggie", "https://auggie.io/", tracker)
+ git_ok = check_tool_for_tracker("git", tracker)
+ claude_ok = check_tool_for_tracker("claude", tracker)
+ gemini_ok = check_tool_for_tracker("gemini", tracker)
+ qwen_ok = check_tool_for_tracker("qwen", tracker)
+ code_ok = check_tool_for_tracker("code", tracker)
+ code_insiders_ok = check_tool_for_tracker("code-insiders", tracker)
+ cursor_ok = check_tool_for_tracker("cursor-agent", tracker)
+ windsurf_ok = check_tool_for_tracker("windsurf", tracker)
+ kilocode_ok = check_tool_for_tracker("kilocode", tracker)
+ opencode_ok = check_tool_for_tracker("opencode", tracker)
+ codex_ok = check_tool_for_tracker("codex", tracker)
+ auggie_ok = check_tool_for_tracker("auggie", tracker)
console.print(tracker.render())
From e9aed2da4490d4be2ddea4edbd0be748de3e0a24 Mon Sep 17 00:00:00 2001
From: Den Delimarsky <53200638+localden@users.noreply.github.com>
Date: Sun, 21 Sep 2025 12:53:52 -0700
Subject: [PATCH 14/15] Update templates/commands/implement.md
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
---
templates/commands/implement.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/templates/commands/implement.md b/templates/commands/implement.md
index af7ec23..ff2f1b6 100644
--- a/templates/commands/implement.md
+++ b/templates/commands/implement.md
@@ -5,7 +5,7 @@ scripts:
ps: scripts/powershell/check-prerequisites.ps1 -Json -RequireTasks -IncludeTasks
---
-The user input can be provided directly by the agent or as a command argumentβyou **MUST** consider it before proceeding with the prompt (if not empty).
+The user input can be provided directly by the agent or as a command argument - you **MUST** consider it before proceeding with the prompt (if not empty).
User input:
From 974347c758724ee8dcd322d7e84623759e95c0b2 Mon Sep 17 00:00:00 2001
From: Den Delimarsky <53200638+localden@users.noreply.github.com>
Date: Sun, 21 Sep 2025 12:55:46 -0700
Subject: [PATCH 15/15] Update scripts/powershell/update-agent-context.ps1
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
---
scripts/powershell/update-agent-context.ps1 | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/scripts/powershell/update-agent-context.ps1 b/scripts/powershell/update-agent-context.ps1
index 0c90548..9941aa4 100644
--- a/scripts/powershell/update-agent-context.ps1
+++ b/scripts/powershell/update-agent-context.ps1
@@ -404,7 +404,7 @@ function Print-Summary {
if ($NEW_FRAMEWORK) { Write-Host " - Added framework: $NEW_FRAMEWORK" }
if ($NEW_DB -and $NEW_DB -ne 'N/A') { Write-Host " - Added database: $NEW_DB" }
Write-Host ''
- Write-Info 'Usage: ./update-agent-context.ps1 [-AgentType claude|gemini|copilot|cursor|qwen|opencode|codex|windsurf|kilocode]'
+ Write-Info 'Usage: ./update-agent-context.ps1 [-AgentType claude|gemini|copilot|cursor|qwen|opencode|codex|windsurf|kilocode|auggie]'
}
function Main {