Agent Plan
ProA plan that behaves like an agent's plan: steps light up along a rail that fills as they finish, the active one breathes and shimmers its sub-status, failures insert recovery steps that slide the list apart, and the whole thing folds into one line when it's done.
Installation
npx shadcn add @useplanes/agent-plan
Unlock with Planes Pro
$99 once · 80 Pro components · lifetime updates.
<AgentPlan
title="Plan"
steps={[
{ id: "read", title: "Read the settings page", status: "done", duration: 1100 },
{ id: "toggle", title: "Add a theme toggle", status: "active", detail: "Creating ThemeToggle.tsx" },
{ id: "wire", title: "Wire it to next-themes" },
{ id: "test", title: "Run type check and tests" },
]}
/>Examples
Recover from a failure
Mark a step failed and splice a recovery step after it. The rows below slide down to make room.
setSteps((prev) => {
const i = prev.findIndex((s) => s.id === "test");
const failed = { ...prev[i], status: "failed", detail: "1 test failed" };
const fix = { id: "fix", title: "Update the snapshot", status: "active" };
return [...prev.slice(0, i), failed, fix, ...prev.slice(i + 1)];
});Skip with a reason
A skipped step strikes through and keeps its detail as the explanation.
{ id: "docs", title: "Update the docs", status: "skipped", detail: "No docs mention this page" }Use cases
Agent task lists
The live plan Claude Code and Cursor show while they work, including the steps they add when something fails.
Multi-step forms and setups
Onboarding or deployment flows where the system does the work and the user watches it land.
Background jobs
Imports, migrations and builds with a stage list that folds into a one-line receipt.
Checkout and order tracking
Any sequence with a current stage, finished stages and a rail between them.