[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6CAS23DHYKXGPX74PJSG0R4":3,"skill-same:01M6CAS23DHYKXGPX74PJSG0R4":89},{"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":45,"linkOnly":46,"markdownContent":47,"markdownBody":48,"frontMatter":49,"refName":66,"commitSha":67,"skillDirectory":68,"forksCount":69,"repositoryHtmlUrl":70,"repositoryHomepageUrl":71,"ownerHtmlUrl":72,"ownerBlogUrl":73,"ownerDescription":74,"updatedAt":75,"install":76,"resources":88},"01M6CAS23DHYKXGPX74PJSG0R4","aiwg-issue",null,"AIWG project issue filing only — templates, environment capture, duplicate detection, and import flow for AIWG tracker reports; not for general issue audits or address-issues processing","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\u002Faiwg-issue\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],"issue","aiwg issue","new","import","do","tracker","me","filing","project","processing","bug report","flow","bug","write","how","template","reports","discord","only","issues","up","2026-11-10 10:12:30",false,"---\nnamespace: aiwg\nname: aiwg-issue\nplatforms: [all]\nkernel: true\ndescription: AIWG project issue filing only — templates, environment capture, duplicate detection, and import flow for AIWG tracker reports; not for general issue audits or address-issues processing\ntriggers:\n  - file an AIWG issue\n  - report an AIWG bug\n  - import this AIWG issue from GitHub\n  - I want to file an issue\n  - How do I report a bug?\n  - Help me write up a bug report\n  - What template should I use?\n  - Should I file a new issue or comment on an existing one?\n  - Import this report from GitHub\n  - Import this report from Discord\n  - Import this report from email\n---\n\n# Filing AIWG Issues\n\nYou are helping a user (or yourself, as an autonomous agent) file a high-quality issue. The bar is set by the recent tester-report import sweep (Gitea #1264–#1269): environment captured, exact commands, error text in code blocks, suggested fix paths.\n\nThis is an **AIWG-specific kernel capability**. Use it for filing, importing, or triaging the quality of issue reports about AIWG itself.\n\nDo **not** use this skill for general backlog processing:\n\n- Use `issue-audit` \u002F `audit-issues` when the user asks to audit open issues, triage a backlog, find duplicates, review stale issues, or rank work.\n- Use `address-issues` when the user asks to fix, process, or work through issues.\n- Treat `aiwg-*` skill names as AIWG product\u002Fworkspace capabilities, not as the generic issue-processing surface.\n\n## When this fires\n\nNatural-language triggers:\n\n- \"file an AIWG issue\"\n- \"report an AIWG bug\"\n- \"import this AIWG issue from GitHub\"\n- \"I want to file an issue\"\n- \"How do I report a bug?\"\n- \"Help me write up a bug report\"\n- \"What template should I use?\"\n- \"Should I file a new issue or comment on an existing one?\"\n- \"Import this report from GitHub\" \u002F \"from Discord\" \u002F \"from email\"\n\nNon-triggers:\n\n- \"audit open issues\"\n- \"triage the issue backlog\"\n- \"review stale issues\"\n- \"address issues\"\n- \"process open issues\"\n\n## Output template\n\nThe selected template is required. Fill every required section before filing;\nmark non-applicable optional fields with a reason and remove template instructions.\n\n### Template selection\n\n| Template | When to use | Path |\n|---|---|---|\n| `bug-report.md` | One concrete defect with a reproduction | @$AIWG_ROOT\u002Fagentic\u002Fcode\u002Faddons\u002Faiwg-utils\u002Ftemplates\u002Fissues\u002Fbug-report.md |\n| `feature-request.md` | A new capability or enhancement proposal | @$AIWG_ROOT\u002Fagentic\u002Fcode\u002Faddons\u002Faiwg-utils\u002Ftemplates\u002Fissues\u002Ffeature-request.md |\n| `tester-report.md` | A single session that surfaced multiple findings | @$AIWG_ROOT\u002Fagentic\u002Fcode\u002Faddons\u002Faiwg-utils\u002Ftemplates\u002Fissues\u002Ftester-report.md |\n| `imported-report.md` | Mirroring an issue filed in a different tracker | @$AIWG_ROOT\u002Fagentic\u002Fcode\u002Faddons\u002Faiwg-utils\u002Ftemplates\u002Fissues\u002Fimported-report.md |\n\nThese bundle templates are canonical. The repository `.gitea\u002FISSUE_TEMPLATE\u002F` and\n`.github\u002FISSUE_TEMPLATE\u002F` files are derived copies maintained by `npm run package-plugins`.\n\nCompose through `issue-create` with `--template \u003Ckind|path>` matching the selected\ntemplate (default: `bug-report`). Missing required headings produce an advisory\nstderr warning; the composer remains headless-safe.\n\n## The walkthrough\n\n### 1. Triage first\n\nAsk: is this one bug, or multiple findings from a single session?\n\n- **One issue** → `bug-report.md` or `feature-request.md`\n- **Multiple findings** → `tester-report.md`, split into discrete bugs during follow-up triage\n- **Already filed elsewhere** → `imported-report.md`\n\n**One bug per issue.** If three things broke, file three issues (or one tester-report and split). Don't bundle.\n\n### 2. Duplicate detection (BEFORE filing)\n\nAlways check for duplicates first. Cheaper to comment on an existing thread than file again. Use:\n\n```bash\naiwg discover \"\u003Ckeywords from the proposed title>\"\n```\n\nThen search the tracker for matching titles. The `steward-prep-delivery` skill bundles both lookups into one command:\n\n```bash\naiwg run skill steward-prep-delivery -- \"\u003Csearch terms>\"\n```\n\nIf a likely duplicate exists, comment on it rather than filing fresh.\n\n### 3. Environment capture (REQUIRED — three non-negotiable fields)\n\nBug reports without **AIWG version + operating system + provider** are bounced before triage. Collect ALL of these:\n\n```bash\naiwg version           # → AIWG version + channel (REQUIRED)\nuname -a               # → operating system + kernel (REQUIRED)\nnode --version         # → Node version\naiwg doctor            # workspace health snapshot (helpful)\n```\n\nAnd — also required — the **provider** (the AIWG harness in use): one of\n`claude-code`, `codex`, `copilot`, `cursor`, `factory`, `hermes`, `opencode`,\n`openclaw`, `openhuman`, `omp`, `pi`, `warp`, or `windsurf`.\n\nWhen you (the agent) draft a bug report on behalf of a user, **ask explicitly for each of the three required fields** if they aren't already in the conversation. Don't infer. The May-2026 jmagly→roctinam import sweep needed a correction round because the original GitHub report cited \"Claude Code 2.1.137\" but the actual harness in use was hermes — same bug, different behavior, wasted half a round-trip to clarify. Don't repeat that.\n\nThe bug-report template has a checklist that enforces this; surface it before the operator submits.\n\n### 4. Reproducible repro\n\nPaste **exact** commands (copy-paste-ready, no `\u003Cplaceholder>`s without explicit substitution instructions) and **exact** error text in fenced code blocks. Paraphrased errors lose detail.\n\nBad:\n> \"When I run the steward command it errors out\"\n\nGood:\n> ```\n> $ aiwg steward capabilities --provider claude-code\n> ERROR ENOENT: no such file or directory, open '\u002Fhome\u002Flinuxbrew\u002F.linuxbrew\u002Flib\u002Fnode_modules\u002Faiwg\u002Fdist\u002Fagentic\u002Fcode\u002Fproviders\u002Fcapability-matrix.yaml'\n> ```\n\n### 5. Title format\n\n`type(scope): one-line summary`. Examples:\n\n- `bug(steward): AIWG_ROOT path resolution lands at dist\u002F instead of package root`\n- `feat(contributing): consistent PR + Issue templates`\n- `regression: Skill Seekers implementation lost`\n- `imported: \u003Coriginal title> (\u003Csource>#\u003Cnumber>)` for imports\n\nVague titles (\"doesn't work\", \"broken\") get bumped back. Insist on the typed form.\n\n### 6. Suggested fix (if you've investigated)\n\nIf you've already traced the bug, point at the file or line. \"I think this is in `src\u002Fcli\u002Fhandlers\u002Fsteward.ts:26`\" is faster than a round-trip. This is optional but valued — the recent #1261\u002F#1262\u002F#1263 imports landed faster because the original reporter included file-line pointers.\n\n### 7. Acceptance criteria\n\nBug reports should include checkable acceptance:\n\n```markdown\n- [ ] Repro from \"Steps to reproduce\" no longer fails\n- [ ] Regression test added (if the bug bypassed existing tests)\n- [ ] Related docs updated (if behavior was documented incorrectly)\n```\n\nFeature requests need concrete, checkable conditions — not \"works well\" or \"feels right\".\n\n## Import flow (cross-tracker reports)\n\nWhen a report lands in a different tracker (GitHub mirror, Discord, email, vendor support), mirror to Gitea as `imported-report.md`:\n\n1. Title: `imported: \u003Coriginal title> (\u003Csource>#\u003Cnumber>)`\n2. Link the source URL\n3. Preserve the **original reporter handle** and **platform\u002Fenvironment** (correct it if the source got it wrong)\n4. Add a \"Status against current main\" table\n5. Cross-reference any local issues that duplicate or overlap\n6. If already fixed: note the resolving commit and close as duplicate\n7. **Thank the original reporter** in a closing comment when the work lands\n\nExample: jmagly#108–#112 → roctinam #1264–#1268 sweep (May 2026).\n\n## Filing\n\n### Lookup-before-ask\n\nBefore asking the person to authorize filing, commenting, cross-linking or closing,\nMUST check each exact pending action from a private host-built action file:\n\n```bash\naiwg config authorization check --action-file \"$ACTION_FILE\" --target \"$TARGET_REPO\"\n```\n\nOnly `auto-authorized` with a receipt permits that action without asking. On\n`escalate`, keep today's prompt; on `deny`, retain the refusal. Errors, invalid\noutput or a missing receipt retain review. Use the resolved member's repo\u002Ftarget and\nworkspace, real environment, verb and every affected resource; remote writes are\n`tracker.write` and need a scoped durable grant or explicit review. Recheck each\nchanged action. Destructive, secret, production and override actions always\nretain review. Platform prompts are never bypassed. Composition\u002Fdigest-bound\nthreat authorization, repo access and delivery gates remain independent.\n\n### Mapped control workspaces\n\nFrom a mapped `\u002Fsrv\u002F*-workspace`, resolve the target member from\n`config\u002Frepository-routing.yaml` `workTracker` and the workspace access manifest\nbefore duplicate detection or filing. Check the member's `read` permission for\nqueries and `issue-comment` permission for tracker writes. Load that member's\n`.aiwg\u002Faiwg.config`: its `remotes.issue_tracker`, `remotes.issue_provider`, and\n`remotes.tracker_actor.login` \u002F `credential` govern the request. Never substitute\nthe control workspace's remotes or the current default forge login.\n\nGo straight to that member's tracker through the configured tracker tools;\nlocal issue initialization in the control workspace is unnecessary. For the\nnative create command, run it from the authorized member directory so it reads\nthe member config. The CLI does not interpret `repository-routing.yaml` itself.\nFollow `issue-create` composition and authorization before writing.\n\n`aiwg issues list` queries local storage only; it refuses a configured external\ntracker unless `--provider local` is explicit. Search the member's external\ntracker with its tracker tools instead. A failed query (including missing init\nor HTTP 401) is a blocker to duplicate detection, never an empty result.\n\nBefore any MCP, CLI, API, or web-UI write, discover and load the\n`issue-create` skill, then route the final title\u002Fbody through its policy\ncomposition. Use the returned segment bodies exactly;\nobtain digest-bound authorization when requested, and make no write for a\n`blocked` plan. This prevents authoring an issue that the address workflow will\nreject under the same project policy.\n\n```bash\naiwg run skill issue-create -- plan --title '\u003Ctitle>' --body-file \u002Ftmp\u002Fissue.md\n# After reviewing the plan and any required digest-bound authorization:\naiwg issues create --title '\u003Ctitle>' --body-file \u002Ftmp\u002Fissue.md\naiwg issues comment \u003Cnumber> --body-file \u002Ftmp\u002Fcomment.md\naiwg issues close \u003Cnumber>\n```\n\nThese writes use the configured external tracker (`remotes.issue_tracker` and\n`issue_provider`). Local-only projects retain local issue storage; use\n`--provider local` to select it explicitly. Multi-segment composition and\n`--authorize-policy \u003Cdigest>` use the same policy plan as `issue-create`.\n\nConfigure `remotes.tracker_actor.credential` with an existing sensitive-input\nreference: `{\"store\":\"tracker-token\"}` or `{\"env\":\"PROJECT_TRACKER_TOKEN\"}`.\nThe HTTP client checks `\u002Fuser` before every write, requires\n`tracker_actor.login` to match, and refuses `forbid_actors`. Configured\ncredentials cannot be overridden with token flags. No token belongs in argv,\nlogs, or issue bodies. Projects without an actor credential retain provider\nenvironment token discovery. PR delivery uses the same actor via `aiwg-pr`.\n\nFor a missing or rejected actor token, save a token belonging to the configured\n`tracker_actor.login` with `aiwg auth secret set \u003Cname> --value-stdin`, then set\nthe member's `remotes.tracker_actor.credential` to `{\"store\":\"\u003Cname>\"}`. An env\nreference works when its named variable is supplied. Refresh an existing\nreference when configured; never switch to a different actor to bypass a 401.\n\n## After filing\n\n- Add labels (priority, area, type) per the `ops-issue-tracking` rule conventions\n- Link related issues with `Refs #N` \u002F `Blocked-by: #N` \u002F `Blocks: #N` in the body\n- Watch the thread for triage comments and answer promptly\n\n## Anti-patterns to flag\n\n- **\"While I'm at it\"** — adding unrelated changes to a bug report. Split into separate issues.\n- **Bundling fixes into the report** — if you have a fix, file the issue first, then submit the PR with `Closes #N`. Don't mix.\n- **Re-filing duplicates** — always run duplicate detection first.\n- **Vague titles** — `type(scope): subject` form is required.\n- **Missing environment** — bug reports without OS\u002Fversion\u002Fplatform get clarified before action.\n\n## Related\n\n- Skills: `aiwg-pr` (filing PRs), `steward-prep-delivery` (interactive walkthrough), `issue-create` (low-level filing), `issue-auto-sync` (commit↔issue linking)\n- Templates: required canonical bundle paths in \"Output template\" above\n- Docs: `CONTRIBUTING.md` (full contributor guide)\n- Rules: `delivery-policy`, `no-attribution`, `ops-issue-tracking`\n- Origin: #1269 (templates), #1264–#1268 (tester report sweep that motivated this)\n","# Filing AIWG Issues\n\nYou are helping a user (or yourself, as an autonomous agent) file a high-quality issue. The bar is set by the recent tester-report import sweep (Gitea #1264–#1269): environment captured, exact commands, error text in code blocks, suggested fix paths.\n\nThis is an **AIWG-specific kernel capability**. Use it for filing, importing, or triaging the quality of issue reports about AIWG itself.\n\nDo **not** use this skill for general backlog processing:\n\n- Use `issue-audit` \u002F `audit-issues` when the user asks to audit open issues, triage a backlog, find duplicates, review stale issues, or rank work.\n- Use `address-issues` when the user asks to fix, process, or work through issues.\n- Treat `aiwg-*` skill names as AIWG product\u002Fworkspace capabilities, not as the generic issue-processing surface.\n\n## When this fires\n\nNatural-language triggers:\n\n- \"file an AIWG issue\"\n- \"report an AIWG bug\"\n- \"import this AIWG issue from GitHub\"\n- \"I want to file an issue\"\n- \"How do I report a bug?\"\n- \"Help me write up a bug report\"\n- \"What template should I use?\"\n- \"Should I file a new issue or comment on an existing one?\"\n- \"Import this report from GitHub\" \u002F \"from Discord\" \u002F \"from email\"\n\nNon-triggers:\n\n- \"audit open issues\"\n- \"triage the issue backlog\"\n- \"review stale issues\"\n- \"address issues\"\n- \"process open issues\"\n\n## Output template\n\nThe selected template is required. Fill every required section before filing;\nmark non-applicable optional fields with a reason and remove template instructions.\n\n### Template selection\n\n| Template | When to use | Path |\n|---|---|---|\n| `bug-report.md` | One concrete defect with a reproduction | @$AIWG_ROOT\u002Fagentic\u002Fcode\u002Faddons\u002Faiwg-utils\u002Ftemplates\u002Fissues\u002Fbug-report.md |\n| `feature-request.md` | A new capability or enhancement proposal | @$AIWG_ROOT\u002Fagentic\u002Fcode\u002Faddons\u002Faiwg-utils\u002Ftemplates\u002Fissues\u002Ffeature-request.md |\n| `tester-report.md` | A single session that surfaced multiple findings | @$AIWG_ROOT\u002Fagentic\u002Fcode\u002Faddons\u002Faiwg-utils\u002Ftemplates\u002Fissues\u002Ftester-report.md |\n| `imported-report.md` | Mirroring an issue filed in a different tracker | @$AIWG_ROOT\u002Fagentic\u002Fcode\u002Faddons\u002Faiwg-utils\u002Ftemplates\u002Fissues\u002Fimported-report.md |\n\nThese bundle templates are canonical. The repository `.gitea\u002FISSUE_TEMPLATE\u002F` and\n`.github\u002FISSUE_TEMPLATE\u002F` files are derived copies maintained by `npm run package-plugins`.\n\nCompose through `issue-create` with `--template \u003Ckind|path>` matching the selected\ntemplate (default: `bug-report`). Missing required headings produce an advisory\nstderr warning; the composer remains headless-safe.\n\n## The walkthrough\n\n### 1. Triage first\n\nAsk: is this one bug, or multiple findings from a single session?\n\n- **One issue** → `bug-report.md` or `feature-request.md`\n- **Multiple findings** → `tester-report.md`, split into discrete bugs during follow-up triage\n- **Already filed elsewhere** → `imported-report.md`\n\n**One bug per issue.** If three things broke, file three issues (or one tester-report and split). Don't bundle.\n\n### 2. Duplicate detection (BEFORE filing)\n\nAlways check for duplicates first. Cheaper to comment on an existing thread than file again. Use:\n\n```bash\naiwg discover \"\u003Ckeywords from the proposed title>\"\n```\n\nThen search the tracker for matching titles. The `steward-prep-delivery` skill bundles both lookups into one command:\n\n```bash\naiwg run skill steward-prep-delivery -- \"\u003Csearch terms>\"\n```\n\nIf a likely duplicate exists, comment on it rather than filing fresh.\n\n### 3. Environment capture (REQUIRED — three non-negotiable fields)\n\nBug reports without **AIWG version + operating system + provider** are bounced before triage. Collect ALL of these:\n\n```bash\naiwg version           # → AIWG version + channel (REQUIRED)\nuname -a               # → operating system + kernel (REQUIRED)\nnode --version         # → Node version\naiwg doctor            # workspace health snapshot (helpful)\n```\n\nAnd — also required — the **provider** (the AIWG harness in use): one of\n`claude-code`, `codex`, `copilot`, `cursor`, `factory`, `hermes`, `opencode`,\n`openclaw`, `openhuman`, `omp`, `pi`, `warp`, or `windsurf`.\n\nWhen you (the agent) draft a bug report on behalf of a user, **ask explicitly for each of the three required fields** if they aren't already in the conversation. Don't infer. The May-2026 jmagly→roctinam import sweep needed a correction round because the original GitHub report cited \"Claude Code 2.1.137\" but the actual harness in use was hermes — same bug, different behavior, wasted half a round-trip to clarify. Don't repeat that.\n\nThe bug-report template has a checklist that enforces this; surface it before the operator submits.\n\n### 4. Reproducible repro\n\nPaste **exact** commands (copy-paste-ready, no `\u003Cplaceholder>`s without explicit substitution instructions) and **exact** error text in fenced code blocks. Paraphrased errors lose detail.\n\nBad:\n> \"When I run the steward command it errors out\"\n\nGood:\n> ```\n> $ aiwg steward capabilities --provider claude-code\n> ERROR ENOENT: no such file or directory, open '\u002Fhome\u002Flinuxbrew\u002F.linuxbrew\u002Flib\u002Fnode_modules\u002Faiwg\u002Fdist\u002Fagentic\u002Fcode\u002Fproviders\u002Fcapability-matrix.yaml'\n> ```\n\n### 5. Title format\n\n`type(scope): one-line summary`. Examples:\n\n- `bug(steward): AIWG_ROOT path resolution lands at dist\u002F instead of package root`\n- `feat(contributing): consistent PR + Issue templates`\n- `regression: Skill Seekers implementation lost`\n- `imported: \u003Coriginal title> (\u003Csource>#\u003Cnumber>)` for imports\n\nVague titles (\"doesn't work\", \"broken\") get bumped back. Insist on the typed form.\n\n### 6. Suggested fix (if you've investigated)\n\nIf you've already traced the bug, point at the file or line. \"I think this is in `src\u002Fcli\u002Fhandlers\u002Fsteward.ts:26`\" is faster than a round-trip. This is optional but valued — the recent #1261\u002F#1262\u002F#1263 imports landed faster because the original reporter included file-line pointers.\n\n### 7. Acceptance criteria\n\nBug reports should include checkable acceptance:\n\n```markdown\n- [ ] Repro from \"Steps to reproduce\" no longer fails\n- [ ] Regression test added (if the bug bypassed existing tests)\n- [ ] Related docs updated (if behavior was documented incorrectly)\n```\n\nFeature requests need concrete, checkable conditions — not \"works well\" or \"feels right\".\n\n## Import flow (cross-tracker reports)\n\nWhen a report lands in a different tracker (GitHub mirror, Discord, email, vendor support), mirror to Gitea as `imported-report.md`:\n\n1. Title: `imported: \u003Coriginal title> (\u003Csource>#\u003Cnumber>)`\n2. Link the source URL\n3. Preserve the **original reporter handle** and **platform\u002Fenvironment** (correct it if the source got it wrong)\n4. Add a \"Status against current main\" table\n5. Cross-reference any local issues that duplicate or overlap\n6. If already fixed: note the resolving commit and close as duplicate\n7. **Thank the original reporter** in a closing comment when the work lands\n\nExample: jmagly#108–#112 → roctinam #1264–#1268 sweep (May 2026).\n\n## Filing\n\n### Lookup-before-ask\n\nBefore asking the person to authorize filing, commenting, cross-linking or closing,\nMUST check each exact pending action from a private host-built action file:\n\n```bash\naiwg config authorization check --action-file \"$ACTION_FILE\" --target \"$TARGET_REPO\"\n```\n\nOnly `auto-authorized` with a receipt permits that action without asking. On\n`escalate`, keep today's prompt; on `deny`, retain the refusal. Errors, invalid\noutput or a missing receipt retain review. Use the resolved member's repo\u002Ftarget and\nworkspace, real environment, verb and every affected resource; remote writes are\n`tracker.write` and need a scoped durable grant or explicit review. Recheck each\nchanged action. Destructive, secret, production and override actions always\nretain review. Platform prompts are never bypassed. Composition\u002Fdigest-bound\nthreat authorization, repo access and delivery gates remain independent.\n\n### Mapped control workspaces\n\nFrom a mapped `\u002Fsrv\u002F*-workspace`, resolve the target member from\n`config\u002Frepository-routing.yaml` `workTracker` and the workspace access manifest\nbefore duplicate detection or filing. Check the member's `read` permission for\nqueries and `issue-comment` permission for tracker writes. Load that member's\n`.aiwg\u002Faiwg.config`: its `remotes.issue_tracker`, `remotes.issue_provider`, and\n`remotes.tracker_actor.login` \u002F `credential` govern the request. Never substitute\nthe control workspace's remotes or the current default forge login.\n\nGo straight to that member's tracker through the configured tracker tools;\nlocal issue initialization in the control workspace is unnecessary. For the\nnative create command, run it from the authorized member directory so it reads\nthe member config. The CLI does not interpret `repository-routing.yaml` itself.\nFollow `issue-create` composition and authorization before writing.\n\n`aiwg issues list` queries local storage only; it refuses a configured external\ntracker unless `--provider local` is explicit. Search the member's external\ntracker with its tracker tools instead. A failed query (including missing init\nor HTTP 401) is a blocker to duplicate detection, never an empty result.\n\nBefore any MCP, CLI, API, or web-UI write, discover and load the\n`issue-create` skill, then route the final title\u002Fbody through its policy\ncomposition. Use the returned segment bodies exactly;\nobtain digest-bound authorization when requested, and make no write for a\n`blocked` plan. This prevents authoring an issue that the address workflow will\nreject under the same project policy.\n\n```bash\naiwg run skill issue-create -- plan --title '\u003Ctitle>' --body-file \u002Ftmp\u002Fissue.md\n# After reviewing the plan and any required digest-bound authorization:\naiwg issues create --title '\u003Ctitle>' --body-file \u002Ftmp\u002Fissue.md\naiwg issues comment \u003Cnumber> --body-file \u002Ftmp\u002Fcomment.md\naiwg issues close \u003Cnumber>\n```\n\nThese writes use the configured external tracker (`remotes.issue_tracker` and\n`issue_provider`). Local-only projects retain local issue storage; use\n`--provider local` to select it explicitly. Multi-segment composition and\n`--authorize-policy \u003Cdigest>` use the same policy plan as `issue-create`.\n\nConfigure `remotes.tracker_actor.credential` with an existing sensitive-input\nreference: `{\"store\":\"tracker-token\"}` or `{\"env\":\"PROJECT_TRACKER_TOKEN\"}`.\nThe HTTP client checks `\u002Fuser` before every write, requires\n`tracker_actor.login` to match, and refuses `forbid_actors`. Configured\ncredentials cannot be overridden with token flags. No token belongs in argv,\nlogs, or issue bodies. Projects without an actor credential retain provider\nenvironment token discovery. PR delivery uses the same actor via `aiwg-pr`.\n\nFor a missing or rejected actor token, save a token belonging to the configured\n`tracker_actor.login` with `aiwg auth secret set \u003Cname> --value-stdin`, then set\nthe member's `remotes.tracker_actor.credential` to `{\"store\":\"\u003Cname>\"}`. An env\nreference works when its named variable is supplied. Refresh an existing\nreference when configured; never switch to a different actor to bypass a 401.\n\n## After filing\n\n- Add labels (priority, area, type) per the `ops-issue-tracking` rule conventions\n- Link related issues with `Refs #N` \u002F `Blocked-by: #N` \u002F `Blocks: #N` in the body\n- Watch the thread for triage comments and answer promptly\n\n## Anti-patterns to flag\n\n- **\"While I'm at it\"** — adding unrelated changes to a bug report. Split into separate issues.\n- **Bundling fixes into the report** — if you have a fix, file the issue first, then submit the PR with `Closes #N`. Don't mix.\n- **Re-filing duplicates** — always run duplicate detection first.\n- **Vague titles** — `type(scope): subject` form is required.\n- **Missing environment** — bug reports without OS\u002Fversion\u002Fplatform get clarified before action.\n\n## Related\n\n- Skills: `aiwg-pr` (filing PRs), `steward-prep-delivery` (interactive walkthrough), `issue-create` (low-level filing), `issue-auto-sync` (commit↔issue linking)\n- Templates: required canonical bundle paths in \"Output template\" above\n- Docs: `CONTRIBUTING.md` (full contributor guide)\n- Rules: `delivery-policy`, `no-attribution`, `ops-issue-tracking`\n- Origin: #1269 (templates), #1264–#1268 (tester report sweep that motivated this)\n",{"name":5,"kernel":50,"triggers":51,"namespace":63,"platforms":64,"description":7},true,[52,53,54,55,56,57,58,59,60,61,62],"file an AIWG issue","report an AIWG bug","import this AIWG issue from GitHub","I want to file an issue","How do I report a bug?","Help me write up a bug report","What template should I use?","Should I file a new issue or comment on an existing one?","Import this report from GitHub","Import this report from Discord","Import this report from email","aiwg",[65],"all","main","ac56f6a215342ed836e51f1945653968b95edd64","agentic\u002Fcode\u002Fplugins\u002Futils\u002Fskills\u002Faiwg-issue",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":77,"prompt":87,"zipAvailable":50},[78,81,84],{"tool":79,"command":80},"npx","npx skills add jmagly\u002Faiwg --skill aiwg-issue",{"tool":82,"command":83},"bunx","bunx skills add jmagly\u002Faiwg --skill aiwg-issue",{"tool":85,"command":86},"pnpm","pnpm dlx skills add jmagly\u002Faiwg --skill aiwg-issue","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fjmagly\u002Faiwg\u002Fblob\u002Fmain\u002Fagentic\u002Fcode\u002Fplugins\u002Futils\u002Fskills\u002Faiwg-issue\u002FSKILL.md",[],[90,117,140,146,153,167],{"skillNo":91,"name":92,"nameZh":6,"description":93,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":94,"categories":95,"keywords":97,"publishedAt":45},"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",[96],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[98,99,100,101,102,103,104,105,106,107,108,109,42,110,111,112,113,114,115,116],"host","host hardening","hardening","read","re","recommendations","remediation","plan","port","verification","Bash","access","retention","audit","never","firewall","bind","secrets","request",{"skillNo":118,"name":119,"nameZh":6,"description":120,"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":127,"publishedAt":45},"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",[123,126],{"categoryNo":124,"categoryName":125,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000011","运维与部署",{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[128,129,130,101,131,106,132,133,108,134,98,135,42,136,137,112,113,138,139,37],"exposure analysis","analysis","unknown","credentials","collection","ufw","ports","internet","local","scope","reconstruction","operator",{"skillNo":141,"name":92,"nameZh":6,"description":93,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":142,"categories":143,"keywords":145,"publishedAt":45},"01M70P8QATMPKA78E4FT5D2TNA","https:\u002F\u002Fgithub.com\u002Fjmagly\u002Faiwg\u002Fblob\u002Fmain\u002Fagentic\u002Fcode\u002Fframeworks\u002Fsecurity-engineering\u002Fskills\u002Fhost-hardening\u002FSKILL.md",[144],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[100,98,99,109,101,116,104,103,111,105,106,107,108,115,42,110,102,112,113,114],{"skillNo":147,"name":119,"nameZh":6,"description":120,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":148,"categories":149,"keywords":152,"publishedAt":45},"01M70NMPVJ5H0JH131P60FW4R8","https:\u002F\u002Fgithub.com\u002Fjmagly\u002Faiwg\u002Fblob\u002Fmain\u002Fagentic\u002Fcode\u002Fframeworks\u002Fforensics-complete\u002Fskills\u002Fexposure-analysis\u002FSKILL.md",[150,151],{"categoryNo":124,"categoryName":125,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[129,128,112,131,106,132,108,130,98,135,42,136,137,101,113,134,133,138,139,37],{"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":45},"01M6CB4DDR0B4NNCFK7ZK7449H","fixture-skill","Exercise rule delivery.","https:\u002F\u002Fgithub.com\u002Fjmagly\u002Faiwg\u002Fblob\u002Fmain\u002Ftest\u002Ffixtures\u002Frule-delivery\u002Fskills\u002Ffixture-skill\u002FSKILL.md",[159],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[161,162,163,164,165,166],"fixture skill","fixture","rule","delivery","true","exercise",{"skillNo":168,"name":169,"nameZh":6,"description":170,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":171,"categories":172,"keywords":174,"publishedAt":45},"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",[173],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[175,176,136,177,162],"pi","pi local","duplicate"]