[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6CAB913MQQRVJNFZZFRKEBZ":3,"skill-same:01M6CAB913MQQRVJNFZZFRKEBZ":78},{"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":28,"publishedAt":40,"linkOnly":41,"markdownContent":42,"markdownBody":43,"frontMatter":44,"refName":48,"commitSha":49,"skillDirectory":50,"forksCount":51,"repositoryHtmlUrl":52,"repositoryHomepageUrl":53,"ownerHtmlUrl":54,"ownerBlogUrl":55,"ownerDescription":56,"updatedAt":57,"install":58,"resources":71},"01M6CAB913MQQRVJNFZZFRKEBZ","code-chunker",null,"Map source file structure into navigable sections with line ranges and summaries for efficient agent navigation","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\u002Fsdlc\u002Fskills\u002Fcode-chunker\u002FSKILL.md",[18,23],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",{"categoryNo":24,"categoryName":25,"taxonomyType":26,"taxonomyTypeDesc":27},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[29,30,31,32,33,34,35,36,37,38,39],"code","code chunker","file","navigation","structure","map","line","with","for","source","summaries","2026-11-10 10:12:30",false,"---\nnamespace: aiwg\nname: code-chunker\nplatforms: [all]\ndescription: Map source file structure into navigable sections with line ranges and summaries for efficient agent navigation\n\n---\n\n# code-chunker\n\nAnalyze a source file's structure and produce a navigable map with logical sections, line ranges, and summaries for efficient agent navigation.\n\n## Triggers\n\n\nAlternate expressions and non-obvious activations (primary phrases are matched automatically from the skill description):\n\n- \"map this file\" → structural chunking for navigation\n- \"chunk for navigation\" → file structure mapping\n\n## Purpose\n\nAgents encounter large files they cannot immediately refactor — third-party code, generated code, legacy files awaiting decomposition. Without a structural map, agents must read the entire file to find relevant sections, wasting context window space.\n\nThe code-chunker produces a \"table of contents\" for source files, enabling agents to read only the sections they need. The doc-splitter does this for documentation; code-chunker does it for source code.\n\nThis skill complements `\u002Fdecompose-file` — chunker maps files for navigation, decomposer splits them permanently.\n\n## Behavior\n\nWhen triggered, this skill:\n\n1. **Parse file structure**:\n   - Detect language from file extension\n   - Identify top-level declarations (functions, classes, interfaces, types, constants)\n   - Group related declarations into logical sections\n   - Calculate line ranges for each section\n\n2. **Generate section summaries**:\n   - For each section, produce a one-line description of its purpose\n   - Count key elements (imports, exports, methods, functions)\n   - Note dependencies between sections\n\n3. **Produce navigable map**:\n   - Output structured map with section names, line ranges, and summaries\n   - Include quick-reference commands for reading specific sections\n   - Provide grep suggestions for common navigation needs\n\n4. **Cache map** (optional):\n   - Store generated map in `.aiwg\u002Fworking\u002Fcode-maps\u002F` for reuse during the session\n   - Invalidate cache when file modification time changes\n\n## File Map Format\n\n```\nFile Map: src\u002Fextensions\u002Fregistry.ts (847 lines)\n\nSections:\n\n  1. Imports and type definitions (lines 1-45)\n     — 12 imports, 3 type aliases, 1 interface\n\n  2. ExtensionRegistry class (lines 47-320)\n     2a. constructor() — initializes registry with providers (lines 47-85)\n     2b. register() — registers an extension by type and name (lines 87-145)\n     2c. lookup() — finds extension by name or capability (lines 147-210)\n     2d. listByType() — returns all extensions of a given type (lines 212-260)\n     2e. unregister() — removes an extension from registry (lines 262-320)\n\n  3. Validation functions (lines 322-480)\n     3a. validateExtension() — checks required fields and types (lines 322-390)\n     3b. validateManifest() — validates manifest.json schema (lines 392-440)\n     3c. checkDependencies() — resolves and validates dependency tree (lines 442-480)\n\n  4. Discovery helpers (lines 482-620)\n     4a. discoverExtensions() — scans directories for extensions (lines 482-540)\n     4b. globForType() — finds files matching extension type patterns (lines 542-590)\n     4c. resolveExtensionPath() — resolves relative paths to absolute (lines 592-620)\n\n  5. Deployment logic (lines 622-847)\n     5a. deployToProvider() — deploys extension to a platform provider (lines 622-720)\n     5b. buildProviderConfig() — generates provider-specific config (lines 722-790)\n     5c. writeDeploymentFiles() — writes files to provider directories (lines 792-847)\n\nQuick Commands:\n  Read lines 87-145    → register() method\n  Read lines 322-390   → validateExtension()\n  Read lines 622-720   → deployToProvider()\n  Grep \"register\"      → 14 matches across sections 2, 3\n  Grep \"deploy\"        → 8 matches in section 5\n```\n\n## Arguments\n\n| Argument | Required | Default | Description |\n|----------|----------|---------|-------------|\n| `\u003Cfile-path>` | Yes | — | File to map |\n| `--depth \u003Clevel>` | No | function | Granularity: `function`, `class`, `block` |\n| `--format \u003Ctype>` | No | map | Output: `map`, `json`, `tree` |\n| `--section \u003Cn>` | No | — | Read a specific section immediately |\n| `--cache` | No | true | Cache map for session reuse |\n\n## Depth Levels\n\n### Function (default)\n\nMaps individual functions and methods:\n\n```\n  2b. register() — registers an extension (lines 87-145)\n```\n\n### Class\n\nMaps at class\u002Fmodule level only:\n\n```\n  2. ExtensionRegistry class (lines 47-320) — 5 methods, 274 lines\n```\n\n### Block\n\nMaps at code block level (most granular):\n\n```\n  2b-i.   register() parameter validation (lines 87-95)\n  2b-ii.  register() type checking (lines 96-120)\n  2b-iii. register() storage and indexing (lines 121-145)\n```\n\n## Output Formats\n\n### Map (default)\n\nHuman-readable section listing with line ranges and summaries. See File Map Format above.\n\n### JSON\n\n```json\n{\n  \"file\": \"src\u002Fextensions\u002Fregistry.ts\",\n  \"loc\": 847,\n  \"language\": \"typescript\",\n  \"sections\": [\n    {\n      \"id\": \"1\",\n      \"name\": \"Imports and type definitions\",\n      \"start\": 1,\n      \"end\": 45,\n      \"summary\": \"12 imports, 3 type aliases, 1 interface\",\n      \"children\": []\n    },\n    {\n      \"id\": \"2\",\n      \"name\": \"ExtensionRegistry class\",\n      \"start\": 47,\n      \"end\": 320,\n      \"summary\": \"Main registry class with 5 methods\",\n      \"children\": [\n        {\n          \"id\": \"2a\",\n          \"name\": \"constructor()\",\n          \"start\": 47,\n          \"end\": 85,\n          \"summary\": \"Initializes registry with providers\"\n        }\n      ]\n    }\n  ]\n}\n```\n\n### Tree\n\n```\nsrc\u002Fextensions\u002Fregistry.ts (847 lines)\n├── Imports and types (1-45)\n├── ExtensionRegistry (47-320)\n│   ├── constructor() (47-85)\n│   ├── register() (87-145)\n│   ├── lookup() (147-210)\n│   ├── listByType() (212-260)\n│   └── unregister() (262-320)\n├── Validation (322-480)\n│   ├── validateExtension() (322-390)\n│   ├── validateManifest() (392-440)\n│   └── checkDependencies() (442-480)\n├── Discovery (482-620)\n│   ├── discoverExtensions() (482-540)\n│   ├── globForType() (542-590)\n│   └── resolveExtensionPath() (592-620)\n└── Deployment (622-847)\n    ├── deployToProvider() (622-720)\n    ├── buildProviderConfig() (722-790)\n    └── writeDeploymentFiles() (792-847)\n```\n\n## Language Detection\n\n| Extension | Language | Parsing Strategy |\n|-----------|----------|-----------------|\n| `.ts`, `.tsx` | TypeScript | `export`, `class`, `function`, `interface`, `type`, `const` declarations |\n| `.js`, `.jsx`, `.mjs` | JavaScript | `export`, `class`, `function`, `const` declarations |\n| `.py` | Python | `class`, `def`, top-level assignments, decorators |\n| `.go` | Go | `func`, `type`, `var`, `const` blocks |\n| `.rs` | Rust | `fn`, `struct`, `impl`, `mod`, `enum`, `trait` |\n| `.java` | Java | `class`, `interface`, `enum`, method declarations |\n| Other | Heuristic | Blank lines, comment blocks, indentation patterns |\n\n## Usage Examples\n\n### Basic File Map\n\n```\nUser: \"map src\u002Fextensions\u002Fregistry.ts\"\n\nSkill produces the navigable map showing 5 sections with line ranges.\nAgent can then read only the section needed:\n  \"Read lines 87-145 of src\u002Fextensions\u002Fregistry.ts\"\n```\n\n### Section Navigation\n\n```\nUser: \"\u002Fcode-chunker src\u002Fextensions\u002Fregistry.ts --section 3\"\n\nSkill:\n1. Generates map (or uses cached version)\n2. Immediately reads and displays section 3 (Validation functions, lines 322-480)\n\nOutput: Full content of lines 322-480 with the map as header context.\n```\n\n### JSON for Agent Consumption\n\n```\nUser: \"\u002Fcode-chunker src\u002Flarge-file.py --format json\"\n\nSkill produces JSON map that another agent or script can consume\nto programmatically navigate the file.\n```\n\n### Auto-Trigger on Large File Read\n\nWhen an agent attempts to read a file over 300 lines, the code-chunker can be\ninvoked automatically to provide a map first:\n\n```\nAgent reads src\u002Flegacy\u002Fmonolith.ts (920 lines)\n→ Auto-chunk: \"File is 920 lines. Here's the structure map.\n   Which section do you need?\"\n```\n\n## Integration\n\nThis skill uses:\n- `agent-friendly-code` rule: Threshold for when to suggest chunking\n- `rlm-context-management` rule: Aligns with Rule 2 (programmatic access over full-context loading)\n- `\u002Fdecompose-file` skill: Chunker maps → decomposer splits permanently\n- `\u002Fcodebase-health` command: Identifies files that benefit from chunking\n\n## Output Locations\n\n- Cached maps: `.aiwg\u002Fworking\u002Fcode-maps\u002F{filename}-map.json`\n\n## References\n\n- @$AIWG_ROOT\u002Fagentic\u002Fcode\u002Fframeworks\u002Fsdlc-complete\u002Frules\u002Fagent-friendly-code.md — Thresholds triggering chunker use\n- @$AIWG_ROOT\u002Fagentic\u002Fcode\u002Fframeworks\u002Fsdlc-complete\u002Fskills\u002Fdecompose-file\u002FSKILL.md — Permanent splitting\n- @$AIWG_ROOT\u002Fagentic\u002Fcode\u002Fframeworks\u002Fsdlc-complete\u002Fcommands\u002Fcodebase-health.md — File size scanning\n","# code-chunker\n\nAnalyze a source file's structure and produce a navigable map with logical sections, line ranges, and summaries for efficient agent navigation.\n\n## Triggers\n\n\nAlternate expressions and non-obvious activations (primary phrases are matched automatically from the skill description):\n\n- \"map this file\" → structural chunking for navigation\n- \"chunk for navigation\" → file structure mapping\n\n## Purpose\n\nAgents encounter large files they cannot immediately refactor — third-party code, generated code, legacy files awaiting decomposition. Without a structural map, agents must read the entire file to find relevant sections, wasting context window space.\n\nThe code-chunker produces a \"table of contents\" for source files, enabling agents to read only the sections they need. The doc-splitter does this for documentation; code-chunker does it for source code.\n\nThis skill complements `\u002Fdecompose-file` — chunker maps files for navigation, decomposer splits them permanently.\n\n## Behavior\n\nWhen triggered, this skill:\n\n1. **Parse file structure**:\n   - Detect language from file extension\n   - Identify top-level declarations (functions, classes, interfaces, types, constants)\n   - Group related declarations into logical sections\n   - Calculate line ranges for each section\n\n2. **Generate section summaries**:\n   - For each section, produce a one-line description of its purpose\n   - Count key elements (imports, exports, methods, functions)\n   - Note dependencies between sections\n\n3. **Produce navigable map**:\n   - Output structured map with section names, line ranges, and summaries\n   - Include quick-reference commands for reading specific sections\n   - Provide grep suggestions for common navigation needs\n\n4. **Cache map** (optional):\n   - Store generated map in `.aiwg\u002Fworking\u002Fcode-maps\u002F` for reuse during the session\n   - Invalidate cache when file modification time changes\n\n## File Map Format\n\n```\nFile Map: src\u002Fextensions\u002Fregistry.ts (847 lines)\n\nSections:\n\n  1. Imports and type definitions (lines 1-45)\n     — 12 imports, 3 type aliases, 1 interface\n\n  2. ExtensionRegistry class (lines 47-320)\n     2a. constructor() — initializes registry with providers (lines 47-85)\n     2b. register() — registers an extension by type and name (lines 87-145)\n     2c. lookup() — finds extension by name or capability (lines 147-210)\n     2d. listByType() — returns all extensions of a given type (lines 212-260)\n     2e. unregister() — removes an extension from registry (lines 262-320)\n\n  3. Validation functions (lines 322-480)\n     3a. validateExtension() — checks required fields and types (lines 322-390)\n     3b. validateManifest() — validates manifest.json schema (lines 392-440)\n     3c. checkDependencies() — resolves and validates dependency tree (lines 442-480)\n\n  4. Discovery helpers (lines 482-620)\n     4a. discoverExtensions() — scans directories for extensions (lines 482-540)\n     4b. globForType() — finds files matching extension type patterns (lines 542-590)\n     4c. resolveExtensionPath() — resolves relative paths to absolute (lines 592-620)\n\n  5. Deployment logic (lines 622-847)\n     5a. deployToProvider() — deploys extension to a platform provider (lines 622-720)\n     5b. buildProviderConfig() — generates provider-specific config (lines 722-790)\n     5c. writeDeploymentFiles() — writes files to provider directories (lines 792-847)\n\nQuick Commands:\n  Read lines 87-145    → register() method\n  Read lines 322-390   → validateExtension()\n  Read lines 622-720   → deployToProvider()\n  Grep \"register\"      → 14 matches across sections 2, 3\n  Grep \"deploy\"        → 8 matches in section 5\n```\n\n## Arguments\n\n| Argument | Required | Default | Description |\n|----------|----------|---------|-------------|\n| `\u003Cfile-path>` | Yes | — | File to map |\n| `--depth \u003Clevel>` | No | function | Granularity: `function`, `class`, `block` |\n| `--format \u003Ctype>` | No | map | Output: `map`, `json`, `tree` |\n| `--section \u003Cn>` | No | — | Read a specific section immediately |\n| `--cache` | No | true | Cache map for session reuse |\n\n## Depth Levels\n\n### Function (default)\n\nMaps individual functions and methods:\n\n```\n  2b. register() — registers an extension (lines 87-145)\n```\n\n### Class\n\nMaps at class\u002Fmodule level only:\n\n```\n  2. ExtensionRegistry class (lines 47-320) — 5 methods, 274 lines\n```\n\n### Block\n\nMaps at code block level (most granular):\n\n```\n  2b-i.   register() parameter validation (lines 87-95)\n  2b-ii.  register() type checking (lines 96-120)\n  2b-iii. register() storage and indexing (lines 121-145)\n```\n\n## Output Formats\n\n### Map (default)\n\nHuman-readable section listing with line ranges and summaries. See File Map Format above.\n\n### JSON\n\n```json\n{\n  \"file\": \"src\u002Fextensions\u002Fregistry.ts\",\n  \"loc\": 847,\n  \"language\": \"typescript\",\n  \"sections\": [\n    {\n      \"id\": \"1\",\n      \"name\": \"Imports and type definitions\",\n      \"start\": 1,\n      \"end\": 45,\n      \"summary\": \"12 imports, 3 type aliases, 1 interface\",\n      \"children\": []\n    },\n    {\n      \"id\": \"2\",\n      \"name\": \"ExtensionRegistry class\",\n      \"start\": 47,\n      \"end\": 320,\n      \"summary\": \"Main registry class with 5 methods\",\n      \"children\": [\n        {\n          \"id\": \"2a\",\n          \"name\": \"constructor()\",\n          \"start\": 47,\n          \"end\": 85,\n          \"summary\": \"Initializes registry with providers\"\n        }\n      ]\n    }\n  ]\n}\n```\n\n### Tree\n\n```\nsrc\u002Fextensions\u002Fregistry.ts (847 lines)\n├── Imports and types (1-45)\n├── ExtensionRegistry (47-320)\n│   ├── constructor() (47-85)\n│   ├── register() (87-145)\n│   ├── lookup() (147-210)\n│   ├── listByType() (212-260)\n│   └── unregister() (262-320)\n├── Validation (322-480)\n│   ├── validateExtension() (322-390)\n│   ├── validateManifest() (392-440)\n│   └── checkDependencies() (442-480)\n├── Discovery (482-620)\n│   ├── discoverExtensions() (482-540)\n│   ├── globForType() (542-590)\n│   └── resolveExtensionPath() (592-620)\n└── Deployment (622-847)\n    ├── deployToProvider() (622-720)\n    ├── buildProviderConfig() (722-790)\n    └── writeDeploymentFiles() (792-847)\n```\n\n## Language Detection\n\n| Extension | Language | Parsing Strategy |\n|-----------|----------|-----------------|\n| `.ts`, `.tsx` | TypeScript | `export`, `class`, `function`, `interface`, `type`, `const` declarations |\n| `.js`, `.jsx`, `.mjs` | JavaScript | `export`, `class`, `function`, `const` declarations |\n| `.py` | Python | `class`, `def`, top-level assignments, decorators |\n| `.go` | Go | `func`, `type`, `var`, `const` blocks |\n| `.rs` | Rust | `fn`, `struct`, `impl`, `mod`, `enum`, `trait` |\n| `.java` | Java | `class`, `interface`, `enum`, method declarations |\n| Other | Heuristic | Blank lines, comment blocks, indentation patterns |\n\n## Usage Examples\n\n### Basic File Map\n\n```\nUser: \"map src\u002Fextensions\u002Fregistry.ts\"\n\nSkill produces the navigable map showing 5 sections with line ranges.\nAgent can then read only the section needed:\n  \"Read lines 87-145 of src\u002Fextensions\u002Fregistry.ts\"\n```\n\n### Section Navigation\n\n```\nUser: \"\u002Fcode-chunker src\u002Fextensions\u002Fregistry.ts --section 3\"\n\nSkill:\n1. Generates map (or uses cached version)\n2. Immediately reads and displays section 3 (Validation functions, lines 322-480)\n\nOutput: Full content of lines 322-480 with the map as header context.\n```\n\n### JSON for Agent Consumption\n\n```\nUser: \"\u002Fcode-chunker src\u002Flarge-file.py --format json\"\n\nSkill produces JSON map that another agent or script can consume\nto programmatically navigate the file.\n```\n\n### Auto-Trigger on Large File Read\n\nWhen an agent attempts to read a file over 300 lines, the code-chunker can be\ninvoked automatically to provide a map first:\n\n```\nAgent reads src\u002Flegacy\u002Fmonolith.ts (920 lines)\n→ Auto-chunk: \"File is 920 lines. Here's the structure map.\n   Which section do you need?\"\n```\n\n## Integration\n\nThis skill uses:\n- `agent-friendly-code` rule: Threshold for when to suggest chunking\n- `rlm-context-management` rule: Aligns with Rule 2 (programmatic access over full-context loading)\n- `\u002Fdecompose-file` skill: Chunker maps → decomposer splits permanently\n- `\u002Fcodebase-health` command: Identifies files that benefit from chunking\n\n## Output Locations\n\n- Cached maps: `.aiwg\u002Fworking\u002Fcode-maps\u002F{filename}-map.json`\n\n## References\n\n- @$AIWG_ROOT\u002Fagentic\u002Fcode\u002Fframeworks\u002Fsdlc-complete\u002Frules\u002Fagent-friendly-code.md — Thresholds triggering chunker use\n- @$AIWG_ROOT\u002Fagentic\u002Fcode\u002Fframeworks\u002Fsdlc-complete\u002Fskills\u002Fdecompose-file\u002FSKILL.md — Permanent splitting\n- @$AIWG_ROOT\u002Fagentic\u002Fcode\u002Fframeworks\u002Fsdlc-complete\u002Fcommands\u002Fcodebase-health.md — File size scanning\n",{"name":5,"namespace":45,"platforms":46,"description":7},"aiwg",[47],"all","main","6754967c344ccb087a8de06972f55a41067b291b","agentic\u002Fcode\u002Fplugins\u002Fsdlc\u002Fskills\u002Fcode-chunker",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-12 00:33:10",{"source":8,"skillName":5,"commands":59,"prompt":69,"zipAvailable":70},[60,63,66],{"tool":61,"command":62},"npx","npx skills add jmagly\u002Faiwg --skill code-chunker",{"tool":64,"command":65},"bunx","bunx skills add jmagly\u002Faiwg --skill code-chunker",{"tool":67,"command":68},"pnpm","pnpm dlx skills add jmagly\u002Faiwg --skill code-chunker","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fjmagly\u002Faiwg\u002Fblob\u002Fmain\u002Fagentic\u002Fcode\u002Fplugins\u002Fsdlc\u002Fskills\u002Fcode-chunker\u002FSKILL.md",true,[72],{"path":73,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":76,"sourceHtmlUrl":77},"references\u002Fdetailed-guide.md","REFERENCE","参考文档",17500,"https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-wordpress\u002Freferences\u002Fdetailed-guide.md",[79,107,131,137,144,158],{"skillNo":80,"name":81,"nameZh":6,"description":82,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":83,"categories":84,"keywords":86,"publishedAt":40},"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",[85],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106],"host","host hardening","hardening","read","re","recommendations","remediation","plan","port","verification","Bash","access","only","retention","audit","never","firewall","bind","secrets","request",{"skillNo":108,"name":109,"nameZh":6,"description":110,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":111,"categories":112,"keywords":117,"publishedAt":40},"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",[113,116],{"categoryNo":114,"categoryName":115,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000011","运维与部署",{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[118,119,120,90,121,95,122,123,97,124,87,125,99,126,127,102,103,128,129,130],"exposure analysis","analysis","unknown","credentials","collection","ufw","ports","internet","local","scope","reconstruction","operator","write",{"skillNo":132,"name":81,"nameZh":6,"description":82,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":133,"categories":134,"keywords":136,"publishedAt":40},"01M70P8QATMPKA78E4FT5D2TNA","https:\u002F\u002Fgithub.com\u002Fjmagly\u002Faiwg\u002Fblob\u002Fmain\u002Fagentic\u002Fcode\u002Fframeworks\u002Fsecurity-engineering\u002Fskills\u002Fhost-hardening\u002FSKILL.md",[135],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[89,87,88,98,90,106,93,92,101,94,95,96,97,105,99,100,91,102,103,104],{"skillNo":138,"name":109,"nameZh":6,"description":110,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":139,"categories":140,"keywords":143,"publishedAt":40},"01M70NMPVJ5H0JH131P60FW4R8","https:\u002F\u002Fgithub.com\u002Fjmagly\u002Faiwg\u002Fblob\u002Fmain\u002Fagentic\u002Fcode\u002Fframeworks\u002Fforensics-complete\u002Fskills\u002Fexposure-analysis\u002FSKILL.md",[141,142],{"categoryNo":114,"categoryName":115,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[119,118,102,121,95,122,97,120,87,125,99,126,127,90,103,124,123,128,129,130],{"skillNo":145,"name":146,"nameZh":6,"description":147,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":148,"categories":149,"keywords":151,"publishedAt":40},"01M6CB4DDR0B4NNCFK7ZK7449H","fixture-skill","Exercise rule delivery.","https:\u002F\u002Fgithub.com\u002Fjmagly\u002Faiwg\u002Fblob\u002Fmain\u002Ftest\u002Ffixtures\u002Frule-delivery\u002Fskills\u002Ffixture-skill\u002FSKILL.md",[150],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[152,153,154,155,156,157],"fixture skill","fixture","rule","delivery","true","exercise",{"skillNo":159,"name":160,"nameZh":6,"description":161,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":162,"categories":163,"keywords":165,"publishedAt":40},"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",[164],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[166,167,126,168,153],"pi","pi local","duplicate"]