/aiwg-pr
AIWG-specific pull request delivery workflow for AIWG product/workspace changes; not the generic repository PR process
Claude Code
$ npx -y skills add jmagly/aiwg --skill aiwg-pr --agent claude-code
Codex
$ npx skills add jmagly/aiwg --skill aiwg-pr -a codex -y
Cursor
$ npx skills add jmagly/aiwg --skill aiwg-pr -a cursor -y
Gemini CLI
$ npx skills add jmagly/aiwg --skill aiwg-pr -a gemini-cli -y
GitHub Copilot
$ npx skills add jmagly/aiwg --skill aiwg-pr -a github-copilot -y
OpenCode
$ npx skills add jmagly/aiwg --skill aiwg-pr -a opencode -y
Windsurf
$ npx skills add jmagly/aiwg --skill aiwg-pr -a windsurf -y
SKILL.md
aiwg-pr.SKILL.mdnamespace: aiwg
name: aiwg-pr
platforms: [all]
kernel: true
description: AIWG-specific pull request delivery workflow for AIWG product/workspace changes; not the generic repository PR process
script:
entrypoint: scripts/deliver.mjs
runtime: node
cwd: project-root
argsHint: open --title <title> --body-file <path> | merge <number>
triggers:
- "AIWG PR"
- "AIWG delivery PR"
- "AIWG release PR"
- "AIWG product PR"
- "open an AIWG pull request"
Opening AIWG Pull Requests
You are helping a user (or yourself, as an autonomous agent) open a high-quality AIWG product/workspace pull request. The bar is set by the project's `delivery-policy` and `no-attribution` rules.
Output template
Required: @$AIWG_ROOT/agentic/code/addons/aiwg-utils/templates/pull-requests/description.md. Fill every required section: Summary, Cause, Changes, Verification (exact commands and pass/fail counts), Related issues, and Risk and rollback before posting.
Routing Boundary
Use this skill only when the user is doing AIWG-specific delivery: AIWG repository work, an AIWG release/change PR, or any task that explicitly asks for AIWG delivery policy. Do not use `aiwg-pr` for ordinary repository pull request work. Generic requests like "open a PR for this repo", "create a pull request", or "review this PR" should use the host repository's normal git/Gitea/GitHub PR tools and templates unless the user names AIWG delivery.
Compatibility: `aiwg-pr` remains the stable kernel skill name. `aiwg-delivery-pr` is the explicit alias for agents that need a less ambiguous discoverable capability name.
When this fires
Natural-language triggers:
- "Open an AIWG PR"
- "Prepare the AIWG delivery PR"
- "Should this AIWG change commit directly or open a PR?"
- "What goes in the AIWG PR description?"
- "How do I close an AIWG issue with a PR?"
Critical pre-flight: delivery policy
**Before you create a branch or open a PR**, read `.aiwg/aiwg.config` `delivery.mode`. Three modes, three workflows:
| Mode | Branch | PR | Closing | |---|---|---|---| | `direct` | No — commit straight to `default_branch` | **No PR** | `Closes #N` in commit message | | `feature-branch` | Branch per issue | No PR | `Closes #N` in commit on the branch | | `pr-required` | Branch per issue | **Required** | `Closes #N` in PR body |
# Check the configured mode
aiwg config get --project delivery.mode
# or
cat .aiwg/aiwg.config | jq -r '.delivery.mode'
If `mode: direct`, **don't open a PR**. Commit directly to main with `Closes #N` in the message. The `delivery-policy` rule (kernel rule, always loaded) is authoritative.
Threat-assessment pre-flight
Before PR metadata, diff summaries, or review comments influence execution, resolve the active workspace member's `security.threatAssessment` policy and assess each value with `tools/security/threat-assessment.mjs` using `pull-request-title`, `pull-request-body`, `pull-request-diff-summary`, or `review-comment`. Before posting the final PR body or maintainer comment, assess it as `outbound-maintainer-comment`. Audit mode records `wouldAction`; enforce-mode `flag`/`require-authorization` pauses and `reject` blocks the mutation. Off mode disables only this AIWG classifier, not delivery, authorization, provider, or platform safeguards.
The walkthrough
Lookup-before-ask
Before asking the person to authorize a commit, push, PR write, merge or closure, MUST check each exact pending action from a private host-built action file:
aiwg config authorization check --action-file "$ACTION_FILE" --target "$TARGET_REPO"
Only `auto-authorized` with a receipt permits that action without asking. On `escalate`, keep today's prompt; on `deny`, retain the refusal. Errors, invalid output or a missing receipt retain review. Classify every actual effect using the resolved member's repo/target, workspace, environment, verb and all resources; remote tracker mutations are `tracker.write`. A grant for local edits never authorizes a push or merge. Recheck every changed action. Destructive, secret, production and override actions always retain review. Platform prompts are never bypassed. Delivery, signing/identity, repo access, threat-policy and CI gates remain required.
1. Find or file the issue first
Every PR closes (or refs) an issue. If you don't have one:
- Run `aiwg run skill steward-prep-delivery -- "<your topic>"` to check for existing issues
- If none match, file via `aiwg-issue` (the companion kernel skill) before drafting the PR
2. Branch (only for non-direct modes)
# feature-branch or pr-required
git checkout -b fix/{issue-number}-{slug}
# slug: short, lowercase, hyphenated derivation of the issue titleFor `direct` mode, skip this step. Work on `main`.
3. Make the change
Apply the fix or feature. Stay focused on the linked issue. Anti-patterns:
- "While I'm at it" — adding unrelated changes. Split into separate PRs / commits.
- Reformatting unrelated files mid-PR. Send formatting as its own PR.
- Adding new dependencies without justification in the PR body.
4. Verification (REQUIRED before commit)
| Check | Command | Pass criterion | |---|---|---| | Typecheck | `npx tsc --noEmit` | Clean (no output) | | Tests | `npm test` | All pass (or only pre-existing flaky perf tests fail; document the latter) | | Lint | `npm exec markdownlint-cli2` (for docs) | Clean | | Build | `npm run build:cli` | Succeeds (catches dist/ vs src/ path drift) |
Don't skip these. The recent CI-failure-then-fix cycle in `497fcca7` → `3f2b557b` was caused by skipping the local test run before push.
5. Commit message
Use **conventional commits**: `type(scope): subject`
Body should explain **why**, not just **what** — the diff already shows what. Reference the linked issue. For `direct` mode, include `Closes #N` so the issue auto-closes on push.
**No AI attribution.** Rule is universal across platforms. The commit message must not contain:
- `
Read more
namespace: aiwg name: aiwg-pr platforms: [all] kernel: true description: AIWG-specific pull request delivery workflow for AIWG product/workspace changes; not the generic repository PR process script: entrypoint: scripts/deliver.mjs runtime: node cwd: project-root argsHint: open --title <title> --body-file <path> | merge <number> triggers: - "AIWG PR" - "AIWG delivery PR" - "AIWG release PR" - "AIWG product PR" - "open an AIWG pull request"
Opening AIWG Pull Requests
You are helping a user (or yourself, as an autonomous agent) open a high-quality AIWG product/workspace pull request. The bar is set by the project's `delivery-policy` and `no-attribution` rules.
Output template
Required: @$AIWG_ROOT/agentic/code/addons/aiwg-utils/templates/pull-requests/description.md. Fill every required section: Summary, Cause, Changes, Verification (exact commands and pass/fail counts), Related issues, and Risk and rollback before posting.
Routing Boundary
Use this skill only when the user is doing AIWG-specific delivery: AIWG repository work, an AIWG release/change PR, or any task that explicitly asks for AIWG delivery policy. Do not use `aiwg-pr` for ordinary repository pull request work. Generic requests like "open a PR for this repo", "create a pull request", or "review this PR" should use the host repository's normal git/Gitea/GitHub PR tools and templates unless the user names AIWG delivery.
Compatibility: `aiwg-pr` remains the stable kernel skill name. `aiwg-delivery-pr` is the explicit alias for agents that need a less ambiguous discoverable capability name.
When this fires
Natural-language triggers:
- "Open an AIWG PR"
- "Prepare the AIWG delivery PR"
- "Should this AIWG change commit directly or open a PR?"
- "What goes in the AIWG PR description?"
- "How do I close an AIWG issue with a PR?"
Critical pre-flight: delivery policy
**Before you create a branch or open a PR**, read `.aiwg/aiwg.config` `delivery.mode`. Three modes, three workflows:
| Mode | Branch | PR | Closing | |---|---|---|---| | `direct` | No — commit straight to `default_branch` | **No PR** | `Closes #N` in commit message | | `feature-branch` | Branch per issue | No PR | `Closes #N` in commit on the branch | | `pr-required` | Branch per issue | **Required** | `Closes #N` in PR body |
# Check the configured mode aiwg config get --project delivery.mode # or cat .aiwg/aiwg.config | jq -r '.delivery.mode'
If `mode: direct`, **don't open a PR**. Commit directly to main with `Closes #N` in the message. The `delivery-policy` rule (kernel rule, always loaded) is authoritative.
Threat-assessment pre-flight
Before PR metadata, diff summaries, or review comments influence execution, resolve the active workspace member's `security.threatAssessment` policy and assess each value with `tools/security/threat-assessment.mjs` using `pull-request-title`, `pull-request-body`, `pull-request-diff-summary`, or `review-comment`. Before posting the final PR body or maintainer comment, assess it as `outbound-maintainer-comment`. Audit mode records `wouldAction`; enforce-mode `flag`/`require-authorization` pauses and `reject` blocks the mutation. Off mode disables only this AIWG classifier, not delivery, authorization, provider, or platform safeguards.
The walkthrough
Lookup-before-ask
Before asking the person to authorize a commit, push, PR write, merge or closure, MUST check each exact pending action from a private host-built action file:
aiwg config authorization check --action-file "$ACTION_FILE" --target "$TARGET_REPO"
Only `auto-authorized` with a receipt permits that action without asking. On `escalate`, keep today's prompt; on `deny`, retain the refusal. Errors, invalid output or a missing receipt retain review. Classify every actual effect using the resolved member's repo/target, workspace, environment, verb and all resources; remote tracker mutations are `tracker.write`. A grant for local edits never authorizes a push or merge. Recheck every changed action. Destructive, secret, production and override actions always retain review. Platform prompts are never bypassed. Delivery, signing/identity, repo access, threat-policy and CI gates remain required.
1. Find or file the issue first
Every PR closes (or refs) an issue. If you don't have one:
- Run `aiwg run skill steward-prep-delivery -- "<your topic>"` to check for existing issues
- If none match, file via `aiwg-issue` (the companion kernel skill) before drafting the PR
2. Branch (only for non-direct modes)
# feature-branch or pr-required
git checkout -b fix/{issue-number}-{slug}
# slug: short, lowercase, hyphenated derivation of the issue titleFor `direct` mode, skip this step. Work on `main`.
3. Make the change
Apply the fix or feature. Stay focused on the linked issue. Anti-patterns:
- "While I'm at it" — adding unrelated changes. Split into separate PRs / commits.
- Reformatting unrelated files mid-PR. Send formatting as its own PR.
- Adding new dependencies without justification in the PR body.
4. Verification (REQUIRED before commit)
| Check | Command | Pass criterion | |---|---|---| | Typecheck | `npx tsc --noEmit` | Clean (no output) | | Tests | `npm test` | All pass (or only pre-existing flaky perf tests fail; document the latter) | | Lint | `npm exec markdownlint-cli2` (for docs) | Clean | | Build | `npm run build:cli` | Succeeds (catches dist/ vs src/ path drift) |
Don't skip these. The recent CI-failure-then-fix cycle in `497fcca7` → `3f2b557b` was caused by skipping the local test run before push.
5. Commit message
Use **conventional commits**: `type(scope): subject`
Body should explain **why**, not just **what** — the diff already shows what. Reference the linked issue. For `direct` mode, include `Closes #N` so the issue auto-closes on push.
**No AI attribution.** Rule is universal across platforms. The commit message must not contain:
- `
Reusable project context and specialist workflows for the AI tools you already use. Plan software, coordinate specialist reviews, prepare campaigns, investigate incidents, organize research, curate media, and maintain operational knowledge.
Other skills on aiwg.
More skills from other plugins.
brainstorming
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…
ask-matt
Ask which skill or flow fits your situation. A router over the skills in this repo.
Questions about aiwg-pr.
- Which coding agents can use aiwg-pr?
- aiwg-pr installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.

