apps/docs/skills/interaction-autonomy/SKILL.md
Configure one of 5 human-agent interaction modes (autonomous through interrogative) and implement mode-switching, approval gates, and collaborative workflows.
npx skillsauth add tylerjrbuell/reactive-agents-ts interaction-autonomyInstall 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.
Produce a builder with .withInteraction() enabled and the correct initial mode configured, with guidance on how to switch modes at runtime and handle approval checkpoints.
| Mode | Description | Use when |
|------|-------------|----------|
| "autonomous" | Fire-and-forget — agent runs independently | Trusted automation, scheduled tasks |
| "supervised" | Agent pauses at milestones for human approval | High-stakes actions, untrusted environments |
| "collaborative" | Real-time back-and-forth with the user | Creative work, exploration, complex tasks |
| "consultative" | Agent observes and provides suggestions | Advisory bots, decision support |
| "interrogative" | User drills into agent state and reasoning | Debugging, transparency, audit |
import { ReactiveAgents } from "@reactive-agents/runtime";
// Supervised agent — pauses at milestones for approval
const agent = await ReactiveAgents.create()
.withName("assistant")
.withProvider("anthropic")
.withReasoning({ defaultStrategy: "plan-execute-reflect", maxIterations: 20 })
.withTools({ allowedTools: ["web-search", "file-read", "file-write", "checkpoint"] })
.withInteraction() // enables interaction layer with all 5 modes
.withSystemPrompt(`
You are operating in supervised mode.
Before writing any files, checkpoint your plan and wait for approval.
`)
.build();
.withInteraction()
// Enables the InteractionManager, ModeSwitcher, NotificationService,
// CheckpointService, CollaborationService, and PreferenceLearner.
// Default mode: "autonomous"
// "autonomous" — agent runs to completion without interruption
// Best for: background tasks, cron jobs, trusted pipelines
const agent = ReactiveAgents.create()
.withInteraction()
.withSystemPrompt("Complete the task without interruption.")
.build();
// "supervised" — agent must receive approval before continuing past checkpoints
// Best for: production deployments, high-risk tool calls
const agent = ReactiveAgents.create()
.withInteraction()
.withGuardrails()
.withGateway({ policies: { requireApprovalFor: ["file-write", "send-email"] } })
.build();
// "collaborative" — agent and user exchange messages during execution
// Best for: interactive chat, pair programming workflows
// "consultative" — agent surfaces observations and suggestions
// Best for: advisory dashboards, recommendation engines
// "interrogative" — user can query agent state mid-execution
// Best for: debugging, explainability, audit
import { InteractionManager } from "@reactive-agents/interaction";
import { Effect } from "effect";
// Switch mode at runtime (e.g., escalate from autonomous to supervised):
const program = Effect.gen(function* () {
const manager = yield* InteractionManager;
yield* manager.switchMode(agentId, "supervised");
const currentMode = yield* manager.getMode(agentId);
console.log("Now in mode:", currentMode);
});
In "supervised" mode, the agent can pause and request human approval:
// System prompt instructs the agent to use the checkpoint tool:
.withSystemPrompt(`
When you are about to take an irreversible action (file writes, API calls),
use the checkpoint tool to save your plan and pause for review.
Only proceed after receiving confirmation.
`)
.withTools({ allowedTools: ["checkpoint", "file-read", "file-write"] })
.withInteraction()
The checkpoint tool (SAVE mode) records state; the approval flow is handled by your application layer reading the checkpoint and calling agent.resume().
const agent = ReactiveAgents.create()
.withInteraction()
.withKillSwitch() // enables pause/resume for approval gates
.build();
const handle = agent.run(task);
// Pause for approval:
await handle.pause();
// ... user reviews ...
await handle.resume();
| Method | Notes |
|--------|-------|
| .withInteraction() | Enables the full interaction layer (all 5 modes) |
| .withKillSwitch() | Enables pause/resume/stop for approval gates (recommended with supervised mode) |
.withInteraction() enables the layer but does not set the initial mode — the agent defaults to "autonomous" unless the system prompt or runtime code switches itagentId is used when calling InteractionManager.switchMode()"supervised" mode without .withKillSwitch() means approval checkpoints can be described in the system prompt but cannot programmatically pause execution — pair them togetherInteractionManager is 5 minutes — if no approval arrives, the agent proceeds or times out based on policy"collaborative" and "interrogative" modes require a live communication channel between the agent and the user — these modes are designed for real-time UI integrations (see ui-integration skill)development
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.