Observed since 20 Oct, 21:48 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
agent-devflow
AI Agent Development Workflow CLI - Universal version
Universal AI Agent Development Workflow CLI with TOML-based progressive disclosure.
DevFlow v2.0 is a development workflow tool designed for AI-assisted software development. It uses TOML configuration to define workflows with progressive disclosure - AI agents see one step at a time, advancing only when gates are satisfied.
.devflow/workflows/*.toml{test_command}, {lint_command} etc. from configdevflow run drives the workflow automaticallypip install agent-devflow
Or from source:
git clone https://github.com/Dqz00116/devflow
cd devflow
pip install -e .
If
.devflow/already exists in the project, skipinitand use it directly.
devflow initcopies workflows and prompts from the DevFlow repository's own.devflow/as the template.
# Only run init if .devflow/ does NOT already exist
devflow init --language python --name "My Project"
# List available workflows
devflow list-workflows
# Select a workflow (e.g., MODE-A for feature development)
devflow select-workflow MODE-A
# Follow the displayed instruction
devflow current
# When done, mark step complete and advance
devflow done
# Repeat until workflow complete
devflow list-workflows # List all available workflows
devflow select-workflow MODE-A # Select and start a workflow
devflow current # Show current step instruction
devflow done # Check gates and advance (or route on failure)
devflow back # Go back to previous step
devflow workflow-status # Show workflow status
devflow approve ITEM # Mark item as user-approved
devflow set KEY VALUE # Set a state variable
# Ralph Loop — Autonomous Execution
devflow run [--tool local] [--max-iterations 10] # Start autonomous loop
devflow loop-status # Show loop status and remaining tasks
devflow sync-backlog # Generate backlog from current workflow
devflow loop-reset # Reset loop progress (preserves history)
Workflows are defined in TOML format:
# .devflow/workflows/my-workflow.toml
[workflow]
id = "MY-WORKFLOW"
name = "Feature Development"
extends = [] # Inheritance support
[[steps]]
id = "req-create"
name = "Create Requirement"
prompt = """
Your instruction here...
"""
gates = ["file_exists:docs/requirements/REQ-{workflow_run_id}.md"]
next = "next-step"
[[steps]]
id = "complex-step"
name = "Complex Step"
prompt_file = "prompts/complex.md" # File reference
gates = ["command_success:{test_command}"]
next = ""
[[steps.fail_route]]
min_fails = 1
max_fails = 2
target = "fallback-step" # Fails 1-2 times → go to fallback
[[steps.fail_route]]
min_fails = 3
target = "OTHER-WORKFLOW:escalation" # Fails 3+ times → cross-workflow
Reference project commands from .devflow/config.toml in gates and prompts:
{test_command} - Test command (e.g., pytest, go test ./...){test_unit_command} - Unit test command{test_integration_command} - Integration test command{lint_command} - Lint command{build_command} - Build command{workflow_run_id} - Current workflow run ID (auto-generated)Gates verify step completion before advancing:
file_exists:path/to/file - File must existfile_exists_pattern:docs/REQ-*.md - Any file matching globfile_contains:path/file.md:content - File must contain textfile_contains_pattern:docs/REQ-*.md:content - Any matching file contains textuser_approved:ITEM-001 - User approval required (via devflow approve)command_success:pytest - Command must exit 0state_set:var_name - State variable must be setWhen gates fail, steps can define automatic routing based on failure count. This implements branching without requiring agent decisions.
[[steps]]
id = "debug-fix"
gates = ["command_success:{test_command}"]
next = "debug-verify"
[[steps.fail_route]]
min_fails = 1
max_fails = 2
target = "debug-root-cause" # Fails 1-2 times → re-investigate
[[steps.fail_route]]
min_fails = 3
target = "debug-question" # Fails 3+ times → escalate to human
Behavior:
min_fails: Required, integer >= 1max_fails: Optional, defaults to infinitytarget: Step ID or cross-workflow reference (WORKFLOW-ID:STEP-ID)Steps can reference steps in other workflows:
[[steps]]
id = "debug-finish"
next = "MODE-A:write-plan" # After debug, enter MODE-A at write-plan
On transition:
current_workflow switches to the targetworkflow_run_id is preserved for file naming continuityuser_approved)user_approved, then → root-cause)Fail route escalation:
debug-fix fails 1-2 times → debug-root-cause (re-investigate)
debug-fix fails 3+ times → debug-question (escalate to human)
debug-question approved → debug-root-cause (try again with guidance)
debug-finish complete → MODE-A:write-plan (full review cycle)
.devflow/
├── workflows/
│ ├── MODE-A.toml # Feature development
│ └── MODE-B.toml # Debug workflow
├── prompts/
│ ├── brainstorm.md # Reusable prompts
│ ├── implement-sdd.md
│ └── ...
├── config.toml # Project config
└── state.toml # Current workflow & step (gitignored)
docs/
├── requirements/ # REQ files
├── features/ # FEAT files (technical implementation docs)
├── superpowers/specs/ # Design docs
├── superpowers/plans/ # Implementation plans
├── evidence/ # Verification evidence
├── debug/ # Debug analysis
└── completion/ # Workflow completion summaries
Project configuration in .devflow/config.toml:
[project]
name = "my-project"
language = "python"
stack = "Python 3.11 + FastAPI"
[commands]
test = "pytest"
test_unit = "pytest tests/unit -v"
test_integration = "pytest tests/integration -v"
lint = "ruff check ."
build = "python -m build"
[paths]
src = "src"
tests = "tests"
docs = "docs"
DevFlow includes legacy commands for direct requirement/task management. These bypass the workflow engine; prefer workflow commands (current/done) for AI agents.
devflow init --language python --name "My Project"
devflow req new REQ-001 --title "Feature"
devflow feat new FEAT-001 -r REQ-001 -t "Implementation"
devflow task new -r REQ-001 -t "Task"
devflow status
MIT License
Download counts and popularity will appear here as the collector receives them.
| Package / target | Requirement | Relationship |
|---|---|---|
clickEnvironment{
"extras": "",
"marker": null,
"requires_python": ">=3.9",
"evaluation": "NOT_EVALUATED"
} | click>=8.0.0 | runtime |
jinja2Environment{
"extras": "",
"marker": null,
"requires_python": ">=3.9",
"evaluation": "NOT_EVALUATED"
} | jinja2>=3.0.0 | runtime |
richEnvironment{
"extras": "",
"marker": null,
"requires_python": ">=3.9",
"evaluation": "NOT_EVALUATED"
} | rich>=13.0.0 | runtime |
tomlEnvironment{
"extras": "",
"marker": null,
"requires_python": ">=3.9",
"evaluation": "NOT_EVALUATED"
} | toml>=0.10.2 | runtime |
blackEnvironment{
"extras": "",
"marker": "extra == \"dev\"",
"requires_python": ">=3.9",
"evaluation": "NOT_EVALUATED"
} | black>=23.0.0; extra == "dev" | runtime |
mypyEnvironment{
"extras": "",
"marker": "extra == \"dev\"",
"requires_python": ">=3.9",
"evaluation": "NOT_EVALUATED"
} | mypy>=1.0.0; extra == "dev" | runtime |
pytest-covEnvironment{
"extras": "",
"marker": "extra == \"dev\"",
"requires_python": ">=3.9",
"evaluation": "NOT_EVALUATED"
} | pytest-cov>=4.0.0; extra == "dev" | runtime |
pytestEnvironment{
"extras": "",
"marker": "extra == \"dev\"",
"requires_python": ">=3.9",
"evaluation": "NOT_EVALUATED"
} | pytest>=7.0.0; extra == "dev" | runtime |
ruffEnvironment{
"extras": "",
"marker": "extra == \"dev\"",
"requires_python": ">=3.9",
"evaluation": "NOT_EVALUATED"
} | ruff>=0.1.0; extra == "dev" | runtime |
bdist_wheel · 85.75 KB · Python py3
sdist · 227.11 KB · Python source
Observed since 20 Oct, 21:48 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
package_version:d7be3b29fda236177f1f294752dd4920a380697c212c3d05b80e1d07e583dea8