@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.
- package/CHANGELOG.md +58 -0
- package/README.md +7 -5
- package/dist/manifest.js +4 -9
- package/dist/manifest.js.map +2 -2
- package/dist/ui/index.css +82 -0
- package/dist/ui/index.css.map +2 -2
- package/dist/ui/index.js +423 -139
- package/dist/ui/index.js.map +4 -4
- package/dist/worker.js +589 -58
- package/dist/worker.js.map +3 -3
- package/package.json +1 -1
- package/templates/bootstrap-instructions.md +2 -2
- package/templates/modules/architecture-plan/agents/ui-designer/skills/design-system.md +1 -1
- package/templates/modules/architecture-plan/skills/architecture-plan.md +1 -1
- package/templates/modules/auto-assign/README.md +9 -7
- package/templates/modules/auto-assign/agents/ceo/heartbeat-section.md +3 -1
- package/templates/modules/auto-assign/agents/ceo/skills/auto-assign.fallback.md +14 -8
- package/templates/modules/auto-assign/agents/product-owner/heartbeat-section.md +3 -1
- package/templates/modules/auto-assign/module.meta.json +3 -3
- package/templates/modules/auto-assign/skills/auto-assign.md +2 -2
- package/templates/modules/backlog/agents/ceo/heartbeat-section.md +1 -1
- package/templates/modules/backlog/agents/ceo/skills/backlog-health.fallback.md +2 -0
- package/templates/modules/backlog/agents/product-owner/heartbeat-section.md +1 -1
- package/templates/modules/backlog/docs/backlog-process.md +45 -8
- package/templates/modules/backlog/docs/backlog-template.md +3 -2
- package/templates/modules/backlog/module.meta.json +3 -3
- package/templates/modules/backlog/skills/backlog-health.bar.md +3 -1
- package/templates/modules/backlog/skills/backlog-health.md +8 -5
- package/templates/modules/competitive-intel/skills/competitive-tracking.md +1 -1
- package/templates/modules/github-repo/README.md +3 -3
- package/templates/modules/github-repo/agents/engineer/skills/git-workflow.md +72 -9
- package/templates/modules/github-repo/docs/git-workflow.md +65 -6
- package/templates/modules/github-repo/module.meta.json +1 -1
- package/templates/modules/market-analysis/agents/ux-researcher/skills/market-analysis.md +1 -1
- package/templates/modules/market-analysis/skills/market-analysis.md +1 -1
- package/templates/modules/pr-review/agents/devops/skills/infra-review.md +6 -8
- package/templates/modules/pr-review/agents/engineer/skills/pr-workflow.md +31 -12
- package/templates/modules/pr-review/agents/product-owner/skills/product-review.md +3 -2
- package/templates/modules/pr-review/agents/ui-designer/skills/design-review.md +4 -6
- package/templates/modules/pr-review/agents/ux-researcher/skills/ux-review.md +4 -6
- package/templates/modules/pr-review/docs/pr-conventions.md +4 -4
- package/templates/modules/pr-review/module.meta.json +1 -1
- package/templates/modules/security-audit/skills/threat-model.md +1 -1
- package/templates/modules/stall-detection/agents/ceo/heartbeat-section.md +1 -1
- package/templates/modules/tech-stack/skills/tech-stack.md +1 -1
- package/templates/modules/triage/skills/issue-triage.md +1 -1
- package/templates/modules/user-testing/agents/qa/skills/user-testing.md +1 -1
- package/templates/modules/user-testing/skills/user-testing.md +1 -1
- package/templates/modules/vision-workshop/agents/ceo/skills/vision-workshop.md +1 -1
- package/templates/presets/repo-maintenance/preset.meta.json +3 -3
- package/templates/roles/audio-designer/role.meta.json +5 -2
- package/templates/roles/cmo/role.meta.json +2 -1
- package/templates/roles/code-reviewer/AGENTS.md +3 -3
- package/templates/roles/code-reviewer/role.meta.json +4 -1
- package/templates/roles/cto/role.meta.json +2 -1
- package/templates/roles/customer-success/role.meta.json +2 -1
- package/templates/roles/devops/role.meta.json +2 -1
- package/templates/roles/engineer/AGENTS.md +2 -0
- package/templates/roles/engineer/HEARTBEAT.md +1 -1
- package/templates/roles/engineer/role.meta.json +2 -1
- package/templates/roles/game-artist/role.meta.json +5 -2
- package/templates/roles/game-designer/role.meta.json +4 -1
- package/templates/roles/level-designer/role.meta.json +4 -1
- package/templates/roles/product-owner/AGENTS.md +2 -1
- package/templates/roles/product-owner/HEARTBEAT.md +1 -1
- package/templates/roles/product-owner/role.meta.json +4 -1
- package/templates/roles/qa/role.meta.json +2 -1
- package/templates/roles/security-engineer/role.meta.json +2 -1
- package/templates/roles/technical-writer/role.meta.json +2 -1
- package/templates/roles/ui-designer/role.meta.json +2 -1
- 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
|
-
##
|
|
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.
|
|
44
|
-
4.
|
|
45
|
-
5.
|
|
46
|
-
6.
|
|
47
|
-
7.
|
|
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
|
|
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
|
-
|
|
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
|
-
-
|
|
27
|
-
- Performance concerns are
|
|
28
|
-
-
|
|
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.
|
|
13
|
-
5.
|
|
14
|
-
6.
|
|
15
|
-
7.
|
|
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 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: 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
|
-
-
|
|
19
|
-
- An `approval` stage with the **Product Owner**
|
|
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,
|
|
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
|
-
|
|
24
|
-
|
|
25
|
-
|
|
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
|
-
-
|
|
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**
|
|
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
|
|
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
|
|
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
|
-
|
|
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
|
-
-
|
|
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
|
|
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
|
-
|
|
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
|
-
-
|
|
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 (
|
|
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
|
|
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
|
|
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
|
|
70
|
-
"description": "
|
|
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
|
|
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
|
}
|
|
@@ -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
|
|
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.
|
|
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
|
-
-
|
|
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
|
|
|
@@ -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`
|
|
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
|
|
|
@@ -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
|
|
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
|
}
|