Compare commits

...

3 Commits

Author SHA1 Message Date
Den Delimarsky 🌺
ad746ce35d Update generate-release-notes.sh 2025-09-21 13:16:15 -07:00
Den Delimarsky 🌺
14ac43ba41 Update error messages 2025-09-21 13:12:49 -07:00
Den Delimarsky 🌺
0857f83de8 Auggie folder fix 2025-09-21 13:01:04 -07:00
3 changed files with 41 additions and 40 deletions

View File

@@ -28,29 +28,8 @@ fi
# Create release notes # Create release notes
cat > release_notes.md << EOF cat > release_notes.md << EOF
Template release $NEW_VERSION This is the latest set of releases that you can use with your agent of choice. We recommend using the Specify CLI to scaffold your projects, however you can download these independently and manage them yourself.
Updated specification-driven development templates for GitHub Copilot, Claude Code, Gemini CLI, Cursor, Qwen, opencode, Windsurf, and Codex.
Now includes per-script variants for POSIX shell (sh) and PowerShell (ps).
Download the template for your preferred AI assistant + script type:
- spec-kit-template-copilot-sh-$NEW_VERSION.zip
- spec-kit-template-copilot-ps-$NEW_VERSION.zip
- spec-kit-template-claude-sh-$NEW_VERSION.zip
- spec-kit-template-claude-ps-$NEW_VERSION.zip
- spec-kit-template-gemini-sh-$NEW_VERSION.zip
- spec-kit-template-gemini-ps-$NEW_VERSION.zip
- spec-kit-template-cursor-sh-$NEW_VERSION.zip
- spec-kit-template-cursor-ps-$NEW_VERSION.zip
- spec-kit-template-opencode-sh-$NEW_VERSION.zip
- spec-kit-template-opencode-ps-$NEW_VERSION.zip
- spec-kit-template-qwen-sh-$NEW_VERSION.zip
- spec-kit-template-qwen-ps-$NEW_VERSION.zip
- spec-kit-template-windsurf-sh-$NEW_VERSION.zip
- spec-kit-template-windsurf-ps-$NEW_VERSION.zip
- spec-kit-template-codex-sh-$NEW_VERSION.zip
- spec-kit-template-codex-ps-$NEW_VERSION.zip
EOF EOF
echo "Generated release notes:" echo "Generated release notes:"

View File

@@ -5,6 +5,12 @@ 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/), 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). and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [0.0.14] - 2025-09-21
### Changed
- Error messages are now shown consistently.
## [0.0.13] - 2025-09-21 ## [0.0.13] - 2025-09-21
### Added ### Added

View File

@@ -382,8 +382,6 @@ def check_tool(tool: str, install_hint: str) -> bool:
if shutil.which(tool): if shutil.which(tool):
return True return True
else: else:
console.print(f"[yellow]⚠️ {tool} not found[/yellow]")
console.print(f" Install with: [cyan]{install_hint}[/cyan]")
return False return False
@@ -817,7 +815,15 @@ def init(
project_path = Path(project_name).resolve() project_path = Path(project_name).resolve()
# Check if project directory already exists # Check if project directory already exists
if project_path.exists(): if project_path.exists():
console.print(f"[red]Error:[/red] Directory '{project_name}' already exists") error_panel = Panel(
f"Directory '[cyan]{project_name}[/cyan]' already exists\n"
"Please choose a different project name or remove the existing directory.",
title="[red]Directory Conflict[/red]",
border_style="red",
padding=(1, 2)
)
console.print()
console.print(error_panel)
raise typer.Exit(1) raise typer.Exit(1)
# Create formatted setup info with column alignment # Create formatted setup info with column alignment
@@ -861,35 +867,45 @@ def init(
# Check agent tools unless ignored # Check agent tools unless ignored
if not ignore_agent_tools: if not ignore_agent_tools:
agent_tool_missing = False agent_tool_missing = False
install_url = ""
if selected_ai == "claude": if selected_ai == "claude":
if not check_tool("claude", "Install from: https://docs.anthropic.com/en/docs/claude-code/setup"): if not check_tool("claude", "https://docs.anthropic.com/en/docs/claude-code/setup"):
console.print("[red]Error:[/red] Claude CLI is required for Claude Code projects") install_url = "https://docs.anthropic.com/en/docs/claude-code/setup"
agent_tool_missing = True agent_tool_missing = True
elif selected_ai == "gemini": elif selected_ai == "gemini":
if not check_tool("gemini", "Install from: https://github.com/google-gemini/gemini-cli"): if not check_tool("gemini", "https://github.com/google-gemini/gemini-cli"):
console.print("[red]Error:[/red] Gemini CLI is required for Gemini projects") install_url = "https://github.com/google-gemini/gemini-cli"
agent_tool_missing = True agent_tool_missing = True
elif selected_ai == "qwen": elif selected_ai == "qwen":
if not check_tool("qwen", "Install from: https://github.com/QwenLM/qwen-code"): if not check_tool("qwen", "https://github.com/QwenLM/qwen-code"):
console.print("[red]Error:[/red] Qwen CLI is required for Qwen Code projects") install_url = "https://github.com/QwenLM/qwen-code"
agent_tool_missing = True agent_tool_missing = True
elif selected_ai == "opencode": elif selected_ai == "opencode":
if not check_tool("opencode", "Install from: https://opencode.ai"): if not check_tool("opencode", "https://opencode.ai"):
console.print("[red]Error:[/red] opencode CLI is required for opencode projects") install_url = "https://opencode.ai"
agent_tool_missing = True agent_tool_missing = True
elif selected_ai == "codex": elif selected_ai == "codex":
if not check_tool("codex", "Install from: https://github.com/openai/codex"): if not check_tool("codex", "https://github.com/openai/codex"):
console.print("[red]Error:[/red] Codex CLI is required for Codex projects") install_url = "https://github.com/openai/codex"
agent_tool_missing = True agent_tool_missing = True
elif selected_ai == "auggie": elif selected_ai == "auggie":
if not check_tool("auggie", "Install from: https://docs.augmentcode.com/cli/setup-auggie/install-auggie-cli"): if not check_tool("auggie", "https://docs.augmentcode.com/cli/setup-auggie/install-auggie-cli"):
console.print("[red]Error:[/red] Auggie CLI is required for Auggie CLI projects") install_url = "https://docs.augmentcode.com/cli/setup-auggie/install-auggie-cli"
agent_tool_missing = True agent_tool_missing = True
# GitHub Copilot and Cursor checks are not needed as they're typically available in supported IDEs # GitHub Copilot and Cursor checks are not needed as they're typically available in supported IDEs
if agent_tool_missing: if agent_tool_missing:
console.print("\n[red]Required AI tool is missing![/red]") error_panel = Panel(
console.print("[yellow]Tip:[/yellow] Use --ignore-agent-tools to skip this check") f"[cyan]{selected_ai}[/cyan] not found\n"
f"Install with: [cyan]{install_url}[/cyan]\n"
f"{AI_CHOICES[selected_ai]} is required to continue with this project type.\n\n"
"Tip: Use [cyan]--ignore-agent-tools[/cyan] to skip this check",
title="[red]Agent Detection Error[/red]",
border_style="red",
padding=(1, 2)
)
console.print()
console.print(error_panel)
raise typer.Exit(1) raise typer.Exit(1)
# Determine script type (explicit, interactive, or OS default) # Determine script type (explicit, interactive, or OS default)
@@ -998,7 +1014,7 @@ def init(
"codex": ".codex/", "codex": ".codex/",
"windsurf": ".windsurf/", "windsurf": ".windsurf/",
"kilocode": ".kilocode/", "kilocode": ".kilocode/",
"auggie": ".auggie/", "auggie": ".augment/",
"copilot": ".github/" "copilot": ".github/"
} }