[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6ADYAGXRBBCT3TANNAV2WYB":3,"skill-same:01M6ADYAGXRBBCT3TANNAV2WYB":759},{"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":23,"publishedAt":44,"linkOnly":45,"markdownContent":46,"markdownBody":47,"frontMatter":48,"refName":60,"commitSha":61,"skillDirectory":62,"forksCount":63,"repositoryHtmlUrl":64,"repositoryHomepageUrl":65,"ownerHtmlUrl":66,"ownerBlogUrl":67,"ownerDescription":68,"updatedAt":69,"install":70,"resources":83},"01M6ADYAGXRBBCT3TANNAV2WYB","pydantic-ai",null,"Build production-ready AI agents with PydanticAI — type-safe tool use, structured outputs, dependency injection, and multi-model support.","davila7\u002Fclaude-code-templates","davila7","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F6216945?v=4","01M6ADEWWFPS191NFM0Y1EX1JH","Daniel Avila","01M6ADJHGM78PHQRD3XZTFDVKK",33481,"MIT","https:\u002F\u002Fgithub.com\u002Fdavila7\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fai-research\u002Fpydantic-ai\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[24,25,26,27,28,29,30,5,31,32,33,34,35,36,37,38,39,40,41,42,43],"Pydantic","pydantic ai","tool","2026","production-ready","dependency injection","structured-output","community","multi-model","ready","dependency","model","safe","injection","tool use","openai","support","ai agents","python","gemini","2026-11-10 10:12:30",false,"---\nname: pydantic-ai\ndescription: \"Build production-ready AI agents with PydanticAI — type-safe tool use, structured outputs, dependency injection, and multi-model support.\"\nmetadata:\n  category: ai-agents\n  risk: safe\n  source: community\n  date_added: \"2026-03-18\"\n  author: suhaibjanjua\n  tags: [pydantic-ai, ai-agents, llm, openai, anthropic, gemini, tool-use, structured-output, python]\n  tools: [claude, cursor, gemini]\n---\n\n# PydanticAI — Typed AI Agents in Python\n\n## Overview\n\nPydanticAI is a Python agent framework from the Pydantic team that brings the same type-safety and validation guarantees as Pydantic to LLM-based applications. It supports structured outputs (validated with Pydantic models), dependency injection for testability, streamed responses, multi-turn conversations, and tool use — across OpenAI, Anthropic, Google Gemini, Groq, Mistral, and Ollama. Use this skill when building production AI agents, chatbots, or LLM pipelines where correctness and testability matter.\n\n## When to Use This Skill\n\n- Use when building Python AI agents that call tools and return structured data\n- Use when you need validated, typed LLM outputs (not raw strings)\n- Use when you want to write unit tests for agent logic without hitting a real LLM\n- Use when switching between LLM providers without rewriting agent code\n- Use when the user asks about `Agent`, `@agent.tool`, `RunContext`, `ModelRetry`, or `result_type`\n\n## How It Works\n\n### Step 1: Installation\n\n```bash\npip install pydantic-ai\n\n# Install extras for specific providers\npip install 'pydantic-ai[openai]'       # OpenAI \u002F Azure OpenAI\npip install 'pydantic-ai[anthropic]'    # Anthropic Claude\npip install 'pydantic-ai[gemini]'       # Google Gemini\npip install 'pydantic-ai[groq]'         # Groq\npip install 'pydantic-ai[vertexai]'     # Google Vertex AI\n```\n\n### Step 2: A Minimal Agent\n\n```python\nfrom pydantic_ai import Agent\n\n# Simple agent — returns a plain string\nagent = Agent(\n    'anthropic:claude-sonnet-4-6',\n    system_prompt='You are a helpful assistant. Be concise.',\n)\n\nresult = agent.run_sync('What is the capital of Japan?')\nprint(result.data)  # \"Tokyo\"\nprint(result.usage())  # Usage(requests=1, request_tokens=..., response_tokens=...)\n```\n\n### Step 3: Structured Output with Pydantic Models\n\n```python\nfrom pydantic import BaseModel\nfrom pydantic_ai import Agent\n\nclass MovieReview(BaseModel):\n    title: str\n    year: int\n    rating: float  # 0.0 to 10.0\n    summary: str\n    recommended: bool\n\nagent = Agent(\n    'openai:gpt-4o',\n    result_type=MovieReview,\n    system_prompt='You are a film critic. Return structured reviews.',\n)\n\nresult = agent.run_sync('Review Inception (2010)')\nreview = result.data  # Fully typed MovieReview instance\nprint(f\"{review.title} ({review.year}): {review.rating}\u002F10\")\nprint(f\"Recommended: {review.recommended}\")\n```\n\n### Step 4: Tool Use\n\nRegister tools with `@agent.tool` — the LLM can call them during a run:\n\n```python\nfrom pydantic_ai import Agent, RunContext\nfrom pydantic import BaseModel\nimport httpx\n\nclass WeatherReport(BaseModel):\n    city: str\n    temperature_c: float\n    condition: str\n\nweather_agent = Agent(\n    'anthropic:claude-sonnet-4-6',\n    result_type=WeatherReport,\n    system_prompt='Get current weather for the requested city.',\n)\n\n@weather_agent.tool\nasync def get_temperature(ctx: RunContext, city: str) -> dict:\n    \"\"\"Fetch the current temperature for a city from the weather API.\"\"\"\n    async with httpx.AsyncClient() as client:\n        r = await client.get(f'https:\u002F\u002Fwttr.in\u002F{city}?format=j1')\n        data = r.json()\n        return {\n            'temp_c': float(data['current_condition'][0]['temp_C']),\n            'description': data['current_condition'][0]['weatherDesc'][0]['value'],\n        }\n\nimport asyncio\nresult = asyncio.run(weather_agent.run('What is the weather in Tokyo?'))\nprint(result.data)\n```\n\n### Step 5: Dependency Injection\n\nInject services (database, HTTP clients, config) into agents for testability:\n\n```python\nfrom dataclasses import dataclass\nfrom pydantic_ai import Agent, RunContext\nfrom pydantic import BaseModel\n\n@dataclass\nclass Deps:\n    db: Database\n    user_id: str\n\nclass SupportResponse(BaseModel):\n    message: str\n    escalate: bool\n\nsupport_agent = Agent(\n    'openai:gpt-4o-mini',\n    deps_type=Deps,\n    result_type=SupportResponse,\n    system_prompt='You are a support agent. Use the tools to help customers.',\n)\n\n@support_agent.tool\nasync def get_order_history(ctx: RunContext[Deps]) -> list[dict]:\n    \"\"\"Fetch recent orders for the current user.\"\"\"\n    return await ctx.deps.db.get_orders(ctx.deps.user_id, limit=5)\n\n@support_agent.tool\nasync def create_refund(ctx: RunContext[Deps], order_id: str, reason: str) -> dict:\n    \"\"\"Initiate a refund for a specific order.\"\"\"\n    return await ctx.deps.db.create_refund(order_id, reason, ctx.deps.user_id)\n\n# Usage\nasync def handle_support(user_id: str, message: str):\n    deps = Deps(db=get_db(), user_id=user_id)\n    result = await support_agent.run(message, deps=deps)\n    return result.data\n```\n\n### Step 6: Testing with TestModel\n\nWrite unit tests without real LLM calls:\n\n```python\nfrom pydantic_ai.models.test import TestModel\n\ndef test_support_agent_escalates():\n    with support_agent.override(model=TestModel()):\n        # TestModel returns a minimal valid response matching result_type\n        result = support_agent.run_sync(\n            'I want to cancel my account',\n            deps=Deps(db=FakeDb(), user_id='user-123'),\n        )\n    # Test the structure, not the LLM's exact words\n    assert isinstance(result.data, SupportResponse)\n    assert isinstance(result.data.escalate, bool)\n```\n\n**FunctionModel** for deterministic test responses:\n\n```python\nfrom pydantic_ai.models.function import FunctionModel, ModelContext\n\ndef my_model(messages, info):\n    return ModelResponse(parts=[TextPart('Always this response')])\n\nwith agent.override(model=FunctionModel(my_model)):\n    result = agent.run_sync('anything')\n```\n\n### Step 7: Streaming Responses\n\n```python\nimport asyncio\nfrom pydantic_ai import Agent\n\nagent = Agent('anthropic:claude-sonnet-4-6')\n\nasync def stream_response():\n    async with agent.run_stream('Write a haiku about Python') as result:\n        async for chunk in result.stream_text():\n            print(chunk, end='', flush=True)\n    print()  # newline\n    print(f\"Total tokens: {result.usage()}\")\n\nasyncio.run(stream_response())\n```\n\n### Step 8: Multi-Turn Conversations\n\n```python\nfrom pydantic_ai import Agent\nfrom pydantic_ai.messages import ModelMessagesTypeAdapter\n\nagent = Agent('openai:gpt-4o', system_prompt='You are a helpful assistant.')\n\n# First turn\nresult1 = agent.run_sync('My name is Alice.')\nhistory = result1.all_messages()\n\n# Second turn — passes conversation history\nresult2 = agent.run_sync('What is my name?', message_history=history)\nprint(result2.data)  # \"Your name is Alice.\"\n```\n\n## Examples\n\n### Example 1: Code Review Agent\n\n```python\nfrom pydantic import BaseModel, Field\nfrom pydantic_ai import Agent\nfrom typing import Literal\n\nclass CodeReview(BaseModel):\n    quality: Literal['excellent', 'good', 'needs_work', 'poor']\n    issues: list[str] = Field(default_factory=list)\n    suggestions: list[str] = Field(default_factory=list)\n    approved: bool\n\ncode_review_agent = Agent(\n    'anthropic:claude-sonnet-4-6',\n    result_type=CodeReview,\n    system_prompt=\"\"\"\n    You are a senior engineer performing code review.\n    Evaluate code quality, identify issues, and provide actionable suggestions.\n    Set approved=True only for good or excellent quality code with no security issues.\n    \"\"\",\n)\n\ndef review_code(diff: str) -> CodeReview:\n    result = code_review_agent.run_sync(f\"Review this code:\\n\\n{diff}\")\n    return result.data\n```\n\n### Example 2: Agent with Retry Logic\n\n```python\nfrom pydantic_ai import Agent, ModelRetry\nfrom pydantic import BaseModel, field_validator\n\nclass StrictJson(BaseModel):\n    value: int\n\n    @field_validator('value')\n    def must_be_positive(cls, v):\n        if v \u003C= 0:\n            raise ValueError('value must be positive')\n        return v\n\nagent = Agent('openai:gpt-4o-mini', result_type=StrictJson)\n\n@agent.result_validator\nasync def validate_result(ctx, result: StrictJson) -> StrictJson:\n    if result.value > 1000:\n        raise ModelRetry('Value must be under 1000. Try again with a smaller number.')\n    return result\n```\n\n### Example 3: Multi-Agent Pipeline\n\n```python\nfrom pydantic_ai import Agent\nfrom pydantic import BaseModel\n\nclass ResearchSummary(BaseModel):\n    key_points: list[str]\n    conclusion: str\n\nclass BlogPost(BaseModel):\n    title: str\n    body: str\n    meta_description: str\n\nresearcher = Agent('openai:gpt-4o', result_type=ResearchSummary)\nwriter = Agent('anthropic:claude-sonnet-4-6', result_type=BlogPost)\n\nasync def research_and_write(topic: str) -> BlogPost:\n    # Stage 1: research\n    research = await researcher.run(f'Research the topic: {topic}')\n\n    # Stage 2: write based on research\n    post = await writer.run(\n        f'Write a blog post about: {topic}\\n\\nResearch:\\n' +\n        '\\n'.join(f'- {p}' for p in research.data.key_points) +\n        f'\\n\\nConclusion: {research.data.conclusion}'\n    )\n    return post.data\n```\n\n## Best Practices\n\n- ✅ Always define `result_type` with a Pydantic model — avoid returning raw strings in production\n- ✅ Use `deps_type` with a dataclass for dependency injection — makes agents testable\n- ✅ Use `TestModel` in unit tests — never hit a real LLM in CI\n- ✅ Add `@agent.result_validator` for business-logic checks beyond Pydantic validation\n- ✅ Use `run_stream` for long outputs in user-facing applications to show progressive results\n- ❌ Don't put secrets (API keys) in `Agent()` arguments — use environment variables\n- ❌ Don't share a single `Agent` instance across async tasks if deps differ — create per-request instances or use `agent.run()` with per-call `deps`\n- ❌ Don't catch `ValidationError` broadly — let PydanticAI retry with `ModelRetry` for recoverable LLM output errors\n\n## Security & Safety Notes\n\n- Set API keys via environment variables (`OPENAI_API_KEY`, `ANTHROPIC_API_KEY`, etc.) — never hardcode them.\n- Validate all tool inputs before passing to external systems — use Pydantic models or manual checks.\n- Tools that mutate data (write to DB, send emails, call payment APIs) should require explicit user confirmation before the agent invokes them in production.\n- Log `result.all_messages()` for audit trails when agents perform consequential actions.\n- Set `retries=` limits on `Agent()` to prevent runaway loops on persistent validation failures.\n\n## Common Pitfalls\n\n- **Problem:** `ValidationError` on every LLM response — structured output never validates\n  **Solution:** Simplify `result_type` fields. Use `Optional` and `default` where appropriate. The model may struggle with overly strict schemas.\n\n- **Problem:** Tool is never called by the LLM\n  **Solution:** Write a clear, specific docstring for the tool function — PydanticAI sends the docstring as the tool description to the LLM.\n\n- **Problem:** `RunContext` dependency is `None` inside a tool\n  **Solution:** Pass `deps=` when calling `agent.run()` or `agent.run_sync()`. Dependencies are not set globally.\n\n- **Problem:** `asyncio.run()` error when calling `agent.run()` inside FastAPI\n  **Solution:** Use `await agent.run()` directly in async FastAPI route handlers — don't wrap in `asyncio.run()`.\n\n## Related Skills\n\n- `@langchain-architecture` — Alternative Python AI framework (more flexible, less type-safe)\n- `@llm-application-dev-ai-assistant` — General LLM application development patterns\n- `@fastapi-templates` — Serving PydanticAI agents via FastAPI endpoints\n- `@agent-orchestration-multi-agent-optimize` — Orchestrating multiple PydanticAI agents\n","# PydanticAI — Typed AI Agents in Python\n\n## Overview\n\nPydanticAI is a Python agent framework from the Pydantic team that brings the same type-safety and validation guarantees as Pydantic to LLM-based applications. It supports structured outputs (validated with Pydantic models), dependency injection for testability, streamed responses, multi-turn conversations, and tool use — across OpenAI, Anthropic, Google Gemini, Groq, Mistral, and Ollama. Use this skill when building production AI agents, chatbots, or LLM pipelines where correctness and testability matter.\n\n## When to Use This Skill\n\n- Use when building Python AI agents that call tools and return structured data\n- Use when you need validated, typed LLM outputs (not raw strings)\n- Use when you want to write unit tests for agent logic without hitting a real LLM\n- Use when switching between LLM providers without rewriting agent code\n- Use when the user asks about `Agent`, `@agent.tool`, `RunContext`, `ModelRetry`, or `result_type`\n\n## How It Works\n\n### Step 1: Installation\n\n```bash\npip install pydantic-ai\n\n# Install extras for specific providers\npip install 'pydantic-ai[openai]'       # OpenAI \u002F Azure OpenAI\npip install 'pydantic-ai[anthropic]'    # Anthropic Claude\npip install 'pydantic-ai[gemini]'       # Google Gemini\npip install 'pydantic-ai[groq]'         # Groq\npip install 'pydantic-ai[vertexai]'     # Google Vertex AI\n```\n\n### Step 2: A Minimal Agent\n\n```python\nfrom pydantic_ai import Agent\n\n# Simple agent — returns a plain string\nagent = Agent(\n    'anthropic:claude-sonnet-4-6',\n    system_prompt='You are a helpful assistant. Be concise.',\n)\n\nresult = agent.run_sync('What is the capital of Japan?')\nprint(result.data)  # \"Tokyo\"\nprint(result.usage())  # Usage(requests=1, request_tokens=..., response_tokens=...)\n```\n\n### Step 3: Structured Output with Pydantic Models\n\n```python\nfrom pydantic import BaseModel\nfrom pydantic_ai import Agent\n\nclass MovieReview(BaseModel):\n    title: str\n    year: int\n    rating: float  # 0.0 to 10.0\n    summary: str\n    recommended: bool\n\nagent = Agent(\n    'openai:gpt-4o',\n    result_type=MovieReview,\n    system_prompt='You are a film critic. Return structured reviews.',\n)\n\nresult = agent.run_sync('Review Inception (2010)')\nreview = result.data  # Fully typed MovieReview instance\nprint(f\"{review.title} ({review.year}): {review.rating}\u002F10\")\nprint(f\"Recommended: {review.recommended}\")\n```\n\n### Step 4: Tool Use\n\nRegister tools with `@agent.tool` — the LLM can call them during a run:\n\n```python\nfrom pydantic_ai import Agent, RunContext\nfrom pydantic import BaseModel\nimport httpx\n\nclass WeatherReport(BaseModel):\n    city: str\n    temperature_c: float\n    condition: str\n\nweather_agent = Agent(\n    'anthropic:claude-sonnet-4-6',\n    result_type=WeatherReport,\n    system_prompt='Get current weather for the requested city.',\n)\n\n@weather_agent.tool\nasync def get_temperature(ctx: RunContext, city: str) -> dict:\n    \"\"\"Fetch the current temperature for a city from the weather API.\"\"\"\n    async with httpx.AsyncClient() as client:\n        r = await client.get(f'https:\u002F\u002Fwttr.in\u002F{city}?format=j1')\n        data = r.json()\n        return {\n            'temp_c': float(data['current_condition'][0]['temp_C']),\n            'description': data['current_condition'][0]['weatherDesc'][0]['value'],\n        }\n\nimport asyncio\nresult = asyncio.run(weather_agent.run('What is the weather in Tokyo?'))\nprint(result.data)\n```\n\n### Step 5: Dependency Injection\n\nInject services (database, HTTP clients, config) into agents for testability:\n\n```python\nfrom dataclasses import dataclass\nfrom pydantic_ai import Agent, RunContext\nfrom pydantic import BaseModel\n\n@dataclass\nclass Deps:\n    db: Database\n    user_id: str\n\nclass SupportResponse(BaseModel):\n    message: str\n    escalate: bool\n\nsupport_agent = Agent(\n    'openai:gpt-4o-mini',\n    deps_type=Deps,\n    result_type=SupportResponse,\n    system_prompt='You are a support agent. Use the tools to help customers.',\n)\n\n@support_agent.tool\nasync def get_order_history(ctx: RunContext[Deps]) -> list[dict]:\n    \"\"\"Fetch recent orders for the current user.\"\"\"\n    return await ctx.deps.db.get_orders(ctx.deps.user_id, limit=5)\n\n@support_agent.tool\nasync def create_refund(ctx: RunContext[Deps], order_id: str, reason: str) -> dict:\n    \"\"\"Initiate a refund for a specific order.\"\"\"\n    return await ctx.deps.db.create_refund(order_id, reason, ctx.deps.user_id)\n\n# Usage\nasync def handle_support(user_id: str, message: str):\n    deps = Deps(db=get_db(), user_id=user_id)\n    result = await support_agent.run(message, deps=deps)\n    return result.data\n```\n\n### Step 6: Testing with TestModel\n\nWrite unit tests without real LLM calls:\n\n```python\nfrom pydantic_ai.models.test import TestModel\n\ndef test_support_agent_escalates():\n    with support_agent.override(model=TestModel()):\n        # TestModel returns a minimal valid response matching result_type\n        result = support_agent.run_sync(\n            'I want to cancel my account',\n            deps=Deps(db=FakeDb(), user_id='user-123'),\n        )\n    # Test the structure, not the LLM's exact words\n    assert isinstance(result.data, SupportResponse)\n    assert isinstance(result.data.escalate, bool)\n```\n\n**FunctionModel** for deterministic test responses:\n\n```python\nfrom pydantic_ai.models.function import FunctionModel, ModelContext\n\ndef my_model(messages, info):\n    return ModelResponse(parts=[TextPart('Always this response')])\n\nwith agent.override(model=FunctionModel(my_model)):\n    result = agent.run_sync('anything')\n```\n\n### Step 7: Streaming Responses\n\n```python\nimport asyncio\nfrom pydantic_ai import Agent\n\nagent = Agent('anthropic:claude-sonnet-4-6')\n\nasync def stream_response():\n    async with agent.run_stream('Write a haiku about Python') as result:\n        async for chunk in result.stream_text():\n            print(chunk, end='', flush=True)\n    print()  # newline\n    print(f\"Total tokens: {result.usage()}\")\n\nasyncio.run(stream_response())\n```\n\n### Step 8: Multi-Turn Conversations\n\n```python\nfrom pydantic_ai import Agent\nfrom pydantic_ai.messages import ModelMessagesTypeAdapter\n\nagent = Agent('openai:gpt-4o', system_prompt='You are a helpful assistant.')\n\n# First turn\nresult1 = agent.run_sync('My name is Alice.')\nhistory = result1.all_messages()\n\n# Second turn — passes conversation history\nresult2 = agent.run_sync('What is my name?', message_history=history)\nprint(result2.data)  # \"Your name is Alice.\"\n```\n\n## Examples\n\n### Example 1: Code Review Agent\n\n```python\nfrom pydantic import BaseModel, Field\nfrom pydantic_ai import Agent\nfrom typing import Literal\n\nclass CodeReview(BaseModel):\n    quality: Literal['excellent', 'good', 'needs_work', 'poor']\n    issues: list[str] = Field(default_factory=list)\n    suggestions: list[str] = Field(default_factory=list)\n    approved: bool\n\ncode_review_agent = Agent(\n    'anthropic:claude-sonnet-4-6',\n    result_type=CodeReview,\n    system_prompt=\"\"\"\n    You are a senior engineer performing code review.\n    Evaluate code quality, identify issues, and provide actionable suggestions.\n    Set approved=True only for good or excellent quality code with no security issues.\n    \"\"\",\n)\n\ndef review_code(diff: str) -> CodeReview:\n    result = code_review_agent.run_sync(f\"Review this code:\\n\\n{diff}\")\n    return result.data\n```\n\n### Example 2: Agent with Retry Logic\n\n```python\nfrom pydantic_ai import Agent, ModelRetry\nfrom pydantic import BaseModel, field_validator\n\nclass StrictJson(BaseModel):\n    value: int\n\n    @field_validator('value')\n    def must_be_positive(cls, v):\n        if v \u003C= 0:\n            raise ValueError('value must be positive')\n        return v\n\nagent = Agent('openai:gpt-4o-mini', result_type=StrictJson)\n\n@agent.result_validator\nasync def validate_result(ctx, result: StrictJson) -> StrictJson:\n    if result.value > 1000:\n        raise ModelRetry('Value must be under 1000. Try again with a smaller number.')\n    return result\n```\n\n### Example 3: Multi-Agent Pipeline\n\n```python\nfrom pydantic_ai import Agent\nfrom pydantic import BaseModel\n\nclass ResearchSummary(BaseModel):\n    key_points: list[str]\n    conclusion: str\n\nclass BlogPost(BaseModel):\n    title: str\n    body: str\n    meta_description: str\n\nresearcher = Agent('openai:gpt-4o', result_type=ResearchSummary)\nwriter = Agent('anthropic:claude-sonnet-4-6', result_type=BlogPost)\n\nasync def research_and_write(topic: str) -> BlogPost:\n    # Stage 1: research\n    research = await researcher.run(f'Research the topic: {topic}')\n\n    # Stage 2: write based on research\n    post = await writer.run(\n        f'Write a blog post about: {topic}\\n\\nResearch:\\n' +\n        '\\n'.join(f'- {p}' for p in research.data.key_points) +\n        f'\\n\\nConclusion: {research.data.conclusion}'\n    )\n    return post.data\n```\n\n## Best Practices\n\n- ✅ Always define `result_type` with a Pydantic model — avoid returning raw strings in production\n- ✅ Use `deps_type` with a dataclass for dependency injection — makes agents testable\n- ✅ Use `TestModel` in unit tests — never hit a real LLM in CI\n- ✅ Add `@agent.result_validator` for business-logic checks beyond Pydantic validation\n- ✅ Use `run_stream` for long outputs in user-facing applications to show progressive results\n- ❌ Don't put secrets (API keys) in `Agent()` arguments — use environment variables\n- ❌ Don't share a single `Agent` instance across async tasks if deps differ — create per-request instances or use `agent.run()` with per-call `deps`\n- ❌ Don't catch `ValidationError` broadly — let PydanticAI retry with `ModelRetry` for recoverable LLM output errors\n\n## Security & Safety Notes\n\n- Set API keys via environment variables (`OPENAI_API_KEY`, `ANTHROPIC_API_KEY`, etc.) — never hardcode them.\n- Validate all tool inputs before passing to external systems — use Pydantic models or manual checks.\n- Tools that mutate data (write to DB, send emails, call payment APIs) should require explicit user confirmation before the agent invokes them in production.\n- Log `result.all_messages()` for audit trails when agents perform consequential actions.\n- Set `retries=` limits on `Agent()` to prevent runaway loops on persistent validation failures.\n\n## Common Pitfalls\n\n- **Problem:** `ValidationError` on every LLM response — structured output never validates\n  **Solution:** Simplify `result_type` fields. Use `Optional` and `default` where appropriate. The model may struggle with overly strict schemas.\n\n- **Problem:** Tool is never called by the LLM\n  **Solution:** Write a clear, specific docstring for the tool function — PydanticAI sends the docstring as the tool description to the LLM.\n\n- **Problem:** `RunContext` dependency is `None` inside a tool\n  **Solution:** Pass `deps=` when calling `agent.run()` or `agent.run_sync()`. Dependencies are not set globally.\n\n- **Problem:** `asyncio.run()` error when calling `agent.run()` inside FastAPI\n  **Solution:** Use `await agent.run()` directly in async FastAPI route handlers — don't wrap in `asyncio.run()`.\n\n## Related Skills\n\n- `@langchain-architecture` — Alternative Python AI framework (more flexible, less type-safe)\n- `@llm-application-dev-ai-assistant` — General LLM application development patterns\n- `@fastapi-templates` — Serving PydanticAI agents via FastAPI endpoints\n- `@agent-orchestration-multi-agent-optimize` — Orchestrating multiple PydanticAI agents\n",{"name":5,"metadata":49,"description":7},{"risk":36,"tags":50,"tools":55,"author":58,"source":31,"category":51,"date_added":59},[5,51,52,39,53,43,54,30,42],"ai-agents","llm","anthropic","tool-use",[56,57,43],"claude","cursor","suhaibjanjua","2026-03-18","main","2b749c82b5d11fac39d9a6e021ce3f5b8a541bd1","cli-tool\u002Fcomponents\u002Fskills\u002Fai-research\u002Fpydantic-ai",3931,"https:\u002F\u002Fgithub.com\u002Fdavila7\u002Fclaude-code-templates","https:\u002F\u002Faitmpl.com","https:\u002F\u002Fgithub.com\u002Fdavila7","https:\u002F\u002Fdanielavila.me","Building AI dev tools with LLMs","2026-11-14 06:14:46",{"source":8,"skillName":5,"commands":71,"prompt":81,"zipAvailable":82},[72,75,78],{"tool":73,"command":74},"npx","npx skills add davila7\u002Fclaude-code-templates --skill pydantic-ai",{"tool":76,"command":77},"bunx","bunx skills add davila7\u002Fclaude-code-templates --skill pydantic-ai",{"tool":79,"command":80},"pnpm","pnpm dlx skills add davila7\u002Fclaude-code-templates --skill pydantic-ai","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fdavila7\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fai-research\u002Fpydantic-ai\u002FSKILL.md",true,[84,90,94,100,104,108,112,116,120,124,128,132,136,140,146,150,154,158,162,166,170,174,178,182,186,190,193,196,200,203,206,209,212,215,218,221,224,227,231,234,237,240,243,246,249,252,255,258,261,264,267,270,273,276,279,282,285,288,292,296,300,304,308,312,316,320,324,328,332,336,340,344,348,352,356,360,364,368,372,376,380,384,388,392,396,400,404,408,412,416,420,424,428,432,436,440,444,448,452,456,460,464,468,472,476,480,484,490,494,498,502,506,510,514,518,522,526,530,534,538,542,546,550,554,558,562,566,570,574,578,583,587,591,595,599,603,607,611,615,619,623,627,631,635,639,643,647,651,655,659,663,667,671,675,679,683,687,691,695,699,703,707,711,715,719,723,727,731,735,739,743,747,751,755],{"path":85,"resourceType":86,"resourceTypeDesc":87,"sizeBytes":88,"sourceHtmlUrl":89},".env.example","OTHER","其他",280,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002F.env.example",{"path":91,"resourceType":86,"resourceTypeDesc":87,"sizeBytes":92,"sourceHtmlUrl":93},".gitignore",812,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002F.gitignore",{"path":95,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":98,"sourceHtmlUrl":99},"assets\u002Fandroid_frame.jsx","ASSET","资产文件",4506,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Fassets\u002Fandroid_frame.jsx",{"path":101,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":102,"sourceHtmlUrl":103},"assets\u002Fanimations.jsx",10528,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Fassets\u002Fanimations.jsx",{"path":105,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":106,"sourceHtmlUrl":107},"assets\u002Fbanner.svg",9502,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Fassets\u002Fbanner.svg",{"path":109,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":110,"sourceHtmlUrl":111},"assets\u002Fbgm-ad.mp3",4950071,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Fassets\u002Fbgm-ad.mp3",{"path":113,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":114,"sourceHtmlUrl":115},"assets\u002Fbgm-educational-alt.mp3",4468765,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Fassets\u002Fbgm-educational-alt.mp3",{"path":117,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":118,"sourceHtmlUrl":119},"assets\u002Fbgm-educational.mp3",4047162,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Fassets\u002Fbgm-educational.mp3",{"path":121,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":122,"sourceHtmlUrl":123},"assets\u002Fbgm-tech.mp3",4818429,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Fassets\u002Fbgm-tech.mp3",{"path":125,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":126,"sourceHtmlUrl":127},"assets\u002Fbgm-tutorial-alt.mp3",3937926,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Fassets\u002Fbgm-tutorial-alt.mp3",{"path":129,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":130,"sourceHtmlUrl":131},"assets\u002Fbgm-tutorial.mp3",5542744,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Fassets\u002Fbgm-tutorial.mp3",{"path":133,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":134,"sourceHtmlUrl":135},"assets\u002Fbrowser_window.jsx",3975,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Fassets\u002Fbrowser_window.jsx",{"path":137,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":138,"sourceHtmlUrl":139},"assets\u002Fdeck_index.html",21144,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Fassets\u002Fdeck_index.html",{"path":141,"resourceType":142,"resourceTypeDesc":143,"sizeBytes":144,"sourceHtmlUrl":145},"assets\u002Fdeck_stage.js","SCRIPT","脚本",11678,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Fassets\u002Fdeck_stage.js",{"path":147,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":148,"sourceHtmlUrl":149},"assets\u002Fdesign_canvas.jsx",5195,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Fassets\u002Fdesign_canvas.jsx",{"path":151,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":152,"sourceHtmlUrl":153},"assets\u002Fdirector-notes-samples\u002Flaunch-film-30s-sample.md",80207,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Fassets\u002Fdirector-notes-samples\u002Flaunch-film-30s-sample.md",{"path":155,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":156,"sourceHtmlUrl":157},"assets\u002Fios_frame.jsx",4753,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Fassets\u002Fios_frame.jsx",{"path":159,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":160,"sourceHtmlUrl":161},"assets\u002Fmacos_window.jsx",2536,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Fassets\u002Fmacos_window.jsx",{"path":163,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":164,"sourceHtmlUrl":165},"assets\u002Fnarration_stage.jsx",17997,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Fassets\u002Fnarration_stage.jsx",{"path":167,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":168,"sourceHtmlUrl":169},"assets\u002Fpersonal-asset-index.example.json",1826,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Fassets\u002Fpersonal-asset-index.example.json",{"path":171,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":172,"sourceHtmlUrl":173},"assets\u002Fsfx\u002Fcontainer\u002Fcard-flip.mp3",12164,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Fassets\u002Fsfx\u002Fcontainer\u002Fcard-flip.mp3",{"path":175,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":176,"sourceHtmlUrl":177},"assets\u002Fsfx\u002Fcontainer\u002Fcard-snap.mp3",8821,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Fassets\u002Fsfx\u002Fcontainer\u002Fcard-snap.mp3",{"path":179,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":180,"sourceHtmlUrl":181},"assets\u002Fsfx\u002Fcontainer\u002Fmodal-open.mp3",10493,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Fassets\u002Fsfx\u002Fcontainer\u002Fmodal-open.mp3",{"path":183,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":184,"sourceHtmlUrl":185},"assets\u002Fsfx\u002Fcontainer\u002Fstack-collapse.mp3",13836,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Fassets\u002Fsfx\u002Fcontainer\u002Fstack-collapse.mp3",{"path":187,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":188,"sourceHtmlUrl":189},"assets\u002Fsfx\u002Ffeedback\u002Fachievement.mp3",24703,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Fassets\u002Fsfx\u002Ffeedback\u002Fachievement.mp3",{"path":191,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":172,"sourceHtmlUrl":192},"assets\u002Fsfx\u002Ffeedback\u002Ferror-tone.mp3","https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Fassets\u002Fsfx\u002Ffeedback\u002Ferror-tone.mp3",{"path":194,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":180,"sourceHtmlUrl":195},"assets\u002Fsfx\u002Ffeedback\u002Fnotification-pop.mp3","https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Fassets\u002Fsfx\u002Ffeedback\u002Fnotification-pop.mp3",{"path":197,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":198,"sourceHtmlUrl":199},"assets\u002Fsfx\u002Ffeedback\u002Fsuccess-chime.mp3",17180,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Fassets\u002Fsfx\u002Ffeedback\u002Fsuccess-chime.mp3",{"path":201,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":198,"sourceHtmlUrl":202},"assets\u002Fsfx\u002Fimpact\u002Fbrand-stamp.mp3","https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Fassets\u002Fsfx\u002Fimpact\u002Fbrand-stamp.mp3",{"path":204,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":172,"sourceHtmlUrl":205},"assets\u002Fsfx\u002Fimpact\u002Fdrop-thud.mp3","https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Fassets\u002Fsfx\u002Fimpact\u002Fdrop-thud.mp3",{"path":207,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":188,"sourceHtmlUrl":208},"assets\u002Fsfx\u002Fimpact\u002Flogo-reveal-v2.mp3","https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Fassets\u002Fsfx\u002Fimpact\u002Flogo-reveal-v2.mp3",{"path":210,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":188,"sourceHtmlUrl":211},"assets\u002Fsfx\u002Fimpact\u002Flogo-reveal.mp3","https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Fassets\u002Fsfx\u002Fimpact\u002Flogo-reveal.mp3",{"path":213,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":176,"sourceHtmlUrl":214},"assets\u002Fsfx\u002Fkeyboard\u002Fdelete-key.mp3","https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Fassets\u002Fsfx\u002Fkeyboard\u002Fdelete-key.mp3",{"path":216,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":176,"sourceHtmlUrl":217},"assets\u002Fsfx\u002Fkeyboard\u002Fenter.mp3","https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Fassets\u002Fsfx\u002Fkeyboard\u002Fenter.mp3",{"path":219,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":176,"sourceHtmlUrl":220},"assets\u002Fsfx\u002Fkeyboard\u002Fspace-tap.mp3","https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Fassets\u002Fsfx\u002Fkeyboard\u002Fspace-tap.mp3",{"path":222,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":188,"sourceHtmlUrl":223},"assets\u002Fsfx\u002Fkeyboard\u002Ftype-fast.mp3","https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Fassets\u002Fsfx\u002Fkeyboard\u002Ftype-fast.mp3",{"path":225,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":184,"sourceHtmlUrl":226},"assets\u002Fsfx\u002Fkeyboard\u002Ftype.mp3","https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Fassets\u002Fsfx\u002Fkeyboard\u002Ftype.mp3",{"path":228,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":229,"sourceHtmlUrl":230},"assets\u002Fsfx\u002Fmagic\u002Fai-process.mp3",20106,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Fassets\u002Fsfx\u002Fmagic\u002Fai-process.mp3",{"path":232,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":184,"sourceHtmlUrl":233},"assets\u002Fsfx\u002Fmagic\u002Fsparkle.mp3","https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Fassets\u002Fsfx\u002Fmagic\u002Fsparkle.mp3",{"path":235,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":198,"sourceHtmlUrl":236},"assets\u002Fsfx\u002Fmagic\u002Ftransform.mp3","https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Fassets\u002Fsfx\u002Fmagic\u002Ftransform.mp3",{"path":238,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":184,"sourceHtmlUrl":239},"assets\u002Fsfx\u002Fprogress\u002Fcomplete-done.mp3","https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Fassets\u002Fsfx\u002Fprogress\u002Fcomplete-done.mp3",{"path":241,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":184,"sourceHtmlUrl":242},"assets\u002Fsfx\u002Fprogress\u002Fgenerate-start.mp3","https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Fassets\u002Fsfx\u002Fprogress\u002Fgenerate-start.mp3",{"path":244,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":176,"sourceHtmlUrl":245},"assets\u002Fsfx\u002Fprogress\u002Floading-tick.mp3","https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Fassets\u002Fsfx\u002Fprogress\u002Floading-tick.mp3",{"path":247,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":176,"sourceHtmlUrl":248},"assets\u002Fsfx\u002Fterminal\u002Fcommand-execute.mp3","https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Fassets\u002Fsfx\u002Fterminal\u002Fcommand-execute.mp3",{"path":250,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":176,"sourceHtmlUrl":251},"assets\u002Fsfx\u002Fterminal\u002Fcursor-blink.mp3","https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Fassets\u002Fsfx\u002Fterminal\u002Fcursor-blink.mp3",{"path":253,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":180,"sourceHtmlUrl":254},"assets\u002Fsfx\u002Fterminal\u002Foutput-appear.mp3","https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Fassets\u002Fsfx\u002Fterminal\u002Foutput-appear.mp3",{"path":256,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":184,"sourceHtmlUrl":257},"assets\u002Fsfx\u002Ftransition\u002Fdissolve.mp3","https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Fassets\u002Fsfx\u002Ftransition\u002Fdissolve.mp3",{"path":259,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":180,"sourceHtmlUrl":260},"assets\u002Fsfx\u002Ftransition\u002Fslide-in.mp3","https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Fassets\u002Fsfx\u002Ftransition\u002Fslide-in.mp3",{"path":262,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":172,"sourceHtmlUrl":263},"assets\u002Fsfx\u002Ftransition\u002Fswipe-horizontal.mp3","https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Fassets\u002Fsfx\u002Ftransition\u002Fswipe-horizontal.mp3",{"path":265,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":176,"sourceHtmlUrl":266},"assets\u002Fsfx\u002Ftransition\u002Fwhoosh-fast.mp3","https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Fassets\u002Fsfx\u002Ftransition\u002Fwhoosh-fast.mp3",{"path":268,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":180,"sourceHtmlUrl":269},"assets\u002Fsfx\u002Ftransition\u002Fwhoosh.mp3","https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Fassets\u002Fsfx\u002Ftransition\u002Fwhoosh.mp3",{"path":271,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":176,"sourceHtmlUrl":272},"assets\u002Fsfx\u002Fui\u002Fclick-soft.mp3","https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Fassets\u002Fsfx\u002Fui\u002Fclick-soft.mp3",{"path":274,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":176,"sourceHtmlUrl":275},"assets\u002Fsfx\u002Fui\u002Fclick.mp3","https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Fassets\u002Fsfx\u002Fui\u002Fclick.mp3",{"path":277,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":176,"sourceHtmlUrl":278},"assets\u002Fsfx\u002Fui\u002Ffocus.mp3","https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Fassets\u002Fsfx\u002Fui\u002Ffocus.mp3",{"path":280,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":176,"sourceHtmlUrl":281},"assets\u002Fsfx\u002Fui\u002Fhover-subtle.mp3","https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Fassets\u002Fsfx\u002Fui\u002Fhover-subtle.mp3",{"path":283,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":176,"sourceHtmlUrl":284},"assets\u002Fsfx\u002Fui\u002Ftap-finger.mp3","https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Fassets\u002Fsfx\u002Fui\u002Ftap-finger.mp3",{"path":286,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":176,"sourceHtmlUrl":287},"assets\u002Fsfx\u002Fui\u002Ftoggle-on.mp3","https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Fassets\u002Fsfx\u002Fui\u002Ftoggle-on.mp3",{"path":289,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":290,"sourceHtmlUrl":291},"assets\u002Fshowcases\u002Fcover\u002Fcover-build.html",5664,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Fassets\u002Fshowcases\u002Fcover\u002Fcover-build.html",{"path":293,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":294,"sourceHtmlUrl":295},"assets\u002Fshowcases\u002Fcover\u002Fcover-build.png",116336,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Fassets\u002Fshowcases\u002Fcover\u002Fcover-build.png",{"path":297,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":298,"sourceHtmlUrl":299},"assets\u002Fshowcases\u002Fcover\u002Fcover-pentagram.html",4914,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Fassets\u002Fshowcases\u002Fcover\u002Fcover-pentagram.html",{"path":301,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":302,"sourceHtmlUrl":303},"assets\u002Fshowcases\u002Fcover\u002Fcover-pentagram.png",36047,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Fassets\u002Fshowcases\u002Fcover\u002Fcover-pentagram.png",{"path":305,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":306,"sourceHtmlUrl":307},"assets\u002Fshowcases\u002Fcover\u002Fcover-takram.html",11823,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Fassets\u002Fshowcases\u002Fcover\u002Fcover-takram.html",{"path":309,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":310,"sourceHtmlUrl":311},"assets\u002Fshowcases\u002Fcover\u002Fcover-takram.png",155362,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Fassets\u002Fshowcases\u002Fcover\u002Fcover-takram.png",{"path":313,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":314,"sourceHtmlUrl":315},"assets\u002Fshowcases\u002FINDEX.md",5538,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Fassets\u002Fshowcases\u002FINDEX.md",{"path":317,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":318,"sourceHtmlUrl":319},"assets\u002Fshowcases\u002Finfographic\u002Finfographic-build.html",11696,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Fassets\u002Fshowcases\u002Finfographic\u002Finfographic-build.html",{"path":321,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":322,"sourceHtmlUrl":323},"assets\u002Fshowcases\u002Finfographic\u002Finfographic-build.png",108710,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Fassets\u002Fshowcases\u002Finfographic\u002Finfographic-build.png",{"path":325,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":326,"sourceHtmlUrl":327},"assets\u002Fshowcases\u002Finfographic\u002Finfographic-pentagram.html",13911,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Fassets\u002Fshowcases\u002Finfographic\u002Finfographic-pentagram.html",{"path":329,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":330,"sourceHtmlUrl":331},"assets\u002Fshowcases\u002Finfographic\u002Finfographic-pentagram.png",159021,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Fassets\u002Fshowcases\u002Finfographic\u002Finfographic-pentagram.png",{"path":333,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":334,"sourceHtmlUrl":335},"assets\u002Fshowcases\u002Finfographic\u002Finfographic-takram.html",22396,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Fassets\u002Fshowcases\u002Finfographic\u002Finfographic-takram.html",{"path":337,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":338,"sourceHtmlUrl":339},"assets\u002Fshowcases\u002Finfographic\u002Finfographic-takram.png",162976,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Fassets\u002Fshowcases\u002Finfographic\u002Finfographic-takram.png",{"path":341,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":342,"sourceHtmlUrl":343},"assets\u002Fshowcases\u002Fppt\u002Fppt-build.html",9083,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Fassets\u002Fshowcases\u002Fppt\u002Fppt-build.html",{"path":345,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":346,"sourceHtmlUrl":347},"assets\u002Fshowcases\u002Fppt\u002Fppt-build.png",84423,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Fassets\u002Fshowcases\u002Fppt\u002Fppt-build.png",{"path":349,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":350,"sourceHtmlUrl":351},"assets\u002Fshowcases\u002Fppt\u002Fppt-pentagram.html",11955,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Fassets\u002Fshowcases\u002Fppt\u002Fppt-pentagram.html",{"path":353,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":354,"sourceHtmlUrl":355},"assets\u002Fshowcases\u002Fppt\u002Fppt-pentagram.png",101335,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Fassets\u002Fshowcases\u002Fppt\u002Fppt-pentagram.png",{"path":357,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":358,"sourceHtmlUrl":359},"assets\u002Fshowcases\u002Fppt\u002Fppt-takram.html",15656,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Fassets\u002Fshowcases\u002Fppt\u002Fppt-takram.html",{"path":361,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":362,"sourceHtmlUrl":363},"assets\u002Fshowcases\u002Fppt\u002Fppt-takram.png",467187,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Fassets\u002Fshowcases\u002Fppt\u002Fppt-takram.png",{"path":365,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":366,"sourceHtmlUrl":367},"assets\u002Fshowcases\u002Fwebsite-ai-nav\u002Fainav-build.html",9621,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Fassets\u002Fshowcases\u002Fwebsite-ai-nav\u002Fainav-build.html",{"path":369,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":370,"sourceHtmlUrl":371},"assets\u002Fshowcases\u002Fwebsite-ai-nav\u002Fainav-build.png",85064,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Fassets\u002Fshowcases\u002Fwebsite-ai-nav\u002Fainav-build.png",{"path":373,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":374,"sourceHtmlUrl":375},"assets\u002Fshowcases\u002Fwebsite-ai-nav\u002Fainav-pentagram.html",10553,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Fassets\u002Fshowcases\u002Fwebsite-ai-nav\u002Fainav-pentagram.html",{"path":377,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":378,"sourceHtmlUrl":379},"assets\u002Fshowcases\u002Fwebsite-ai-nav\u002Fainav-pentagram.png",105575,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Fassets\u002Fshowcases\u002Fwebsite-ai-nav\u002Fainav-pentagram.png",{"path":381,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":382,"sourceHtmlUrl":383},"assets\u002Fshowcases\u002Fwebsite-ai-nav\u002Fainav-takram.html",12747,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Fassets\u002Fshowcases\u002Fwebsite-ai-nav\u002Fainav-takram.html",{"path":385,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":386,"sourceHtmlUrl":387},"assets\u002Fshowcases\u002Fwebsite-ai-nav\u002Fainav-takram.png",121675,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Fassets\u002Fshowcases\u002Fwebsite-ai-nav\u002Fainav-takram.png",{"path":389,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":390,"sourceHtmlUrl":391},"assets\u002Fshowcases\u002Fwebsite-ai-writing\u002Faiwriting-build.html",14066,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Fassets\u002Fshowcases\u002Fwebsite-ai-writing\u002Faiwriting-build.html",{"path":393,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":394,"sourceHtmlUrl":395},"assets\u002Fshowcases\u002Fwebsite-ai-writing\u002Faiwriting-build.png",130604,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Fassets\u002Fshowcases\u002Fwebsite-ai-writing\u002Faiwriting-build.png",{"path":397,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":398,"sourceHtmlUrl":399},"assets\u002Fshowcases\u002Fwebsite-ai-writing\u002Faiwriting-pentagram.html",14226,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Fassets\u002Fshowcases\u002Fwebsite-ai-writing\u002Faiwriting-pentagram.html",{"path":401,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":402,"sourceHtmlUrl":403},"assets\u002Fshowcases\u002Fwebsite-ai-writing\u002Faiwriting-pentagram.png",150195,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Fassets\u002Fshowcases\u002Fwebsite-ai-writing\u002Faiwriting-pentagram.png",{"path":405,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":406,"sourceHtmlUrl":407},"assets\u002Fshowcases\u002Fwebsite-ai-writing\u002Faiwriting-takram.html",18003,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Fassets\u002Fshowcases\u002Fwebsite-ai-writing\u002Faiwriting-takram.html",{"path":409,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":410,"sourceHtmlUrl":411},"assets\u002Fshowcases\u002Fwebsite-ai-writing\u002Faiwriting-takram.png",157158,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Fassets\u002Fshowcases\u002Fwebsite-ai-writing\u002Faiwriting-takram.png",{"path":413,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":414,"sourceHtmlUrl":415},"assets\u002Fshowcases\u002Fwebsite-devdocs\u002Fdevdocs-build.html",9928,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Fassets\u002Fshowcases\u002Fwebsite-devdocs\u002Fdevdocs-build.html",{"path":417,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":418,"sourceHtmlUrl":419},"assets\u002Fshowcases\u002Fwebsite-devdocs\u002Fdevdocs-build.png",68230,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Fassets\u002Fshowcases\u002Fwebsite-devdocs\u002Fdevdocs-build.png",{"path":421,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":422,"sourceHtmlUrl":423},"assets\u002Fshowcases\u002Fwebsite-devdocs\u002Fdevdocs-pentagram.html",12801,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Fassets\u002Fshowcases\u002Fwebsite-devdocs\u002Fdevdocs-pentagram.html",{"path":425,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":426,"sourceHtmlUrl":427},"assets\u002Fshowcases\u002Fwebsite-devdocs\u002Fdevdocs-pentagram.png",117051,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Fassets\u002Fshowcases\u002Fwebsite-devdocs\u002Fdevdocs-pentagram.png",{"path":429,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":430,"sourceHtmlUrl":431},"assets\u002Fshowcases\u002Fwebsite-devdocs\u002Fdevdocs-takram.html",13106,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Fassets\u002Fshowcases\u002Fwebsite-devdocs\u002Fdevdocs-takram.html",{"path":433,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":434,"sourceHtmlUrl":435},"assets\u002Fshowcases\u002Fwebsite-devdocs\u002Fdevdocs-takram.png",111854,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Fassets\u002Fshowcases\u002Fwebsite-devdocs\u002Fdevdocs-takram.png",{"path":437,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":438,"sourceHtmlUrl":439},"assets\u002Fshowcases\u002Fwebsite-homepage\u002Fhomepage-build.html",8314,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Fassets\u002Fshowcases\u002Fwebsite-homepage\u002Fhomepage-build.html",{"path":441,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":442,"sourceHtmlUrl":443},"assets\u002Fshowcases\u002Fwebsite-homepage\u002Fhomepage-build.png",61708,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Fassets\u002Fshowcases\u002Fwebsite-homepage\u002Fhomepage-build.png",{"path":445,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":446,"sourceHtmlUrl":447},"assets\u002Fshowcases\u002Fwebsite-homepage\u002Fhomepage-pentagram.html",8491,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Fassets\u002Fshowcases\u002Fwebsite-homepage\u002Fhomepage-pentagram.html",{"path":449,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":450,"sourceHtmlUrl":451},"assets\u002Fshowcases\u002Fwebsite-homepage\u002Fhomepage-pentagram.png",57093,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Fassets\u002Fshowcases\u002Fwebsite-homepage\u002Fhomepage-pentagram.png",{"path":453,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":454,"sourceHtmlUrl":455},"assets\u002Fshowcases\u002Fwebsite-homepage\u002Fhomepage-takram.html",10543,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Fassets\u002Fshowcases\u002Fwebsite-homepage\u002Fhomepage-takram.html",{"path":457,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":458,"sourceHtmlUrl":459},"assets\u002Fshowcases\u002Fwebsite-homepage\u002Fhomepage-takram.png",127610,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Fassets\u002Fshowcases\u002Fwebsite-homepage\u002Fhomepage-takram.png",{"path":461,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":462,"sourceHtmlUrl":463},"assets\u002Fshowcases\u002Fwebsite-saas\u002Fsaas-build.html",12901,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Fassets\u002Fshowcases\u002Fwebsite-saas\u002Fsaas-build.html",{"path":465,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":466,"sourceHtmlUrl":467},"assets\u002Fshowcases\u002Fwebsite-saas\u002Fsaas-build.png",99745,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Fassets\u002Fshowcases\u002Fwebsite-saas\u002Fsaas-build.png",{"path":469,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":470,"sourceHtmlUrl":471},"assets\u002Fshowcases\u002Fwebsite-saas\u002Fsaas-pentagram.html",15050,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Fassets\u002Fshowcases\u002Fwebsite-saas\u002Fsaas-pentagram.html",{"path":473,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":474,"sourceHtmlUrl":475},"assets\u002Fshowcases\u002Fwebsite-saas\u002Fsaas-pentagram.png",96559,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Fassets\u002Fshowcases\u002Fwebsite-saas\u002Fsaas-pentagram.png",{"path":477,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":478,"sourceHtmlUrl":479},"assets\u002Fshowcases\u002Fwebsite-saas\u002Fsaas-takram.html",18209,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Fassets\u002Fshowcases\u002Fwebsite-saas\u002Fsaas-takram.html",{"path":481,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":482,"sourceHtmlUrl":483},"assets\u002Fshowcases\u002Fwebsite-saas\u002Fsaas-takram.png",123532,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Fassets\u002Fshowcases\u002Fwebsite-saas\u002Fsaas-takram.png",{"path":485,"resourceType":486,"resourceTypeDesc":487,"sizeBytes":488,"sourceHtmlUrl":489},"demos\u002Fc1-ios-prototype-en.html","REFERENCE","参考文档",35163,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Fdemos\u002Fc1-ios-prototype-en.html",{"path":491,"resourceType":486,"resourceTypeDesc":487,"sizeBytes":492,"sourceHtmlUrl":493},"demos\u002Fc1-ios-prototype.html",35149,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Fdemos\u002Fc1-ios-prototype.html",{"path":495,"resourceType":486,"resourceTypeDesc":487,"sizeBytes":496,"sourceHtmlUrl":497},"demos\u002Fc2-slides-pptx-en.html",32906,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Fdemos\u002Fc2-slides-pptx-en.html",{"path":499,"resourceType":486,"resourceTypeDesc":487,"sizeBytes":500,"sourceHtmlUrl":501},"demos\u002Fc2-slides-pptx.html",32975,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Fdemos\u002Fc2-slides-pptx.html",{"path":503,"resourceType":486,"resourceTypeDesc":487,"sizeBytes":504,"sourceHtmlUrl":505},"demos\u002Fc3-motion-design-en.html",37031,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Fdemos\u002Fc3-motion-design-en.html",{"path":507,"resourceType":486,"resourceTypeDesc":487,"sizeBytes":508,"sourceHtmlUrl":509},"demos\u002Fc3-motion-design.html",37048,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Fdemos\u002Fc3-motion-design.html",{"path":511,"resourceType":486,"resourceTypeDesc":487,"sizeBytes":512,"sourceHtmlUrl":513},"demos\u002Fc4-tweaks-en.html",31102,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Fdemos\u002Fc4-tweaks-en.html",{"path":515,"resourceType":486,"resourceTypeDesc":487,"sizeBytes":516,"sourceHtmlUrl":517},"demos\u002Fc4-tweaks.html",31150,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Fdemos\u002Fc4-tweaks.html",{"path":519,"resourceType":486,"resourceTypeDesc":487,"sizeBytes":520,"sourceHtmlUrl":521},"demos\u002Fc5-infographic-en.html",24941,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Fdemos\u002Fc5-infographic-en.html",{"path":523,"resourceType":486,"resourceTypeDesc":487,"sizeBytes":524,"sourceHtmlUrl":525},"demos\u002Fc5-infographic.html",24823,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Fdemos\u002Fc5-infographic.html",{"path":527,"resourceType":486,"resourceTypeDesc":487,"sizeBytes":528,"sourceHtmlUrl":529},"demos\u002Fc6-expert-review-en.html",26382,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Fdemos\u002Fc6-expert-review-en.html",{"path":531,"resourceType":486,"resourceTypeDesc":487,"sizeBytes":532,"sourceHtmlUrl":533},"demos\u002Fc6-expert-review.html",26822,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Fdemos\u002Fc6-expert-review.html",{"path":535,"resourceType":486,"resourceTypeDesc":487,"sizeBytes":536,"sourceHtmlUrl":537},"demos\u002Fhero-animation-v10-en.html",48712,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Fdemos\u002Fhero-animation-v10-en.html",{"path":539,"resourceType":486,"resourceTypeDesc":487,"sizeBytes":540,"sourceHtmlUrl":541},"demos\u002Fmd-html-narration\u002Fmd-html-demo.html",37270,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Fdemos\u002Fmd-html-narration\u002Fmd-html-demo.html",{"path":543,"resourceType":486,"resourceTypeDesc":487,"sizeBytes":544,"sourceHtmlUrl":545},"demos\u002Fmd-html-narration\u002Fscript.md",3452,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Fdemos\u002Fmd-html-narration\u002Fscript.md",{"path":547,"resourceType":486,"resourceTypeDesc":487,"sizeBytes":548,"sourceHtmlUrl":549},"demos\u002Fvoiceover-demo\u002Fscript.md",589,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Fdemos\u002Fvoiceover-demo\u002Fscript.md",{"path":551,"resourceType":486,"resourceTypeDesc":487,"sizeBytes":552,"sourceHtmlUrl":553},"demos\u002Fvoiceover-demo\u002F什么是token.html",11410,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Fdemos\u002Fvoiceover-demo\u002F什么是token.html",{"path":555,"resourceType":486,"resourceTypeDesc":487,"sizeBytes":556,"sourceHtmlUrl":557},"demos\u002Fw1-brand-protocol-en.html",20572,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Fdemos\u002Fw1-brand-protocol-en.html",{"path":559,"resourceType":486,"resourceTypeDesc":487,"sizeBytes":560,"sourceHtmlUrl":561},"demos\u002Fw1-brand-protocol.html",20905,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Fdemos\u002Fw1-brand-protocol.html",{"path":563,"resourceType":486,"resourceTypeDesc":487,"sizeBytes":564,"sourceHtmlUrl":565},"demos\u002Fw2-junior-designer-en.html",31305,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Fdemos\u002Fw2-junior-designer-en.html",{"path":567,"resourceType":486,"resourceTypeDesc":487,"sizeBytes":568,"sourceHtmlUrl":569},"demos\u002Fw2-junior-designer.html",31764,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Fdemos\u002Fw2-junior-designer.html",{"path":571,"resourceType":486,"resourceTypeDesc":487,"sizeBytes":572,"sourceHtmlUrl":573},"demos\u002Fw3-fallback-advisor-en.html",23802,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Fdemos\u002Fw3-fallback-advisor-en.html",{"path":575,"resourceType":486,"resourceTypeDesc":487,"sizeBytes":576,"sourceHtmlUrl":577},"demos\u002Fw3-fallback-advisor.html",26314,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Fdemos\u002Fw3-fallback-advisor.html",{"path":579,"resourceType":579,"resourceTypeDesc":580,"sizeBytes":581,"sourceHtmlUrl":582},"LICENSE","许可证",1086,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002FLICENSE",{"path":584,"resourceType":486,"resourceTypeDesc":487,"sizeBytes":585,"sourceHtmlUrl":586},"package-lock.json",29207,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Fpackage-lock.json",{"path":588,"resourceType":486,"resourceTypeDesc":487,"sizeBytes":589,"sourceHtmlUrl":590},"package.json",225,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Fpackage.json",{"path":592,"resourceType":486,"resourceTypeDesc":487,"sizeBytes":593,"sourceHtmlUrl":594},"README.en.md",16491,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002FREADME.en.md",{"path":596,"resourceType":486,"resourceTypeDesc":487,"sizeBytes":597,"sourceHtmlUrl":598},"README.md",17129,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002FREADME.md",{"path":600,"resourceType":486,"resourceTypeDesc":487,"sizeBytes":601,"sourceHtmlUrl":602},"references\u002Fanimation-best-practices.md",21012,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Freferences\u002Fanimation-best-practices.md",{"path":604,"resourceType":486,"resourceTypeDesc":487,"sizeBytes":605,"sourceHtmlUrl":606},"references\u002Fanimation-pitfalls.md",25365,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Freferences\u002Fanimation-pitfalls.md",{"path":608,"resourceType":486,"resourceTypeDesc":487,"sizeBytes":609,"sourceHtmlUrl":610},"references\u002Fanimations.md",7427,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Freferences\u002Fanimations.md",{"path":612,"resourceType":486,"resourceTypeDesc":487,"sizeBytes":613,"sourceHtmlUrl":614},"references\u002Fapple-gallery-showcase.md",11183,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Freferences\u002Fapple-gallery-showcase.md",{"path":616,"resourceType":486,"resourceTypeDesc":487,"sizeBytes":617,"sourceHtmlUrl":618},"references\u002Faudio-design-rules.md",9613,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Freferences\u002Faudio-design-rules.md",{"path":620,"resourceType":486,"resourceTypeDesc":487,"sizeBytes":621,"sourceHtmlUrl":622},"references\u002Fbrand-asset-protocol.md",15418,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Freferences\u002Fbrand-asset-protocol.md",{"path":624,"resourceType":486,"resourceTypeDesc":487,"sizeBytes":625,"sourceHtmlUrl":626},"references\u002Fcinematic-patterns.md",11086,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Freferences\u002Fcinematic-patterns.md",{"path":628,"resourceType":486,"resourceTypeDesc":487,"sizeBytes":629,"sourceHtmlUrl":630},"references\u002Fcontent-guidelines.md",8389,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Freferences\u002Fcontent-guidelines.md",{"path":632,"resourceType":486,"resourceTypeDesc":487,"sizeBytes":633,"sourceHtmlUrl":634},"references\u002Fcritique-guide.md",7463,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Freferences\u002Fcritique-guide.md",{"path":636,"resourceType":486,"resourceTypeDesc":487,"sizeBytes":637,"sourceHtmlUrl":638},"references\u002Fdesign-context.md",6704,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Freferences\u002Fdesign-context.md",{"path":640,"resourceType":486,"resourceTypeDesc":487,"sizeBytes":641,"sourceHtmlUrl":642},"references\u002Fdesign-styles.md",42249,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Freferences\u002Fdesign-styles.md",{"path":644,"resourceType":486,"resourceTypeDesc":487,"sizeBytes":645,"sourceHtmlUrl":646},"references\u002Feditable-pptx.md",15942,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Freferences\u002Feditable-pptx.md",{"path":648,"resourceType":486,"resourceTypeDesc":487,"sizeBytes":649,"sourceHtmlUrl":650},"references\u002Fhero-animation-case-study.md",11348,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Freferences\u002Fhero-animation-case-study.md",{"path":652,"resourceType":486,"resourceTypeDesc":487,"sizeBytes":653,"sourceHtmlUrl":654},"references\u002Flaunch-film-director-notes.md",14272,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Freferences\u002Flaunch-film-director-notes.md",{"path":656,"resourceType":486,"resourceTypeDesc":487,"sizeBytes":657,"sourceHtmlUrl":658},"references\u002Fmulti-perspective-parallel-case-study.md",11093,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Freferences\u002Fmulti-perspective-parallel-case-study.md",{"path":660,"resourceType":486,"resourceTypeDesc":487,"sizeBytes":661,"sourceHtmlUrl":662},"references\u002Freact-setup.md",9318,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Freferences\u002Freact-setup.md",{"path":664,"resourceType":486,"resourceTypeDesc":487,"sizeBytes":665,"sourceHtmlUrl":666},"references\u002Fscene-templates.md",7144,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Freferences\u002Fscene-templates.md",{"path":668,"resourceType":486,"resourceTypeDesc":487,"sizeBytes":669,"sourceHtmlUrl":670},"references\u002Fsfx-library.md",9762,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Freferences\u002Fsfx-library.md",{"path":672,"resourceType":486,"resourceTypeDesc":487,"sizeBytes":673,"sourceHtmlUrl":674},"references\u002Fslide-decks.md",36181,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Freferences\u002Fslide-decks.md",{"path":676,"resourceType":486,"resourceTypeDesc":487,"sizeBytes":677,"sourceHtmlUrl":678},"references\u002Ftweaks-system.md",9015,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Freferences\u002Ftweaks-system.md",{"path":680,"resourceType":486,"resourceTypeDesc":487,"sizeBytes":681,"sourceHtmlUrl":682},"references\u002Fverification.md",4217,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Freferences\u002Fverification.md",{"path":684,"resourceType":486,"resourceTypeDesc":487,"sizeBytes":685,"sourceHtmlUrl":686},"references\u002Fvideo-export.md",10803,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Freferences\u002Fvideo-export.md",{"path":688,"resourceType":486,"resourceTypeDesc":487,"sizeBytes":689,"sourceHtmlUrl":690},"references\u002Fvoiceover-pipeline.md",18499,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Freferences\u002Fvoiceover-pipeline.md",{"path":692,"resourceType":486,"resourceTypeDesc":487,"sizeBytes":693,"sourceHtmlUrl":694},"references\u002Fworkflow.md",7090,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Freferences\u002Fworkflow.md",{"path":696,"resourceType":142,"resourceTypeDesc":143,"sizeBytes":697,"sourceHtmlUrl":698},"scripts\u002Fadd-music.sh",4150,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Fscripts\u002Fadd-music.sh",{"path":700,"resourceType":142,"resourceTypeDesc":143,"sizeBytes":701,"sourceHtmlUrl":702},"scripts\u002Fconvert-formats.sh",3000,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Fscripts\u002Fconvert-formats.sh",{"path":704,"resourceType":142,"resourceTypeDesc":143,"sizeBytes":705,"sourceHtmlUrl":706},"scripts\u002Fexport_deck_pdf.mjs",3209,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Fscripts\u002Fexport_deck_pdf.mjs",{"path":708,"resourceType":142,"resourceTypeDesc":143,"sizeBytes":709,"sourceHtmlUrl":710},"scripts\u002Fexport_deck_pptx.mjs",3800,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Fscripts\u002Fexport_deck_pptx.mjs",{"path":712,"resourceType":142,"resourceTypeDesc":143,"sizeBytes":713,"sourceHtmlUrl":714},"scripts\u002Fexport_deck_stage_pdf.mjs",4781,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Fscripts\u002Fexport_deck_stage_pdf.mjs",{"path":716,"resourceType":142,"resourceTypeDesc":143,"sizeBytes":717,"sourceHtmlUrl":718},"scripts\u002Ffetch_images.py",4442,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Fscripts\u002Ffetch_images.py",{"path":720,"resourceType":142,"resourceTypeDesc":143,"sizeBytes":721,"sourceHtmlUrl":722},"scripts\u002Fgen_deck_thumbs.mjs",3037,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Fscripts\u002Fgen_deck_thumbs.mjs",{"path":724,"resourceType":142,"resourceTypeDesc":143,"sizeBytes":725,"sourceHtmlUrl":726},"scripts\u002Fhtml2pptx.js",46385,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Fscripts\u002Fhtml2pptx.js",{"path":728,"resourceType":142,"resourceTypeDesc":143,"sizeBytes":729,"sourceHtmlUrl":730},"scripts\u002Fmix-voiceover.sh",4461,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Fscripts\u002Fmix-voiceover.sh",{"path":732,"resourceType":142,"resourceTypeDesc":143,"sizeBytes":733,"sourceHtmlUrl":734},"scripts\u002Fnarrate-pipeline.mjs",9886,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Fscripts\u002Fnarrate-pipeline.mjs",{"path":736,"resourceType":142,"resourceTypeDesc":143,"sizeBytes":737,"sourceHtmlUrl":738},"scripts\u002Frender-narration.sh",5425,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Fscripts\u002Frender-narration.sh",{"path":740,"resourceType":142,"resourceTypeDesc":143,"sizeBytes":741,"sourceHtmlUrl":742},"scripts\u002Frender-video-seek.js",9778,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Fscripts\u002Frender-video-seek.js",{"path":744,"resourceType":142,"resourceTypeDesc":143,"sizeBytes":745,"sourceHtmlUrl":746},"scripts\u002Frender-video.js",12293,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Fscripts\u002Frender-video.js",{"path":748,"resourceType":142,"resourceTypeDesc":143,"sizeBytes":749,"sourceHtmlUrl":750},"scripts\u002Ftts-doubao.mjs",5525,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Fscripts\u002Ftts-doubao.mjs",{"path":752,"resourceType":142,"resourceTypeDesc":143,"sizeBytes":753,"sourceHtmlUrl":754},"scripts\u002Fverify.py",5451,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Fscripts\u002Fverify.py",{"path":756,"resourceType":486,"resourceTypeDesc":487,"sizeBytes":757,"sourceHtmlUrl":758},"test-prompts.json",2760,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fhuashu-design\u002Ftest-prompts.json",[760,788,814,846,881,905],{"skillNo":761,"name":762,"nameZh":6,"description":763,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":764,"categories":765,"keywords":767,"publishedAt":44},"01M70NHBTQ8BV0A2SCAZXEPHCX","wealthville-pool-scoring","Score DeFi liquidity pools before providing liquidity. Returns a 0-100 pool score and an Enter\u002FHold\u002FExit\u002FReduce\u002FAvoid verdict with calibrated confidence for ~68,800 Solana pools and 575 EVM pools, plus a public miss-inclusive track record. Use when asked whether a pool is worth LPing into, which pools look best right now, or how accurate the scores have actually been.","https:\u002F\u002Fgithub.com\u002Fdavila7\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fweb-data\u002Fwealthville-pool-scoring\u002FSKILL.md",[766],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787],"scoring","pool","wealthville pool scoring","liquidity","which","for","exit","now","use","when","reduce","with","record","track","verdict","evm","solana","how","public","look",{"skillNo":789,"name":790,"nameZh":6,"description":791,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":792,"categories":793,"keywords":795,"publishedAt":44},"01M70MB6VR8ERJ4EM8D5KHBMEV","technical-debt-auditor","Scans a codebase and produces a quantified technical debt report with a prioritized remediation plan. Analyzes dead code, TODO\u002FFIXME\u002FHACK markers, dependency staleness, complexity hotspots, code duplication signals, test coverage gaps, unused exports, and outdated patterns. Use this skill when the user asks to audit their codebase for tech debt, wants a health check of their code quality, says things like \"where should I focus refactoring\", \"find code smells\", \"audit my codebase\", \"what technical debt do we have\", \"prioritize cleanup work\", or asks about code quality metrics. Also trigger when the user mentions \"code rot\", \"legacy cleanup\", \"refactoring priorities\", or wants to understand the overall health of a project before a major effort. Trigger even if the user doesn't say \"technical debt\" explicitly — any request to systematically assess code quality and identify improvement priorities belongs here.","https:\u002F\u002Fgithub.com\u002Fdavila7\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fdevelopment\u002Ftechnical-debt-auditor\u002FSKILL.md",[794],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[796,797,798,799,800,801,802,803,804,805,806,777,807,808,809,810,811,812,813,34],"technical debt","debt","technical","technical debt auditor","auditor","coverage","complexity","markers","project","cleanup","unused","code","todo","work","plan","focus","signals","audit",{"skillNo":815,"name":816,"nameZh":6,"description":817,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":818,"categories":819,"keywords":829,"publishedAt":44},"01M70KPYH9QNHCNME5GJQGE22K","readonly-sql-guard","Make an agent's database access provably read-only. Use when an agent runs caller-supplied SQL against a production\u002FERP\u002Fanalytics database (a \"query\" MCP tool, text-to-SQL, an admin console), or when reviewing DB-access code for write\u002FDDL\u002Fside-effect\u002Ftransaction-escape risks. Checks what a statement CALLS, not just its shape.","https:\u002F\u002Fgithub.com\u002Fdavila7\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fdatabase\u002Freadonly-sql-guard\u002FSKILL.md",[820,823,824],{"categoryNo":821,"categoryName":822,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000010","后端与接口",{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":825,"categoryName":826,"taxonomyType":827,"taxonomyTypeDesc":828},"01JBSEEDCAT000000000000033","数据分析师","PROFESSION","适用职业",[830,831,832,833,834,835,836,773,837,838,839,26,840,841,842,776,843,844,777,845],"readonly","guard","sql guard","sql","readonly sql guard","erp","effect","read-only","db","just","calls","only","MCP","access","database","query",{"skillNo":847,"name":848,"nameZh":6,"description":849,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":850,"licenseFileUrl":851,"sourceHtmlUrl":852,"categories":853,"keywords":857,"publishedAt":44},"01M6AFY6F7CC2BBZP1QD6VTNVC","web-artifacts-builder","Suite of tools for creating elaborate, multi-component claude.ai HTML artifacts using modern frontend web technologies (React, Tailwind CSS, shadcn\u002Fui). Use for complex artifacts requiring state management, routing, or shadcn\u002Fui components - not for simple single-file HTML\u002FJSX artifacts.","Apache-2.0","https:\u002F\u002Fgithub.com\u002Fdavila7\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Futilities\u002Fweb-artifacts-builder\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002Fdavila7\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Futilities\u002Fweb-artifacts-builder\u002FSKILL.md",[854],{"categoryNo":855,"categoryName":856,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000009","前端开发",[858,859,860,861,862,863,864,865,866,867,868,869,870,871,872,873,874,875,876,877,878,879,773,880],"artifacts builder","web","web artifacts builder","artifacts","builder","state","routing","state management","component","css","frontend","ui","Tools","file","components","shadcn","react","Tailwind","suite","jsx","html","single-file","ui components",{"skillNo":882,"name":883,"nameZh":6,"description":884,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":850,"licenseFileUrl":885,"sourceHtmlUrl":886,"categories":887,"keywords":892,"publishedAt":44},"01M6AFWF33SFV9Z3SF4PEEE4BF","webapp-testing","Toolkit for interacting with and testing local web applications using Playwright. Supports verifying frontend functionality, debugging UI behavior, capturing browser screenshots, and viewing browser logs.","https:\u002F\u002Fgithub.com\u002Fdavila7\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fsecurity\u002Fwebapp-testing\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002Fdavila7\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fsecurity\u002Fwebapp-testing\u002FSKILL.md",[888,891],{"categoryNo":889,"categoryName":890,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000008","测试与质量",{"categoryNo":855,"categoryName":856,"taxonomyType":21,"taxonomyTypeDesc":22},[893,894,895,896,897,859,898,868,869,899,900,901,902,773,903,779,904],"webapp testing","testing","webapp","browser","playwright","applications","debugging","toolkit","logs","screenshots","local","behavior",{"skillNo":906,"name":907,"nameZh":6,"description":908,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":850,"licenseFileUrl":909,"sourceHtmlUrl":910,"categories":911,"keywords":919,"publishedAt":44},"01M6AF67Q67JJJ5V51JR2P52KA","discernment-nudge","After you give a substantive answer or draft that the user may act on — advice or recommendations, drafted artifacts such as goals, plans, pitches, proposals, or emails, estimates or projections, analysis or interpretation of data, factual claims they may rely on, or a multi-step argument — invoke this skill BEFORE finalizing your reply and then, if it applies, append 2-3 short follow-up questions, each tied to something specific in what you just produced, that help the user check key facts, probe the reasoning or assumptions, and notice missing context. Do this at most once per conversation. Skip it when the user asked a trivial how-to or simple lookup, wants a purely educational explanation, asked you only to format, convert, or assemble a file from content they provided, is writing code they will run, is doing creative writing or casual chat, or already asked you to double-check, cite, or review — the skill file explains these boundaries and the exact output format.","https:\u002F\u002Fgithub.com\u002Fdavila7\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fproductivity\u002Fdiscernment-nudge\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002Fdavila7\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fproductivity\u002Fdiscernment-nudge\u002FSKILL.md",[912,915,916],{"categoryNo":913,"categoryName":914,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000018","写作与文案",{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":917,"categoryName":918,"taxonomyType":827,"taxonomyTypeDesc":828},"01JBSEEDCAT000000000000036","内容创作者",[920,921,922,923,924,925,926,927,861,928,871,807,929,930,931,932,933,841,934,777,935,936,937,938,939,785,940],"discernment nudge","nudge","interpretation","help","run","reasoning","data","writing","lookup","content","review","conversation","short","up","invoke","you","analysis","claims","argument","assemble","recommendations"]