Pandoscope
Agentic engineering instrument: high-level commands that let any AI agent run a Pandoscope-powered project as a self-improving software factory. It stamps templates, installs skills, orchestrates build, review, and memory, and hardens itself by turning every failure into a regression test.
Install
Every surface delivers the same Python implementation at the same version (see docs/releasing.md):
uvx pandoscope --help # Python (uv)
npx pandoscope --help # Node — a launcher shim that bootstraps uv
Agent-native: install the repository as a Claude Code plugin to get the
pandoscope-stamp skill:
/plugin marketplace add pandoscope/pandoscope
/plugin install pandoscope@pandoscope
Commands
pandoscope stamp [DIRECTORY]
Render the
agentic-engineering-template
scaffold into a project directory (wraps copier copy).
pandoscope stamp my-project \
-d agentic_project_name="My Project" \
-d agentic_repo_owner=me \
--defaults
pandoscope compose
Compose the session-time reinset from a SessionStart hook
(skills#179,
skills#195,
waybill#1). The
composer detects the harness facts. It reads the waybill order. It
writes the answers file at $REINSET_ANSWERS (default
~/.claude/reinset/<session_id>.yml). It renders ~/.claude/CLAUDE.md
from the role's profile. The package ships profiles under
src/pandoscope/reinset/profiles/. The composer prefers a same-named
file under meta/reinset/profiles/ in the session root; that file
replaces the shipped one whole.
The order is the only receiver. The Routine fires when a pull request
opens on the waybill repository from a branch order/<name>. The
harness sets CCR_TRIGGER_REPO and CCR_TRIGGER_HEAD_REF in the
environment. It also checks out the pull request head. The checkout
puts waybill/orders/<name>.yml on disk. That file names the role,
the pull request under work, the tickets, and for a reviewer the pass
and tier. The composer reads that file and sets the role. For a
reviewer it appends the review task to
CLAUDE.md. It takes the task text from the prompt block in
skills/original/thread-ledger/review/<pass>.md. It fills in <tier>
and <n>. Without an order the composer sets the role general and
renders the loud UNCONFIGURED state. The Routine's saved prompt is one
orientation sentence. Every Routine saves the same sentence. It tells
the model that the hooks composed its role and task into CLAUDE.md.
Never run the composer from a model turn: the hook is the caller.
The composer writes four keys to the answers file: detected
(harness facts), resolved (harness, environment, role, principal,
model), order (path, role, pass, tier, pull request number, tickets;
null without an order) and errors.
The composer validates the order against a strict schema
(src/pandoscope/reinset/schemas/order.json). The schema rejects
unknown keys. It requires role. It requires id to equal the file
name. It takes pull_request as owner/repo#n. It takes tickets
as a list of the same form. It takes checkouts as a map from
owner/repo to a ref. For a reviewer it also requires pass and
tier, both lowercase. When the order is off the schema, the
composer reports an error that names every violated field. The
session therefore never runs on a half-read order.
SESSION_ROOT=/home/user pandoscope compose
pandoscope order check FILE...
Validate waybill order files against the schema that the composer uses. The command prints every violation with its field. It exits 1 when any file fails. Waybill's pull request checks run it. A broken order therefore turns red before anyone fires on it.
More commands land as the tool grows.
Glossary
Ubiquitous language lives in docs/glossary/, one file per term. Resolve a
term and its transitive dependencies with uvx disambiguate <term>.
- The instrument: Pandoscope
- The actors: Principal, Pando, Pando cell, Org, Reinset
- Building blocks: Pandoscope template, Org genome, Template stamp, Agent session
- Memory: Memory repo, Decision-memory, Session-memory, Evidence-memory, Decision record, Preference set, Record contract
- Decisions: Grilling
Release files for pandoscope 0.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| pandoscope-0.2.0.tar.gz | 14.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| pandoscope-0.2.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 33.4 kB
Release files / pandoscope-0.2.0.tar.gz
| Download URL | pandoscope-0.2.0.tar.gz |
|---|---|
| Size | 14.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
5137c2366b14a70d7dc04af91d64d44a9b34921b7dfc2dbc178f7810e9ab044c
|
|
BLAKE2b-256 checksum How to use checksums |
a5ecf6a7e2238c9b3265529674924c557b4bd1d09e4f2c1713b5fabe3348492e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.18 {"installer":{"name":"uv","version":"0.12.18","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}
|
Release files / pandoscope-0.2.0-py3-none-any.whl
| Download URL | pandoscope-0.2.0-py3-none-any.whl |
|---|---|
| Size | 19.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
4bea52d245f565a165af67e83acc243152538ad9880a9dab728d77180618b1ea
|
|
BLAKE2b-256 checksum How to use checksums |
cd1de917db25185ad4bf25b9c0a82e127e20c8123925a40a1bd7f9a990cecd9f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.18 {"installer":{"name":"uv","version":"0.12.18","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}
|