[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6CB2DX5MDA76JNTJJ1ARCQV":3,"skill-same:01M6CB2DX5MDA76JNTJJ1ARCQV":67},{"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":35,"linkOnly":36,"markdownContent":37,"markdownBody":38,"frontMatter":39,"refName":43,"commitSha":44,"skillDirectory":45,"forksCount":46,"repositoryHtmlUrl":47,"repositoryHomepageUrl":48,"ownerHtmlUrl":49,"ownerBlogUrl":50,"ownerDescription":51,"updatedAt":52,"install":53,"resources":66},"01M6CB2DX5MDA76JNTJJ1ARCQV","validate-metadata",null,"Validate AIWG extension definitions against the metadata schema and report errors with field names, line numbers, and remediation hints","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\u002Futils\u002Fskills\u002Fvalidate-metadata\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],"validate","metadata","validate metadata","report","metadata schema","remediation","schema","extension","line","with","errors","2026-11-10 10:12:30",false,"---\nnamespace: aiwg\nname: validate-metadata\nplatforms: [all]\ndescription: Validate AIWG extension definitions against the metadata schema and report errors with field names, line numbers, and remediation hints\n---\n\n# Validate Metadata\n\nYou validate all AIWG extension definitions (agents, skills, commands, behaviors) against the metadata schema. You report errors with field names, line numbers, and remediation hints — and return a clean pass\u002Ffail summary.\n\n## Triggers\n\nAlternate expressions and non-obvious activations (primary phrases are matched automatically from the skill description):\n\n- \"are my extensions valid?\" → run full metadata validation\n- \"check my agent definitions\" → validate agent metadata specifically\n- \"is this skill definition correct?\" → validate single extension file\n- \"prep for release\" → validate metadata as part of pre-release checks\n\n## Trigger Patterns Reference\n\n| Pattern | Example | Action |\n|---------|---------|--------|\n| Validate request | \"validate metadata\" | Run `aiwg validate-metadata` |\n| Check request | \"check metadata\" | Run `aiwg validate-metadata` |\n| Validate extensions | \"validate extensions\" | Run `aiwg validate-metadata` |\n| Quality check | \"metadata quality\" | Run `aiwg validate-metadata` |\n| Single file | \"validate this agent file\" | Run `aiwg validate-metadata \u003Cpath>` |\n| Directory-scoped | \"validate just security skills\" | Run `aiwg validate-metadata --recursive agentic\u002Fcode\u002Fframeworks\u002Fsecurity-engineering\u002Fskills` |\n| CI mode | \"validate metadata for CI\" | Run `aiwg validate-metadata --ci --format json --strict` |\n\n## Behavior\n\nWhen triggered:\n\n1. **Extract intent**:\n   - Is validation scoped to a specific extension type (agents, skills, commands, behaviors)?\n   - Is a specific file path mentioned?\n   - Is verbose output needed?\n\n2. **Run the appropriate command**:\n\n   ```bash\n   # Default: validate all extensions\n   aiwg validate-metadata\n\n   # Recursive validation of a directory\n   aiwg validate-metadata --recursive agentic\u002Fcode\u002Fframeworks\u002Fsecurity-engineering\u002Fskills\n\n   # Strict CI output\n   aiwg validate-metadata --ci --format json --strict\n\n   # Validate a single file\n   aiwg validate-metadata agentic\u002Fcode\u002Faddons\u002Faiwg-utils\u002Fskills\u002Fmy-skill\u002FSKILL.md\n   ```\n\n3. **Report the result** — list all errors with field, location, and fix hint; summarize pass\u002Ffail count.\n\n## What Gets Validated\n\n| Check | Description |\n|-------|-------------|\n| Required fields | `id`, `name`, `description`, `platforms` present |\n| ID format | Lowercase, hyphen-separated, no spaces |\n| Version format | CalVer (`YYYY.M.PATCH`) for versioned extensions |\n| Trigger phrases | At least one trigger phrase defined per skill |\n| Tool declarations | Tools listed in `allowedTools` are valid AIWG tools |\n| Platform list | All platforms are valid (`claude-code`, `hermes`, `openclaw`, etc.) |\n| Handler path | `handler` field points to an existing file (for commands) |\n| Duplicate IDs | No two extensions share the same ID |\n\n## Error Format\n\nErrors are reported in this format:\n\n```\nERROR  skills\u002Fmy-skill\u002FSKILL.md:12  missing required field: `id`\n       Fix: Add `id: my-skill` to the YAML frontmatter\n\nWARN   agents\u002Fmy-agent\u002FAGENT.md:3   version format invalid: `1.0.0`\n       Fix: Use CalVer format: `2026.4.0`\n\nPASS   commands\u002Fmy-command\u002FCOMMAND.md\n```\n\n## Examples\n\n### Example 1: Full validation before release\n\n**User**: \"Run metadata validation before I tag the release\"\n\n**Extraction**: Full validation, no scope restriction\n\n**Action**:\n```bash\naiwg validate-metadata\n```\n\n**Response**: \"Validated 47 extension definitions. 45 passed. 2 errors found:\n- `skills\u002Fsoul-blend\u002FSKILL.md` line 4: platforms list is empty — add at least one platform\n- `agents\u002Ftest-engineer\u002FAGENT.md` line 9: duplicate ID 'test-engineer' conflicts with `agents\u002Ftesting\u002Ftest-engineer\u002FAGENT.md`\"\n\n### Example 2: Scoped validation for skills only\n\n**User**: \"Check only the security-engineering skills metadata\"\n\n**Extraction**: Directory-scoped to security-engineering skills\n\n**Action**:\n```bash\naiwg validate-metadata --recursive agentic\u002Fcode\u002Fframeworks\u002Fsecurity-engineering\u002Fskills\n```\n\n**Response**: \"Validated 38 skill definitions. All passed.\"\n\n### Example 3: Single file validation\n\n**User**: \"Is this agent definition valid?\" (with path provided)\n\n**Extraction**: Single file path\n\n**Action**:\n```bash\naiwg validate-metadata agentic\u002Fcode\u002Faddons\u002Faiwg-utils\u002Fskills\u002Fnew-skill\u002FSKILL.md\n```\n\n**Response**: \"1 error: missing required field `id` in frontmatter (line 3). Add `id: new-skill` to fix.\"\n\n### Example 4: CI pipeline usage\n\n**Action**:\n```bash\naiwg validate-metadata --ci --format json --strict\n```\n\n**Output**:\n```json\n{\n  \"total\": 47,\n  \"passed\": 45,\n  \"failed\": 2,\n  \"errors\": [\n    { \"file\": \"skills\u002Fsoul-blend\u002FSKILL.md\", \"line\": 4, \"field\": \"platforms\", \"message\": \"platforms list is empty\" }\n  ]\n}\n```\n\n## References\n\n- @$AIWG_ROOT\u002Fsrc\u002Fcli\u002Fhandlers\u002Futilities.ts — Command handler\n- @$AIWG_ROOT\u002Fdocs\u002Fcli-reference.md — CLI reference\n- @$AIWG_ROOT\u002Fsrc\u002Fextensions\u002Ftypes.ts — Extension type definitions and schema\n","# Validate Metadata\n\nYou validate all AIWG extension definitions (agents, skills, commands, behaviors) against the metadata schema. You report errors with field names, line numbers, and remediation hints — and return a clean pass\u002Ffail summary.\n\n## Triggers\n\nAlternate expressions and non-obvious activations (primary phrases are matched automatically from the skill description):\n\n- \"are my extensions valid?\" → run full metadata validation\n- \"check my agent definitions\" → validate agent metadata specifically\n- \"is this skill definition correct?\" → validate single extension file\n- \"prep for release\" → validate metadata as part of pre-release checks\n\n## Trigger Patterns Reference\n\n| Pattern | Example | Action |\n|---------|---------|--------|\n| Validate request | \"validate metadata\" | Run `aiwg validate-metadata` |\n| Check request | \"check metadata\" | Run `aiwg validate-metadata` |\n| Validate extensions | \"validate extensions\" | Run `aiwg validate-metadata` |\n| Quality check | \"metadata quality\" | Run `aiwg validate-metadata` |\n| Single file | \"validate this agent file\" | Run `aiwg validate-metadata \u003Cpath>` |\n| Directory-scoped | \"validate just security skills\" | Run `aiwg validate-metadata --recursive agentic\u002Fcode\u002Fframeworks\u002Fsecurity-engineering\u002Fskills` |\n| CI mode | \"validate metadata for CI\" | Run `aiwg validate-metadata --ci --format json --strict` |\n\n## Behavior\n\nWhen triggered:\n\n1. **Extract intent**:\n   - Is validation scoped to a specific extension type (agents, skills, commands, behaviors)?\n   - Is a specific file path mentioned?\n   - Is verbose output needed?\n\n2. **Run the appropriate command**:\n\n   ```bash\n   # Default: validate all extensions\n   aiwg validate-metadata\n\n   # Recursive validation of a directory\n   aiwg validate-metadata --recursive agentic\u002Fcode\u002Fframeworks\u002Fsecurity-engineering\u002Fskills\n\n   # Strict CI output\n   aiwg validate-metadata --ci --format json --strict\n\n   # Validate a single file\n   aiwg validate-metadata agentic\u002Fcode\u002Faddons\u002Faiwg-utils\u002Fskills\u002Fmy-skill\u002FSKILL.md\n   ```\n\n3. **Report the result** — list all errors with field, location, and fix hint; summarize pass\u002Ffail count.\n\n## What Gets Validated\n\n| Check | Description |\n|-------|-------------|\n| Required fields | `id`, `name`, `description`, `platforms` present |\n| ID format | Lowercase, hyphen-separated, no spaces |\n| Version format | CalVer (`YYYY.M.PATCH`) for versioned extensions |\n| Trigger phrases | At least one trigger phrase defined per skill |\n| Tool declarations | Tools listed in `allowedTools` are valid AIWG tools |\n| Platform list | All platforms are valid (`claude-code`, `hermes`, `openclaw`, etc.) |\n| Handler path | `handler` field points to an existing file (for commands) |\n| Duplicate IDs | No two extensions share the same ID |\n\n## Error Format\n\nErrors are reported in this format:\n\n```\nERROR  skills\u002Fmy-skill\u002FSKILL.md:12  missing required field: `id`\n       Fix: Add `id: my-skill` to the YAML frontmatter\n\nWARN   agents\u002Fmy-agent\u002FAGENT.md:3   version format invalid: `1.0.0`\n       Fix: Use CalVer format: `2026.4.0`\n\nPASS   commands\u002Fmy-command\u002FCOMMAND.md\n```\n\n## Examples\n\n### Example 1: Full validation before release\n\n**User**: \"Run metadata validation before I tag the release\"\n\n**Extraction**: Full validation, no scope restriction\n\n**Action**:\n```bash\naiwg validate-metadata\n```\n\n**Response**: \"Validated 47 extension definitions. 45 passed. 2 errors found:\n- `skills\u002Fsoul-blend\u002FSKILL.md` line 4: platforms list is empty — add at least one platform\n- `agents\u002Ftest-engineer\u002FAGENT.md` line 9: duplicate ID 'test-engineer' conflicts with `agents\u002Ftesting\u002Ftest-engineer\u002FAGENT.md`\"\n\n### Example 2: Scoped validation for skills only\n\n**User**: \"Check only the security-engineering skills metadata\"\n\n**Extraction**: Directory-scoped to security-engineering skills\n\n**Action**:\n```bash\naiwg validate-metadata --recursive agentic\u002Fcode\u002Fframeworks\u002Fsecurity-engineering\u002Fskills\n```\n\n**Response**: \"Validated 38 skill definitions. All passed.\"\n\n### Example 3: Single file validation\n\n**User**: \"Is this agent definition valid?\" (with path provided)\n\n**Extraction**: Single file path\n\n**Action**:\n```bash\naiwg validate-metadata agentic\u002Fcode\u002Faddons\u002Faiwg-utils\u002Fskills\u002Fnew-skill\u002FSKILL.md\n```\n\n**Response**: \"1 error: missing required field `id` in frontmatter (line 3). Add `id: new-skill` to fix.\"\n\n### Example 4: CI pipeline usage\n\n**Action**:\n```bash\naiwg validate-metadata --ci --format json --strict\n```\n\n**Output**:\n```json\n{\n  \"total\": 47,\n  \"passed\": 45,\n  \"failed\": 2,\n  \"errors\": [\n    { \"file\": \"skills\u002Fsoul-blend\u002FSKILL.md\", \"line\": 4, \"field\": \"platforms\", \"message\": \"platforms list is empty\" }\n  ]\n}\n```\n\n## References\n\n- @$AIWG_ROOT\u002Fsrc\u002Fcli\u002Fhandlers\u002Futilities.ts — Command handler\n- @$AIWG_ROOT\u002Fdocs\u002Fcli-reference.md — CLI reference\n- @$AIWG_ROOT\u002Fsrc\u002Fextensions\u002Ftypes.ts — Extension type definitions and schema\n",{"name":5,"namespace":40,"platforms":41,"description":7},"aiwg",[42],"all","main","6754967c344ccb087a8de06972f55a41067b291b","agentic\u002Fcode\u002Fplugins\u002Futils\u002Fskills\u002Fvalidate-metadata",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 10:46:34",{"source":8,"skillName":5,"commands":54,"prompt":64,"zipAvailable":65},[55,58,61],{"tool":56,"command":57},"npx","npx skills add jmagly\u002Faiwg --skill validate-metadata",{"tool":59,"command":60},"bunx","bunx skills add jmagly\u002Faiwg --skill validate-metadata",{"tool":62,"command":63},"pnpm","pnpm dlx skills add jmagly\u002Faiwg --skill validate-metadata","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fjmagly\u002Faiwg\u002Fblob\u002Fmain\u002Fagentic\u002Fcode\u002Fplugins\u002Futils\u002Fskills\u002Fvalidate-metadata\u002FSKILL.md",true,[],[68,95,119,125,132,146],{"skillNo":69,"name":70,"nameZh":6,"description":71,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":72,"categories":73,"keywords":75,"publishedAt":35},"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",[74],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[76,77,78,79,80,81,29,82,83,84,85,86,87,88,89,90,91,92,93,94],"host","host hardening","hardening","read","re","recommendations","plan","port","verification","Bash","access","only","retention","audit","never","firewall","bind","secrets","request",{"skillNo":96,"name":97,"nameZh":6,"description":98,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":99,"categories":100,"keywords":105,"publishedAt":35},"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",[101,104],{"categoryNo":102,"categoryName":103,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000011","运维与部署",{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[106,107,108,79,109,83,110,111,85,112,76,113,87,114,115,90,91,116,117,118],"exposure analysis","analysis","unknown","credentials","collection","ufw","ports","internet","local","scope","reconstruction","operator","write",{"skillNo":120,"name":70,"nameZh":6,"description":71,"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":124,"publishedAt":35},"01M70P8QATMPKA78E4FT5D2TNA","https:\u002F\u002Fgithub.com\u002Fjmagly\u002Faiwg\u002Fblob\u002Fmain\u002Fagentic\u002Fcode\u002Fframeworks\u002Fsecurity-engineering\u002Fskills\u002Fhost-hardening\u002FSKILL.md",[123],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[78,76,77,86,79,94,29,81,89,82,83,84,85,93,87,88,80,90,91,92],{"skillNo":126,"name":97,"nameZh":6,"description":98,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":127,"categories":128,"keywords":131,"publishedAt":35},"01M70NMPVJ5H0JH131P60FW4R8","https:\u002F\u002Fgithub.com\u002Fjmagly\u002Faiwg\u002Fblob\u002Fmain\u002Fagentic\u002Fcode\u002Fframeworks\u002Fforensics-complete\u002Fskills\u002Fexposure-analysis\u002FSKILL.md",[129,130],{"categoryNo":102,"categoryName":103,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[107,106,90,109,83,110,85,108,76,113,87,114,115,79,91,112,111,116,117,118],{"skillNo":133,"name":134,"nameZh":6,"description":135,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":136,"categories":137,"keywords":139,"publishedAt":35},"01M6CB4DDR0B4NNCFK7ZK7449H","fixture-skill","Exercise rule delivery.","https:\u002F\u002Fgithub.com\u002Fjmagly\u002Faiwg\u002Fblob\u002Fmain\u002Ftest\u002Ffixtures\u002Frule-delivery\u002Fskills\u002Ffixture-skill\u002FSKILL.md",[138],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[140,141,142,143,144,145],"fixture skill","fixture","rule","delivery","true","exercise",{"skillNo":147,"name":148,"nameZh":6,"description":149,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":150,"categories":151,"keywords":153,"publishedAt":35},"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",[152],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[154,155,114,156,141],"pi","pi local","duplicate"]