Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion packages/std/ops/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ come back as `unresolved-intent` instead of terminal prompts.
| `preflight.prose.md` | `prose preflight <file>` | Check that dependencies are installed and environment variables are set |
| `wire.prose.md` | `prose run std/ops/wire` | Run Forme wiring to produce an execution manifest |
| `status.prose.md` | `prose status` | Show recent runs with system name, duration, and pass/fail status |
| `prose-author.prose.md` | `prose write [--out <path>] [--apply] [--run] [request...]` | Interactive-by-default authoring of a validated OpenProse package from rough English or pseudo-Prose; `--out --apply` may write it, and host adapters that support `--run` expand it to write/apply followed by ordinary `prose run <generated-root>` |
| `prose-author.prose.md` | `prose write [--out <path>] [--apply] [--run] [--test-iterations <0-3>] [request...]` | Interactive-by-default authoring of a validated OpenProse package from rough English or pseudo-Prose; `--out --apply` may write it, CLI host adapters may test generated `kind: test` files after apply, and `--run` expands to ordinary `prose run <generated-root>` |
| `diagnose.prose.md` | `prose run std/ops/diagnose` | Diagnose why a run failed -- root cause analysis with fix recommendations |
| `profiler.prose.md` | `prose run std/ops/profiler` | Profile a run for cost, tokens, and time using actual API session data |

Expand Down
14 changes: 13 additions & 1 deletion skills/open-prose/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -128,7 +128,7 @@ executing the system. The shell executable is the agent runner, e.g.
| `prose run runtime/judge-responsibility.prose.md` | Resolve from the OpenProse skill root; judge one responsibility from activation context |
| `prose run <host>/<owner>/<repo>[/path]` | Resolve installed dependency service or system, detect format, then route as above |
| `prose run std/...` / `co/...` | Expand OpenProse package shorthand, resolve installed dependency service or system, then route as above |
| `prose write [--out <path>] [--apply] [--run] [request...]` | Interactive-by-default authoring: load `contract-markdown.md`, `guidance/tenets.md`, and `guidance/authoring.md`; run `std/ops/prose-author`; scan the local landscape read-only, decide shape/root/path, load shape-specific guidance, ask a small number of targeted `ask_user` questions when the host can support them, then return a fully validated source package. If the caller or host marks the run non-interactive, return `unresolved-intent` with the missing decisions instead of guessing. Apply generated files only when the caller explicitly passes apply permission, normally through `--out <path> --apply`; `--run` is a host-adapter macro that implies apply permission and expands to an ordinary `prose run <generated-root>` only after authoring succeeds |
| `prose write [--out <path>] [--apply] [--run] [--test-iterations <0-3>] [request...]` | Interactive-by-default authoring: load `contract-markdown.md`, `guidance/tenets.md`, and `guidance/authoring.md`; run `std/ops/prose-author`; scan the local landscape read-only, decide shape/root/path, load shape-specific guidance, ask a small number of targeted `ask_user` questions when the host can support them, then return a fully validated source package. If the caller or host marks the run non-interactive, return `unresolved-intent` with the missing decisions instead of guessing. Apply generated files only when the caller explicitly passes apply permission, normally through `--out <path> --apply`; `--run` is a host-adapter macro that implies apply permission and expands to an ordinary `prose run <generated-root>` only after authoring succeeds. `--test-iterations` is a CLI host-adapter macro with default `1`; `0` disables generated-test execution, and `3` is the maximum bounded repair loop |
| `prose lint <file.prose.md>` | Validate Contract Markdown structure, headers, frontmatter, contracts, shapes, and wiring |
| `prose preflight <file.prose.md>` | Check dependencies and `### Environment` declarations without executing |
| `prose test <path>` | Load `contract-markdown.md`, `state/README.md` plus the selected backend, and `prose.md`; run `kind: test` file(s) |
Expand All @@ -149,6 +149,18 @@ authoring succeeds. A host that cannot perform this macro must reject
`prose write --run` before authoring and must not pass the macro into
`prose-author`.

`prose write --test-iterations` is also a host-adapter macro for apply-enabled
CLI writes. The CLI host adapter defaults to one generated-test attempt: it
runs ordinary `prose test` for generated `kind: test` files after authoring
succeeds, repairs by invoking a new apply-enabled `prose-author` pass only
between failed test attempts, and stops at the requested bound. The macro is
off when set to `0`, and the maximum is `3`. Plain in-session `prose write`
still routes to `prose-author`; a non-CLI host that cannot perform this macro
must reject an explicit `--test-iterations` option before authoring, must not
pass the test-iteration macro into `prose-author`, and must not perform
optional giving-back, memory, or mycelium note side effects while executing a
forwarded/non-interactive write loop.

There is one skill: `open-prose`. Do not look for separate `prose-run`,
`prose-lint`, `prose-compile`, or `prose-boot` skills.

Expand Down
2 changes: 1 addition & 1 deletion skills/open-prose/help.md
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ Options:
| `prose compile [path] [--out <dir>]` | Compile source into `<openprose-root>/dist/manifest.next.json` |
| `prose serve` | Serve the active IR as local cron and HTTP trigger adapters |
| `prose run <file.prose.md>` | Run a service or system |
| `prose write [--out <path>] [--apply] [--run] [request...]` | Interactive-by-default authoring from rough English/pseudo-Prose into a validated source package; `--out <path> --apply` writes it after lint passes, and host adapters that support `--run` expand it to write/apply followed by ordinary `prose run <generated-root>` |
| `prose write [--out <path>] [--apply] [--run] [--test-iterations <0-3>] [request...]` | Interactive-by-default authoring from rough English/pseudo-Prose into a validated source package; `--out <path> --apply` writes it after lint passes, supported host adapters run generated tests after apply, and `--run` expands to ordinary `prose run <generated-root>` |
| `prose lint <file.prose.md>` | Validate structure, schema, and contracts |
| `prose preflight <file.prose.md>` | Check dependencies and environment |
| `prose test <test.prose.md>` | Run tests with assertions |
Expand Down
2 changes: 1 addition & 1 deletion skills/open-prose/prose.md
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ codex exec "prose run system.prose.md"
| `prose run <owner>/<repo>` | Reserved for the OpenProse registry (future home at `p.prose.md`) |
| `prose run ...@<version>` | Pin to a SHA or tag; require that version in `<openprose-root>/deps/` |
| `prose run ... --offline` | Require disk-only resolution; error if not in `<openprose-root>/deps/` |
| `prose write [--out <path>] [--apply] [--run] [request...]` | Interactive-by-default authoring through `std/ops/prose-author`, asking targeted shape/root questions when supported and returning a validated source package; `--out --apply` writes it when permitted, and host adapters that support `--run` expand it to write/apply followed by ordinary `prose run <generated-root>` |
| `prose write [--out <path>] [--apply] [--run] [--test-iterations <0-3>] [request...]` | Interactive-by-default authoring through `std/ops/prose-author`, asking targeted shape/root questions when supported and returning a validated source package; `--out --apply` writes it when permitted, host adapters that support `--test-iterations` run generated tests after apply, and host adapters that support `--run` expand it to write/apply followed by ordinary `prose run <generated-root>` |
| `prose lint <file.prose.md>` | Validate structure, schema, shapes, and contracts |
| `prose preflight <file.prose.md>` | Check dependencies, declared tools, and environment variables |
| `prose test <path>` | Run test(s) and report results |
Expand Down
14 changes: 14 additions & 0 deletions tools/cli/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,7 @@ prose run std/evals/inspector
prose run std/evals/prose-contributor -- subjects: 20260406-201439-1a3369
prose write "draft a release readiness responsibility"
prose write --out src/release-readiness --run "draft a release readiness responsibility"
prose write --out src/release-readiness --apply --test-iterations=3 "draft a release readiness responsibility"
cat brief.txt | prose write --harness codex-sdk
prose run std/evals/inspector --harness codex-sdk
prose run co/systems/company-repo-checker --harness claude-sdk
Expand Down Expand Up @@ -169,6 +170,18 @@ then starts a separate ordinary `prose run` for the generated root file only
after authoring succeeds. Directory targets run `<path>/index.prose.md`; file
targets must end in `.prose.md`.

Generated-test execution is also a CLI host-adapter macro. After apply-enabled
authoring succeeds, the CLI discovers generated `kind: test` files under
`--out` and runs ordinary `prose test` for each one. `--test-iterations=1` is
the default for `--apply` and `--run`, `--test-iterations=0` disables the test
loop, and `--test-iterations=3` allows up to three test attempts with repair
authoring passes between failures. The test loop never commits generated files and does
not ask the authoring run to perform optional giving-back, memory, or mycelium
note side effects. Repair prompts include captured failing test output capped
at 12 KB; the side-effect ban and target-path repair instruction are prepended
before that output. If the loop exhausts its iteration bound, the CLI returns
the final failing `prose test` exit code rather than a distinct sentinel.

`--out` is a validated, root-relative target contract passed to the authoring
harness. The CLI rejects absolute paths, parent traversal, and file targets
that do not end in `.prose.md`; the actual write is still performed by the
Expand All @@ -184,6 +197,7 @@ prose run src/systems/reviewer.prose.md
prose write "draft a release readiness responsibility"
prose write --out src/reviewer --apply "draft a reviewer system"
prose write --out src/reviewer --run "draft a reviewer system"
prose write --out src/reviewer --apply --test-iterations=0 "draft a reviewer system"
prose write < brief.txt
prose run co/systems/company-repo-checker --harness claude-sdk
prose upgrade
Expand Down
Loading
Loading