AI-driven development workflow orchestrator
Project description
Galangal Orchestrate
AI-driven development workflow orchestrator. A deterministic workflow system that guides AI assistants through structured development stages.
Note: Currently designed for Claude Code with a Claude Pro or Max subscription. Support for other AI backends (Gemini, etc.) is planned for future releases.
Features
- Structured Workflow: PM → DESIGN → DEV → TEST → QA → SECURITY → REVIEW → DOCS
- Multi-Framework Support: Python, TypeScript, PHP, Go, Rust - configure multiple stacks per project
- Config-Driven: All validation, prompts, and behavior customizable via YAML
- AI Backend Abstraction: Built for Claude CLI, ready for Gemini and others
- Approval Gates: Human-in-the-loop for plans and designs
- Automatic Rollback: Failed stages roll back to appropriate fix points
- TUI Progress Display: Real-time progress visualization
Installation
pip install galangal-orchestrate
Or with pipx for isolated global install (recommended):
pipx install galangal-orchestrate
Updating
# If installed with pip
pip install --upgrade galangal-orchestrate
# If installed with pipx
pipx upgrade galangal-orchestrate
Quick Start
# Initialize in your project
cd your-project
galangal init
# Start a new task
galangal start "Add user authentication feature"
# Resume after a break
galangal resume
# Check status
galangal status
Workflow Stages
| Stage | Purpose | Artifacts |
|---|---|---|
| PM | Requirements & planning | SPEC.md, PLAN.md |
| DESIGN | Architecture design | DESIGN.md |
| PREFLIGHT | Environment checks | PREFLIGHT_REPORT.md |
| DEV | Implementation | (code changes) |
| MIGRATION* | DB migration validation | MIGRATION_REPORT.md |
| TEST | Test implementation | TEST_PLAN.md |
| CONTRACT* | API contract validation | CONTRACT_REPORT.md |
| QA | Quality assurance | QA_REPORT.md |
| BENCHMARK* | Performance validation | BENCHMARK_REPORT.md |
| SECURITY | Security review | SECURITY_CHECKLIST.md |
| REVIEW | Code review | REVIEW_NOTES.md |
| DOCS | Documentation updates | DOCS_REPORT.md |
*Conditional stages - auto-skipped if conditions not met
Task Types
Different task types skip certain stages:
| Type | Skips |
|---|---|
| Feature | (full workflow) |
| Bug Fix | DESIGN, BENCHMARK |
| Refactor | DESIGN, MIGRATION, CONTRACT, BENCHMARK, SECURITY |
| Chore | DESIGN, MIGRATION, CONTRACT, BENCHMARK |
| Docs | Most stages |
| Hotfix | DESIGN, BENCHMARK |
Configuration
After galangal init, customize .galangal/config.yaml:
project:
name: "My Project"
stacks:
- language: python
framework: fastapi
root: backend/
- language: typescript
framework: vite
root: frontend/
stages:
skip:
- BENCHMARK
timeout: 14400
max_retries: 5
validation:
qa:
timeout: 3600
commands:
- name: "Lint"
command: "./scripts/lint.sh"
timeout: 600
- name: "Tests"
command: "pytest"
pr:
codex_review: true
base_branch: main
prompt_context: |
## Project Patterns
- Use repository pattern for data access
- API responses use api_success() / api_error()
Customizing Prompts
Galangal uses a layered prompt system:
- Base prompts - Generic, language-agnostic prompts built into the package
- Project prompts - Your customizations in
.galangal/prompts/
Prompt Modes
Project prompts support two modes:
Supplement Mode (Recommended)
Add project-specific content that gets prepended to the base prompt. Include the # BASE marker where you want the base prompt inserted:
<!-- .galangal/prompts/dev.md -->
## My Project CLI Scripts
Use these commands for testing:
- `./scripts/test.sh` - Run tests
- `./scripts/lint.sh` - Run linter
## My Project Patterns
- Always use `api_success()` for responses
- Never use raw SQL queries
# BASE
The # BASE marker tells galangal to insert the generic base prompt at that location. Your project-specific content appears first, followed by the standard instructions.
Override Mode
To completely replace a base prompt, simply omit the # BASE marker:
<!-- .galangal/prompts/preflight.md -->
# Custom Preflight
This completely replaces the default preflight prompt.
[Your custom instructions here...]
Available Prompts
Create any of these files in .galangal/prompts/ to customize:
| File | Stage |
|---|---|
pm.md |
Requirements & planning |
design.md |
Architecture design |
preflight.md |
Environment checks |
dev.md |
Implementation |
test.md |
Test writing |
qa.md |
Quality assurance |
security.md |
Security review |
review.md |
Code review |
docs.md |
Documentation |
Config-Based Context
You can also inject context via config.yaml without creating prompt files:
# .galangal/config.yaml
# Injected into ALL stage prompts
prompt_context: |
## Project Rules
- Use TypeScript strict mode
- All APIs must be documented
# Injected into specific stages only
stage_context:
dev: |
## Dev Environment
- Run `npm run dev` for hot reload
test: |
## Test Setup
- Use vitest for unit tests
Commands
| Command | Description |
|---|---|
galangal init |
Initialize in current project |
galangal start "desc" |
Start new task |
galangal list |
List all tasks |
galangal switch <name> |
Switch active task |
galangal status |
Show task status |
galangal resume |
Continue active task |
galangal pause |
Pause for break |
galangal approve |
Approve plan |
galangal approve-design |
Approve design |
galangal skip-design |
Skip design stage |
galangal skip-to <stage> |
Jump to stage |
galangal complete |
Finalize & create PR |
galangal reset |
Delete active task |
Requirements
- Python 3.10+
- Claude Code CLI installed (
claudecommand available) - Claude Pro or Max subscription
- Git
License
MIT License - see LICENSE file.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file galangal_orchestrate-0.2.21.tar.gz.
File metadata
- Download URL: galangal_orchestrate-0.2.21.tar.gz
- Upload date:
- Size: 73.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c96190e5980acb625e2953f75f4ff2cd8b3c591e44aefc216ebae2c46ae2a03c
|
|
| MD5 |
f37053f8db0b2fd0df24d7d1b99bcbbd
|
|
| BLAKE2b-256 |
f17b3101f1856b89acbd91244f418f2747b548a3316743300a1f2e09e36de0dc
|
Provenance
The following attestation bundles were made for galangal_orchestrate-0.2.21.tar.gz:
Publisher:
publish.yml on Galangal-Media/galangal-orchestrate
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
galangal_orchestrate-0.2.21.tar.gz -
Subject digest:
c96190e5980acb625e2953f75f4ff2cd8b3c591e44aefc216ebae2c46ae2a03c - Sigstore transparency entry: 801016589
- Sigstore integration time:
-
Permalink:
Galangal-Media/galangal-orchestrate@64788cf4b8ecfd82e5ed0c8bc283a8a6fe0377d7 -
Branch / Tag:
refs/tags/v0.2.21 - Owner: https://github.com/Galangal-Media
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@64788cf4b8ecfd82e5ed0c8bc283a8a6fe0377d7 -
Trigger Event:
release
-
Statement type:
File details
Details for the file galangal_orchestrate-0.2.21-py3-none-any.whl.
File metadata
- Download URL: galangal_orchestrate-0.2.21-py3-none-any.whl
- Upload date:
- Size: 89.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bc26c17eb42f543ba0e4b1d74ffaef27eafafed6489b8ed9c2f7d8db7fa09d2f
|
|
| MD5 |
116bfaa0899ee3b73dc0ac5fcf2303fc
|
|
| BLAKE2b-256 |
af07e8c892ad1b87e7c57753f65b78bb62411cfced89ad4be3b4c1e89c604524
|
Provenance
The following attestation bundles were made for galangal_orchestrate-0.2.21-py3-none-any.whl:
Publisher:
publish.yml on Galangal-Media/galangal-orchestrate
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
galangal_orchestrate-0.2.21-py3-none-any.whl -
Subject digest:
bc26c17eb42f543ba0e4b1d74ffaef27eafafed6489b8ed9c2f7d8db7fa09d2f - Sigstore transparency entry: 801016649
- Sigstore integration time:
-
Permalink:
Galangal-Media/galangal-orchestrate@64788cf4b8ecfd82e5ed0c8bc283a8a6fe0377d7 -
Branch / Tag:
refs/tags/v0.2.21 - Owner: https://github.com/Galangal-Media
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@64788cf4b8ecfd82e5ed0c8bc283a8a6fe0377d7 -
Trigger Event:
release
-
Statement type: