devague — turns a vague feature idea into a buildable spec, then a buildable plan.
Project description
devague
devague is a command-line tool that turns a vague feature idea into a
buildable spec, then that spec into a buildable plan — by working
backwards, then forwards. It is a small, deterministic Python CLI (no LLM calls
inside it, fully unit-tested) — not an agent, service, or daemon. You install it
and run devague from the repository you are speccing; state is plain JSON under
.devague/.
vague idea ──▶ buildable spec ──▶ buildable plan ──▶ build
Install
uv tool install devague # or: pipx install devague / pip install devague
devague --version
Two engines, one CLI
- Frame engine (idea→spec) — start from the announcement ("pretend it
shipped"), capture and pressure-test claims, park open vagueness, and
exporta spec only once the frame converges. Flat verbs:devague new/capture/interrogate/confirm/converge/export/ … - Plan engine (spec→plan) — seed a plan from a converged frame, cover every
target with tasks that carry acceptance criteria and an acyclic dependency
order, and
exporta plan only once it converges. Nested group:devague plan new/task/cover/converge/export/ …
Run devague learn (or devague plan learn) to learn the method, and devague explain <move> for any single move.
Human Review Loop
LLM-proposed claims and honesty conditions stay proposed until you
confirm them — that anti-fabrication rule is the point of the method. The review
loop makes that human step ergonomic at scale:
devague review # list every proposed (unconfirmed) item, with ids
devague review --json # same, structured
devague confirm c2 h1 h3 # confirm many ids in one transactional call
devague reject c4 c5 # reject many ids in one call
devague confirm --from-review .devague/reviews/<slug>.md # apply an edited review file
review is not gated on convergence and never mutates state. It writes a
durable, explicitly non-authoritative artifact you can review out of band, then
apply: each item is emitted with a pending marker — change it to confirm or
reject and feed the file back with confirm --from-review. pending lines are
never auto-confirmed; a batch is transactional (one bad id ⇒ nothing changes).
Open questions / pending decisions live as durable working state too:
devague question "should batch confirm be transactional?" # record a pending decision
devague question --list # review them
devague question --resolve q1 --decision "yes, transactional"
Applying a resolved decision into the frame stays an explicit move (e.g.
devague capture --kind decision "…" then devague confirm).
.devague/ — what's committed vs working state
| Path | Committed? |
|---|---|
.devague/frames/, .devague/plans/ |
yes — the converged frame/plan state |
.devague/reviews/<slug>.md |
no — local review working state |
.devague/questions/<slug>.md |
no — local pending-decision working state |
.devague/current, .devague/current_plan |
no — local pointers |
devague keeps reviews/ and questions/ out of git for you (it manages
.gitignore). Promote one into docs/ only if you intentionally want it
committed.
Driving it from an agent
Inside AgentCulture, an assistant drives this CLI through two operator skills —
/think (idea→spec) and /spec-to-plan (spec→plan) — which add a
portable wrapper and a status next-move helper over the convergence gate. The
CLI is the deterministic affordance; the agent decides the next move. See
CLAUDE.md for that workflow and docs/superpowers/specs/ for the design docs.
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 devague-0.13.0.tar.gz.
File metadata
- Download URL: devague-0.13.0.tar.gz
- Upload date:
- Size: 233.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.16 {"installer":{"name":"uv","version":"0.11.16","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e43f513d78ff9162b75e9575f4557b43c5d31f9b31a538214b852524d7bf4f41
|
|
| MD5 |
1f92225a253e94935ce52870361c0e1a
|
|
| BLAKE2b-256 |
0eaf3295b9c96050bfb01a2c52b3f84ac2211f9fb5f4e935568dec7b99b31c42
|
File details
Details for the file devague-0.13.0-py3-none-any.whl.
File metadata
- Download URL: devague-0.13.0-py3-none-any.whl
- Upload date:
- Size: 59.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.16 {"installer":{"name":"uv","version":"0.11.16","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
626e50496c6c6a35f2014ea096e1a8db30d440aa018efe87f368ae4b220aa60f
|
|
| MD5 |
daa8e6be5b37b1c94df1d36658dc104e
|
|
| BLAKE2b-256 |
7573dc525b48caf5d1b42f87156e7f18e1cebc1bdbaf34cbd26f2ad4b46efc94
|