-
Notifications
You must be signed in to change notification settings - Fork 5.5k
Ralph Loop support in Specify CLI #1489
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull request overview
This pull request adds autonomous implementation support to the Specify CLI through a new "Ralph Loop" command. The feature enables controlled iteration through task execution using GitHub Copilot CLI with fresh agent contexts per iteration.
Changes:
- Adds new
specify ralphCLI command with configurable iteration limits and AI model selection - Implements cross-platform loop orchestrators (PowerShell and Bash scripts)
- Creates progress tracking with iteration history and codebase pattern discovery
- Adds comprehensive documentation including spec, plan, research, and task breakdowns
Reviewed changes
Copilot reviewed 48 out of 49 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| src/specify_cli/init.py | Adds ralph command with prerequisite validation, script detection, and invocation |
| scripts/powershell/ralph-loop.ps1 | PowerShell orchestrator for Windows with iteration management and Copilot CLI integration |
| scripts/bash/ralph-loop.sh | Bash orchestrator for Unix/Linux with parallel functionality to PowerShell version |
| specs/001-ralph-loop-implement/*.md | Complete specification documents (spec, plan, tasks, research, contracts, checklists) |
| .github/agents/speckit.ralph.agent.md | Agent profile defining work unit scope and execution constraints |
| templates and other support files | Templates, configuration updates, and agent context files |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| if models_list: | ||
| console.print("[green]Available models:[/green]") | ||
| for m in models_list: | ||
| default_marker = " [yellow](default)[/yellow]" if m == "claude-sonnet-4.5" else "" |
Copilot
AI
Jan 20, 2026
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The default model name "claude-sonnet-4.5" appears to be hardcoded, but this model version may not exist. Based on typical Claude versioning, this should likely be "claude-sonnet-3.5" or verify that version 4.5 actually exists in the Copilot CLI.
| Write-Host "--- Copilot Agent Output ---" -ForegroundColor DarkCyan | ||
| $outputLines = @() | ||
| # Use speckit.ralph agent - it already knows to complete one work unit | ||
| & copilot --agent speckit.ralph -p $prompt --model $Model --allow-all-tools -s 2>&1 | ForEach-Object { |
Copilot
AI
Jan 20, 2026
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The scripts reference agent "speckit.ralph" but the specification documents repeatedly reference "speckit.implement" as the agent profile to use. This inconsistency needs to be resolved - either both scripts and documentation should use "speckit.ralph" or both should use "speckit.implement".
| while IFS= read -r line; do | ||
| echo "$line" | ||
| output_lines+=("$line") | ||
| done < <(copilot --agent speckit.ralph -p "$prompt" --model "$model" --allow-all-tools -s 2>&1) || exit_code=$? |
Copilot
AI
Jan 20, 2026
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The scripts reference agent "speckit.ralph" but the specification documents repeatedly reference "speckit.implement" as the agent profile to use. This inconsistency needs to be resolved - either both scripts and documentation should use "speckit.ralph" or both should use "speckit.implement".
No description provided.