Skip to main content

Claude Code Plugin

The @praxis/claude-plugin bridges Claude Code to the PRAXIS Truth Kernel. It exposes slash commands that call the praxis CLI and display results directly in your Claude Code conversation.

The plugin is read-only display + dispatch. It never decides truth — the kernel does.

Installation

Prerequisites

  • Node.js 20+ or Bun 1.0+
  • Claude Code installed and authenticated
  • PRAXIS CLI installed (npm install -g @praxis/cli)

Install the Plugin

# From the PRAXIS monorepo
cd packages/claude-plugin
npm install
npm run build

Or install from npm (once published):

npm install -g @praxis/claude-plugin

Configure Claude Code

Add the plugin to your Claude Code configuration. In your project root, create or edit claude.json:

{
"plugins": {
"praxis": {
"path": "/path/to/@praxis/claude-plugin/dist/index.js",
"enabled": true
}
}
}

Or configure globally in ~/.claude/plugins.json:

{
"plugins": {
"praxis": {
"path": "$(npm root -g)/@praxis/claude-plugin/dist/index.js",
"enabled": true
}
}
}

Configure the Plugin

Create .praxis/plugin.json in your project root:

{
"cliPath": "praxis",
"defaultPlanPath": ".praxis/plan.yaml",
"autoVerifyOnStop": false,
"capturePreTool": true,
"capturePostTool": true,
"maxDiffBytes": 1048576,
"evidenceDir": ".praxis/runs",
"runIdPrefix": "plugin-run"
}

All fields have sensible defaults. You only need this file if you want to override them.

Slash Commands

/praxis:init

Initialize a PRAXIS workspace in the current project.

/praxis:init

Creates .praxis/ directory with plan.yaml, runs/, and reports/. Safe to run multiple times.

Calls: praxis init


/praxis:spec

Create or update a task specification.

/praxis:spec --description "Add input validation to the signup form"

Generates a PlanSpec with draft acceptance criteria. A human must approve the plan before verification.

Calls: praxis spec


/praxis:verify

Run the three verification gates against the current plan.

/praxis:verify

Collects evidence (git diff, command logs, test output) and runs EvidenceGate, ExecGate, and FinalGate. Displays the verdict with per-gate results in your Claude Code session.

ResultMeaning
PASS ✓All criteria met
HOLD ◐Evidence or execution gaps — needs repair
FAIL ✗Task not complete

Calls: praxis verify --task .praxis/plan.yaml --workspace .


/praxis:repair

Generate a repair packet targeting failed verification criteria.

/praxis:repair

Only meaningful after a HOLD or FAIL verdict. Produces a structured repair packet listing each failed criterion, the issue detected, and a hint for fixing.

Calls: praxis repair --last-run


/praxis:status

Show the current workspace status.

/praxis:status

Displays the current task, approval state, last verdict, and run history.

Calls: praxis status


/praxis:report

Generate a signed audit report.

/praxis:report

Writes a markdown report to .praxis/reports/<run-id>.md and displays a summary.

Calls: praxis report

Architecture

Claude Code Session
├─ /praxis:init → praxis init
├─ /praxis:spec → praxis spec
├─ /praxis:verify → praxis verify
├─ /praxis:repair → praxis repair
├─ /praxis:status → praxis status
└─ /praxis:report → praxis report


praxis CLI (child_process.execFile — no shell)


local Truth Kernel
(.praxis/plan.yaml + evidence → gates → verdict)


Formatted display in Claude Code
(colored badges, structured verdicts, repair packets)

Key design rules:

RuleWhy
Plugin is read-onlyThe kernel owns truth. The plugin only displays it.
Plugin never decides completionPASS/HOLD/FAIL comes from the kernel, not the plugin.
Plugin never modifies evidenceEvidence is captured independently.
execFile, not execArguments are passed as an array — no shell injection risk.

What's Captured

The plugin captures evidence before and after tool use:

EventWhat's captured
Pre-toolWorking tree state, current branch, recent commands
Post-toolGit diff, terminal output, test results, file changes

This evidence is written to .praxis/runs/<run-id>/evidence.jsonl and fed to the Truth Kernel during verification.

Implementation Status

ComponentStatus
Slash command handlers✅ Implemented
CLI execution bridge✅ Implemented
Result formatting✅ Implemented
Evidence capture (pre/post tool)✅ Implemented
npm package✅ Scaffolded
Claude Code plugin config✅ Designed
Published to npm🔜 Planned

The plugin source lives in packages/claude-plugin/ in the PRAXIS monorepo at github.com/ddawnlll/praxis.