{
  "name": "pydantic-ai — 9 skills",
  "slug": "source-skills-294c4ff7b5bacbe9a4adcfab",
  "type": "skills",
  "category": "developer-tools",
  "example": false,
  "evidence_state": "pinned_source_listing",
  "stamp": "Pinned source listing — machine-checked",
  "summary": "Pinned source declarations and file hashes were listed.",
  "outcome": "Listed 9 skill declarations. Ran 56 git commands; each one's exit status and output hash is in commands.json. Scope: acquisition and static inspection.",
  "rule_results": [
    "The retained source tree matches its acquisition manifest.",
    "Declared skill names (listing.json): building-pydantic-ai-agents; migrating-agno-to-pydantic-ai; migrating-claude-agent-sdk-to-pydantic-ai; migrating-google-adk-to-pydantic-ai; migrating-langchain-to-pydantic-ai; migrating-mastra-to-pydantic-ai; migrating-openai-agents-sdk-to-pydantic-ai; migrating-pi-to-pydantic-ai; migrating-vercel-ai-sdk-and-eve-to-pydantic-ai"
  ],
  "task": "What declarations and files are present in this pinned source?",
  "setup": "Git blob acquisition followed by static source inspection.",
  "limitations": "Scope: acquisition and static inspection. Command results: commands.json.",
  "source_url": "https://github.com/pydantic/skills.git",
  "documentation_url": "https://github.com/pydantic/skills.git",
  "commit": "238d97102650c1caa51f35027aee13c469c59542",
  "tree_sha256": "2d547fdf55d7e8190ea9fc330e4914a238142f325174af7613fff6525c3b5ad5",
  "file_sha256": {
    "plugins/ai/.claude-plugin/plugin.json": "226e0fc0eadb997420b34f68176cb309160a77e70b32d0b28c27470f700190b1",
    "plugins/ai/README.md": "6b6b9994d1f7b22dec0394db50b40cecf6cc9e535194af277a9c09036d3e4f43",
    "plugins/ai/skills/building-pydantic-ai-agents/SKILL.md": "1f9231f777a70f3c304b905a14d10b6c56cb28fa9590f2eee64f2548974809ac",
    "plugins/ai/skills/building-pydantic-ai-agents/references/AGENTS-CORE.md": "978742cce17d0795a1cbe75fa0db6a921bcaa6b3852e43addacbd9920edf6faa",
    "plugins/ai/skills/building-pydantic-ai-agents/references/ARCHITECTURE.md": "3d250f0268eff69cd598c252f7bd413f4984cd87332cedc1e609b0d0a6e930f4",
    "plugins/ai/skills/building-pydantic-ai-agents/references/CAPABILITIES-AND-HOOKS.md": "a85ae4f5a4e52c2a57bc31c7bd0f8cfd12423a9b8f3b3509b5be5c378eba985c",
    "plugins/ai/skills/building-pydantic-ai-agents/references/COMMON-TASKS.md": "4d9ef2faeb4c92a5f9da1fe62a28007f48dd21469b7e3857ca3de319cff6420a",
    "plugins/ai/skills/building-pydantic-ai-agents/references/INPUT-AND-HISTORY.md": "81ec77dfe6c61ada662386f92179ec00ae2376dcaff20df4364eb7feb5a3c107",
    "plugins/ai/skills/building-pydantic-ai-agents/references/NATIVE-TOOLS.md": "7dd5fcfd8445eebe4f09d0a2da69f227dfa0b3cf900ff4bbe4d63d65177db434",
    "plugins/ai/skills/building-pydantic-ai-agents/references/ON-DEMAND-CAPABILITIES.md": "9b84b9f903337fff6dd32fea40e505a08e2b367f7efe4fafa2331af7f67f9d70",
    "plugins/ai/skills/building-pydantic-ai-agents/references/ORCHESTRATION-AND-INTEGRATIONS.md": "f803d8b32616119c9ef3458f075f997327183e112c609454c901c1c1ef9e3e63",
    "plugins/ai/skills/building-pydantic-ai-agents/references/TESTING-AND-DEBUGGING.md": "a3b8bfc6e7b3776d99837840b88197d3a73e3df29cd54d223b76b831ad0391f0",
    "plugins/ai/skills/building-pydantic-ai-agents/references/TOOLS-ADVANCED.md": "723a7499353e2386486b6c2950474a71e7cdb4758483a17a752ad7e7ef213bf9",
    "plugins/ai/skills/building-pydantic-ai-agents/references/TOOLS-CORE.md": "d48d3823afe066b86737e4860e6ac1fe7c4595f43e7aaf9eb793009f485c4dc5",
    "plugins/ai/skills/migrating-agno-to-pydantic-ai/SKILL.md": "84650df240ba2bc6f490628ca0bd1ae4e8ac8a6319265d16f6059a091ad3f007",
    "plugins/ai/skills/migrating-agno-to-pydantic-ai/agents/openai.yaml": "09aebffa527240097166202c8860f7cfdbf2716c5704a5f06f4832160f79b19e",
    "plugins/ai/skills/migrating-agno-to-pydantic-ai/references/RESEARCH-AND-MAPPING.md": "b30cef620be51d23a372fea807b582d570479a173bcfed09e310322f77587ee6",
    "plugins/ai/skills/migrating-agno-to-pydantic-ai/references/VERIFICATION-AND-CUTOVER.md": "ed0cf8688dc19e4757d04ea16765cd934176c7065072e7eecd45101362756807",
    "plugins/ai/skills/migrating-claude-agent-sdk-to-pydantic-ai/SKILL.md": "72f0b0308584bdf24bd0b51db054b58bc7c9f320b81f964da1b608c7383f04aa",
    "plugins/ai/skills/migrating-claude-agent-sdk-to-pydantic-ai/agents/openai.yaml": "e55539bd0796bf07868f2404da96b3e4c1625b328ff58c15aee7ebf73754e071",
    "plugins/ai/skills/migrating-claude-agent-sdk-to-pydantic-ai/references/RESEARCH-AND-MAPPING.md": "8eb02e8fab667aa5e960d273171df87b042016228e678290fb72c9f3ccb172e4",
    "plugins/ai/skills/migrating-claude-agent-sdk-to-pydantic-ai/references/VERIFICATION-AND-CUTOVER.md": "bd3fc3bb16772eb7845270249a525ff277af38e74ec7271472509c7ca6eb9250",
    "plugins/ai/skills/migrating-google-adk-to-pydantic-ai/SKILL.md": "b5e64220b51cefa283178b3c1d880f18ffbe49a1869982e7a7e321bbb70434e1",
    "plugins/ai/skills/migrating-google-adk-to-pydantic-ai/agents/openai.yaml": "d0a2a54f2b64567e1982d16ed39c0f8a3261dd8a70bc27ad6b8bdd449ce6dec3",
    "plugins/ai/skills/migrating-google-adk-to-pydantic-ai/references/CONCEPT-MAPPING.md": "07c1c04cb8b0de9540cf10e6f947958769af3ae1e33b40ca580f70ebefb9c2d0",
    "plugins/ai/skills/migrating-google-adk-to-pydantic-ai/references/SEMANTIC-GAPS.md": "7e1057e82d3d4b7d917d92e6d77fb802e1a8574a7710e2bf89e73ae34d291d42",
    "plugins/ai/skills/migrating-google-adk-to-pydantic-ai/references/VERIFICATION-AND-CUTOVER.md": "32388a11d6c4c189b7403835e8183055384e618832683f73529b976c62746859",
    "plugins/ai/skills/migrating-langchain-to-pydantic-ai/SKILL.md": "fa3e3698d7b4855ff41f1f3147badeba1632e4c77771a8bd72e72166d3cf6b74",
    "plugins/ai/skills/migrating-langchain-to-pydantic-ai/agents/openai.yaml": "5f473508baf0b8cd3ea297a44c234fe86f7acdd48e9f646eb11c1124ff910719",
    "plugins/ai/skills/migrating-langchain-to-pydantic-ai/references/CONCEPT-MAPPING.md": "639dd00ea30e90fae5b8d10c164b33e1e0152405a8d44204de5aff598263d442",
    "plugins/ai/skills/migrating-langchain-to-pydantic-ai/references/DEEP-AGENTS-MAPPING.md": "dc04684f7bb9bda3c82c2cc75bae613838697c60b83ec76d2ed40c2c35a6987e",
    "plugins/ai/skills/migrating-langchain-to-pydantic-ai/references/LOGFIRE-VERIFICATION.md": "3bcd766b0129343b6a92dee72d9714969d22d8fe1bd589b12503b3d1ade21ba5",
    "plugins/ai/skills/migrating-langchain-to-pydantic-ai/references/SEMANTIC-GAPS.md": "00c7f5743b010da19e89151116f8a51b259e4b516c744aae7f248f85a7f62347",
    "plugins/ai/skills/migrating-langchain-to-pydantic-ai/references/VERIFICATION-AND-CUTOVER.md": "1b31370b7df361c9022ea36b364697a116f03ce73f9869bcc51c1ed0a7cc76c2",
    "plugins/ai/skills/migrating-langchain-to-pydantic-ai/references/WORKAROUND-RECIPES.md": "4cbd0d4337a938f7bf358e27a3cbf881e8922e31d478a3bb81465d1ff8e79956",
    "plugins/ai/skills/migrating-mastra-to-pydantic-ai/SKILL.md": "721f38c7611118581fb4fb65366e52d4289db548cbd73e900642077247733d82",
    "plugins/ai/skills/migrating-mastra-to-pydantic-ai/agents/openai.yaml": "b6c9186a81ee93401ff5c9e8883642da0ab895a473b365b273d7c9a0ed8fad57",
    "plugins/ai/skills/migrating-mastra-to-pydantic-ai/references/RESEARCH-AND-MAPPING.md": "6bf9a6853aede2ede5237d1597c6745d4ae1c0be25421c0a1973cf0f0c6570c6",
    "plugins/ai/skills/migrating-mastra-to-pydantic-ai/references/VERIFICATION-AND-CUTOVER.md": "d491f140e006471f83f9f021ed98fc6cfc2ce1a6726f9e7de91216688eb47d70",
    "plugins/ai/skills/migrating-openai-agents-sdk-to-pydantic-ai/SKILL.md": "a4d08cccc6f650db7e1e7e89af52f4a9abc83093c11cc1d720cbac88d85c3069",
    "plugins/ai/skills/migrating-openai-agents-sdk-to-pydantic-ai/agents/openai.yaml": "460fb927a21f1d60240842e7fb8e84ad22934dc303624c10556e620a7c0d364a",
    "plugins/ai/skills/migrating-openai-agents-sdk-to-pydantic-ai/references/CONCEPT-MAPPING.md": "6dcdb79cf998a5484f2deb5ff7f53aaa1844d9c5998caba2f914980457a79f5e",
    "plugins/ai/skills/migrating-openai-agents-sdk-to-pydantic-ai/references/VERIFICATION-AND-CUTOVER.md": "6b8373d997118e30d5a48f8a76429a5008f53b9fa2b358863f9e3026e0a891d1",
    "plugins/ai/skills/migrating-pi-to-pydantic-ai/SKILL.md": "3011d66196adc26d04624633e39a1fb0ce92af77742ce5e1ef564fa69b32a483",
    "plugins/ai/skills/migrating-pi-to-pydantic-ai/agents/openai.yaml": "07e14262946c7e3287413a39a0dee4a25ee1c5370c995047376778c0bb7bc8db",
    "plugins/ai/skills/migrating-pi-to-pydantic-ai/references/RESEARCH-AND-MAPPING.md": "15e950090092a60249be053abe1b147932989bfe8d95e2755d597bad6a55eef6",
    "plugins/ai/skills/migrating-pi-to-pydantic-ai/references/VERIFICATION-AND-CUTOVER.md": "4fed2ca60d895f9cdb161862e78c4ec8806cef71a4681508cceda02d631bff8f",
    "plugins/ai/skills/migrating-vercel-ai-sdk-and-eve-to-pydantic-ai/SKILL.md": "70ef3f68ed69d867a441b55be684e3c7406d2a8d6e755f48008823a9d129e646",
    "plugins/ai/skills/migrating-vercel-ai-sdk-and-eve-to-pydantic-ai/agents/openai.yaml": "04e36fd25ad1fdabef1629d7d318198977373ea03f3bb37bb5303684fd2ff63f",
    "plugins/ai/skills/migrating-vercel-ai-sdk-and-eve-to-pydantic-ai/references/RESEARCH-AND-MAPPING.md": "d5323be2b684f5e37dc7b16664140716bd7cc97abde2df5c39e105684d5b4dfb",
    "plugins/ai/skills/migrating-vercel-ai-sdk-and-eve-to-pydantic-ai/references/VERIFICATION-AND-CUTOVER.md": "9cad8c13461a946b1c2223aa7e2628144eb1338f464c94eafa5ff1c3b3edca27"
  },
  "lockfiles": [
    "LOCK.json"
  ],
  "utc_date": "2026-10-19T12:16:17Z",
  "source_date": "2026-10-16",
  "discovered_date": "2026-10-16",
  "retested_date": "2026-10-19",
  "reviewed_date": "2026-10-19",
  "published_date": "2026-10-19",
  "modified_date": "2026-10-19",
  "reviewer": "machine pipeline",
  "harness_version": "toolwitness harness at commit bb5f6ab8ae7d288da61715b984ccaa78e6224577",
  "claude_code_version": "Not applicable: static source inspection (commands.json).",
  "model_id": "Not applicable: static source inspection (commands.json).",
  "scanner_version": "Not applicable: static source inspection.",
  "rulepack_version": "Not applicable: static source inspection.",
  "agents": [],
  "disclaimer": "This record lists declarations and file hashes from a pinned source tree. Git command results from acquisition and static inspection are retained in commands.json. Scope: acquisition and static inspection. It is not a security or quality verdict. Changed bytes are outside this record.",
  "commands": [
    "Ran 56 git commands; each one's exit status and output hash is in commands.json. Scope: acquisition and static inspection."
  ],
  "prompt_list": [
    "Not applicable: static source inspection (commands.json)."
  ],
  "history": [
    "2026-10-19T12:16:17Z: pinned source inspection"
  ],
  "application": {
    "name": "pydantic-ai — 9 skills",
    "softwareVersion": "238d97102650c1caa51f35027aee13c469c59542",
    "applicationCategory": "DeveloperApplication",
    "operatingSystem": "Not exercised"
  },
  "artifacts": {
    "transcript": "Ran 56 git commands; each one's exit status and output hash is in commands.json. Scope: acquisition and static inspection.",
    "sinkhole_log": "Not applicable: static source inspection (commands.json).",
    "canary_log": "Not applicable: static source inspection (commands.json).",
    "scanner_output": "Not applicable: static source inspection (commands.json).",
    "normalized_text": "{\n  \"listing\": {\n    \"skills\": [\n      {\n        \"path\": \"plugins/ai/skills/building-pydantic-ai-agents/SKILL.md\",\n        \"name\": \"building-pydantic-ai-agents\",\n        \"description\": \"Build AI agents with Pydantic AI — tools, capabilities (including on-demand loading), structured output, streaming, testing, and multi-agent patterns. Use when the user mentions Pydantic AI, imports pydantic_ai, or asks to build an AI agent, add tools/capabilities, defer capability loading, stream output, define agents from YAML, or test agent behavior.\",\n        \"files\": {\n          \"plugins/ai/skills/building-pydantic-ai-agents/SKILL.md\": \"1f9231f777a70f3c304b905a14d10b6c56cb28fa9590f2eee64f2548974809ac\",\n          \"plugins/ai/skills/building-pydantic-ai-agents/references/AGENTS-CORE.md\": \"978742cce17d0795a1cbe75fa0db6a921bcaa6b3852e43addacbd9920edf6faa\",\n          \"plugins/ai/skills/building-pydantic-ai-agents/references/ARCHITECTURE.md\": \"3d250f0268eff69cd598c252f7bd413f4984cd87332cedc1e609b0d0a6e930f4\",\n          \"plugins/ai/skills/building-pydantic-ai-agents/references/CAPABILITIES-AND-HOOKS.md\": \"a85ae4f5a4e52c2a57bc31c7bd0f8cfd12423a9b8f3b3509b5be5c378eba985c\",\n          \"plugins/ai/skills/building-pydantic-ai-agents/references/COMMON-TASKS.md\": \"4d9ef2faeb4c92a5f9da1fe62a28007f48dd21469b7e3857ca3de319cff6420a\",\n          \"plugins/ai/skills/building-pydantic-ai-agents/references/INPUT-AND-HISTORY.md\": \"81ec77dfe6c61ada662386f92179ec00ae2376dcaff20df4364eb7feb5a3c107\",\n          \"plugins/ai/skills/building-pydantic-ai-agents/references/NATIVE-TOOLS.md\": \"7dd5fcfd8445eebe4f09d0a2da69f227dfa0b3cf900ff4bbe4d63d65177db434\",\n          \"plugins/ai/skills/building-pydantic-ai-agents/references/ON-DEMAND-CAPABILITIES.md\": \"9b84b9f903337fff6dd32fea40e505a08e2b367f7efe4fafa2331af7f67f9d70\",\n          \"plugins/ai/skills/building-pydantic-ai-agents/references/ORCHESTRATION-AND-INTEGRATIONS.md\": \"f803d8b32616119c9ef3458f075f997327183e112c609454c901c1c1ef9e3e63\",\n          \"plugins/ai/skills/building-pydantic-ai-agents/references/TESTING-AND-DEBUGGING.md\": \"a3b8bfc6e7b3776d99837840b88197d3a73e3df29cd54d223b76b831ad0391f0\",\n          \"plugins/ai/skills/building-pydantic-ai-agents/references/TOOLS-ADVANCED.md\": \"723a7499353e2386486b6c2950474a71e7cdb4758483a17a752ad7e7ef213bf9\",\n          \"plugins/ai/skills/building-pydantic-ai-agents/references/TOOLS-CORE.md\": \"d48d3823afe066b86737e4860e6ac1fe7c4595f43e7aaf9eb793009f485c4dc5\"\n        }\n      },\n      {\n        \"path\": \"plugins/ai/skills/migrating-agno-to-pydantic-ai/SKILL.md\",\n        \"name\": \"migrating-agno-to-pydantic-ai\",\n        \"description\": \"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.\",\n        \"files\": {\n          \"plugins/ai/skills/migrating-agno-to-pydantic-ai/SKILL.md\": \"84650df240ba2bc6f490628ca0bd1ae4e8ac8a6319265d16f6059a091ad3f007\",\n          \"plugins/ai/skills/migrating-agno-to-pydantic-ai/agents/openai.yaml\": \"09aebffa527240097166202c8860f7cfdbf2716c5704a5f06f4832160f79b19e\",\n          \"plugins/ai/skills/migrating-agno-to-pydantic-ai/references/RESEARCH-AND-MAPPING.md\": \"b30cef620be51d23a372fea807b582d570479a173bcfed09e310322f77587ee6\",\n          \"plugins/ai/skills/migrating-agno-to-pydantic-ai/references/VERIFICATION-AND-CUTOVER.md\": \"ed0cf8688dc19e4757d04ea16765cd934176c7065072e7eecd45101362756807\"\n        }\n      },\n      {\n        \"path\": \"plugins/ai/skills/migrating-claude-agent-sdk-to-pydantic-ai/SKILL.md\",\n        \"name\": \"migrating-claude-agent-sdk-to-pydantic-ai\",\n        \"description\": \"Migrate Python applications from the Claude Agent SDK to Pydantic AI and, only when needed, Pydantic AI Harness. Use when source code imports `claude_agent_sdk` or relies on Claude Code's agent loop, sessions, built-in tools, hooks, permissions, skills, or subagents. Do not use for the Anthropic Messages SDK or Claude Managed Agents.\",\n        \"files\": {\n          \"plugins/ai/skills/migrating-claude-agent-sdk-to-pydantic-ai/SKILL.md\": \"72f0b0308584bdf24bd0b51db054b58bc7c9f320b81f964da1b608c7383f04aa\",\n          \"plugins/ai/skills/migrating-claude-agent-sdk-to-pydantic-ai/agents/openai.yaml\": \"e55539bd0796bf07868f2404da96b3e4c1625b328ff58c15aee7ebf73754e071\",\n          \"plugins/ai/skills/migrating-claude-agent-sdk-to-pydantic-ai/references/RESEARCH-AND-MAPPING.md\": \"8eb02e8fab667aa5e960d273171df87b042016228e678290fb72c9f3ccb172e4\",\n          \"plugins/ai/skills/migrating-claude-agent-sdk-to-pydantic-ai/references/VERIFICATION-AND-CUTOVER.md\": \"bd3fc3bb16772eb7845270249a525ff277af38e74ec7271472509c7ca6eb9250\"\n        }\n      },\n      {\n        \"path\": \"plugins/ai/skills/migrating-google-adk-to-pydantic-ai/SKILL.md\",\n        \"name\": \"migrating-google-adk-to-pydantic-ai\",\n        \"description\": \"Migrate Python Google Agent Development Kit (ADK) applications to Pydantic AI. Use for `LlmAgent`, `Runner`, sessions, state, memory, tools, callbacks, plugins, graph or dynamic workflows, resumability, events, artifacts, MCP, and ADK deployment boundaries.\",\n        \"files\": {\n          \"plugins/ai/skills/migrating-google-adk-to-pydantic-ai/SKILL.md\": \"b5e64220b51cefa283178b3c1d880f18ffbe49a1869982e7a7e321bbb70434e1\",\n          \"plugins/ai/skills/migrating-google-adk-to-pydantic-ai/agents/openai.yaml\": \"d0a2a54f2b64567e1982d16ed39c0f8a3261dd8a70bc27ad6b8bdd449ce6dec3\",\n          \"plugins/ai/skills/migrating-google-adk-to-pydantic-ai/references/CONCEPT-MAPPING.md\": \"07c1c04cb8b0de9540cf10e6f947958769af3ae1e33b40ca580f70ebefb9c2d0\",\n          \"plugins/ai/skills/migrating-google-adk-to-pydantic-ai/references/SEMANTIC-GAPS.md\": \"7e1057e82d3d4b7d917d92e6d77fb802e1a8574a7710e2bf89e73ae34d291d42\",\n          \"plugins/ai/skills/migrating-google-adk-to-pydantic-ai/references/VERIFICATION-AND-CUTOVER.md\": \"32388a11d6c4c189b7403835e8183055384e618832683f73529b976c62746859\"\n        }\n      },\n      {\n        \"path\": \"plugins/ai/skills/migrating-langchain-to-pydantic-ai/SKILL.md\",\n        \"name\": \"migrating-langchain-to-pydantic-ai\",\n        \"description\": \"Migrate Python LangChain, LangGraph, or Deep Agents applications to Pydantic AI and, when the source uses harness features, Pydantic AI Harness. Use for LangChain agents, chains, LCEL, direct LangGraph graphs, persistence, interrupts, streaming, and `create_deep_agent` projects with planning, filesystem or sandbox backends, skills, memory, subagents, permissions, approvals, or Deep Agents Code hosts.\",\n        \"files\": {\n          \"plugins/ai/skills/migrating-langchain-to-pydantic-ai/SKILL.md\": \"fa3e3698d7b4855ff41f1f3147badeba1632e4c77771a8bd72e72166d3cf6b74\",\n          \"plugins/ai/skills/migrating-langchain-to-pydantic-ai/agents/openai.yaml\": \"5f473508baf0b8cd3ea297a44c234fe86f7acdd48e9f646eb11c1124ff910719\",\n          \"plugins/ai/skills/migrating-langchain-to-pydantic-ai/references/CONCEPT-MAPPING.md\": \"639dd00ea30e90fae5b8d10c164b33e1e0152405a8d44204de5aff598263d442\",\n          \"plugins/ai/skills/migrating-langchain-to-pydantic-ai/references/DEEP-AGENTS-MAPPING.md\": \"dc04684f7bb9bda3c82c2cc75bae613838697c60b83ec76d2ed40c2c35a6987e\",\n          \"plugins/ai/skills/migrating-langchain-to-pydantic-ai/references/LOGFIRE-VERIFICATION.md\": \"3bcd766b0129343b6a92dee72d9714969d22d8fe1bd589b12503b3d1ade21ba5\",\n          \"plugins/ai/skills/migrating-langchain-to-pydantic-ai/references/SEMANTIC-GAPS.md\": \"00c7f5743b010da19e89151116f8a51b259e4b516c744aae7f248f85a7f62347\",\n          \"plugins/ai/skills/migrating-langchain-to-pydantic-ai/references/VERIFICATION-AND-CUTOVER.md\": \"1b31370b7df361c9022ea36b364697a116f03ce73f9869bcc51c1ed0a7cc76c2\",\n          \"plugins/ai/skills/migrating-langchain-to-pydantic-ai/references/WORKAROUND-RECIPES.md\": \"4cbd0d4337a938f7bf358e27a3cbf881e8922e31d478a3bb81465d1ff8e79956\"\n        }\n      },\n      {\n        \"path\": \"plugins/ai/skills/migrating-mastra-to-pydantic-ai/SKILL.md\",\n        \"name\": \"migrating-mastra-to-pydantic-ai\",\n        \"description\": \"Migrate TypeScript Mastra applications to Python with Pydantic AI and, only when needed, Pydantic AI Harness. Use when source code imports `@mastra/*` or relies on Mastra agents, tools, workflows, memory, processors, streaming, approvals, skills, or subagents.\",\n        \"files\": {\n          \"plugins/ai/skills/migrating-mastra-to-pydantic-ai/SKILL.md\": \"721f38c7611118581fb4fb65366e52d4289db548cbd73e900642077247733d82\",\n          \"plugins/ai/skills/migrating-mastra-to-pydantic-ai/agents/openai.yaml\": \"b6c9186a81ee93401ff5c9e8883642da0ab895a473b365b273d7c9a0ed8fad57\",\n          \"plugins/ai/skills/migrating-mastra-to-pydantic-ai/references/RESEARCH-AND-MAPPING.md\": \"6bf9a6853aede2ede5237d1597c6745d4ae1c0be25421c0a1973cf0f0c6570c6\",\n          \"plugins/ai/skills/migrating-mastra-to-pydantic-ai/references/VERIFICATION-AND-CUTOVER.md\": \"d491f140e006471f83f9f021ed98fc6cfc2ce1a6726f9e7de91216688eb47d70\"\n        }\n      },\n      {\n        \"path\": \"plugins/ai/skills/migrating-openai-agents-sdk-to-pydantic-ai/SKILL.md\",\n        \"name\": \"migrating-openai-agents-sdk-to-pydantic-ai\",\n        \"description\": \"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        \"files\": {\n          \"plugins/ai/skills/migrating-openai-agents-sdk-to-pydantic-ai/SKILL.md\": \"a4d08cccc6f650db7e1e7e89af52f4a9abc83093c11cc1d720cbac88d85c3069\",\n          \"plugins/ai/skills/migrating-openai-agents-sdk-to-pydantic-ai/agents/openai.yaml\": \"460fb927a21f1d60240842e7fb8e84ad22934dc303624c10556e620a7c0d364a\",\n          \"plugins/ai/skills/migrating-openai-agents-sdk-to-pydantic-ai/references/CONCEPT-MAPPING.md\": \"6dcdb79cf998a5484f2deb5ff7f53aaa1844d9c5998caba2f914980457a79f5e\",\n          \"plugins/ai/skills/migrating-openai-agents-sdk-to-pydantic-ai/references/VERIFICATION-AND-CUTOVER.md\": \"6b8373d997118e30d5a48f8a76429a5008f53b9fa2b358863f9e3026e0a891d1\"\n        }\n      },\n      {\n        \"path\": \"plugins/ai/skills/migrating-pi-to-pydantic-ai/SKILL.md\",\n        \"name\": \"migrating-pi-to-pydantic-ai\",\n        \"description\": \"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/pi-*`, calls `createAgentSession`, registers Pi extensions, or relies on Pi tools, hooks, skills, sessions, compaction, providers, TUI, RPC, or packages.\",\n        \"files\": {\n          \"plugins/ai/skills/migrating-pi-to-pydantic-ai/SKILL.md\": \"3011d66196adc26d04624633e39a1fb0ce92af77742ce5e1ef564fa69b32a483\",\n          \"plugins/ai/skills/migrating-pi-to-pydantic-ai/agents/openai.yaml\": \"07e14262946c7e3287413a39a0dee4a25ee1c5370c995047376778c0bb7bc8db\",\n          \"plugins/ai/skills/migrating-pi-to-pydantic-ai/references/RESEARCH-AND-MAPPING.md\": \"15e950090092a60249be053abe1b147932989bfe8d95e2755d597bad6a55eef6\",\n          \"plugins/ai/skills/migrating-pi-to-pydantic-ai/references/VERIFICATION-AND-CUTOVER.md\": \"4fed2ca60d895f9cdb161862e78c4ec8806cef71a4681508cceda02d631bff8f\"\n        }\n      },\n      {\n        \"path\": \"plugins/ai/skills/migrating-vercel-ai-sdk-and-eve-to-pydantic-ai/SKILL.md\",\n        \"name\": \"migrating-vercel-ai-sdk-and-eve-to-pydantic-ai\",\n        \"description\": \"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/*`, or `eve`, or relies on `generateText`, `streamText`, `ToolLoopAgent`, `useChat`, Eve agents, tools, skills, subagents, approvals, sessions, channels, schedules, or sandboxes.\",\n        \"files\": {\n          \"plugins/ai/skills/migrating-vercel-ai-sdk-and-eve-to-pydantic-ai/SKILL.md\": \"70ef3f68ed69d867a441b55be684e3c7406d2a8d6e755f48008823a9d129e646\",\n          \"plugins/ai/skills/migrating-vercel-ai-sdk-and-eve-to-pydantic-ai/agents/openai.yaml\": \"04e36fd25ad1fdabef1629d7d318198977373ea03f3bb37bb5303684fd2ff63f\",\n          \"plugins/ai/skills/migrating-vercel-ai-sdk-and-eve-to-pydantic-ai/references/RESEARCH-AND-MAPPING.md\": \"d5323be2b684f5e37dc7b16664140716bd7cc97abde2df5c39e105684d5b4dfb\",\n          \"plugins/ai/skills/migrating-vercel-ai-sdk-and-eve-to-pydantic-ai/references/VERIFICATION-AND-CUTOVER.md\": \"9cad8c13461a946b1c2223aa7e2628144eb1338f464c94eafa5ff1c3b3edca27\"\n        }\n      }\n    ],\n    \"hooks\": [],\n    \"executions\": []\n  }\n}"
  },
  "review_input": {
    "identity_artifact": "identity.json",
    "evidence_sha256": {
      "LOCK.json": "c5485ee8494ddea351d7d47ebc840983105e46bded73c567f515b37033f6dd85",
      "commands.json": "ae512d7ebf54b43e6d869917d533c90026a55c9f2fee0d71fc8e31282695c6af",
      "complete.json": "91b504b43905fdc009504d516c45eea831f39a1995b9e7d69987c9756c936d6f",
      "identity.json": "0a01919101a68c66ee9d4c5196b8d69507b332fa16415f8d0241bcdc1e3be303",
      "listing.json": "b64049f4ce7dbe8268c6c384dcf07afdcf13ee358b07f55b60ba848fb3d2692b",
      "selection.json": "0ee6cf5e2f4ac80ffc4bfc9e72e290a9fb8ed9071f6f87aa9ccbfb1f0280b786"
    },
    "claims": [
      {
        "id": "acquired",
        "field": "summary",
        "text": "Pinned source declarations and file hashes were listed.",
        "sources": [
          "LOCK.json",
          "listing.json",
          "commands.json"
        ]
      },
      {
        "id": "listed",
        "field": "outcome",
        "text": "Listed 9 skill declarations. Ran 56 git commands; each one's exit status and output hash is in commands.json. Scope: acquisition and static inspection.",
        "sources": [
          "LOCK.json",
          "listing.json",
          "commands.json"
        ]
      },
      {
        "id": "tree",
        "field": "rule_results.0",
        "text": "The retained source tree matches its acquisition manifest.",
        "sources": [
          "LOCK.json",
          "listing.json",
          "commands.json"
        ]
      },
      {
        "id": "declared",
        "field": "rule_results.1",
        "text": "Declared skill names (listing.json): building-pydantic-ai-agents; migrating-agno-to-pydantic-ai; migrating-claude-agent-sdk-to-pydantic-ai; migrating-google-adk-to-pydantic-ai; migrating-langchain-to-pydantic-ai; migrating-mastra-to-pydantic-ai; migrating-openai-agents-sdk-to-pydantic-ai; migrating-pi-to-pydantic-ai; migrating-vercel-ai-sdk-and-eve-to-pydantic-ai",
        "sources": [
          "LOCK.json",
          "listing.json",
          "commands.json"
        ]
      }
    ]
  },
  "review": {
    "kind": "machine-checked",
    "date": "2026-10-19",
    "reviewed_sha256": "78fca1f667d48dbca8cb29f607c42f5aebf165f2312960e6c26d5483b1abf9fd",
    "gates": "75101ca7440b87d050a789375b2c9e8ef9577fc3c206a5659cc76e2ee0970821",
    "codex": "9dae48086b95d3277d0b2db39bfc8e32e55adcc1acabd03b00024fbc4890a475",
    "grok": "cd5ba18537368c1f35f5111aceb56ccff06ef6883828e52ef60e35c84eebc051",
    "summary": "Deterministic gates passed; every claim rebuilt from evidence with a reviewed template; Grok reported no standing refutation."
  }
}
