[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6C1ASW1H39AMY5AX9S1C2D9":3,"skill-same:01M6C1ASW1H39AMY5AX9S1C2D9":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":37,"linkOnly":38,"markdownContent":39,"markdownBody":40,"frontMatter":41,"refName":50,"commitSha":51,"skillDirectory":52,"forksCount":53,"repositoryHtmlUrl":54,"repositoryHomepageUrl":55,"ownerHtmlUrl":56,"ownerBlogUrl":57,"ownerDescription":58,"updatedAt":59,"install":60,"resources":73},"01M6C1ASW1H39AMY5AX9S1C2D9","package-plugin",null,"Package a built-in or standalone project-local AIWG plugin wrapper for marketplace distribution","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\u002Faddons\u002Faiwg-utils\u002Fskills\u002Fpackage-plugin\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],"plugin","package","package plugin","repository","marketplace","publish","Wrapper","community","local","project","distribution","standalone","for","2026-11-10 10:12:30",false,"---\nnamespace: aiwg\nname: package-plugin\nplatforms: [all]\ndescription: Package a built-in or standalone project-local AIWG plugin wrapper for marketplace distribution\ntriggers:\n  - standalone plugin repository\n  - publish project-local plugin\n  - package project-local plugin\n  - community plugin repository\n---\n\n# Package Plugin\n\nYou validate and package either a built-in marketplace wrapper or a standalone\nproject-local wrapper. Standalone wrappers are auto-discovered under\n`.aiwg\u002Fplugins\u002F\u003Cname>\u002F` and emitted as deterministic provider archives.\n\n## Triggers\n\nAlternate expressions and non-obvious activations (primary phrases are matched automatically from the skill description):\n\n- \"bundle the voice plugin for release\" → package voice plugin\n- \"prepare the SDLC plugin for distribution\" → package sdlc plugin\n- \"create the plugin wrapper\" → package the generated provider wrapper\n- \"publish project-local plugin\" → validate and package the repository-local wrapper\n- \"standalone plugin repository\" → use the community\u002Fteam repository workflow\n\n## Trigger Patterns Reference\n\n| Pattern | Example | Action |\n|---------|---------|--------|\n| Package plugin | \"package plugin sdlc\" | Run `aiwg package-plugin sdlc` |\n| Bundle plugin | \"bundle plugin voice\" | Run `aiwg package-plugin voice` |\n| Create package | \"create plugin package utils\" | Run `aiwg package-plugin utils` |\n| Dry run | \"validate sdlc plugin before packaging\" | Run `aiwg package-plugin sdlc --dry-run` |\n| Standalone wrapper | \"package project-local plugin team-tools\" | Run `aiwg package-plugin team-tools --dry-run` |\n| Explicit source | \"package wrapper from wrappers\u002Fteam-tools\" | Run `aiwg package-plugin team-tools --source wrappers\u002Fteam-tools` |\n\n## Behavior\n\nWhen triggered:\n\n1. **Extract intent**:\n   - Which delivery wrapper is being packaged?\n   - Which provider wrapper is needed?\n   - Should existing generated output be cleaned first?\n   - Is this a validation dry run?\n\n2. **Run the appropriate command**:\n\n   ```bash\n   # Package a marketplace wrapper (creates archive, no publish)\n   aiwg package-plugin sdlc\n   aiwg package-plugin voice\n   aiwg package-plugin marketing\n\n   # Validate only — no archive created\n   aiwg package-plugin sdlc --dry-run\n\n   # Build one provider-specific wrapper\n   aiwg package-plugin sdlc --provider codex\n\n   # Clean generated output before rebuilding\n   aiwg package-plugin sdlc --clean\n\n   # Standalone\u002Fproject-local wrapper (auto-discovered)\n   aiwg package-plugin team-tools --provider all --output dist\u002Fplugins\n\n   # Explicit in-repository source\n   aiwg package-plugin team-tools --source wrappers\u002Fteam-tools --provider codex\n   ```\n\n3. **Report the result** — confirm generated wrapper path and included file counts.\n\n## What the Package Contains\n\nA generated plugin wrapper includes provider metadata plus the selected payload files:\n\n| Contents | Path in Archive |\n|----------|----------------|\n| Agent definitions | `agents\u002F` |\n| Command definitions | `commands\u002F` |\n| Skill definitions | `skills\u002F` |\n| Rule definitions | `rules\u002F` |\n| Delivery manifest | `plugin.json` |\n| Changelog | `CHANGELOG.md` (if present) |\n\nFiles excluded from packages: `.aiwg\u002Fworking\u002F`, test fixtures, development-only configs.\n\n## Pre-Package Validation\n\nBefore creating the archive, the command automatically runs:\n\n1. `aiwg validate-metadata` — all extension definitions must pass\n2. Version format check — must be valid CalVer\n3. Delivery manifest completeness — `id`, `name`, `description`, `version` required\n\nPackaging fails if any validation step fails.\n\n## Examples\n\n### Example 1: Package for release\n\n**User**: \"Package the voice plugin for release\"\n\n**Extraction**: Package voice plugin, no publish\n\n**Action**:\n```bash\naiwg package-plugin voice\n```\n\n**Response**: \"Generated the voice marketplace wrapper under `agentic\u002Fcode\u002Fplugins\u002Fvoice`.\"\n\n### Example 2: Validate before packaging\n\n**User**: \"Check if the SDLC plugin is ready to package\"\n\n**Extraction**: Dry-run validation\n\n**Action**:\n```bash\naiwg package-plugin sdlc --dry-run\n```\n\n**Response**: \"Dry run: sdlc plugin metadata passed (58 agents, 42 commands, 12 skills, 33 rules validated). Ready to package. 1 warning: CHANGELOG.md not found — package will be created without it.\"\n\n### Example 3: Package for Codex\n\n**User**: \"Build the marketing plugin for Codex\"\n\n**Extraction**: Package marketing for the Codex provider\n\n**Action**:\n```bash\naiwg package-plugin marketing --provider codex\n```\n\n**Response**: \"Generated the Codex marketing wrapper under `agentic\u002Fcode\u002Fplugins\u002Fmarketing`.\"\n\n### Example 4: Clean rebuild\n\n**User**: \"Clean and rebuild the utils plugin\"\n\n**Extraction**: Remove prior generated output, then package\n\n**Action**:\n```bash\naiwg package-plugin utils --clean\n```\n\n**Response**: \"Cleaned and regenerated the utils wrapper.\"\n\n## Standalone repository contract\n\nThe wrapper must contain `manifest.json` with `type: plugin` and a\n`pluginConfig` declaring `payloadType` and traversal-safe `payloadPath`. The\npayload requires its own matching manifest. Sources must remain inside the\ncurrent repository; symlink escapes and output collisions are rejected.\nPayload files are copied byte-for-byte into deterministic Claude and\u002For Codex\narchives.\n\nSee `docs\u002Fcustomization\u002Fstandalone-plugin-repository.md` for the complete\nscaffold, validation, install-smoke, versioning, licensing, and publication\nworkflow.\n\n## Unsupported legacy examples\n\n`--publish` and `--bump` remain intentionally unsupported. Publish generated\narchives through the repository's release workflow and change versions in the\nauthoritative wrapper\u002Fpayload manifests before packaging.\n\n## References\n\n- @$AIWG_ROOT\u002Fsrc\u002Fcli\u002Fhandlers\u002Fsubcommands.ts — Command handler\n- @$AIWG_ROOT\u002Fdocs\u002Fcli-reference.md — CLI reference\n- @$AIWG_ROOT\u002Fdocs\u002Fcontributing\u002Fversioning.md — CalVer versioning rules\n","# Package Plugin\n\nYou validate and package either a built-in marketplace wrapper or a standalone\nproject-local wrapper. Standalone wrappers are auto-discovered under\n`.aiwg\u002Fplugins\u002F\u003Cname>\u002F` and emitted as deterministic provider archives.\n\n## Triggers\n\nAlternate expressions and non-obvious activations (primary phrases are matched automatically from the skill description):\n\n- \"bundle the voice plugin for release\" → package voice plugin\n- \"prepare the SDLC plugin for distribution\" → package sdlc plugin\n- \"create the plugin wrapper\" → package the generated provider wrapper\n- \"publish project-local plugin\" → validate and package the repository-local wrapper\n- \"standalone plugin repository\" → use the community\u002Fteam repository workflow\n\n## Trigger Patterns Reference\n\n| Pattern | Example | Action |\n|---------|---------|--------|\n| Package plugin | \"package plugin sdlc\" | Run `aiwg package-plugin sdlc` |\n| Bundle plugin | \"bundle plugin voice\" | Run `aiwg package-plugin voice` |\n| Create package | \"create plugin package utils\" | Run `aiwg package-plugin utils` |\n| Dry run | \"validate sdlc plugin before packaging\" | Run `aiwg package-plugin sdlc --dry-run` |\n| Standalone wrapper | \"package project-local plugin team-tools\" | Run `aiwg package-plugin team-tools --dry-run` |\n| Explicit source | \"package wrapper from wrappers\u002Fteam-tools\" | Run `aiwg package-plugin team-tools --source wrappers\u002Fteam-tools` |\n\n## Behavior\n\nWhen triggered:\n\n1. **Extract intent**:\n   - Which delivery wrapper is being packaged?\n   - Which provider wrapper is needed?\n   - Should existing generated output be cleaned first?\n   - Is this a validation dry run?\n\n2. **Run the appropriate command**:\n\n   ```bash\n   # Package a marketplace wrapper (creates archive, no publish)\n   aiwg package-plugin sdlc\n   aiwg package-plugin voice\n   aiwg package-plugin marketing\n\n   # Validate only — no archive created\n   aiwg package-plugin sdlc --dry-run\n\n   # Build one provider-specific wrapper\n   aiwg package-plugin sdlc --provider codex\n\n   # Clean generated output before rebuilding\n   aiwg package-plugin sdlc --clean\n\n   # Standalone\u002Fproject-local wrapper (auto-discovered)\n   aiwg package-plugin team-tools --provider all --output dist\u002Fplugins\n\n   # Explicit in-repository source\n   aiwg package-plugin team-tools --source wrappers\u002Fteam-tools --provider codex\n   ```\n\n3. **Report the result** — confirm generated wrapper path and included file counts.\n\n## What the Package Contains\n\nA generated plugin wrapper includes provider metadata plus the selected payload files:\n\n| Contents | Path in Archive |\n|----------|----------------|\n| Agent definitions | `agents\u002F` |\n| Command definitions | `commands\u002F` |\n| Skill definitions | `skills\u002F` |\n| Rule definitions | `rules\u002F` |\n| Delivery manifest | `plugin.json` |\n| Changelog | `CHANGELOG.md` (if present) |\n\nFiles excluded from packages: `.aiwg\u002Fworking\u002F`, test fixtures, development-only configs.\n\n## Pre-Package Validation\n\nBefore creating the archive, the command automatically runs:\n\n1. `aiwg validate-metadata` — all extension definitions must pass\n2. Version format check — must be valid CalVer\n3. Delivery manifest completeness — `id`, `name`, `description`, `version` required\n\nPackaging fails if any validation step fails.\n\n## Examples\n\n### Example 1: Package for release\n\n**User**: \"Package the voice plugin for release\"\n\n**Extraction**: Package voice plugin, no publish\n\n**Action**:\n```bash\naiwg package-plugin voice\n```\n\n**Response**: \"Generated the voice marketplace wrapper under `agentic\u002Fcode\u002Fplugins\u002Fvoice`.\"\n\n### Example 2: Validate before packaging\n\n**User**: \"Check if the SDLC plugin is ready to package\"\n\n**Extraction**: Dry-run validation\n\n**Action**:\n```bash\naiwg package-plugin sdlc --dry-run\n```\n\n**Response**: \"Dry run: sdlc plugin metadata passed (58 agents, 42 commands, 12 skills, 33 rules validated). Ready to package. 1 warning: CHANGELOG.md not found — package will be created without it.\"\n\n### Example 3: Package for Codex\n\n**User**: \"Build the marketing plugin for Codex\"\n\n**Extraction**: Package marketing for the Codex provider\n\n**Action**:\n```bash\naiwg package-plugin marketing --provider codex\n```\n\n**Response**: \"Generated the Codex marketing wrapper under `agentic\u002Fcode\u002Fplugins\u002Fmarketing`.\"\n\n### Example 4: Clean rebuild\n\n**User**: \"Clean and rebuild the utils plugin\"\n\n**Extraction**: Remove prior generated output, then package\n\n**Action**:\n```bash\naiwg package-plugin utils --clean\n```\n\n**Response**: \"Cleaned and regenerated the utils wrapper.\"\n\n## Standalone repository contract\n\nThe wrapper must contain `manifest.json` with `type: plugin` and a\n`pluginConfig` declaring `payloadType` and traversal-safe `payloadPath`. The\npayload requires its own matching manifest. Sources must remain inside the\ncurrent repository; symlink escapes and output collisions are rejected.\nPayload files are copied byte-for-byte into deterministic Claude and\u002For Codex\narchives.\n\nSee `docs\u002Fcustomization\u002Fstandalone-plugin-repository.md` for the complete\nscaffold, validation, install-smoke, versioning, licensing, and publication\nworkflow.\n\n## Unsupported legacy examples\n\n`--publish` and `--bump` remain intentionally unsupported. Publish generated\narchives through the repository's release workflow and change versions in the\nauthoritative wrapper\u002Fpayload manifests before packaging.\n\n## References\n\n- @$AIWG_ROOT\u002Fsrc\u002Fcli\u002Fhandlers\u002Fsubcommands.ts — Command handler\n- @$AIWG_ROOT\u002Fdocs\u002Fcli-reference.md — CLI reference\n- @$AIWG_ROOT\u002Fdocs\u002Fcontributing\u002Fversioning.md — CalVer versioning rules\n",{"name":5,"triggers":42,"namespace":47,"platforms":48,"description":7},[43,44,45,46],"standalone plugin repository","publish project-local plugin","package project-local plugin","community plugin repository","aiwg",[49],"all","main","6754967c344ccb087a8de06972f55a41067b291b","agentic\u002Fcode\u002Faddons\u002Faiwg-utils\u002Fskills\u002Fpackage-plugin",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":61,"prompt":71,"zipAvailable":72},[62,65,68],{"tool":63,"command":64},"npx","npx skills add jmagly\u002Faiwg --skill package-plugin",{"tool":66,"command":67},"bunx","bunx skills add jmagly\u002Faiwg --skill package-plugin",{"tool":69,"command":70},"pnpm","pnpm dlx skills add jmagly\u002Faiwg --skill package-plugin","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fjmagly\u002Faiwg\u002Fblob\u002Fmain\u002Fagentic\u002Fcode\u002Faddons\u002Faiwg-utils\u002Fskills\u002Fpackage-plugin\u002FSKILL.md",true,[],[75,103,126,132,139,153],{"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":37},"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,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102],"host","host hardening","hardening","read","re","recommendations","remediation","plan","port","verification","Bash","access","only","retention","audit","never","firewall","bind","secrets","request",{"skillNo":104,"name":105,"nameZh":6,"description":106,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":107,"categories":108,"keywords":113,"publishedAt":37},"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",[109,112],{"categoryNo":110,"categoryName":111,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000011","运维与部署",{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[114,115,116,86,117,91,118,119,93,120,83,121,95,32,122,98,99,123,124,125],"exposure analysis","analysis","unknown","credentials","collection","ufw","ports","internet","scope","reconstruction","operator","write",{"skillNo":127,"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":128,"categories":129,"keywords":131,"publishedAt":37},"01M70P8QATMPKA78E4FT5D2TNA","https:\u002F\u002Fgithub.com\u002Fjmagly\u002Faiwg\u002Fblob\u002Fmain\u002Fagentic\u002Fcode\u002Fframeworks\u002Fsecurity-engineering\u002Fskills\u002Fhost-hardening\u002FSKILL.md",[130],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[85,83,84,94,86,102,89,88,97,90,91,92,93,101,95,96,87,98,99,100],{"skillNo":133,"name":105,"nameZh":6,"description":106,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":134,"categories":135,"keywords":138,"publishedAt":37},"01M70NMPVJ5H0JH131P60FW4R8","https:\u002F\u002Fgithub.com\u002Fjmagly\u002Faiwg\u002Fblob\u002Fmain\u002Fagentic\u002Fcode\u002Fframeworks\u002Fforensics-complete\u002Fskills\u002Fexposure-analysis\u002FSKILL.md",[136,137],{"categoryNo":110,"categoryName":111,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[115,114,98,117,91,118,93,116,83,121,95,32,122,86,99,120,119,123,124,125],{"skillNo":140,"name":141,"nameZh":6,"description":142,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":143,"categories":144,"keywords":146,"publishedAt":37},"01M6CB4DDR0B4NNCFK7ZK7449H","fixture-skill","Exercise rule delivery.","https:\u002F\u002Fgithub.com\u002Fjmagly\u002Faiwg\u002Fblob\u002Fmain\u002Ftest\u002Ffixtures\u002Frule-delivery\u002Fskills\u002Ffixture-skill\u002FSKILL.md",[145],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[147,148,149,150,151,152],"fixture skill","fixture","rule","delivery","true","exercise",{"skillNo":154,"name":155,"nameZh":6,"description":156,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":157,"categories":158,"keywords":160,"publishedAt":37},"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",[159],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[161,162,32,163,148],"pi","pi local","duplicate"]