diff --git a/.github/workflows/scripts/create-release-packages.sh b/.github/workflows/scripts/create-release-packages.sh index 988b7f0..baa1fd8 100644 --- a/.github/workflows/scripts/create-release-packages.sh +++ b/.github/workflows/scripts/create-release-packages.sh @@ -117,13 +117,16 @@ build_variant() { copilot) mkdir -p "$base_dir/.github/prompts" generate_commands copilot prompt.md "\$ARGUMENTS" "$base_dir/.github/prompts" "$script" ;; + cursor) + mkdir -p "$base_dir/.cursor/commands" + generate_commands cursor md "\$ARGUMENTS" "$base_dir/.cursor/commands" "$script" ;; esac ( cd "$base_dir" && zip -r "../spec-kit-template-${agent}-${script}-${NEW_VERSION}.zip" . ) echo "Created spec-kit-template-${agent}-${script}-${NEW_VERSION}.zip" } # Determine agent list -ALL_AGENTS=(claude gemini copilot) +ALL_AGENTS=(claude gemini copilot cursor) ALL_SCRIPTS=(sh ps) norm_list() { diff --git a/README.md b/README.md index a456a16..6b53eb4 100644 --- a/README.md +++ b/README.md @@ -45,7 +45,7 @@ uvx --from git+https://github.com/github/spec-kit.git specify init ` | Argument | Name for your new project directory (optional if using `--here`) | -| `--ai` | Option | AI assistant to use: `claude`, `gemini`, or `copilot` | +| `--ai` | Option | AI assistant to use: `claude`, `gemini`, `copilot`, or `cursor` | +| `--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 | | `--here` | Flag | Initialize project in the current directory instead of creating a new one | | `--skip-tls` | Flag | Skip SSL/TLS verification (not recommended) | +| `--debug` | Flag | Enable detailed debug output for troubleshooting | ### Examples @@ -96,12 +98,21 @@ specify init my-project # Initialize with specific AI assistant specify init my-project --ai claude +# Initialize with Cursor IDE support +specify init my-project --ai cursor + +# Initialize with PowerShell scripts (Windows/cross-platform) +specify init my-project --ai copilot --script ps + # Initialize in current directory specify init --here --ai copilot # Skip git initialization specify init my-project --ai gemini --no-git +# Enable debug output for troubleshooting +specify init my-project --ai claude --debug + # Check system requirements specify check ``` @@ -152,7 +163,7 @@ Our research and experimentation focus on: ## 🔧 Prerequisites - **Linux/macOS** (or WSL2 on Windows) -- AI coding agent: [Claude Code](https://www.anthropic.com/claude-code), [GitHub Copilot](https://code.visualstudio.com/), or [Gemini CLI](https://github.com/google-gemini/gemini-cli) +- 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), or [Cursor IDE](https://cursor.sh/) - [uv](https://docs.astral.sh/uv/) for package management - [Python 3.11+](https://www.python.org/downloads/) - [Git](https://git-scm.com/downloads) diff --git a/src/specify_cli/__init__.py b/src/specify_cli/__init__.py index 56d3328..436d1b2 100644 --- a/src/specify_cli/__init__.py +++ b/src/specify_cli/__init__.py @@ -56,7 +56,8 @@ client = httpx.Client(verify=ssl_context) AI_CHOICES = { "copilot": "GitHub Copilot", "claude": "Claude Code", - "gemini": "Gemini CLI" + "gemini": "Gemini CLI", + "cursor": "Cursor" } # Add script type choices SCRIPT_TYPE_CHOICES = {"sh": "POSIX Shell (bash/zsh)", "ps": "PowerShell"} @@ -721,7 +722,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, or copilot"), + ai_assistant: str = typer.Option(None, "--ai", help="AI assistant to use: claude, gemini, copilot, or cursor"), 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"), @@ -734,7 +735,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, or GitHub Copilot) + 2. Let you choose your AI assistant (Claude Code, Gemini CLI, GitHub Copilot, or Cursor) 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) @@ -745,6 +746,7 @@ def init( specify init my-project --ai claude specify init my-project --ai gemini specify init my-project --ai copilot --no-git + specify init my-project --ai cursor specify init --ignore-agent-tools my-project specify init --here --ai claude specify init --here