ai

SKILL.md

<tool_restrictions>

MANDATORY Tool Restrictions

BANNED TOOLS — calling these is a skill violation:

  • EnterPlanMode — BANNED. Do NOT call this tool. This skill has its own structured process. Execute the steps below directly.
  • ExitPlanMode — BANNED. You are never in plan mode. </tool_restrictions>

───────────────────────────────────────────────────────────

AI SDK 6 guidance for building AI-powered features.

<required_reading> Read after detecting AI SDK (Step 1):

  1. references/ai-sdk.md — Patterns and code examples
  2. rules/ai-sdk.md — MUST/NEVER constraints </required_reading>

Step 1: Detect AI SDK

Check package.json for AI SDK:

grep -E '"ai"' package.json

If not found:

AI SDK (`ai` package) not found in this project.

1. Install it — `pnpm add ai @ai-sdk/react @openrouter/ai-sdk-provider`
2. Skip — I'll explain the patterns without a project context

Wait for user choice. If install, run the command and continue.

If found, extract version:

grep -A1 '"ai"' package.json | grep -oE '[0-9]+\.[0-9]+\.[0-9]+'

If version < 6:

⚠ AI SDK version [version] detected. Version 6 has breaking changes that affect
almost every API. The patterns I'll load are for v6+.

If you're migrating, I'll highlight what changed. If you're staying on v5, some
patterns won't apply.

Continue with v6 patterns? (recommended even for planning a migration)

Step 2: Load Reference & Rules

Read the patterns reference:

Read: references/ai-sdk.md

Read the rules (MUST/NEVER constraints):

Read: rules/ai-sdk.md

Step 3: Understand What the User Is Building

Ask what they're working on:

AI SDK reference loaded. What are you building?

1. Chat UI — useChat, message rendering, streaming
2. Agent — tool loops, multi-step reasoning
3. Structured output — typed responses from LLMs
4. Streaming API — streamText, server routes
5. All of the above — full reference
6. Debugging — something isn't working

Use AskUserQuestion with these options.

Step 4: Present Relevant Patterns

Based on user selection, highlight the most relevant sections from the reference:

Chat UI: Focus on useChat v6 setup (DefaultChatTransport, manual input state, sendMessage), toUIMessageStreamResponse, typed tool parts.

Agent: Focus on ToolLoopAgent, stopWhen: stepCountIs(n), InferAgentUIMessage, createAgentUIStreamResponse with uiMessages.

Structured output: Focus on Output.object, Output.array, Output.choice, accessing result.output.

Streaming: Focus on streamText, toUIMessageStreamResponse, createAgentUIStreamResponse.

All: Present the quick migration table and note which sections are available.

Debugging: Ask for the error message. Common issues:

  • toDataStreamResponse is not a function → renamed to toUIMessageStreamResponse
  • Cannot read property 'args' → renamed to input
  • generateObject is not a function → use generateText with Output.object
  • maxSteps is not a valid option → use stopWhen: stepCountIs(n)
  • Request hangs silently → check prompt size (>100K tokens causes silent failures on OpenRouter)

Step 5: Load Project Rules (if .ruler/ exists)

Check for project rules:

ls .ruler/ai-sdk.md 2>/dev/null

If .ruler/ai-sdk.md exists, it's already loaded by build agents. Note this to the user.

If it doesn't exist but .ruler/ does exist:

Your project has coding rules (.ruler/) but no AI SDK rules yet.
Run /arc:rules to update, or I can copy them now.

Step 6: Offer Next Steps

AI SDK context loaded. Ready to build.

1. Start building → /arc:build or /arc:implement
2. Review existing AI code → I'll check for deprecated API usage
3. Set up from scratch → I'll scaffold the provider, route, and component

If user selects "Review existing AI code":

  • Grep for deprecated patterns: generateObject, maxTokens, maxSteps, toDataStreamResponse, addToolResult, part.args, part.result, tool-invocation
  • Report findings with file:line references and the correct v6 replacement
Weekly Installs
1
Repository
howells/arc
GitHub Stars
14
First Seen
2 days ago
Installed on
amp1
cline1
opencode1
cursor1
kimi-cli1
codex1