[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6C2ZQ9RSTW29GFRF9VB8Q7K":3,"skill-same:01M6C2ZQ9RSTW29GFRF9VB8Q7K":74},{"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":41,"linkOnly":42,"markdownContent":43,"markdownBody":44,"frontMatter":45,"refName":50,"commitSha":51,"skillDirectory":52,"forksCount":53,"repositoryHtmlUrl":54,"repositoryHomepageUrl":55,"ownerHtmlUrl":56,"ownerBlogUrl":57,"ownerDescription":58,"updatedAt":59,"install":60,"resources":73},"01M6C2ZQ9RSTW29GFRF9VB8Q7K","doc-scraper",null,"Scrape documentation websites into organized reference files. Use when converting docs sites to searchable references or building Claude skills.","jmagly\u002Faiwg","jmagly","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F1159087?v=4","01M6C10AK8N2WCSQN11FYGTJWN","Joseph Magly","01M6C10AQ8A2RMED1Y1BSVY7NF",229,"MIT","https:\u002F\u002Fgithub.com\u002Fjmagly\u002Faiwg\u002Fblob\u002Fmain\u002Fagentic\u002Fcode\u002Fplugins\u002Fdoc-intelligence\u002Fskills\u002Fdoc-scraper\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],"doc","scraper","doc scraper","use","when","sites","docs sites","references","files","reference","docs","webfetch","write","read","Bash","scrape","documentation","2026-11-10 10:12:30",false,"---\nnamespace: aiwg\nname: doc-scraper\ndescription: Scrape documentation websites into organized reference files. Use when converting docs sites to searchable references or building Claude skills.\ntools: Read, Write, Bash, WebFetch\nplatforms: [all]\n\n---\n\n# Documentation Scraper Skill\n\n## Purpose\n\nSingle responsibility: Convert documentation websites into organized, categorized reference files suitable for Claude skills or offline archives. (BP-4)\n\n## Grounding Checkpoint (Archetype 1 Mitigation)\n\nBefore executing, VERIFY:\n\n- [ ] Target URL is accessible (test with `curl -I`)\n- [ ] Documentation structure is identifiable (inspect page for content selectors)\n- [ ] Output directory is writable\n- [ ] Rate limiting requirements are known (check robots.txt)\n\n**DO NOT proceed without verification. Inspect before scraping.**\n\n## Uncertainty Escalation (Archetype 2 Mitigation)\n\nASK USER instead of guessing when:\n\n- Content selector is ambiguous (multiple `\u003Carticle>` or `\u003Cmain>` elements)\n- URL patterns unclear (can't determine include\u002Fexclude rules)\n- Category mapping uncertain (content doesn't fit predefined categories)\n- Rate limiting unknown (no robots.txt, unclear ToS)\n\n**NEVER substitute missing configuration with assumptions.**\n\n## Context Scope (Archetype 3 Mitigation)\n\n| Context Type | Included | Excluded |\n|--------------|----------|----------|\n| RELEVANT | Target URL, selectors, output path | Unrelated documentation |\n| PERIPHERAL | Similar site examples for selector hints | Historical scrape data |\n| DISTRACTOR | Other projects, unrelated URLs | Previous failed attempts |\n\n## Workflow Steps\n\n### Step 1: Verify Target (Grounding)\n\n```bash\n# Test URL accessibility\ncurl -I \u003Ctarget-url>\n\n# Check robots.txt\ncurl \u003Cbase-url>\u002Frobots.txt\n\n# Inspect page structure (use browser dev tools or fetch sample)\n```\n\n### Step 2: Create Configuration\n\nGenerate scraper config based on inspection:\n\n```json\n{\n  \"name\": \"skill-name\",\n  \"description\": \"When to use this skill\",\n  \"base_url\": \"https:\u002F\u002Fdocs.example.com\u002F\",\n  \"selectors\": {\n    \"main_content\": \"article\",\n    \"title\": \"h1\",\n    \"code_blocks\": \"pre code\"\n  },\n  \"url_patterns\": {\n    \"include\": [\"\u002Fdocs\", \"\u002Fguide\", \"\u002Fapi\"],\n    \"exclude\": [\"\u002Fblog\", \"\u002Fchangelog\", \"\u002Freleases\"]\n  },\n  \"categories\": {\n    \"getting_started\": [\"intro\", \"quickstart\", \"installation\"],\n    \"api_reference\": [\"api\", \"reference\", \"methods\"],\n    \"guides\": [\"guide\", \"tutorial\", \"how-to\"]\n  },\n  \"rate_limit\": 0.5,\n  \"max_pages\": 500\n}\n```\n\n### Step 3: Execute Scraping\n\n**Option A: With skill-seekers (if installed)**\n\n```bash\n# Verify skill-seekers is available\npip show skill-seekers\n\n# Run scraper\nskill-seekers scrape --config config.json\n\n# For large docs, use async mode\nskill-seekers scrape --config config.json --async --workers 8\n```\n\n**Option B: Manual scraping guidance**\n\n1. Use sitemap.xml or crawl starting URL\n2. Extract content using configured selectors\n3. Categorize pages based on URL patterns and keywords\n4. Save to organized directory structure\n\n### Step 4: Validate Output\n\n```bash\n# Check output structure\nls -la output\u002F\u003Cskill-name>\u002F\n\n# Verify content quality\nhead -50 output\u002F\u003Cskill-name>\u002Freferences\u002Findex.md\n\n# Count extracted pages\nfind output\u002F\u003Cskill-name>_data\u002Fpages -name \"*.json\" | wc -l\n```\n\n## Recovery Protocol (Archetype 4 Mitigation)\n\nOn error:\n\n1. **PAUSE** - Stop scraping, preserve already-fetched pages\n2. **DIAGNOSE** - Check error type:\n   - `Connection error` → Verify URL, check network\n   - `Selector not found` → Re-inspect page structure\n   - `Rate limited` → Increase delay, reduce workers\n   - `Memory\u002Fdisk` → Reduce batch size, clear temp files\n3. **ADAPT** - Adjust configuration based on diagnosis\n4. **RETRY** - Resume from checkpoint (max 3 attempts)\n5. **ESCALATE** - Ask user for guidance\n\n## Checkpoint Support\n\nState saved to: `.aiwg\u002Fworking\u002Fcheckpoints\u002Fdoc-scraper\u002F`\n\nResume interrupted scrape:\n```bash\nskill-seekers scrape --config config.json --resume\n```\n\nClear checkpoint and start fresh:\n```bash\nskill-seekers scrape --config config.json --fresh\n```\n\n## Output Structure\n\n```\noutput\u002F\u003Cskill-name>\u002F\n├── SKILL.md              # Main skill description\n├── references\u002F           # Categorized documentation\n│   ├── index.md          # Category index\n│   ├── getting_started.md\n│   ├── api_reference.md\n│   └── guides.md\n├── scripts\u002F              # (empty, for user additions)\n└── assets\u002F               # (empty, for user additions)\n\noutput\u002F\u003Cskill-name>_data\u002F\n├── pages\u002F                # Raw scraped JSON (one per page)\n└── summary.json          # Scrape statistics\n```\n\n## Configuration Templates\n\n### Minimal Config\n\n```json\n{\n  \"name\": \"myframework\",\n  \"base_url\": \"https:\u002F\u002Fdocs.example.com\u002F\",\n  \"max_pages\": 100\n}\n```\n\n### Full Config\n\n```json\n{\n  \"name\": \"myframework\",\n  \"description\": \"MyFramework documentation for building web apps\",\n  \"base_url\": \"https:\u002F\u002Fdocs.example.com\u002F\",\n  \"selectors\": {\n    \"main_content\": \"article, main, div[role='main']\",\n    \"title\": \"h1, .title\",\n    \"code_blocks\": \"pre code, .highlight code\",\n    \"navigation\": \"nav, .sidebar\"\n  },\n  \"url_patterns\": {\n    \"include\": [\"\u002Fdocs\u002F\", \"\u002Fapi\u002F\", \"\u002Fguide\u002F\"],\n    \"exclude\": [\"\u002Fblog\u002F\", \"\u002Fchangelog\u002F\", \"\u002Fv1\u002F\", \"\u002Fv2\u002F\"]\n  },\n  \"categories\": {\n    \"getting_started\": [\"intro\", \"quickstart\", \"install\", \"setup\"],\n    \"concepts\": [\"concept\", \"overview\", \"architecture\"],\n    \"api\": [\"api\", \"reference\", \"method\", \"function\"],\n    \"guides\": [\"guide\", \"tutorial\", \"how-to\", \"example\"],\n    \"advanced\": [\"advanced\", \"internals\", \"customize\"]\n  },\n  \"rate_limit\": 0.5,\n  \"max_pages\": 1000,\n  \"checkpoint\": {\n    \"enabled\": true,\n    \"interval\": 100\n  }\n}\n```\n\n## Troubleshooting\n\n| Issue | Diagnosis | Solution |\n|-------|-----------|----------|\n| No content extracted | Selector mismatch | Inspect page, update `main_content` selector |\n| Wrong pages scraped | URL pattern issue | Check `include`\u002F`exclude` patterns |\n| Rate limited | Too aggressive | Increase `rate_limit` to 1.0+ seconds |\n| Memory issues | Too many pages | Add `max_pages` limit, enable checkpoints |\n| Categories wrong | Keyword mismatch | Update category keywords in config |\n\n## References\n\n- Skill Seekers: https:\u002F\u002Fgithub.com\u002Fjmagly\u002FSkill_Seekers\n- REF-001: Production-Grade Agentic Workflows (BP-1, BP-4, BP-9)\n- REF-002: LLM Failure Modes (Archetype 1-4 mitigations)\n","# Documentation Scraper Skill\n\n## Purpose\n\nSingle responsibility: Convert documentation websites into organized, categorized reference files suitable for Claude skills or offline archives. (BP-4)\n\n## Grounding Checkpoint (Archetype 1 Mitigation)\n\nBefore executing, VERIFY:\n\n- [ ] Target URL is accessible (test with `curl -I`)\n- [ ] Documentation structure is identifiable (inspect page for content selectors)\n- [ ] Output directory is writable\n- [ ] Rate limiting requirements are known (check robots.txt)\n\n**DO NOT proceed without verification. Inspect before scraping.**\n\n## Uncertainty Escalation (Archetype 2 Mitigation)\n\nASK USER instead of guessing when:\n\n- Content selector is ambiguous (multiple `\u003Carticle>` or `\u003Cmain>` elements)\n- URL patterns unclear (can't determine include\u002Fexclude rules)\n- Category mapping uncertain (content doesn't fit predefined categories)\n- Rate limiting unknown (no robots.txt, unclear ToS)\n\n**NEVER substitute missing configuration with assumptions.**\n\n## Context Scope (Archetype 3 Mitigation)\n\n| Context Type | Included | Excluded |\n|--------------|----------|----------|\n| RELEVANT | Target URL, selectors, output path | Unrelated documentation |\n| PERIPHERAL | Similar site examples for selector hints | Historical scrape data |\n| DISTRACTOR | Other projects, unrelated URLs | Previous failed attempts |\n\n## Workflow Steps\n\n### Step 1: Verify Target (Grounding)\n\n```bash\n# Test URL accessibility\ncurl -I \u003Ctarget-url>\n\n# Check robots.txt\ncurl \u003Cbase-url>\u002Frobots.txt\n\n# Inspect page structure (use browser dev tools or fetch sample)\n```\n\n### Step 2: Create Configuration\n\nGenerate scraper config based on inspection:\n\n```json\n{\n  \"name\": \"skill-name\",\n  \"description\": \"When to use this skill\",\n  \"base_url\": \"https:\u002F\u002Fdocs.example.com\u002F\",\n  \"selectors\": {\n    \"main_content\": \"article\",\n    \"title\": \"h1\",\n    \"code_blocks\": \"pre code\"\n  },\n  \"url_patterns\": {\n    \"include\": [\"\u002Fdocs\", \"\u002Fguide\", \"\u002Fapi\"],\n    \"exclude\": [\"\u002Fblog\", \"\u002Fchangelog\", \"\u002Freleases\"]\n  },\n  \"categories\": {\n    \"getting_started\": [\"intro\", \"quickstart\", \"installation\"],\n    \"api_reference\": [\"api\", \"reference\", \"methods\"],\n    \"guides\": [\"guide\", \"tutorial\", \"how-to\"]\n  },\n  \"rate_limit\": 0.5,\n  \"max_pages\": 500\n}\n```\n\n### Step 3: Execute Scraping\n\n**Option A: With skill-seekers (if installed)**\n\n```bash\n# Verify skill-seekers is available\npip show skill-seekers\n\n# Run scraper\nskill-seekers scrape --config config.json\n\n# For large docs, use async mode\nskill-seekers scrape --config config.json --async --workers 8\n```\n\n**Option B: Manual scraping guidance**\n\n1. Use sitemap.xml or crawl starting URL\n2. Extract content using configured selectors\n3. Categorize pages based on URL patterns and keywords\n4. Save to organized directory structure\n\n### Step 4: Validate Output\n\n```bash\n# Check output structure\nls -la output\u002F\u003Cskill-name>\u002F\n\n# Verify content quality\nhead -50 output\u002F\u003Cskill-name>\u002Freferences\u002Findex.md\n\n# Count extracted pages\nfind output\u002F\u003Cskill-name>_data\u002Fpages -name \"*.json\" | wc -l\n```\n\n## Recovery Protocol (Archetype 4 Mitigation)\n\nOn error:\n\n1. **PAUSE** - Stop scraping, preserve already-fetched pages\n2. **DIAGNOSE** - Check error type:\n   - `Connection error` → Verify URL, check network\n   - `Selector not found` → Re-inspect page structure\n   - `Rate limited` → Increase delay, reduce workers\n   - `Memory\u002Fdisk` → Reduce batch size, clear temp files\n3. **ADAPT** - Adjust configuration based on diagnosis\n4. **RETRY** - Resume from checkpoint (max 3 attempts)\n5. **ESCALATE** - Ask user for guidance\n\n## Checkpoint Support\n\nState saved to: `.aiwg\u002Fworking\u002Fcheckpoints\u002Fdoc-scraper\u002F`\n\nResume interrupted scrape:\n```bash\nskill-seekers scrape --config config.json --resume\n```\n\nClear checkpoint and start fresh:\n```bash\nskill-seekers scrape --config config.json --fresh\n```\n\n## Output Structure\n\n```\noutput\u002F\u003Cskill-name>\u002F\n├── SKILL.md              # Main skill description\n├── references\u002F           # Categorized documentation\n│   ├── index.md          # Category index\n│   ├── getting_started.md\n│   ├── api_reference.md\n│   └── guides.md\n├── scripts\u002F              # (empty, for user additions)\n└── assets\u002F               # (empty, for user additions)\n\noutput\u002F\u003Cskill-name>_data\u002F\n├── pages\u002F                # Raw scraped JSON (one per page)\n└── summary.json          # Scrape statistics\n```\n\n## Configuration Templates\n\n### Minimal Config\n\n```json\n{\n  \"name\": \"myframework\",\n  \"base_url\": \"https:\u002F\u002Fdocs.example.com\u002F\",\n  \"max_pages\": 100\n}\n```\n\n### Full Config\n\n```json\n{\n  \"name\": \"myframework\",\n  \"description\": \"MyFramework documentation for building web apps\",\n  \"base_url\": \"https:\u002F\u002Fdocs.example.com\u002F\",\n  \"selectors\": {\n    \"main_content\": \"article, main, div[role='main']\",\n    \"title\": \"h1, .title\",\n    \"code_blocks\": \"pre code, .highlight code\",\n    \"navigation\": \"nav, .sidebar\"\n  },\n  \"url_patterns\": {\n    \"include\": [\"\u002Fdocs\u002F\", \"\u002Fapi\u002F\", \"\u002Fguide\u002F\"],\n    \"exclude\": [\"\u002Fblog\u002F\", \"\u002Fchangelog\u002F\", \"\u002Fv1\u002F\", \"\u002Fv2\u002F\"]\n  },\n  \"categories\": {\n    \"getting_started\": [\"intro\", \"quickstart\", \"install\", \"setup\"],\n    \"concepts\": [\"concept\", \"overview\", \"architecture\"],\n    \"api\": [\"api\", \"reference\", \"method\", \"function\"],\n    \"guides\": [\"guide\", \"tutorial\", \"how-to\", \"example\"],\n    \"advanced\": [\"advanced\", \"internals\", \"customize\"]\n  },\n  \"rate_limit\": 0.5,\n  \"max_pages\": 1000,\n  \"checkpoint\": {\n    \"enabled\": true,\n    \"interval\": 100\n  }\n}\n```\n\n## Troubleshooting\n\n| Issue | Diagnosis | Solution |\n|-------|-----------|----------|\n| No content extracted | Selector mismatch | Inspect page, update `main_content` selector |\n| Wrong pages scraped | URL pattern issue | Check `include`\u002F`exclude` patterns |\n| Rate limited | Too aggressive | Increase `rate_limit` to 1.0+ seconds |\n| Memory issues | Too many pages | Add `max_pages` limit, enable checkpoints |\n| Categories wrong | Keyword mismatch | Update category keywords in config |\n\n## References\n\n- Skill Seekers: https:\u002F\u002Fgithub.com\u002Fjmagly\u002FSkill_Seekers\n- REF-001: Production-Grade Agentic Workflows (BP-1, BP-4, BP-9)\n- REF-002: LLM Failure Modes (Archetype 1-4 mitigations)\n",{"name":5,"tools":46,"namespace":47,"platforms":48,"description":7},"Read, Write, Bash, WebFetch","aiwg",[49],"all","main","6754967c344ccb087a8de06972f55a41067b291b","agentic\u002Fcode\u002Fplugins\u002Fdoc-intelligence\u002Fskills\u002Fdoc-scraper",36,"https:\u002F\u002Fgithub.com\u002Fjmagly\u002Faiwg","https:\u002F\u002Faiwg.io","https:\u002F\u002Fgithub.com\u002Fjmagly","https:\u002F\u002Fintegrolabs.io","ml\u002Fai, industrial automation, safety\u002Fsecurity, ssi\r\n\r\nmagly.net\r\nintegrolabs.io\r\naiwg.io\r\nfortemi.com\r\npagenary.com\r\nbytecask.com","2026-11-14 02:10:01",{"source":8,"skillName":5,"commands":61,"prompt":71,"zipAvailable":72},[62,65,68],{"tool":63,"command":64},"npx","npx skills add jmagly\u002Faiwg --skill doc-scraper",{"tool":66,"command":67},"bunx","bunx skills add jmagly\u002Faiwg --skill doc-scraper",{"tool":69,"command":70},"pnpm","pnpm dlx skills add jmagly\u002Faiwg --skill doc-scraper","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fjmagly\u002Faiwg\u002Fblob\u002Fmain\u002Fagentic\u002Fcode\u002Fplugins\u002Fdoc-intelligence\u002Fskills\u002Fdoc-scraper\u002FSKILL.md",true,[],[75,101,124,130,137,151],{"skillNo":76,"name":77,"nameZh":6,"description":78,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":79,"categories":80,"keywords":82,"publishedAt":41},"01M70QA0BSYJ49EES9V4RE8QH1","host-hardening","Read-only system hardening baseline and plan-first host hardening recommendations for SSH, Docker bind addresses, firewall persistence, datastores, exporters and audit retention.","https:\u002F\u002Fgithub.com\u002Fjmagly\u002Faiwg\u002Fblob\u002Fmain\u002Fagentic\u002Fcode\u002Fplugins\u002Fsecurity-engineering\u002Fskills\u002Fhost-hardening\u002FSKILL.md",[81],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[83,84,85,37,86,87,88,89,90,91,38,92,93,94,95,96,97,98,99,100],"host","host hardening","hardening","re","recommendations","remediation","plan","port","verification","access","only","retention","audit","never","firewall","bind","secrets","request",{"skillNo":102,"name":103,"nameZh":6,"description":104,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":105,"categories":106,"keywords":111,"publishedAt":41},"01M70PNT2Z4HMZPRBTAF6073NN","exposure-analysis","Read-only firewall analysis and effective host exposure reconstruction for Docker published ports, UFW bypass, stale rules, CDN scope, IPv6 asymmetry and external probe allowlists.","https:\u002F\u002Fgithub.com\u002Fjmagly\u002Faiwg\u002Fblob\u002Fmain\u002Fagentic\u002Fcode\u002Fplugins\u002Fforensics\u002Fskills\u002Fexposure-analysis\u002FSKILL.md",[107,110],{"categoryNo":108,"categoryName":109,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000011","运维与部署",{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[112,113,114,37,115,90,116,117,38,118,83,119,93,120,121,96,97,122,123,36],"exposure analysis","analysis","unknown","credentials","collection","ufw","ports","internet","local","scope","reconstruction","operator",{"skillNo":125,"name":77,"nameZh":6,"description":78,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":126,"categories":127,"keywords":129,"publishedAt":41},"01M70P8QATMPKA78E4FT5D2TNA","https:\u002F\u002Fgithub.com\u002Fjmagly\u002Faiwg\u002Fblob\u002Fmain\u002Fagentic\u002Fcode\u002Fframeworks\u002Fsecurity-engineering\u002Fskills\u002Fhost-hardening\u002FSKILL.md",[128],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[85,83,84,92,37,100,88,87,95,89,90,91,38,99,93,94,86,96,97,98],{"skillNo":131,"name":103,"nameZh":6,"description":104,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":132,"categories":133,"keywords":136,"publishedAt":41},"01M70NMPVJ5H0JH131P60FW4R8","https:\u002F\u002Fgithub.com\u002Fjmagly\u002Faiwg\u002Fblob\u002Fmain\u002Fagentic\u002Fcode\u002Fframeworks\u002Fforensics-complete\u002Fskills\u002Fexposure-analysis\u002FSKILL.md",[134,135],{"categoryNo":108,"categoryName":109,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[113,112,96,115,90,116,38,114,83,119,93,120,121,37,97,118,117,122,123,36],{"skillNo":138,"name":139,"nameZh":6,"description":140,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":141,"categories":142,"keywords":144,"publishedAt":41},"01M6CB4DDR0B4NNCFK7ZK7449H","fixture-skill","Exercise rule delivery.","https:\u002F\u002Fgithub.com\u002Fjmagly\u002Faiwg\u002Fblob\u002Fmain\u002Ftest\u002Ffixtures\u002Frule-delivery\u002Fskills\u002Ffixture-skill\u002FSKILL.md",[143],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[145,146,147,148,149,150],"fixture skill","fixture","rule","delivery","true","exercise",{"skillNo":152,"name":153,"nameZh":6,"description":154,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":155,"categories":156,"keywords":158,"publishedAt":41},"01M6CB4AVK1W76MFMPP0JP32CJ","pi-local","Pi-local duplicate-precedence fixture.","https:\u002F\u002Fgithub.com\u002Fjmagly\u002Faiwg\u002Fblob\u002Fmain\u002Ftest\u002Ffixtures\u002Fproviders\u002Fpi\u002Fproject\u002F.pi\u002Fskills\u002Fpi-local\u002FSKILL.md",[157],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[159,160,120,161,146],"pi","pi local","duplicate"]