@starlein/paperclip-plugin-company-wizard 0.4.22 → 0.6.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +120 -0
- package/README.md +29 -15
- package/dist/manifest.js +24 -9
- package/dist/manifest.js.map +2 -2
- package/dist/ui/index.css +636 -589
- package/dist/ui/index.css.map +2 -2
- package/dist/ui/index.js +365 -60
- package/dist/ui/index.js.map +4 -4
- package/dist/worker.js +22374 -5375
- package/dist/worker.js.map +4 -4
- package/docs/PAPERCLIP-COMPATIBILITY.md +66 -0
- package/package.json +10 -10
- package/templates/ai-wizard/interview-system.md +2 -0
- package/templates/ai-wizard/single-shot-system.md +2 -0
- package/templates/bootstrap-instructions.md +3 -3
- package/templates/modules/accessibility/agents/engineer/skills/accessibility-audit.fallback.md +2 -2
- package/templates/modules/accessibility/agents/ui-designer/skills/accessibility-audit.fallback.md +2 -2
- package/templates/modules/accessibility/module.meta.json +1 -1
- package/templates/modules/accessibility/skills/accessibility-audit.bar.md +1 -1
- package/templates/modules/accessibility/skills/accessibility-audit.md +1 -1
- package/templates/modules/architecture-plan/agents/ceo/skills/architecture-plan.bar.md +2 -2
- package/templates/modules/architecture-plan/agents/ceo/skills/architecture-plan.fallback.md +2 -2
- package/templates/modules/architecture-plan/agents/engineer/skills/design-system.fallback.md +2 -2
- package/templates/modules/architecture-plan/agents/ui-designer/skills/architecture-plan.md +2 -2
- package/templates/modules/architecture-plan/agents/ui-designer/skills/design-system.md +3 -3
- package/templates/modules/architecture-plan/module.meta.json +2 -2
- package/templates/modules/architecture-plan/skills/architecture-plan.bar.md +1 -1
- package/templates/modules/architecture-plan/skills/architecture-plan.md +3 -3
- package/templates/modules/architecture-plan/skills/design-system.md +5 -5
- package/templates/modules/auto-assign/README.md +4 -4
- package/templates/modules/auto-assign/agents/ceo/heartbeat-section.md +1 -1
- package/templates/modules/auto-assign/agents/ceo/skills/auto-assign.fallback.md +6 -6
- package/templates/modules/auto-assign/agents/product-owner/heartbeat-section.md +1 -1
- package/templates/modules/auto-assign/module.meta.json +1 -1
- package/templates/modules/auto-assign/skills/auto-assign.md +3 -2
- package/templates/modules/backlog/agents/ceo/heartbeat-section.md +1 -1
- package/templates/modules/backlog/agents/ceo/skills/backlog-health.fallback.md +9 -9
- package/templates/modules/backlog/agents/product-owner/heartbeat-section.md +1 -1
- package/templates/modules/backlog/docs/backlog-process.md +36 -21
- package/templates/modules/backlog/docs/backlog-template.md +10 -9
- package/templates/modules/backlog/module.meta.json +2 -2
- package/templates/modules/backlog/skills/backlog-health.bar.md +3 -3
- package/templates/modules/backlog/skills/backlog-health.md +16 -15
- package/templates/modules/brand-identity/agents/ceo/skills/brand-identity.fallback.md +2 -2
- package/templates/modules/brand-identity/agents/cmo/skills/brand-identity.fallback.md +2 -2
- package/templates/modules/brand-identity/module.meta.json +1 -1
- package/templates/modules/brand-identity/skills/brand-identity.bar.md +1 -1
- package/templates/modules/brand-identity/skills/brand-identity.md +3 -3
- package/templates/modules/build-api/skills/api-design.bar.md +1 -1
- package/templates/modules/build-api/skills/api-design.md +1 -1
- package/templates/modules/ci-cd/agents/devops/skills/ci-cd.md +1 -1
- package/templates/modules/ci-cd/agents/engineer/skills/ci-cd.fallback.md +2 -2
- package/templates/modules/ci-cd/module.meta.json +1 -1
- package/templates/modules/ci-cd/skills/ci-cd.bar.md +1 -1
- package/templates/modules/ci-cd/skills/ci-cd.md +6 -4
- package/templates/modules/codebase-onboarding/agents/ceo/skills/codebase-audit.fallback.md +5 -5
- package/templates/modules/codebase-onboarding/module.meta.json +1 -1
- package/templates/modules/codebase-onboarding/skills/codebase-audit.bar.md +1 -1
- package/templates/modules/codebase-onboarding/skills/codebase-audit.md +2 -2
- package/templates/modules/competitive-intel/agents/ceo/skills/competitive-tracking.fallback.md +2 -2
- package/templates/modules/competitive-intel/agents/cmo/skills/competitive-tracking.fallback.md +2 -2
- package/templates/modules/competitive-intel/agents/customer-success/skills/competitive-tracking.md +2 -2
- package/templates/modules/competitive-intel/agents/product-owner/skills/competitive-tracking.fallback.md +2 -2
- package/templates/modules/competitive-intel/module.meta.json +1 -1
- package/templates/modules/competitive-intel/skills/competitive-tracking.bar.md +2 -2
- package/templates/modules/competitive-intel/skills/competitive-tracking.md +3 -3
- package/templates/modules/dependency-management/agents/engineer/skills/dependency-audit.fallback.md +2 -2
- package/templates/modules/dependency-management/agents/security-engineer/skills/dependency-audit.fallback.md +2 -2
- package/templates/modules/dependency-management/module.meta.json +2 -2
- package/templates/modules/dependency-management/skills/dependency-audit.md +2 -2
- package/templates/modules/game-design/agents/ceo/skills/game-design.fallback.md +1 -1
- package/templates/modules/game-design/agents/engineer/skills/game-design.fallback.md +1 -1
- package/templates/modules/game-design/agents/game-designer/skills/game-design.md +2 -2
- package/templates/modules/game-design/module.meta.json +1 -1
- package/templates/modules/game-design/skills/audio-design.fallback.md +2 -2
- package/templates/modules/game-design/skills/audio-design.md +3 -3
- package/templates/modules/game-design/skills/game-design.bar.md +1 -1
- package/templates/modules/game-design/skills/game-design.md +3 -3
- package/templates/modules/game-design/skills/level-design.fallback.md +2 -2
- package/templates/modules/game-design/skills/level-design.md +4 -4
- package/templates/modules/github-repo/agents/engineer/skills/git-workflow.md +15 -14
- package/templates/modules/github-repo/docs/git-workflow.md +7 -7
- package/templates/modules/github-repo/module.meta.json +1 -1
- package/templates/modules/lean-delivery/docs/lean-delivery.md +15 -0
- package/templates/modules/lean-delivery/module.meta.json +6 -0
- package/templates/modules/market-analysis/agents/ceo/skills/market-analysis.fallback.md +2 -2
- package/templates/modules/market-analysis/agents/cmo/skills/market-analysis.fallback.md +2 -2
- package/templates/modules/market-analysis/agents/product-owner/skills/market-analysis.fallback.md +2 -2
- package/templates/modules/market-analysis/agents/ux-researcher/skills/market-analysis.md +2 -2
- package/templates/modules/market-analysis/module.meta.json +1 -1
- package/templates/modules/market-analysis/skills/market-analysis.bar.md +1 -1
- package/templates/modules/market-analysis/skills/market-analysis.md +2 -2
- package/templates/modules/monitoring/agents/devops/skills/monitoring.md +1 -1
- package/templates/modules/monitoring/agents/engineer/skills/monitoring.fallback.md +2 -2
- package/templates/modules/monitoring/module.meta.json +1 -1
- package/templates/modules/monitoring/skills/monitoring.bar.md +1 -1
- package/templates/modules/monitoring/skills/monitoring.md +3 -3
- package/templates/modules/pr-review/README.md +10 -12
- package/templates/modules/pr-review/agents/code-reviewer/skills/code-review.md +16 -13
- package/templates/modules/pr-review/agents/devops/skills/infra-review.md +2 -2
- package/templates/modules/pr-review/agents/engineer/skills/pr-workflow.md +36 -26
- package/templates/modules/pr-review/agents/product-owner/skills/product-review.md +8 -8
- package/templates/modules/pr-review/agents/qa/skills/qa-review.md +10 -10
- package/templates/modules/pr-review/agents/security-engineer/skills/pr-security-review.md +5 -4
- package/templates/modules/pr-review/agents/ui-designer/skills/design-review.md +4 -4
- package/templates/modules/pr-review/agents/ux-researcher/skills/ux-review.md +3 -3
- package/templates/modules/pr-review/docs/pr-conventions.md +22 -26
- package/templates/modules/pr-review/module.meta.json +2 -2
- package/templates/modules/release-management/agents/ceo/skills/release-process.fallback.md +2 -2
- package/templates/modules/release-management/agents/engineer/skills/release-process.fallback.md +2 -2
- package/templates/modules/release-management/module.meta.json +3 -3
- package/templates/modules/release-management/skills/release-process.md +2 -2
- package/templates/modules/security-audit/agents/devops/skills/security-review.fallback.md +2 -2
- package/templates/modules/security-audit/agents/devops/skills/threat-model.fallback.md +2 -2
- package/templates/modules/security-audit/agents/engineer/skills/security-review.fallback.md +2 -2
- package/templates/modules/security-audit/agents/engineer/skills/threat-model.fallback.md +2 -2
- package/templates/modules/security-audit/module.meta.json +2 -2
- package/templates/modules/security-audit/skills/security-review.bar.md +1 -1
- package/templates/modules/security-audit/skills/security-review.md +1 -1
- package/templates/modules/security-audit/skills/threat-model.bar.md +1 -1
- package/templates/modules/security-audit/skills/threat-model.md +3 -3
- package/templates/modules/stall-detection/agents/ceo/heartbeat-section.md +1 -1
- package/templates/modules/stall-detection/agents/ceo/skills/stall-detection.md +19 -16
- package/templates/modules/tech-stack/agents/ceo/skills/tech-stack.fallback.md +2 -2
- package/templates/modules/tech-stack/module.meta.json +1 -1
- package/templates/modules/tech-stack/skills/tech-stack.bar.md +1 -1
- package/templates/modules/tech-stack/skills/tech-stack.md +2 -2
- package/templates/modules/triage/agents/ceo/skills/issue-triage.fallback.md +1 -1
- package/templates/modules/triage/agents/engineer/skills/issue-triage.fallback.md +1 -1
- package/templates/modules/triage/skills/issue-triage.md +1 -1
- package/templates/modules/user-testing/agents/ceo/skills/user-testing.fallback.md +2 -2
- package/templates/modules/user-testing/agents/product-owner/skills/user-testing.fallback.md +2 -2
- package/templates/modules/user-testing/agents/qa/skills/user-testing.md +2 -2
- package/templates/modules/user-testing/agents/ux-researcher/skills/user-testing.fallback.md +2 -2
- package/templates/modules/user-testing/module.meta.json +1 -1
- package/templates/modules/user-testing/skills/user-testing.md +2 -2
- package/templates/modules/vision-workshop/agents/ceo/skills/vision-workshop.md +2 -2
- package/templates/modules/vision-workshop/agents/ux-researcher/skills/vision-workshop.md +1 -1
- package/templates/modules/vision-workshop/module.meta.json +1 -1
- package/templates/modules/website-relaunch/agents/ui-designer/skills/site-audit.md +1 -1
- package/templates/modules/website-relaunch/module.meta.json +7 -7
- package/templates/modules/website-relaunch/skills/design-ingestion.md +1 -1
- package/templates/modules/website-relaunch/skills/site-audit.md +1 -1
- package/templates/presets/build-game/preset.meta.json +6 -6
- package/templates/presets/repo-maintenance/preset.meta.json +20 -21
- package/templates/roles/audio-designer/HEARTBEAT.md +1 -1
- package/templates/roles/ceo/AGENTS.md +2 -0
- package/templates/roles/ceo/HEARTBEAT.md +1 -1
- package/templates/roles/ceo/role.meta.json +1 -1
- package/templates/roles/cmo/HEARTBEAT.md +1 -1
- package/templates/roles/code-reviewer/AGENTS.md +3 -1
- package/templates/roles/code-reviewer/HEARTBEAT.md +1 -1
- package/templates/roles/cto/HEARTBEAT.md +1 -1
- package/templates/roles/customer-success/HEARTBEAT.md +1 -1
- package/templates/roles/devops/HEARTBEAT.md +1 -1
- package/templates/roles/engineer/AGENTS.md +3 -3
- package/templates/roles/engineer/HEARTBEAT.md +2 -2
- package/templates/roles/game-artist/HEARTBEAT.md +1 -1
- package/templates/roles/game-designer/HEARTBEAT.md +1 -1
- package/templates/roles/level-designer/HEARTBEAT.md +1 -1
- package/templates/roles/product-owner/AGENTS.md +1 -1
- package/templates/roles/product-owner/HEARTBEAT.md +2 -2
- package/templates/roles/qa/HEARTBEAT.md +4 -4
- package/templates/roles/security-engineer/AGENTS.md +2 -2
- package/templates/roles/security-engineer/HEARTBEAT.md +1 -1
- package/templates/roles/technical-writer/HEARTBEAT.md +1 -1
- package/templates/roles/ui-designer/HEARTBEAT.md +1 -1
- package/templates/roles/ux-researcher/HEARTBEAT.md +1 -1
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
# Module: pr-review
|
|
2
2
|
|
|
3
|
-
Adds
|
|
3
|
+
Adds PR-based review with role-based executionPolicy stages. Select the optional `lean-delivery` module during setup to use one merge gate and risk-triggered specialist evidence instead.
|
|
4
4
|
|
|
5
5
|
## What it adds
|
|
6
6
|
|
|
7
|
-
- **Core
|
|
8
|
-
- **Extended roles** *(when present)*: QA
|
|
9
|
-
- **Shared docs**: `docs/pr-conventions.md
|
|
7
|
+
- **Core role**: Code Reviewer (the final executionPolicy stage and non-author merge gate)
|
|
8
|
+
- **Extended roles** *(when present)*: QA review, Security review for security-relevant changes, then Product Owner approval; UI/UX and DevOps advisory. Lean delivery replaces QA/Security/Product stages with triggered evidence before the merge gate.
|
|
9
|
+
- **Shared docs**: `docs/pr-conventions.md`. Only selecting `lean-delivery` adds the binding `docs/lean-delivery.md` contract.
|
|
10
10
|
- **Engineer skill**: Feature-branch + PR workflow (overrides direct-to-base-ref from `github-repo`)
|
|
11
11
|
- **Reviewer skills**: Review checklists for each reviewer role, plus the Code Reviewer's merge-gate skill
|
|
12
12
|
|
|
@@ -19,17 +19,15 @@ Adds a PR-based review workflow with dedicated reviewer roles.
|
|
|
19
19
|
1. Engineer resolves the project/worktree base ref first from `heartbeat-context` / project workspace metadata and uses it exactly as configured
|
|
20
20
|
2. Engineer creates a feature branch (`<prefix>-<N>/<short-description>`) from that base
|
|
21
21
|
3. Engineer opens a PR with Conventional Commits title, issue reference, and the matching base branch
|
|
22
|
-
4. Engineer sets the
|
|
23
|
-
5.
|
|
24
|
-
6.
|
|
25
|
-
7.
|
|
26
|
-
8.
|
|
27
|
-
9. DevOps reviews infrastructure impact when explicitly added as a stage
|
|
28
|
-
10. The Code Reviewer (the non-author merge gate) merges when all stages are approved (no `changes_requested` outstanding), confirms the PR landed on the correct base, leaves any isolated execution workspace reusable, and only then records the final approval / closes the issue
|
|
22
|
+
4. Engineer sets the selected `executionPolicy`: standard QA → Security (when triggered) → Product → Code Reviewer, omitting absent roles; lean delivery uses only the Code Reviewer. The author is never a participant. Without an eligible non-author Code Reviewer, set no stages and self-merge.
|
|
23
|
+
5. Standard review stages advance through native verdicts. In lean delivery, acceptance is frozen before implementation and triggered specialists return bounded evidence to the implementation owner before review begins, rather than forming a serial chain.
|
|
24
|
+
6. The Code Reviewer verifies the exact head/base and required company CI. Green CI is authoritative, so only a focused risk check is added; the complete local gate runs once only when CI is unavailable.
|
|
25
|
+
7. Corrections return to the implementation owner on the same issue, branch, and PR. Technical defects never route to the board user.
|
|
26
|
+
8. The Code Reviewer merges, confirms the target base, leaves workspace lifecycle to Paperclip, then records approval / closes the issue.
|
|
29
27
|
|
|
30
28
|
## Handover mechanism
|
|
31
29
|
|
|
32
|
-
The issue's native `executionPolicy`
|
|
30
|
+
The issue's native `executionPolicy` ends with a Code Reviewer approval/merge stage. In standard mode, QA/Security/Product record verdicts only on their active stages and Paperclip wakes the next participant. In lean delivery, those specialists return the issue by assignment to the implementation owner before the sole merge stage. Evidence and corrections stay on the same originating issue and PR. Board interactions are reserved for genuine human decisions.
|
|
33
31
|
|
|
34
32
|
## Best for
|
|
35
33
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Skill: Code Review (final merge gate)
|
|
2
2
|
|
|
3
|
-
You are the **final merge gate** for pull requests.
|
|
3
|
+
You are the **final non-author merge gate** for pull requests. Follow the selected workflow in `docs/pr-conventions.md`: standard review can include QA, Security, and Product stages before you; only when `docs/lean-delivery.md` exists are you the sole default stage with triggered specialist evidence. You verify the exact reviewed head, merge the PR, preserve its execution workspace for Paperclip lifecycle handling, and only then record `approved` — which closes the issue to `done`.
|
|
4
4
|
|
|
5
5
|
## Why you, and not the engineer
|
|
6
6
|
|
|
@@ -8,14 +8,14 @@ Paperclip's runtime **excludes the issue's original executor (the author) from e
|
|
|
8
8
|
|
|
9
9
|
## What to verify before merging
|
|
10
10
|
|
|
11
|
-
1. **Hard gate —
|
|
12
|
-
- **
|
|
13
|
-
- **CI
|
|
14
|
-
- **No company-owned CI/CD:**
|
|
15
|
-
- **Base-branch-red (company-owned CI only):** when the company's own base-branch CI is red, a feature PR's CI is red from the inherited baseline — not from the PR's diff. Detect base-red per
|
|
16
|
-
2. **
|
|
17
|
-
3. **Correctness pass:** read the diff. Does it
|
|
18
|
-
4. **
|
|
11
|
+
1. **Hard gate — exact-head verification (never skip):**
|
|
12
|
+
- **Company-owned CI available:** verify the PR head SHA, target base, and every required company check on that exact head. Green CI is authoritative. Run only the smallest independent check needed for a risky or unclear part of the diff; do not repeat the complete lint/test/typecheck/build suite.
|
|
13
|
+
- **Company-owned CI unavailable or required checks not yet established:** run the complete local lint/test/typecheck/build gate once and record the real commands and results. Pending or failed required checks are not unavailable CI: wait for or repair them instead of bypassing them with local output. Branch-protection requirements remain binding even for pre-existing checks. A merge without cited verification is invalid.
|
|
14
|
+
- **No company-owned CI/CD:** existing required checks and repository rules remain binding, regardless of who configured them. Only optional, non-required checks are advisory. Investigate signals of a defect in the diff, and run the complete local gate when no required CI exists. Never weaken protections or bypass a failing required check to merge.
|
|
15
|
+
- **Base-branch-red (company-owned CI only):** when the company's own base-branch CI is red, a feature PR's CI is red from the inherited baseline — not from the PR's diff. Detect base-red per `docs/git-workflow.md` → *Base-branch-red deadlock* (compare the PR's failing checks to the base commit's own checks). Do not merge a feature PR on a red company-owned base — record `changes_requested` citing `BASE-BRANCH-RED` and route back with "waiting-on-baseline". The single baseline-restore PR (`fix(ci): restore base CI`) may merge under the narrow exception in `docs/git-workflow.md` → *Narrow exception*: scoped diff + local executed verification that the fix reduces the failure set + cited base-sha check set. The exception replaces CI-green with local-executed-verification plus diff-scope proof; it never applies to feature PRs.
|
|
16
|
+
2. **Triggered evidence:** consume any bounded QA, Security, UX, Product, or DevOps evidence already recorded on the originating issue. Do not replay specialists whose finding was already resolved.
|
|
17
|
+
3. **Correctness pass:** read the entire diff and batch all reproducible defects into one verdict. Does it meet acceptance criteria? Are edge cases handled? Is it the simplest clear solution? Watch for dead code, exposed secrets, and missing validation at boundaries.
|
|
18
|
+
4. **Repository and base identity:** treat the PR as `owner/repo#number`, verify that repository against the issue's configured project, and verify the target base from `heartbeat-context`. A bare PR number is not globally unique.
|
|
19
19
|
|
|
20
20
|
## Merging
|
|
21
21
|
|
|
@@ -37,20 +37,23 @@ When `gh pr merge` fails or `gh pr view` reports `mergeable: CONFLICTING` / `mer
|
|
|
37
37
|
- Resolve all conflicts, run checks, commit
|
|
38
38
|
- `git push --force-with-lease origin <branch-name>`
|
|
39
39
|
- Leave an issue comment confirming the rebase, then move the issue back to `in_review`
|
|
40
|
-
3. The issue
|
|
40
|
+
3. The same issue and PR return to you. Verify the new exact head and the requested correction; do not replay an already-satisfied specialist chain.
|
|
41
41
|
|
|
42
42
|
## When something is wrong
|
|
43
43
|
|
|
44
|
-
|
|
44
|
+
Your rounds are limited: each agent-initiated `changes_requested` counts toward Paperclip's review-round cap (default 3; `executionPolicy.maxReviewRounds` overrides it). When the cap is reached, Paperclip keeps the stage pending but hands it to the issue's responsible/creating human instead of the engineer, and nothing moves until that person decides (their decision resets the counter). Spend rounds on complete, actionable verdicts rather than incremental nits.
|
|
45
|
+
|
|
46
|
+
If correctness, security, or verification is not satisfied, record one precise `changes_requested` verdict that batches all current findings. That routes the same issue back to the implementation owner (`returnAssignee`) for a fix on the same branch and PR. Never assign the board user as the execution participant for a technical defect, stale base, merge conflict, or missing test. Use a board interaction/approval only for an irreducible product, legal, licensing, or residual-risk decision.
|
|
45
47
|
|
|
46
48
|
## How to comment
|
|
47
49
|
|
|
48
|
-
Post verdicts as GitHub PR comments via a Markdown file (`gh pr comment <number> --body-file <file>`) — never inline `--body "..."` (`\n` stays literal in a double-quoted shell string). Open with a heading stating the verdict (`## ✅ Approved & merged`, `## 🔄 Changes requested`), then the verification you ran or confirmed and the specific points you examined. See
|
|
50
|
+
Post verdicts as GitHub PR comments via a Markdown file (`gh pr comment <number> --body-file <file>`) — never inline `--body "..."` (`\n` stays literal in a double-quoted shell string). Open with a heading stating the verdict (`## ✅ Approved & merged`, `## 🔄 Changes requested`), then the verification you ran or confirmed and the specific points you examined. See `docs/pr-conventions.md` → *Posting PR Bodies & Comments*.
|
|
49
51
|
|
|
50
52
|
## Rules
|
|
51
53
|
|
|
52
54
|
- You are the merge owner. Reviewers before you do not merge; the engineer (author) cannot.
|
|
53
55
|
- "Looks good" is not a verdict. Cite what you examined and the verification you ran or confirmed.
|
|
54
|
-
- Never merge without
|
|
56
|
+
- Never merge without exact-head evidence. With company CI, cite the head SHA and required green checks and avoid duplicating the full suite. Without company CI, cite the complete local gate run once. The baseline-restore exception remains narrow; a feature PR on a red company base never merges under it.
|
|
55
57
|
- Block on real concerns via `changes_requested` rather than merging around them.
|
|
56
58
|
- Never add the issue's author/executor as a participant in any stage — you are the non-author gate that lands the work.
|
|
59
|
+
- Do not create review-only, evidence-only, queue-drain, status-repair, or workspace-cleanup issues. Keep required delivery work on the originating issue and PR; create a follow-up only for independently deliverable, non-blocking work outside current acceptance criteria.
|
|
@@ -16,8 +16,8 @@ You review PRs for infrastructure impact, performance, security, and operational
|
|
|
16
16
|
|
|
17
17
|
1. When a PR changes deployments, configs, dependencies, or system behavior, review it for the infra concerns below.
|
|
18
18
|
2. Focus on infrastructure, deployment, runtime security, observability, and rollback risk.
|
|
19
|
-
3.
|
|
20
|
-
4. If you find a concern that should block the merge, flag it as **blocking-severity**
|
|
19
|
+
3. Record the verdict on the assigned originating issue. Optionally mirror it as an **advisory** GitHub PR comment — you are not a blocking review stage, so do not record a stage verdict (no `approved`/`changes_requested` on the issue's executionPolicy). Write the comment to a Markdown file (open with a heading like `## ✅ Approved` or `## 🔄 Changes requested`, then the details) and run `gh pr comment <number> --body-file <file>`. Never use inline `--body "..."`: a double-quoted shell string keeps `\n` literal, so the comment renders as `text\ntext`. See `docs/pr-conventions.md` → *Posting PR Bodies & Comments*.
|
|
20
|
+
4. If you find a concern that should block the merge, flag it as **blocking-severity** and name the correction the implementation owner must make on the same PR. Reassign the originating issue to the implementation owner in the same heartbeat on both pass and fail; they decide whether to fix or open the merge gate. You do not block the merge yourself.
|
|
21
21
|
|
|
22
22
|
## Rules
|
|
23
23
|
|
|
@@ -1,18 +1,28 @@
|
|
|
1
1
|
# Skill: PR Workflow
|
|
2
2
|
|
|
3
|
-
When this skill is active, you work in feature branches and open PRs instead of committing directly to the base ref. Follow the conventions in
|
|
3
|
+
When this skill is active, you work in feature branches and open PRs instead of committing directly to the base ref. Follow the conventions in `docs/pr-conventions.md` (paths in this skill are relative to your working directory, the company workspace).
|
|
4
|
+
|
|
5
|
+
**Select the workflow from company docs:** if `docs/lean-delivery.md` exists, follow its one-gate workflow. Otherwise use standard stages: QA review when present, Security review only for security-relevant changes, Product Owner approval when present, then the non-author Code Reviewer merge gate. Omit absent roles and the author from every stage.
|
|
6
|
+
|
|
7
|
+
## Acceptance Preflight — before branch or implementation
|
|
8
|
+
|
|
9
|
+
1. Read the originating issue's outcome and acceptance criteria before creating a branch or changing code.
|
|
10
|
+
2. Proceed only when the intended result is concrete and objectively testable. Do not invent a “sensible” success condition for missing or ambiguous product intent.
|
|
11
|
+
3. If acceptance is missing or ambiguous and a Product Owner is present, stop before implementation, comment the exact unresolved decision on the same issue, and assign it to the Product Owner for clarification. The Product Owner updates/finalizes acceptance criteria and returns the same issue to the implementation owner; this is a pre-code handoff, not a post-code executionPolicy stage.
|
|
12
|
+
4. If no Product Owner is present, route acceptance clarification to the CEO backlog-owner fallback. Use a first-class board interaction only when the remaining choice genuinely requires human product, legal, licensing, or residual-risk authority. Do not create a clarification child/courier issue.
|
|
4
13
|
|
|
5
14
|
## Feature Branch Flow
|
|
6
15
|
|
|
7
|
-
1. Resolve the project/worktree base ref from the issue's `heartbeat-context` / project workspace metadata before branching. Use the configured `repoRef`, `defaultRef`, or `executionWorkspacePolicy.workspaceStrategy.baseRef` exactly as Paperclip provides it. Never guess from your shell's current branch and never rewrite the configured ref to `main`, `master`, or `origin/*`. If no base ref is configured anywhere, use the repository's actual default branch — whatever `origin/HEAD` points at, regardless of name (`main`/`master`/`trunk`/…); fall back to `main` then `master` only if the remote advertises no default HEAD. See
|
|
8
|
-
2.
|
|
16
|
+
1. Resolve the project/worktree base ref from the issue's `heartbeat-context` / project workspace metadata before branching. Use the configured `repoRef`, `defaultRef`, or `executionWorkspacePolicy.workspaceStrategy.baseRef` exactly as Paperclip provides it. Never guess from your shell's current branch and never rewrite the configured ref to `main`, `master`, or `origin/*`. If no base ref is configured anywhere, use the repository's actual default branch — whatever `origin/HEAD` points at, regardless of name (`main`/`master`/`trunk`/…); fall back to `main` then `master` only if the remote advertises no default HEAD. See `docs/git-workflow.md` → *Resolving the default branch*. Never hard-code `main`.
|
|
17
|
+
2. Inspect the resolved execution workspace before changing Git state. If Paperclip already supplied a managed issue branch (`executionWorkspace.branchName`), use that branch unchanged and verify `git branch --show-current` matches it. Do not create, rename, or switch branches inside a managed worktree merely to match a naming convention; runtime finalization validates its persisted branch identity. If a different branch is genuinely required, use the supported workspace transition/owner path before continuing.
|
|
18
|
+
Fetch and update the base:
|
|
9
19
|
- external: `git fetch origin`, then branch from the configured base ref
|
|
10
20
|
- local: update from the configured local branch
|
|
11
|
-
3.
|
|
12
|
-
4. **Verify you are on the feature branch** before making changes: `git branch --show-current` must print
|
|
21
|
+
3. When no managed issue branch exists and the checkout is safe for this run, create a feature branch from that base: `git checkout -b <prefix>-<N>/<short-description> <base-ref>`. Otherwise continue on the existing managed issue branch; do not create a second branch.
|
|
22
|
+
4. **Verify you are on the feature branch** before making changes: `git branch --show-current` must print the expected managed or newly created feature branch, not the base ref. Stop and resolve any workspace mismatch before writing code.
|
|
13
23
|
5. Make your changes, commit with Conventional Commits format
|
|
14
24
|
6. **Verify the current branch one more time**, then push: `git push -u origin <branch-name>`. The branch name in the push command must match `git branch --show-current`. Never push the base ref as a feature branch — if `git branch --show-current` returns the base ref name, stop and create a feature branch first.
|
|
15
|
-
7. Open PR against the same resolved base: `gh pr create --base <github-base-branch> --head <branch-name> --title "<type>: <description>" --body-file <file>`. `<github-base-branch>` is the **plain branch name** — strip any `origin/` prefix from the configured base ref (e.g., configured `origin/main` → `--base main`; configured `main` → `--base main`). GitHub does not recognise remote-tracking names. Write the PR body (PR Body Template in
|
|
25
|
+
7. Open PR against the same resolved base: `gh pr create --base <github-base-branch> --head <branch-name> --title "<type>: <description>" --body-file <file>`. `<github-base-branch>` is the **plain branch name** — strip any `origin/` prefix from the configured base ref (e.g., configured `origin/main` → `--base main`; configured `main` → `--base main`). GitHub does not recognise remote-tracking names. Write the PR body (PR Body Template in `docs/pr-conventions.md`) to a file first — never inline `--body "..."` (double-quoted shell string keeps `\n` literal; see *Posting PR Bodies & Comments*).
|
|
16
26
|
8. **Register the PR as a Paperclip work product** so it is visible on the issue and board (creating it on GitHub alone does not surface it in Paperclip):
|
|
17
27
|
```
|
|
18
28
|
POST /api/issues/{issueId}/work-products
|
|
@@ -28,19 +38,19 @@ When this skill is active, you work in feature branches and open PRs instead of
|
|
|
28
38
|
}
|
|
29
39
|
```
|
|
30
40
|
`title` and `url` are required (`url` must be the full PR URL). If the issue runs in an isolated worktree, also pass `"executionWorkspaceId"` from `heartbeat-context`. When the PR later merges, update it with `PATCH /api/work-products/{id}` and `"status": "merged"`.
|
|
31
|
-
9. **
|
|
32
|
-
|
|
33
|
-
-
|
|
34
|
-
-
|
|
35
|
-
-
|
|
36
|
-
- A final `approval` stage with the **Code Reviewer** as participant — the **merge gate**. The Code Reviewer is woken *last*, after every reviewer and the Product Owner have cleared, to satisfy the hard verification gate and merge the PR. If the team has no Code Reviewer, do not set executionPolicy stages at all — use the self-merge path at step 12 instead.
|
|
41
|
+
9. **Resolve advisory evidence before opening review:** in lean delivery, inspect the originating issue and diff for concrete QA, Security, UI/UX, Product, or DevOps triggers. In standard mode, QA/Security/Product use the stages above; only extra advisory checks use this handoff. For each applicable advisory specialist who is present, process one bounded handoff at a time: comment the exact trigger and evidence requested, assign the same originating issue to that specialist, and stop this heartbeat. Assignment is the wake signal because worker agents do not run always-on heartbeats; an `@` mention or passive PR comment is not a wake path. The specialist records pass/fail evidence on the same issue and PR, then always reassigns the originating issue to the implementation owner. On failure, fix the same branch/PR and repeat only the failed evidence; on pass, continue here. Do not create review/courier issues, poll the specialist, or enter `in_review` until every applicable evidence handoff has returned or is explicitly recorded as not applicable.
|
|
42
|
+
10. **Only if an eligible non-author code-reviewer is present on the team:** Set the originating issue's `executionPolicy` to the selected workflow's stages, ending with the Code Reviewer `approval` merge gate. In lean delivery, set exactly one stage. **Set the stages before moving the issue to `in_review` (step 11) — changing stages after review begins is not supported.** If no eligible non-author code-reviewer is available, skip steps 10–12 and use the self-merge path at step 13. A policy without an eligible non-author merge gate stalls permanently.
|
|
43
|
+
- Product acceptance criteria were settled by the Acceptance Preflight before implementation. Product Owner approves intent/scope in standard review, but is not a routine post-code stage in lean delivery.
|
|
44
|
+
- In lean delivery, QA, Security, UI/UX, and DevOps provide bounded evidence only when a concrete risk trigger applies. They are not serial executionPolicy stages and do not hand the issue to one another.
|
|
45
|
+
- The **Code Reviewer** is the final stage (the only stage in lean delivery) and the merge owner. It verifies the exact PR head, required CI, and focused risk evidence, merges the PR, then records `approved` to close the issue.
|
|
37
46
|
- **Never list yourself (the issue's executor) as a participant in any stage.** Paperclip excludes the original executor to prevent self-review; a stage whose only participant is you has no eligible participant and the issue stalls in `in_review` forever (`422 No eligible approval participant is configured for this issue`).
|
|
38
47
|
- Resolve each role to its agentId first (look up active agents), then set the policy on the issue. Include the PR link in an issue comment so reviewers can find it.
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
- **
|
|
48
|
+
11. Move the originating issue to `in_review`.
|
|
49
|
+
12. Wait for the active executionPolicy participant. A `changes_requested` verdict routes the same issue back to you. Address all concrete findings together, push to the same branch and PR, record the new head and focused verification, then resubmit through the selected policy (directly to the Code Reviewer in lean delivery). Never open a replacement PR or a review-only/courier issue.
|
|
50
|
+
**Review rounds are capped.** After 3 consecutive agent-initiated `changes_requested` rounds on one stage (Paperclip's default; `executionPolicy.maxReviewRounds` overrides it), Paperclip stops handing the issue back to you and assigns the still-pending stage to the issue's responsible/creating human. If the stage participant becomes a board user, that is the escalation, not a misroute: post the missing context or evidence as a comment and wait for their decision — do not take the issue back, clear the policy, or open a new PR. A human decision resets the counter.
|
|
51
|
+
13. **Merging the PR — two paths:**
|
|
52
|
+
- **Code Reviewer present (PR-Gate mode):** You do not merge your own PR. The Code Reviewer lands it after verifying exact-head company CI and focused risk evidence, or the complete local gate once when CI is unavailable. Your job is to resolve `changes_requested` on this same issue, branch, and PR. Technical corrections never route to the board user; board involvement is reserved for an irreducible product, legal, licensing, or residual-risk decision through a first-class interaction/approval.
|
|
53
|
+
- **No code-reviewer present (PR Self-Merge Flow):** You already skipped steps 10–12 after completing any triggered evidence at step 9. Before merging, check `gh pr view <N> --json mergeable,mergeStateStatus` — if the PR is `CONFLICTING` or `DIRTY`, resolve the conflict first (see *Resolving merge conflicts* below). Then merge: `gh pr merge <N> --merge` once CI is green (or you have pasted test/build output if no CI). All other review roles (qa, product-owner, security-engineer, ui-designer, ux-researcher, devops) may leave advisory comments on the PR, but none block the merge — there are no executionPolicy stages. Update the Paperclip work product to `"status": "merged"` and leave any isolated execution workspace reusable.
|
|
44
54
|
|
|
45
55
|
## Resolving merge conflicts
|
|
46
56
|
|
|
@@ -49,7 +59,7 @@ When `gh pr merge` fails or `gh pr view` reports `mergeable: CONFLICTING` / `mer
|
|
|
49
59
|
1. `git fetch origin`
|
|
50
60
|
2. `git checkout <branch-name>`
|
|
51
61
|
3. `git rebase origin/<base-branch>` where `<base-branch>` is the plain branch name — strip any `origin/` prefix from the configured base ref (e.g., configured `origin/main` → `git rebase origin/main`; configured `main` → `git rebase origin/main`). Resolve all conflicts, then `git rebase --continue`.
|
|
52
|
-
4. Run the
|
|
62
|
+
4. Run the smallest checks that prove the conflict resolution. If exact-head required company CI is available, rely on it for the complete gate; otherwise run the complete local gate once.
|
|
53
63
|
5. `git push --force-with-lease origin <branch-name>`
|
|
54
64
|
6. Confirm the PR is no longer conflicting: `gh pr view <N> --json mergeable` should return `MERGEABLE`.
|
|
55
65
|
7. Leave an issue comment noting the rebase, then continue with the merge step.
|
|
@@ -60,15 +70,15 @@ If the conflict is too complex to resolve safely (large structural conflict with
|
|
|
60
70
|
|
|
61
71
|
## Base-branch-red deadlock
|
|
62
72
|
|
|
63
|
-
When a PR's CI fails, do not assume the PR is at fault. Detect base-red per
|
|
73
|
+
When a PR's CI fails, do not assume the PR is at fault. Detect base-red per `docs/git-workflow.md` → *Base-branch-red deadlock*: compare the PR's failing checks against the base commit's own checks. If the base is red, the failure is inherited, not introduced by your diff.
|
|
64
74
|
|
|
65
75
|
- **Do not open new feature PRs on a red base** — they pile up and inherit the failure.
|
|
66
|
-
- Run the baseline-emergency protocol in
|
|
76
|
+
- Run the baseline-emergency protocol in `docs/git-workflow.md` → *Baseline-emergency protocol*: fix main first with a single `fix(ci): restore base CI` PR, fast-track it through merge under the narrow exception, re-verify the base is green, then rebase and drain the feature-PR queue.
|
|
67
77
|
- A feature PR on a red base waits for the base to be restored. It never merges under the baseline-restore exception.
|
|
68
78
|
|
|
69
|
-
In **PR-Gate mode** (Code Reviewer present): you are the issue author and Paperclip excludes you from every executionPolicy stage, so you **cannot record `changes_requested`** — only
|
|
79
|
+
In **PR-Gate mode** (Code Reviewer present): you are the issue author and Paperclip excludes you from every executionPolicy stage, so you **cannot record `changes_requested`** — only the active stage participant can. If you detect BASE-BRANCH-RED before moving the issue to `in_review` (step 11), do not move it; record the inherited failures and route the baseline-emergency protocol to the backlog owner/CEO for explicit assignment. If already `in_review`, comment `BASE-BRANCH-RED` with "waiting-on-baseline" and the separately owned baseline-restore issue/PR. The active participant records `changes_requested` to formally route the feature issue back. Deduplicate detections into one baseline-restore issue, branch, and PR; do not self-claim extra work or put the unrelated base repair on the feature branch. Do not leave the issue silently in `in_review` against a red base.
|
|
70
80
|
|
|
71
|
-
In the **Self-Merge path** (no Code Reviewer): do not merge your feature PR on a red base; run the baseline-emergency protocol, then rebase and merge once the base is green. If you opened the `fix(ci): restore base CI` PR under a declared baseline emergency, you may merge it despite red CI under the narrow exception in
|
|
81
|
+
In the **Self-Merge path** (no Code Reviewer): do not merge your feature PR on a red base; run the baseline-emergency protocol, then rebase and merge once the base is green. If you opened the `fix(ci): restore base CI` PR under a declared baseline emergency, you may merge it despite red CI under the narrow exception in `docs/git-workflow.md` → *Narrow exception* (run the failing checks locally, paste passing output, remaining failures exactly the inherited baseline set).
|
|
72
82
|
|
|
73
83
|
## Misrouted in_review (no action path)
|
|
74
84
|
|
|
@@ -76,11 +86,11 @@ In the **Self-Merge path** (no Code Reviewer): do not merge your feature PR on a
|
|
|
76
86
|
|
|
77
87
|
1. Move the issue back to `in_progress` (`PATCH /api/issues/{id}` with `status: "in_progress"`).
|
|
78
88
|
2. Take the correct path for the team:
|
|
79
|
-
- **Code Reviewer present:** set the `executionPolicy` review/approval stages (step
|
|
80
|
-
- **No Code Reviewer:** do not set any `executionPolicy` — use the self-merge path (step
|
|
89
|
+
- **Code Reviewer present:** set the `executionPolicy` review/approval stages (step 10 above) *before* moving the issue back to `in_review`. Changing stages after the issue re-enters review is not supported.
|
|
90
|
+
- **No Code Reviewer:** do not set any `executionPolicy` — use the self-merge path (step 13). Merge the PR yourself via `gh pr merge <N> --merge` and mark the issue `done`; do not route it back to `in_review`.
|
|
81
91
|
3. Leave an issue comment naming the missing action path and the recovery action taken.
|
|
82
92
|
|
|
83
|
-
For new PR work,
|
|
93
|
+
For new PR work, use `in_review` only with a valid non-author executionPolicy stage or a first-class human interaction/approval. The self-merge path stays `in_progress` until merge and completion; intent to merge later in the heartbeat is not a review action path. For existing issues, diagnose the full action path before changing state.
|
|
84
94
|
|
|
85
95
|
## Rules
|
|
86
96
|
|
|
@@ -90,7 +100,7 @@ For new PR work, never move an issue to `in_review` unless an `executionPolicy`
|
|
|
90
100
|
- If a reviewer requests changes, address them, push to the same branch, and re-request review (the stage re-runs).
|
|
91
101
|
- When a code-reviewer is present: the Code Reviewer is the merge owner; you cannot merge your own PR (Paperclip excludes the executor). When no code-reviewer is present: you are the merge owner; skip executionPolicy stages and merge via `gh pr merge <N> --merge` yourself.
|
|
92
102
|
- Before creating a PR, verify the PR base matches the configured project/worktree base. If the base is wrong, retarget the PR before review.
|
|
93
|
-
- **
|
|
103
|
+
- **Follow the selected policy:** standard review uses role-based stages; only optional lean delivery uses exactly one non-author Code Reviewer stage and bounded advisory specialists. Never make yourself the merge gate — Paperclip excludes the executor, so that stage stalls with `422 No eligible approval participant`. If no eligible non-author Code Reviewer is on the team, set no executionPolicy stages and use the self-merge path.
|
|
94
104
|
- Do not create separate child review issues and do not use @-mentions to request review; the executionPolicy stages are the governance signal.
|
|
95
105
|
- Do not wait for GitHub-native approving reviews when all agents share the same GitHub credential; GitHub rejects self-approval. The Paperclip executionPolicy stages are the required signal unless a separate non-author GitHub reviewer credential is explicitly available.
|
|
96
106
|
- Preserve isolated execution workspaces after merge. Neither the author nor merge-gate agent archives/deletes a workspace during normal issue completion; review, follow-up, or dependent work may reuse it. Retirement is a separate board/operator action, including for abandoned or cancelled work.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Skill: Product Review
|
|
2
2
|
|
|
3
|
-
You
|
|
3
|
+
You define product intent and acceptance **before implementation**. In standard PR review, you approve intent/scope as an executionPolicy stage before the Code Reviewer merge gate. If `docs/lean-delivery.md` exists, Product is not a routine serial executionPolicy stage: return after code exists only for a concrete unresolved product decision, accepted-scope change, or release/cutover decision, then return the same issue to the implementation owner.
|
|
4
4
|
|
|
5
5
|
## Review Checklist
|
|
6
6
|
|
|
@@ -13,11 +13,11 @@ You review PRs for intent alignment, scope discipline, and acceptance criteria.
|
|
|
13
13
|
|
|
14
14
|
## How to Review
|
|
15
15
|
|
|
16
|
-
1.
|
|
17
|
-
2. Record
|
|
18
|
-
- **
|
|
19
|
-
- **
|
|
20
|
-
3. Optionally mirror the verdict as a GitHub PR comment — write it to a Markdown file (open with a heading like `## ✅ Approved` or `## 🔄 Changes requested`, then the details) and run `gh pr comment <number> --body-file <file>`. Never use inline `--body "..."`: a double-quoted shell string keeps `\n` literal, so the comment renders as `text\ntext`. See
|
|
16
|
+
1. Review the originating issue and PR when Product is the active standard policy stage or a concrete product trigger is recorded for a lean/advisory handoff. Do not create a product-review child/courier issue.
|
|
17
|
+
2. Record one decision tied to acceptance criteria. For lean/advisory handoffs:
|
|
18
|
+
- **accepted** when the change matches the frozen outcome; return the same issue to the implementation owner so they can open the Code Reviewer gate
|
|
19
|
+
- **changes required** when a concrete criterion is unmet; return the same issue to the implementation owner and same PR
|
|
20
|
+
3. **Standard active Product stage:** record `approved` or `changes_requested` through the executionPolicy and let Paperclip route the next action; do not manually reassign or close the issue. **Lean/advisory handoff:** reassign the same originating issue to the implementation owner in the same heartbeat. Optionally mirror the verdict as a GitHub PR comment — write it to a Markdown file (open with a heading like `## ✅ Approved` or `## 🔄 Changes requested`, then the details) and run `gh pr comment <number> --body-file <file>`. Never use inline `--body "..."`: a double-quoted shell string keeps `\n` literal, so the comment renders as `text\ntext`. See `docs/pr-conventions.md` → *Posting PR Bodies & Comments*.
|
|
21
21
|
|
|
22
22
|
## Rules
|
|
23
23
|
|
|
@@ -25,5 +25,5 @@ You review PRs for intent alignment, scope discipline, and acceptance criteria.
|
|
|
25
25
|
- Every PR should trace back to an issue. If it doesn't, ask why.
|
|
26
26
|
- Reject scope creep firmly but constructively — suggest filing a separate issue.
|
|
27
27
|
- If acceptance criteria are ambiguous, clarify them before approving.
|
|
28
|
-
-
|
|
29
|
-
-
|
|
28
|
+
- You are not a merge owner. In standard mode, Product approval precedes the Code Reviewer; in lean delivery, the Code Reviewer is the sole default non-author gate. Without an eligible Code Reviewer, the engineer uses the PR Self-Merge Flow.
|
|
29
|
+
- Do not create review-only, evidence-only, queue-drain, or workspace-cleanup issues. Create a follow-up only for independently deliverable, non-blocking scope outside the current acceptance criteria.
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
# Skill: QA Review
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
In standard PR review, you are the QA executionPolicy review stage when present and not the author. If `docs/lean-delivery.md` exists, you instead provide **bounded QA evidence on the originating issue** only for a concrete browser, integration, release, cutover, or regression risk; you are not a serial default executionPolicy stage in that mode. Review is by *doing*, not by reading: your verdict must rest on tests that actually ran.
|
|
4
4
|
|
|
5
5
|
## How you verify
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
Run the smallest tests that prove coverage and the triggered risk. If required company CI is green on the exact reviewed head, cite it and do not repeat the complete suite. Without CI, record focused QA evidence and leave the complete local gate to the merge owner; do not duplicate it. Beyond green/red, ensure the tests *mean something*:
|
|
8
8
|
- New code paths and edge cases are covered by tests you ran.
|
|
9
9
|
- Tests assert behavior, not implementation.
|
|
10
10
|
- Regression risk is covered.
|
|
11
|
-
Record
|
|
11
|
+
Record a bounded pass/fail verdict on the originating issue. If coverage is inadequate, return that same issue to the implementation owner with the specific missing cases.
|
|
12
12
|
|
|
13
|
-
**
|
|
13
|
+
**Required CI available:** confirm the exact-head required checks and add only the focused evidence the risk trigger needs. **Without required CI:** run the relevant local checks, expanding to the complete local gate only when you are the only available verifier. Existing required repository checks remain binding without the `ci-cd` module; only optional, non-required checks are advisory.
|
|
14
14
|
|
|
15
15
|
Replace `<branch>` with the PR branch name and substitute your project's actual test and build commands:
|
|
16
16
|
|
|
@@ -20,7 +20,7 @@ git fetch origin && git checkout <branch>
|
|
|
20
20
|
<the project's build command> # e.g. pnpm build
|
|
21
21
|
```
|
|
22
22
|
|
|
23
|
-
Record `
|
|
23
|
+
Record a bounded `pass` comment only if the checks pass and coverage is adequate; otherwise record a bounded `fail` comment with the failing output and gaps. In lean delivery, these are evidence comments, not `approved` / `changes_requested` executionPolicy verdicts; return the issue as described below. In standard mode, record the corresponding verdict only when QA is the active stage participant.
|
|
24
24
|
|
|
25
25
|
## Review checklist
|
|
26
26
|
|
|
@@ -34,14 +34,14 @@ Record `approved` only if the suite and build pass and coverage is adequate; oth
|
|
|
34
34
|
|
|
35
35
|
## How to record your verdict
|
|
36
36
|
|
|
37
|
-
1.
|
|
38
|
-
2.
|
|
39
|
-
3. Optionally mirror the verdict as a GitHub PR comment via a Markdown file: open with a heading (`## ✅ Approved` / `## 🔄 Changes requested`), then details, and run `gh pr comment <number> --body-file <file>`. Never inline `--body "..."` — a double-quoted shell string keeps `\n` literal. See
|
|
37
|
+
1. Work on the originating issue carrying the PR link and either an active QA stage (standard mode) or explicit QA trigger (lean mode); do not create a QA-only child/courier issue.
|
|
38
|
+
2. **Standard active QA stage:** record `approved` or `changes_requested` with exact-head evidence through the executionPolicy and let Paperclip route the next action. Do not manually reassign or close the issue. **Lean/advisory handoff:** record concise evidence and a pass/fail verdict, then reassign the same originating issue to the implementation owner in the same heartbeat. On failure, name the exact correction required on the same PR. On pass, the implementation owner opens the Code Reviewer merge gate (or takes the documented self-merge path); QA is never inserted as a serial policy stage in lean delivery.
|
|
39
|
+
3. Optionally mirror the verdict as a GitHub PR comment via a Markdown file: open with a heading (`## ✅ Approved` / `## 🔄 Changes requested`), then details, and run `gh pr comment <number> --body-file <file>`. Never inline `--body "..."` — a double-quoted shell string keeps `\n` literal. See `docs/pr-conventions.md` → *Posting PR Bodies & Comments*.
|
|
40
40
|
|
|
41
41
|
## Rules
|
|
42
42
|
|
|
43
|
-
- A verdict that does not cite
|
|
43
|
+
- A verdict that does not cite exact-head verification is invalid.
|
|
44
44
|
- Be constructive — suggest specific test cases, don't just say "needs more tests".
|
|
45
45
|
- Flag untested critical paths as blockers; untested non-critical paths as suggestions.
|
|
46
46
|
- Approve trivial changes (docs, comments, config) without ceremony.
|
|
47
|
-
-
|
|
47
|
+
- Do not create review-only, evidence-only, status-repair, or workspace-cleanup issues.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Skill: PR Security Review
|
|
2
2
|
|
|
3
|
-
You review a **specific PR's diff**
|
|
3
|
+
You review a **specific PR's diff** only when the originating issue records a concrete security trigger: authentication, authorization, tenant/data scope, secrets, input boundaries, cryptography, dependencies, infrastructure exposure, or sensitive egress. In standard PR review, this can be a Security executionPolicy stage before Product/Code Reviewer. If `docs/lean-delivery.md` exists, provide one bounded advisory verdict instead; you are not a serial default executionPolicy stage in lean delivery.
|
|
4
4
|
|
|
5
5
|
Review is by *probing*, not by reading. Your verdict must state what you actually checked.
|
|
6
6
|
|
|
@@ -15,13 +15,14 @@ Review is by *probing*, not by reading. Your verdict must state what you actuall
|
|
|
15
15
|
|
|
16
16
|
## How to record your verdict
|
|
17
17
|
|
|
18
|
-
1.
|
|
18
|
+
1. Work on the originating issue carrying the PR link and recorded security trigger. Do not create a security-review child/courier issue.
|
|
19
19
|
2. State **what you probed and how** (e.g. "checked the new `/upload` endpoint for path traversal with `../` inputs; validated the content-type allowlist"). A verdict without concrete checks is invalid.
|
|
20
|
-
3.
|
|
21
|
-
4. Optionally mirror as a GitHub PR comment via a Markdown file (`## ✅ Approved` / `## 🔄 Changes requested`), run `gh pr comment <number> --body-file <file>`. Never inline `--body "..."`. See
|
|
20
|
+
3. **Standard active Security stage:** record `approved` or `changes_requested` through the executionPolicy and let Paperclip route the next action; do not manually reassign or close the issue. **Lean/advisory handoff:** record one bounded pass/fail verdict, then reassign the same originating issue to the implementation owner in the same heartbeat. Blocking in-scope findings name the exact correction required on the same branch and PR; a pass lets the implementation owner open the Code Reviewer gate. Advisory specialists do not hand the issue to one another.
|
|
21
|
+
4. Optionally mirror as a GitHub PR comment via a Markdown file (`## ✅ Approved` / `## 🔄 Changes requested`), run `gh pr comment <number> --body-file <file>`. Never inline `--body "..."`. See `docs/pr-conventions.md` → *Posting PR Bodies & Comments*.
|
|
22
22
|
|
|
23
23
|
## Rules
|
|
24
24
|
|
|
25
25
|
- Block on exploitable issues (injection, auth bypass, secret exposure). Suggest on defense-in-depth hardening.
|
|
26
26
|
- Be specific: name the input, the path, the impact. "Looks secure" is not a review.
|
|
27
27
|
- If the change is not actually security-relevant, say so briefly and approve — don't manufacture findings.
|
|
28
|
+
- Create a follow-up only for independently deliverable, non-blocking work outside the current acceptance criteria. Never create review-only, evidence-only, or workspace-cleanup issues.
|
|
@@ -4,7 +4,7 @@ You review PRs for visual quality, brand consistency, and accessibility. When a
|
|
|
4
4
|
|
|
5
5
|
## Review Checklist
|
|
6
6
|
|
|
7
|
-
1. **Brand consistency** — If
|
|
7
|
+
1. **Brand consistency** — If `docs/BRAND-IDENTITY.md` exists, check that colors, typography, spacing, and iconography match the brand guidelines. Otherwise, evaluate visual consistency based on the existing codebase patterns.
|
|
8
8
|
2. **Visual hierarchy** — Is the information hierarchy clear? Do primary actions stand out? Is there visual clutter?
|
|
9
9
|
3. **Layout and spacing** — Are margins, padding, and alignment consistent with the design system?
|
|
10
10
|
4. **Responsive behavior** — Does the layout adapt correctly across breakpoints?
|
|
@@ -16,12 +16,12 @@ You review PRs for visual quality, brand consistency, and accessibility. When a
|
|
|
16
16
|
|
|
17
17
|
1. When a PR touches UI components, styles, or user-facing screens, review it for the design concerns below.
|
|
18
18
|
2. Focus only on visual/design concerns — leave code logic to Code Reviewer and product scope to Product Owner.
|
|
19
|
-
3.
|
|
20
|
-
4. If you find a concern that should block the merge (e.g. a critical accessibility regression or a brand-violating change), flag it explicitly
|
|
19
|
+
3. Record the verdict on the assigned originating issue. Optionally mirror it as an **advisory** GitHub PR comment — you are not a blocking review stage, so do not record a stage verdict (no `approved`/`changes_requested` on the issue's executionPolicy). Write the comment to a Markdown file (open with a heading like `## ✅ Approved` or `## 🔄 Changes requested`, then the details) and run `gh pr comment <number> --body-file <file>`. Never use inline `--body "..."`: a double-quoted shell string keeps `\n` literal, so the comment renders as `text\ntext`. See `docs/pr-conventions.md` → *Posting PR Bodies & Comments*.
|
|
20
|
+
4. If you find a concern that should block the merge (e.g. a critical accessibility regression or a brand-violating change), flag it explicitly and name the correction the implementation owner must make on the same PR. Reassign the originating issue to the implementation owner in the same heartbeat on both pass and fail; they decide whether to fix or open the merge gate. You do not block the merge yourself.
|
|
21
21
|
|
|
22
22
|
## Rules
|
|
23
23
|
|
|
24
24
|
- Be specific — "the button should use `--color-primary`" beats "wrong color".
|
|
25
25
|
- Comment only on changes that touch UI — not every PR needs design review.
|
|
26
|
-
- If
|
|
26
|
+
- If `docs/BRAND-IDENTITY.md` doesn't exist yet, note it but don't block the PR.
|
|
27
27
|
- Screenshots or before/after comparisons strengthen feedback when possible.
|
|
@@ -16,12 +16,12 @@ You review PRs for usability, user flow integrity, and alignment with user needs
|
|
|
16
16
|
|
|
17
17
|
1. When a PR changes user-facing behavior, interactions, or flows, review it for the UX concerns below.
|
|
18
18
|
2. Focus only on UX and usability concerns — leave code logic to Code Reviewer and visuals to UI Designer.
|
|
19
|
-
3.
|
|
20
|
-
4. If you find a concern that should block the merge (e.g. a flow that traps users in a dead end), flag it explicitly
|
|
19
|
+
3. Record the verdict on the assigned originating issue. Optionally mirror it as an **advisory** GitHub PR comment — you are not a blocking review stage, so do not record a stage verdict (no `approved`/`changes_requested` on the issue's executionPolicy). Write the comment to a Markdown file (open with a heading like `## ✅ Approved` or `## 🔄 Changes requested`, then the details) and run `gh pr comment <number> --body-file <file>`. Never use inline `--body "..."`: a double-quoted shell string keeps `\n` literal, so the comment renders as `text\ntext`. See `docs/pr-conventions.md` → *Posting PR Bodies & Comments*.
|
|
20
|
+
4. If you find a concern that should block the merge (e.g. a flow that traps users in a dead end), flag it explicitly and name the correction the implementation owner must make on the same PR. Reassign the originating issue to the implementation owner in the same heartbeat on both pass and fail; they decide whether to fix or open the merge gate. You do not block the merge yourself.
|
|
21
21
|
|
|
22
22
|
## Rules
|
|
23
23
|
|
|
24
24
|
- Ground feedback in user impact — "users might miss this because..." beats "I don't like this".
|
|
25
|
-
- If
|
|
25
|
+
- If `docs/USER-TESTING.md` exists, reference its findings where relevant. If it doesn't exist yet, ground feedback in the PR and existing app patterns instead.
|
|
26
26
|
- Comment only on changes that affect user-facing behavior.
|
|
27
27
|
- If the change introduces a new interaction pattern, flag it for consistency tracking.
|