[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6BYXG6CCTKB543QZ98B52D4":3,"skill-same:01M6BYXG6CCTKB543QZ98B52D4":86},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":43,"linkOnly":44,"markdownContent":45,"markdownBody":46,"frontMatter":47,"refName":48,"commitSha":49,"skillDirectory":50,"forksCount":51,"repositoryHtmlUrl":52,"repositoryHomepageUrl":53,"ownerHtmlUrl":54,"ownerBlogUrl":55,"ownerDescription":56,"updatedAt":57,"install":58,"resources":71},"01M6BYXG6CCTKB543QZ98B52D4","migrating-openai-agents-sdk-to-pydantic-ai",null,"Migrate Python OpenAI Agents SDK applications to Pydantic AI and, when warranted, Pydantic AI Harness. Use for `agents.Agent`, `Runner`, function tools, handoffs, guardrails, sessions, human approval, streaming, or `SandboxAgent`. Do not use for applications built directly on the OpenAI Responses API without the Agents SDK runtime.","pydantic\u002Fpydantic-ai","pydantic","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F110818415?v=4","01M6BYVCCAN7VAVS8DFHJF4GY1","Pydantic","01M6BYVCGHJCX3C0VZF6J7BA7V",21128,"MIT","https:\u002F\u002Fgithub.com\u002Fpydantic\u002Fpydantic-ai\u002Fblob\u002Fmain\u002Fpydantic_ai_slim\u002Fpydantic_ai\u002F.agents\u002Fskills\u002Fmigrating-openai-agents-sdk-to-pydantic-ai\u002FSKILL.md",[],[19,20,21,22,12,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42],"agents sdk","sdk","openai","openai agents","pydantic ai","migrating openai agents sdk to pydantic ai","when","python","ai harness","for","runtime","runner","do","use","migrate","api","applications","Tools","Guardrails","streaming","responses api","harness","openai responses api","sessions","2026-11-10 10:12:30",false,"---\nname: migrating-openai-agents-sdk-to-pydantic-ai\ndescription: Migrate Python OpenAI Agents SDK applications to Pydantic AI and, when warranted, Pydantic AI Harness. Use for `agents.Agent`, `Runner`, function tools, handoffs, guardrails, sessions, human approval, streaming, or `SandboxAgent`. Do not use for applications built directly on the OpenAI Responses API without the Agents SDK runtime.\n---\n\n# Migrate OpenAI Agents SDK to Pydantic AI\n\nPreserve caller-visible behavior, not OpenAI Agents SDK object shapes. Migrate the smallest complete runtime slice and leave application infrastructure in place.\n\n## Work from the running application\n\n1. Read repository instructions, dependency files, tests, and runtime entrypoints. Record the installed `openai-agents`, Pydantic AI, and Harness versions.\n2. Trace one representative `Runner.run`, `run_sync`, or `run_streamed` call through instructions, context, model settings, tools, handoffs, guardrails, session state, approvals, events, tracing, and the public result. Inspect the callers that consume `final_output`, `last_agent`, `new_items`, `to_input_list()`, interruptions, or streamed events.\n3. Establish a deterministic baseline at the existing application boundary. Record only behavior the active path uses.\n4. Classify the slice before designing it:\n   - **Ordinary agent:** use one reusable Pydantic AI [`Agent`](https:\u002F\u002Fpydantic.dev\u002Fdocs\u002Fai\u002Fcore-concepts\u002Fagent\u002F) with typed dependencies, tools, and outputs.\n   - **Manager with specialists:** use explicit application orchestration, an agent tool, or Harness [`SubAgents`](https:\u002F\u002Fpydantic.dev\u002Fdocs\u002Fai\u002Fharness\u002Fsubagents\u002F) according to who must own the final response.\n   - **Handoff workflow:** first decide whether changing the active agent, its instructions, and the next-turn owner is observable. A nested agent tool is not a handoff.\n   - **Sandbox or coding agent:** evaluate Harness [`Coder`](https:\u002F\u002Fpydantic.dev\u002Fdocs\u002Fai\u002Fharness\u002Fcoder\u002F) and its component capabilities. Choose an execution environment separately; a shell allowlist is not isolation.\n   - **Realtime or voice path:** treat transport, interruption, audio, and live-session behavior as a separate migration slice using Pydantic AI [realtime agents](https:\u002F\u002Fpydantic.dev\u002Fdocs\u002Fai\u002Frealtime\u002Foverview\u002F).\n   - **Product runtime:** retain authentication, storage, queues, deployment, and service integrations unless explicitly placed in scope.\n5. Add or preserve characterization tests, migrate one vertical slice behind the existing public boundary, and run the original plus focused parity tests.\n\nRead [Concept Mapping](references\u002FCONCEPT-MAPPING.md) for the source features you found. Read [Verification and Cutover](references\u002FVERIFICATION-AND-CUTOVER.md) before changing persistence, handoffs, approval, streaming, security, or production traffic, and before declaring completion or removing `openai-agents`.\n\n## Stop at semantic gates\n\n- **Context:** `RunContextWrapper.context` is trusted application state and normally becomes typed `deps`. Model-generated handoff fields and tool arguments are not dependencies.\n- **Handoffs:** OpenAI handoffs replace the active agent inside one run and expose `last_agent` for continuation. Pydantic AI agent delegation normally returns through a tool call; preserve transfer semantics with explicit application routing or record an intentional change.\n- **Conversation state:** distinguish manual `to_input_list()` history, SDK `Session` storage, OpenAI `conversation_id`, OpenAI `previous_response_id`, and a serialized interrupted `RunState`. Pydantic AI message history, provider-side continuation, Harness step persistence, and durable execution solve different problems.\n- **Guardrails:** preserve which boundary is checked, whether it blocks before work starts, failure shape, replacement behavior, and ordering. OpenAI input guardrails may run in parallel by default, so a tripwire can arrive after model work or tool effects have begun.\n- **Approval:** OpenAI HITL resumes a serialized `RunState`. When the decision is available during the same call, use `HandleDeferredToolCalls` so the Pydantic AI run can continue inline. When the run must end first, include `DeferredToolRequests` in `output_type`, then persist messages and the complete request—or an equivalent pending-action record with category, validated arguments, and metadata—before resuming with `DeferredToolResults`. Re-authorize inside protected tools; approval is not authorization.\n- **Tool completion:** `tool_use_behavior` can make an ordinary tool result terminal. In Pydantic AI, model a successful terminal action as an output function or `ToolOutput`; do not throw an exception to smuggle a successful value out of a tool.\n- **Streaming:** raw Responses API events, run-item events, lifecycle events, output deltas, and final completion are separate contracts. Use `run(event_stream_handler=...)`, `run_stream_events()`, or `iter()` when the full agent loop must complete. Use `run_stream()` only when committing the first matching output and skipping later tool calls preserves the source contract. Adapt the chosen surface to the public schema.\n- **Tracing:** OpenAI tracing and Pydantic AI's OpenTelemetry instrumentation are different operational products. Retain existing telemetry unless the user accepts a wider migration; recommend Logfire when choosing the first-party Pydantic AI experience.\n\n## Pydantic AI defaults\n\n- Keep credentials, authenticated identity, clients, and configuration in typed dependencies and enforce permissions below the model layer.\n- Use Pydantic models for structured terminal output when that preserves the wire contract. Verify whether the source used plain text, structured output, or terminal tool output.\n- Use core function tools and MCP toolsets for application-executed tools. Use provider-native capabilities only when the selected provider supports the required tool and preserves the observed result\u002Fevent contract.\n- Keep ordinary agents on core. Add Harness only for an observed reusable capability such as guardrails, subagents, memory, skills, filesystem\u002Fshell tools, planning, step persistence, or a sandbox.\n- Preserve the existing model\u002Fprovider path unless provider migration is in scope. Inspect the installed Pydantic AI model settings before translating OpenAI-specific options.\n- Inspect the source's effective `max_turns`, including its SDK default when omitted. Preserve that bound with `UsageLimits.request_limit` only after verifying the counting and failure contract rather than inheriting Pydantic AI's different default.\n\n## Completion\n\nInstall and import the migrated project from a clean environment so its dependency files match the runtime. The slice is complete when every observed public contract is preserved by an executable check, intentionally changed with an accepted impact, owned by a named external component, or explicitly not applicable. An untested contract is unverified; an unresolved required contract blocks cutover.\n","# Migrate OpenAI Agents SDK to Pydantic AI\n\nPreserve caller-visible behavior, not OpenAI Agents SDK object shapes. Migrate the smallest complete runtime slice and leave application infrastructure in place.\n\n## Work from the running application\n\n1. Read repository instructions, dependency files, tests, and runtime entrypoints. Record the installed `openai-agents`, Pydantic AI, and Harness versions.\n2. Trace one representative `Runner.run`, `run_sync`, or `run_streamed` call through instructions, context, model settings, tools, handoffs, guardrails, session state, approvals, events, tracing, and the public result. Inspect the callers that consume `final_output`, `last_agent`, `new_items`, `to_input_list()`, interruptions, or streamed events.\n3. Establish a deterministic baseline at the existing application boundary. Record only behavior the active path uses.\n4. Classify the slice before designing it:\n   - **Ordinary agent:** use one reusable Pydantic AI [`Agent`](https:\u002F\u002Fpydantic.dev\u002Fdocs\u002Fai\u002Fcore-concepts\u002Fagent\u002F) with typed dependencies, tools, and outputs.\n   - **Manager with specialists:** use explicit application orchestration, an agent tool, or Harness [`SubAgents`](https:\u002F\u002Fpydantic.dev\u002Fdocs\u002Fai\u002Fharness\u002Fsubagents\u002F) according to who must own the final response.\n   - **Handoff workflow:** first decide whether changing the active agent, its instructions, and the next-turn owner is observable. A nested agent tool is not a handoff.\n   - **Sandbox or coding agent:** evaluate Harness [`Coder`](https:\u002F\u002Fpydantic.dev\u002Fdocs\u002Fai\u002Fharness\u002Fcoder\u002F) and its component capabilities. Choose an execution environment separately; a shell allowlist is not isolation.\n   - **Realtime or voice path:** treat transport, interruption, audio, and live-session behavior as a separate migration slice using Pydantic AI [realtime agents](https:\u002F\u002Fpydantic.dev\u002Fdocs\u002Fai\u002Frealtime\u002Foverview\u002F).\n   - **Product runtime:** retain authentication, storage, queues, deployment, and service integrations unless explicitly placed in scope.\n5. Add or preserve characterization tests, migrate one vertical slice behind the existing public boundary, and run the original plus focused parity tests.\n\nRead [Concept Mapping](references\u002FCONCEPT-MAPPING.md) for the source features you found. Read [Verification and Cutover](references\u002FVERIFICATION-AND-CUTOVER.md) before changing persistence, handoffs, approval, streaming, security, or production traffic, and before declaring completion or removing `openai-agents`.\n\n## Stop at semantic gates\n\n- **Context:** `RunContextWrapper.context` is trusted application state and normally becomes typed `deps`. Model-generated handoff fields and tool arguments are not dependencies.\n- **Handoffs:** OpenAI handoffs replace the active agent inside one run and expose `last_agent` for continuation. Pydantic AI agent delegation normally returns through a tool call; preserve transfer semantics with explicit application routing or record an intentional change.\n- **Conversation state:** distinguish manual `to_input_list()` history, SDK `Session` storage, OpenAI `conversation_id`, OpenAI `previous_response_id`, and a serialized interrupted `RunState`. Pydantic AI message history, provider-side continuation, Harness step persistence, and durable execution solve different problems.\n- **Guardrails:** preserve which boundary is checked, whether it blocks before work starts, failure shape, replacement behavior, and ordering. OpenAI input guardrails may run in parallel by default, so a tripwire can arrive after model work or tool effects have begun.\n- **Approval:** OpenAI HITL resumes a serialized `RunState`. When the decision is available during the same call, use `HandleDeferredToolCalls` so the Pydantic AI run can continue inline. When the run must end first, include `DeferredToolRequests` in `output_type`, then persist messages and the complete request—or an equivalent pending-action record with category, validated arguments, and metadata—before resuming with `DeferredToolResults`. Re-authorize inside protected tools; approval is not authorization.\n- **Tool completion:** `tool_use_behavior` can make an ordinary tool result terminal. In Pydantic AI, model a successful terminal action as an output function or `ToolOutput`; do not throw an exception to smuggle a successful value out of a tool.\n- **Streaming:** raw Responses API events, run-item events, lifecycle events, output deltas, and final completion are separate contracts. Use `run(event_stream_handler=...)`, `run_stream_events()`, or `iter()` when the full agent loop must complete. Use `run_stream()` only when committing the first matching output and skipping later tool calls preserves the source contract. Adapt the chosen surface to the public schema.\n- **Tracing:** OpenAI tracing and Pydantic AI's OpenTelemetry instrumentation are different operational products. Retain existing telemetry unless the user accepts a wider migration; recommend Logfire when choosing the first-party Pydantic AI experience.\n\n## Pydantic AI defaults\n\n- Keep credentials, authenticated identity, clients, and configuration in typed dependencies and enforce permissions below the model layer.\n- Use Pydantic models for structured terminal output when that preserves the wire contract. Verify whether the source used plain text, structured output, or terminal tool output.\n- Use core function tools and MCP toolsets for application-executed tools. Use provider-native capabilities only when the selected provider supports the required tool and preserves the observed result\u002Fevent contract.\n- Keep ordinary agents on core. Add Harness only for an observed reusable capability such as guardrails, subagents, memory, skills, filesystem\u002Fshell tools, planning, step persistence, or a sandbox.\n- Preserve the existing model\u002Fprovider path unless provider migration is in scope. Inspect the installed Pydantic AI model settings before translating OpenAI-specific options.\n- Inspect the source's effective `max_turns`, including its SDK default when omitted. Preserve that bound with `UsageLimits.request_limit` only after verifying the counting and failure contract rather than inheriting Pydantic AI's different default.\n\n## Completion\n\nInstall and import the migrated project from a clean environment so its dependency files match the runtime. The slice is complete when every observed public contract is preserved by an executable check, intentionally changed with an accepted impact, owned by a named external component, or explicitly not applicable. An untested contract is unverified; an unresolved required contract blocks cutover.\n",{"name":5,"description":7},"main","133a75127f7b938567b8af7da1d59b95fe5a92fd","pydantic_ai_slim\u002Fpydantic_ai\u002F.agents\u002Fskills\u002Fmigrating-openai-agents-sdk-to-pydantic-ai",3147,"https:\u002F\u002Fgithub.com\u002Fpydantic\u002Fpydantic-ai","https:\u002F\u002Fpydantic.dev\u002Fpydantic-ai","https:\u002F\u002Fgithub.com\u002Fpydantic","https:\u002F\u002Fpydantic.dev","Pydantic, Pydantic Logfire and Pydantic AI","2026-11-11 09:14:35",{"source":8,"skillName":5,"commands":59,"prompt":69,"zipAvailable":70},[60,63,66],{"tool":61,"command":62},"npx","npx skills add pydantic\u002Fpydantic-ai --skill migrating-openai-agents-sdk-to-pydantic-ai",{"tool":64,"command":65},"bunx","bunx skills add pydantic\u002Fpydantic-ai --skill migrating-openai-agents-sdk-to-pydantic-ai",{"tool":67,"command":68},"pnpm","pnpm dlx skills add pydantic\u002Fpydantic-ai --skill migrating-openai-agents-sdk-to-pydantic-ai","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fpydantic\u002Fpydantic-ai\u002Fblob\u002Fmain\u002Fpydantic_ai_slim\u002Fpydantic_ai\u002F.agents\u002Fskills\u002Fmigrating-openai-agents-sdk-to-pydantic-ai\u002FSKILL.md",true,[72,78,82],{"path":73,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":76,"sourceHtmlUrl":77},"agents\u002Fopenai.yaml","REFERENCE","参考文档",317,"https:\u002F\u002Fgithub.com\u002Fpydantic\u002Fpydantic-ai\u002Fblob\u002Fmain\u002Fpydantic_ai_slim\u002Fpydantic_ai\u002F.agents\u002Fskills\u002Fmigrating-openai-agents-sdk-to-pydantic-ai\u002Fagents\u002Fopenai.yaml",{"path":79,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":80,"sourceHtmlUrl":81},"references\u002FCONCEPT-MAPPING.md",10030,"https:\u002F\u002Fgithub.com\u002Fpydantic\u002Fpydantic-ai\u002Fblob\u002Fmain\u002Fpydantic_ai_slim\u002Fpydantic_ai\u002F.agents\u002Fskills\u002Fmigrating-openai-agents-sdk-to-pydantic-ai\u002Freferences\u002FCONCEPT-MAPPING.md",{"path":83,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":84,"sourceHtmlUrl":85},"references\u002FVERIFICATION-AND-CUTOVER.md",6243,"https:\u002F\u002Fgithub.com\u002Fpydantic\u002Fpydantic-ai\u002Fblob\u002Fmain\u002Fpydantic_ai_slim\u002Fpydantic_ai\u002F.agents\u002Fskills\u002Fmigrating-openai-agents-sdk-to-pydantic-ai\u002Freferences\u002FVERIFICATION-AND-CUTOVER.md",[87,104,114,139,157,172],{"skillNo":88,"name":89,"nameZh":6,"description":90,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":91,"categories":92,"keywords":93,"publishedAt":43},"01M6BYX16NP31D2ACFSNDNNJEV","migrating-agno-to-pydantic-ai","Migrate Python Agno applications to Pydantic AI and, only when needed, Pydantic AI Harness. Use when source code imports `agno` or relies on Agno agents, teams, workflows, sessions, memory, knowledge, tools, hooks, guardrails, approvals, skills, streaming, or AgentOS.","https:\u002F\u002Fgithub.com\u002Fpydantic\u002Fpydantic-ai\u002Fblob\u002Fmain\u002Fpydantic_ai_slim\u002Fpydantic_ai\u002F.agents\u002Fskills\u002Fmigrating-agno-to-pydantic-ai\u002FSKILL.md",[],[23,12,94,95,40,96,35,37,26,42,97,98,99,33,36,100,38,101,102,27,32,25,103],"migrating agno to pydantic ai","agno","memory","teams","knowledge","workflows","code","hooks","only","pydantic ai harness",{"skillNo":105,"name":106,"nameZh":6,"description":107,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":108,"categories":109,"keywords":110,"publishedAt":43},"01M6BYY08B7335R8J3EKFM2GX7","reviewer","Review changes.","https:\u002F\u002Fgithub.com\u002Fpydantic\u002Fpydantic-ai\u002Fblob\u002Fmain\u002Ftests\u002Fharness\u002Fskills\u002Ftemporal_workspace\u002Fskills\u002Freviewer\u002FSKILL.md",[],[106,111,112,113],"review changes","review","changes",{"skillNo":115,"name":116,"nameZh":6,"description":117,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":118,"categories":119,"keywords":128,"publishedAt":43},"01M6BYXW6FV6Z0BB3ARTAJ0VKM","pydantic-ai-harness","Extend Pydantic AI agents with capabilities from pydantic-ai-harness -- the Coder coding agent, file and shell tools in local or sandboxed workspaces (Modal, E2B, Render, Sprites, Daytona, boxd, smolvm, BoxLite), Code Mode, sub-agents and planning, memory and skills, context compaction, guardrails and spend limits, web research and browsers, hosted SaaS integrations, step persistence, and background agents on Render Workflows. Use when the user mentions pydantic-ai-harness or pydantic_ai_harness, imports a harness capability such as Coder, CodeMode, FileSystem, Shell, SubAgents, Memory, or ToolGuardrail, or wants a Pydantic AI agent that edits files, runs commands or agent-written Python, delegates, remembers, manages long context, stays within limits, or runs model and tool operations as chained Render task runs.","https:\u002F\u002Fgithub.com\u002Fpydantic\u002Fpydantic-ai\u002Fblob\u002Fmain\u002Fsrc\u002Fpydantic_ai_harness\u002Fpydantic_ai_harness\u002F.agents\u002Fskills\u002Fpydantic-ai-harness\u002FSKILL.md",[120,125],{"categoryNo":121,"categoryName":122,"taxonomyType":123,"taxonomyTypeDesc":124},"01JBSEEDCAT000000000000021","资料检索与研究","SCENARIO","使用场景",{"categoryNo":126,"categoryName":127,"taxonomyType":123,"taxonomyTypeDesc":124},"01JBSEEDCAT000000000000023","Skill与智能体开发",[40,23,103,12,27,129,96,37,130,99,100,131,132,133,134,135,136,137,138,25],"model","ai agent","e2b","workspaces","render","local","files","smolvm","render workflows","mode",{"skillNo":140,"name":141,"nameZh":6,"description":142,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":143,"categories":144,"keywords":145,"publishedAt":43},"01M6BYXS3HEQYWXFJXYACRCA4H","migrating-deep-agents-to-pydantic-ai-harness","Migrate Python LangChain Deep Agents applications to Pydantic AI and Pydantic AI Harness. Use when the source uses the upstream `deepagents` package or demonstrably reproduces its middleware, backends, skills, memory, subagents, or sandbox contracts. Use `migrating-langchain-to-pydantic-ai` for plain LangChain, LangGraph, or LCEL migrations and `pydantic-ai-harness` for greenfield Harness usage.","https:\u002F\u002Fgithub.com\u002Fpydantic\u002Fpydantic-ai\u002Fblob\u002Fmain\u002Fsrc\u002Fpydantic_ai_harness\u002Fpydantic_ai_harness\u002F.agents\u002Fskills\u002Fmigrating-deep-agents-to-pydantic-ai-harness\u002FSKILL.md",[],[40,23,12,146,147,27,148,103,96,149,35,26,150,151,152,33,153,28,154,155,156,32,25],"migrating deep agents to pydantic ai harness","deep","deep agents","langgraph","sandbox","package","langchain","usage","deepagents","middleware","upstream",{"skillNo":158,"name":159,"nameZh":6,"description":160,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":161,"categories":162,"keywords":163,"publishedAt":43},"01M6BYXP4FFSW83DR07RZ789DR","migrating-vercel-ai-sdk-and-eve-to-pydantic-ai","Migrate TypeScript Vercel AI SDK or Eve applications to Python with Pydantic AI and, only when needed, Pydantic AI Harness. Use when source code imports `ai`, `@ai-sdk\u002F*`, or `eve`, or relies on `generateText`, `streamText`, `ToolLoopAgent`, `useChat`, Eve agents, tools, skills, subagents, approvals, sessions, channels, schedules, or sandboxes.","https:\u002F\u002Fgithub.com\u002Fpydantic\u002Fpydantic-ai\u002Fblob\u002Fmain\u002Fpydantic_ai_slim\u002Fpydantic_ai\u002F.agents\u002Fskills\u002Fmigrating-vercel-ai-sdk-and-eve-to-pydantic-ai\u002FSKILL.md",[],[23,12,20,164,165,166,167,168,40,35,26,169,42,33,36,100,170,102,27,32,171,25,103],"ai sdk","eve","migrating vercel ai sdk and eve to pydantic ai","vercel","vercel ai sdk","typescript","sandboxes","schedules",{"skillNo":173,"name":174,"nameZh":6,"description":175,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":176,"categories":177,"keywords":178,"publishedAt":43},"01M6BYXJXKEK0384TZNH0R1ZVY","migrating-pi-to-pydantic-ai","Migrate TypeScript Pi coding-agent applications, extensions, or packages to Python with Pydantic AI and Pydantic AI Harness. Use when source code imports `@earendil-works\u002Fpi-*`, calls `createAgentSession`, registers Pi extensions, or relies on Pi tools, hooks, skills, sessions, compaction, providers, TUI, RPC, or packages.","https:\u002F\u002Fgithub.com\u002Fpydantic\u002Fpydantic-ai\u002Fblob\u002Fmain\u002Fpydantic_ai_slim\u002Fpydantic_ai\u002F.agents\u002Fskills\u002Fmigrating-pi-to-pydantic-ai\u002FSKILL.md",[],[23,12,179,180,40,181,35,26,169,42,182,33,36,100,183,184,101,25,185,103,186,187,188,189,190],"migrating pi to pydantic ai","pi","packages","rpc","coding","Providers","pi extensions","imports","source","Coding-Agent","source code","compaction"]