feat(claude-code): Agentuity Coder plugin for Claude Code#893
Conversation
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>
📝 WalkthroughWalkthroughAdds 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
🚥 Pre-merge checks | ✅ 1✅ Passed checks (1 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. Comment |
📦 Canary Packages Publishedversion: PackagesInstallAdd to your {
"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 |
There was a problem hiding this comment.
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
bashorshellimproves syntax highlighting and satisfies markdownlint MD040.📝 Suggested fix
-``` +```bash agentuity cloud sandbox runtime list --json # List available runtimespackages/claude-code/hooks/scripts/cadence-stop.sh (1)
1-19: Consider adding strict mode for robustness.Unlike
setup-cadence.sh, this script doesn't useset -euo pipefail. While this may be intentional to allow graceful degradation (e.g., missingjq,perl, or files), it could mask unexpected errors. Consider adding at leastset -uto 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 -upackages/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
textorplaintextsatisfies 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
📒 Files selected for processing (36)
.claude-plugin/marketplace.jsonpackages/claude-code/.claude-plugin/plugin.jsonpackages/claude-code/AGENTS.mdpackages/claude-code/LICENSEpackages/claude-code/README.mdpackages/claude-code/agents/architect.mdpackages/claude-code/agents/builder.mdpackages/claude-code/agents/lead.mdpackages/claude-code/agents/memory.mdpackages/claude-code/agents/product.mdpackages/claude-code/agents/reviewer.mdpackages/claude-code/agents/scout.mdpackages/claude-code/commands/agentuity-cadence-cancel.mdpackages/claude-code/commands/agentuity-cadence.mdpackages/claude-code/commands/agentuity-coder.mdpackages/claude-code/commands/agentuity-memory-save.mdpackages/claude-code/commands/agentuity-memory-share.mdpackages/claude-code/commands/agentuity-sandbox.mdpackages/claude-code/hooks/hooks.jsonpackages/claude-code/hooks/scripts/block-sensitive-commands.shpackages/claude-code/hooks/scripts/cadence-stop.shpackages/claude-code/hooks/scripts/pre-compact.shpackages/claude-code/hooks/scripts/session-end.shpackages/claude-code/hooks/scripts/session-start.shpackages/claude-code/hooks/scripts/setup-cadence.shpackages/claude-code/hooks/scripts/stop-memory-save.shpackages/claude-code/package.jsonpackages/claude-code/skills/agentuity-backend/SKILL.mdpackages/claude-code/skills/agentuity-cloud/SKILL.mdpackages/claude-code/skills/agentuity-command-runner/SKILL.mdpackages/claude-code/skills/agentuity-frontend/SKILL.mdpackages/claude-code/skills/agentuity-ops/SKILL.mdpackages/claude-code/skills/agentuity-reasoning/SKILL.mdpackages/claude-code/src/install.tspackages/claude-code/tsconfig.jsontsconfig.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.mdpackages/claude-code/skills/agentuity-cloud/SKILL.mdpackages/claude-code/commands/agentuity-coder.mdpackages/claude-code/agents/scout.mdpackages/claude-code/commands/agentuity-memory-share.mdpackages/claude-code/commands/agentuity-cadence.mdpackages/claude-code/hooks/hooks.jsonpackages/claude-code/tsconfig.jsonpackages/claude-code/AGENTS.mdpackages/claude-code/agents/memory.mdpackages/claude-code/agents/builder.mdpackages/claude-code/commands/agentuity-cadence-cancel.mdpackages/claude-code/skills/agentuity-command-runner/SKILL.mdpackages/claude-code/agents/architect.mdpackages/claude-code/skills/agentuity-reasoning/SKILL.mdtsconfig.jsonpackages/claude-code/skills/agentuity-ops/SKILL.mdpackages/claude-code/agents/product.mdpackages/claude-code/skills/agentuity-frontend/SKILL.mdpackages/claude-code/package.jsonpackages/claude-code/agents/reviewer.mdpackages/claude-code/README.mdpackages/claude-code/commands/agentuity-memory-save.mdpackages/claude-code/agents/lead.mdpackages/claude-code/skills/agentuity-backend/SKILL.mdpackages/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
StructuredErrorfrom@agentuity/corefor 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.jsontsconfig.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
includewith a glob pattern aligns with best practices for handling potentially generated files.tsconfig.json (1)
12-13: LGTM!The project reference for
packages/claude-codeis 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
odcommand output format may vary slightly across systems, but thecut -c1-6ensures 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
mvensures 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
readProjectConfigfunction gracefully handles missing files and invalid JSON by returning an empty config object, preventing install failures in projects withoutagentuity.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.
Summary
Adds
@agentuity/claude-code-- a Claude Code plugin that provides a team of 7 specialized AI agents with persistent memory via Agentuity Cloud./agentuity-coderfor orchestrated tasks and/agentuity-cadencefor autonomous long-running sessionsHow 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.mdfiles 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:session-start.shagentuity.jsonandagentuity auth whoamito provide project/org/user context to agentssession-end.shclaude -pfor agentic processingblock-sensitive-commands.shagentuity cloud secret*,apikey,auth tokenand blocks them (exit 2)pre-compact.shcadence-stop.sh<promise>DONE</promise>. If not found, blocks the stop, increments iteration, and re-injects the task promptstop-memory-save.shPermissions
The install script (
src/install.ts) writes to~/.claude/settings.local.json:Bash(agentuity cloud *),Bash(agentuity auth whoami *)Bash(agentuity cloud secrets *),Bash(agentuity cloud secret *),Bash(agentuity cloud apikey *),Bash(agentuity auth token *)Marketplace distribution
Includes
.claude-plugin/marketplace.jsonat repo root so users can install via:Plugin manifest passes
claude plugin validate.Test plan
claude --plugin-dir ./packages/claude-codeand verify agents load/agentuity-coderand verify Lead delegates correctly/agentuity-cadenceand verify the Stop hook loop workssession-start.shoutputs project contextblock-sensitive-commands.shblocksagentuity cloud secretcommands/agentuity-memory-savepersists to KV/Vectorclaude plugin validate ./packages/claude-code-- passesclaude plugin validate .(marketplace) -- passes🤖 Generated with Claude Code
Summary by CodeRabbit
Release Notes
New Features
Documentation