[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6C2NK9HCKBF0CTMYK48DMGP":3,"skill-same:01M6C2NK9HCKBF0CTMYK48DMGP":80},{"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":43,"linkOnly":44,"markdownContent":45,"markdownBody":46,"frontMatter":47,"refName":56,"commitSha":57,"skillDirectory":58,"forksCount":59,"repositoryHtmlUrl":60,"repositoryHomepageUrl":61,"ownerHtmlUrl":62,"ownerBlogUrl":63,"ownerDescription":64,"updatedAt":65,"install":66,"resources":79},"01M6C2NK9HCKBF0CTMYK48DMGP","build-artifact-index",null,"Build or rebuild the SDLC artifact index for agent-navigable discovery","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\u002Fbuild-artifact-index\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],"index","artifact","build","build artifact index","for","documentation","efficiency","rebuild","guidance","sdlc","tracking","interactive","write","read","grep","haiku","text","Bash","discovery","2026-11-10 10:12:30",false,"---\nnamespace: aiwg\nname: build-artifact-index\nplatforms: [all]\ndescription: Build or rebuild the SDLC artifact index for agent-navigable discovery\ncommandHint:\n  argumentHint: '[--force] [--verbose] [--interactive] [--guidance \"text\"]'\n  allowedTools: 'Read, Write, Glob, Grep, Bash'\n  model: haiku\n  category: documentation-tracking\n  modelRole: efficiency\n  modelTier: economy\n---\n\n# Build Artifact Index\n\n## Task\n\nBuild or refresh the artifact index that powers `aiwg index query`, `aiwg index deps`, and `aiwg index stats`. This is the entry point for ensuring agents can discover and navigate project artifacts efficiently.\n\n## Behavior\n\n### Primary: Use `aiwg index build`\n\n```bash\n# Standard rebuild (incremental)\naiwg index build\n\n# Full rebuild (ignore cache)\naiwg index build --force\n\n# With progress output\naiwg index build --verbose\n\n# Build every configured graph\naiwg index build --all\n```\n\nReport what changed: new artifacts indexed, updated, unchanged, and removed counts.\n\nIf the operator explicitly asks for Fortemi Core cache refresh after a\nsuccessful build, run:\n\n```bash\naiwg index sync\naiwg index status --json\n```\n\nFortemi Core is the default artifact search backend after sync. Keep the\nlegacy local backend available behind `--backend local` during the phase-out\nwindow.\n\n### Archived Query Answers\n\nThe index includes files in `.aiwg\u002Fworking\u002Fanswers\u002F` automatically. These are answers persisted by the `archive-answer` skill and appear in query results and dependency graphs alongside permanent artifacts. Their `status: working` frontmatter field signals they are candidates for promotion to a permanent destination (e.g., `.aiwg\u002Farchitecture\u002F`, `.aiwg\u002Freports\u002F`). Use the index to find stale working answers that should be promoted or discarded.\n\n### Fallback: Manual Digest Generation\n\nIf `aiwg index build` is not available (CLI not installed), fall back to manual scanning:\n\n1. Walk `.aiwg\u002F` for all artifact files\n2. Extract titles and short summaries from frontmatter\u002Fheadings\n3. Write digest files to `.aiwg\u002Fworking\u002Fdigests\u002F`\n4. Generate or update `_index.yaml` with paths, summaries, and timestamps\n\n### Post-Build Verification\n\nAfter building, verify the index is healthy:\n\n```bash\naiwg index stats --json\naiwg index status --json\n```\n\nReport total artifacts indexed, coverage by phase, and any orphaned artifacts.\nWhen a Fortemi Core cache exists, also report whether it is built, stale, and\nhow many items it contains.\n\n## When to Run\n\n- After creating new SDLC artifacts\n- After modifying existing artifact references\n- At the start of a new SDLC phase\n- When `aiwg index query` returns stale results\n\n## References\n\n- @$AIWG_ROOT\u002Fagentic\u002Fcode\u002Fframeworks\u002Fsdlc-complete\u002Frules\u002Fartifact-discovery.md — Agent protocol rules\n- @$AIWG_ROOT\u002Fagentic\u002Fcode\u002Fframeworks\u002Fsdlc-complete\u002Fskills\u002Fartifact-lookup\u002FSKILL.md — Query skill\n- @$AIWG_ROOT\u002Fsrc\u002Fartifacts\u002Fcli.ts — CLI implementation\n","# Build Artifact Index\n\n## Task\n\nBuild or refresh the artifact index that powers `aiwg index query`, `aiwg index deps`, and `aiwg index stats`. This is the entry point for ensuring agents can discover and navigate project artifacts efficiently.\n\n## Behavior\n\n### Primary: Use `aiwg index build`\n\n```bash\n# Standard rebuild (incremental)\naiwg index build\n\n# Full rebuild (ignore cache)\naiwg index build --force\n\n# With progress output\naiwg index build --verbose\n\n# Build every configured graph\naiwg index build --all\n```\n\nReport what changed: new artifacts indexed, updated, unchanged, and removed counts.\n\nIf the operator explicitly asks for Fortemi Core cache refresh after a\nsuccessful build, run:\n\n```bash\naiwg index sync\naiwg index status --json\n```\n\nFortemi Core is the default artifact search backend after sync. Keep the\nlegacy local backend available behind `--backend local` during the phase-out\nwindow.\n\n### Archived Query Answers\n\nThe index includes files in `.aiwg\u002Fworking\u002Fanswers\u002F` automatically. These are answers persisted by the `archive-answer` skill and appear in query results and dependency graphs alongside permanent artifacts. Their `status: working` frontmatter field signals they are candidates for promotion to a permanent destination (e.g., `.aiwg\u002Farchitecture\u002F`, `.aiwg\u002Freports\u002F`). Use the index to find stale working answers that should be promoted or discarded.\n\n### Fallback: Manual Digest Generation\n\nIf `aiwg index build` is not available (CLI not installed), fall back to manual scanning:\n\n1. Walk `.aiwg\u002F` for all artifact files\n2. Extract titles and short summaries from frontmatter\u002Fheadings\n3. Write digest files to `.aiwg\u002Fworking\u002Fdigests\u002F`\n4. Generate or update `_index.yaml` with paths, summaries, and timestamps\n\n### Post-Build Verification\n\nAfter building, verify the index is healthy:\n\n```bash\naiwg index stats --json\naiwg index status --json\n```\n\nReport total artifacts indexed, coverage by phase, and any orphaned artifacts.\nWhen a Fortemi Core cache exists, also report whether it is built, stale, and\nhow many items it contains.\n\n## When to Run\n\n- After creating new SDLC artifacts\n- After modifying existing artifact references\n- At the start of a new SDLC phase\n- When `aiwg index query` returns stale results\n\n## References\n\n- @$AIWG_ROOT\u002Fagentic\u002Fcode\u002Fframeworks\u002Fsdlc-complete\u002Frules\u002Fartifact-discovery.md — Agent protocol rules\n- @$AIWG_ROOT\u002Fagentic\u002Fcode\u002Fframeworks\u002Fsdlc-complete\u002Fskills\u002Fartifact-lookup\u002FSKILL.md — Query skill\n- @$AIWG_ROOT\u002Fsrc\u002Fartifacts\u002Fcli.ts — CLI implementation\n",{"name":5,"namespace":48,"platforms":49,"commandHint":51,"description":7},"aiwg",[50],"all",{"model":39,"category":52,"modelRole":30,"modelTier":53,"allowedTools":54,"argumentHint":55},"documentation-tracking","economy","Read, Write, Glob, Grep, Bash","[--force] [--verbose] [--interactive] [--guidance \"text\"]","main","6754967c344ccb087a8de06972f55a41067b291b","agentic\u002Fcode\u002Fplugins\u002Fcodex-sdlc\u002Fskills\u002Fbuild-artifact-index",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-11 08:11:25",{"source":8,"skillName":5,"commands":67,"prompt":77,"zipAvailable":78},[68,71,74],{"tool":69,"command":70},"npx","npx skills add jmagly\u002Faiwg --skill build-artifact-index",{"tool":72,"command":73},"bunx","bunx skills add jmagly\u002Faiwg --skill build-artifact-index",{"tool":75,"command":76},"pnpm","pnpm dlx skills add jmagly\u002Faiwg --skill build-artifact-index","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fjmagly\u002Faiwg\u002Fblob\u002Fmain\u002Fagentic\u002Fcode\u002Fplugins\u002Fcodex-sdlc\u002Fskills\u002Fbuild-artifact-index\u002FSKILL.md",true,[],[81,107,130,136,143,157],{"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":88,"publishedAt":43},"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",[87],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[89,90,91,37,92,93,94,95,96,97,41,98,99,100,101,102,103,104,105,106],"host","host hardening","hardening","re","recommendations","remediation","plan","port","verification","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":43},"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,37,121,96,122,123,41,124,89,125,99,126,127,102,103,128,129,36],"exposure analysis","analysis","unknown","credentials","collection","ufw","ports","internet","local","scope","reconstruction","operator",{"skillNo":131,"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":132,"categories":133,"keywords":135,"publishedAt":43},"01M70P8QATMPKA78E4FT5D2TNA","https:\u002F\u002Fgithub.com\u002Fjmagly\u002Faiwg\u002Fblob\u002Fmain\u002Fagentic\u002Fcode\u002Fframeworks\u002Fsecurity-engineering\u002Fskills\u002Fhost-hardening\u002FSKILL.md",[134],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[91,89,90,98,37,106,94,93,101,95,96,97,41,105,99,100,92,102,103,104],{"skillNo":137,"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":138,"categories":139,"keywords":142,"publishedAt":43},"01M70NMPVJ5H0JH131P60FW4R8","https:\u002F\u002Fgithub.com\u002Fjmagly\u002Faiwg\u002Fblob\u002Fmain\u002Fagentic\u002Fcode\u002Fframeworks\u002Fforensics-complete\u002Fskills\u002Fexposure-analysis\u002FSKILL.md",[140,141],{"categoryNo":114,"categoryName":115,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[119,118,102,121,96,122,41,120,89,125,99,126,127,37,103,124,123,128,129,36],{"skillNo":144,"name":145,"nameZh":6,"description":146,"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":150,"publishedAt":43},"01M6CB4DDR0B4NNCFK7ZK7449H","fixture-skill","Exercise rule delivery.","https:\u002F\u002Fgithub.com\u002Fjmagly\u002Faiwg\u002Fblob\u002Fmain\u002Ftest\u002Ffixtures\u002Frule-delivery\u002Fskills\u002Ffixture-skill\u002FSKILL.md",[149],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[151,152,153,154,155,156],"fixture skill","fixture","rule","delivery","true","exercise",{"skillNo":158,"name":159,"nameZh":6,"description":160,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":161,"categories":162,"keywords":164,"publishedAt":43},"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",[163],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[165,166,126,167,152],"pi","pi local","duplicate"]