A task-oriented intent language for AI coding agents.
Project description
Quinny
A task-oriented intent language for AI coding agents.
Quinny sits above Python, Swift, TypeScript, Rust, etc. You describe what should be built — goals, inputs/outputs, dependencies, constraints, and how to verify it — and Quinny compiles that into a validated task graph, then drives an LLM to generate, verify, and assemble the actual code.
English → Quinny (.qn) → Task Graph → Plan → Generated code (Python, …)
│ │ │ │
│ 10 keywords │ DAG + │ layers │ per-node LLM gen
│ indentation │ validation │ │ + verify + repair
A .qn file is not code that runs — it is a structured, human-readable,
version-controllable description of intent. quinny check catches missing
components and broken dependencies at plan time (cheap), before a single line
of code is generated.
Install
# One-liner — installs the Python-free binary on Apple Silicon, else falls back to pip:
curl -fsSL https://raw.githubusercontent.com/Xavierhuang/quinny/main/install.sh | sh
# Or straight from PyPI (needs Python 3.10+):
pip install quinny
The installer honors QUINNY_METHOD=pip|binary, QUINNY_VERSION=vX.Y.Z, and
QUINNY_PREFIX=<dir>. Prebuilt binaries are attached to each
GitHub Release.
From source:
git clone https://github.com/Xavierhuang/quinny
cd quinny
pip install -e .
Requires Python 3.10+.
Quickstart
Write hello.qn:
project SimpleLogin
task Login
goal
Authenticate a user with email and password.
input
email
password
output
jwt_token
constraint
Under 200ms latency.
test
Invalid password is rejected.
success
Valid credentials produce a token.
Validate and inspect the plan (no LLM, no key needed):
quinny check hello.qn # ✓ parses + graph is valid
quinny plan hello.qn # execution layers
quinny graph hello.qn # the task graph
Generate code (needs credentials — see below):
quinny build hello.qn --full-verify --assemble -o out/
# → out/login.py, out/shared_types.py, out/main.py, requirements.txt, README.md
The CLI
| Command | What it does | Needs an LLM? |
|---|---|---|
quinny parse <file> |
Parse a .qn to its AST |
no |
quinny check <file> |
Parse + validate the task graph (missing deps, cycles) | no |
quinny graph <file> |
Print the task graph | no |
quinny plan <file> |
Show execution layers (what can run in parallel) | no |
quinny gen "<english>" |
Translate English → a .qn plan |
yes |
quinny build <file> |
Generate code from a .qn (per-node gen → verify → repair → assemble) |
yes |
quinny build flags: --target python, -o <dir>, --full-verify, --assemble,
--model <m> (and per-stage --types-model / --node-model / --repair-model /
--assemble-model), --max-repair N, --only <node>.
Credentials
gen and build call an LLM. Quinny uses the Anthropic Python SDK, so it reads
standard environment variables:
- Anthropic API key:
export ANTHROPIC_API_KEY=sk-... - Any Anthropic-compatible proxy (bring-your-own gateway): set
ANTHROPIC_BASE_URL+ANTHROPIC_AUTH_TOKEN(Bearer).QUINNY_MODELsets the default model. Everything beforegen/build(parse/check/graph/plan) needs no credentials.
The language
Ten keywords, indentation-sensitive, no loops or variables — those belong to the target language the agent emits:
project task component
goal input output
constraint depends uses
test success
Full reference: docs/LANGUAGE_SPEC.md. Writing plans with an LLM: docs/AI_PROMPT.md. First-time walkthrough: docs/getting-started.md.
Using it with Claude Code
Quinny is a CLI, so Claude Code can use it the
moment it's installed — just ask it to "use quinny to plan and build …". For a
/quinny slash command and a paste-in CLAUDE.md block that teaches Claude when
to reach for it, see docs/claude-code.md.
When to use Quinny (honest scope)
Quinny is v0.1 / alpha, and it is not free — a build makes many sequential
LLM calls, so it costs more tokens and time than a single "just write it"
prompt. It earns that cost only on genuinely complex, multi-component projects
where a one-shot attempt would miss a piece, leave a dependency dangling, or drift
between files — the kind of failure that's expensive to debug afterward.
- Reach for Quinny: larger systems with several interdependent components, cross-file contracts, and non-trivial ordering; when you want the plan reviewed before code is written; when you want each file verified as it's generated.
- Don't bother: simple scripts, one-file utilities, single features, quick edits, refactors, bug fixes — a plain prompt is faster, cheaper, and just as reliable.
The .qn plan is the durable artifact: readable, editable, diffable, reusable.
Status
Implemented: parser, task-graph builder + validator, planner, code generator,
verify/repair loop, main.py assembly, CLI.
Roadmap: a JSON/schema plan format (for dependency-free tooling), parallel node execution, and code-gen targets beyond Python.
Contributing
Issues and PRs welcome. Please keep the language small (the v0.1 surface is 10 keywords on purpose) and add a test for any parser/graph/validator change.
License
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 quinny-0.1.0.tar.gz.
File metadata
- Download URL: quinny-0.1.0.tar.gz
- Upload date:
- Size: 47.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8586ca980eb69e895d79a9b831c5cb172ed7472ef87744aa5ec82f99c46c5d5b
|
|
| MD5 |
2966833acdc88540d07baba6544e7332
|
|
| BLAKE2b-256 |
ae9886ed0eb916177584904078757ca4bf2829fb42424abbd6441a48e00d0fe3
|
File details
Details for the file quinny-0.1.0-py3-none-any.whl.
File metadata
- Download URL: quinny-0.1.0-py3-none-any.whl
- Upload date:
- Size: 42.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d3a86c38bd491822fbddb1f2789eed049245b7f7de506d847aeadffea0ea5c46
|
|
| MD5 |
a17a38610f241908d0ba75375cf992bc
|
|
| BLAKE2b-256 |
892daa206849275614d865b93ce1121f5d129899470569c0d192e99a771f4a99
|