[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M70GH4DW29TSS3SP601MFME0":3,"skill-same:01M70GH4DW29TSS3SP601MFME0":72},{"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":50,"commitSha":51,"skillDirectory":52,"forksCount":53,"repositoryHtmlUrl":54,"repositoryHomepageUrl":6,"ownerHtmlUrl":55,"ownerBlogUrl":6,"ownerDescription":56,"updatedAt":57,"install":58,"resources":71},"01M70GH4DW29TSS3SP601MFME0","network-config-validation",null,"Pre-deployment checks for router and switch configuration, including dangerous commands, duplicate addresses, subnet overlaps, stale references, management-plane risk, and IOS-style security hygiene. Use when reviewing a router or switch configuration before deployment.","mdnaimul22\u002Fhuman-skills","mdnaimul22","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F64520358?v=4","01M70FH95MH2H796Q01TYSFZ03","Naimul","01M70FH96798CQR4YHA13F17GA",3,"MIT","https:\u002F\u002Fgithub.com\u002Fmdnaimul22\u002Fhuman-skills\u002Fblob\u002Fmain\u002Fskills\u002Fstorage\u002Faffaan-m_ECC\u002Fnetwork-config-validation\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43],"network","network config validation","validation","config","duplicate","use","deployment","for","switch","risk","security","addresses","commands","references","router","security hygiene","plane","when","subnet","community","2026-11-10 10:12:30",false,"---\nname: network-config-validation\ndescription: Pre-deployment checks for router and switch configuration, including dangerous commands, duplicate addresses, subnet overlaps, stale references, management-plane risk, and IOS-style security hygiene. Use when reviewing a router or switch configuration before deployment.\nmetadata:\n  origin: community\n---\n\n# Network Config Validation\n\nUse this skill to review network configuration before a change window or before\nan automation run touches production devices.\n\n## When to Use\n\n- Reviewing Cisco IOS or IOS-XE style snippets before deployment.\n- Auditing generated config from scripts or templates.\n- Looking for dangerous commands, duplicate IP addresses, or subnet overlaps.\n- Checking whether ACLs, route-maps, prefix-lists, or line policies are referenced\n  but not defined.\n- Building lightweight pre-flight scripts for network automation.\n\n## How It Works\n\nTreat config validation as layered evidence, not as a complete parser. Regex\nchecks are useful for pre-flight warnings, but final approval still needs a\nnetwork engineer to review intent, platform syntax, and rollback steps.\n\nValidate in this order:\n\n1. Destructive commands.\n2. Credential and management-plane exposure.\n3. Duplicate addresses and overlapping subnets.\n4. Stale references to ACLs, route-maps, prefix-lists, and interfaces.\n5. Operational hygiene such as NTP, timestamps, remote logging, and banners.\n\n## Dangerous Command Detection\n\n```python\nimport re\n\nDANGEROUS_PATTERNS: list[tuple[re.Pattern[str], str]] = [\n    (re.compile(r\"\\breload\\b\", re.I), \"reload causes downtime\"),\n    (re.compile(r\"\\berase\\s+(startup|nvram|flash)\", re.I), \"erases persistent storage\"),\n    (re.compile(r\"\\bformat\\b\", re.I), \"formats a device filesystem\"),\n    (re.compile(r\"\\bno\\s+router\\s+(bgp|ospf|eigrp)\\b\", re.I), \"removes a routing process\"),\n    (re.compile(r\"\\bno\\s+interface\\s+\\S+\", re.I), \"removes interface configuration\"),\n    (re.compile(r\"\\baaa\\s+new-model\\b\", re.I), \"changes authentication behavior\"),\n    (re.compile(r\"\\bcrypto\\s+key\\s+(zeroize|generate)\\b\", re.I), \"changes device SSH keys\"),\n]\n\ndef find_dangerous_commands(lines: list[str]) -> list[dict[str, str | int]]:\n    findings = []\n    for line_number, line in enumerate(lines, start=1):\n        stripped = line.strip()\n        for pattern, reason in DANGEROUS_PATTERNS:\n            if pattern.search(stripped):\n                findings.append({\n                    \"line\": line_number,\n                    \"command\": stripped,\n                    \"reason\": reason,\n                })\n    return findings\n```\n\n## Duplicate IPs And Subnet Overlaps\n\n```python\nimport ipaddress\nimport re\nfrom collections import Counter\n\nIP_ADDRESS_RE = re.compile(\n    r\"^\\s*ip address\\s+\"\n    r\"(?P\u003Cip>\\d{1,3}(?:\\.\\d{1,3}){3})\\s+\"\n    r\"(?P\u003Cmask>\\d{1,3}(?:\\.\\d{1,3}){3})\\b\",\n    re.I | re.M,\n)\n\ndef extract_interfaces(config: str) -> list[dict[str, str]]:\n    results = []\n    current = None\n    for line in config.splitlines():\n        if line.startswith(\"interface \"):\n            current = line.split(maxsplit=1)[1]\n            continue\n        match = IP_ADDRESS_RE.match(line)\n        if current and match:\n            ip = match.group(\"ip\")\n            mask = match.group(\"mask\")\n            network = ipaddress.ip_interface(f\"{ip}\u002F{mask}\").network\n            results.append({\"interface\": current, \"ip\": ip, \"network\": str(network)})\n    return results\n\ndef find_duplicate_ips(config: str) -> list[str]:\n    ips = [entry[\"ip\"] for entry in extract_interfaces(config)]\n    counts = Counter(ips)\n    return sorted(ip for ip, count in counts.items() if count > 1)\n\ndef find_subnet_overlaps(config: str) -> list[tuple[str, str]]:\n    networks = [ipaddress.ip_network(entry[\"network\"]) for entry in extract_interfaces(config)]\n    overlaps = []\n    for index, left in enumerate(networks):\n        for right in networks[index + 1:]:\n            if left.overlaps(right):\n                overlaps.append((str(left), str(right)))\n    return overlaps\n```\n\n## Management-Plane Checks\n\nParse VTY blocks by section so access-class checks do not spill across unrelated\nlines.\n\n```python\nimport re\n\ndef iter_blocks(config: str, starts_with: str) -> list[str]:\n    blocks = []\n    current: list[str] = []\n    for line in config.splitlines():\n        if line.startswith(starts_with):\n            if current:\n                blocks.append(\"\\n\".join(current))\n            current = [line]\n            continue\n        if current:\n            if line and not line.startswith(\" \"):\n                blocks.append(\"\\n\".join(current))\n                current = []\n            else:\n                current.append(line)\n    if current:\n        blocks.append(\"\\n\".join(current))\n    return blocks\n\ndef check_vty_blocks(config: str) -> list[str]:\n    issues = []\n    for block in iter_blocks(config, \"line vty\"):\n        if re.search(r\"transport\\s+input\\s+.*telnet\", block, re.I):\n            issues.append(\"VTY allows Telnet; require SSH only.\")\n        if not re.search(r\"\\baccess-class\\s+\\S+\\s+in\\b\", block, re.I):\n            issues.append(\"VTY block has no inbound access-class source restriction.\")\n        if not re.search(r\"\\bexec-timeout\\s+\\d+\\s+\\d+\\b\", block, re.I):\n            issues.append(\"VTY block has no explicit exec-timeout.\")\n    return issues\n```\n\n## Security Hygiene Checks\n\n```python\nSECURITY_PATTERNS = [\n    (re.compile(r\"\\bsnmp-server community\\s+(public|private)\\b\", re.I),\n     \"default SNMP community configured\"),\n    (re.compile(r\"\\bsnmp-server community\\s+\\S+\", re.I),\n     \"SNMPv2 community string configured; prefer SNMPv3 authPriv\"),\n    (re.compile(r\"\\bip ssh version 1\\b\", re.I),\n     \"SSH version 1 enabled\"),\n    (re.compile(r\"\\benable password\\b\", re.I),\n     \"enable password is present; use enable secret\"),\n    (re.compile(r\"\\busername\\s+\\S+\\s+password\\b\", re.I),\n     \"local username uses password instead of secret\"),\n]\n\nBEST_PRACTICE_PATTERNS = [\n    (re.compile(r\"\\bntp server\\b\", re.I), \"NTP server\"),\n    (re.compile(r\"\\bservice timestamps\\b\", re.I), \"log timestamps\"),\n    (re.compile(r\"\\blogging\\s+\\S+\", re.I), \"logging destination or buffer\"),\n    (re.compile(r\"\\bsnmp-server group\\s+\\S+\\s+v3\\s+priv\\b\", re.I), \"SNMPv3 authPriv group\"),\n    (re.compile(r\"\\bbanner\\s+(login|motd)\\b\", re.I), \"login banner\"),\n]\n\ndef check_security(config: str) -> list[str]:\n    return [message for pattern, message in SECURITY_PATTERNS if pattern.search(config)]\n\ndef check_missing_hygiene(config: str) -> list[str]:\n    return [\n        f\"Missing {description}\"\n        for pattern, description in BEST_PRACTICE_PATTERNS\n        if not pattern.search(config)\n    ]\n```\n\n## Examples\n\n### Change-Window Preflight\n\n1. Run dangerous-command checks on the exact snippet to be pasted.\n2. Run duplicate IP and subnet overlap checks against the full candidate config.\n3. Confirm every referenced ACL, route-map, and prefix-list exists.\n4. Confirm rollback commands and out-of-band access before any management-plane\n   change.\n\n### Automation Preflight\n\nUse validation as a blocking gate before Netmiko, NAPALM, Ansible, or vendor API\nautomation pushes a generated config. Fail closed on dangerous commands and\ncredentials. Warn on best-practice gaps that are outside the change scope.\n\n## Anti-Patterns\n\n- Treating regex validation as a device parser.\n- Applying generated config without a dry-run diff.\n- Recommending SNMPv2 community strings as a monitoring requirement.\n- Checking VTY blocks with regex that can accidentally span unrelated sections.\n- Testing firewall behavior by disabling ACLs instead of reading counters\u002Flogs.\n\n## See Also\n\n- Agent: `network-config-reviewer`\n- Agent: `network-troubleshooter`\n- Skill: `network-interface-health`\n","# Network Config Validation\n\nUse this skill to review network configuration before a change window or before\nan automation run touches production devices.\n\n## When to Use\n\n- Reviewing Cisco IOS or IOS-XE style snippets before deployment.\n- Auditing generated config from scripts or templates.\n- Looking for dangerous commands, duplicate IP addresses, or subnet overlaps.\n- Checking whether ACLs, route-maps, prefix-lists, or line policies are referenced\n  but not defined.\n- Building lightweight pre-flight scripts for network automation.\n\n## How It Works\n\nTreat config validation as layered evidence, not as a complete parser. Regex\nchecks are useful for pre-flight warnings, but final approval still needs a\nnetwork engineer to review intent, platform syntax, and rollback steps.\n\nValidate in this order:\n\n1. Destructive commands.\n2. Credential and management-plane exposure.\n3. Duplicate addresses and overlapping subnets.\n4. Stale references to ACLs, route-maps, prefix-lists, and interfaces.\n5. Operational hygiene such as NTP, timestamps, remote logging, and banners.\n\n## Dangerous Command Detection\n\n```python\nimport re\n\nDANGEROUS_PATTERNS: list[tuple[re.Pattern[str], str]] = [\n    (re.compile(r\"\\breload\\b\", re.I), \"reload causes downtime\"),\n    (re.compile(r\"\\berase\\s+(startup|nvram|flash)\", re.I), \"erases persistent storage\"),\n    (re.compile(r\"\\bformat\\b\", re.I), \"formats a device filesystem\"),\n    (re.compile(r\"\\bno\\s+router\\s+(bgp|ospf|eigrp)\\b\", re.I), \"removes a routing process\"),\n    (re.compile(r\"\\bno\\s+interface\\s+\\S+\", re.I), \"removes interface configuration\"),\n    (re.compile(r\"\\baaa\\s+new-model\\b\", re.I), \"changes authentication behavior\"),\n    (re.compile(r\"\\bcrypto\\s+key\\s+(zeroize|generate)\\b\", re.I), \"changes device SSH keys\"),\n]\n\ndef find_dangerous_commands(lines: list[str]) -> list[dict[str, str | int]]:\n    findings = []\n    for line_number, line in enumerate(lines, start=1):\n        stripped = line.strip()\n        for pattern, reason in DANGEROUS_PATTERNS:\n            if pattern.search(stripped):\n                findings.append({\n                    \"line\": line_number,\n                    \"command\": stripped,\n                    \"reason\": reason,\n                })\n    return findings\n```\n\n## Duplicate IPs And Subnet Overlaps\n\n```python\nimport ipaddress\nimport re\nfrom collections import Counter\n\nIP_ADDRESS_RE = re.compile(\n    r\"^\\s*ip address\\s+\"\n    r\"(?P\u003Cip>\\d{1,3}(?:\\.\\d{1,3}){3})\\s+\"\n    r\"(?P\u003Cmask>\\d{1,3}(?:\\.\\d{1,3}){3})\\b\",\n    re.I | re.M,\n)\n\ndef extract_interfaces(config: str) -> list[dict[str, str]]:\n    results = []\n    current = None\n    for line in config.splitlines():\n        if line.startswith(\"interface \"):\n            current = line.split(maxsplit=1)[1]\n            continue\n        match = IP_ADDRESS_RE.match(line)\n        if current and match:\n            ip = match.group(\"ip\")\n            mask = match.group(\"mask\")\n            network = ipaddress.ip_interface(f\"{ip}\u002F{mask}\").network\n            results.append({\"interface\": current, \"ip\": ip, \"network\": str(network)})\n    return results\n\ndef find_duplicate_ips(config: str) -> list[str]:\n    ips = [entry[\"ip\"] for entry in extract_interfaces(config)]\n    counts = Counter(ips)\n    return sorted(ip for ip, count in counts.items() if count > 1)\n\ndef find_subnet_overlaps(config: str) -> list[tuple[str, str]]:\n    networks = [ipaddress.ip_network(entry[\"network\"]) for entry in extract_interfaces(config)]\n    overlaps = []\n    for index, left in enumerate(networks):\n        for right in networks[index + 1:]:\n            if left.overlaps(right):\n                overlaps.append((str(left), str(right)))\n    return overlaps\n```\n\n## Management-Plane Checks\n\nParse VTY blocks by section so access-class checks do not spill across unrelated\nlines.\n\n```python\nimport re\n\ndef iter_blocks(config: str, starts_with: str) -> list[str]:\n    blocks = []\n    current: list[str] = []\n    for line in config.splitlines():\n        if line.startswith(starts_with):\n            if current:\n                blocks.append(\"\\n\".join(current))\n            current = [line]\n            continue\n        if current:\n            if line and not line.startswith(\" \"):\n                blocks.append(\"\\n\".join(current))\n                current = []\n            else:\n                current.append(line)\n    if current:\n        blocks.append(\"\\n\".join(current))\n    return blocks\n\ndef check_vty_blocks(config: str) -> list[str]:\n    issues = []\n    for block in iter_blocks(config, \"line vty\"):\n        if re.search(r\"transport\\s+input\\s+.*telnet\", block, re.I):\n            issues.append(\"VTY allows Telnet; require SSH only.\")\n        if not re.search(r\"\\baccess-class\\s+\\S+\\s+in\\b\", block, re.I):\n            issues.append(\"VTY block has no inbound access-class source restriction.\")\n        if not re.search(r\"\\bexec-timeout\\s+\\d+\\s+\\d+\\b\", block, re.I):\n            issues.append(\"VTY block has no explicit exec-timeout.\")\n    return issues\n```\n\n## Security Hygiene Checks\n\n```python\nSECURITY_PATTERNS = [\n    (re.compile(r\"\\bsnmp-server community\\s+(public|private)\\b\", re.I),\n     \"default SNMP community configured\"),\n    (re.compile(r\"\\bsnmp-server community\\s+\\S+\", re.I),\n     \"SNMPv2 community string configured; prefer SNMPv3 authPriv\"),\n    (re.compile(r\"\\bip ssh version 1\\b\", re.I),\n     \"SSH version 1 enabled\"),\n    (re.compile(r\"\\benable password\\b\", re.I),\n     \"enable password is present; use enable secret\"),\n    (re.compile(r\"\\busername\\s+\\S+\\s+password\\b\", re.I),\n     \"local username uses password instead of secret\"),\n]\n\nBEST_PRACTICE_PATTERNS = [\n    (re.compile(r\"\\bntp server\\b\", re.I), \"NTP server\"),\n    (re.compile(r\"\\bservice timestamps\\b\", re.I), \"log timestamps\"),\n    (re.compile(r\"\\blogging\\s+\\S+\", re.I), \"logging destination or buffer\"),\n    (re.compile(r\"\\bsnmp-server group\\s+\\S+\\s+v3\\s+priv\\b\", re.I), \"SNMPv3 authPriv group\"),\n    (re.compile(r\"\\bbanner\\s+(login|motd)\\b\", re.I), \"login banner\"),\n]\n\ndef check_security(config: str) -> list[str]:\n    return [message for pattern, message in SECURITY_PATTERNS if pattern.search(config)]\n\ndef check_missing_hygiene(config: str) -> list[str]:\n    return [\n        f\"Missing {description}\"\n        for pattern, description in BEST_PRACTICE_PATTERNS\n        if not pattern.search(config)\n    ]\n```\n\n## Examples\n\n### Change-Window Preflight\n\n1. Run dangerous-command checks on the exact snippet to be pasted.\n2. Run duplicate IP and subnet overlap checks against the full candidate config.\n3. Confirm every referenced ACL, route-map, and prefix-list exists.\n4. Confirm rollback commands and out-of-band access before any management-plane\n   change.\n\n### Automation Preflight\n\nUse validation as a blocking gate before Netmiko, NAPALM, Ansible, or vendor API\nautomation pushes a generated config. Fail closed on dangerous commands and\ncredentials. Warn on best-practice gaps that are outside the change scope.\n\n## Anti-Patterns\n\n- Treating regex validation as a device parser.\n- Applying generated config without a dry-run diff.\n- Recommending SNMPv2 community strings as a monitoring requirement.\n- Checking VTY blocks with regex that can accidentally span unrelated sections.\n- Testing firewall behavior by disabling ACLs instead of reading counters\u002Flogs.\n\n## See Also\n\n- Agent: `network-config-reviewer`\n- Agent: `network-troubleshooter`\n- Skill: `network-interface-health`\n",{"name":5,"metadata":49,"description":7},{"origin":43},"main","74715deacdc69119d739f38916f8ee4f0f979ebf","skills\u002Fstorage\u002Faffaan-m_ECC\u002Fnetwork-config-validation",0,"https:\u002F\u002Fgithub.com\u002Fmdnaimul22\u002Fhuman-skills","https:\u002F\u002Fgithub.com\u002Fmdnaimul22","AI Agents Workflows Automation | Specializing in Python, FastAPI, MCP Agents & Custom ERP.","2026-11-11 21:16:57",{"source":8,"skillName":5,"commands":59,"prompt":69,"zipAvailable":70},[60,63,66],{"tool":61,"command":62},"npx","npx skills add mdnaimul22\u002Fhuman-skills --skill network-config-validation",{"tool":64,"command":65},"bunx","bunx skills add mdnaimul22\u002Fhuman-skills --skill network-config-validation",{"tool":67,"command":68},"pnpm","pnpm dlx skills add mdnaimul22\u002Fhuman-skills --skill network-config-validation","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fmdnaimul22\u002Fhuman-skills\u002Fblob\u002Fmain\u002Fskills\u002Fstorage\u002Faffaan-m_ECC\u002Fnetwork-config-validation\u002FSKILL.md",true,[],[73,81,106,127,145,160],{"skillNo":74,"name":75,"nameZh":6,"description":76,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":77,"categories":78,"keywords":79,"publishedAt":80},"01M72JT3YP1SQHD0MANGDXQ4RT","higgsfield-websites","Build, edit, and deploy full-stack websites, apps and games via the Higgsfield CLI (`higgsfield website …`). Each is a React 19 + TanStack Start SSR app in one Cloudflare Worker (D1\u002FR2\u002FKV\u002FDO\u002FContainers). THREE product types, picked via `--type` on create: `website` (standalone, no Higgsfield integration — references\u002Fwebsite-flow.md), `app` (Sign in with Higgsfield + fnf SDK, Quanta — references\u002Fapp-flow.md), `game` (realtime multiplayer rooms — references\u002Fgame-flow.md). Routes to the right flow; each carries its own rules and deploy\u002Fpublish gates.\nUse when: \"build me a website\", \"make a landing page\", \"create a web app\", \"build a SaaS dashboard \u002F portfolio\", \"make me a game\", \"deploy this site\", \"publish\". Also owns GAME ART: \"make a spritesheet\", \"tileable texture\", \"animate a 3D character\", game music\u002FSFX — see the game-* references.\nNOT for: single image\u002Fvideo\u002Faudio generation (higgsfield-generate), product photos (higgsfield-product-photoshoot), marketplace cards (higgsfield-marketplace-cards).","https:\u002F\u002Fgithub.com\u002Fmdnaimul22\u002Fhuman-skills\u002Fblob\u002Fmain\u002Fskills\u002Fstorage\u002Fhiggsfield-ai_skills\u002Fhiggsfield-websites\u002FSKILL.md",[],[],"2026-11-10 22:39:42",{"skillNo":82,"name":83,"nameZh":6,"description":84,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":85,"categories":86,"keywords":99,"publishedAt":44},"01M70JPK8HAXXA85P7Q8NKZZYG","writing-skills","Use when creating new skills, editing existing skills, or verifying skills work before deployment","https:\u002F\u002Fgithub.com\u002Fmdnaimul22\u002Fhuman-skills\u002Fblob\u002Fmain\u002Fskills\u002Fstorage\u002Fobra_superpowers\u002Fwriting-skills\u002FSKILL.md",[87,90,95,96],{"categoryNo":88,"categoryName":89,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000018","写作与文案",{"categoryNo":91,"categoryName":92,"taxonomyType":93,"taxonomyTypeDesc":94},"01JBSEEDCAT000000000000036","内容创作者","PROFESSION","适用职业",{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":97,"categoryName":98,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000008","测试与质量",[100,101,102,30,29,103,104,41,105],"writing","writing skills","editing","Existing","new","work",{"skillNo":107,"name":108,"nameZh":6,"description":109,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":110,"categories":111,"keywords":117,"publishedAt":44},"01M70JP4PHBH1CQVVDWZ94W159","writing-plans","Use when you have a spec or requirements for a multi-step task, before touching code","https:\u002F\u002Fgithub.com\u002Fmdnaimul22\u002Fhuman-skills\u002Fblob\u002Fmain\u002Fskills\u002Fstorage\u002Fobra_superpowers\u002Fwriting-plans\u002FSKILL.md",[112,113,114],{"categoryNo":88,"categoryName":89,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":91,"categoryName":92,"taxonomyType":93,"taxonomyTypeDesc":94},{"categoryNo":115,"categoryName":116,"taxonomyType":93,"taxonomyTypeDesc":94},"01JBSEEDCAT000000000000030","开发工程师",[100,118,119,120,41,121,31,29,122,123,124,125,126],"writing plans","plans","you","code","requirements","task","multi","spec","multi-step task",{"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":44},"01M70JNTYVGXFZT8PASZ844TH8","verification-before-completion","Use when about to claim work is complete, fixed, or passing, before committing or creating PRs - requires running verification commands and confirming output before making any success claims; evidence before assertions always","https:\u002F\u002Fgithub.com\u002Fmdnaimul22\u002Fhuman-skills\u002Fblob\u002Fmain\u002Fskills\u002Fstorage\u002Fobra_superpowers\u002Fverification-before-completion\u002FSKILL.md",[],[134,135,136,137,138,139,29,140,141,142,41,143,105,36,144],"verification","verification before completion","complete","about","output","assertions","prs","evidence","claim","claims","running",{"skillNo":146,"name":147,"nameZh":6,"description":148,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":149,"categories":150,"keywords":152,"publishedAt":44},"01M70JNGVSQDESWN0Q5BPJ875V","using-superpowers","Use when starting any conversation - establishes how to find and use skills, requiring skill invocation before ANY response including clarifying questions","https:\u002F\u002Fgithub.com\u002Fmdnaimul22\u002Fhuman-skills\u002Fblob\u002Fmain\u002Fskills\u002Fstorage\u002Fobra_superpowers\u002Fusing-superpowers\u002FSKILL.md",[151],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[153,154,155,156,29,41,157,158,159],"using superpowers","superpowers","conversation","how to","how","find","questions",{"skillNo":161,"name":162,"nameZh":6,"description":163,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":164,"categories":165,"keywords":166,"publishedAt":44},"01M70JN57CE588NPYPYTWH1DWG","using-git-worktrees","Use when starting feature work that needs isolation from current workspace or before executing implementation plans - ensures an isolated workspace exists via native tools or git worktree fallback","https:\u002F\u002Fgithub.com\u002Fmdnaimul22\u002Fhuman-skills\u002Fblob\u002Fmain\u002Fskills\u002Fstorage\u002Fobra_superpowers\u002Fusing-git-worktrees\u002FSKILL.md",[],[167,168,169,170,171,172,41,105,173,174,175,176,177,178,179,119,29,180,181],"using git worktrees","Using git","git","worktrees","git worktrees","implementation","git worktree","worktree","native","Tools","isolation","fallback","feature","via","workspace"]