[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6DQ1BNAMJ6QGCBA17NJHZX4":3,"skill-same:01M6DQ1BNAMJ6QGCBA17NJHZX4":61},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":33,"linkOnly":34,"markdownContent":35,"markdownBody":36,"frontMatter":37,"refName":38,"commitSha":39,"skillDirectory":40,"forksCount":41,"repositoryHtmlUrl":42,"repositoryHomepageUrl":6,"ownerHtmlUrl":43,"ownerBlogUrl":44,"ownerDescription":45,"updatedAt":46,"install":47,"resources":60},"01M6DQ1BNAMJ6QGCBA17NJHZX4","sequential-thinking",null,"Structure cognitive analysis using sequential reasoning chains. Use for codebase analysis, pattern extraction, complex problem decomposition, and building mental models before implementation.","spideynolove\u002Fclaude-dotfiles","spideynolove","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F19179621?v=4","01M6DPV14K2QND6S7BX6HNQYX9","Hung Nguyen","01M6DPV1MMAV9858D8R8CHM5QM",2,"MIT","https:\u002F\u002Fgithub.com\u002Fspideynolove\u002Fclaude-dotfiles\u002Fblob\u002Fmain\u002F.opencode-global\u002Fskills\u002Fsequential-thinking\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32],"sequential thinking","thinking","code","reasoning","extraction","analysis","use","implementation","models","structure","claude-code","pattern","decomposition","problem","2026-11-10 10:12:30",false,"---\nname: sequential-thinking\ndescription: Structure cognitive analysis using sequential reasoning chains. Use for codebase analysis, pattern extraction, complex problem decomposition, and building mental models before implementation.\ncompatibility: claude-code\n---\n\n> Note: Converted from Claude Skill.\n\n# Sequential Thinking\n\nProgressive disclosure framework for structured cognition and codebase analysis.\n\n## Core Principles\n\n1. **Question-First**: Define what you need to understand before using tools\n2. **Reasoning Chains**: Each thought explicitly depends on previous thoughts\n3. **Cognitive Branches**: Separate thinking tracks for different aspects\n4. **Synthesis Before Action**: Complete understanding before extraction\n\n## When to Use\n\n- Analyzing new codebases\n- Extracting reusable patterns\n- Complex problem decomposition\n- Building mental models\n- Understanding domain-specific architectures\n\n---\n\n## All 12 tools via mcporter\n\n| Tool | Required params | Purpose |\n|------|----------------|---------|\n| `start_session` | `problem, success_criteria` | Begin a new thinking session |\n| `add_thought` | `content` | Add a thought to the current session |\n| `create_branch` | `name, from_thought, purpose` | Fork reasoning into a parallel track |\n| `merge_branch` | `branch_id` | Merge a branch back into main reasoning |\n| `store_memory` | `content` | Store a reusable insight |\n| `query_memories` | _(none)_ | Search memories by tags or content |\n| `record_decision` | `decision_title, context, options_considered, chosen_option, rationale, consequences` | Capture architecture decisions |\n| `explore_packages` | `task_description` | Find relevant installed packages |\n| `export_session` | `filename` | Export session or memories to file |\n| `list_sessions` | _(none)_ | List all saved sessions |\n| `load_session` | `session_id` | Resume a specific session |\n| `analyze_session` | _(none)_ | Get stats summary of current session |\n\n---\n\n## Process\n\n### Phase 1: Problem Decomposition\n\n```\n# Check if session already loaded (server auto-loads last session on startup)\nmcporter call sequential-thinking.analyze_session()\n\n# If no active session, start one\nmcporter call sequential-thinking.start_session(\n  problem: \"What fundamental questions must I answer?\",\n  success_criteria: \"Clear understanding of core questions\",\n  session_type: \"general\"\n)\n```\n\n### Phase 2: Structured Discovery\n\n```\n# Add initial thought — returns thought_id needed for branching\nmcporter call sequential-thinking.add_thought(\n  content: \"FIRST PRINCIPLE: What is this fundamentally?\",\n  confidence: 0.9\n)\n# → save the returned thought_id\n\n# Fork into parallel reasoning tracks\nmcporter call sequential-thinking.create_branch(\n  name: \"conceptual-analysis\",\n  from_thought: \"\u003Cthought_id from above>\",\n  purpose: \"Understand concepts separate from implementation\"\n)\n# → save the returned branch_id\n\nmcporter call sequential-thinking.add_thought(\n  content: \"Pattern criteria: Generic, clear interfaces, domain-independent\",\n  branch_id: \"\u003Cbranch_id from above>\"\n)\n```\n\n### Phase 3: Synthesis\n\n```\nmcporter call sequential-thinking.merge_branch(\n  branch_id: \"\u003Cbranch_id>\",\n  target_thought: \"\"\n)\n```\n\n### Phase 4: Pattern Extraction\n\n```\nmcporter call sequential-thinking.query_memories(\n  tags: \"domain-specific,architectural-patterns\",\n  content_contains: \"core-concept\"\n)\n\nmcporter call sequential-thinking.store_memory(\n  content: \"Brief description of the pattern\",\n  code_snippet: \"pure code without comments\",\n  language: \"python\",\n  tags: \"pattern,category\"\n)\n```\n\n---\n\n## Full mcporter call reference\n\n### start_session\n```\nmcporter call sequential-thinking.start_session(\n  problem: \"what to solve\",\n  success_criteria: \"how to know it is done\",\n  session_type: \"general\"        # or \"coding\" — triggers explore_packages automatically\n)\n```\nReturns: `session_id`\n\n### add_thought\n```\nmcporter call sequential-thinking.add_thought(\n  content: \"reasoning step\",\n  branch_id: \"\u003Cid>\",             # optional — omit for main thread\n  confidence: 0.8                # optional\n)\n```\nReturns: `thought_id` — save this when you need to branch from it\n\n### create_branch\n```\nmcporter call sequential-thinking.create_branch(\n  name: \"branch-name\",\n  from_thought: \"\u003Cthought_id>\",  # required — must be non-empty string\n  purpose: \"why this branch exists\"\n)\n```\nReturns: `branch_id`\n\n### merge_branch\n```\nmcporter call sequential-thinking.merge_branch(\n  branch_id: \"\u003Cbranch_id>\",\n  target_thought: \"\"             # optional — leave empty to merge into latest\n)\n```\nReturns: `branch_id`, `target_thought`, `status: \"merged\"`\n\n### store_memory\n```\nmcporter call sequential-thinking.store_memory(\n  content: \"what to remember\",\n  code_snippet: \"pure code\",     # optional\n  language: \"python\",            # optional\n  tags: \"tag1,tag2\"              # optional — comma-separated\n)\n```\nReturns: `memory_id`\n\n### query_memories\n```\nmcporter call sequential-thinking.query_memories(\n  tags: \"tag1,tag2\",             # OR search; use & for AND: \"tag1&tag2\"\n  content_contains: \"\u002Fregex\u002F\"    # optional — wrap in \u002F\u002F for regex\n)\n```\nReturns: `memories[]`, `count`, `search_tips` when empty\n\n### record_decision\n```\nmcporter call sequential-thinking.record_decision(\n  decision_title: \"What we decided\",\n  context: \"why this decision was needed\",\n  options_considered: \"option A vs option B\",\n  chosen_option: \"option A\",\n  rationale: \"because...\",\n  consequences: \"this means...\"\n)\n```\nReturns: `decision_id`\n\n### explore_packages\n```\nmcporter call sequential-thinking.explore_packages(\n  task_description: \"what I am trying to do\",\n  language: \"python\"             # optional, default python\n)\n```\nReturns: `packages[]`, `count`\n\n### export_session\n```\nmcporter call sequential-thinking.export_session(\n  filename: \"output.md\",\n  format: \"markdown\",            # or \"json\"\n  export_type: \"session\"         # or \"memories\"\n)\n```\n\n### list_sessions \u002F load_session\n```\nmcporter call sequential-thinking.list_sessions()\nmcporter call sequential-thinking.load_session(session_id: \"\u003Cid>\")\n```\n\n### analyze_session\n```\nmcporter call sequential-thinking.analyze_session()\n```\nReturns stats or `{\"error\": ...}` if no active session — use this before start_session\n\n---\n\n## Runtime Behaviors\n\n| Behavior | When | Effect |\n|----------|------|--------|\n| Auto-load last session | MCP server starts | `current_session` already set — check with `analyze_session` first |\n| Auto-trigger `explore_packages` | `start_session` with `session_type=\"coding\"` | Scans installed packages; suppress with `package_exploration_required: false` |\n| `query_memories` returns `[]` | No active session | Silent empty — not an error |\n| `add_thought` with `explore_packages: true` | On `general` session | Does nothing — only activates for `coding` sessions |\n| `dependencies` param in `add_thought` | Non-empty string | Broken — stored incorrectly, avoid using |\n\n---\n\n## Storage\n\n```\nmemory-bank\u002F\n├── sessions\u002F     # session .md files\n├── memories\u002F     # standalone memory .md files\n└── patterns\u002F     # pure code only (no comments, no docstrings)\n```\n\n---\n\n## Workflow Examples\n\n### Codebase Analysis\n```\nmcporter call sequential-thinking.start_session(\n  problem: \"Fundamental concepts in this codebase?\",\n  success_criteria: \"Mental model of structure and reusable elements\",\n  session_type: \"general\"\n)\n\nmcporter call sequential-thinking.add_thought(content: \"Initial observation about structure\")\n# save returned thought_id as t1\n\nmcporter call sequential-thinking.create_branch(name: \"architecture\", from_thought: \"\u003Ct1>\", purpose: \"Structural patterns\")\nmcporter call sequential-thinking.create_branch(name: \"data-flow\", from_thought: \"\u003Ct1>\", purpose: \"Information flow\")\n\nmcporter call sequential-thinking.merge_branch(branch_id: \"\u003Carch-id>\")\nmcporter call sequential-thinking.merge_branch(branch_id: \"\u003Cflow-id>\")\n```\n\n### Architecture Decision\n```\nmcporter call sequential-thinking.record_decision(\n  decision_title: \"Storage format choice\",\n  context: \"Need persistent session storage\",\n  options_considered: \"JSON vs Markdown\",\n  chosen_option: \"Markdown\",\n  rationale: \"Human-readable, diffable, no parser needed\",\n  consequences: \"Regex parsing required for reload\"\n)\n```\n\n---\n\n## Anti-Patterns\n\n- Calling `start_session` without checking `analyze_session` first — may create duplicate session\n- Passing empty string to `from_thought` in `create_branch` — raises ValidationError\n- Using `dependencies` param in `add_thought` — broken for non-empty values\n- Tool-first thinking — define what to understand before calling tools\n- Comments or docstrings in stored code patterns\n\n## Key Insight\n\nSequential thinking is NOT about organizing tools — it is about structuring COGNITION. Tools serve your thinking process, not replace it.\n","> Note: Converted from Claude Skill.\n\n# Sequential Thinking\n\nProgressive disclosure framework for structured cognition and codebase analysis.\n\n## Core Principles\n\n1. **Question-First**: Define what you need to understand before using tools\n2. **Reasoning Chains**: Each thought explicitly depends on previous thoughts\n3. **Cognitive Branches**: Separate thinking tracks for different aspects\n4. **Synthesis Before Action**: Complete understanding before extraction\n\n## When to Use\n\n- Analyzing new codebases\n- Extracting reusable patterns\n- Complex problem decomposition\n- Building mental models\n- Understanding domain-specific architectures\n\n---\n\n## All 12 tools via mcporter\n\n| Tool | Required params | Purpose |\n|------|----------------|---------|\n| `start_session` | `problem, success_criteria` | Begin a new thinking session |\n| `add_thought` | `content` | Add a thought to the current session |\n| `create_branch` | `name, from_thought, purpose` | Fork reasoning into a parallel track |\n| `merge_branch` | `branch_id` | Merge a branch back into main reasoning |\n| `store_memory` | `content` | Store a reusable insight |\n| `query_memories` | _(none)_ | Search memories by tags or content |\n| `record_decision` | `decision_title, context, options_considered, chosen_option, rationale, consequences` | Capture architecture decisions |\n| `explore_packages` | `task_description` | Find relevant installed packages |\n| `export_session` | `filename` | Export session or memories to file |\n| `list_sessions` | _(none)_ | List all saved sessions |\n| `load_session` | `session_id` | Resume a specific session |\n| `analyze_session` | _(none)_ | Get stats summary of current session |\n\n---\n\n## Process\n\n### Phase 1: Problem Decomposition\n\n```\n# Check if session already loaded (server auto-loads last session on startup)\nmcporter call sequential-thinking.analyze_session()\n\n# If no active session, start one\nmcporter call sequential-thinking.start_session(\n  problem: \"What fundamental questions must I answer?\",\n  success_criteria: \"Clear understanding of core questions\",\n  session_type: \"general\"\n)\n```\n\n### Phase 2: Structured Discovery\n\n```\n# Add initial thought — returns thought_id needed for branching\nmcporter call sequential-thinking.add_thought(\n  content: \"FIRST PRINCIPLE: What is this fundamentally?\",\n  confidence: 0.9\n)\n# → save the returned thought_id\n\n# Fork into parallel reasoning tracks\nmcporter call sequential-thinking.create_branch(\n  name: \"conceptual-analysis\",\n  from_thought: \"\u003Cthought_id from above>\",\n  purpose: \"Understand concepts separate from implementation\"\n)\n# → save the returned branch_id\n\nmcporter call sequential-thinking.add_thought(\n  content: \"Pattern criteria: Generic, clear interfaces, domain-independent\",\n  branch_id: \"\u003Cbranch_id from above>\"\n)\n```\n\n### Phase 3: Synthesis\n\n```\nmcporter call sequential-thinking.merge_branch(\n  branch_id: \"\u003Cbranch_id>\",\n  target_thought: \"\"\n)\n```\n\n### Phase 4: Pattern Extraction\n\n```\nmcporter call sequential-thinking.query_memories(\n  tags: \"domain-specific,architectural-patterns\",\n  content_contains: \"core-concept\"\n)\n\nmcporter call sequential-thinking.store_memory(\n  content: \"Brief description of the pattern\",\n  code_snippet: \"pure code without comments\",\n  language: \"python\",\n  tags: \"pattern,category\"\n)\n```\n\n---\n\n## Full mcporter call reference\n\n### start_session\n```\nmcporter call sequential-thinking.start_session(\n  problem: \"what to solve\",\n  success_criteria: \"how to know it is done\",\n  session_type: \"general\"        # or \"coding\" — triggers explore_packages automatically\n)\n```\nReturns: `session_id`\n\n### add_thought\n```\nmcporter call sequential-thinking.add_thought(\n  content: \"reasoning step\",\n  branch_id: \"\u003Cid>\",             # optional — omit for main thread\n  confidence: 0.8                # optional\n)\n```\nReturns: `thought_id` — save this when you need to branch from it\n\n### create_branch\n```\nmcporter call sequential-thinking.create_branch(\n  name: \"branch-name\",\n  from_thought: \"\u003Cthought_id>\",  # required — must be non-empty string\n  purpose: \"why this branch exists\"\n)\n```\nReturns: `branch_id`\n\n### merge_branch\n```\nmcporter call sequential-thinking.merge_branch(\n  branch_id: \"\u003Cbranch_id>\",\n  target_thought: \"\"             # optional — leave empty to merge into latest\n)\n```\nReturns: `branch_id`, `target_thought`, `status: \"merged\"`\n\n### store_memory\n```\nmcporter call sequential-thinking.store_memory(\n  content: \"what to remember\",\n  code_snippet: \"pure code\",     # optional\n  language: \"python\",            # optional\n  tags: \"tag1,tag2\"              # optional — comma-separated\n)\n```\nReturns: `memory_id`\n\n### query_memories\n```\nmcporter call sequential-thinking.query_memories(\n  tags: \"tag1,tag2\",             # OR search; use & for AND: \"tag1&tag2\"\n  content_contains: \"\u002Fregex\u002F\"    # optional — wrap in \u002F\u002F for regex\n)\n```\nReturns: `memories[]`, `count`, `search_tips` when empty\n\n### record_decision\n```\nmcporter call sequential-thinking.record_decision(\n  decision_title: \"What we decided\",\n  context: \"why this decision was needed\",\n  options_considered: \"option A vs option B\",\n  chosen_option: \"option A\",\n  rationale: \"because...\",\n  consequences: \"this means...\"\n)\n```\nReturns: `decision_id`\n\n### explore_packages\n```\nmcporter call sequential-thinking.explore_packages(\n  task_description: \"what I am trying to do\",\n  language: \"python\"             # optional, default python\n)\n```\nReturns: `packages[]`, `count`\n\n### export_session\n```\nmcporter call sequential-thinking.export_session(\n  filename: \"output.md\",\n  format: \"markdown\",            # or \"json\"\n  export_type: \"session\"         # or \"memories\"\n)\n```\n\n### list_sessions \u002F load_session\n```\nmcporter call sequential-thinking.list_sessions()\nmcporter call sequential-thinking.load_session(session_id: \"\u003Cid>\")\n```\n\n### analyze_session\n```\nmcporter call sequential-thinking.analyze_session()\n```\nReturns stats or `{\"error\": ...}` if no active session — use this before start_session\n\n---\n\n## Runtime Behaviors\n\n| Behavior | When | Effect |\n|----------|------|--------|\n| Auto-load last session | MCP server starts | `current_session` already set — check with `analyze_session` first |\n| Auto-trigger `explore_packages` | `start_session` with `session_type=\"coding\"` | Scans installed packages; suppress with `package_exploration_required: false` |\n| `query_memories` returns `[]` | No active session | Silent empty — not an error |\n| `add_thought` with `explore_packages: true` | On `general` session | Does nothing — only activates for `coding` sessions |\n| `dependencies` param in `add_thought` | Non-empty string | Broken — stored incorrectly, avoid using |\n\n---\n\n## Storage\n\n```\nmemory-bank\u002F\n├── sessions\u002F     # session .md files\n├── memories\u002F     # standalone memory .md files\n└── patterns\u002F     # pure code only (no comments, no docstrings)\n```\n\n---\n\n## Workflow Examples\n\n### Codebase Analysis\n```\nmcporter call sequential-thinking.start_session(\n  problem: \"Fundamental concepts in this codebase?\",\n  success_criteria: \"Mental model of structure and reusable elements\",\n  session_type: \"general\"\n)\n\nmcporter call sequential-thinking.add_thought(content: \"Initial observation about structure\")\n# save returned thought_id as t1\n\nmcporter call sequential-thinking.create_branch(name: \"architecture\", from_thought: \"\u003Ct1>\", purpose: \"Structural patterns\")\nmcporter call sequential-thinking.create_branch(name: \"data-flow\", from_thought: \"\u003Ct1>\", purpose: \"Information flow\")\n\nmcporter call sequential-thinking.merge_branch(branch_id: \"\u003Carch-id>\")\nmcporter call sequential-thinking.merge_branch(branch_id: \"\u003Cflow-id>\")\n```\n\n### Architecture Decision\n```\nmcporter call sequential-thinking.record_decision(\n  decision_title: \"Storage format choice\",\n  context: \"Need persistent session storage\",\n  options_considered: \"JSON vs Markdown\",\n  chosen_option: \"Markdown\",\n  rationale: \"Human-readable, diffable, no parser needed\",\n  consequences: \"Regex parsing required for reload\"\n)\n```\n\n---\n\n## Anti-Patterns\n\n- Calling `start_session` without checking `analyze_session` first — may create duplicate session\n- Passing empty string to `from_thought` in `create_branch` — raises ValidationError\n- Using `dependencies` param in `add_thought` — broken for non-empty values\n- Tool-first thinking — define what to understand before calling tools\n- Comments or docstrings in stored code patterns\n\n## Key Insight\n\nSequential thinking is NOT about organizing tools — it is about structuring COGNITION. Tools serve your thinking process, not replace it.\n",{"name":5,"description":7,"compatibility":29},"main","be1d5a0a3cc6cb822d2451790132cda53e497525",".opencode-global\u002Fskills\u002Fsequential-thinking",3,"https:\u002F\u002Fgithub.com\u002Fspideynolove\u002Fclaude-dotfiles","https:\u002F\u002Fgithub.com\u002Fspideynolove","https:\u002F\u002Fspideynolove.github.io","Data Engineer","2026-05-28 09:03:32",{"source":8,"skillName":5,"commands":48,"prompt":58,"zipAvailable":59},[49,52,55],{"tool":50,"command":51},"npx","npx skills add spideynolove\u002Fclaude-dotfiles --skill sequential-thinking",{"tool":53,"command":54},"bunx","bunx skills add spideynolove\u002Fclaude-dotfiles --skill sequential-thinking",{"tool":56,"command":57},"pnpm","pnpm dlx skills add spideynolove\u002Fclaude-dotfiles --skill sequential-thinking","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fspideynolove\u002Fclaude-dotfiles\u002Fblob\u002Fmain\u002F.opencode-global\u002Fskills\u002Fsequential-thinking\u002FSKILL.md",true,[],[62,78,93,112,127,136],{"skillNo":63,"name":64,"nameZh":6,"description":65,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":66,"categories":67,"keywords":68,"publishedAt":33},"01M6DQ1GDQVE5XE06RAQ408JGJ","xia","Borrow and adapt patterns from GitHub projects into the current codebase using a structured 6-phase protocol. Invoke with \u002Fxia \u003Cgithub-repo> [focus].","https:\u002F\u002Fgithub.com\u002Fspideynolove\u002Fclaude-dotfiles\u002Fblob\u002Fmain\u002F.opencode-global\u002Fskills\u002Fxia\u002FSKILL.md",[],[64,69,70,71,72,29,73,74,75,76,21,77],"protocol","structured","adapt","focus","patterns","github projects","repo","projects","github",{"skillNo":79,"name":80,"nameZh":6,"description":81,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":82,"categories":83,"keywords":84,"publishedAt":33},"01M6DQ1EDYQW512EN2RFFBF4NX","x2md","Convert an X (Twitter) post URL to markdown. Use when user wants to read, summarize, archive, or analyze a tweet or X post.","https:\u002F\u002Fgithub.com\u002Fspideynolove\u002Fclaude-dotfiles\u002Fblob\u002Fmain\u002F.opencode-global\u002Fskills\u002Fx2md\u002FSKILL.md",[],[80,85,86,87,21,88,89,29,25,90,91,92],"convert","archive","markdown","summarize","analyze","user","read","twitter",{"skillNo":94,"name":95,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":96,"categories":97,"keywords":108,"publishedAt":33},"01M6DQ17SBGVC6PQPZZTSZ49YV","rlm-workflow","https:\u002F\u002Fgithub.com\u002Fspideynolove\u002Fclaude-dotfiles\u002Fblob\u002Fmain\u002F.opencode-global\u002Fskills\u002Frlm-workflow\u002FSKILL.md",[98,103],{"categoryNo":99,"categoryName":100,"taxonomyType":101,"taxonomyTypeDesc":102},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",{"categoryNo":104,"categoryName":105,"taxonomyType":106,"taxonomyTypeDesc":107},"01JBSEEDCAT000000000000037","律师与法务","PROFESSION","适用职业",[109,110,111],"workflow","rlm","rlm workflow",{"skillNo":113,"name":114,"nameZh":6,"description":115,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":116,"categories":117,"keywords":119,"publishedAt":33},"01M6DQ14RM3H655QWFXREBGC7W","repomix","Pack local or remote repos into a single context blob for whole-repository understanding. Use before tasks spanning multiple directories, architecture reviews, or onboarding to an unfamiliar codebase.","https:\u002F\u002Fgithub.com\u002Fspideynolove\u002Fclaude-dotfiles\u002Fblob\u002Fmain\u002F.opencode-global\u002Fskills\u002Frepomix\u002FSKILL.md",[118],{"categoryNo":99,"categoryName":100,"taxonomyType":101,"taxonomyTypeDesc":102},[114,120,121,29,25,122,123,124,125,126,21],"onboarding","local","context","repository","tasks","repos","architecture",{"skillNo":128,"name":129,"nameZh":6,"description":130,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":131,"categories":132,"keywords":133,"publishedAt":33},"01M6DQ12RFVYCT1YF836D5GQBA","reddit2md","Convert a Reddit post URL to markdown. Use when user wants to read, summarize, archive, or analyze a Reddit post.","https:\u002F\u002Fgithub.com\u002Fspideynolove\u002Fclaude-dotfiles\u002Fblob\u002Fmain\u002F.opencode-global\u002Fskills\u002Freddit2md\u002FSKILL.md",[],[129,91,29,134,135,25,90,89,85,86,87,21,88],"reddit post","reddit",{"skillNo":137,"name":138,"nameZh":6,"description":139,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":140,"categories":141,"keywords":146,"publishedAt":33},"01M6DQ0ZNJPBC6JS9KG78QFBZA","playwright","Browser automation via Playwright MCP through mcporter. Use when you need to navigate pages, extract data, take screenshots, interact with UI elements, or scrape web content. All tools called via mcporter to avoid context pollution.","https:\u002F\u002Fgithub.com\u002Fspideynolove\u002Fclaude-dotfiles\u002Fblob\u002Fmain\u002F.opencode-global\u002Fskills\u002Fplaywright\u002FSKILL.md",[142,145],{"categoryNo":143,"categoryName":144,"taxonomyType":101,"taxonomyTypeDesc":102},"01JBSEEDCAT000000000000008","测试与质量",{"categoryNo":99,"categoryName":100,"taxonomyType":101,"taxonomyTypeDesc":102},[138,147,148,29,149,25,150,151,152,153,154,155,156,21,157,158,159,160,161,162],"ui","pollution","take","extract","scrape","Tools","data","elements","content","browser","web","automation","mcporter","browser automation","MCP","pages"]