[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6CB1NNXNSBD3CS80AXEQKJJ":3,"skill-same:01M6CB1NNXNSBD3CS80AXEQKJJ":95},{"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":53,"linkOnly":54,"markdownContent":55,"markdownBody":56,"frontMatter":57,"refName":66,"commitSha":67,"skillDirectory":68,"forksCount":69,"repositoryHtmlUrl":70,"repositoryHomepageUrl":71,"ownerHtmlUrl":72,"ownerBlogUrl":73,"ownerDescription":74,"updatedAt":75,"install":76,"resources":89},"01M6CB1NNXNSBD3CS80AXEQKJJ","steward-prep-delivery",null,"Steward-assisted prep for filing issues and PRs — environment capture, template selection, duplicate detection, delivery-policy compliance check","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\u002Fsteward-prep-delivery\u002FSKILL.md",[18,23],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",{"categoryNo":24,"categoryName":25,"taxonomyType":26,"taxonomyTypeDesc":27},"01JBSEEDCAT000000000000037","律师与法务","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],"prep","delivery","steward","steward prep delivery","environment","prs","for","filing","duplicate","project","selection","duplicates","policy","check","capture","find","terms","template","Bash","detection","compliance","search","issues","compliance check","2026-11-10 10:12:30",false,"---\nnamespace: aiwg\nname: steward-prep-delivery\nplatforms: [all]\ndescription: Steward-assisted prep for filing issues and PRs — environment capture, template selection, duplicate detection, delivery-policy compliance check\nscript:\n  entrypoint: find-duplicates.sh\n  runtime: bash\n  cwd: project-root\n  argsHint: '\u003Csearch-terms...>'\n---\n\n# Steward Prep for Delivery (#1269)\n\nYou are walking the user through filing a high-quality issue or PR, mirroring the import pattern used for the recent jmagly→roctinam tester report sweep (Gitea #1264–#1269).\n\n## When this fires\n\n- \"I want to file an issue\"\n- \"I want to open a PR\"\n- \"Help me file a bug report\"\n- \"Should this be a new issue or a comment on an existing one?\"\n- \"Walk me through the import flow for this tester report\"\n\n## The walkthrough\n\n### Step 1: Triage\n\nAsk the user: \"Is this one bug, or did you find multiple issues in a single session?\"\n\n- **One issue** → use `bug-report.md` (or `feature-request.md` if it's a proposal, not a defect)\n- **Multiple findings** → use `tester-report.md` and split during triage\n- **Already filed elsewhere** (GitHub, Discord, email) → use `imported-report.md`\n\nDon't make this decision for them — surface the templates and let them pick.\n\n### Step 2: Environment capture (for bug reports)\n\nFor bug-report.md, the operator needs to fill in environment info. Help them collect it:\n\n```bash\naiwg version\naiwg doctor\nnode --version\nuname -a   # OS \u002F kernel\n```\n\nIf they're filing on behalf of an agent platform (Claude Code, hermes, Codex, …), make sure the platform name is captured — the same bug can manifest differently across providers.\n\n### Step 3: Duplicate detection (BEFORE filing)\n\nRun the duplicate-detection helper. The skill's `script:` entrypoint\n(`find-duplicates.sh`) searches the local `aiwg discover` index plus the Gitea\nissue tracker for likely duplicates of the proposed title or keywords:\n\n```bash\naiwg run skill steward-prep-delivery -- \"\u003Ckeywords from the issue title>\"\n```\n\nOutput: ranked list of existing open issues that match. If any look like duplicates, **prefer commenting on them** over filing a new one. If none match, proceed to filing.\n\n### Step 4: Draft assembly\n\nHelp the user fill out the chosen template. Specifically:\n\n- For **bug-report.md**: insist on a copy-paste-able repro (not \"X seems broken\"). Paste exact error text in code blocks.\n- For **feature-request.md**: insist on a concrete proposal (interfaces, file paths, command syntax) — not \"we should make X better.\"\n- For **tester-report.md**: encourage one finding per section with severity, repro, expected\u002Factual.\n- For **imported-report.md**: include the source link, original reporter handle, and platform\u002Fenvironment correction if the source got it wrong (e.g., the jmagly tester report cited Claude Code, but the actual harness was hermes).\n\n### Step 5: Policy compliance check\n\nBefore they click \"Submit\", confirm:\n\n0. **Issue draft policy composition**: before any issue write, invoke the\n   `issue-create` composer on the final title\u002Fbody. Preserve safe drafts,\n   follow digest-bound authorization for flagged drafts, create all ordered\n   segments for separable policy conflicts, and make no write for blocked\n   drafts.\n\n1. **Delivery policy**: read `.aiwg\u002Faiwg.config` `delivery.mode`. If `direct`, the fix will land with `Closes #N` in the commit (no PR). If `pr-required`, they'll need a feature branch. If `feature-branch`, branch only. Tell them what to expect.\n\n2. **No AI attribution**: if they're using an AI tool to help draft, the commit\u002FPR must not include `Co-Authored-By: \u003CAI>` lines or \"Generated with\" markers. This is the project's no-attribution rule, applied universally.\n\n3. **CI green before done**: a commit isn't done until CI passes. Remind them to wait for the run on Gitea, and if it fails, fix it before declaring resolution.\n\n### Step 6: Submit and follow up\n\nFor Gitea issues, use:\n\n```\naiwg run skill issue-create -- \"\u003Ctitle>\" --provider gitea --labels \"bug\"\n```\n\n(Or invoke the relevant template manually via the Gitea web UI — both are fine.)\n\nFor PRs that close issues, ensure the body contains `Closes #N` (or `Refs #N` if it doesn't fully close).\n\n## Anti-patterns to flag\n\n- **\"While I'm at it\"** — if the user starts adding unrelated changes during issue\u002FPR drafting, split into separate tickets. One bug per issue, one concern per PR.\n- **Vague titles** — \"doesn't work\" or \"broken\" titles get bumped back; insist on `type(scope): subject` form (e.g., `bug(steward): path resolution lands at dist\u002F`).\n- **Missing environment** — bug reports without OS\u002Fversion\u002Fplatform get clarified before action. Don't let them slip through.\n- **Re-filing duplicates** — always run the duplicate-detection helper first. Comments on existing issues are cheaper than fresh issues.\n\n## Related skills\n\n- `issue-create` — the actual filing surface (Gitea, GitHub, Jira, Linear, local)\n- `issue-auto-sync` — detects commit ↔ issue links automatically\n- `address-issues` — runs issue-driven agent loops to close issues with code\n\n## References\n\n- `CONTRIBUTING.md` — full contributor guide\n- `.gitea\u002FISSUE_TEMPLATE\u002F` — issue templates\n- `.gitea\u002Fpull_request_template.md` — PR template\n- `agentic\u002Fcode\u002Faddons\u002Faiwg-utils\u002Frules\u002Fdelivery-policy.md` — delivery mode rule\n- `agentic\u002Fcode\u002Faddons\u002Faiwg-utils\u002Frules\u002Fno-attribution.md` — no-attribution rule\n- #1269 (parent issue), #1264–#1268 (the tester report sweep that motivated this)\n","# Steward Prep for Delivery (#1269)\n\nYou are walking the user through filing a high-quality issue or PR, mirroring the import pattern used for the recent jmagly→roctinam tester report sweep (Gitea #1264–#1269).\n\n## When this fires\n\n- \"I want to file an issue\"\n- \"I want to open a PR\"\n- \"Help me file a bug report\"\n- \"Should this be a new issue or a comment on an existing one?\"\n- \"Walk me through the import flow for this tester report\"\n\n## The walkthrough\n\n### Step 1: Triage\n\nAsk the user: \"Is this one bug, or did you find multiple issues in a single session?\"\n\n- **One issue** → use `bug-report.md` (or `feature-request.md` if it's a proposal, not a defect)\n- **Multiple findings** → use `tester-report.md` and split during triage\n- **Already filed elsewhere** (GitHub, Discord, email) → use `imported-report.md`\n\nDon't make this decision for them — surface the templates and let them pick.\n\n### Step 2: Environment capture (for bug reports)\n\nFor bug-report.md, the operator needs to fill in environment info. Help them collect it:\n\n```bash\naiwg version\naiwg doctor\nnode --version\nuname -a   # OS \u002F kernel\n```\n\nIf they're filing on behalf of an agent platform (Claude Code, hermes, Codex, …), make sure the platform name is captured — the same bug can manifest differently across providers.\n\n### Step 3: Duplicate detection (BEFORE filing)\n\nRun the duplicate-detection helper. The skill's `script:` entrypoint\n(`find-duplicates.sh`) searches the local `aiwg discover` index plus the Gitea\nissue tracker for likely duplicates of the proposed title or keywords:\n\n```bash\naiwg run skill steward-prep-delivery -- \"\u003Ckeywords from the issue title>\"\n```\n\nOutput: ranked list of existing open issues that match. If any look like duplicates, **prefer commenting on them** over filing a new one. If none match, proceed to filing.\n\n### Step 4: Draft assembly\n\nHelp the user fill out the chosen template. Specifically:\n\n- For **bug-report.md**: insist on a copy-paste-able repro (not \"X seems broken\"). Paste exact error text in code blocks.\n- For **feature-request.md**: insist on a concrete proposal (interfaces, file paths, command syntax) — not \"we should make X better.\"\n- For **tester-report.md**: encourage one finding per section with severity, repro, expected\u002Factual.\n- For **imported-report.md**: include the source link, original reporter handle, and platform\u002Fenvironment correction if the source got it wrong (e.g., the jmagly tester report cited Claude Code, but the actual harness was hermes).\n\n### Step 5: Policy compliance check\n\nBefore they click \"Submit\", confirm:\n\n0. **Issue draft policy composition**: before any issue write, invoke the\n   `issue-create` composer on the final title\u002Fbody. Preserve safe drafts,\n   follow digest-bound authorization for flagged drafts, create all ordered\n   segments for separable policy conflicts, and make no write for blocked\n   drafts.\n\n1. **Delivery policy**: read `.aiwg\u002Faiwg.config` `delivery.mode`. If `direct`, the fix will land with `Closes #N` in the commit (no PR). If `pr-required`, they'll need a feature branch. If `feature-branch`, branch only. Tell them what to expect.\n\n2. **No AI attribution**: if they're using an AI tool to help draft, the commit\u002FPR must not include `Co-Authored-By: \u003CAI>` lines or \"Generated with\" markers. This is the project's no-attribution rule, applied universally.\n\n3. **CI green before done**: a commit isn't done until CI passes. Remind them to wait for the run on Gitea, and if it fails, fix it before declaring resolution.\n\n### Step 6: Submit and follow up\n\nFor Gitea issues, use:\n\n```\naiwg run skill issue-create -- \"\u003Ctitle>\" --provider gitea --labels \"bug\"\n```\n\n(Or invoke the relevant template manually via the Gitea web UI — both are fine.)\n\nFor PRs that close issues, ensure the body contains `Closes #N` (or `Refs #N` if it doesn't fully close).\n\n## Anti-patterns to flag\n\n- **\"While I'm at it\"** — if the user starts adding unrelated changes during issue\u002FPR drafting, split into separate tickets. One bug per issue, one concern per PR.\n- **Vague titles** — \"doesn't work\" or \"broken\" titles get bumped back; insist on `type(scope): subject` form (e.g., `bug(steward): path resolution lands at dist\u002F`).\n- **Missing environment** — bug reports without OS\u002Fversion\u002Fplatform get clarified before action. Don't let them slip through.\n- **Re-filing duplicates** — always run the duplicate-detection helper first. Comments on existing issues are cheaper than fresh issues.\n\n## Related skills\n\n- `issue-create` — the actual filing surface (Gitea, GitHub, Jira, Linear, local)\n- `issue-auto-sync` — detects commit ↔ issue links automatically\n- `address-issues` — runs issue-driven agent loops to close issues with code\n\n## References\n\n- `CONTRIBUTING.md` — full contributor guide\n- `.gitea\u002FISSUE_TEMPLATE\u002F` — issue templates\n- `.gitea\u002Fpull_request_template.md` — PR template\n- `agentic\u002Fcode\u002Faddons\u002Faiwg-utils\u002Frules\u002Fdelivery-policy.md` — delivery mode rule\n- `agentic\u002Fcode\u002Faddons\u002Faiwg-utils\u002Frules\u002Fno-attribution.md` — no-attribution rule\n- #1269 (parent issue), #1264–#1268 (the tester report sweep that motivated this)\n",{"name":5,"script":58,"namespace":63,"platforms":64,"description":7},{"cwd":59,"runtime":60,"argsHint":61,"entrypoint":62},"project-root","bash","\u003Csearch-terms...>","find-duplicates.sh","aiwg",[65],"all","main","6754967c344ccb087a8de06972f55a41067b291b","agentic\u002Fcode\u002Fplugins\u002Futils\u002Fskills\u002Fsteward-prep-delivery",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":77,"prompt":87,"zipAvailable":88},[78,81,84],{"tool":79,"command":80},"npx","npx skills add jmagly\u002Faiwg --skill steward-prep-delivery",{"tool":82,"command":83},"bunx","bunx skills add jmagly\u002Faiwg --skill steward-prep-delivery",{"tool":85,"command":86},"pnpm","pnpm dlx skills add jmagly\u002Faiwg --skill steward-prep-delivery","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fjmagly\u002Faiwg\u002Fblob\u002Fmain\u002Fagentic\u002Fcode\u002Fplugins\u002Futils\u002Fskills\u002Fsteward-prep-delivery\u002FSKILL.md",true,[90],{"path":62,"resourceType":91,"resourceTypeDesc":92,"sizeBytes":93,"sourceHtmlUrl":94},"SCRIPT","脚本",8847,"https:\u002F\u002Fgithub.com\u002Fjmagly\u002Faiwg\u002Fblob\u002Fmain\u002Fagentic\u002Fcode\u002Fplugins\u002Futils\u002Fskills\u002Fsteward-prep-delivery\u002Ffind-duplicates.sh",[96,123,147,153,160,173],{"skillNo":97,"name":98,"nameZh":6,"description":99,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":100,"categories":101,"keywords":103,"publishedAt":53},"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",[102],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[104,105,106,107,108,109,110,111,112,113,47,114,115,116,117,118,119,120,121,122],"host","host hardening","hardening","read","re","recommendations","remediation","plan","port","verification","access","only","retention","audit","never","firewall","bind","secrets","request",{"skillNo":124,"name":125,"nameZh":6,"description":126,"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":133,"publishedAt":53},"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",[129,132],{"categoryNo":130,"categoryName":131,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000011","运维与部署",{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[134,135,136,107,137,112,138,139,47,140,104,141,115,142,143,118,119,144,145,146],"exposure analysis","analysis","unknown","credentials","collection","ufw","ports","internet","local","scope","reconstruction","operator","write",{"skillNo":148,"name":98,"nameZh":6,"description":99,"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":53},"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},[106,104,105,114,107,122,110,109,117,111,112,113,47,121,115,116,108,118,119,120],{"skillNo":154,"name":125,"nameZh":6,"description":126,"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":53},"01M70NMPVJ5H0JH131P60FW4R8","https:\u002F\u002Fgithub.com\u002Fjmagly\u002Faiwg\u002Fblob\u002Fmain\u002Fagentic\u002Fcode\u002Fframeworks\u002Fforensics-complete\u002Fskills\u002Fexposure-analysis\u002FSKILL.md",[157,158],{"categoryNo":130,"categoryName":131,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[135,134,118,137,112,138,47,136,104,141,115,142,143,107,119,140,139,144,145,146],{"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":53},"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,30,171,172],"fixture skill","fixture","rule","true","exercise",{"skillNo":174,"name":175,"nameZh":6,"description":176,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":177,"categories":178,"keywords":180,"publishedAt":53},"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",[179],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[181,182,142,37,169],"pi","pi local"]