agentic/code/addons/aiwg-utils/skills/aiwg-pr/SKILL.md
AIWG-specific pull request delivery workflow for AIWG product/workspace changes; not the generic repository PR process
npx skillsauth add jmagly/aiwg aiwg-prInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
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.
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.
Natural-language triggers:
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.
Every PR closes (or refs) an issue. If you don't have one:
aiwg run skill steward-prep-delivery -- "<your topic>" to check for existing issuesaiwg-issue (the companion kernel skill) before drafting the PR# feature-branch or pr-required
git checkout -b fix/{issue-number}-{slug}
# slug: short, lowercase, hyphenated derivation of the issue title
For direct mode, skip this step. Work on main.
Apply the fix or feature. Stay focused on the linked issue. Anti-patterns:
| 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.
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:
Co-Authored-By: Claude <…> (or any AI tool)Generated with [Claude Code] / "Generated by Codex" / "Written by GitHub Copilot"The AI is a tool. Tools don't sign their output.
Example commit (per the recent #1261/#1262/#1263 fix):
fix(steward,deploy): repair capability matrix loader, schema, and Claude command stubs
Three stacked bugs from the hermes-agent tester report (jmagly#108–#112,
roctinam #1264–#1268) plus filing infrastructure (#1269).
[multi-paragraph why explaining each bug...]
Verification:
- npx tsc --noEmit clean
- npm test — 6306 pass, 1 pre-existing flaky perf test
- Manual: aiwg steward capabilities --provider claude-code now works
Closes #1261
Closes #1262
Closes #1263
# For direct mode
git push origin main
# For feature-branch / pr-required
git push origin fix/{issue-number}-{slug}
Use the template at .gitea/pull_request_template.md (or .github/pull_request_template.md). Required sections:
Closes #N (or Refs #N)The body should be agent-readable: clear sections, specific paths, no marketing speak.
A commit isn't done until CI is green. After push:
# Check the latest run on origin
aiwg run skill aiwg-pr -- check-ci
# (or manually inspect the tracker)
AIWG CI runs ~2 minutes. Wait for it. If it fails:
|| true, no continue-on-error: true, no test deletion — see anti-laziness and dev-pipeline-safety rules)Never leave main in a red state.
Closes #N--no-verify or --no-gpg-sign — never bypass hooks. Fix the underlying issue.continue-on-error: true on tests — never silence the smoke detector. See dev-pipeline-safety.anti-laziness Rule 9: "real fix over workaround."Closes #N in a PR body for direct mode — wrong; use the commit message instead.If the verification gates fail and you can't fix them in 3 attempts, escalate per the anti-laziness recovery protocol. Don't take destructive shortcuts (skip tests, weaken assertions, etc.).
aiwg-issue (filing issues), steward-prep-delivery (interactive walkthrough), issue-create (low-level filing), issue-auto-sync (commit↔issue linking), address-issues (issue-driven loops).gitea/pull_request_template.md, .github/pull_request_template.mdCONTRIBUTING.md (full contributor guide)delivery-policy (kernel), no-attribution (kernel), anti-laziness, dev-pipeline-safety, ci-green-before-donedata-ai
Report which research-corpus radar sidecars are overdue for refresh. Computes staleness (days since last refresh vs the cadence window) for every radar, sorted most-overdue-first. Runs via `aiwg corpus radar-status`.
data-ai
Aggregate research-corpus radar sidecars into a corpus or per-cluster freshness report — totals, overdue count, per-cluster / per-GRADE / per-trajectory breakdowns, an overdue table, and per-radar rationale snippets. Runs via `aiwg corpus radar-report`.
testing
Scaffold radar/freshness sidecars for research-corpus REFs. Pulls title/authors from the citation sidecar and GRADE from the analysis doc, defaults the refresh cadence from GRADE and the cluster from a corpus-local map, and stamps documentation/radar/REF-XXX-radar.md. Runs via `aiwg corpus radar-init`.
data-ai
Compute an entity's publication trajectory — per-year paper counts, topic drift, hot-streak detection (≥3 consecutive A-grade years), and career phase. Runs via `aiwg corpus profile-temporal`.