Claude Code Plugin
Install Jaunt's Claude Code plugin for workspace-aware build skills, freshness context, and generated-file approval guards.
Version 1.2.6 supports version-2 TypeScript targets in the Claude Code plugin. It packages the same CLI-backed Python and TypeScript authoring loop as the Codex plugin, while keeping Claude's approval-style PreToolUse decision and first-build reviewer agent.
Install
uvx jaunt install-claude-plugin
# from this clone:
uv run jaunt install-claude-plugin --local --root .The direct GitHub flow is:
claude plugin marketplace add creatorrr/jaunt
claude plugin install jaunt@jaunt-pluginsOn a rerun, the installer refreshes the marketplace and calls
claude plugin update jaunt@jaunt-plugins for an existing installation.
Start a new Claude Code session after installation. For one-session development,
use claude --plugin-dir ./jaunt-claude-plugin.
The bundled command hooks use Bash when it is available. Their launchers always return success to Claude Code, so a host without Bash skips the hooks instead of reporting a failed lifecycle event.
Workspace routing
One root jaunt.toml can cover several packages and mixed flat/src
layouts. source_roots and test_roots accept literal paths and globs.
Each module uses its longest containing root and nearest owning
pyproject.toml. There is no one-config-per-package rule.
Preview consolidation of older nested configs with:
uv run jaunt migrate --merge-projectsAdd --apply only after the no-model plan reports no route, digest,
fingerprint, or artifact change.
Skills and reviewer
/jaunt:working-with-jaunt: spec rules, workspace routing, and freshness./jaunt:build: preview likely model calls, build, report actual cost, and run the Python or TypeScript native gates./jaunt:doctor: authentication, Node/npm/worker/compiler readiness, workspace health, current stale or unbuilt state, diagnostics, orphans, and duplicate Claude guards. It ignores nested Claude and Codex managed worktrees and reports the running Jaunt paths, editable source, and nearest lock requirement./jaunt:convert: explicit-only Python or TypeScript conversion, with characterization tests before the first model call.first-build-reviewer: read-only contract-silence review after a module's first successful build.
The plugin does not use fixed dollar estimates. It distinguishes likely model work before a build and reports the actual cost afterward.
For TypeScript, it also reads per-module candidate_outcomes. Final
conformance repair happens inside the advertised attempt budget, so the plugin
does not recommend an unchanged paid rerun after that budget is exhausted.
Deterministic worker heap failures point to [target.ts].worker_heap_mb and are
not replayed.
If status reports semantic-environment drift, the working skill runs the
model-free migration preview before recommending a build. It applies only a
plan made entirely of free-recompose actions with no requires_rebuild
modules, then runs the no-build battery check and Jaunt freshness gate.
After TypeScript test generation, the workflow reads runner.batteries for
per-battery attempts, retry reasons, and terminal rejections. A failed combined
overlay may still commit the compatible subset listed by
runner.partial_landing; the plugin preserves those generated files.
Freshness reasons
| reason | next action |
|---|---|
structural | implementation-model rebuild |
prose | semantic-gate judgment, then refreeze or rebuild |
fingerprint or re-stamp | deterministic re-stamp |
stub | deterministic .pyi re-emission when implementation inputs are unchanged |
Hooks
The shared SessionStart script reads payload cwd. When a parent jaunt.toml
owns the session, it reports only that active workspace and does not recurse
into nested examples. Otherwise it scans below the session directory without
crossing the active Git worktree. Nested Git repositories and
.claude/worktrees or .codex/worktrees checkouts are excluded. Each selected
workspace contributes a bounded freshness/orphan summary, including TypeScript
unbuilt, invalid, and diagnostic counts.
Because jaunt status imports discovered spec modules, enable SessionStart only
for workspaces whose Python code you trust.
The Claude guard resolves the nearest workspace before calling jaunt guard,
so custom generated directories use the correct config. It also asks for
approval before editing an existing provenance-headed generated .pyi and
points to the matching .py spec.
Both hooks fail open on malformed input, missing configuration, unavailable
tools, or timeouts. Their launchers force a success exit after invoking the
scripts, so optional environment failures do not become Claude Code hook errors.
/jaunt:doctor flags hand-written guards in Claude configuration once the
plugin hook is enabled.
There is no MCP server; Jaunt's JSON CLI is the machine interface.
Plugin commands prefer a compatible installed jaunt, use
uv run --no-sync jaunt in a uv project, and fall back to uvx jaunt for a
JavaScript-only workspace.
Next: PyPI Skills.