Ten cooperating plugins covering the full development lifecycle, connected by shared JSON schemas and a common verification gate.
Use this when you're building non-trivial software with AI coding agents and need to know every acceptance criterion was implemented and tested — not assumed. The specific problem: agents working across long sessions silently drop criteria as context compresses. Specs live on disk. Agents read from disk. Drift is detectable, not silent.
Ten plugins, each a specialist persona covering one stage of the development lifecycle — together they're Wisp Plugins, the agent-side companions to the Wisp project-intelligence library. Lifecycle handoffs use typed artifacts where applicable. The plugins are composable: install only the personas your workflow needs.
The primary flow — one direction, no side-taps:
%%{init: {'theme': 'base', 'flowchart': {'curve': 'basis', 'nodeSpacing': 40, 'rankSpacing': 56}, 'themeVariables': {'fontFamily': 'Inter, ui-sans-serif, system-ui, sans-serif', 'fontSize': '14px', 'lineColor': '#94a3b8', 'edgeLabelBackground': '#ffffff'}}}%%
flowchart LR
classDef source fill:#eef2ff,stroke:#6366f1,stroke-width:1.5px,color:#1e1b4b,rx:10px,ry:10px,font-weight:600;
classDef engine fill:#f5f3ff,stroke:#8b5cf6,stroke-width:1.5px,color:#4c1d95,rx:10px,ry:10px;
classDef router fill:#fffbeb,stroke:#f59e0b,stroke-width:1.5px,color:#78350f,rx:10px,ry:10px,font-weight:600;
classDef output fill:#ecfdf5,stroke:#10b981,stroke-width:1.5px,color:#064e3b,rx:10px,ry:10px,font-weight:600;
we["<b>Weaver</b><br/>capture need"] -->|"requirement@1"| va["<b>Vanguard</b><br/>research"]
va -->|"research-report@1"| sc["<b>Scribe</b><br/>specify"]
mu["<b>Muse</b><br/>component spec"] -->|"spec@1"| na["<b>Navigator</b><br/>plan"]
sc -->|"spec@1"| na
na -->|"plan@1"| sm["<b>Smith</b><br/>implement"]
sm -->|"verified change"| co["<b>Courier</b><br/>ship"]
co -.->|"next need"| we
class we,mu source
class va,sc,sm engine
class na router
class co output
Verification — Sentinel and Ranger attach to the flow above but aren't stops in its sequence; the muted dashed boxes below are the same personas shown only as attachment points:
%%{init: {'theme': 'base', 'flowchart': {'curve': 'basis', 'nodeSpacing': 40, 'rankSpacing': 56}, 'themeVariables': {'fontFamily': 'Inter, ui-sans-serif, system-ui, sans-serif', 'fontSize': '14px', 'lineColor': '#94a3b8', 'edgeLabelBackground': '#ffffff'}}}%%
flowchart LR
classDef store fill:#f8fafc,stroke:#64748b,stroke-width:1.5px,color:#0f172a,rx:10px,ry:10px;
classDef router fill:#fffbeb,stroke:#f59e0b,stroke-width:1.5px,color:#78350f,rx:10px,ry:10px,font-weight:600;
sc2["Scribe"]:::store
sm2["Smith"]:::store
co2["Courier"]:::store
se{{"<b>Sentinel</b><br/>independent gate"}}
ra{{"<b>Ranger</b><br/>defect audit"}}
sc2 -.->|"spec@1"| se
sm2 -.->|"code + verdict@3"| se
sm2 -.->|"implementation-review@2"| sc2
se -.->|"verdict@3"| co2
sm2 -->|"live code"| ra
ra -.->|"finding-report@2"| sc2
class se,ra router
Pill-shaped nodes are cross-cutting checkpoints, not sequence stops. Solid arrows are direct handoffs; dashed arrows are verification side-channels. Ranger's input is the live codebase Smith just wrote, not a schema handoff — the one solid arrow in the second diagram.
Smith repairs scoped defect families before its exit gate. Structural families route through scribe:architect, the normal spec gates, Navigator plan amendment, and Smith implementation; after verification, Scribe refreshes the persisted architecture model.
Grouped by what each persona actually does — five bands across the lifecycle, plus one that stands outside it and maintains the rest:
| Category | Persona | Job | Output |
|---|---|---|---|
| Define | weaver |
Captures and structures scattered need into requirements | requirement@1 |
| Define | vanguard |
Goes first — researches prior art, risk, and patterns before anyone commits to a direction | research-report@1 |
| Design | scribe |
Drafts and gates the unambiguous, binding spec | spec@1 |
| Design | muse |
Drafts and gates component specs — props, variants, per-state behavior, accessibility | spec@1 |
| Build | navigator |
Decomposes the spec into an executable plan | plan@1 |
| Build | smith |
Implements, selects risk-matched tests, reviews defect families, and verifies criteria | implementation-review@2, verdict@3 |
| Verify | sentinel |
Cross-cutting gate — confirms any artifact meets its criteria before the next stage begins | verdict@3 |
| Verify | ranger |
Hunts reachable defects and semantic siblings in Rust, TypeScript, JavaScript, Python, and Go | finding-report@2 |
| Ship | courier |
Commits, opens PRs, responds to review, writes changelogs and release notes | release-artifact@2 |
| Meta | mason |
Scaffolds and audits plugins, designs schemas, and evaluates workflow behavior | harness-evaluation@2 |
This repository publishes the same lifecycle ecosystem to Claude Code and Codex without pretending their runtimes are interchangeable. The durable boundary is the versioned JSON artifact in shared/schemas/; a requirement, research report, spec, or plan can move between harnesses when it validates against the same schema.
| Concern | Claude Code | Codex | Source of truth |
|---|---|---|---|
| Shared ID, version, author, and artifact declarations | Uses plugins/<id>/plugin.json |
Native manifest is checked against those shared fields | plugins/<id>/plugin.json |
| Workflow prompts | Skills plus specialist agent prompts | Native Codex skills | Claude: plugins/<id>/; Codex: harnesses/codex/plugins/<id>/ |
| Durable handoffs | Versioned JSON artifacts | The same versioned JSON artifacts, materialized as regular files | shared/schemas/ |
| Installable marketplace | Root Claude marketplace files | Root discovery manifest plus generated bundle | .agents/plugins/marketplace.json and dist/codex/ |
plugins/ is the authored source for the existing Claude/AGY marketplace. harnesses/codex/plugins/<id>/ contains separately authored Codex manifests, skills, and optional resources. harnesses/codex/catalog.json controls marketplace order and materialized runtime files only. tools/build-codex-marketplace.py validates and packages those inputs into dist/codex, then emits .agents/plugins/marketplace.json at the repository root so Codex can discover the bundle from Git. Do not edit generated files by hand.
Claude agents are not renamed and shipped as Codex agents. Each Codex skill has its own harness-appropriate instructions and can complete alone. When agent teams are enabled, a skill selects a packaged Codex role card for independent, bounded work; the artifact contract and single-agent result remain the same. Codex role cards are portable plugin resources, not TOML configuration.
Add the repository marketplace from inside Claude Code, then install the plugins you want:
/plugin marketplace add orin-dx/agent-plugins
/plugin install weaver
/plugin install vanguard
/plugin install scribe
/plugin install navigator
/plugin install smith
Add muse for component specifications, sentinel and ranger for verification, courier for shipping work, and mason for plugin authoring:
/plugin install muse
/plugin install sentinel
/plugin install ranger
/plugin install courier
/plugin install mason
If you registered the previous marketplace identity, replace it before installing from Wisp Plugins:
/plugin marketplace remove orin-dx-agent-plugins
/plugin marketplace add orin-dx/agent-plugins
Codex discovers the generated root manifest at .agents/plugins/marketplace.json; it points at the generated dist/codex bundle. Register the repository once, then add only the plugins you need:
codex plugin marketplace add orin-dx/agent-plugins
codex plugin add weaver@wisp-plugins
codex plugin add vanguard@wisp-plugins
codex plugin add scribe@wisp-plugins
codex plugin add navigator@wisp-plugins
codex plugin add smith@wisp-pluginsOther available selectors are muse, sentinel, ranger, courier, and mason. Inspect marketplace availability with:
codex plugin listTo refresh the registered Git marketplace after a release:
codex plugin marketplace upgrade wisp-pluginsFor contributors using a local checkout, rebuild and verify the bundle before registering it:
python3 tools/build-codex-marketplace.py
python3 tools/build-codex-marketplace.py --check
codex plugin marketplace add .If you previously registered the marketplace as orin-dx-agent-plugins, migrate to the Wisp Plugins identity:
codex plugin marketplace remove orin-dx-agent-plugins
codex plugin marketplace add orin-dx/agent-plugins
codex plugin add <plugin>@wisp-pluginsEntire-managed adapters expose the same repository-history search skill to Codex, Claude, Cursor, Gemini, and OpenCode. Cursor and OpenCode also carry host-native lifecycle hooks. These tracked files contain commands and adapter code—not session transcripts, credentials, or machine-specific paths—and should be regenerated through Entire rather than edited by hand.
Install individual plugins via the native CLI (uses a Git URL):
agy plugin install https://github.com/orin-dx/agent-plugins.gitOr use agy-plugins-cli for an interactive TUI with update tracking:
npm install -g agy-plugins-cli
agy-plugin marketplace add orin-dx/agent-plugins
agy-plugin add weaver@wisp-plugins
agy-plugin add vanguard@wisp-plugins
agy-plugin add scribe@wisp-plugins
agy-plugin add muse@wisp-plugins
agy-plugin add navigator@wisp-plugins
agy-plugin add smith@wisp-plugins
agy-plugin add sentinel@wisp-plugins
agy-plugin add courier@wisp-plugins
agy-plugin add ranger@wisp-plugins
agy-plugin add mason@wisp-pluginsSix decisions shape how every plugin and agent in this repository is built. They are enforced by shared/constitution.md and explained in shared/agent-best-practices.md.
Schema-Driven Development — every handoff between agents is a typed JSON document.
- JSON Schema draft-2020-12 with
additionalProperties: false— a schema-invalid output halts the pipeline before any downstream agent acts on bad data - Schema versions are immutable — a breaking change creates
<name>@2.json, never mutates the existing file - Every schema includes a private
reasoningscratchpad field that is never forwarded downstream
EARS output contracts — hard constraints live exclusively in <output> sections, using WHEN / IF / WHILE / WHERE / THE SYSTEM SHALL.
- Encodes what the agent must produce, must not produce, or must do under a specific condition
- The prompt interior — how the agent searches, reasons, and decides — is intentionally unconstrained
- EARS is the fence; backstory and goal fill the interior with judgment
5-part agent structure — every Claude/AGY source agent body has exactly five sections; no role labels, no success-criteria checklists. Codex skills and role cards use native structures while preserving lifecycle intent.
<constitution>— ecosystem-wide invariants, byte-identical across every agent (copied verbatim, never authored per-agent)<backstory>— experiential perspective that shapes judgment in open situations (not a role label)<goal>— intent, not steps<judgment>— the specific failure mode that looks like success<output>— schema reference and EARS contracts
Cognitive mode separation — agents are dispatched by the cognitive mode they require, not their pipeline position.
- A scanner (exhaustive pattern matching, no filtering) and an adversary (default-to-skepticism, requires a concrete failing scenario) cannot share a mental mode — combining them produces an agent worse at both
- Model and effort tiers follow the same logic:
haiku / lowfor enumeration,sonnet / mediumfor analysis,opus / highfor binding judgment
Instruction economy — prompts preserve decisions, evidence, and consequences while removing filler, repeated rationale, and incidental process.
- One independently actionable rule per paragraph or list item
- Numbered procedures only when order affects correctness
- Reference files hold detail needed by one phase; runtime prompts load it on demand
Verification evidence — a check is useful only when its observation can falsify the claim.
- Select project-native mutation, property, fuzz, race, integration, or boundary checks from the changed risk
- Derive semantic sibling candidates from domain responsibility, state transitions, and architecture—not copied syntax alone
- Record generators, oracles, coverage gaps, pending checks, fresh external state, and boundary observations where relevant
See ARCHITECTURE.md §7 for the full authoring guide, and docs/pipeline-walkthrough.md for a concrete end-to-end example showing schemas at each stage.
Structured inter-plugin handoffs are typed. Schemas live in shared/schemas/ and use JSON Schema draft-2020-12 with additionalProperties: false. Schema versions are immutable — a breaking change requires a new file (e.g. requirement@2.json). Every schema includes a reasoning scratchpad field that is never forwarded downstream.
| Schema | Produced by | Consumed by |
|---|---|---|
requirement@1 |
weaver | vanguard, scribe |
research-report@1 |
vanguard | scribe |
spec@1 |
scribe, muse | navigator, sentinel |
verdict@1 |
muse | component-spec gate consumers |
plan@1 |
navigator | smith |
workspace-manifest@1 |
smith, ranger | their implementation and audit pipelines |
implementation-result@1 |
smith implementer | smith reviewer, scribe architect on escalation |
implementation-review@2 |
smith | smith exit-gate, scribe architect |
changeset@2 |
courier | courier release, sentinel |
verdict@3 |
scribe, smith, ranger, sentinel | gate consumers and humans |
candidate-assessment@1 |
ranger adversary | ranger report aggregation |
finding-report@2 |
ranger | scribe architect, humans |
field-survival-map@1 |
boundary-tracer | adversary |
mutation-report@2 |
smith mutator | reviewer, implementer |
evaluation-run@1 |
mason evaluation runner | mason evaluation adjudicator |
harness-evaluation@2 |
mason | release reviewers and longitudinal analysis |
arch-audit@1 |
scribe | architecture-gate callers and humans |
arch-model@1 |
scribe | scribe architecture checks and remediation |
release-artifact@2 |
courier | humans |
verdict@1 remains Muse's component-spec gate contract. Other current gates use verdict@3; immutable schema versions are not rewritten in place.
Shared guides live in shared/references/. Paths start with the decision they support; language is the filename only when evidence is language-specific. Runtime instructions load exact files, while maintainers use the index and authoring-only guides directly.
| Concern | Supports |
|---|---|
hazards/ |
Candidate defect signals and boundary tracing |
architecture/ |
Semantic models, structural causes, and remediation |
verification/ |
Evidence selection, project-native checks, review, and interface coverage |
delivery/ |
Changesets, commits, pull requests, and review operations |
authoring/ |
Reader-focused prose, comments, and diagrams |
evaluation/ |
Hidden-oracle behavioral comparison |
workspace/ |
Persisted artifact locations |
tooling/ |
Repository tool preferences |
See shared/references/README.md for the maintainer map.
agent-plugins/
├── marketplace.json ← Plugin registry
├── .claude-plugin/ ← Claude marketplace metadata
├── ARCHITECTURE.md ← System architecture
├── CONTRIBUTING.md ← Plugin authoring guide
├── harnesses/
│ └── codex/
│ ├── catalog.json ← Marketplace order and runtime dependencies
│ └── plugins/<id>/ ← Authored native Codex plugins and skills
├── shared/
│ ├── schemas/ ← Versioned inter-agent JSON schemas
│ ├── references/ ← Runtime and authoring guides, split by concern
│ └── agent-best-practices.md ← Authoring-time principles
├── plugins/
├── weaver/ ← Requirement capture
├── vanguard/ ← Research synthesis
├── scribe/ ← Specification drafting and gating
├── muse/ ← Component spec drafting and gating
├── navigator/ ← Implementation planning
├── smith/ ← Implementation and risk-matched verification
├── sentinel/ ← Verification gate
├── courier/ ← Ship tooling
├── ranger/ ← Cross-language reachable-defect audit
└── mason/ ← Plugin authoring and behavioral evaluation
├── .agents/
│ ├── plugins/ ← Generated Codex discovery manifest; never hand-edit
│ └── skills/entire-search/ ← Entire-managed Codex history search
├── .claude/skills/entire-search/ ← Entire-managed Claude history search
├── .cursor/ ← Entire-managed Cursor skill and hooks
├── .gemini/skills/entire-search/ ← Entire-managed Gemini history search
├── .opencode/ ← Entire-managed OpenCode skill and plugin
├── tools/
│ └── build-codex-marketplace.py ← Deterministic Codex bundle generator
└── dist/codex/ ← Generated Codex bundle; never hand-edit
MIT © Gabriel Castro (Orin DX)