Agent Adapters
Agent adapters bridge coding-agent sessions and the dashboard. They write agent state files that the dashboard reads, and provide workflow skills that agents use.
The project ships two adapters:
adapters/claude-code/— Claude Code plugin adapter with hooks, skills, shared hook packages, and Claude subagent definitions.adapters/codex/— Codex plugin adapter with a.codex-pluginmanifest, plugin-local hooks, and Codex-flavored workflow skills.
Hooks ship inside the plugin bundles themselves — install.sh installs the binary only and does not write into ~/.codex. Register each adapter via its host’s plugin marketplace (see below).
How it works
Claude adapter
The Claude adapter lives in adapters/claude-code/ and consists of three components:
Hooks
Lifecycle hooks run automatically during Claude Code sessions. They write agent state to ~/.agent-dashboard/agents/<session-id>.json on every significant event.
| Hook | Trigger | Purpose |
|---|---|---|
agent-state-fast.js | Every tool call | Fast state update (minimal parsing) |
agent-state-reporter.js | State changes | Full state report with conversation data |
block-main-commit.js | Before commit | Prevents direct commits to main |
commit-lint.js | Before commit | Validates conventional commit format |
desktop-notify.js | State changes | Sends desktop notifications |
mermaid-extractor.js | After messages | Extracts mermaid diagram blocks for the diagram viewer |
codex-delegation-gate.js | Before Codex delegation | Enforces delegation rules for skills |
codex-write-gate.js | Before Codex writes | Ensures Codex uses --write flag in worktrees |
pr-detect.js | Before PR actions | Detects existing PRs for the branch |
pr-skill-detect.js | Every user prompt | Detects /agent-dashboard:pr invocations and pins agent state to pr |
pr-skill-gate.js | Before gh pr create | Blocks direct PR creation outside the pr skill |
test-gate.js | Before merge | Blocks merge if tests fail |
warn-destructive.js | Before destructive git ops | Warns about force pushes, resets, etc. |
Two more scripts ship alongside the hooks: claim-worktree.js, a utility skills run to claim a freshly created worktree for the current pane, and effort-config.js, a shared module that reads the [effort] settings for agent-state-fast.js.
Skills
Workflow skills are prompted routines that guide agents through specific tasks:
| Skill | Purpose |
|---|---|
feature | Feature development with TDD in isolated git worktrees |
fix | Bug fix with root cause analysis |
chore | Non-code changes (docs, config, CI) |
refactor | Code restructuring with test preservation |
investigate | Research and analysis without code changes |
implement | Execute an approved plan phase-by-phase with context isolation |
pr | PR review and iteration |
rca | Root cause analysis for incidents |
Skills for both adapters are generated from a single source tree, adapters/skills-src/, via make gen-skills — the per-adapter copies under adapters/claude-code/skills/ and adapters/codex/skills/ are build outputs and never hand-edited.
Agents
Pre-configured agent definitions for specialized tasks:
| Agent | Purpose |
|---|---|
build-error-resolver | Fixes build and test errors with minimal diffs |
code-reviewer | Reviews code for correctness, security, and conventions |
planner | Creates phased implementation plans |
security-reviewer | Detects security vulnerabilities and OWASP issues |
tdd-guide | Enforces RED-GREEN-REFACTOR test-driven development |
Codex adapter
The Codex adapter lives in adapters/codex/ and consists of three plugin-facing components:
.codex-plugin/plugin.json— Codex plugin manifest for skills, hooks, and marketplace metadata.hooks/plugin-hooks.json— plugin-local hook definitions that run the bundled hook scripts through${PLUGIN_ROOT}.skills/— Codex-flavored workflow skills that invoke agent-dashboard skills with$agent-dashboard:<skill>syntax.
The adapters/codex/hooks/ directory holds the same hook bundle the plugin ships to Codex when installed via codex plugin marketplace add bjornjee/agent-dashboard.
Codex-specific behavior:
- Workflow skills are available for Codex sessions. The dashboard skills use Codex-native commands where the harness differs, including
$agent-dashboard:implementand$agent-dashboard:rca. - Plan mode is signaled, not gated. Codex’s
/planslash command flips the hook payload’spermission_modeto"plan". The dashboard captures this as a field but doesn’t flip state toplan— Codex has noExitPlanModeequivalent, so there’s no discrete “plan ready” review moment. - Subagent state comes from Codex lifecycle hooks. Codex sessions use
spawn_agent/wait_agent; the dashboard tracks those sessions through the Codex hook events emitted by the plugin.
Agent state schema
Each agent’s state is stored as a JSON file conforming to the schema at schema/agent-state.schema.json. The dashboard reads these files to populate its views. Key fields include:
status— current agent state (running, waiting, blocked, completed, error)directory— working directorybranch— git branch nameconversation— path to the JSONL conversation logsubagents— nested agent references
Agent state model
The dashboard maps raw states to display groups, sorted by priority:
| Raw state | Display group | Priority | Description |
|---|---|---|---|
permission | BLOCKED | 1 | Waiting for tool permission |
plan | BLOCKED | 1 | Plan review pending |
question | WAITING | 2 | Agent asked a question |
error | WAITING | 2 | Agent encountered an error |
running | RUNNING | 3 | Actively executing |
idle_prompt | REVIEW | 4 | Idle, waiting for user input |
done | REVIEW | 4 | Session completed |
pr | PR | 5 | Pull request created |
merged | MERGED | 6 | Pull request merged |
Pinned states: pr and merged are sticky — once set, idle states (idle_prompt, done, question) restore back to the pinned value. Active states (running, permission) display through normally so the dashboard reflects live work.
Group headers: when a priority-1 or priority-2 group is homogeneous, the TUI renders a more specific label — PLAN or PERMISSION instead of BLOCKED, and QUESTION or ERROR instead of WAITING. Mixed groups keep the generic header.
Installing the Claude Code adapter
/marketplace add bjornjee/agent-dashboard
/plugin install agent-dashboard@agent-dashboard
/plugin enable agent-dashboard@agent-dashboard
Installing the Codex adapter
codex plugin marketplace add bjornjee/agent-dashboard
Then enable the plugin by appending the following to ~/.codex/config.toml and restarting Codex:
[plugins."agent-dashboard@agent-dashboard"]
enabled = true
From a repo checkout, make install-codex-adapter runs the marketplace add step and prints the same config snippet.
See Getting Started for the full installation walkthrough.