* docs: link Grant Radar external example
Add Grant Radar to the OpenProse examples index without vendoring the example tree.
The canonical example remains in openprose/grant-finder so product-specific source and docs stay with the tool they exercise.
* docs: document local open-prose skill fallback
Add a minimal-shell fallback for users who have prose available but not npx, matching the public CLI skill-preflight behavior.
Moves `@openprose/prose-cli` from `cli/` to `tools/cli/` and seeds a
`tools/` convention at the repo root for shippable tooling published as
standalone artifacts. Package internals are unchanged — only paths
outside the package that hard-code the `cli/` segment were updated.
## What changed
- `git mv cli tools/cli` — package files render as 100%-similarity
renames, so `git log --follow` is preserved.
- `.github/workflows/cli-publish.yml`,
`.github/workflows/cli-release-check.yml`, and
`.github/workflows/cli-real-harness-smoke.yml`: every literal `cli/`
path (`paths:`, `working-directory:`, `cache-dependency-path:`,
artifact `path:`, and inline `node`/`bash` invocations) now points
at `tools/cli/`. `cli-skills-smoke.yml` had no `cli/` references and
is untouched.
- `tools/cli/package.json`: `repository.directory` and `homepage` flip
to `tools/cli` so the npm registry "Repository" link resolves.
- `README.md`: the badge nav, the prose-layout paragraph, and the repo
layout table now point at `tools/cli/`, plus a new `tools/` row
introducing the convention.
- `RELEASE.md`: cross-references to `cli/RELEASE.md` updated.
- `tools/cli/README.md`, `tools/cli/RELEASE.md`,
`tools/cli/POST_RELEASE_PLAYTEST.md`: public installer URL updated to
`https://raw.githubusercontent.com/openprose/prose/main/tools/cli/install.sh`.
OpenProse already installed as a Claude Code plugin via
`npx skills add openprose/prose`, but the packaging surface was
uneven: missing manifest fields, no native Codex envelope, no
plugin-track release process, and a couple of doc/audience
inconsistencies. This commit closes those gaps without changing
skill behavior.
OpenProse now ships from the repo root as a dual-host plugin
envelope — `.claude-plugin/` for Claude Code, `.codex-plugin/`
plus `.agents/plugins/` for Codex — with `skills/open-prose/`
as the shared core and `prose ...` as the only user-facing
command surface.
Codex envelope:
- .codex-plugin/plugin.json with first-class catalog metadata
(displayName, developer, descriptions, category, capabilities,
defaultPrompt, privacy/terms URLs).
- .agents/plugins/marketplace.json local-source catalog, installable
by anyone who clones this repo.
Claude Code manifest hygiene:
- Added license, homepage, and skills: ./skills so the plugin is
self-describing.
- Added marketplace.json metadata.description, clearing the sole
`claude plugin validate` warning.
- Deleted the stale .claude-plugin/README.md.
Skill metadata:
- Added license: MIT to skills/open-prose/SKILL.md frontmatter
(no top-level version — Claude Code strips unrecognized top-level
frontmatter keys; see anthropics/claude-code#13005).
- Fixed an inconsistent parse-table cell pair in
skills/open-prose/deps.md.
Audience boundaries:
- AGENTS.md is now contributor-only per agents.md.
- Recommended consumer [agents] Codex config moved to README.md
alongside the Quickstart.
Release process:
- scripts/bump-version.sh + .version-bump.json bump both manifests
atomically, with a --check mode for CI. The Claude Code
marketplace deduplicates by version, so a forgotten bump silently
strands users on cached copies; this gate prevents that.
- scripts/extract-changelog.sh pulls a single `## [X.Y.Z]` block
out of CHANGELOG.md.
- RELEASE.md documents the manual flow.
- .github/workflows/release.yml verifies declared versions match
on `v*` tag push and publishes a GitHub Release.
CI:
- New plugin-manifest.yml: every-PR gate validating both plugin.json
files, asserting declared skills paths resolve, and running
bump-version.sh --check.
- cli-skills-smoke.yml: added `npx skills list openprose/prose`
discoverability check alongside the existing install smoke.
- openprose-smoke/run.ts: removed a dead commands/prose-*.md regex.
Move the standard library (previously `github.com/openprose/std`) and
the company-as-prose library (previously local dir
`/Users/sl/code/openprose/company-as-prose`) into this repository
under `packages/std/` and `packages/co/` respectively.
Motivation: concentrate attention on one repository so stars,
discussions, and issues aggregate. `openprose/std` was a genuinely
useful asset nobody could find because ~50 stars on its own repo
told a much worse story than 1,106 stars on `openprose/prose`
would have. Same logic applies to co.
Layout choice: `packages/{std,co}/` rather than `std/` + `co/` at
the repo root. Root siblings accumulate over time, and a flat
top-level made future libraries (hub, kit, dev, etc.) compete with
spec infrastructure. `packages/` is bounded — new libraries land
there without cluttering root. Matches pnpm/Deno/monorepo tooling
conventions.
Changes:
- New: `packages/std/` (copied from openprose/std, `.git` excluded)
- New: `packages/co/` (copied from company-as-prose, README updated
for new name and location)
- `packages/std/README.md`: updated shorthand expansion reference
- `packages/co/README.md`: renamed "company-as-prose" to "co" in
self-references, added std-vs-co split heuristic, updated
`prose run` examples to use `co/` shorthand
- `skills/open-prose/deps.md`:
- `std/` shorthand now expands to
`github.com/openprose/prose/packages/std/`
- `co/` shorthand added, expands to
`github.com/openprose/prose/packages/co/`
- Both shorthands resolve into the same clone of
`openprose/prose` under `.deps/github.com/openprose/prose/`;
`packages/std/` and `packages/co/` are sibling subdirectories
- `prose.lock` format row updated to `host/owner/repo sha`
(matches the explicit-host resolution that landed in #35)
- `.deps/` directory structure example redrawn to show the
`{host}/{owner}/{repo}/packages/{std,co}/...` shape
- Error message and Interaction tables refreshed accordingly
- Resolution Algorithm step 1 now documents both shorthands
- `skills/open-prose/forme.md`: Step 2 resolution list updated to
include co/ shorthand and the host-keyed `.deps/` layout
- `skills/open-prose/help.md`: Q&A "How do dependencies work?"
rewritten to name both shorthands and the new explicit-host model
- `skills/open-prose/state/filesystem.md`: `.deps/` directory
tree re-drawn to include the `{host}/` layer with std/co as
sibling packages inside the clone
- `skills/open-prose/guidance/patterns.md`,
`skills/open-prose/guidance/antipatterns.md`: examples now use
the `std/` shorthand or explicit `github.com/...` rather than
the deprecated bare `openprose/std/` form
- `skills/open-prose/examples/registry-import/index.md`: sample
service reference switched to `std/evals/inspector`
- `README.md`: Stdlib badge replaced with internal `packages/std/`
link plus new `packages/co/` link; "Standard Library" section
rewritten as "Libraries" with both packages described
Out of scope for this PR (deliberately):
- Tooling changes to `prose install` and Forme's `.deps/` writer
to adopt the `{host}/{owner}/{repo}/` layout in practice — this
PR is spec-only. Existing tooling continues to work against
whatever layout it currently implements; the spec now describes
the target.
- Retiring the `openprose/std` GitHub repo. Delete that repo
separately after this merges.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Rewrites agent-facing surfaces so the runtime contract is stated in the
voice of the entity that will execute it:
- plugin/marketplace descriptions tell the agent what it will do when
`prose` fires (read contract, spawn subagents, write `.prose/runs/`)
instead of pitching OpenProse as a feature
- README opens with a fourth-wall blockquote for agents arriving via
"go check out this repo," adds a Host Primitive Adapter table so the
runtime contract is visible before activation, and names the agent
failure modes OpenProse addresses
- SKILL.md body adds recognition signals, a proposal script, a cognitive
model (type-system analogy), and when-to-decline guidance so an agent
can reach for OpenProse on its own judgment once activated
- SKILL.md adds a "giving back" section with a three-bucket identity
rubric (yours freely / requires approval / skip) to channel goodwill
without becoming a spam vector
- SKILL.md frontmatter stays tight to avoid context pollution and
false-positive activations
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Index run scaffolded new READMEs for all subdirectories. Review run
added the missing profiler.prose entry to skills/open-prose/lib/README.md
(cost, token usage, and time profiling for completed runs).
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
## Recursive Blocks (Ready for Implementation)
- VM-managed call stack with execution_id tracking
- Scope isolation per block invocation
- Support for divide-and-conquer, tree traversal, self-refining patterns
- Updated prose.md with Call Stack Management section
- Updated session.md with Execution Scope guidance
- Updated all state backends with scoped binding support
## PostgreSQL State Backend (Experimental)
- True concurrent writes with row-level locking
- Network access for external dashboards
- Scope resolution queries with recursive CTEs
- Security warnings about credential visibility
- Connection check procedure in SKILL.md
## Documentation
- Added sqlite/postgres see-also references across all docs
- Consistent execution_id handling in all state backends
- Updated README.md with security guidance
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Change Claude Code instructions to use `claude` CLI format
- Add OpenCode instructions (git clone to ~/.config/opencode/skill/)
- Add Amp instructions (git clone to ~/.config/agents/skills/)
- Remove "restart Claude Code" step
- Update example prompt to "run example prose program..."
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- prose.md: Add "Why This Is a VM" section explaining the simulator
mechanism, component mapping table, and "simulation with sufficient
fidelity is implementation" insight
- SKILL.md: Add condensed simulator explanation to intro
- README.md: Add simulator framing to "How It Works" section and
introduce "Prose Complete" terminology
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
GitHub strips inline SVGs for security. Host the SVG as a file
and reference with relative path instead.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
The external SVG asset URL was returning 404. Replaced with
inline SVG that matches the landing page design system:
- Paper cream background with subtle texture
- Two-tone "Open Prose" title
- Gold accent underline
- Typewriter margin line detail
- Corner flourishes
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Rename interpreter.md title to "OpenProse VM"
- Add "Embodying the VM" section with identity framing
- Add "The VM as Intelligent Container" subsection (IoC concept)
- Add frontmatter to interpreter.md and prose.md with cross-references
- Add openprose compile/run triggers to SKILL.md with descriptions
- Update README.md section "The Orchestrator" → "The OpenProse VM"
- Standardize all "orchestrator" references to "OpenProse VM" across docs
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Ships as markdown files with zero dependencies:
- SKILL.md: Activation and quick reference
- interpreter.md: Execution semantics
- prose.md: Full language specification (compiler + validator)
- 27 examples
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>