[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6C2BYQP83JD2HMVWA8HSR94":3,"skill-same:01M6C2BYQP83JD2HMVWA8HSR94":97},{"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":52,"linkOnly":53,"markdownContent":54,"markdownBody":55,"frontMatter":56,"refName":73,"commitSha":74,"skillDirectory":75,"forksCount":76,"repositoryHtmlUrl":77,"repositoryHomepageUrl":78,"ownerHtmlUrl":79,"ownerBlogUrl":80,"ownerDescription":81,"updatedAt":82,"install":83,"resources":96},"01M6C2BYQP83JD2HMVWA8HSR94","release-publication-verify",null,"Post-tag release publication verifier — given a tag, verify the published release surfaces (Gitea\u002FGitHub release assets, SHA256SUMS and native package checksums, GHCR container images, installer dry-run from the real release URL) and emit issue-comment-ready evidence, distinguishing missing proof from failed proof, before closing release-completion issues","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\u002Fframeworks\u002Fsdlc-complete\u002Fskills\u002Frelease-publication-verify\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,43,44,45,46,47,48,49,50,51],"Publication","release","verify","release publication verify","write","for","mirror","closing","URL","close","dry","issue","ready","evidence","issue close","edit","MCP","read","haiku","Bash","github release","issues","git","run","packages","config","orchestration","verify release","2026-11-10 10:12:30",false,"---\nnamespace: aiwg\nname: release-publication-verify\nplatforms: [all]\ndescription: Post-tag release publication verifier — given a tag, verify the published release surfaces (Gitea\u002FGitHub release assets, SHA256SUMS and native package checksums, GHCR container images, installer dry-run from the real release URL) and emit issue-comment-ready evidence, distinguishing missing proof from failed proof, before closing release-completion issues\ntriggers:\n  - \"verify the release publication\"\n  - \"post-tag release asset verifier\"\n  - \"check GHCR images and release assets for a tag\"\n  - \"prove the release published before closing issues\"\n  - \"release publication proof for issue close\"\n  - \"verify release assets checksums installer GHCR packages\"\ncommandHint:\n  argumentHint: '\u003Ctag> [--repo \u003Cowner\u002Fname>] [--mirror \u003Cowner\u002Fname>] [--config \u003Cpath>] [--json]'\n  allowedTools: 'Read, Write, Edit, Bash, Glob, Grep, mcp__git-gitea__*'\n  model: haiku\n  category: sdlc-orchestration\n  orchestration: false\n  modelRole: efficiency\n  modelTier: economy\n---\n\n# Release Publication Verifier (post-tag)\n\nYou verify that a release **actually published** — turning a tag into concrete,\nauditable proof across every release surface — so release-completion issues are\nclosed with evidence, not assumption. This runs **after** `flow-release` cuts and\npushes the tag (the `release` gate) and **before** the `post-release` close-outs.\n\nThis is native release-engineering verification (Rust crates, `.deb`\u002F`.rpm`,\ncontainer images, GHCR, release-asset checksums, installer URLs) — not plugin\npackaging. For plugin archives use `package-all-plugins`; for the release\nsequence itself use `flow-release`.\n\n## When to use\n\n- After a tag is pushed and the release workflows (`gitea-release.yml`,\n  `npm-publish.yml`, `github-mirror.yml`, container build) have run.\n- Before closing release-completion issues — paste the emitted evidence summary\n  into the close comment.\n- As the verification step `flow-release` points to after its `release` gate.\n\n## Inputs\n\n- **tag** (required) — e.g. `v2026.6.2`. The verification context.\n- **--repo `\u003Cowner\u002Fname>`** — primary tracker repo (default: `remotes.issue_tracker`\n  resolved from `.aiwg\u002Faiwg.config`).\n- **--mirror `\u003Cowner\u002Fname>`** — public mirror (default: `remotes.secondary[]` with\n  `purpose: public-mirror`, or `project.mirror_url` from `.aiwg\u002Frelease.config`).\n- **--config `\u003Cpath>`** — release config (default `.aiwg\u002Frelease.config`).\n- **--json** — emit the evidence as JSON instead of the markdown summary.\n\n## Repo-local configuration\n\nRead the optional `publication_verify` block from `.aiwg\u002Frelease.config`. It\ndeclares what \"published\" means for THIS project — required asset globs, the\nchecksum manifest, the GHCR image matrix, the installer URL, and platform smoke\njobs. When the block is absent, run the universal checks (release exists +\nassets present + checksums) and record everything else as **MISSING (not\nconfigured)** rather than failing.\n\n```yaml\n# .aiwg\u002Frelease.config  (optional block)\npublication_verify:\n  release_assets:                      # globs that MUST be attached to the release\n    - \"aiwg-{version}.tgz\"\n    - \"*.deb\"\n    - \"*.rpm\"\n    - \"install.sh\"\n  checksums:\n    manifest: \"SHA256SUMS\"             # manifest asset name\n    must_cover: [\"*.tgz\", \"*.deb\", \"*.rpm\", \"install.sh\"]  # globs the manifest must list\n  ghcr_images:                         # container images that MUST exist + run\n    - image: \"ghcr.io\u002F{owner}\u002Faiwg\"\n      tags: [\"{version}\", \"latest\"]\n      smoke: \"--version\"               # documented command that must succeed\n    - image: \"ghcr.io\u002F{owner}\u002Faiwg-agent-client\"\n      tags: [\"{version}\"]\n      smoke: \"--version\"\n  installer:\n    url: \"https:\u002F\u002Fgithub.com\u002F{mirror}\u002Freleases\u002Fdownload\u002F{tag}\u002Finstall.sh\"\n    dry_run: \"sh install.sh --dry-run\"  # must succeed against the real release URL\n  platform_jobs:                       # platform-specific evidence (e.g. host-direct smoke)\n    - name: \"mutsu-apple-silicon-smoke\"\n      evidence: \"ci-run or log path proving the platform job ran green\"\n```\n\n`{version}` is the tag without the `v`; `{tag}` is the full tag; `{owner}` \u002F\n`{mirror}` come from the resolved repos.\n\n## Verification surfaces\n\nRun each surface that applies. Use `mcp__git-gitea__*` for Gitea, `gh` for\nGitHub, `curl`\u002F`oras`\u002F`docker`\u002F`skopeo` for GHCR, `sha256sum -c` for checksums.\nNever print tokens — load from env\u002Ffile per the `token-security` rule.\n\n1. **Gitea release exists + assets** — the release for `tag` exists and every\n   `release_assets` glob matches at least one attached asset.\n2. **GitHub mirror release + assets** — same against the mirror (skip with a\n   recorded MISSING if no mirror is configured, or if the tag is a pre-release\n   that intentionally skips the mirror per `flow-release` policy).\n3. **SHA256SUMS present + covers** — the `checksums.manifest` asset exists and\n   lists an entry for every `must_cover` glob. Download the manifest and the\n   covered assets; `sha256sum -c` must pass for each downloaded file.\n4. **Native package checksums** — for each `.deb`\u002F`.rpm`\u002Finstaller asset, verify\n   its recorded checksum matches the downloaded file (FAILED on mismatch).\n5. **GHCR images exist + smoke** — for each `ghcr_images` entry and tag, confirm\n   the image manifest exists (`docker manifest inspect` \u002F `skopeo inspect` \u002F\n   `oras manifest fetch`), then run the documented `smoke` command and assert\n   exit 0.\n6. **Installer dry-run from the real URL** — fetch `installer.url` for the tag\n   and run `installer.dry_run`; assert exit 0. This proves the published\n   installer is reachable and parses, not just that a file exists.\n7. **Platform jobs** — for each `platform_jobs` entry, confirm the referenced CI\n   run \u002F log evidence shows the platform-specific job ran green (e.g. mutsu\n   Apple-Silicon host-direct smoke).\n\n## Missing vs failed (record them distinctly)\n\nEvery check resolves to exactly one verdict:\n\n| Verdict | Meaning | Example |\n|---------|---------|---------|\n| **PASS** | Proof found and correct | `aiwg-2026.6.2.tgz` attached; checksum matches |\n| **FAIL** | Proof found but wrong | SHA256SUMS lists the tarball but the hash mismatches |\n| **MISSING** | Proof not found | No `.deb` asset attached; or GHCR image tag absent |\n| **N\u002FA (not configured)** | The project didn't declare this surface | No `ghcr_images` block → skip, don't fail |\n\n`FAIL` and `MISSING` are different problems: `FAIL` means the release is corrupt\nand must be re-cut; `MISSING` means a surface didn't publish (workflow didn't run,\nasset not uploaded) — investigate the pipeline. Never collapse the two into a\nsingle \"not green\" bucket; the close comment must show which is which.\n\n## Output schema\n\nDefault output is an **issue-comment-ready** markdown block. With `--json`, emit\nthe same data as `{ tag, repo, mirror, checks: [{ surface, target, verdict,\ndetail }], summary: { pass, fail, missing, na }, publishable: \u003Cbool> }`.\n`publishable` is true only when there are zero `FAIL` and zero unexpected\n`MISSING` (configured-but-absent) checks.\n\nMarkdown template to paste into the release-completion issue:\n\n```markdown\n## Release publication verification — {tag}\n\n| Surface | Target | Verdict | Detail |\n|---------|--------|---------|--------|\n| Gitea release | {repo} | PASS | release present, 4\u002F4 asset globs matched |\n| GitHub mirror | {mirror} | PASS | release present, 4\u002F4 asset globs matched |\n| SHA256SUMS | SHA256SUMS | PASS | covers tgz\u002Fdeb\u002Frpm\u002Finstall.sh; `sha256sum -c` OK |\n| Native pkg checksums | *.deb, *.rpm | PASS | hashes match |\n| GHCR images | aiwg:{version},latest | PASS | manifests exist; `--version` exits 0 |\n| Installer dry-run | install.sh@{tag} | PASS | `--dry-run` exits 0 from release URL |\n| Platform job | mutsu-apple-silicon-smoke | MISSING | no CI evidence found — investigate |\n\n**Summary:** 6 PASS · 0 FAIL · 1 MISSING · 0 N\u002FA → **not fully published**\n(missing: mutsu Apple-Silicon smoke evidence).\n```\n\n## Acceptance criteria\n\n- [ ] Accepts a `tag` and repo target (and optional mirror\u002Fconfig).\n- [ ] Verifies Gitea + GitHub release assets, the checksum manifest, native\n      package checksums, GHCR image existence + smoke, and installer dry-run\n      when configured.\n- [ ] Records **MISSING** distinctly from **FAIL** (and **N\u002FA** for\n      not-configured surfaces).\n- [ ] Emits a concise issue-comment-ready evidence summary (and `--json`).\n- [ ] Discoverable via `aiwg discover \"post tag release asset verifier GHCR packages installer\"`.\n\n## Related\n\n- `flow-release` — the release sequence; points here after its `release` gate,\n  before `post-release` close-outs.\n- Schema: `agentic\u002Fcode\u002Fframeworks\u002Fsdlc-complete\u002Fschemas\u002Fflows\u002Frelease-config.yaml`\n  (`publication_verify` block).\n- Rules: `token-security`, `ci-green-before-done`, `delivery-policy`,\n  `citation-policy` (evidence must be real, never fabricated).\n- Config: `.aiwg\u002Frelease.config` per project.\n","# Release Publication Verifier (post-tag)\n\nYou verify that a release **actually published** — turning a tag into concrete,\nauditable proof across every release surface — so release-completion issues are\nclosed with evidence, not assumption. This runs **after** `flow-release` cuts and\npushes the tag (the `release` gate) and **before** the `post-release` close-outs.\n\nThis is native release-engineering verification (Rust crates, `.deb`\u002F`.rpm`,\ncontainer images, GHCR, release-asset checksums, installer URLs) — not plugin\npackaging. For plugin archives use `package-all-plugins`; for the release\nsequence itself use `flow-release`.\n\n## When to use\n\n- After a tag is pushed and the release workflows (`gitea-release.yml`,\n  `npm-publish.yml`, `github-mirror.yml`, container build) have run.\n- Before closing release-completion issues — paste the emitted evidence summary\n  into the close comment.\n- As the verification step `flow-release` points to after its `release` gate.\n\n## Inputs\n\n- **tag** (required) — e.g. `v2026.6.2`. The verification context.\n- **--repo `\u003Cowner\u002Fname>`** — primary tracker repo (default: `remotes.issue_tracker`\n  resolved from `.aiwg\u002Faiwg.config`).\n- **--mirror `\u003Cowner\u002Fname>`** — public mirror (default: `remotes.secondary[]` with\n  `purpose: public-mirror`, or `project.mirror_url` from `.aiwg\u002Frelease.config`).\n- **--config `\u003Cpath>`** — release config (default `.aiwg\u002Frelease.config`).\n- **--json** — emit the evidence as JSON instead of the markdown summary.\n\n## Repo-local configuration\n\nRead the optional `publication_verify` block from `.aiwg\u002Frelease.config`. It\ndeclares what \"published\" means for THIS project — required asset globs, the\nchecksum manifest, the GHCR image matrix, the installer URL, and platform smoke\njobs. When the block is absent, run the universal checks (release exists +\nassets present + checksums) and record everything else as **MISSING (not\nconfigured)** rather than failing.\n\n```yaml\n# .aiwg\u002Frelease.config  (optional block)\npublication_verify:\n  release_assets:                      # globs that MUST be attached to the release\n    - \"aiwg-{version}.tgz\"\n    - \"*.deb\"\n    - \"*.rpm\"\n    - \"install.sh\"\n  checksums:\n    manifest: \"SHA256SUMS\"             # manifest asset name\n    must_cover: [\"*.tgz\", \"*.deb\", \"*.rpm\", \"install.sh\"]  # globs the manifest must list\n  ghcr_images:                         # container images that MUST exist + run\n    - image: \"ghcr.io\u002F{owner}\u002Faiwg\"\n      tags: [\"{version}\", \"latest\"]\n      smoke: \"--version\"               # documented command that must succeed\n    - image: \"ghcr.io\u002F{owner}\u002Faiwg-agent-client\"\n      tags: [\"{version}\"]\n      smoke: \"--version\"\n  installer:\n    url: \"https:\u002F\u002Fgithub.com\u002F{mirror}\u002Freleases\u002Fdownload\u002F{tag}\u002Finstall.sh\"\n    dry_run: \"sh install.sh --dry-run\"  # must succeed against the real release URL\n  platform_jobs:                       # platform-specific evidence (e.g. host-direct smoke)\n    - name: \"mutsu-apple-silicon-smoke\"\n      evidence: \"ci-run or log path proving the platform job ran green\"\n```\n\n`{version}` is the tag without the `v`; `{tag}` is the full tag; `{owner}` \u002F\n`{mirror}` come from the resolved repos.\n\n## Verification surfaces\n\nRun each surface that applies. Use `mcp__git-gitea__*` for Gitea, `gh` for\nGitHub, `curl`\u002F`oras`\u002F`docker`\u002F`skopeo` for GHCR, `sha256sum -c` for checksums.\nNever print tokens — load from env\u002Ffile per the `token-security` rule.\n\n1. **Gitea release exists + assets** — the release for `tag` exists and every\n   `release_assets` glob matches at least one attached asset.\n2. **GitHub mirror release + assets** — same against the mirror (skip with a\n   recorded MISSING if no mirror is configured, or if the tag is a pre-release\n   that intentionally skips the mirror per `flow-release` policy).\n3. **SHA256SUMS present + covers** — the `checksums.manifest` asset exists and\n   lists an entry for every `must_cover` glob. Download the manifest and the\n   covered assets; `sha256sum -c` must pass for each downloaded file.\n4. **Native package checksums** — for each `.deb`\u002F`.rpm`\u002Finstaller asset, verify\n   its recorded checksum matches the downloaded file (FAILED on mismatch).\n5. **GHCR images exist + smoke** — for each `ghcr_images` entry and tag, confirm\n   the image manifest exists (`docker manifest inspect` \u002F `skopeo inspect` \u002F\n   `oras manifest fetch`), then run the documented `smoke` command and assert\n   exit 0.\n6. **Installer dry-run from the real URL** — fetch `installer.url` for the tag\n   and run `installer.dry_run`; assert exit 0. This proves the published\n   installer is reachable and parses, not just that a file exists.\n7. **Platform jobs** — for each `platform_jobs` entry, confirm the referenced CI\n   run \u002F log evidence shows the platform-specific job ran green (e.g. mutsu\n   Apple-Silicon host-direct smoke).\n\n## Missing vs failed (record them distinctly)\n\nEvery check resolves to exactly one verdict:\n\n| Verdict | Meaning | Example |\n|---------|---------|---------|\n| **PASS** | Proof found and correct | `aiwg-2026.6.2.tgz` attached; checksum matches |\n| **FAIL** | Proof found but wrong | SHA256SUMS lists the tarball but the hash mismatches |\n| **MISSING** | Proof not found | No `.deb` asset attached; or GHCR image tag absent |\n| **N\u002FA (not configured)** | The project didn't declare this surface | No `ghcr_images` block → skip, don't fail |\n\n`FAIL` and `MISSING` are different problems: `FAIL` means the release is corrupt\nand must be re-cut; `MISSING` means a surface didn't publish (workflow didn't run,\nasset not uploaded) — investigate the pipeline. Never collapse the two into a\nsingle \"not green\" bucket; the close comment must show which is which.\n\n## Output schema\n\nDefault output is an **issue-comment-ready** markdown block. With `--json`, emit\nthe same data as `{ tag, repo, mirror, checks: [{ surface, target, verdict,\ndetail }], summary: { pass, fail, missing, na }, publishable: \u003Cbool> }`.\n`publishable` is true only when there are zero `FAIL` and zero unexpected\n`MISSING` (configured-but-absent) checks.\n\nMarkdown template to paste into the release-completion issue:\n\n```markdown\n## Release publication verification — {tag}\n\n| Surface | Target | Verdict | Detail |\n|---------|--------|---------|--------|\n| Gitea release | {repo} | PASS | release present, 4\u002F4 asset globs matched |\n| GitHub mirror | {mirror} | PASS | release present, 4\u002F4 asset globs matched |\n| SHA256SUMS | SHA256SUMS | PASS | covers tgz\u002Fdeb\u002Frpm\u002Finstall.sh; `sha256sum -c` OK |\n| Native pkg checksums | *.deb, *.rpm | PASS | hashes match |\n| GHCR images | aiwg:{version},latest | PASS | manifests exist; `--version` exits 0 |\n| Installer dry-run | install.sh@{tag} | PASS | `--dry-run` exits 0 from release URL |\n| Platform job | mutsu-apple-silicon-smoke | MISSING | no CI evidence found — investigate |\n\n**Summary:** 6 PASS · 0 FAIL · 1 MISSING · 0 N\u002FA → **not fully published**\n(missing: mutsu Apple-Silicon smoke evidence).\n```\n\n## Acceptance criteria\n\n- [ ] Accepts a `tag` and repo target (and optional mirror\u002Fconfig).\n- [ ] Verifies Gitea + GitHub release assets, the checksum manifest, native\n      package checksums, GHCR image existence + smoke, and installer dry-run\n      when configured.\n- [ ] Records **MISSING** distinctly from **FAIL** (and **N\u002FA** for\n      not-configured surfaces).\n- [ ] Emits a concise issue-comment-ready evidence summary (and `--json`).\n- [ ] Discoverable via `aiwg discover \"post tag release asset verifier GHCR packages installer\"`.\n\n## Related\n\n- `flow-release` — the release sequence; points here after its `release` gate,\n  before `post-release` close-outs.\n- Schema: `agentic\u002Fcode\u002Fframeworks\u002Fsdlc-complete\u002Fschemas\u002Fflows\u002Frelease-config.yaml`\n  (`publication_verify` block).\n- Rules: `token-security`, `ci-green-before-done`, `delivery-policy`,\n  `citation-policy` (evidence must be real, never fabricated).\n- Config: `.aiwg\u002Frelease.config` per project.\n",{"name":5,"triggers":57,"namespace":64,"platforms":65,"commandHint":67,"description":7},[58,59,60,61,62,63],"verify the release publication","post-tag release asset verifier","check GHCR images and release assets for a tag","prove the release published before closing issues","release publication proof for issue close","verify release assets checksums installer GHCR packages","aiwg",[66],"all",{"model":42,"category":68,"modelRole":69,"modelTier":70,"allowedTools":71,"argumentHint":72,"orchestration":53},"sdlc-orchestration","efficiency","economy","Read, Write, Edit, Bash, Glob, Grep, mcp__git-gitea__*","\u003Ctag> [--repo \u003Cowner\u002Fname>] [--mirror \u003Cowner\u002Fname>] [--config \u003Cpath>] [--json]","main","6754967c344ccb087a8de06972f55a41067b291b","agentic\u002Fcode\u002Fframeworks\u002Fsdlc-complete\u002Fskills\u002Frelease-publication-verify",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":84,"prompt":94,"zipAvailable":95},[85,88,91],{"tool":86,"command":87},"npx","npx skills add jmagly\u002Faiwg --skill release-publication-verify",{"tool":89,"command":90},"bunx","bunx skills add jmagly\u002Faiwg --skill release-publication-verify",{"tool":92,"command":93},"pnpm","pnpm dlx skills add jmagly\u002Faiwg --skill release-publication-verify","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fjmagly\u002Faiwg\u002Fblob\u002Fmain\u002Fagentic\u002Fcode\u002Fframeworks\u002Fsdlc-complete\u002Fskills\u002Frelease-publication-verify\u002FSKILL.md",true,[],[98,124,147,153,160,174],{"skillNo":99,"name":100,"nameZh":6,"description":101,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":102,"categories":103,"keywords":105,"publishedAt":52},"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",[104],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[106,107,108,41,109,110,111,112,113,114,43,115,116,117,118,119,120,121,122,123],"host","host hardening","hardening","re","recommendations","remediation","plan","port","verification","access","only","retention","audit","never","firewall","bind","secrets","request",{"skillNo":125,"name":126,"nameZh":6,"description":127,"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":134,"publishedAt":52},"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",[130,133],{"categoryNo":131,"categoryName":132,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000011","运维与部署",{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[135,136,137,41,138,113,139,140,43,141,106,142,116,143,144,119,120,145,146,28],"exposure analysis","analysis","unknown","credentials","collection","ufw","ports","internet","local","scope","reconstruction","operator",{"skillNo":148,"name":100,"nameZh":6,"description":101,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":149,"categories":150,"keywords":152,"publishedAt":52},"01M70P8QATMPKA78E4FT5D2TNA","https:\u002F\u002Fgithub.com\u002Fjmagly\u002Faiwg\u002Fblob\u002Fmain\u002Fagentic\u002Fcode\u002Fframeworks\u002Fsecurity-engineering\u002Fskills\u002Fhost-hardening\u002FSKILL.md",[151],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[108,106,107,115,41,123,111,110,118,112,113,114,43,122,116,117,109,119,120,121],{"skillNo":154,"name":126,"nameZh":6,"description":127,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":155,"categories":156,"keywords":159,"publishedAt":52},"01M70NMPVJ5H0JH131P60FW4R8","https:\u002F\u002Fgithub.com\u002Fjmagly\u002Faiwg\u002Fblob\u002Fmain\u002Fagentic\u002Fcode\u002Fframeworks\u002Fforensics-complete\u002Fskills\u002Fexposure-analysis\u002FSKILL.md",[157,158],{"categoryNo":131,"categoryName":132,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[136,135,119,138,113,139,43,137,106,142,116,143,144,41,120,141,140,145,146,28],{"skillNo":161,"name":162,"nameZh":6,"description":163,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":164,"categories":165,"keywords":167,"publishedAt":52},"01M6CB4DDR0B4NNCFK7ZK7449H","fixture-skill","Exercise rule delivery.","https:\u002F\u002Fgithub.com\u002Fjmagly\u002Faiwg\u002Fblob\u002Fmain\u002Ftest\u002Ffixtures\u002Frule-delivery\u002Fskills\u002Ffixture-skill\u002FSKILL.md",[166],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[168,169,170,171,172,173],"fixture skill","fixture","rule","delivery","true","exercise",{"skillNo":175,"name":176,"nameZh":6,"description":177,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":178,"categories":179,"keywords":181,"publishedAt":52},"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",[180],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[182,183,143,184,169],"pi","pi local","duplicate"]