[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6NW73MP2YV4B89NGXNYAD5C":3,"skill-same:01M6NW73MP2YV4B89NGXNYAD5C":71},{"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":40,"linkOnly":41,"markdownContent":42,"markdownBody":43,"frontMatter":44,"refName":49,"commitSha":50,"skillDirectory":51,"forksCount":14,"repositoryHtmlUrl":52,"repositoryHomepageUrl":6,"ownerHtmlUrl":53,"ownerBlogUrl":54,"ownerDescription":55,"updatedAt":56,"install":57,"resources":70},"01M6NW73MP2YV4B89NGXNYAD5C","research-external",null,"External research workflow for docs, web, APIs - NOT codebase exploration","rubicanjr\u002FFinCognis","rubicanjr","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F234912519?v=4","01M6NT156NND8J474G34SB3923","Rubi","01M6NT15B70RWXE1N3YV0BZY8A",0,"MIT","https:\u002F\u002Fgithub.com\u002Frubicanjr\u002FFinCognis\u002Fblob\u002Fmain\u002Fskills\u002Fresearch-external\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000021","资料检索与研究","SCENARIO","使用场景",[24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39],"research","research external","docs","workflow","web","research workflow","Bash","read","write","external research","task","exploration","sonnet","for","codebase","codebase exploration","2026-11-10 10:12:30",false,"---\nname: research-external\ndescription: External research workflow for docs, web, APIs - NOT codebase exploration\nmodel: sonnet\nallowed-tools: [Bash, Read, Write, Task]\n---\n\n# External Research Workflow\n\nResearch external sources (documentation, web, APIs) for libraries, best practices, and general topics.\n\n> **Note:** The current year is 2025. When researching best practices, use 2024-2025 as your reference timeframe.\n\n## Invocation\n\n```\n\u002Fresearch-external \u003Cfocus> [options]\n```\n\n## Question Flow (No Arguments)\n\nIf the user types just `\u002Fresearch-external` with no or partial arguments, guide them through this question flow. Use AskUserQuestion for each phase.\n\n### Phase 1: Research Type\n\n```yaml\nquestion: \"What kind of information do you need?\"\nheader: \"Type\"\noptions:\n  - label: \"How to use a library\u002Fpackage\"\n    description: \"API docs, examples, patterns\"\n  - label: \"Best practices for a task\"\n    description: \"Recommended approaches, comparisons\"\n  - label: \"General topic research\"\n    description: \"Comprehensive multi-source search\"\n  - label: \"Compare options\u002Falternatives\"\n    description: \"Which tool\u002Flibrary\u002Fapproach is best\"\n```\n\n**Mapping:**\n- \"How to use library\" → library focus\n- \"Best practices\" → best-practices focus\n- \"General topic\" → general focus\n- \"Compare options\" → best-practices with comparison framing\n\n### Phase 2: Specific Topic\n\n```yaml\nquestion: \"What specifically do you want to research?\"\nheader: \"Topic\"\noptions: []  # Free text input\n```\n\nExamples of good answers:\n- \"How to use Prisma ORM with TypeScript\"\n- \"Best practices for error handling in Python\"\n- \"React vs Vue vs Svelte for dashboards\"\n\n### Phase 3: Library Details (if library focus)\n\nIf user selected library focus:\n\n```yaml\nquestion: \"Which package registry?\"\nheader: \"Registry\"\noptions:\n  - label: \"npm (JavaScript\u002FTypeScript)\"\n    description: \"Node.js packages\"\n  - label: \"PyPI (Python)\"\n    description: \"Python packages\"\n  - label: \"crates.io (Rust)\"\n    description: \"Rust crates\"\n  - label: \"Go modules\"\n    description: \"Go packages\"\n```\n\nThen ask for specific library name if not already provided.\n\n### Phase 4: Depth\n\n```yaml\nquestion: \"How thorough should the research be?\"\nheader: \"Depth\"\noptions:\n  - label: \"Quick answer\"\n    description: \"Just the essentials\"\n  - label: \"Thorough research\"\n    description: \"Multiple sources, examples, edge cases\"\n```\n\n**Mapping:**\n- \"Quick answer\" → --depth shallow\n- \"Thorough\" → --depth thorough\n\n### Phase 5: Output\n\n```yaml\nquestion: \"What should I produce?\"\nheader: \"Output\"\noptions:\n  - label: \"Summary in chat\"\n    description: \"Tell me what you found\"\n  - label: \"Research document\"\n    description: \"Write to thoughts\u002Fshared\u002Fresearch\u002F\"\n  - label: \"Handoff for implementation\"\n    description: \"Prepare context for coding\"\n```\n\n**Mapping:**\n- \"Research document\" → --output doc\n- \"Handoff\" → --output handoff\n\n### Summary Before Execution\n\n```\nBased on your answers, I'll research:\n\n**Focus:** library\n**Topic:** \"Prisma ORM connection pooling\"\n**Library:** prisma (npm)\n**Depth:** thorough\n**Output:** doc\n\nProceed? [Yes \u002F Adjust settings]\n```\n\n## Focus Modes (First Argument)\n\n| Focus | Primary Tool | Purpose |\n|-------|--------------|---------|\n| `library` | nia-docs | API docs, usage patterns, code examples |\n| `best-practices` | perplexity-search | Recommended approaches, patterns, comparisons |\n| `general` | All MCP tools | Comprehensive multi-source research |\n\n## Options\n\n| Option | Values | Description |\n|--------|--------|-------------|\n| `--topic` | `\"string\"` | **Required.** The topic\u002Flibrary\u002Fconcept to research |\n| `--depth` | `shallow`, `thorough` | Search depth (default: shallow) |\n| `--output` | `handoff`, `doc` | Output format (default: doc) |\n| `--library` | `\"name\"` | For `library` focus: specific package name |\n| `--registry` | `npm`, `py_pi`, `crates`, `go_modules` | For `library` focus: package registry |\n\n## Workflow\n\n### Step 1: Parse Arguments\n\nExtract from user input:\n```\nFOCUS=$1           # library | best-practices | general\nTOPIC=\"...\"        # from --topic\nDEPTH=\"shallow\"    # from --depth (default: shallow)\nOUTPUT=\"doc\"       # from --output (default: doc)\nLIBRARY=\"...\"      # from --library (optional)\nREGISTRY=\"npm\"     # from --registry (default: npm)\n```\n\n### Step 2: Execute Research by Focus\n\n#### Focus: `library`\n\nPrimary tool: **nia-docs** - Find API documentation, usage patterns, code examples.\n\n```bash\n# Semantic search in package\n(cd $CLAUDE_OPC_DIR && uv run python -m runtime.harness scripts\u002Fmcp\u002Fnia_docs.py \\\n  --package \"$LIBRARY\" \\\n  --registry \"$REGISTRY\" \\\n  --query \"$TOPIC\" \\\n  --limit 10)\n\n# If thorough depth, also grep for specific patterns\n(cd $CLAUDE_OPC_DIR && uv run python -m runtime.harness scripts\u002Fmcp\u002Fnia_docs.py \\\n  --package \"$LIBRARY\" \\\n  --grep \"$TOPIC\")\n\n# Supplement with official docs if URL known\n(cd $CLAUDE_OPC_DIR && uv run python -m runtime.harness scripts\u002Fmcp\u002Ffirecrawl_scrape.py \\\n  --url \"https:\u002F\u002Fdocs.example.com\u002Fapi\u002F$TOPIC\" \\\n  --format markdown)\n```\n\n**Thorough depth additions:**\n- Multiple semantic queries with variations\n- Grep for specific function\u002Fclass names\n- Scrape official documentation pages\n\n#### Focus: `best-practices`\n\nPrimary tool: **perplexity-search** - Find recommended approaches, patterns, anti-patterns.\n\n```bash\n# AI-synthesized research (sonar-pro)\n(cd $CLAUDE_OPC_DIR && uv run python scripts\u002Fmcp\u002Fperplexity_search.py \\\n  --research \"$TOPIC best practices 2024 2025\")\n\n# If comparing alternatives\n(cd $CLAUDE_OPC_DIR && uv run python scripts\u002Fmcp\u002Fperplexity_search.py \\\n  --reason \"$TOPIC vs alternatives - which to choose?\")\n```\n\n**Thorough depth additions:**\n```bash\n# Chain-of-thought for complex decisions\n(cd $CLAUDE_OPC_DIR && uv run python scripts\u002Fmcp\u002Fperplexity_search.py \\\n  --reason \"$TOPIC tradeoffs and considerations 2025\")\n\n# Deep comprehensive research\n(cd $CLAUDE_OPC_DIR && uv run python scripts\u002Fmcp\u002Fperplexity_search.py \\\n  --deep \"$TOPIC comprehensive guide 2025\")\n\n# Recent developments\n(cd $CLAUDE_OPC_DIR && uv run python scripts\u002Fmcp\u002Fperplexity_search.py \\\n  --search \"$TOPIC latest developments\" \\\n  --recency month --max-results 5)\n```\n\n#### Focus: `general`\n\nUse ALL available MCP tools - comprehensive multi-source research.\n\n**Step 2a: Library documentation (nia-docs)**\n```bash\n(cd $CLAUDE_OPC_DIR && uv run python -m runtime.harness scripts\u002Fmcp\u002Fnia_docs.py \\\n  --search \"$TOPIC\")\n```\n\n**Step 2b: Web research (perplexity)**\n```bash\n(cd $CLAUDE_OPC_DIR && uv run python scripts\u002Fmcp\u002Fperplexity_search.py \\\n  --research \"$TOPIC\")\n```\n\n**Step 2c: Specific documentation (firecrawl)**\n```bash\n# Scrape relevant documentation pages found in perplexity results\n(cd $CLAUDE_OPC_DIR && uv run python -m runtime.harness scripts\u002Fmcp\u002Ffirecrawl_scrape.py \\\n  --url \"$FOUND_DOC_URL\" \\\n  --format markdown)\n```\n\n**Thorough depth additions:**\n- Run all three tools with expanded queries\n- Cross-reference findings between sources\n- Follow links from initial results for deeper context\n\n### Step 3: Synthesize Findings\n\nCombine results from all sources:\n\n1. **Key Concepts** - Core ideas and terminology\n2. **Code Examples** - Working examples from documentation\n3. **Best Practices** - Recommended approaches\n4. **Pitfalls** - Common mistakes to avoid\n5. **Alternatives** - Other options considered\n6. **Sources** - URLs for all citations\n\n### Step 4: Write Output\n\n#### Output: `doc` (default)\n\nWrite to: `thoughts\u002Fshared\u002Fresearch\u002FYYYY-MM-DD-{topic-slug}.md`\n\n```markdown\n---\ndate: {ISO timestamp}\ntype: external-research\ntopic: \"{topic}\"\nfocus: {focus}\nsources: [nia, perplexity, firecrawl]\nstatus: complete\n---\n\n# Research: {Topic}\n\n## Summary\n{2-3 sentence summary of findings}\n\n## Key Findings\n\n### Library Documentation\n{From nia-docs - API references, usage patterns}\n\n### Best Practices (2024-2025)\n{From perplexity - recommended approaches}\n\n### Code Examples\n```{language}\n\u002F\u002F Working examples found\n```\n\n## Recommendations\n- {Recommendation 1}\n- {Recommendation 2}\n\n## Pitfalls to Avoid\n- {Pitfall 1}\n- {Pitfall 2}\n\n## Alternatives Considered\n| Option | Pros | Cons |\n|--------|------|------|\n| {Option 1} | ... | ... |\n\n## Sources\n- [{Source 1}]({url1})\n- [{Source 2}]({url2})\n```\n\n#### Output: `handoff`\n\nWrite to: `thoughts\u002Fshared\u002Fhandoffs\u002F{session}\u002Fresearch-{topic-slug}.yaml`\n\n```yaml\n---\ntype: research-handoff\nts: {ISO timestamp}\ntopic: \"{topic}\"\nfocus: {focus}\nstatus: complete\n---\n\ngoal: Research {topic} for implementation planning\nsources_used: [nia, perplexity, firecrawl]\n\nfindings:\n  key_concepts:\n    - {concept1}\n    - {concept2}\n\n  code_examples:\n    - pattern: \"{pattern name}\"\n      code: |\n        \u002F\u002F example code\n\n  best_practices:\n    - {practice1}\n    - {practice2}\n\n  pitfalls:\n    - {pitfall1}\n\nrecommendations:\n  - {rec1}\n  - {rec2}\n\nsources:\n  - title: \"{Source 1}\"\n    url: \"{url1}\"\n    type: {documentation|article|reference}\n\nfor_plan_agent: |\n  Based on research, the recommended approach is:\n  1. {Step 1}\n  2. {Step 2}\n  Key libraries: {lib1}, {lib2}\n  Avoid: {pitfall1}\n```\n\n### Step 5: Return Summary\n\n```\nResearch Complete\n\nTopic: {topic}\nFocus: {focus}\nOutput: {path to file}\n\nKey findings:\n- {Finding 1}\n- {Finding 2}\n- {Finding 3}\n\nSources: {N} sources cited\n\n{If handoff output:}\nReady for plan-agent to continue.\n```\n\n## Error Handling\n\nIf an MCP tool fails (API key missing, rate limited, etc.):\n\n1. **Log the failure** in output:\n   ```yaml\n   tool_status:\n     nia: success\n     perplexity: failed (rate limited)\n     firecrawl: skipped\n   ```\n\n2. **Continue with other sources** - partial results are valuable\n\n3. **Set status appropriately:**\n   - `complete` - All requested tools succeeded\n   - `partial` - Some tools failed, findings still useful\n   - `failed` - No useful results obtained\n\n4. **Note gaps** in findings:\n   ```markdown\n   ## Gaps\n   - Perplexity unavailable - best practices section limited to nia results\n   ```\n\n## Examples\n\n### Library Research (Shallow)\n```\n\u002Fresearch-external library --topic \"dependency injection\" --library fastapi --registry py_pi\n```\n\n### Best Practices (Thorough)\n```\n\u002Fresearch-external best-practices --topic \"error handling in Python async\" --depth thorough\n```\n\n### General Research for Handoff\n```\n\u002Fresearch-external general --topic \"OAuth2 PKCE flow implementation\" --depth thorough --output handoff\n```\n\n### Quick Library Lookup\n```\n\u002Fresearch-external library --topic \"useEffect cleanup\" --library react\n```\n\n## Integration with Other Skills\n\n| After Research | Use Skill | For |\n|----------------|-----------|-----|\n| `--output handoff` | `plan-agent` | Create implementation plan |\n| Code examples found | `implement_task` | Direct implementation |\n| Architecture decision | `create_plan` | Detailed planning |\n| Library comparison | Present to user | Decision making |\n\n## Required Environment\n\n- `NIA_API_KEY` or `nia` server in mcp_config.json\n- `PERPLEXITY_API_KEY` in environment or `~\u002F.claude\u002F.env`\n- `FIRECRAWL_API_KEY` and `firecrawl` server in mcp_config.json\n\n## Notes\n\n- **NOT for codebase exploration** - Use `research-codebase` or `scout` for that\n- **Always cite sources** - Include URLs for all findings\n- **2024-2025 timeframe** - Focus on current best practices\n- **Graceful degradation** - Partial results better than no results\n","# External Research Workflow\n\nResearch external sources (documentation, web, APIs) for libraries, best practices, and general topics.\n\n> **Note:** The current year is 2025. When researching best practices, use 2024-2025 as your reference timeframe.\n\n## Invocation\n\n```\n\u002Fresearch-external \u003Cfocus> [options]\n```\n\n## Question Flow (No Arguments)\n\nIf the user types just `\u002Fresearch-external` with no or partial arguments, guide them through this question flow. Use AskUserQuestion for each phase.\n\n### Phase 1: Research Type\n\n```yaml\nquestion: \"What kind of information do you need?\"\nheader: \"Type\"\noptions:\n  - label: \"How to use a library\u002Fpackage\"\n    description: \"API docs, examples, patterns\"\n  - label: \"Best practices for a task\"\n    description: \"Recommended approaches, comparisons\"\n  - label: \"General topic research\"\n    description: \"Comprehensive multi-source search\"\n  - label: \"Compare options\u002Falternatives\"\n    description: \"Which tool\u002Flibrary\u002Fapproach is best\"\n```\n\n**Mapping:**\n- \"How to use library\" → library focus\n- \"Best practices\" → best-practices focus\n- \"General topic\" → general focus\n- \"Compare options\" → best-practices with comparison framing\n\n### Phase 2: Specific Topic\n\n```yaml\nquestion: \"What specifically do you want to research?\"\nheader: \"Topic\"\noptions: []  # Free text input\n```\n\nExamples of good answers:\n- \"How to use Prisma ORM with TypeScript\"\n- \"Best practices for error handling in Python\"\n- \"React vs Vue vs Svelte for dashboards\"\n\n### Phase 3: Library Details (if library focus)\n\nIf user selected library focus:\n\n```yaml\nquestion: \"Which package registry?\"\nheader: \"Registry\"\noptions:\n  - label: \"npm (JavaScript\u002FTypeScript)\"\n    description: \"Node.js packages\"\n  - label: \"PyPI (Python)\"\n    description: \"Python packages\"\n  - label: \"crates.io (Rust)\"\n    description: \"Rust crates\"\n  - label: \"Go modules\"\n    description: \"Go packages\"\n```\n\nThen ask for specific library name if not already provided.\n\n### Phase 4: Depth\n\n```yaml\nquestion: \"How thorough should the research be?\"\nheader: \"Depth\"\noptions:\n  - label: \"Quick answer\"\n    description: \"Just the essentials\"\n  - label: \"Thorough research\"\n    description: \"Multiple sources, examples, edge cases\"\n```\n\n**Mapping:**\n- \"Quick answer\" → --depth shallow\n- \"Thorough\" → --depth thorough\n\n### Phase 5: Output\n\n```yaml\nquestion: \"What should I produce?\"\nheader: \"Output\"\noptions:\n  - label: \"Summary in chat\"\n    description: \"Tell me what you found\"\n  - label: \"Research document\"\n    description: \"Write to thoughts\u002Fshared\u002Fresearch\u002F\"\n  - label: \"Handoff for implementation\"\n    description: \"Prepare context for coding\"\n```\n\n**Mapping:**\n- \"Research document\" → --output doc\n- \"Handoff\" → --output handoff\n\n### Summary Before Execution\n\n```\nBased on your answers, I'll research:\n\n**Focus:** library\n**Topic:** \"Prisma ORM connection pooling\"\n**Library:** prisma (npm)\n**Depth:** thorough\n**Output:** doc\n\nProceed? [Yes \u002F Adjust settings]\n```\n\n## Focus Modes (First Argument)\n\n| Focus | Primary Tool | Purpose |\n|-------|--------------|---------|\n| `library` | nia-docs | API docs, usage patterns, code examples |\n| `best-practices` | perplexity-search | Recommended approaches, patterns, comparisons |\n| `general` | All MCP tools | Comprehensive multi-source research |\n\n## Options\n\n| Option | Values | Description |\n|--------|--------|-------------|\n| `--topic` | `\"string\"` | **Required.** The topic\u002Flibrary\u002Fconcept to research |\n| `--depth` | `shallow`, `thorough` | Search depth (default: shallow) |\n| `--output` | `handoff`, `doc` | Output format (default: doc) |\n| `--library` | `\"name\"` | For `library` focus: specific package name |\n| `--registry` | `npm`, `py_pi`, `crates`, `go_modules` | For `library` focus: package registry |\n\n## Workflow\n\n### Step 1: Parse Arguments\n\nExtract from user input:\n```\nFOCUS=$1           # library | best-practices | general\nTOPIC=\"...\"        # from --topic\nDEPTH=\"shallow\"    # from --depth (default: shallow)\nOUTPUT=\"doc\"       # from --output (default: doc)\nLIBRARY=\"...\"      # from --library (optional)\nREGISTRY=\"npm\"     # from --registry (default: npm)\n```\n\n### Step 2: Execute Research by Focus\n\n#### Focus: `library`\n\nPrimary tool: **nia-docs** - Find API documentation, usage patterns, code examples.\n\n```bash\n# Semantic search in package\n(cd $CLAUDE_OPC_DIR && uv run python -m runtime.harness scripts\u002Fmcp\u002Fnia_docs.py \\\n  --package \"$LIBRARY\" \\\n  --registry \"$REGISTRY\" \\\n  --query \"$TOPIC\" \\\n  --limit 10)\n\n# If thorough depth, also grep for specific patterns\n(cd $CLAUDE_OPC_DIR && uv run python -m runtime.harness scripts\u002Fmcp\u002Fnia_docs.py \\\n  --package \"$LIBRARY\" \\\n  --grep \"$TOPIC\")\n\n# Supplement with official docs if URL known\n(cd $CLAUDE_OPC_DIR && uv run python -m runtime.harness scripts\u002Fmcp\u002Ffirecrawl_scrape.py \\\n  --url \"https:\u002F\u002Fdocs.example.com\u002Fapi\u002F$TOPIC\" \\\n  --format markdown)\n```\n\n**Thorough depth additions:**\n- Multiple semantic queries with variations\n- Grep for specific function\u002Fclass names\n- Scrape official documentation pages\n\n#### Focus: `best-practices`\n\nPrimary tool: **perplexity-search** - Find recommended approaches, patterns, anti-patterns.\n\n```bash\n# AI-synthesized research (sonar-pro)\n(cd $CLAUDE_OPC_DIR && uv run python scripts\u002Fmcp\u002Fperplexity_search.py \\\n  --research \"$TOPIC best practices 2024 2025\")\n\n# If comparing alternatives\n(cd $CLAUDE_OPC_DIR && uv run python scripts\u002Fmcp\u002Fperplexity_search.py \\\n  --reason \"$TOPIC vs alternatives - which to choose?\")\n```\n\n**Thorough depth additions:**\n```bash\n# Chain-of-thought for complex decisions\n(cd $CLAUDE_OPC_DIR && uv run python scripts\u002Fmcp\u002Fperplexity_search.py \\\n  --reason \"$TOPIC tradeoffs and considerations 2025\")\n\n# Deep comprehensive research\n(cd $CLAUDE_OPC_DIR && uv run python scripts\u002Fmcp\u002Fperplexity_search.py \\\n  --deep \"$TOPIC comprehensive guide 2025\")\n\n# Recent developments\n(cd $CLAUDE_OPC_DIR && uv run python scripts\u002Fmcp\u002Fperplexity_search.py \\\n  --search \"$TOPIC latest developments\" \\\n  --recency month --max-results 5)\n```\n\n#### Focus: `general`\n\nUse ALL available MCP tools - comprehensive multi-source research.\n\n**Step 2a: Library documentation (nia-docs)**\n```bash\n(cd $CLAUDE_OPC_DIR && uv run python -m runtime.harness scripts\u002Fmcp\u002Fnia_docs.py \\\n  --search \"$TOPIC\")\n```\n\n**Step 2b: Web research (perplexity)**\n```bash\n(cd $CLAUDE_OPC_DIR && uv run python scripts\u002Fmcp\u002Fperplexity_search.py \\\n  --research \"$TOPIC\")\n```\n\n**Step 2c: Specific documentation (firecrawl)**\n```bash\n# Scrape relevant documentation pages found in perplexity results\n(cd $CLAUDE_OPC_DIR && uv run python -m runtime.harness scripts\u002Fmcp\u002Ffirecrawl_scrape.py \\\n  --url \"$FOUND_DOC_URL\" \\\n  --format markdown)\n```\n\n**Thorough depth additions:**\n- Run all three tools with expanded queries\n- Cross-reference findings between sources\n- Follow links from initial results for deeper context\n\n### Step 3: Synthesize Findings\n\nCombine results from all sources:\n\n1. **Key Concepts** - Core ideas and terminology\n2. **Code Examples** - Working examples from documentation\n3. **Best Practices** - Recommended approaches\n4. **Pitfalls** - Common mistakes to avoid\n5. **Alternatives** - Other options considered\n6. **Sources** - URLs for all citations\n\n### Step 4: Write Output\n\n#### Output: `doc` (default)\n\nWrite to: `thoughts\u002Fshared\u002Fresearch\u002FYYYY-MM-DD-{topic-slug}.md`\n\n```markdown\n---\ndate: {ISO timestamp}\ntype: external-research\ntopic: \"{topic}\"\nfocus: {focus}\nsources: [nia, perplexity, firecrawl]\nstatus: complete\n---\n\n# Research: {Topic}\n\n## Summary\n{2-3 sentence summary of findings}\n\n## Key Findings\n\n### Library Documentation\n{From nia-docs - API references, usage patterns}\n\n### Best Practices (2024-2025)\n{From perplexity - recommended approaches}\n\n### Code Examples\n```{language}\n\u002F\u002F Working examples found\n```\n\n## Recommendations\n- {Recommendation 1}\n- {Recommendation 2}\n\n## Pitfalls to Avoid\n- {Pitfall 1}\n- {Pitfall 2}\n\n## Alternatives Considered\n| Option | Pros | Cons |\n|--------|------|------|\n| {Option 1} | ... | ... |\n\n## Sources\n- [{Source 1}]({url1})\n- [{Source 2}]({url2})\n```\n\n#### Output: `handoff`\n\nWrite to: `thoughts\u002Fshared\u002Fhandoffs\u002F{session}\u002Fresearch-{topic-slug}.yaml`\n\n```yaml\n---\ntype: research-handoff\nts: {ISO timestamp}\ntopic: \"{topic}\"\nfocus: {focus}\nstatus: complete\n---\n\ngoal: Research {topic} for implementation planning\nsources_used: [nia, perplexity, firecrawl]\n\nfindings:\n  key_concepts:\n    - {concept1}\n    - {concept2}\n\n  code_examples:\n    - pattern: \"{pattern name}\"\n      code: |\n        \u002F\u002F example code\n\n  best_practices:\n    - {practice1}\n    - {practice2}\n\n  pitfalls:\n    - {pitfall1}\n\nrecommendations:\n  - {rec1}\n  - {rec2}\n\nsources:\n  - title: \"{Source 1}\"\n    url: \"{url1}\"\n    type: {documentation|article|reference}\n\nfor_plan_agent: |\n  Based on research, the recommended approach is:\n  1. {Step 1}\n  2. {Step 2}\n  Key libraries: {lib1}, {lib2}\n  Avoid: {pitfall1}\n```\n\n### Step 5: Return Summary\n\n```\nResearch Complete\n\nTopic: {topic}\nFocus: {focus}\nOutput: {path to file}\n\nKey findings:\n- {Finding 1}\n- {Finding 2}\n- {Finding 3}\n\nSources: {N} sources cited\n\n{If handoff output:}\nReady for plan-agent to continue.\n```\n\n## Error Handling\n\nIf an MCP tool fails (API key missing, rate limited, etc.):\n\n1. **Log the failure** in output:\n   ```yaml\n   tool_status:\n     nia: success\n     perplexity: failed (rate limited)\n     firecrawl: skipped\n   ```\n\n2. **Continue with other sources** - partial results are valuable\n\n3. **Set status appropriately:**\n   - `complete` - All requested tools succeeded\n   - `partial` - Some tools failed, findings still useful\n   - `failed` - No useful results obtained\n\n4. **Note gaps** in findings:\n   ```markdown\n   ## Gaps\n   - Perplexity unavailable - best practices section limited to nia results\n   ```\n\n## Examples\n\n### Library Research (Shallow)\n```\n\u002Fresearch-external library --topic \"dependency injection\" --library fastapi --registry py_pi\n```\n\n### Best Practices (Thorough)\n```\n\u002Fresearch-external best-practices --topic \"error handling in Python async\" --depth thorough\n```\n\n### General Research for Handoff\n```\n\u002Fresearch-external general --topic \"OAuth2 PKCE flow implementation\" --depth thorough --output handoff\n```\n\n### Quick Library Lookup\n```\n\u002Fresearch-external library --topic \"useEffect cleanup\" --library react\n```\n\n## Integration with Other Skills\n\n| After Research | Use Skill | For |\n|----------------|-----------|-----|\n| `--output handoff` | `plan-agent` | Create implementation plan |\n| Code examples found | `implement_task` | Direct implementation |\n| Architecture decision | `create_plan` | Detailed planning |\n| Library comparison | Present to user | Decision making |\n\n## Required Environment\n\n- `NIA_API_KEY` or `nia` server in mcp_config.json\n- `PERPLEXITY_API_KEY` in environment or `~\u002F.claude\u002F.env`\n- `FIRECRAWL_API_KEY` and `firecrawl` server in mcp_config.json\n\n## Notes\n\n- **NOT for codebase exploration** - Use `research-codebase` or `scout` for that\n- **Always cite sources** - Include URLs for all findings\n- **2024-2025 timeframe** - Focus on current best practices\n- **Graceful degradation** - Partial results better than no results\n",{"name":5,"model":36,"description":7,"allowed-tools":45},[30,46,47,48],"Read","Write","Task","main","70e1c350500ee750987420bbae48837afa906b7e","skills\u002Fresearch-external","https:\u002F\u002Fgithub.com\u002Frubicanjr\u002FFinCognis","https:\u002F\u002Fgithub.com\u002Frubicanjr","linktr.ee\u002Ffinanskodu","Industrial Engineer & CIO @FinansKodu. Architecting AI-driven financial agents and autonomous workflows. 🏗️ Building systems, not just prompts.","2026-06-09 13:50:15",{"source":8,"skillName":5,"commands":58,"prompt":68,"zipAvailable":69},[59,62,65],{"tool":60,"command":61},"npx","npx skills add rubicanjr\u002FFinCognis --skill research-external",{"tool":63,"command":64},"bunx","bunx skills add rubicanjr\u002FFinCognis --skill research-external",{"tool":66,"command":67},"pnpm","pnpm dlx skills add rubicanjr\u002FFinCognis --skill research-external","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Frubicanjr\u002FFinCognis\u002Fblob\u002Fmain\u002Fskills\u002Fresearch-external\u002FSKILL.md",true,[],[72,90,99,119,148,167],{"skillNo":73,"name":74,"nameZh":6,"description":75,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":76,"categories":77,"keywords":81,"publishedAt":40},"01M6NWS9DAXJTADT4T5MB49X8W","workflow-router","Goal-based workflow orchestration - routes tasks to specialist agents based on user goals","https:\u002F\u002Fgithub.com\u002Frubicanjr\u002FFinCognis\u002Fblob\u002Fmain\u002Fskills\u002Fworkflow-router\u002FSKILL.md",[78],{"categoryNo":79,"categoryName":80,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发",[82,27,83,84,85,86,87,88,89],"workflow router","router","orchestration","goals","goal","user","workflow orchestration","tasks",{"skillNo":91,"name":92,"nameZh":6,"description":93,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":94,"categories":95,"keywords":96,"publishedAt":40},"01M6NWS3RETSC0SHP16HP66E14","wiring","Wiring Verification","https:\u002F\u002Fgithub.com\u002Frubicanjr\u002FFinCognis\u002Fblob\u002Fmain\u002Fskills\u002Fwiring\u002FSKILL.md",[],[92,97,98],"verification","false",{"skillNo":100,"name":101,"nameZh":6,"description":102,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":103,"categories":104,"keywords":108,"publishedAt":40},"01M6NWS0XW9CVQZBDA1EGW0TWC","websocket-patterns","Connection management, room patterns, reconnection strategies, message buffering, and binary protocol design.","https:\u002F\u002Fgithub.com\u002Frubicanjr\u002FFinCognis\u002Fblob\u002Fmain\u002Fskills\u002Fwebsocket-patterns\u002Fskill.md",[105],{"categoryNo":106,"categoryName":107,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000015","视觉设计",[109,110,111,112,113,114,115,116,117,118],"websocket","patterns","websocket patterns","design","protocol","management","message","strategies","binary","connection",{"skillNo":120,"name":121,"nameZh":6,"description":122,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":123,"categories":124,"keywords":129,"publishedAt":40},"01M6NWRDQDX9ZNETAWRRMQWV52","visual-verdict","Screenshot comparison QA for frontend development. Takes a screenshot of the current implementation, scores it across multiple visual dimensions, and returns a structured PASS\u002FREVISE\u002FFAIL verdict with concrete fixes. Use when implementing UI from a design reference or verifying visual correctness.","https:\u002F\u002Fgithub.com\u002Frubicanjr\u002FFinCognis\u002Fblob\u002Fmain\u002Fskills\u002Fvisual-verdict\u002FSKILL.md",[125,128],{"categoryNo":126,"categoryName":127,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000009","前端开发",{"categoryNo":79,"categoryName":80,"taxonomyType":21,"taxonomyTypeDesc":22},[130,131,132,133,134,135,136,137,138,37,139,140,141,112,142,143,144,145,146,147],"visual","verdict","visual verdict","ui","across","revise","comparison","correctness","implementing","fixes","dimensions","frontend","development","qa","screenshot","returns","use","frontend development",{"skillNo":149,"name":150,"nameZh":6,"description":151,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":152,"categories":153,"keywords":154,"publishedAt":40},"01M6NWR8HSNRS7MNDK2J02QYMN","verification-loop","Comprehensive verification system covering build, types, lint, tests, security, and diff review before a PR.","https:\u002F\u002Fgithub.com\u002Frubicanjr\u002FFinCognis\u002Fblob\u002Fmain\u002Fskills\u002Fverification-loop\u002FSKILL.md",[],[155,156,97,157,158,159,160,161,162,163,164,165,166],"verification loop","loop","lint","review","security","pr","system","diff","build","tests","diff review","types",{"skillNo":168,"name":169,"nameZh":6,"description":170,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":171,"categories":172,"keywords":173,"publishedAt":40},"01M6NWR4HHSFR0VR5EXFRWA747","vector-db-patterns","Embedding strategies, ANN algorithms, hybrid search, RAG chunking strategies, and reranking for semantic search and retrieval.","https:\u002F\u002Fgithub.com\u002Frubicanjr\u002FFinCognis\u002Fblob\u002Fmain\u002Fskills\u002Fvector-db-patterns\u002Fskill.md",[],[174,175,176,177,110,178,179,180,181,116,182,183,184,185,186,37,187,188],"vector db patterns","vector db","db","vector","semantic search","search","embedding strategies","algorithms","chunking","semantic","retrieval","embedding","Hybrid Search","hybrid","rag"]