@starlein/paperclip-plugin-company-wizard 0.4.5 → 0.4.7

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.
Files changed (71) hide show
  1. package/CHANGELOG.md +58 -0
  2. package/README.md +7 -5
  3. package/dist/manifest.js +4 -9
  4. package/dist/manifest.js.map +2 -2
  5. package/dist/ui/index.css +82 -0
  6. package/dist/ui/index.css.map +2 -2
  7. package/dist/ui/index.js +423 -139
  8. package/dist/ui/index.js.map +4 -4
  9. package/dist/worker.js +589 -58
  10. package/dist/worker.js.map +3 -3
  11. package/package.json +1 -1
  12. package/templates/bootstrap-instructions.md +2 -2
  13. package/templates/modules/architecture-plan/agents/ui-designer/skills/design-system.md +1 -1
  14. package/templates/modules/architecture-plan/skills/architecture-plan.md +1 -1
  15. package/templates/modules/auto-assign/README.md +9 -7
  16. package/templates/modules/auto-assign/agents/ceo/heartbeat-section.md +3 -1
  17. package/templates/modules/auto-assign/agents/ceo/skills/auto-assign.fallback.md +14 -8
  18. package/templates/modules/auto-assign/agents/product-owner/heartbeat-section.md +3 -1
  19. package/templates/modules/auto-assign/module.meta.json +3 -3
  20. package/templates/modules/auto-assign/skills/auto-assign.md +2 -2
  21. package/templates/modules/backlog/agents/ceo/heartbeat-section.md +1 -1
  22. package/templates/modules/backlog/agents/ceo/skills/backlog-health.fallback.md +2 -0
  23. package/templates/modules/backlog/agents/product-owner/heartbeat-section.md +1 -1
  24. package/templates/modules/backlog/docs/backlog-process.md +45 -8
  25. package/templates/modules/backlog/docs/backlog-template.md +3 -2
  26. package/templates/modules/backlog/module.meta.json +3 -3
  27. package/templates/modules/backlog/skills/backlog-health.bar.md +3 -1
  28. package/templates/modules/backlog/skills/backlog-health.md +8 -5
  29. package/templates/modules/competitive-intel/skills/competitive-tracking.md +1 -1
  30. package/templates/modules/github-repo/README.md +3 -3
  31. package/templates/modules/github-repo/agents/engineer/skills/git-workflow.md +72 -9
  32. package/templates/modules/github-repo/docs/git-workflow.md +65 -6
  33. package/templates/modules/github-repo/module.meta.json +1 -1
  34. package/templates/modules/market-analysis/agents/ux-researcher/skills/market-analysis.md +1 -1
  35. package/templates/modules/market-analysis/skills/market-analysis.md +1 -1
  36. package/templates/modules/pr-review/agents/devops/skills/infra-review.md +6 -8
  37. package/templates/modules/pr-review/agents/engineer/skills/pr-workflow.md +31 -12
  38. package/templates/modules/pr-review/agents/product-owner/skills/product-review.md +3 -2
  39. package/templates/modules/pr-review/agents/ui-designer/skills/design-review.md +4 -6
  40. package/templates/modules/pr-review/agents/ux-researcher/skills/ux-review.md +4 -6
  41. package/templates/modules/pr-review/docs/pr-conventions.md +4 -4
  42. package/templates/modules/pr-review/module.meta.json +1 -1
  43. package/templates/modules/security-audit/skills/threat-model.md +1 -1
  44. package/templates/modules/stall-detection/agents/ceo/heartbeat-section.md +1 -1
  45. package/templates/modules/tech-stack/skills/tech-stack.md +1 -1
  46. package/templates/modules/triage/skills/issue-triage.md +1 -1
  47. package/templates/modules/user-testing/agents/qa/skills/user-testing.md +1 -1
  48. package/templates/modules/user-testing/skills/user-testing.md +1 -1
  49. package/templates/modules/vision-workshop/agents/ceo/skills/vision-workshop.md +1 -1
  50. package/templates/presets/repo-maintenance/preset.meta.json +3 -3
  51. package/templates/roles/audio-designer/role.meta.json +5 -2
  52. package/templates/roles/cmo/role.meta.json +2 -1
  53. package/templates/roles/code-reviewer/AGENTS.md +3 -3
  54. package/templates/roles/code-reviewer/role.meta.json +4 -1
  55. package/templates/roles/cto/role.meta.json +2 -1
  56. package/templates/roles/customer-success/role.meta.json +2 -1
  57. package/templates/roles/devops/role.meta.json +2 -1
  58. package/templates/roles/engineer/AGENTS.md +2 -0
  59. package/templates/roles/engineer/HEARTBEAT.md +1 -1
  60. package/templates/roles/engineer/role.meta.json +2 -1
  61. package/templates/roles/game-artist/role.meta.json +5 -2
  62. package/templates/roles/game-designer/role.meta.json +4 -1
  63. package/templates/roles/level-designer/role.meta.json +4 -1
  64. package/templates/roles/product-owner/AGENTS.md +2 -1
  65. package/templates/roles/product-owner/HEARTBEAT.md +1 -1
  66. package/templates/roles/product-owner/role.meta.json +4 -1
  67. package/templates/roles/qa/role.meta.json +2 -1
  68. package/templates/roles/security-engineer/role.meta.json +2 -1
  69. package/templates/roles/technical-writer/role.meta.json +2 -1
  70. package/templates/roles/ui-designer/role.meta.json +2 -1
  71. package/templates/roles/ux-researcher/role.meta.json +4 -1
@@ -33,18 +33,72 @@ directory inside the repository. This must never be committed.
33
33
  - Committing `.paperclip/` pollutes history and can nest isolated worktrees inside the
34
34
  repo, which causes confusing git state for every agent.
35
35
 
36
- ## Direct-to-Base-Ref Workflow
36
+ ## GitHub Push Authentication
37
+
38
+ Paperclip injects the project secret `GH_TOKEN` into agent runs when the project env maps
39
+ `GH_TOKEN` to the secret. Git does not use that variable automatically, and some sandboxed
40
+ push subprocesses can drop environment variables exactly when Git asks its credential
41
+ helper for credentials. Every GitHub-backed project must install a repository-local
42
+ credential helper during foundation setup before the first push.
43
+
44
+ Run this from the primary project workspace, never from inside an issue worktree:
45
+
46
+ ```bash
47
+ git_common_dir="$(git rev-parse --git-common-dir)"
48
+ helper="$git_common_dir/paperclip-gh-credential-helper.sh"
49
+ cache="$git_common_dir/paperclip-gh-token-cache"
50
+
51
+ cat > "$helper" <<'EOF'
52
+ #!/bin/sh
53
+ cache="$(dirname "$0")/paperclip-gh-token-cache"
54
+ if [ -n "$GH_TOKEN" ]; then
55
+ ( umask 077; printf '%s' "$GH_TOKEN" > "$cache" ) 2>/dev/null
56
+ fi
57
+ if [ "$1" = "get" ]; then
58
+ token="$GH_TOKEN"
59
+ [ -z "$token" ] && [ -r "$cache" ] && token="$(cat "$cache" 2>/dev/null)"
60
+ [ -n "$token" ] && printf 'username=x-access-token\npassword=%s\n' "$token"
61
+ fi
62
+ exit 0
63
+ EOF
64
+
65
+ chmod 700 "$helper"
66
+ [ -n "$GH_TOKEN" ] && ( umask 077; printf '%s' "$GH_TOKEN" > "$cache" )
67
+ chmod 600 "$cache" 2>/dev/null || true
68
+ git config --local credential.helper "$helper"
69
+ ```
70
+
71
+ Rules:
72
+ - Do not print, commit, or paste the token. The helper cache lives under Git's private
73
+ common directory, not in the worktree.
74
+ - If `GH_TOKEN` is empty during setup, stop and ask the CEO/board to bind a writable
75
+ GitHub token as the project secret before continuing.
76
+ - Re-run the setup after rotating the secret; the cache refreshes whenever `GH_TOKEN`
77
+ is present in a later agent run.
78
+ - Verify the helper without exposing the token: `git config --local --get credential.helper`
79
+ should print the helper path, and `test -s "$(git rev-parse --git-common-dir)/paperclip-gh-token-cache"`
80
+ should succeed after a run where `GH_TOKEN` was injected.
81
+
82
+ ## PR Self-Merge Flow
83
+
84
+ Use this flow when the **pr-review module is not active** (no Code Reviewer role, no executionPolicy review stages). You open a PR and merge it yourself — there is no external review gate, but all changes go through a PR so branch history is preserved and branch protection is respected. When PR review is active, use the PR workflow from `docs/pr-conventions.md` instead.
37
85
 
38
86
  1. Resolve the configured base ref from project workspace metadata or the issue's `heartbeat-context` before touching Git. Do not infer it from the current shell branch and do not rewrite it to `main`, `master`, or `origin/*`.
39
87
  - External repos: use the project/worktree `repoRef`, `defaultRef`, or `executionWorkspacePolicy.workspaceStrategy.baseRef` exactly as configured.
40
88
  - Fresh/local repos: use the configured local branch.
41
89
  - Only if no base ref is configured anywhere, detect the repository's default branch — see *Resolving the default branch* below. Never hard-code `main`.
42
90
  2. Pull/fetch latest from that base before editing.
43
- 3. Make changes
44
- 4. Run tests/linting locally if available
45
- 5. Commit with conventional commit message
46
- 6. Push to the matching configured base branch
47
- 7. Verify CI passes (if configured)
91
+ 3. **Create a feature branch** from the base ref: `git checkout -b <branch-name> <base-ref>`. Never commit directly on the base branch. The branch name should reference the issue (e.g., `LEA-5-add-landing-hero`). If you are already on a correctly named feature branch, skip this step.
92
+ 4. **Verify you are on the feature branch** before making changes: `git branch --show-current` must print `<branch-name>`, not the base ref. If it prints the base ref name, you forgot step 3 — create the branch now.
93
+ 5. Make changes
94
+ 6. Run tests/linting locally if available
95
+ 7. Commit with conventional commit message
96
+ 8. **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.
97
+ 9. Open a pull request against the base ref: write the PR body to a temp file, then `gh pr create --base <github-base-branch> --head <branch-name> --title "<type>: <description>" --body-file <file>`. Never inline `--body "..."` — a double-quoted shell string keeps `\n` literal (see *Posting PR Bodies & Comments* in `docs/pr-conventions.md`). Verify the PR base matches the configured base ref before merging.
98
+ 10. Merge the PR yourself: `gh pr merge <PR-number> --merge`. Do not wait for a reviewer if none is present. Confirm the PR is closed and the base branch updated before continuing. Never do a direct `git merge` + push to the base branch; always go through a PR.
99
+ 11. Clean up the feature branch: `git push origin --delete <branch-name>` (remote) and `git branch -d <branch-name>` (local).
100
+ 12. If the issue uses an isolated execution workspace (worktree), archive it from `heartbeat-context` after the merge is pushed.
101
+ 13. Verify CI passes on the base branch (if configured). If CI fails, fix immediately.
48
102
 
49
103
  ## Resolving the default branch
50
104
 
@@ -86,6 +140,11 @@ For a brand-new local repository there is no remote yet, so initialize on `main`
86
140
  - If Paperclip created an isolated execution workspace for this issue, close/archive it after the commit/PR has landed and before marking `done`. If cleanup is blocked or fails, leave the issue open with the exact cleanup blocker. If the issue is in the shared project workspace, do not invent isolated-worktree cleanup.
87
141
  - If no repository change is required, do not silently close as `done`: add an issue comment explaining why no code change was needed and escalate to the CEO for explicit decision.
88
142
 
143
+ ## Branch Safety
144
+
145
+ - **Always work on a feature branch, never on the base branch.** Create the branch with `git checkout -b <branch-name> <base-ref>` before committing any changes. If you are resuming work on an existing issue, `git branch --show-current` should already show the feature branch name.
146
+ - **Verify your branch before pushing.** Before running `git push -u origin <branch-name>`, confirm that `git branch --show-current` prints the feature branch name — not the base ref. If it prints the base ref, you are on the wrong branch: stop and create/switch to the feature branch first. Pushing the base ref as a feature branch corrupts upstream tracking and causes incorrect branch divergence reports.
147
+
89
148
  ## CI
90
149
 
91
150
  If the project has CI configured (e.g., GitHub Actions), always verify your push passes CI. If CI fails, fix it immediately — a broken base ref blocks everyone.
@@ -9,7 +9,7 @@
9
9
  "priority": "critical",
10
10
  "bootstrapPhase": "foundation",
11
11
  "labels": ["chore"],
12
- "description": "Foundation setup: handle this before normal implementation issues. For a fresh repository, create the GitHub repository, initialize the local workspace with a README or bootstrap commit, add origin, push the default branch (`main` for a fresh repo), and record the repository URL. For an existing repository, verify the workspace has a reachable remote and a starter commit state, then determine the repository's default branch and confirm it is recorded as the project workspace `defaultRef`/`repoRef` so isolated worktrees branch from the correct base. The default branch is whatever `origin/HEAD` points at — name-agnostic (`main`, `master`, `trunk`, etc.); use it exactly as the remote advertises it (`git ls-remote --symref origin HEAD`). Only if the remote advertises no default HEAD, fall back to `main`, then `master`. Never assume `main` for an existing repo. Escalate to CEO if repo setup is missing instead of silently closing the issue. Before the first commit, ensure the repository's `.gitignore` ignores Paperclip's local state — add a `.paperclip/` entry (this is where Paperclip keeps per-issue git worktrees and workspace metadata inside the repo; committing it pollutes history and can nest worktrees inside the repo). Create `.gitignore` if it is missing. Branch protection is tracked separately by the pr-review module when that workflow is enabled."
12
+ "description": "Foundation setup: handle this before normal implementation issues. For a fresh repository, create the GitHub repository, initialize the local workspace with a README or bootstrap commit, add origin, push the default branch (`main` for a fresh repo), and record the repository URL. For an existing repository, verify the workspace has a reachable remote and a starter commit state, then determine the repository's default branch and confirm it is recorded as the project workspace `defaultRef`/`repoRef` so isolated worktrees branch from the correct base. The default branch is whatever `origin/HEAD` points at — name-agnostic (`main`, `master`, `trunk`, etc.); use it exactly as the remote advertises it (`git ls-remote --symref origin HEAD`). Only if the remote advertises no default HEAD, fall back to `main`, then `master`. Never assume `main` for an existing repo. Install the Paperclip GitHub credential helper from `docs/git-workflow.md` before the first push so `git push` uses the injected `GH_TOKEN` project secret even when sandboxed subprocesses strip environment variables at credential-lookup time. Escalate to CEO if repo setup or `GH_TOKEN` is missing instead of silently closing the issue. Before the first commit, ensure the repository's `.gitignore` ignores Paperclip's local state — add a `.paperclip/` entry (this is where Paperclip keeps per-issue git worktrees and workspace metadata inside the repo; committing it pollutes history and can nest worktrees inside the repo). Create `.gitignore` if it is missing. Branch protection is tracked separately by the pr-review module when that workflow is enabled."
13
13
  }
14
14
  ]
15
15
  }
@@ -12,7 +12,7 @@ You own market research with a focus on user needs and behavior. This is your co
12
12
  - **Positioning**: Where the biggest user need gaps are
13
13
  - **Risks**: Adoption barriers, user switching costs, behavioral resistance
14
14
  3. Create follow-up issues for deeper research if needed:
15
- - `POST /api/companies/{companyId}/issues` for user interview plans, usability benchmarks. Include the active `projectId` (and `goalId` / `parentId` when applicable).
15
+ - `POST /api/companies/{companyId}/issues` for user interview plans, usability benchmarks. Include the active `projectId` (and `goalId` / `parentId` when applicable). For top-level issues (no `parentId`), also include `"executionWorkspaceSettings": { "mode": "isolated_workspace" }` so each gets its own worktree; subissues set `parentId` and omit it.
16
16
  4. Share findings by updating the assigned issue/document and assigning concrete follow-up actions to the Product Owner and CEO when needed; do not rely on generic @-mentions.
17
17
 
18
18
  ## Rules
@@ -11,7 +11,7 @@ You own market research and competitive analysis. This informs the product roadm
11
11
  - **Positioning**: How do we differentiate? What's our unique value proposition?
12
12
  - **Risks**: Market risks, timing risks, adoption barriers
13
13
  3. Create follow-up issues for any strategic decisions needed:
14
- - `POST /api/companies/{companyId}/issues` with findings that require input. Include the active `projectId` (and `goalId` / `parentId` when applicable).
14
+ - `POST /api/companies/{companyId}/issues` with findings that require input. Include the active `projectId` (and `goalId` / `parentId` when applicable). For top-level issues (no `parentId`), also include `"executionWorkspaceSettings": { "mode": "isolated_workspace" }` so each gets its own worktree; subissues set `parentId` and omit it.
15
15
  4. Record summary in your daily notes
16
16
 
17
17
  ## Rules
@@ -14,16 +14,14 @@ You review PRs for infrastructure impact, performance, security, and operational
14
14
 
15
15
  ## How to Review
16
16
 
17
- 1. When you are the active participant of a review stage on an issue with a PR link, review the PR.
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. Record your verdict through the normal issue update route for your review stage:
20
- - **approved** if operationally sound
21
- - **changes_requested** with specific concerns if not
22
- 4. 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*.
19
+ 3. Post your verdict 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** in the comment and name who should act on it — for security issues (exposed secrets, critical vulnerabilities), that is the Security Engineer review stage when one exists, otherwise QA or the Code Reviewer merge gate — so a blocking reviewer can incorporate it into their verdict. You do not block the merge yourself.
23
21
 
24
22
  ## Rules
25
23
 
26
- - Security issues are always blockers never approve PRs with exposed secrets or critical vulnerabilities.
27
- - Performance concerns are blockers only if they affect production. Flag others as suggestions.
28
- - Approve changes with no infrastructure impact without comment.
24
+ - Flag security issues (exposed secrets, critical vulnerabilities) as blocking-severity in your advisory comment so the Security Engineer (or merge gate) acts on them; you do not yourself withhold a stage verdict. When a Security Engineer review stage exists, defer security blocking to it.
25
+ - Performance concerns are blocking-severity only if they affect production; flag others as suggestions.
26
+ - Comment only on changes with infrastructure impact.
29
27
  - If a change needs a migration or deployment step, ensure it's documented in the PR.
@@ -9,20 +9,38 @@ When this skill is active, you work in feature branches and open PRs instead of
9
9
  - external: `git fetch origin`, then branch from the configured base ref
10
10
  - local: update from the configured local branch
11
11
  3. Create branch from that base: `git checkout -b <prefix>-<N>/<short-description> <base-ref>`
12
- 4. Make your changes, commit with Conventional Commits format
13
- 5. Push branch: `git push -u origin <branch-name>`
14
- 6. Open PR against the same resolved base: derive the GitHub base branch from the configured ref (for example, strip the remote prefix only when the ref is remote-tracking), write the body (PR Body Template in `docs/pr-conventions.md`) to a file, then `gh pr create --base <github-base-branch> --head <branch-name> --title "<type>: <description>" --body-file <file>`. Never inline `--body "..."`a double-quoted shell string keeps `\n` literal and the PR renders as `text\ntext` (see *Posting PR Bodies & Comments*).
15
- 7. Set the originating issue's `executionPolicy` to gate the merge on review, ending with the Code Reviewer as the merge gate:
12
+ 4. **Verify you are on the feature branch** before making changes: `git branch --show-current` must print your branch name, not the base ref. If it prints the base ref name, you forgot step 3 — create the branch now.
13
+ 5. Make your changes, commit with Conventional Commits format
14
+ 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 branchif `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: derive the GitHub base branch from the configured ref (for example, strip the remote prefix only when the ref is remote-tracking), write the body (PR Body Template in `docs/pr-conventions.md`) to a file, then `gh pr create --base <github-base-branch> --head <branch-name> --title "<type>: <description>" --body-file <file>`. Never inline `--body "..."` — a double-quoted shell string keeps `\n` literal and the PR renders as `text\ntext` (see *Posting PR Bodies & Comments*).
16
+ 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
+ ```
18
+ POST /api/issues/{issueId}/work-products
19
+ Headers: Authorization: Bearer $PAPERCLIP_API_KEY, X-Paperclip-Run-Id: $PAPERCLIP_RUN_ID
20
+ {
21
+ "type": "pull_request",
22
+ "provider": "github",
23
+ "externalId": "<PR number>",
24
+ "url": "<full PR URL>",
25
+ "title": "<PR title>",
26
+ "status": "ready_for_review",
27
+ "isPrimary": true
28
+ }
29
+ ```
30
+ `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. **Only if a code-reviewer is present on the team:** Set the originating issue's `executionPolicy` to gate the merge on review, ending with the Code Reviewer as the merge gate. If no code-reviewer is assigned to this company, skip steps 9–11 entirely and go directly to the self-merge path at step 12. Setting up executionPolicy stages without an eligible non-author merge gate will stall the issue permanently (`422 No eligible approval participant`).
16
32
  - One `review` stage with **QA** when a QA agent exists (test adequacy / executed verification).
17
33
  - One `review` stage with the **Security Engineer** only when the change is security-relevant (auth, secrets, input boundaries, crypto, dependencies, infra exposure).
18
- - Additional `review` stages only for domain reviewers that should block this specific change.
19
- - An `approval` stage with the **Product Owner** as participant (always) — the product sign-off.
20
- - 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, use another present non-author agent (e.g. DevOps, the Product Owner, or another engineer) never yourself.
34
+ - Domain reviewers (UI Designer, UX Researcher, DevOps) are advisory — they post PR comments and may flag a concern for QA, the Security Engineer, or the merge gate to act on. They are never themselves a review stage.
35
+ - An `approval` stage with the **Product Owner** when a Product Owner is on the team — the product sign-off. If no Product Owner is present, omit this stage.
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.
21
37
  - **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`).
22
38
  - 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.
23
- 8. Move the originating issue to `in_review`.
24
- 9. Wait for the issue to clear its review/approval stages. Each reviewer and the Product Owner records `approved` by PATCHing the issue toward `done`, or `changes_requested` by PATCHing it back to `in_progress`; Paperclip stores the reviewer/approver decision metadata on the issue. Verdicts may be mirrored as PR comments. A `changes_requested` routes the issue back to you — address it, push to the same branch, and that stage re-runs.
25
- 10. You do not merge your own PR. The **Code Reviewer** (the non-author merge gate) lands it after every prior stage approves, satisfies the hard verification gate, and records the final `approved` that closes the issue to `done`. Your remaining job is to respond to `changes_requested`: when a stage routes the issue back to you (the `returnAssignee`), address the feedback, push to the same branch, and the routed stage re-runs.
39
+ 10. Move the originating issue to `in_review`.
40
+ 11. Wait for the issue to clear its review/approval stages. Each reviewer and the Product Owner records `approved` by PATCHing the issue toward `done`, or `changes_requested` by PATCHing it back to `in_progress`; Paperclip stores the reviewer/approver decision metadata on the issue. Verdicts may be mirrored as PR comments. A `changes_requested` routes the issue back to you — address it, push to the same branch, and that stage re-runs.
41
+ 12. **Merging the PR two paths:**
42
+ - **Code Reviewer present (PR-Gate mode):** You do not merge your own PR. The Code Reviewer (the non-author merge gate) lands it after every prior stage approves, satisfies the hard verification gate (green CI or pasted test/build output), and records the final `approved` that closes the issue to `done`. Your job is to respond to `changes_requested`: when a stage routes the issue back to you, address the feedback, push to the same branch, and the stage re-runs.
43
+ - **No code-reviewer present (PR Self-Merge Flow):** You already skipped steps 9–11. Merge the PR yourself: `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 archive any isolated worktree.
26
44
 
27
45
  ## Rules
28
46
 
@@ -30,9 +48,10 @@ When this skill is active, you work in feature branches and open PRs instead of
30
48
  - One PR per issue. Keep changes focused.
31
49
  - Always include `Closes [PREFIX-N]` in the PR body.
32
50
  - If a reviewer requests changes, address them, push to the same branch, and re-request review (the stage re-runs).
33
- - The Code Reviewer (the non-author merge gate) is the merge owner. You cannot merge your own PR Paperclip excludes you (the executor) from every review/approval stage. Hand off cleanly by setting the policy correctly, not by merging yourself.
51
+ - 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.
34
52
  - Before creating a PR, verify the PR base matches the configured project/worktree base. If the base is wrong, retarget the PR before review.
35
- - **The merge gate must be the last stage, and it must be a non-author.** The Product Owner's `approval` is the product sign-off, not the final stage: if it were last, their verdict would auto-close the issue to `done` with the PR still open on GitHub. Append a final merge-gate `approval` stage for the **Code Reviewer** (or another present non-author agent) after the Product Owner's. Never make yourself the merge gate — Paperclip excludes the executor, so that stage stalls with `422 No eligible approval participant`.
53
+ - **The merge gate must be the last stage, and it must be a non-author.** The Product Owner's `approval` is the product sign-off, not the final stage: if it were last, their verdict would auto-close the issue to `done` with the PR still open on GitHub. Append a final merge-gate `approval` stage for the **Code Reviewer** after the Product Owner's. Never make yourself the merge gate — Paperclip excludes the executor, so that stage stalls with `422 No eligible approval participant`. If no Code Reviewer is on the team, do not set executionPolicy stages; use the self-merge path instead.
36
54
  - Do not create separate child review issues and do not use @-mentions to request review; the executionPolicy stages are the governance signal.
37
55
  - 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.
38
56
  - Post-merge cleanup of any isolated execution workspace belongs to the merge-gate agent (they archive it from `heartbeat-context` when landing the PR). You only clean up your own worktree if you abandon a branch or the issue is cancelled before review. If this issue runs in the shared project workspace, do not invent isolated-worktree cleanup.
57
+ - **Never push the base ref as if it were a feature branch.** Before `git push -u origin <branch-name>`, confirm that `git branch --show-current` matches `<branch-name>`. If it prints the base ref name instead, you are on the wrong branch — create or switch to the feature branch first.
@@ -1,6 +1,6 @@
1
1
  # Skill: Product Review
2
2
 
3
- You review PRs for intent alignment, scope discipline, and acceptance criteria. You are the final approveryou are the participant of the `approval` stage on the PR's issue, and your sign-off is the last gate before merge.
3
+ You review PRs for intent alignment, scope discipline, and acceptance criteria. You are the product sign-off — the participant of the `approval` stage on the PR's issue immediately before the Code Reviewer merge gate. Your `approved` is required before the merge gate lands the PR, but you are not the final stage: the Code Reviewer's subsequent merge-gate approval is what closes the issue.
4
4
 
5
5
  ## Review Checklist
6
6
 
@@ -25,4 +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
- - Your approval stage verdict is the final governance signal. Do not block only because GitHub rejects formal review submission from the shared PR-author credential — GitHub-native approval is optional unless a distinct non-author reviewer credential is explicitly available.
28
+ - Your approval stage verdict is the product sign-off; the Code Reviewer's subsequent merge-gate approval is the final governance signal that closes the issue. Do not block only because GitHub rejects formal review submission from the shared PR-author credential — GitHub-native approval is optional unless a distinct non-author reviewer credential is explicitly available.
29
+ - You are not a merge owner. If a Code Reviewer is absent and the team is using the PR Self-Merge Flow, the engineer merges the PR themselves; your role is advisory in that mode — post product concerns as PR comments, do not record a stage verdict.
@@ -14,16 +14,14 @@ You review PRs for visual quality, brand consistency, and accessibility. When a
14
14
 
15
15
  ## How to Review
16
16
 
17
- 1. When you are the active participant of a review stage on an issue with a PR link, review the PR.
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. Record your verdict through the normal issue update route for your review stage:
20
- - **approved** if visually sound
21
- - **changes_requested** with specific, actionable feedback if not
22
- 4. 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*.
19
+ 3. Post your verdict 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 in the comment and name who should act on it — QA, the Security Engineer, or the Code Reviewer merge gate — so a blocking reviewer can incorporate it into their verdict. You do not block the merge yourself.
23
21
 
24
22
  ## Rules
25
23
 
26
24
  - Be specific — "the button should use `--color-primary`" beats "wrong color".
27
- - Approve changes that don't touch UI without comment — not every PR needs design review.
25
+ - Comment only on changes that touch UI — not every PR needs design review.
28
26
  - If `docs/BRAND-IDENTITY.md` doesn't exist yet, note it but don't block the PR.
29
27
  - Screenshots or before/after comparisons strengthen feedback when possible.
@@ -14,16 +14,14 @@ You review PRs for usability, user flow integrity, and alignment with user needs
14
14
 
15
15
  ## How to Review
16
16
 
17
- 1. When you are the active participant of a review stage on an issue with a PR link, review the PR.
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. Record your verdict through the normal issue update route for your review stage:
20
- - **approved** if usability is sound
21
- - **changes_requested** with specific, actionable feedback if not
22
- 4. 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*.
19
+ 3. Post your verdict 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 in the comment and name who should act on it — QA, the Security Engineer, or the Code Reviewer merge gate — so a blocking reviewer can incorporate it into their verdict. You do not block the merge yourself.
23
21
 
24
22
  ## Rules
25
23
 
26
24
  - Ground feedback in user impact — "users might miss this because..." beats "I don't like this".
27
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.
28
- - Approve changes that don't affect user-facing behavior without comment.
26
+ - Comment only on changes that affect user-facing behavior.
29
27
  - If the change introduces a new interaction pattern, flag it for consistency tracking.
@@ -68,8 +68,8 @@ Review runs through the issue's native `executionPolicy` (stages), not separate
68
68
  3. **Engineer** sets the originating issue's `executionPolicy` stages, in order:
69
69
  - a `review` stage for **QA** when a QA agent is on the team (test adequacy / running the tests),
70
70
  - a `review` stage for the **Security Engineer** *only when the change is security-relevant* (auth, secrets, input boundaries, crypto, dependencies, infra exposure),
71
- - an `approval` stage for the **Product Owner** (intent, scope, acceptance),
72
- - a final `approval` stage for the **Code Reviewer** as the merge gate (a non-author — Paperclip excludes the issue's executor from every stage).
71
+ - an `approval` stage for the **Product Owner** when one is on the team (intent, scope, acceptance),
72
+ - a final `approval` stage for the **Code Reviewer** as the merge gate (a non-author — Paperclip excludes the issue's executor from every stage). When no Code Reviewer is on the team, do not set executionPolicy stages at all — use the PR Self-Merge Flow (the engineer opens the PR and merges via `gh pr merge <N> --merge`); other review roles may leave advisory comments but do not block.
73
73
  Resolve each role to its agentId. **Never list the issue's executor (the engineer who authored the work) as a participant in any stage** — the runtime excludes the original executor, so such a stage has no eligible participant and the issue stalls (`422 No eligible approval participant`).
74
74
  4. **Engineer** sets the issue to `in_review`.
75
75
  5. **QA** (when present) reviews and records `approved`/`changes_requested` through the normal issue update route with executed evidence (see *Merge Rules*), preserving the issue-level review audit trail.
@@ -82,8 +82,8 @@ Review runs through the issue's native `executionPolicy` (stages), not separate
82
82
 
83
83
  - **QA** (`review` stage, when present): the substantive gate. Test coverage, regression risk, and validation — backed by tests that actually ran.
84
84
  - **Security Engineer** (`review` stage, only when the change is security-relevant): probes the diff for injection, auth, secrets, crypto, dependency, and exposure issues.
85
- - **Product Owner** (`approval` stage): intent alignment, scope discipline, acceptance criteria.
86
- - **Code Reviewer** (`approval` stage, last): the merge gate and hard-gate backstop — a non-author who verifies and lands the PR. See *Merge Rules*.
85
+ - **Product Owner** (`approval` stage, when present): intent alignment, scope discipline, acceptance criteria.
86
+ - **Code Reviewer** (`approval` stage, last, when present): the merge gate and hard-gate backstop — a non-author who verifies and lands the PR. See *Merge Rules*. When no Code Reviewer is present, the engineer self-merges via `gh pr merge <N> --merge` and no executionPolicy stages are set.
87
87
  - **Domain reviewers** (advisory): optional, non-blocking comments on correctness, clarity, design, accessibility, UX. They never gate the merge.
88
88
 
89
89
  ## Merge Rules
@@ -25,7 +25,7 @@
25
25
  "approver": "product-owner",
26
26
  "mergeGate": "code-reviewer"
27
27
  },
28
- "description": "Document and verify the PR workflow via the issue's executionPolicy. The merge gate is executed verification: with CI, builds must be green before merge; without CI, the merge-gate agent runs the test suite/build and pastes the output before merging. Stages: a review stage for QA when present, a review stage for the Security Engineer only on security-relevant changes, an approval stage for the Product Owner, and a final approval stage for the Code Reviewer as the merge gate (a non-author woken last to merge the PR before recording approval, which closes the issue). Never list the issue's executor/author as a participant in any stage — Paperclip excludes the original executor, so a stage whose only participant is the author has no eligible participant and the issue stalls (`422 No eligible approval participant is configured for this issue`); this is why the merge gate is the Code Reviewer (or another non-author), not the engineer. The merge gate must be the last stage so the Product Owner's approval does not auto-close the issue with the PR still open. Other domain reviewers add advisory, non-blocking comments. Optional branch protection may disable direct pushes, but do not require GitHub-native approving reviews unless the project has distinct non-author GitHub reviewer credentials."
28
+ "description": "Document and verify the PR workflow via the issue's executionPolicy. The merge gate is executed verification: with CI, builds must be green before merge; without CI, the merge-gate agent runs the test suite/build and pastes the output before merging. Stages: a review stage for QA when present, a review stage for the Security Engineer only on security-relevant changes, an approval stage for the Product Owner when present, and a final approval stage for the Code Reviewer as the merge gate (a non-author woken last to merge the PR before recording approval, which closes the issue). Never list the issue's executor/author as a participant in any stage — Paperclip excludes the original executor, so a stage whose only participant is the author has no eligible participant and the issue stalls (`422 No eligible approval participant is configured for this issue`); this is why the merge gate is the Code Reviewer (a non-author), not the engineer. The merge gate must be the last stage so the Product Owner's approval does not auto-close the issue with the PR still open. Other domain reviewers add advisory, non-blocking comments. Optional branch protection may disable direct pushes, but do not require GitHub-native approving reviews unless the project has distinct non-author GitHub reviewer credentials. When no code-reviewer role is present in the company, use PR-Self-Merge mode instead: the engineer opens the PR normally but skips executionPolicy stages entirely and merges via `gh pr merge <N> --merge` themselves. Other review roles (qa, product-owner, security-engineer, ui-designer, ux-researcher, devops) may leave advisory comments on the PR but do not block the merge. Never set up executionPolicy stages when there is no eligible non-author merge gate — the issue will stall with `422 No eligible approval participant`."
29
29
  }
30
30
  ]
31
31
  }
@@ -12,7 +12,7 @@ You own threat modeling for the project. This identifies security risks before t
12
12
  - **Risk ratings**: Likelihood x Impact = Risk (Critical/High/Medium/Low)
13
13
  - **Mitigations**: Recommended controls for each threat
14
14
  3. Create follow-up issues for Critical and High risks:
15
- - `POST /api/companies/{companyId}/issues` with specific remediation tasks. Include the active `projectId` (and `goalId` / `parentId` when applicable).
15
+ - `POST /api/companies/{companyId}/issues` with specific remediation tasks. Include the active `projectId` (and `goalId` / `parentId` when applicable). For top-level issues (no `parentId`), also include `"executionWorkspaceSettings": { "mode": "isolated_workspace" }` so each gets its own worktree; subissues set `parentId` and omit it.
16
16
  4. Record summary in your daily notes
17
17
 
18
18
  ## Rules
@@ -1,3 +1,3 @@
1
1
  ## Stall Detection Routine
2
2
 
3
- Do not scan for stalled work during a normal heartbeat. When you are assigned a routine-run issue titled like "Stall detection", use `skills/stall-detection.md`, then summarize findings on the routine issue and exit.
3
+ Do not scan for stalled work during a normal heartbeat. When you are assigned a routine-run issue titled like "Stall detection", use `$AGENT_HOME/skills/stall-detection.md`, then summarize findings on the routine issue and exit.
@@ -15,7 +15,7 @@ You own technology decisions. Evaluate options and document choices that align w
15
15
  - **Trade-offs**: What was considered and rejected, and why
16
16
  - **Dependencies**: Key libraries and their purposes
17
17
  4. Create setup issues if needed:
18
- - `POST /api/companies/{companyId}/issues` for initial project scaffolding. Include the active `projectId` (and `goalId` / `parentId` when applicable).
18
+ - `POST /api/companies/{companyId}/issues` for initial project scaffolding. Include the active `projectId` (and `goalId` / `parentId` when applicable). For top-level issues (no `parentId`), also include `"executionWorkspaceSettings": { "mode": "isolated_workspace" }` so each gets its own worktree; subissues set `parentId` and omit it.
19
19
 
20
20
  ## Rules
21
21
 
@@ -16,7 +16,7 @@ Use this only when the current assigned issue/routine asks for GitHub issue tria
16
16
  - Set priority P0-P3; P0 maps to urgent Paperclip priority.
17
17
  - Apply labels with `gh issue edit <number> --add-label "<type>,<priority>"`.
18
18
  - Respond to the reporter with acknowledgement, follow-up questions, or a polite close reason.
19
- - For actionable issues, create a corresponding Paperclip issue via `POST /api/companies/{companyId}/issues`. Include GitHub issue URL/number, active `projectId`, and `goalId` / `parentId` when applicable.
19
+ - For actionable issues, create a corresponding Paperclip issue via `POST /api/companies/{companyId}/issues`. Include GitHub issue URL/number, active `projectId`, and `goalId` / `parentId` when applicable. For top-level issues (no `parentId`), also include `"executionWorkspaceSettings": { "mode": "isolated_workspace" }` so each gets its own worktree; subissues set `parentId` and omit it.
20
20
  4. Link bidirectionally: GitHub comment references the Paperclip issue, Paperclip issue references GitHub.
21
21
  5. Summarize triage results on the assigned triage issue/routine and mark it done.
22
22
 
@@ -18,7 +18,7 @@ You are the QA engineer and user-facing quality is your core domain. You own tes
18
18
  - **Major**: Significant friction or confusion
19
19
  - **Minor**: Cosmetic or low-impact usability issues
20
20
  7. Create follow-up issues for critical and major findings:
21
- - `POST /api/companies/{companyId}/issues` with finding details and reproduction steps. Include the active `projectId` (and `goalId` / `parentId` when applicable).
21
+ - `POST /api/companies/{companyId}/issues` with finding details and reproduction steps. Include the active `projectId` (and `goalId` / `parentId` when applicable). For top-level issues (no `parentId`), also include `"executionWorkspaceSettings": { "mode": "isolated_workspace" }` so each gets its own worktree; subissues set `parentId` and omit it.
22
22
  8. Record summary in your daily notes
23
23
 
24
24
  ## Rules
@@ -16,7 +16,7 @@ You own usability evaluations and user testing. This ensures the product meets r
16
16
  - **Major**: Significant friction or confusion
17
17
  - **Minor**: Cosmetic or low-impact usability issues
18
18
  6. Create follow-up issues for critical and major findings:
19
- - `POST /api/companies/{companyId}/issues` with finding details and reproduction steps. Include the active `projectId` (and `goalId` / `parentId` when applicable).
19
+ - `POST /api/companies/{companyId}/issues` with finding details and reproduction steps. Include the active `projectId` (and `goalId` / `parentId` when applicable). For top-level issues (no `parentId`), also include `"executionWorkspaceSettings": { "mode": "isolated_workspace" }` so each gets its own worktree; subissues set `parentId` and omit it.
20
20
  7. Record summary in your daily notes
21
21
 
22
22
  ## Rules
@@ -12,7 +12,7 @@ You own the company vision. Refine the initial goal into a strategic foundation
12
12
  - **Strategic milestones**: Ordered list of milestones that lead to the vision
13
13
  - **Non-goals**: What the company explicitly does NOT do (prevents scope creep)
14
14
  3. Create issues for the first milestone's deliverables:
15
- - `POST /api/companies/{companyId}/issues` with milestone context. Include the active `projectId` (and `goalId` / `parentId` when applicable).
15
+ - `POST /api/companies/{companyId}/issues` with milestone context. Include the active `projectId` (and `goalId` / `parentId` when applicable). For top-level issues (no `parentId`), also include `"executionWorkspaceSettings": { "mode": "isolated_workspace" }` so each gets its own worktree; subissues set `parentId` and omit it.
16
16
  4. Share the vision doc with the team via daily notes
17
17
 
18
18
  ## Rules
@@ -35,7 +35,7 @@
35
35
  "id": "process-setup",
36
36
  "title": "Process Setup",
37
37
  "level": "team",
38
- "description": "Establish PR review, issue triage, and release workflows. Done when branch protection configured, PR conventions documented, issue labels created, release process documented."
38
+ "description": "Establish PR review, issue triage, and release workflows. Done when PR workflow documented (branch requires PRs, no approval gate), issue labels created, release process documented."
39
39
  },
40
40
  {
41
41
  "id": "initial-sweep",
@@ -66,8 +66,8 @@
66
66
  "assignTo": "engineer"
67
67
  },
68
68
  {
69
- "title": "Configure branch protection and PR workflow",
70
- "description": "Set up branch protection on the default branch, require PR reviews, configure review conventions. Document in docs/pr-conventions.md.",
69
+ "title": "Configure PR workflow and branch protection",
70
+ "description": "Configure the PR workflow and set up branch protection on the default branch. Branch protection must require a PR before merging (no direct pushes to the base branch — set enforce_admins: true so the shared admin account cannot bypass the PR rule), but must NOT require GitHub-native approving reviews — all agents share one GitHub account and cannot formally approve their own PRs; the review gate lives in Paperclip's executionPolicy, not in GitHub. Use the exact gh api heredoc command from the git-workflow skill → Branch Protection Setup: `gh api repos/{owner}/{repo}/branches/{base}/protection --method PUT --input - <<'EOF'` with payload {\"required_status_checks\": null, \"enforce_admins\": true, \"required_pull_request_reviews\": {\"required_approving_review_count\": 0, \"dismiss_stale_reviews\": false}, \"restrictions\": null}. With required_approving_review_count: 0 the shared account can still open a PR and merge it with zero approvals, so the self-merge flow keeps working. Document PR conventions in docs/pr-conventions.md.",
71
71
  "priority": "high",
72
72
  "assignTo": "engineer"
73
73
  },
@@ -7,8 +7,11 @@
7
7
  "description": "Owns audio production: sound effects, music, ambient soundscapes, and audio systems design. Creates audio using AI generation tools, code-based synthesis, and audio processing pipelines.",
8
8
  "reportsTo": "ceo",
9
9
  "enhances": [
10
- "Takes over audio asset creation from Engineer (placeholder sounds production audio)",
10
+ "Takes over audio asset creation from Engineer (placeholder sounds \u2192 production audio)",
11
11
  "Takes over audio direction definition from Game Designer",
12
12
  "Adds audio consistency review pass when pr-review module is active"
13
- ]
13
+ ],
14
+ "adapter": {
15
+ "thinkingLevel": "auto"
16
+ }
14
17
  }
@@ -12,6 +12,7 @@
12
12
  "Adds marketing review pass (with pr-review module)"
13
13
  ],
14
14
  "adapter": {
15
- "model": "claude-sonnet-4-6"
15
+ "model": "claude-sonnet-4-6",
16
+ "thinkingLevel": "auto"
16
17
  }
17
18
  }
@@ -15,16 +15,16 @@ You report to the CEO.
15
15
  - **Security**: Any injection, XSS, credential exposure, or OWASP risks?
16
16
  - **Style**: Consistent with existing codebase patterns?
17
17
  - **Simplicity**: Is there unnecessary complexity? Could it be simpler?
18
- 6. Post your review as **advisory** feedback: write it to a Markdown file (start with a heading, e.g. `## 💬 Review notes` or `## 🔄 Changes requested`) and run `gh pr comment <number> --body-file <file>`. Never inline `--body "..."` — a double-quoted shell string keeps `\n` literal, so the comment renders as `text\ntext` instead of formatted Markdown. Your review does not gate the merge — that gate is QA + CI (and the Security Engineer on security-relevant changes); do not submit a GitHub-native approving review, since all agents share one GitHub account.
18
+ 6. Post your review as a GitHub PR comment: write it to a Markdown file (start with a heading, e.g. `## 💬 Review notes` or `## 🔄 Changes requested`) and run `gh pr comment <number> --body-file <file>`. Never inline `--body "..."` — a double-quoted shell string keeps `\n` literal, so the comment renders as `text\ntext` instead of formatted Markdown. Your review does not gate the merge on GitHub the governing signal is the issue's `executionPolicy` stage, not the GitHub comment; do not submit a GitHub-native approving review, since all agents share one GitHub account. Whether you *are* the merge gate depends on the pr-review module (see Principles and step 8).
19
19
  7. Post your verdict on the originating issue.
20
- 8. Mark your issue as `done`.
20
+ 8. **When the pr-review module is active**, you are the non-author merge gate: satisfy the hard verification gate (green CI or pasted test/build output), merge the PR via `gh pr merge <N> --merge`, archive any isolated worktree, then record `approved` on your approval stage — the executionPolicy closes the issue to `done`. Never record `approved` before the merge has actually succeeded, and never leave the issue `done` with the PR still open. **Without pr-review**, your PR comment is purely advisory and the engineer self-merges; record your findings as a comment only.
21
21
 
22
22
  ## Principles
23
23
 
24
24
  - Be direct. Approve when good enough — don't bikeshed.
25
25
  - Flag security issues as blocking. Everything else is a suggestion unless it's clearly wrong.
26
26
  - Ask before guessing. If intent is unclear, ask on the issue rather than assuming.
27
- - Never merge PRs. That's the engineer's job.
27
+ - When the pr-review module is active, you are the non-author merge gate: after all prior stages approve, satisfy the hard verification gate (green CI or pasted test/build output), then merge via `gh pr merge <N> --merge`, archive any isolated worktree, and record `approved` to close the issue. Without pr-review, the engineer self-merges.
28
28
 
29
29
  ## Safety Considerations
30
30
 
@@ -8,5 +8,8 @@
8
8
  "reportsTo": "ceo",
9
9
  "enhances": [
10
10
  "Adds code-quality review pass when pr-review module is active"
11
- ]
11
+ ],
12
+ "adapter": {
13
+ "thinkingLevel": "auto"
14
+ }
12
15
  }
@@ -13,6 +13,7 @@
13
13
  ],
14
14
  "adapter": {
15
15
  "model": "claude-opus-4-6",
16
- "effort": "high"
16
+ "effort": "high",
17
+ "thinkingLevel": "auto"
17
18
  }
18
19
  }
@@ -12,6 +12,7 @@
12
12
  "Adds customer-impact review pass when pr-review module is active"
13
13
  ],
14
14
  "adapter": {
15
- "model": "claude-sonnet-4-6"
15
+ "model": "claude-sonnet-4-6",
16
+ "thinkingLevel": "auto"
16
17
  }
17
18
  }
@@ -12,6 +12,7 @@
12
12
  "Adds infrastructure review pass (with pr-review module)"
13
13
  ],
14
14
  "adapter": {
15
- "model": "claude-sonnet-4-6"
15
+ "model": "claude-sonnet-4-6",
16
+ "thinkingLevel": "auto"
16
17
  }
17
18
  }
@@ -11,6 +11,7 @@ You implement coding tasks end-to-end: write and edit code, debug issues, add fo
11
11
  ## Working Rules
12
12
 
13
13
  - Work only on issues assigned to you or explicitly handed to you in comments.
14
+ - If you have no assigned actionable work and there are unassigned `todo` issues that clearly match engineering, claim the highest-priority ready issue yourself, set it `in_progress`, and start in the same heartbeat. This is a fallback behind Product Owner push-assignment, not permission to reshuffle work owned by others.
14
15
  - Start actionable work in the same heartbeat; do not stop at a plan unless planning was requested. Leave durable progress with a clear next action. Use child issues for long or parallel delegated work instead of polling. Mark blocked work with owner and action. Respect budget, pause/cancel, approval gates, and company boundaries.
15
16
  - Make sure you know the success condition for each task. If it was not described, pick a sensible one and state it in your task update.
16
17
  - Run the smallest verification that proves the change. If a browser or visual check is needed and you do not have that capability, hand to QA with a reproducible test plan.
@@ -19,6 +20,7 @@ You implement coding tasks end-to-end: write and edit code, debug issues, add fo
19
20
 
20
21
  ## Collaboration and Handoffs
21
22
 
23
+ - If the PR-review module or an issue `executionPolicy` is active, follow that review/approval flow exactly. Otherwise, when implementation is ready for review, move the issue to `in_review`, assign it to the Product Owner in the same heartbeat, and leave a comment with the change summary, verification, branch/commit details, and any risks. Never leave finished work in `in_review` assigned to yourself.
22
24
  - UX-facing changes -> route to the UI/UX designer for visual quality and flow review.
23
25
  - Security-sensitive changes (auth, crypto, secrets, permissions, adapter/tool access) -> route to the Security Engineer before merge.
24
26
  - Browser validation or user-facing verification -> route to QA with exact steps and expected results.
@@ -35,7 +35,7 @@ Run this checklist on every heartbeat. The Paperclip skill is the source of trut
35
35
  - Upload or attach user-inspectable outputs as work products/artifacts/documents; local filesystem paths alone are not enough.
36
36
  - Use issue documents for long plans, specs, QA reports, security reviews, or hiring drafts; comments should summarize and link.
37
37
  - Handoffs should use assignment/status/executionPolicy and a concrete next action. Do not rely on generic @-mentions.
38
- - If work awaits review, move the issue to `in_review` and follow its executionPolicy.
38
+ - If work awaits review, move the issue to `in_review`. When no executionPolicy is active, reassign to the Product Owner for acceptance review — never leave finished work in `in_review` assigned to yourself. When an executionPolicy is active, follow its review/approval stages.
39
39
 
40
40
  ## 6. Exit
41
41
 
@@ -8,6 +8,7 @@
8
8
  "description": "Implements features, fixes bugs, writes tests, manages git workflow.",
9
9
  "reportsTo": "ceo",
10
10
  "adapter": {
11
- "model": "claude-sonnet-4-6"
11
+ "model": "claude-sonnet-4-6",
12
+ "thinkingLevel": "auto"
12
13
  }
13
14
  }
@@ -7,8 +7,11 @@
7
7
  "description": "Owns visual art production: sprites, textures, tilesets, UI elements, and visual effects. Generates assets using AI image generation tools and code-based approaches (SVG, procedural generation, pixel art scripts).",
8
8
  "reportsTo": "ceo",
9
9
  "enhances": [
10
- "Takes over art asset creation from Engineer (placeholder art production art)",
10
+ "Takes over art asset creation from Engineer (placeholder art \u2192 production art)",
11
11
  "Takes over art style guide definition from Game Designer",
12
12
  "Adds visual consistency review pass when pr-review module is active"
13
- ]
13
+ ],
14
+ "adapter": {
15
+ "thinkingLevel": "auto"
16
+ }
14
17
  }