Skip to main content

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 export a 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 export a 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


Download files

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

Source Distribution

devague-0.13.0.tar.gz (233.4 kB view details)

Uploaded Source

Built Distribution

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

devague-0.13.0-py3-none-any.whl (59.7 kB view details)

Uploaded Python 3

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

Hashes for devague-0.13.0.tar.gz
Algorithm Hash digest
SHA256 e43f513d78ff9162b75e9575f4557b43c5d31f9b31a538214b852524d7bf4f41
MD5 1f92225a253e94935ce52870361c0e1a
BLAKE2b-256 0eaf3295b9c96050bfb01a2c52b3f84ac2211f9fb5f4e935568dec7b99b31c42

See more details on using hashes here.

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

Hashes for devague-0.13.0-py3-none-any.whl
Algorithm Hash digest
SHA256 626e50496c6c6a35f2014ea096e1a8db30d440aa018efe87f368ae4b220aa60f
MD5 daa8e6be5b37b1c94df1d36658dc104e
BLAKE2b-256 7573dc525b48caf5d1b42f87156e7f18e1cebc1bdbaf34cbd26f2ad4b46efc94

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