Devora
Project-aware, spec-driven delivery workflows for coding agents.
Devora turns product intent into a traceable implementation and review flow. It installs a small set of commands, templates, and deterministic project-state scripts into your repository. Your coding agent still does the real work: reading the codebase, making technical decisions, implementing changes, and running validation.
Devora is designed for real feature delivery rather than one-shot prompting:
- requirements can come from product documents, designs, images, tickets, links, API descriptions, and conversation;
- the agent verifies relevant project context before defining the change;
- specifications, plans, test cases, and tasks remain linked;
- analysis findings are routed to the agent, the user, or an external owner;
- implementation and validation are tracked separately;
- an independent review and explicit human approval form the final pre-PR gate.
Devora is not a code index, RAG service, AST engine, coding-agent runtime, or multi-agent orchestrator. It defines the delivery process and delegates project work to the connected agent.
Quick start
Install the CLI from PyPI:
uv tool install devora-cli
devora --version
Initialize an existing repository:
cd /path/to/your-project
devora init . --integration codex
Start with project context when the repository is unfamiliar or complex:
$devora-project-context
$devora-specify Add an administrator action to disable a user
Then continue through the delivery flow:
$devora-clarify # optional, only when product intent is ambiguous
$devora-plan
$devora-tasks
$devora-analyze
$devora-resolve # only when analysis reports NOT_READY
$devora-implement
$devora-review
In Codex, Skills are invoked with $devora-*, not /devora-*. Other supported
integrations use slash commands.
Supported coding agents
| Integration | Initialize with | Installed location | Invoke |
|---|---|---|---|
| Codex | --integration codex |
.agents/skills/devora-*/SKILL.md |
$devora-* |
| Claude Code | --integration claude |
.claude/skills/devora-*/SKILL.md |
/devora-* |
| OpenCode | --integration opencode |
.opencode/commands/devora-*.md |
/devora-* |
| Cursor | --integration cursor |
.cursor/commands/devora-*.md |
/devora-* |
| Generic Markdown | --integration generic |
.devora/commands/devora.*.md |
/devora.* |
Codex is the default:
devora init .
You do not need to reinitialize the project to change coding agents. Switch the active integration while preserving shared Devora state and feature artifacts:
devora integration use opencode .
devora integration use cursor .
Unmodified files from the old integration are removed. User-modified files are preserved and reported.
How the workflow works
project-context (optional)
↓
constitution (initialize or revise project rules when needed)
↓
specify → clarify (optional)
↓
plan → tasks
↓
analyze → resolve (when needed)
↓
implement
↓
review → explicit human approval
| Stage | Result | Human involvement |
|---|---|---|
project-context |
Durable, evidence-based repository snapshot | Optional |
constitution |
Project-specific delivery rules | Only when rules need decisions |
specify |
Traceable intake, specification, and human summary | Approve scope or clarify |
clarify |
Resolved product ambiguity | Only material product decisions |
plan |
Technical plan and first-class test cases | Review material trade-offs |
tasks |
Dependency-aware executable work | Usually none |
analyze |
Read-only consistency and readiness report | Usually none |
resolve |
Synchronized artifact repairs and re-analysis | Only true user decisions |
implement |
Code, validation evidence, and task state | External actions if blocked |
review |
Independent pre-PR findings and approval packet | Final approval or changes |
Impact analysis is performed internally during specify; it is not an extra
command. The later analyze stage has a different purpose: it checks whether
the complete specification, plan, test cases, and tasks are safe and consistent
enough to implement.
Product inputs and human control
specify can use any requirement sources the connected agent can actually
access. Devora does not ship a duplicate document parser or browser. Instead,
the agent inventories available sources and records them in intake.md with
stable IDs, access status, conflicts, assumptions, and traceability.
summary.md is the human control surface. It keeps scope, decisions, risks,
implementation progress, validation status, and the next action readable
without requiring people to inspect every machine-oriented artifact.
When analysis finds a problem:
AUTO_FIX: the agent repairs the workflow artifacts automatically;USER_DECISION: the agent presents plain-language options and a recommendation;EXTERNAL_BLOCKED: the exact external owner and action are recorded;ACCEPTED_RISK: the user must explicitly accept the risk.
Users are not asked to manually edit generated Devora documents.
Language and script backend
Artifact language defaults to auto. During specify, the feature locks to the
dominant product-input language:
devora init . --language auto
devora init . --language zh-CN
devora init . --language en
Code identifiers, API names, exact contract strings, and source terminology are preserved in their original form.
Python is the default workflow-script backend and works across Windows, macOS, and Linux:
devora init . --script-type py
The Bash backend remains available for compatibility:
devora init . --script-type sh
The selected backend is recorded in .devora/init-options.json, and installed
agent commands receive the correct script invocation automatically.
Upgrade and integration lifecycle
There are two upgrade steps:
- Upgrade the global CLI package.
- Upgrade the workflow files installed in each project.
uv tool upgrade devora-cli
cd /path/to/your-project
devora integration upgrade .
Devora uses separate ownership manifests:
.devora/integrations/
├── core.manifest.json
└── <integration>.manifest.json
During an upgrade, Devora:
- updates managed files that still match their previous hashes;
- removes obsolete managed files that were not modified;
- preserves and reports user-modified files;
- rejects unsafe, malformed, escaping, or symlinked manifest paths;
- never overwrites
.devora/memory/constitution.md.
Use --force only when you intentionally want to replace customized managed
files:
devora integration upgrade . --force
Manage integrations directly:
devora integration list
devora integration use cursor .
devora integration uninstall cursor .
Installed project structure
.devora/
├── init-options.json
├── feature.json # active feature pointer
├── integrations/
│ ├── core.manifest.json
│ └── <integration>.manifest.json
├── memory/
│ ├── constitution.md
│ └── project-context.md # created by the optional command
├── scripts/
│ ├── python/ # default cross-platform backend
│ └── bash/ # compatibility backend
└── templates/
specs/
└── 001-feature-name/
├── intake.md
├── spec.md
├── summary.md
├── plan.md
├── test-cases.md
├── tasks.md
├── analysis.md
├── review.md
└── optional design artifacts
A task checkbox means fully complete—not merely “code written.” Each task tracks implementation and validation independently, and can be checked only when its dependencies are complete and its declared evidence passes.
Existing projects and existing Devora installations
Running devora init in an existing application does not scan or rewrite
business code. It installs the workflow files only.
To upgrade a project initialized by an earlier Devora version:
uv tool upgrade devora-cli
devora integration upgrade .
Legacy combined manifests are migrated into separate core and integration ownership. Existing feature artifacts and the project constitution are preserved.
Development
git clone https://github.com/cheney369/Devora.git
cd Devora
uv sync --extra test
uv run pytest
uvx ruff format --check src tests scripts/python scripts/ci
uvx ruff check src tests scripts/python scripts/ci
Build and smoke-test the wheel:
uv build
python scripts/ci/wheel_smoke.py
CI validates Python 3.11 and 3.14 on Ubuntu, macOS, and Windows. The wheel smoke test installs the built package into a clean environment and runs a real project initialization plus feature setup.
Architecture
The Python CLI owns installation, safe upgrades, integration selection, and deterministic feature-path setup. The connected coding agent owns repository inspection, technical reasoning, artifact authoring, implementation, and validation.
See docs/architecture.md for the detailed runtime, ownership, safety, and responsibility model.
License
Devora is available under the Apache License 2.0.
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 devora_cli-0.4.0.tar.gz.
File metadata
- Download URL: devora_cli-0.4.0.tar.gz
- Upload date:
- Size: 873.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
18fa266579c09c5011b02c6ee7c1baaab009187e7bf3948fc1b43e7d3c207eda
|
|
| MD5 |
d3268abeb51b3902c6999a7e0b5ac414
|
|
| BLAKE2b-256 |
4b30f7c065bd2baf47d9be70cc6967e41210345c6fcaa6bf3d5dd7cc7dcd0434
|
Provenance
The following attestation bundles were made for devora_cli-0.4.0.tar.gz:
Publisher:
release.yml on cheney369/Devora
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
devora_cli-0.4.0.tar.gz -
Subject digest:
18fa266579c09c5011b02c6ee7c1baaab009187e7bf3948fc1b43e7d3c207eda - Sigstore transparency entry: 2232857843
- Sigstore integration time:
-
Permalink:
cheney369/Devora@d320eeedf22b1d57a086854a434174c6e4399ec0 -
Branch / Tag:
refs/tags/v0.4.0 - Owner: https://github.com/cheney369
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@d320eeedf22b1d57a086854a434174c6e4399ec0 -
Trigger Event:
release
-
Statement type:
File details
Details for the file devora_cli-0.4.0-py3-none-any.whl.
File metadata
- Download URL: devora_cli-0.4.0-py3-none-any.whl
- Upload date:
- Size: 59.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f8194ed2e13aad7547124e9ae0392e90a988303c3446f7d88cc720c3233ba875
|
|
| MD5 |
166e317dec996f05e4fb99675bb08a54
|
|
| BLAKE2b-256 |
39ccf658481d6ee45fea0992125d147bf7073f7fcf89d1631ac2c1981d92eae7
|
Provenance
The following attestation bundles were made for devora_cli-0.4.0-py3-none-any.whl:
Publisher:
release.yml on cheney369/Devora
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
devora_cli-0.4.0-py3-none-any.whl -
Subject digest:
f8194ed2e13aad7547124e9ae0392e90a988303c3446f7d88cc720c3233ba875 - Sigstore transparency entry: 2232858791
- Sigstore integration time:
-
Permalink:
cheney369/Devora@d320eeedf22b1d57a086854a434174c6e4399ec0 -
Branch / Tag:
refs/tags/v0.4.0 - Owner: https://github.com/cheney369
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@d320eeedf22b1d57a086854a434174c6e4399ec0 -
Trigger Event:
release
-
Statement type: