[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6C2P74GVY295YFAZRVRPM3D":3,"skill-same:01M6C2P74GVY295YFAZRVRPM3D":91},{"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":54,"linkOnly":55,"markdownContent":56,"markdownBody":57,"frontMatter":58,"refName":67,"commitSha":68,"skillDirectory":69,"forksCount":70,"repositoryHtmlUrl":71,"repositoryHomepageUrl":72,"ownerHtmlUrl":73,"ownerBlogUrl":74,"ownerDescription":75,"updatedAt":76,"install":77,"resources":90},"01M6C2P74GVY295YFAZRVRPM3D","codebase-health",null,"Scan source code and report agent-readiness metrics with actionable recommendations","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\u002Fcodex-sdlc\u002Fskills\u002Fcodebase-health\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,40,41,42,43,44,45,46,47,48,49,50,51,52,53],"codebase","health","codebase health","haiku","source code","source","actionable","error","recommendations","efficiency","code-analysis","write","read","grep","testing","text","format","json","markdown","Bash","analysis","ci","metrics","report","code","2026-11-10 10:12:30",false,"---\nnamespace: aiwg\nname: codebase-health\nplatforms: [all]\ndescription: Scan source code and report agent-readiness metrics with actionable recommendations\ncommandHint:\n  argumentHint: '[path] [--threshold N] [--error-threshold N] [--format text|json|markdown] [--include glob] [--exclude glob] [--ci]'\n  allowedTools: 'Bash, Read, Glob, Grep, Write'\n  model: haiku\n  category: code-analysis-testing\n  modelRole: efficiency\n  modelTier: economy\n---\n\n# Codebase Health\n\nYou are a Codebase Health Analyst responsible for scanning source code and reporting on agent-readiness — whether the codebase structure is compatible with AI coding assistants working effectively within context windows.\n\n## Your Task\n\nScan a directory of source code and produce a health report covering:\n1. File size distribution (LOC per file)\n2. Largest files exceeding thresholds\n3. Directory LOC breakdown\n4. Complexity hotspots (if detectable)\n5. Agent readiness score\n6. Actionable recommendations\n\n## Parameters\n\n- **[path]** — Directory to scan (default: current working directory)\n- **--threshold N** — Warning threshold in LOC (default: 300)\n- **--error-threshold N** — Error threshold in LOC (default: 500)\n- **--format text|json|markdown** — Output format (default: text)\n- **--include glob** — File patterns to include (default: `**\u002F*.{ts,js,mjs,py,go,rs,java,tsx,jsx}`)\n- **--exclude glob** — File patterns to exclude (default: `node_modules,dist,.git,vendor,build,.aiwg`)\n- **--ci** — Exit with code 1 if any files exceed error threshold\n\n## Workflow\n\n### Step 1: Discover Files\n\nFind all source files matching include\u002Fexclude patterns:\n\n```bash\n# Count lines per file, excluding binary and generated files\nfind ${path} -type f \\( -name \"*.ts\" -o -name \"*.js\" -o -name \"*.mjs\" -o -name \"*.py\" -o -name \"*.go\" -o -name \"*.rs\" -o -name \"*.java\" -o -name \"*.tsx\" -o -name \"*.jsx\" \\) \\\n  ! -path \"*\u002Fnode_modules\u002F*\" ! -path \"*\u002Fdist\u002F*\" ! -path \"*\u002F.git\u002F*\" ! -path \"*\u002Fvendor\u002F*\" ! -path \"*\u002Fbuild\u002F*\" ! -path \"*\u002F.aiwg\u002F*\" \\\n  -exec wc -l {} + | sort -rn\n```\n\n### Step 2: Categorize Files\n\nClassify each file by size:\n\n| Category | LOC Range | Status |\n|----------|-----------|--------|\n| Excellent | 0-100 | Highly agent-friendly |\n| Good | 101-200 | Agent-friendly |\n| Acceptable | 201-300 | Within limits |\n| Warning | 301-500 | Approaching limits, consider splitting |\n| Error | 501+ | Too large for effective agent processing |\n\n### Step 3: Calculate Agent Readiness Score\n\nScore formula (0-100):\n\n```\nscore = 100\n\n# Deduct for files over error threshold\nscore -= (files_over_error * 5)\n\n# Deduct for files in warning zone\nscore -= (files_in_warning * 2)\n\n# Deduct for very large files (>1000 LOC)\nscore -= (files_over_1000 * 10)\n\n# Bonus for good structure\nif (average_file_size \u003C 150) score += 5\nif (no_barrel_files) score += 3\nif (max_directory_depth \u003C= 3) score += 2\n\n# Clamp to 0-100\nscore = max(0, min(100, score))\n```\n\n### Step 4: Identify Hotspots\n\nFor the top 10 largest files:\n- Report file path and LOC\n- Check for common anti-patterns:\n  - Barrel files (index.ts with only re-exports)\n  - Generic names (utils.ts, helpers.ts)\n  - Deep nesting (> 3 levels from src\u002F)\n\n### Step 5: Generate Report\n\n#### Text Format (default)\n\n```\nCodebase Health Report\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n\nAgent Readiness Score: 72\u002F100\n\nFiles scanned: 156\nTotal LOC: 24,830\nAverage file size: 159 lines\n\nFile Size Distribution:\n  Excellent (0-100):     68 files (44%)\n  Good (101-200):        45 files (29%)\n  Acceptable (201-300):  31 files (20%)\n  Warning (301-500):     9 files  (6%)\n  Error (501+):          3 files  (2%)\n\nTop 10 Largest Files:\n   1. src\u002Fextensions\u002Fregistry.ts          847 lines  ?\n   2. src\u002Fcatalog\u002Fbuiltin-models.json      623 lines  ?\n   3. tools\u002Fagents\u002Fproviders\u002Fbase.mjs      512 lines  ?\n   4. src\u002Fextensions\u002Fcommands\u002Fdefs.ts      478 lines  ⚠\n   5. src\u002Fsmiths\u002Fplatform-paths.ts        445 lines  ⚠\n   6. tools\u002Fagents\u002Fdeploy.mjs             398 lines  ⚠\n   7. src\u002Fcatalog\u002Fcatalog.ts              367 lines  ⚠\n   8. src\u002Fextensions\u002Fregistry-utils.ts    342 lines  ⚠\n   9. tools\u002Fralph-external\u002Forchestrator.mjs 335 lines  ⚠\n  10. src\u002Fmcp\u002Fserver.ts                   321 lines  ⚠\n\nDirectory LOC Breakdown:\n  src\u002Fextensions\u002F       4,230 lines (17%)\n  src\u002Fcatalog\u002F          3,100 lines (12%)\n  tools\u002Fagents\u002F         2,800 lines (11%)\n  src\u002Fsmiths\u002F           2,100 lines  (8%)\n  src\u002Fmcp\u002F              1,900 lines  (8%)\n\nAnti-Pattern Alerts:\n  ⚠ 2 barrel files detected (re-export only index.ts)\n  ⚠ 1 file with generic name (src\u002Futils.ts)\n  ⚠ 0 files with deep nesting (>3 levels)\n\nRecommendations:\n  ? 3 files need decomposition (>500 LOC)\n     → Run \u002Fdecompose-file \u003Cpath> for guided splitting\n  ⚠  9 files approaching limits (300-500 LOC)\n     → Monitor these files; extract when adding new code\n  ? 2 barrel files could be replaced with direct imports\n```\n\n#### JSON Format\n\n```json\n{\n  \"score\": 72,\n  \"files_scanned\": 156,\n  \"total_loc\": 24830,\n  \"average_file_size\": 159,\n  \"distribution\": {\n    \"excellent\": { \"count\": 68, \"percentage\": 44 },\n    \"good\": { \"count\": 45, \"percentage\": 29 },\n    \"acceptable\": { \"count\": 31, \"percentage\": 20 },\n    \"warning\": { \"count\": 9, \"percentage\": 6 },\n    \"error\": { \"count\": 3, \"percentage\": 2 }\n  },\n  \"top_files\": [\n    { \"path\": \"src\u002Fextensions\u002Fregistry.ts\", \"loc\": 847, \"status\": \"error\" }\n  ],\n  \"directory_breakdown\": [\n    { \"path\": \"src\u002Fextensions\u002F\", \"loc\": 4230, \"percentage\": 17 }\n  ],\n  \"anti_patterns\": {\n    \"barrel_files\": 2,\n    \"generic_names\": 1,\n    \"deep_nesting\": 0\n  },\n  \"recommendations\": [\n    {\n      \"severity\": \"error\",\n      \"count\": 3,\n      \"message\": \"Files need decomposition (>500 LOC)\",\n      \"action\": \"Run \u002Fdecompose-file \u003Cpath> for guided splitting\"\n    }\n  ]\n}\n```\n\n#### Markdown Format\n\n```markdown\n# Codebase Health Report\n\n**Agent Readiness Score**: 72\u002F100\n**Files scanned**: 156 | **Total LOC**: 24,830 | **Average**: 159 lines\n\n## File Size Distribution\n\n| Category | Range | Count | % |\n|----------|-------|-------|---|\n| Excellent | 0-100 | 68 | 44% |\n| Good | 101-200 | 45 | 29% |\n| Acceptable | 201-300 | 31 | 20% |\n| Warning | 301-500 | 9 | 6% |\n| Error | 501+ | 3 | 2% |\n\n## Top 10 Largest Files\n\n| # | File | LOC | Status |\n|---|------|-----|--------|\n| 1 | src\u002Fextensions\u002Fregistry.ts | 847 | Error |\n| ... |\n\n## Recommendations\n\n1. **3 files need decomposition** (>500 LOC) — Run `\u002Fdecompose-file \u003Cpath>`\n2. **9 files approaching limits** (300-500 LOC) — Monitor and extract\n```\n\n### Step 6: CI Mode\n\nIf `--ci` flag is set:\n- After generating the report, check if any files exceed the error threshold\n- If yes: exit with code 1 and print summary of violations\n- If no: exit with code 0\n\n```bash\n# CI integration example\naiwg codebase-health --ci --format json > health-report.json\n# Exit code 1 if violations exist\n```\n\n## Error Handling\n\n### No Source Files Found\n\n```\nNo source files found in {path}.\n\nCheck:\n- Path exists and contains source files\n- --include pattern matches your file types\n- --exclude pattern isn't filtering everything\n\nTry: \u002Fcodebase-health --include \"**\u002F*.{py,go}\"\n```\n\n### Path Not Found\n\n```\nError: Directory {path} does not exist.\n```\n\n## Configuration\n\nThresholds can be configured in `.aiwg\u002Fconfig.yaml`:\n\n```yaml\ncodebase_health:\n  thresholds:\n    warning: 300\n    error: 500\n  include:\n    - \"**\u002F*.{ts,js,mjs,py,go,rs,java,tsx,jsx}\"\n  exclude:\n    - \"node_modules\"\n    - \"dist\"\n    - \".git\"\n    - \"vendor\"\n```\n\n## Integration\n\n- References: @$AIWG_ROOT\u002Fagentic\u002Fcode\u002Fframeworks\u002Fsdlc-complete\u002Frules\u002Fagent-friendly-code.md (threshold definitions)\n- Complements: `\u002Fdecompose-file` (remediation for identified violations)\n- Complements: `\u002Fcomplexity-gate` (CI enforcement)\n- Related: `project-health-check` (project-level metrics, not code structure)\n\n## Success Criteria\n\nThis command succeeds when:\n\n- [x] All source files discovered and measured\n- [x] Agent readiness score calculated\n- [x] Top largest files identified\n- [x] Directory breakdown generated\n- [x] Anti-pattern alerts reported\n- [x] Actionable recommendations provided\n- [x] Output format matches requested format\n- [x] CI mode returns correct exit code\n- [x] Completes in \u003C10s for codebases up to 50K LOC\n\n## References\n\n- @$AIWG_ROOT\u002Fagentic\u002Fcode\u002Fframeworks\u002Fsdlc-complete\u002Frules\u002Fagent-friendly-code.md — Threshold definitions (warning: 300 LOC, error: 500 LOC) that this skill enforces\n- @$AIWG_ROOT\u002Fagentic\u002Fcode\u002Faddons\u002Faiwg-utils\u002Frules\u002Fresearch-before-decision.md — Scan codebase before calculating scores; check existing patterns before flagging anti-patterns\n- @$AIWG_ROOT\u002Fagentic\u002Fcode\u002Fframeworks\u002Fsdlc-complete\u002Fskills\u002Fcomplexity-gate\u002FSKILL.md — CI-friendly enforcement gate that pairs with this diagnostic skill\n\n","# Codebase Health\n\nYou are a Codebase Health Analyst responsible for scanning source code and reporting on agent-readiness — whether the codebase structure is compatible with AI coding assistants working effectively within context windows.\n\n## Your Task\n\nScan a directory of source code and produce a health report covering:\n1. File size distribution (LOC per file)\n2. Largest files exceeding thresholds\n3. Directory LOC breakdown\n4. Complexity hotspots (if detectable)\n5. Agent readiness score\n6. Actionable recommendations\n\n## Parameters\n\n- **[path]** — Directory to scan (default: current working directory)\n- **--threshold N** — Warning threshold in LOC (default: 300)\n- **--error-threshold N** — Error threshold in LOC (default: 500)\n- **--format text|json|markdown** — Output format (default: text)\n- **--include glob** — File patterns to include (default: `**\u002F*.{ts,js,mjs,py,go,rs,java,tsx,jsx}`)\n- **--exclude glob** — File patterns to exclude (default: `node_modules,dist,.git,vendor,build,.aiwg`)\n- **--ci** — Exit with code 1 if any files exceed error threshold\n\n## Workflow\n\n### Step 1: Discover Files\n\nFind all source files matching include\u002Fexclude patterns:\n\n```bash\n# Count lines per file, excluding binary and generated files\nfind ${path} -type f \\( -name \"*.ts\" -o -name \"*.js\" -o -name \"*.mjs\" -o -name \"*.py\" -o -name \"*.go\" -o -name \"*.rs\" -o -name \"*.java\" -o -name \"*.tsx\" -o -name \"*.jsx\" \\) \\\n  ! -path \"*\u002Fnode_modules\u002F*\" ! -path \"*\u002Fdist\u002F*\" ! -path \"*\u002F.git\u002F*\" ! -path \"*\u002Fvendor\u002F*\" ! -path \"*\u002Fbuild\u002F*\" ! -path \"*\u002F.aiwg\u002F*\" \\\n  -exec wc -l {} + | sort -rn\n```\n\n### Step 2: Categorize Files\n\nClassify each file by size:\n\n| Category | LOC Range | Status |\n|----------|-----------|--------|\n| Excellent | 0-100 | Highly agent-friendly |\n| Good | 101-200 | Agent-friendly |\n| Acceptable | 201-300 | Within limits |\n| Warning | 301-500 | Approaching limits, consider splitting |\n| Error | 501+ | Too large for effective agent processing |\n\n### Step 3: Calculate Agent Readiness Score\n\nScore formula (0-100):\n\n```\nscore = 100\n\n# Deduct for files over error threshold\nscore -= (files_over_error * 5)\n\n# Deduct for files in warning zone\nscore -= (files_in_warning * 2)\n\n# Deduct for very large files (>1000 LOC)\nscore -= (files_over_1000 * 10)\n\n# Bonus for good structure\nif (average_file_size \u003C 150) score += 5\nif (no_barrel_files) score += 3\nif (max_directory_depth \u003C= 3) score += 2\n\n# Clamp to 0-100\nscore = max(0, min(100, score))\n```\n\n### Step 4: Identify Hotspots\n\nFor the top 10 largest files:\n- Report file path and LOC\n- Check for common anti-patterns:\n  - Barrel files (index.ts with only re-exports)\n  - Generic names (utils.ts, helpers.ts)\n  - Deep nesting (> 3 levels from src\u002F)\n\n### Step 5: Generate Report\n\n#### Text Format (default)\n\n```\nCodebase Health Report\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n\nAgent Readiness Score: 72\u002F100\n\nFiles scanned: 156\nTotal LOC: 24,830\nAverage file size: 159 lines\n\nFile Size Distribution:\n  Excellent (0-100):     68 files (44%)\n  Good (101-200):        45 files (29%)\n  Acceptable (201-300):  31 files (20%)\n  Warning (301-500):     9 files  (6%)\n  Error (501+):          3 files  (2%)\n\nTop 10 Largest Files:\n   1. src\u002Fextensions\u002Fregistry.ts          847 lines  ?\n   2. src\u002Fcatalog\u002Fbuiltin-models.json      623 lines  ?\n   3. tools\u002Fagents\u002Fproviders\u002Fbase.mjs      512 lines  ?\n   4. src\u002Fextensions\u002Fcommands\u002Fdefs.ts      478 lines  ⚠\n   5. src\u002Fsmiths\u002Fplatform-paths.ts        445 lines  ⚠\n   6. tools\u002Fagents\u002Fdeploy.mjs             398 lines  ⚠\n   7. src\u002Fcatalog\u002Fcatalog.ts              367 lines  ⚠\n   8. src\u002Fextensions\u002Fregistry-utils.ts    342 lines  ⚠\n   9. tools\u002Fralph-external\u002Forchestrator.mjs 335 lines  ⚠\n  10. src\u002Fmcp\u002Fserver.ts                   321 lines  ⚠\n\nDirectory LOC Breakdown:\n  src\u002Fextensions\u002F       4,230 lines (17%)\n  src\u002Fcatalog\u002F          3,100 lines (12%)\n  tools\u002Fagents\u002F         2,800 lines (11%)\n  src\u002Fsmiths\u002F           2,100 lines  (8%)\n  src\u002Fmcp\u002F              1,900 lines  (8%)\n\nAnti-Pattern Alerts:\n  ⚠ 2 barrel files detected (re-export only index.ts)\n  ⚠ 1 file with generic name (src\u002Futils.ts)\n  ⚠ 0 files with deep nesting (>3 levels)\n\nRecommendations:\n  ? 3 files need decomposition (>500 LOC)\n     → Run \u002Fdecompose-file \u003Cpath> for guided splitting\n  ⚠  9 files approaching limits (300-500 LOC)\n     → Monitor these files; extract when adding new code\n  ? 2 barrel files could be replaced with direct imports\n```\n\n#### JSON Format\n\n```json\n{\n  \"score\": 72,\n  \"files_scanned\": 156,\n  \"total_loc\": 24830,\n  \"average_file_size\": 159,\n  \"distribution\": {\n    \"excellent\": { \"count\": 68, \"percentage\": 44 },\n    \"good\": { \"count\": 45, \"percentage\": 29 },\n    \"acceptable\": { \"count\": 31, \"percentage\": 20 },\n    \"warning\": { \"count\": 9, \"percentage\": 6 },\n    \"error\": { \"count\": 3, \"percentage\": 2 }\n  },\n  \"top_files\": [\n    { \"path\": \"src\u002Fextensions\u002Fregistry.ts\", \"loc\": 847, \"status\": \"error\" }\n  ],\n  \"directory_breakdown\": [\n    { \"path\": \"src\u002Fextensions\u002F\", \"loc\": 4230, \"percentage\": 17 }\n  ],\n  \"anti_patterns\": {\n    \"barrel_files\": 2,\n    \"generic_names\": 1,\n    \"deep_nesting\": 0\n  },\n  \"recommendations\": [\n    {\n      \"severity\": \"error\",\n      \"count\": 3,\n      \"message\": \"Files need decomposition (>500 LOC)\",\n      \"action\": \"Run \u002Fdecompose-file \u003Cpath> for guided splitting\"\n    }\n  ]\n}\n```\n\n#### Markdown Format\n\n```markdown\n# Codebase Health Report\n\n**Agent Readiness Score**: 72\u002F100\n**Files scanned**: 156 | **Total LOC**: 24,830 | **Average**: 159 lines\n\n## File Size Distribution\n\n| Category | Range | Count | % |\n|----------|-------|-------|---|\n| Excellent | 0-100 | 68 | 44% |\n| Good | 101-200 | 45 | 29% |\n| Acceptable | 201-300 | 31 | 20% |\n| Warning | 301-500 | 9 | 6% |\n| Error | 501+ | 3 | 2% |\n\n## Top 10 Largest Files\n\n| # | File | LOC | Status |\n|---|------|-----|--------|\n| 1 | src\u002Fextensions\u002Fregistry.ts | 847 | Error |\n| ... |\n\n## Recommendations\n\n1. **3 files need decomposition** (>500 LOC) — Run `\u002Fdecompose-file \u003Cpath>`\n2. **9 files approaching limits** (300-500 LOC) — Monitor and extract\n```\n\n### Step 6: CI Mode\n\nIf `--ci` flag is set:\n- After generating the report, check if any files exceed the error threshold\n- If yes: exit with code 1 and print summary of violations\n- If no: exit with code 0\n\n```bash\n# CI integration example\naiwg codebase-health --ci --format json > health-report.json\n# Exit code 1 if violations exist\n```\n\n## Error Handling\n\n### No Source Files Found\n\n```\nNo source files found in {path}.\n\nCheck:\n- Path exists and contains source files\n- --include pattern matches your file types\n- --exclude pattern isn't filtering everything\n\nTry: \u002Fcodebase-health --include \"**\u002F*.{py,go}\"\n```\n\n### Path Not Found\n\n```\nError: Directory {path} does not exist.\n```\n\n## Configuration\n\nThresholds can be configured in `.aiwg\u002Fconfig.yaml`:\n\n```yaml\ncodebase_health:\n  thresholds:\n    warning: 300\n    error: 500\n  include:\n    - \"**\u002F*.{ts,js,mjs,py,go,rs,java,tsx,jsx}\"\n  exclude:\n    - \"node_modules\"\n    - \"dist\"\n    - \".git\"\n    - \"vendor\"\n```\n\n## Integration\n\n- References: @$AIWG_ROOT\u002Fagentic\u002Fcode\u002Fframeworks\u002Fsdlc-complete\u002Frules\u002Fagent-friendly-code.md (threshold definitions)\n- Complements: `\u002Fdecompose-file` (remediation for identified violations)\n- Complements: `\u002Fcomplexity-gate` (CI enforcement)\n- Related: `project-health-check` (project-level metrics, not code structure)\n\n## Success Criteria\n\nThis command succeeds when:\n\n- [x] All source files discovered and measured\n- [x] Agent readiness score calculated\n- [x] Top largest files identified\n- [x] Directory breakdown generated\n- [x] Anti-pattern alerts reported\n- [x] Actionable recommendations provided\n- [x] Output format matches requested format\n- [x] CI mode returns correct exit code\n- [x] Completes in \u003C10s for codebases up to 50K LOC\n\n## References\n\n- @$AIWG_ROOT\u002Fagentic\u002Fcode\u002Fframeworks\u002Fsdlc-complete\u002Frules\u002Fagent-friendly-code.md — Threshold definitions (warning: 300 LOC, error: 500 LOC) that this skill enforces\n- @$AIWG_ROOT\u002Fagentic\u002Fcode\u002Faddons\u002Faiwg-utils\u002Frules\u002Fresearch-before-decision.md — Scan codebase before calculating scores; check existing patterns before flagging anti-patterns\n- @$AIWG_ROOT\u002Fagentic\u002Fcode\u002Fframeworks\u002Fsdlc-complete\u002Fskills\u002Fcomplexity-gate\u002FSKILL.md — CI-friendly enforcement gate that pairs with this diagnostic skill\n\n",{"name":5,"namespace":59,"platforms":60,"commandHint":62,"description":7},"aiwg",[61],"all",{"model":32,"category":63,"modelRole":38,"modelTier":64,"allowedTools":65,"argumentHint":66},"code-analysis-testing","economy","Bash, Read, Glob, Grep, Write","[path] [--threshold N] [--error-threshold N] [--format text|json|markdown] [--include glob] [--exclude glob] [--ci]","main","6754967c344ccb087a8de06972f55a41067b291b","agentic\u002Fcode\u002Fplugins\u002Fcodex-sdlc\u002Fskills\u002Fcodebase-health",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 21:57:33",{"source":8,"skillName":5,"commands":78,"prompt":88,"zipAvailable":89},[79,82,85],{"tool":80,"command":81},"npx","npx skills add jmagly\u002Faiwg --skill codebase-health",{"tool":83,"command":84},"bunx","bunx skills add jmagly\u002Faiwg --skill codebase-health",{"tool":86,"command":87},"pnpm","pnpm dlx skills add jmagly\u002Faiwg --skill codebase-health","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fjmagly\u002Faiwg\u002Fblob\u002Fmain\u002Fagentic\u002Fcode\u002Fplugins\u002Fcodex-sdlc\u002Fskills\u002Fcodebase-health\u002FSKILL.md",true,[],[92,117,139,145,152,166],{"skillNo":93,"name":94,"nameZh":6,"description":95,"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":99,"publishedAt":54},"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",[98],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[100,101,102,41,103,37,104,105,106,107,48,108,109,110,111,112,113,114,115,116],"host","host hardening","hardening","re","remediation","plan","port","verification","access","only","retention","audit","never","firewall","bind","secrets","request",{"skillNo":118,"name":119,"nameZh":6,"description":120,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":121,"categories":122,"keywords":127,"publishedAt":54},"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",[123,126],{"categoryNo":124,"categoryName":125,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000011","运维与部署",{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[128,49,129,41,130,106,131,132,48,133,100,134,109,135,136,112,113,137,138,40],"exposure analysis","unknown","credentials","collection","ufw","ports","internet","local","scope","reconstruction","operator",{"skillNo":140,"name":94,"nameZh":6,"description":95,"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":54},"01M70P8QATMPKA78E4FT5D2TNA","https:\u002F\u002Fgithub.com\u002Fjmagly\u002Faiwg\u002Fblob\u002Fmain\u002Fagentic\u002Fcode\u002Fframeworks\u002Fsecurity-engineering\u002Fskills\u002Fhost-hardening\u002FSKILL.md",[143],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[102,100,101,108,41,116,104,37,111,105,106,107,48,115,109,110,103,112,113,114],{"skillNo":146,"name":119,"nameZh":6,"description":120,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":147,"categories":148,"keywords":151,"publishedAt":54},"01M70NMPVJ5H0JH131P60FW4R8","https:\u002F\u002Fgithub.com\u002Fjmagly\u002Faiwg\u002Fblob\u002Fmain\u002Fagentic\u002Fcode\u002Fframeworks\u002Fforensics-complete\u002Fskills\u002Fexposure-analysis\u002FSKILL.md",[149,150],{"categoryNo":124,"categoryName":125,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[49,128,112,130,106,131,48,129,100,134,109,135,136,41,113,133,132,137,138,40],{"skillNo":153,"name":154,"nameZh":6,"description":155,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":156,"categories":157,"keywords":159,"publishedAt":54},"01M6CB4DDR0B4NNCFK7ZK7449H","fixture-skill","Exercise rule delivery.","https:\u002F\u002Fgithub.com\u002Fjmagly\u002Faiwg\u002Fblob\u002Fmain\u002Ftest\u002Ffixtures\u002Frule-delivery\u002Fskills\u002Ffixture-skill\u002FSKILL.md",[158],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[160,161,162,163,164,165],"fixture skill","fixture","rule","delivery","true","exercise",{"skillNo":167,"name":168,"nameZh":6,"description":169,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":170,"categories":171,"keywords":173,"publishedAt":54},"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",[172],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[174,175,135,176,161],"pi","pi local","duplicate"]