Skip to main content

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.

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 global install:

pipx install 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:

  1. Base prompts - Generic, language-agnostic prompts built into the package
  2. 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 CLI (claude command available)
  • Git

License

MIT License - see LICENSE file.

Project details


Release history Release notifications | RSS feed

This version

0.2.9

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

galangal_orchestrate-0.2.9.tar.gz (64.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

galangal_orchestrate-0.2.9-py3-none-any.whl (78.3 kB view details)

Uploaded Python 3

File details

Details for the file galangal_orchestrate-0.2.9.tar.gz.

File metadata

  • Download URL: galangal_orchestrate-0.2.9.tar.gz
  • Upload date:
  • Size: 64.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for galangal_orchestrate-0.2.9.tar.gz
Algorithm Hash digest
SHA256 ec0b2e82759fee9ee8da176d3f891b77979ae0669730df0d14510611f29e70a3
MD5 64e261b7f1ec77236e37964541a98e42
BLAKE2b-256 2a735ff188b3bfb9cf1e42d67da176b213b9472f94a72c088ee577a0c7047ca8

See more details on using hashes here.

File details

Details for the file galangal_orchestrate-0.2.9-py3-none-any.whl.

File metadata

File hashes

Hashes for galangal_orchestrate-0.2.9-py3-none-any.whl
Algorithm Hash digest
SHA256 11460d61541815ff36e526e15c58dd4d471b082adce2df979692036762321154
MD5 0bb85b39c628e15b3247d0cba2b0f13d
BLAKE2b-256 ebed3d468a4de7c1a3e514c4bffc879bc88612f44087be7c8e789c10e19e38c8

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page