Skip to content

feat(claude-code): Agentuity Coder plugin for Claude Code#893

Merged
rblalock merged 7 commits intomainfrom
claude-code-plugin
Feb 7, 2026
Merged

feat(claude-code): Agentuity Coder plugin for Claude Code#893
rblalock merged 7 commits intomainfrom
claude-code-plugin

Conversation

@rblalock
Copy link
Member

@rblalock rblalock commented Feb 6, 2026

Summary

Adds @agentuity/claude-code -- a Claude Code plugin that provides a team of 7 specialized AI agents with persistent memory via Agentuity Cloud.

  • 7 agents (Lead, Scout, Builder, Architect, Reviewer, Memory, Product) with role-specific model tiers (opus/sonnet/haiku)
  • 6 skills that auto-activate to inject Agentuity SDK expertise (backend, frontend, ops, cloud, command-runner, reasoning)
  • 6 slash commands including /agentuity-coder for orchestrated tasks and /agentuity-cadence for autonomous long-running sessions
  • Persistent memory across sessions using Agentuity Cloud KV + Vector storage
  • Cadence mode for autonomous multi-iteration task completion via a Stop hook loop

How the plugin works

Everything is defined in markdown. Agents are markdown files with YAML frontmatter specifying model, tools, and a system prompt. Skills are SKILL.md files that Claude Code loads into context when the conversation matches. Commands are markdown files that expand into prompts. No runtime code beyond the install script.

The Lead agent orchestrates -- given a task, it plans the approach and delegates to the right agents (Scout for research, Builder for code, Architect for complex autonomous work, Reviewer for QA, Memory for context, Product for requirements).

How the hooks work

Six shell scripts registered via hooks/hooks.json:

Hook Event Purpose
session-start.sh SessionStart Reads agentuity.json and agentuity auth whoami to provide project/org/user context to agents
session-end.sh SessionEnd Dual-path memory save: immediate KV write + spawns async claude -p for agentic processing
block-sensitive-commands.sh PreToolUse Intercepts Bash commands matching agentuity cloud secret*, apikey, auth token and blocks them (exit 2)
pre-compact.sh PreCompact Injects instructions to save memory before context window compaction
cadence-stop.sh Stop Checks transcript for <promise>DONE</promise>. If not found, blocks the stop, increments iteration, and re-injects the task prompt
stop-memory-save.sh Stop On first stop attempt, blocks and requests a memory save before allowing session end

Permissions

The install script (src/install.ts) writes to ~/.claude/settings.local.json:

  • Allow: Bash(agentuity cloud *), Bash(agentuity auth whoami *)
  • Deny: Bash(agentuity cloud secrets *), Bash(agentuity cloud secret *), Bash(agentuity cloud apikey *), Bash(agentuity auth token *)

Marketplace distribution

Includes .claude-plugin/marketplace.json at repo root so users can install via:

/plugin marketplace add agentuity/sdk
/plugin install agentuity-coder@agentuity

Plugin manifest passes claude plugin validate.

Test plan

  • Install via claude --plugin-dir ./packages/claude-code and verify agents load
  • Run /agentuity-coder and verify Lead delegates correctly
  • Run /agentuity-cadence and verify the Stop hook loop works
  • Verify session-start.sh outputs project context
  • Verify block-sensitive-commands.sh blocks agentuity cloud secret commands
  • Verify /agentuity-memory-save persists to KV/Vector
  • Run claude plugin validate ./packages/claude-code -- passes
  • Run claude plugin validate . (marketplace) -- passes

🤖 Generated with Claude Code

Summary by CodeRabbit

Release Notes

  • New Features

    • Added Agentuity Coder plugin for Claude Code—a specialized multi-agent system delivering code assistance with persistent memory via Agentuity Cloud.
    • Introduced autonomous task workflows with cadence-based looping and iteration management.
    • Added persistent memory system for cross-session context retention.
  • Documentation

    • Comprehensive agent, command, and skill reference materials for plugin usage and integration.

rblalock and others added 5 commits February 5, 2026 22:12
Port @agentuity/opencode multi-agent orchestration to Claude Code plugin system:
- 7 specialized agents: Lead, Scout, Builder, Architect, Reviewer, Memory, Product
- 6 auto-activated skills: backend, frontend, ops, cloud, command-runner, reasoning
- 2 slash commands: /coder (orchestrated tasks), /memory-save (persist context)
- 3 hooks: PreToolUse (block sensitive commands), SessionStart (gather context), SessionEnd
- Install script configures permissions in settings.local.json (allow cloud commands, deny secrets)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- PreCompact hook injects memory-save instructions before context compaction
- Stop hook blocks first stop to request memory save, passes through on subsequent stops
- Renamed allow-agentuity-cloud.sh to block-sensitive-commands.sh (CLI hooks can only block)
- Updated README with new hooks table and project structure
- Validated plugin works in Agentuity sandbox (claude-code:latest runtime)
- Tested cadence mode with lead-of-leads orchestration (3 parallel workstreams)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
… mode

SessionEnd hook now reads transcript_path from stdin, extracts last
assistant messages, and saves session metadata directly to KV. This
works in both interactive and headless (-p) mode. Stop hook updated
to skip in headless mode and use simpler direct KV command.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…cessing

- Stop hook: delegates to Memory agent via Task tool for full agentic
  memorialization (entity extraction, corrections, Vector upsert, reasoning)
- PreCompact hook: specific Memory agent delegation instructions
- SessionEnd hook: dual-path approach:
  Path 1: Immediate structured KV save with conversation extraction
  Path 2: Queue publish to coder-memory-processing for async agentic processing
- JSONL extraction: filter lines < 5KB to skip huge progress entries
- Use jq -n with --arg for safe JSON construction (no shell escaping issues)
- Created worker queue: coder-memory-processing (86400s TTL, 3 retries)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…ity- prefix

Implements the Cadence autonomous loop using a Ralph Wiggum-style Stop hook
that blocks exit and re-injects prompts until completion. Adds KV persistence
for cross-session recall, setup/cancel scripts, and renames all commands with
agentuity- prefix for namespace consistency.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@coderabbitai
Copy link

coderabbitai bot commented Feb 6, 2026

📝 Walkthrough

Walkthrough

Adds comprehensive plugin documentation, configuration, and setup for the Agentuity Claude Code plugin, including agent specifications, command definitions, lifecycle hooks with shell scripts, skill references, installation logic, and manifest files.

Changes

Cohort / File(s) Summary
Plugin Manifest & Configuration
.claude-plugin/marketplace.json, packages/claude-code/.claude-plugin/plugin.json, packages/claude-code/package.json, packages/claude-code/tsconfig.json, packages/claude-code/hooks/hooks.json, tsconfig.json
Establishes plugin metadata, package setup, build configuration, and lifecycle hook definitions for the Agentuity Claude Code integration.
Agent Documentation
packages/claude-code/agents/lead.md, packages/claude-code/agents/scout.md, packages/claude-code/agents/builder.md, packages/claude-code/agents/architect.md, packages/claude-code/agents/reviewer.md, packages/claude-code/agents/memory.md, packages/claude-code/agents/product.md
Defines seven specialized AI agent roles, responsibilities, workflows, delegation mechanics, memory interactions, and operational guidelines.
Command Documentation
packages/claude-code/commands/agentuity-coder.md, packages/claude-code/commands/agentuity-cadence.md, packages/claude-code/commands/agentuity-cadence-cancel.md, packages/claude-code/commands/agentuity-memory-save.md, packages/claude-code/commands/agentuity-memory-share.md, packages/claude-code/commands/agentuity-sandbox.md
Documents user-facing commands for orchestration, autonomous looping (Cadence), memory persistence, sharing, and sandbox management.
Lifecycle Hook Scripts
packages/claude-code/hooks/scripts/block-sensitive-commands.sh, packages/claude-code/hooks/scripts/cadence-stop.sh, packages/claude-code/hooks/scripts/pre-compact.sh, packages/claude-code/hooks/scripts/session-start.sh, packages/claude-code/hooks/scripts/session-end.sh, packages/claude-code/hooks/scripts/stop-memory-save.sh, packages/claude-code/hooks/scripts/setup-cadence.sh
Implements Bash hook scripts for security checks, Cadence state management, context compaction, session lifecycle, and memory checkpointing.
Skill Reference Documentation
packages/claude-code/skills/agentuity-backend/SKILL.md, packages/claude-code/skills/agentuity-cloud/SKILL.md, packages/claude-code/skills/agentuity-command-runner/SKILL.md, packages/claude-code/skills/agentuity-frontend/SKILL.md, packages/claude-code/skills/agentuity-ops/SKILL.md, packages/claude-code/skills/agentuity-reasoning/SKILL.md
Provides developer-facing references for backend SDK, cloud services, command execution patterns, frontend integration, operational tools, and reasoning frameworks.
Core Implementation & Documentation
packages/claude-code/src/install.ts, packages/claude-code/LICENSE, packages/claude-code/README.md, packages/claude-code/AGENTS.md
Introduces installation logic for permission configuration, Apache 2.0 license, comprehensive README with usage patterns, and agent architecture overview.
🚥 Pre-merge checks | ✅ 1
✅ Passed checks (1 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.


Comment @coderabbitai help to get the list of available commands and usage tips.

@github-actions
Copy link

github-actions bot commented Feb 6, 2026

📦 Canary Packages Published

version: 1.0.4-dae8d35

Packages
Package Version URL
@agentuity/schema 1.0.4-dae8d35 https://agentuity-sdk-objects.t3.storageapi.dev/npm/1.0.4-dae8d35/agentuity-schema-1.0.4-dae8d35.tgz
@agentuity/evals 1.0.4-dae8d35 https://agentuity-sdk-objects.t3.storageapi.dev/npm/1.0.4-dae8d35/agentuity-evals-1.0.4-dae8d35.tgz
@agentuity/opencode 1.0.4-dae8d35 https://agentuity-sdk-objects.t3.storageapi.dev/npm/1.0.4-dae8d35/agentuity-opencode-1.0.4-dae8d35.tgz
@agentuity/claude-code 1.0.4-dae8d35 https://agentuity-sdk-objects.t3.storageapi.dev/npm/1.0.4-dae8d35/agentuity-claude-code-1.0.4-dae8d35.tgz
@agentuity/server 1.0.4-dae8d35 https://agentuity-sdk-objects.t3.storageapi.dev/npm/1.0.4-dae8d35/agentuity-server-1.0.4-dae8d35.tgz
@agentuity/auth 1.0.4-dae8d35 https://agentuity-sdk-objects.t3.storageapi.dev/npm/1.0.4-dae8d35/agentuity-auth-1.0.4-dae8d35.tgz
@agentuity/frontend 1.0.4-dae8d35 https://agentuity-sdk-objects.t3.storageapi.dev/npm/1.0.4-dae8d35/agentuity-frontend-1.0.4-dae8d35.tgz
@agentuity/core 1.0.4-dae8d35 https://agentuity-sdk-objects.t3.storageapi.dev/npm/1.0.4-dae8d35/agentuity-core-1.0.4-dae8d35.tgz
@agentuity/workbench 1.0.4-dae8d35 https://agentuity-sdk-objects.t3.storageapi.dev/npm/1.0.4-dae8d35/agentuity-workbench-1.0.4-dae8d35.tgz
@agentuity/postgres 1.0.4-dae8d35 https://agentuity-sdk-objects.t3.storageapi.dev/npm/1.0.4-dae8d35/agentuity-postgres-1.0.4-dae8d35.tgz
@agentuity/cli 1.0.4-dae8d35 https://agentuity-sdk-objects.t3.storageapi.dev/npm/1.0.4-dae8d35/agentuity-cli-1.0.4-dae8d35.tgz
@agentuity/runtime 1.0.4-dae8d35 https://agentuity-sdk-objects.t3.storageapi.dev/npm/1.0.4-dae8d35/agentuity-runtime-1.0.4-dae8d35.tgz
@agentuity/drizzle 1.0.4-dae8d35 https://agentuity-sdk-objects.t3.storageapi.dev/npm/1.0.4-dae8d35/agentuity-drizzle-1.0.4-dae8d35.tgz
@agentuity/react 1.0.4-dae8d35 https://agentuity-sdk-objects.t3.storageapi.dev/npm/1.0.4-dae8d35/agentuity-react-1.0.4-dae8d35.tgz
Install

Add to your package.json:

{
  "dependencies": {
    "@agentuity/schema": "https://agentuity-sdk-objects.t3.storageapi.dev/npm/1.0.4-dae8d35/agentuity-schema-1.0.4-dae8d35.tgz",
    "@agentuity/evals": "https://agentuity-sdk-objects.t3.storageapi.dev/npm/1.0.4-dae8d35/agentuity-evals-1.0.4-dae8d35.tgz",
    "@agentuity/opencode": "https://agentuity-sdk-objects.t3.storageapi.dev/npm/1.0.4-dae8d35/agentuity-opencode-1.0.4-dae8d35.tgz",
    "@agentuity/claude-code": "https://agentuity-sdk-objects.t3.storageapi.dev/npm/1.0.4-dae8d35/agentuity-claude-code-1.0.4-dae8d35.tgz",
    "@agentuity/server": "https://agentuity-sdk-objects.t3.storageapi.dev/npm/1.0.4-dae8d35/agentuity-server-1.0.4-dae8d35.tgz",
    "@agentuity/auth": "https://agentuity-sdk-objects.t3.storageapi.dev/npm/1.0.4-dae8d35/agentuity-auth-1.0.4-dae8d35.tgz",
    "@agentuity/frontend": "https://agentuity-sdk-objects.t3.storageapi.dev/npm/1.0.4-dae8d35/agentuity-frontend-1.0.4-dae8d35.tgz",
    "@agentuity/core": "https://agentuity-sdk-objects.t3.storageapi.dev/npm/1.0.4-dae8d35/agentuity-core-1.0.4-dae8d35.tgz",
    "@agentuity/workbench": "https://agentuity-sdk-objects.t3.storageapi.dev/npm/1.0.4-dae8d35/agentuity-workbench-1.0.4-dae8d35.tgz",
    "@agentuity/postgres": "https://agentuity-sdk-objects.t3.storageapi.dev/npm/1.0.4-dae8d35/agentuity-postgres-1.0.4-dae8d35.tgz",
    "@agentuity/cli": "https://agentuity-sdk-objects.t3.storageapi.dev/npm/1.0.4-dae8d35/agentuity-cli-1.0.4-dae8d35.tgz",
    "@agentuity/runtime": "https://agentuity-sdk-objects.t3.storageapi.dev/npm/1.0.4-dae8d35/agentuity-runtime-1.0.4-dae8d35.tgz",
    "@agentuity/drizzle": "https://agentuity-sdk-objects.t3.storageapi.dev/npm/1.0.4-dae8d35/agentuity-drizzle-1.0.4-dae8d35.tgz",
    "@agentuity/react": "https://agentuity-sdk-objects.t3.storageapi.dev/npm/1.0.4-dae8d35/agentuity-react-1.0.4-dae8d35.tgz"
  }
}

Or install directly:

bun add https://agentuity-sdk-objects.t3.storageapi.dev/npm/1.0.4-dae8d35/agentuity-schema-1.0.4-dae8d35.tgz
bun add https://agentuity-sdk-objects.t3.storageapi.dev/npm/1.0.4-dae8d35/agentuity-evals-1.0.4-dae8d35.tgz
bun add https://agentuity-sdk-objects.t3.storageapi.dev/npm/1.0.4-dae8d35/agentuity-opencode-1.0.4-dae8d35.tgz
bun add https://agentuity-sdk-objects.t3.storageapi.dev/npm/1.0.4-dae8d35/agentuity-claude-code-1.0.4-dae8d35.tgz
bun add https://agentuity-sdk-objects.t3.storageapi.dev/npm/1.0.4-dae8d35/agentuity-server-1.0.4-dae8d35.tgz
bun add https://agentuity-sdk-objects.t3.storageapi.dev/npm/1.0.4-dae8d35/agentuity-auth-1.0.4-dae8d35.tgz
bun add https://agentuity-sdk-objects.t3.storageapi.dev/npm/1.0.4-dae8d35/agentuity-frontend-1.0.4-dae8d35.tgz
bun add https://agentuity-sdk-objects.t3.storageapi.dev/npm/1.0.4-dae8d35/agentuity-core-1.0.4-dae8d35.tgz
bun add https://agentuity-sdk-objects.t3.storageapi.dev/npm/1.0.4-dae8d35/agentuity-workbench-1.0.4-dae8d35.tgz
bun add https://agentuity-sdk-objects.t3.storageapi.dev/npm/1.0.4-dae8d35/agentuity-postgres-1.0.4-dae8d35.tgz
bun add https://agentuity-sdk-objects.t3.storageapi.dev/npm/1.0.4-dae8d35/agentuity-cli-1.0.4-dae8d35.tgz
bun add https://agentuity-sdk-objects.t3.storageapi.dev/npm/1.0.4-dae8d35/agentuity-runtime-1.0.4-dae8d35.tgz
bun add https://agentuity-sdk-objects.t3.storageapi.dev/npm/1.0.4-dae8d35/agentuity-drizzle-1.0.4-dae8d35.tgz
bun add https://agentuity-sdk-objects.t3.storageapi.dev/npm/1.0.4-dae8d35/agentuity-react-1.0.4-dae8d35.tgz

@rblalock rblalock changed the title Claude code plugin feat(claude-code): Agentuity Coder plugin for Claude Code Feb 7, 2026
@rblalock rblalock marked this pull request as ready for review February 7, 2026 02:05
@rblalock rblalock enabled auto-merge (squash) February 7, 2026 02:05
@rblalock rblalock requested a review from jhaynie February 7, 2026 02:05
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 15

🤖 Fix all issues with AI agents
In `@packages/claude-code/agents/lead.md`:
- Around line 186-195: Several fenced code blocks in the "Requirements Contract
(Lightweight):" section (the block starting with "## Requirements Contract:
[feature]" and other blocks around lines referenced: 253-267, 274-295, 393-421,
514-516, 638-640) are missing language identifiers and trigger markdownlint
MD040; update each triple-backtick fence to include an appropriate language tag
(e.g., ```markdown for markdown examples or ```text for plain text) so every
fenced block has a language identifier while preserving the existing content and
formatting.
- Around line 425-433: Add blank lines before and after the Markdown tables to
satisfy markdownlint MD058: specifically, ensure the table under the "###
Feature Implementation" heading and the subsequent two tables each have an empty
line above and below them. Edit the Markdown surrounding those tables so there's
a single blank line separating the preceding paragraph/heading and the following
paragraph, preserving table content and alignment; no other content changes are
needed.

In `@packages/claude-code/agents/memory.md`:
- Around line 611-644: The markdown contains unlabeled fenced code blocks;
update the first block that starts with "Session ID: {sessionId}" to use a
language identifier (e.g., change ``` to ```markdown) and update the subsequent
block that starts with "pattern:{name}" (the patterns/list block) to use a
language identifier (e.g., ```text); ensure all remaining unlabeled fenced
blocks in the same document (including the other patterns block) are similarly
labeled so MD040 warnings are resolved and readability improves.

In `@packages/claude-code/commands/agentuity-cadence-cancel.md`:
- Line 4: Update the allowed-tools entry that uses the inconsistent pattern by
removing the trailing ":*" from the test command; specifically edit the line
containing Bash(test -f .claude/agentuity-cadence.local.md:*) in the
allowed-tools array and change it to Bash(test -f
.claude/agentuity-cadence.local.md) so it matches the other entries (Bash(rm
.claude/agentuity-cadence.local.md) and
Read(.claude/agentuity-cadence.local.md)).

In `@packages/claude-code/commands/agentuity-cadence.md`:
- Around line 10-12: Add a language specifier to the fenced code block
containing the command "${CLAUDE_PLUGIN_ROOT}/hooks/scripts/setup-cadence.sh"
$ARGUMENTS in packages/claude-code/commands/agentuity-cadence.md by changing the
opening fence to include "bash" (i.e., use ```bash) so the block is properly
highlighted and linting-compliant; keep the block content unchanged except for
the fence marker.

In `@packages/claude-code/commands/agentuity-memory-share.md`:
- Around line 12-16: The fenced code block containing the command `agentuity
cloud stream create --content "<markdown content>" --ttl <duration> --json` is
missing a language specifier; update the block to use ```bash so the snippet is
highlighted as Bash (i.e., change the opening fence to ```bash for the
`agentuity cloud stream create ...` code block).

In `@packages/claude-code/hooks/scripts/block-sensitive-commands.sh`:
- Around line 26-30: The case statement handling blocked commands has a
redundant pattern: the pattern *"agentuity cloud secret"* already matches
"agentuity cloud secrets", so the second alternative *"agentuity cloud secrets"*
is unreachable; remove the duplicate alternative from the case arm that checks
COMMAND (the case block using COMMAND and the arm matching *"agentuity cloud
secret"*|*"agentuity cloud secrets"*) so only a single pattern like *"agentuity
cloud secret"* remains to simplify the logic and avoid dead code.

In `@packages/claude-code/hooks/scripts/pre-compact.sh`:
- Around line 10-23: Remove the unused INPUT assignment and stop interpolating
GIT_BRANCH directly into the heredoc JSON; instead preserve the git branch
detection (GIT_BRANCH=$(git branch --show-current 2>/dev/null || echo
"unknown")) but construct the JSON via jq to safely escape the branch name and
any special characters (use jq -n --arg GIT_BRANCH "$GIT_BRANCH" and pass the
long prompt as another argument or string literal), then emit the jq-produced
JSON to stdout; keep the agentuity availability check and exit behavior intact
and replace the cat <<EOF heredoc block with the jq-based JSON construction that
injects $GIT_BRANCH safely.

In `@packages/claude-code/hooks/scripts/session-end.sh`:
- Around line 89-110: The SESSION_RECORD creation uses jq without checking
availability (SESSION_RECORD=$(jq -n ...)), so wrap that jq invocation in the
same guard pattern used earlier (if command -v jq >/dev/null 2>&1; then ... fi)
or alternatively make jq a documented runtime dependency; ensure SESSION_RECORD
is only constructed when jq is present and keep the subsequent agentuity cloud
kv set call guarded by the same condition (or by testing -n "$SESSION_RECORD")
to preserve the "PATH 1 always works" guarantee and avoid silent failures.

In `@packages/claude-code/hooks/scripts/session-start.sh`:
- Around line 18-66: Remove the unused CONTEXT variable and stop interpolating
shell variables directly into JSON; instead build the output with jq -n using
--arg/--argjson so values like PROJECT_ID, ORG_ID, GIT_BRANCH, GIT_REMOTE are
properly escaped and CLI_AVAILABLE is emitted as a boolean; pass USER_INFO into
jq with --argjson (falling back to null when empty) and include
AGENTUITY_JSON_PATH (or empty) via --arg so the final JSON is produced safely by
jq rather than by a here-doc in session-start.sh.

In `@packages/claude-code/hooks/scripts/stop-memory-save.sh`:
- Line 10: Remove the unused stdin capture by deleting the assignment to INPUT
in stop-memory-save.sh and instead explicitly drain and discard stdin; replace
the INPUT=$(cat) line with a command that consumes standard input and discards
it (for example, a simple cat-to-dev-null or a read loop that reads and ignores
lines) so the shellcheck warning is resolved and no unused variable remains.
- Around line 54-67: Escape the branch name before embedding in the JSON
payload: compute a JSON-escaped variable (e.g., GIT_BRANCH_ESCAPED) from
GIT_BRANCH using a reliable JSON-quoting method (jq -R --slurp or
python/json.dumps) and then insert that escaped value into the here-doc payload
instead of raw ${GIT_BRANCH}; update the cat <<EOF block to reference
GIT_BRANCH_ESCAPED so quotes/backslashes in the branch name cannot break the
JSON.

In `@packages/claude-code/README.md`:
- Around line 26-30: Markdown fenced code blocks in README.md are missing
language identifiers; update the triple-backtick fences for the blocks
containing the CLI lines (e.g. the blocks starting with "/agentuity-coder
implement dark mode...", "/agentuity-cadence build the auth system...", and the
directory tree beginning "packages/claude-code/") to include a language token
like "text" (i.e. change ``` to ```text), and apply the same change to the other
similar fenced blocks flagged (the other occurrences of CLI lists and tree
blocks).

In `@packages/claude-code/skills/agentuity-backend/SKILL.md`:
- Around line 438-454: The markdown code fence in SKILL.md under the "Project
Structure" section is missing a language identifier (causing markdownlint
MD040); update the fenced block that starts with the tree diagram (the triple
backticks before "├── agentuity.json") to include a language tag such as "text"
(i.e., change ``` to ```text) so the block becomes a proper fenced code block;
ensure you modify the fenced block surrounding the project tree in SKILL.md so
the linter no longer reports MD040.

In `@packages/claude-code/skills/agentuity-frontend/SKILL.md`:
- Line 48: The phrase "full stack project" in the NOTE line should use a hyphen
as a compound adjective; update the text in SKILL.md (the NOTE: line containing
`baseUrl="http://localhost:3000"`) to read "full-stack project" instead of "full
stack project".
🧹 Nitpick comments (5)
packages/claude-code/commands/agentuity-sandbox.md (1)

10-23: Add language identifier to fenced code block.

The code block lacks a language specifier. Adding bash or shell improves syntax highlighting and satisfies markdownlint MD040.

📝 Suggested fix
-```
+```bash
 agentuity cloud sandbox runtime list --json                            # List available runtimes
packages/claude-code/hooks/scripts/cadence-stop.sh (1)

1-19: Consider adding strict mode for robustness.

Unlike setup-cadence.sh, this script doesn't use set -euo pipefail. While this may be intentional to allow graceful degradation (e.g., missing jq, perl, or files), it could mask unexpected errors. Consider adding at least set -u to catch undefined variable usage.

💡 Suggested addition
 #!/usr/bin/env bash
 # Cadence Stop Hook: Keeps the Cadence loop running until completion.
+#
+# Note: We intentionally don't use `set -e` to allow graceful fallback
+# when optional tools (jq, perl) are missing.
+set -u
packages/claude-code/src/install.ts (1)

8-9: Use single quotes per coding guidelines.

The coding guidelines specify using Prettier with single quotes. The imports and string literals throughout this file use double quotes.

💡 Suggested fix for imports (apply similar changes throughout)
-import { join } from "node:path";
-import { homedir } from "node:os";
+import { join } from 'node:path';
+import { homedir } from 'node:os';

As per coding guidelines: "Use Prettier for code formatting with tabs (width 3), single quotes, and semicolons"

packages/claude-code/AGENTS.md (1)

54-61: Add language specifier to fenced code block.

The delegation flow diagram uses a code fence without a language specifier. Adding text or plaintext satisfies linting and improves rendering consistency.

💡 Suggested fix
-```
+```text
 User Request → Lead (classify, plan)
   → Scout (explore codebase)
   → Builder/Architect (implement)
   → Reviewer (verify)
   → Memory (store context)
   → Product (validate requirements)
</details>

</blockquote></details>
<details>
<summary>packages/claude-code/package.json (1)</summary><blockquote>

`40-44`: **Consider pinning type package versions for reproducible builds.**

Using `"latest"` for `@types/bun` and `bun-types` may cause unexpected build failures when new versions introduce breaking type changes. Pin to specific versions instead.

<details>
<summary>💡 Suggested fix</summary>

```diff
 	"devDependencies": {
-		"@types/bun": "latest",
-		"bun-types": "latest",
+		"@types/bun": "^1.3.8",
+		"bun-types": "^1.3.8",
 		"typescript": "^5.9.0"
 	},
📜 Review details

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 67a3be1 and dae8d35.

📒 Files selected for processing (36)
  • .claude-plugin/marketplace.json
  • packages/claude-code/.claude-plugin/plugin.json
  • packages/claude-code/AGENTS.md
  • packages/claude-code/LICENSE
  • packages/claude-code/README.md
  • packages/claude-code/agents/architect.md
  • packages/claude-code/agents/builder.md
  • packages/claude-code/agents/lead.md
  • packages/claude-code/agents/memory.md
  • packages/claude-code/agents/product.md
  • packages/claude-code/agents/reviewer.md
  • packages/claude-code/agents/scout.md
  • packages/claude-code/commands/agentuity-cadence-cancel.md
  • packages/claude-code/commands/agentuity-cadence.md
  • packages/claude-code/commands/agentuity-coder.md
  • packages/claude-code/commands/agentuity-memory-save.md
  • packages/claude-code/commands/agentuity-memory-share.md
  • packages/claude-code/commands/agentuity-sandbox.md
  • packages/claude-code/hooks/hooks.json
  • packages/claude-code/hooks/scripts/block-sensitive-commands.sh
  • packages/claude-code/hooks/scripts/cadence-stop.sh
  • packages/claude-code/hooks/scripts/pre-compact.sh
  • packages/claude-code/hooks/scripts/session-end.sh
  • packages/claude-code/hooks/scripts/session-start.sh
  • packages/claude-code/hooks/scripts/setup-cadence.sh
  • packages/claude-code/hooks/scripts/stop-memory-save.sh
  • packages/claude-code/package.json
  • packages/claude-code/skills/agentuity-backend/SKILL.md
  • packages/claude-code/skills/agentuity-cloud/SKILL.md
  • packages/claude-code/skills/agentuity-command-runner/SKILL.md
  • packages/claude-code/skills/agentuity-frontend/SKILL.md
  • packages/claude-code/skills/agentuity-ops/SKILL.md
  • packages/claude-code/skills/agentuity-reasoning/SKILL.md
  • packages/claude-code/src/install.ts
  • packages/claude-code/tsconfig.json
  • tsconfig.json
🧰 Additional context used
📓 Path-based instructions (3)
**/*.{ts,tsx,js,jsx,json,md}

📄 CodeRabbit inference engine (AGENTS.md)

Use Prettier for code formatting with tabs (width 3), single quotes, and semicolons

Files:

  • packages/claude-code/commands/agentuity-sandbox.md
  • packages/claude-code/skills/agentuity-cloud/SKILL.md
  • packages/claude-code/commands/agentuity-coder.md
  • packages/claude-code/agents/scout.md
  • packages/claude-code/commands/agentuity-memory-share.md
  • packages/claude-code/commands/agentuity-cadence.md
  • packages/claude-code/hooks/hooks.json
  • packages/claude-code/tsconfig.json
  • packages/claude-code/AGENTS.md
  • packages/claude-code/agents/memory.md
  • packages/claude-code/agents/builder.md
  • packages/claude-code/commands/agentuity-cadence-cancel.md
  • packages/claude-code/skills/agentuity-command-runner/SKILL.md
  • packages/claude-code/agents/architect.md
  • packages/claude-code/skills/agentuity-reasoning/SKILL.md
  • tsconfig.json
  • packages/claude-code/skills/agentuity-ops/SKILL.md
  • packages/claude-code/agents/product.md
  • packages/claude-code/skills/agentuity-frontend/SKILL.md
  • packages/claude-code/package.json
  • packages/claude-code/agents/reviewer.md
  • packages/claude-code/README.md
  • packages/claude-code/commands/agentuity-memory-save.md
  • packages/claude-code/agents/lead.md
  • packages/claude-code/skills/agentuity-backend/SKILL.md
  • packages/claude-code/src/install.ts
**/*.{ts,tsx}

📄 CodeRabbit inference engine (AGENTS.md)

Use TypeScript in strict mode with ESNext target and bundler moduleResolution

Files:

  • packages/claude-code/src/install.ts
packages/**/*.{ts,tsx}

📄 CodeRabbit inference engine (AGENTS.md)

Use StructuredError from @agentuity/core for error handling

Files:

  • packages/claude-code/src/install.ts
🧠 Learnings (2)
📚 Learning: 2026-01-09T20:33:30.464Z
Learnt from: jhaynie
Repo: agentuity/sdk PR: 515
File: apps/testing/nextjs-app/agentuity/tsconfig.json:0-0
Timestamp: 2026-01-09T20:33:30.464Z
Learning: In TypeScript tsconfig.json files used by Agentuity projects, when a generated type file (e.g. .agentuity/.agentuity_types.ts) must be included while its parent directory is excluded, use include with an explicit file path (or a precise glob) instead of files. The files array requires files to exist at parse time and will fail for generated files; include with a suitable pattern allows the file to be picked up once generated without failing if it doesn't exist yet.

Applied to files:

  • packages/claude-code/tsconfig.json
  • tsconfig.json
📚 Learning: 2025-12-21T00:31:41.858Z
Learnt from: jhaynie
Repo: agentuity/sdk PR: 274
File: packages/cli/src/cmd/build/vite/server-bundler.ts:12-41
Timestamp: 2025-12-21T00:31:41.858Z
Learning: In Bun runtime, BuildMessage and ResolveMessage are global types and are not exported from the bun module. Do not import { BuildMessage } from 'bun' or similar; these types are available globally and should be used without import. This applies to all TypeScript files that target the Bun runtime within the repository.

Applied to files:

  • packages/claude-code/src/install.ts
🪛 LanguageTool
packages/claude-code/agents/scout.md

[style] ~69-~69: This phrase is redundant. Consider writing “consulted”.
Context: ...run with its output summary - Every URL consulted with key findings - Patterns observed across...

(CONSULT_WITH)

packages/claude-code/agents/memory.md

[style] ~287-~287: As an alternative to the over-used intensifier ‘very’, consider replacing this phrase.
Context: ..." (still valid) | | Age | Is the memory very old (>90 days)? | Note as "old" (use judgme...

(EN_WEAK_ADJECTIVE)


[uncategorized] ~440-~440: Did you mean the formatting language “Markdown” (= proper noun)?
Context: ...t the full session record as a readable markdown document for --document. Include ALL ...

(MARKDOWN_NNP)


[uncategorized] ~486-~486: Did you mean the formatting language “Markdown” (= proper noun)?
Context: ...e complete session record as a readable markdown document. WRONG: `--document "Implemen...

(MARKDOWN_NNP)


[uncategorized] ~489-~489: Did you mean the formatting language “Markdown” (= proper noun)?
Context: ...auth feature. Tests pass."` RIGHT: Full markdown document with title, project, summary, ...

(MARKDOWN_NNP)

packages/claude-code/skills/agentuity-reasoning/SKILL.md

[style] ~81-~81: As an alternative to the over-used intensifier ‘very’, consider replacing this phrase.
Context: ..." (still valid) | | Age | Is the memory very old (>90 days)? | Note as "old" (use judgme...

(EN_WEAK_ADJECTIVE)

packages/claude-code/skills/agentuity-frontend/SKILL.md

[grammar] ~48-~48: Use a hyphen to join words.
Context: ...eeded if using outside an Agentuity full stack project. ### useAPI Hook Call ag...

(QB_NEW_EN_HYPHEN)

packages/claude-code/agents/reviewer.md

[style] ~280-~280: Consider using a different verb for a more formal wording.
Context: ...ontradictory - Scope creep is needed to fix the issue properly - Trade-offs require...

(FIX_RESOLVE)


[style] ~293-~293: Consider using “formerly” to strengthen your wording.
Context: ... area - Project conventions established earlier - Known issues or workarounds documente...

(PREVIOUSLY_FORMERLY)

packages/claude-code/agents/lead.md

[style] ~154-~154: This phrase is redundant. Consider writing “evolved”.
Context: ... PRDs, past decisions, and how features evolved over time. Product vs Scout vs Lead: - **Sco...

(EVOLVE_OVER_TIME)


[style] ~318-~318: ‘make a plan’ might be wordy. Consider a shorter alternative.
Context: ...rack my progress" / "track progress" - "make a plan" / "create a plan" / "plan this out" - ...

(EN_WORDINESS_PREMIUM_MAKE_A_PLAN)


[style] ~573-~573: ‘make a decision’ might be wordy. Consider a shorter alternative.
Context: ...cting constraints | Document tradeoffs, make a decision, explain reasoning | | Subagent fails |...

(EN_WORDINESS_PREMIUM_MAKE_A_DECISION)


[style] ~602-~602: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...te in KV, checkpoints with Memory. 3. You signal completion explicitly. Output ...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~603-~603: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...NE` when truly finished. 4. You recover from failures. If stuck, try ...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~604-~604: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...fferent approach before giving up. 5. You respect control signals. Check loop s...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~611-~611: Consider a different adjective to strengthen your wording.
Context: ... - Complex multi-file implementations - Deep analysis before each change - Checkpoin...

(DEEP_PROFOUND)

🪛 markdownlint-cli2 (0.20.0)
packages/claude-code/commands/agentuity-sandbox.md

[warning] 10-10: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

packages/claude-code/commands/agentuity-memory-share.md

[warning] 14-14: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

packages/claude-code/commands/agentuity-cadence.md

[warning] 10-10: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

packages/claude-code/AGENTS.md

[warning] 54-54: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

packages/claude-code/agents/memory.md

[warning] 611-611: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


[warning] 752-752: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

packages/claude-code/README.md

[warning] 26-26: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


[warning] 87-87: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


[warning] 150-150: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

packages/claude-code/agents/lead.md

[warning] 188-188: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


[warning] 253-253: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


[warning] 259-259: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


[warning] 265-265: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


[warning] 274-274: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


[warning] 393-393: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


[warning] 426-426: Tables should be surrounded by blank lines

(MD058, blanks-around-tables)


[warning] 435-435: Tables should be surrounded by blank lines

(MD058, blanks-around-tables)


[warning] 443-443: Tables should be surrounded by blank lines

(MD058, blanks-around-tables)


[warning] 514-514: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


[warning] 638-638: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

packages/claude-code/skills/agentuity-backend/SKILL.md

[warning] 442-442: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

🪛 Shellcheck (0.11.0)
packages/claude-code/hooks/scripts/pre-compact.sh

[warning] 10-10: INPUT appears unused. Verify use (or export if used externally).

(SC2034)

packages/claude-code/hooks/scripts/block-sensitive-commands.sh

[warning] 27-27: This pattern always overrides a later one on line 27.

(SC2221)


[warning] 27-27: This pattern never matches because of a previous pattern on line 27.

(SC2222)

packages/claude-code/hooks/scripts/session-start.sh

[warning] 19-19: CONTEXT appears unused. Verify use (or export if used externally).

(SC2034)

packages/claude-code/hooks/scripts/stop-memory-save.sh

[warning] 10-10: INPUT appears unused. Verify use (or export if used externally).

(SC2034)

🔇 Additional comments (28)
packages/claude-code/tsconfig.json (1)

1-10: LGTM!

The TypeScript configuration is well-structured for a composite project reference setup. The use of include with a glob pattern aligns with best practices for handling potentially generated files.

tsconfig.json (1)

12-13: LGTM!

The project reference for packages/claude-code is correctly added, enabling composite builds for the new plugin package.

packages/claude-code/LICENSE (1)

1-13: LGTM!

Standard Apache License 2.0 boilerplate, consistent with the license declarations in the plugin manifests.

.claude-plugin/marketplace.json (1)

1-27: LGTM!

The marketplace descriptor is well-structured with consistent metadata. The plugin entry correctly references the source path and includes appropriate categorization with keywords.

packages/claude-code/.claude-plugin/plugin.json (1)

1-13: LGTM!

The plugin manifest is complete and consistent with the marketplace descriptor. Metadata fields are well-defined.

packages/claude-code/skills/agentuity-reasoning/SKILL.md (1)

1-170: LGTM!

Comprehensive reasoning framework documentation with clear categorization of reasoning types, validity checking criteria, and structured output formats. The JSON examples are well-formatted and provide good reference material for the Memory agent.

packages/claude-code/skills/agentuity-ops/SKILL.md (1)

1-207: Solid, comprehensive ops reference.
Clear guardrails, command examples, and pitfalls coverage read well.

packages/claude-code/agents/builder.md (1)

1-398: Well-structured role spec and workflow guidance.
The operational steps and anti-patterns are clear and actionable.

packages/claude-code/skills/agentuity-command-runner/SKILL.md (1)

1-127: Looks good — clear runtime detection and parsing guidance.

packages/claude-code/skills/agentuity-cloud/SKILL.md (1)

1-108: LGTM!

This is a well-structured reference document for the Agentuity Cloud skill. The SDK package overview, cloud services table, routing guide, and multi-domain patterns provide clear guidance for when to use each package and service.

packages/claude-code/commands/agentuity-cadence-cancel.md (1)

7-15: LGTM!

The cancellation workflow is clear and logical: check existence, read iteration count, delete the file, and offer to save memory. The step-by-step instructions are well-structured.

packages/claude-code/hooks/scripts/block-sensitive-commands.sh (1)

1-43: LGTM on overall structure and logic.

The hook script correctly implements the blocking logic with proper exit codes, a sensible jq/grep fallback for JSON parsing, and clear documentation of the permission model. The pattern matching for sensitive commands (secrets, apikey, auth token) provides appropriate security guardrails.

packages/claude-code/skills/agentuity-frontend/SKILL.md (1)

1-321: LGTM!

This is comprehensive frontend reference documentation covering React hooks (useAPI, useWebsocket, useAuth), authentication setup, and common integration patterns. The code examples are well-structured and the "Common Mistakes" table at the end provides valuable guidance.

packages/claude-code/commands/agentuity-cadence.md (1)

1-73: LGTM!

The Cadence command documentation is comprehensive, covering the autonomous loop workflow, team delegation patterns, three-phase workflow (Setup, Iterate, Finalize), and critical rules. The <promise>DONE</promise> completion signal and Stop hook interaction are clearly explained.

packages/claude-code/agents/architect.md (1)

1-311: LGTM!

This is excellent agent documentation that clearly defines the Architect role with:

  • Clear role distinction from Builder (complex/autonomous vs quick fixes)
  • Comprehensive phased implementation workflow
  • Strong emphasis on evidence-based implementation and checkpointing
  • Detailed runtime detection logic for Bun-first development
  • Useful anti-pattern catalog to prevent common mistakes

The collaboration rules and Memory integration guidelines ensure consistent team coordination.

packages/claude-code/agents/reviewer.md (1)

1-340: LGTM!

This is thorough Reviewer agent documentation with:

  • Clear severity matrix (Critical/Major/Minor/Nit) with action guidance
  • Well-defined anti-patterns to avoid (rubber-stamping, nitpicking over bugs, direct fixing without delegation)
  • Comprehensive domain-specific checklists for Agentuity services (KV, Storage, Vector, Sandboxes, Postgres)
  • Structured review workflow with explicit authorization requirements for applying fixes
  • Strong emphasis on evidence-based reviewing and proper escalation paths

The "Default behavior: identify issues, not fix them" principle is clearly articulated in Step 8.

packages/claude-code/agents/scout.md (1)

1-294: Well-structured agent documentation.

The Scout agent specification is comprehensive, covering identity, methodology phases, tool selection decision trees, report formatting, evidence requirements, and collaboration rules. The examples and anti-pattern catalog provide clear guidance for the agent's read-only exploration role.

packages/claude-code/agents/product.md (1)

1-473: Comprehensive Product agent documentation.

The Product agent specification clearly defines its role in requirements clarification, PRD generation, and Cadence mode governance. The workstream management structure and validation gates provide good guidance for complex feature development.

packages/claude-code/hooks/scripts/setup-cadence.sh (2)

61-65: Loop ID generation looks reasonable.

The sanitization approach (lowercase, replace non-alphanumeric with underscores, truncate to 30 chars) combined with a random suffix should produce unique, readable loop IDs.

Minor note: The od command output format may vary slightly across systems, but the cut -c1-6 ensures consistent length regardless.


73-79: Good handling of existing Cadence sessions.

The script properly warns when replacing an existing loop and extracts the previous loop's details for the warning message. This prevents accidental state corruption while allowing intentional restarts.

packages/claude-code/hooks/scripts/cadence-stop.sh (2)

99-123: Completion promise detection logic is sound.

The multi-step extraction (grep for assistant messages → jq for text content → perl for promise tag) handles the complexity well. Using perl's multiline mode (-0777) correctly handles promises that might span lines.


134-142: Atomic state file update is good practice.

Using a temp file with mv ensures the state file is either fully updated or unchanged, preventing corruption if the script is interrupted.

packages/claude-code/src/install.ts (2)

41-56: Good defensive error handling.

The readProjectConfig function gracefully handles missing files and invalid JSON by returning an empty config object, preventing install failures in projects without agentuity.json.


87-122: Permission configuration logic is correct.

The function properly initializes missing permission arrays and only writes when changes are made. The deduplication check using includes() is sufficient given the small array sizes.

packages/claude-code/AGENTS.md (1)

1-79: Good high-level architecture overview.

The AGENTS.md provides a clear, scannable reference for the plugin's components. The tables effectively summarize agents, skills, hooks, and commands, making it easy to understand the system at a glance.

packages/claude-code/commands/agentuity-memory-save.md (1)

1-14: LGTM — concise and clear command doc.

packages/claude-code/commands/agentuity-coder.md (1)

1-14: LGTM — orchestration responsibilities are clear.

packages/claude-code/hooks/hooks.json (1)

1-67: LGTM — hook wiring and timeouts look consistent.

✏️ Tip: You can disable this entire section by setting review_details to false in your review settings.

@rblalock rblalock merged commit 583f1ae into main Feb 7, 2026
15 checks passed
@rblalock rblalock deleted the claude-code-plugin branch February 7, 2026 02:13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant