A collapsible plan component for displaying AI-generated execution plans with streaming support and shimmer animations.
Use this when your chat agent produces step-by-step plans and you want them streamed into a collapsible plan component with shimmer while steps load.
Similar patterns, and when each one is the better fit.

JSON Render ReactUse this when you want to define your own small component catalog and render streamed JSON specs with the base @json-render React renderer.
JSON Render ShadcnUse this when prompts should render only from a fixed catalog of shadcn components provided by the @json-render/shadcn package.
Human in the Loop Plan Builder AgentUses ToolLoopAgent pattern to gather requirements and generate plans. Generates markdown plans with structured todo lists.
Agent Slides ArtifactUse this when you are prototyping an agent that builds slide decks as a sortable, editable artifact streamed through data-slidesDelta parts.Requirements, wiring steps, and what this pattern adds to your project.
Pick how you want to pull this pattern in. Then wire env vars and routes the same way.
Download → Next.js app
Use Download → Next.js app in the preview toolbar. You get a zip scaffold (Pro downloads rewrite preview `/view/.../api/*` paths to `/api/*` automatically).
Extract the zip and install dependencies
Unzip the archive, then run `pnpm install` (or npm / yarn) in the project folder.
Fill .env.local
The download includes .env.local placeholders when needed. Add real values for: OPENAI_API_KEY.
Customize the agent and tool files
Adapt prompts, tools, and stop conditions in the generated project for your product.
Run the app and open the pattern route
Run `pnpm dev`, open the setup/checklist page if present, then navigate to the generated pattern route and verify responses.
OPENAI_API_KEYGet keyAI SDK APIs
ToolLoopAgentcreateUIMessageStreamcreateUIMessageStreamResponseconvertToModelMessagesvalidateUIMessagesstreamTexttoolgatewayProviders
app/page.tsxapp/layout.tsxcomponents/plan-demo.tsxlib/types.tslib/plan-agent.tslib/tools/plan-generator.tsapp/api/plan/route.tsnpm packages
5
Registry components
plan/route.tsAPI route for the plan agent. Uses createUIMessageStream with custom PlanUIMessage type. Implements convertDataPart to transform plan data parts back into text so the model can see and edit existing plans. Extracts generatePlan tool output on finish to write structured data-plan-info parts.
lib/plan-agent.tsDefines the ToolLoopAgent for plan generation. Configures 5 tools (generatePlan, executeStep, updatePlan, reviewPlan, buildPlan) with detailed workflow instructions. Uses stepCountIs(20) stop condition.
tools/plan-generator.tsImplements 5 generator-based plan tools using async *execute pattern for progressive streaming. Each tool uses nested streamText calls for AI-powered content generation.
A collapsible plan component for displaying AI-generated execution plans with streaming support and shimmer animations.
Use this when your chat agent produces step-by-step plans and you want them streamed into a collapsible plan component with shimmer while steps load.
Similar patterns, and when each one is the better fit.

JSON Render ReactUse this when you want to define your own small component catalog and render streamed JSON specs with the base @json-render React renderer.
JSON Render ShadcnUse this when prompts should render only from a fixed catalog of shadcn components provided by the @json-render/shadcn package.
Human in the Loop Plan Builder AgentUses ToolLoopAgent pattern to gather requirements and generate plans. Generates markdown plans with structured todo lists.
Agent Slides ArtifactUse this when you are prototyping an agent that builds slide decks as a sortable, editable artifact streamed through data-slidesDelta parts.Requirements, wiring steps, and what this pattern adds to your project.
Pick how you want to pull this pattern in. Then wire env vars and routes the same way.
Download → Next.js app
Use Download → Next.js app in the preview toolbar. You get a zip scaffold (Pro downloads rewrite preview `/view/.../api/*` paths to `/api/*` automatically).
Extract the zip and install dependencies
Unzip the archive, then run `pnpm install` (or npm / yarn) in the project folder.
Fill .env.local
The download includes .env.local placeholders when needed. Add real values for: OPENAI_API_KEY.
Customize the agent and tool files
Adapt prompts, tools, and stop conditions in the generated project for your product.
Run the app and open the pattern route
Run `pnpm dev`, open the setup/checklist page if present, then navigate to the generated pattern route and verify responses.
OPENAI_API_KEYGet keyAI SDK APIs
ToolLoopAgentcreateUIMessageStreamcreateUIMessageStreamResponseconvertToModelMessagesvalidateUIMessagesstreamTexttoolgatewayProviders
app/page.tsxapp/layout.tsxcomponents/plan-demo.tsxlib/types.tslib/plan-agent.tslib/tools/plan-generator.tsapp/api/plan/route.tsnpm packages
5
Registry components
plan/route.tsAPI route for the plan agent. Uses createUIMessageStream with custom PlanUIMessage type. Implements convertDataPart to transform plan data parts back into text so the model can see and edit existing plans. Extracts generatePlan tool output on finish to write structured data-plan-info parts.
lib/plan-agent.tsDefines the ToolLoopAgent for plan generation. Configures 5 tools (generatePlan, executeStep, updatePlan, reviewPlan, buildPlan) with detailed workflow instructions. Uses stepCountIs(20) stop condition.
tools/plan-generator.tsImplements 5 generator-based plan tools using async *execute pattern for progressive streaming. Each tool uses nested streamText calls for AI-powered content generation.
Loading preview…
Early-bird pricing — limited time


Open on desktop for the interactive preview.
A collapsible plan component for displaying AI-generated execution plans with streaming support and shimmer animations.
Loading preview…
Early-bird pricing — limited time


Open on desktop for the interactive preview.
A collapsible plan component for displaying AI-generated execution plans with streaming support and shimmer animations.