apps/docs/skills/recipe-code-assistant/SKILL.md
Full recipe for a code assistant with shell execution, file read/write, git integration, and sandboxed code running.
npx skillsauth add tylerjrbuell/reactive-agents-ts recipe-code-assistantInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
A code assistant that can read and write files, run shell commands (git, build tools, tests), and execute code in a sandboxed environment. Suitable for CI/CD automation, code review, and iterative development tasks.
shell-execution-sandbox — shell tool with allowlist and opt-in build commandsreasoning-strategy-selection — plan-execute-reflect for multi-step coding taskstool-creation — tool registration and allowedToolsobservability-instrumentation — verbose live output for developmentimport { ReactiveAgents } from "@reactive-agents/runtime";
import { shellExecuteTool, shellExecuteHandler } from "@reactive-agents/tools";
// Configure the shell tool with build commands enabled
const shellTool = {
definition: shellExecuteTool,
handler: shellExecuteHandler({
additionalCommands: ["bun", "node", "npm", "git"],
timeoutMs: 60_000, // 60s for build/test commands
maxOutputChars: 8_000, // increase for verbose test output
cwd: process.cwd(),
}),
};
const agent = await ReactiveAgents.create()
.withName("code-assistant")
.withProvider("anthropic")
.withReasoning({
defaultStrategy: "plan-execute-reflect",
maxIterations: 30,
})
.withTools({
tools: [shellTool],
allowedTools: ["shell-execute", "file-read", "file-write", "checkpoint", "final-answer"],
})
.withObservability({ verbosity: "verbose", live: true })
.withCostTracking({ perSession: 2.0, daily: 20.0 })
.withSystemPrompt(`
You are a code assistant with shell and file access.
Workflow for coding tasks:
1. Read relevant files with file-read before making changes.
2. Checkpoint your plan before starting significant edits.
3. Make targeted, focused changes — do not rewrite files unnecessarily.
4. After writing files, run tests with shell-execute to verify.
5. Use "git status" and "git diff" to review changes before finalizing.
6. Report what you changed and whether tests passed.
Allowed shell commands: git, ls, cat, grep, find, bun, node, npm, mkdir, cp, mv, touch, wc, head, tail, diff
Blocked: rm, chmod, chown (use mv to "delete" files if needed)
`)
.build();
// Example: fix a bug
const result = await agent.run(`
Fix the failing test in packages/auth/tests/login.test.ts.
The test expects validateToken to return null for expired tokens,
but the current implementation throws an error instead.
`);
console.log(result.output);
await agent.dispose();
const reviewTool = {
definition: shellExecuteTool,
handler: shellExecuteHandler({
allowedCommands: ["git", "ls", "cat", "grep", "find", "head", "tail", "wc", "diff"],
}),
};
const reviewer = await ReactiveAgents.create()
.withProvider("anthropic")
.withTools({
tools: [reviewTool],
allowedTools: ["shell-execute", "file-read", "checkpoint"],
})
.withSystemPrompt("Review code for issues. Do not make any changes. Report findings only.")
.build();
const sandboxTool = {
definition: shellExecuteTool,
handler: shellExecuteHandler({
additionalCommands: ["node", "python3"],
dockerEscalation: { enabled: true },
// Inline code (node --eval, python -c) runs in isolated Docker containers
}),
};
import type { ShellAuditEntry } from "@reactive-agents/tools";
const auditedTool = {
definition: shellExecuteTool,
handler: shellExecuteHandler({
additionalCommands: ["bun", "git"],
onAudit: (entry: ShellAuditEntry) => {
logger.info("shell-execute", {
command: entry.command,
exitCode: entry.exitCode,
durationMs: entry.durationMs,
});
},
}),
};
const result = await agent.run("Fix the failing test...");
// result.output — description of changes made and test results
// result.steps — full trace of file reads, writes, and shell commands
// result.cost — USD cost for the session
rm is hard-blocked and cannot be enabled via additionalCommands — use mv to archive files insteadmaxOutputChars: 4000 (default) truncates long command output — increase to 8000+ for bun test on large test suitestimeoutMs: 30_000 (default) is too short for bun install — set 60_000+ for package management commandsfile-write overwrites the entire file — ensure the agent reads the file first and preserves non-modified sectionsdevelopment
Orient to the Reactive Agents framework, understand the builder API shape, and select the right capability skills for your task.
testing
Enable output verification (hallucination detection, semantic entropy, self-consistency), add post-run verification steps, and run LLM-scored evals across 5 quality dimensions.
data-ai
Configure per-provider behavior, understand streaming quirks, and use the 7-hook adapter system for optimal performance across LLM providers.
data-ai
Configure the 4-layer memory system with SQLite/FTS5/vec storage for persistent agent knowledge that survives sessions.