@starlein/paperclip-plugin-company-wizard 0.4.22 → 0.6.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +120 -0
- package/README.md +29 -15
- package/dist/manifest.js +24 -9
- package/dist/manifest.js.map +2 -2
- package/dist/ui/index.css +636 -589
- package/dist/ui/index.css.map +2 -2
- package/dist/ui/index.js +365 -60
- package/dist/ui/index.js.map +4 -4
- package/dist/worker.js +22374 -5375
- package/dist/worker.js.map +4 -4
- package/docs/PAPERCLIP-COMPATIBILITY.md +66 -0
- package/package.json +10 -10
- package/templates/ai-wizard/interview-system.md +2 -0
- package/templates/ai-wizard/single-shot-system.md +2 -0
- package/templates/bootstrap-instructions.md +3 -3
- package/templates/modules/accessibility/agents/engineer/skills/accessibility-audit.fallback.md +2 -2
- package/templates/modules/accessibility/agents/ui-designer/skills/accessibility-audit.fallback.md +2 -2
- package/templates/modules/accessibility/module.meta.json +1 -1
- package/templates/modules/accessibility/skills/accessibility-audit.bar.md +1 -1
- package/templates/modules/accessibility/skills/accessibility-audit.md +1 -1
- package/templates/modules/architecture-plan/agents/ceo/skills/architecture-plan.bar.md +2 -2
- package/templates/modules/architecture-plan/agents/ceo/skills/architecture-plan.fallback.md +2 -2
- package/templates/modules/architecture-plan/agents/engineer/skills/design-system.fallback.md +2 -2
- package/templates/modules/architecture-plan/agents/ui-designer/skills/architecture-plan.md +2 -2
- package/templates/modules/architecture-plan/agents/ui-designer/skills/design-system.md +3 -3
- package/templates/modules/architecture-plan/module.meta.json +2 -2
- package/templates/modules/architecture-plan/skills/architecture-plan.bar.md +1 -1
- package/templates/modules/architecture-plan/skills/architecture-plan.md +3 -3
- package/templates/modules/architecture-plan/skills/design-system.md +5 -5
- package/templates/modules/auto-assign/README.md +4 -4
- package/templates/modules/auto-assign/agents/ceo/heartbeat-section.md +1 -1
- package/templates/modules/auto-assign/agents/ceo/skills/auto-assign.fallback.md +6 -6
- package/templates/modules/auto-assign/agents/product-owner/heartbeat-section.md +1 -1
- package/templates/modules/auto-assign/module.meta.json +1 -1
- package/templates/modules/auto-assign/skills/auto-assign.md +3 -2
- package/templates/modules/backlog/agents/ceo/heartbeat-section.md +1 -1
- package/templates/modules/backlog/agents/ceo/skills/backlog-health.fallback.md +9 -9
- package/templates/modules/backlog/agents/product-owner/heartbeat-section.md +1 -1
- package/templates/modules/backlog/docs/backlog-process.md +36 -21
- package/templates/modules/backlog/docs/backlog-template.md +10 -9
- package/templates/modules/backlog/module.meta.json +2 -2
- package/templates/modules/backlog/skills/backlog-health.bar.md +3 -3
- package/templates/modules/backlog/skills/backlog-health.md +16 -15
- package/templates/modules/brand-identity/agents/ceo/skills/brand-identity.fallback.md +2 -2
- package/templates/modules/brand-identity/agents/cmo/skills/brand-identity.fallback.md +2 -2
- package/templates/modules/brand-identity/module.meta.json +1 -1
- package/templates/modules/brand-identity/skills/brand-identity.bar.md +1 -1
- package/templates/modules/brand-identity/skills/brand-identity.md +3 -3
- package/templates/modules/build-api/skills/api-design.bar.md +1 -1
- package/templates/modules/build-api/skills/api-design.md +1 -1
- package/templates/modules/ci-cd/agents/devops/skills/ci-cd.md +1 -1
- package/templates/modules/ci-cd/agents/engineer/skills/ci-cd.fallback.md +2 -2
- package/templates/modules/ci-cd/module.meta.json +1 -1
- package/templates/modules/ci-cd/skills/ci-cd.bar.md +1 -1
- package/templates/modules/ci-cd/skills/ci-cd.md +6 -4
- package/templates/modules/codebase-onboarding/agents/ceo/skills/codebase-audit.fallback.md +5 -5
- package/templates/modules/codebase-onboarding/module.meta.json +1 -1
- package/templates/modules/codebase-onboarding/skills/codebase-audit.bar.md +1 -1
- package/templates/modules/codebase-onboarding/skills/codebase-audit.md +2 -2
- package/templates/modules/competitive-intel/agents/ceo/skills/competitive-tracking.fallback.md +2 -2
- package/templates/modules/competitive-intel/agents/cmo/skills/competitive-tracking.fallback.md +2 -2
- package/templates/modules/competitive-intel/agents/customer-success/skills/competitive-tracking.md +2 -2
- package/templates/modules/competitive-intel/agents/product-owner/skills/competitive-tracking.fallback.md +2 -2
- package/templates/modules/competitive-intel/module.meta.json +1 -1
- package/templates/modules/competitive-intel/skills/competitive-tracking.bar.md +2 -2
- package/templates/modules/competitive-intel/skills/competitive-tracking.md +3 -3
- package/templates/modules/dependency-management/agents/engineer/skills/dependency-audit.fallback.md +2 -2
- package/templates/modules/dependency-management/agents/security-engineer/skills/dependency-audit.fallback.md +2 -2
- package/templates/modules/dependency-management/module.meta.json +2 -2
- package/templates/modules/dependency-management/skills/dependency-audit.md +2 -2
- package/templates/modules/game-design/agents/ceo/skills/game-design.fallback.md +1 -1
- package/templates/modules/game-design/agents/engineer/skills/game-design.fallback.md +1 -1
- package/templates/modules/game-design/agents/game-designer/skills/game-design.md +2 -2
- package/templates/modules/game-design/module.meta.json +1 -1
- package/templates/modules/game-design/skills/audio-design.fallback.md +2 -2
- package/templates/modules/game-design/skills/audio-design.md +3 -3
- package/templates/modules/game-design/skills/game-design.bar.md +1 -1
- package/templates/modules/game-design/skills/game-design.md +3 -3
- package/templates/modules/game-design/skills/level-design.fallback.md +2 -2
- package/templates/modules/game-design/skills/level-design.md +4 -4
- package/templates/modules/github-repo/agents/engineer/skills/git-workflow.md +15 -14
- package/templates/modules/github-repo/docs/git-workflow.md +7 -7
- package/templates/modules/github-repo/module.meta.json +1 -1
- package/templates/modules/lean-delivery/docs/lean-delivery.md +15 -0
- package/templates/modules/lean-delivery/module.meta.json +6 -0
- package/templates/modules/market-analysis/agents/ceo/skills/market-analysis.fallback.md +2 -2
- package/templates/modules/market-analysis/agents/cmo/skills/market-analysis.fallback.md +2 -2
- package/templates/modules/market-analysis/agents/product-owner/skills/market-analysis.fallback.md +2 -2
- package/templates/modules/market-analysis/agents/ux-researcher/skills/market-analysis.md +2 -2
- package/templates/modules/market-analysis/module.meta.json +1 -1
- package/templates/modules/market-analysis/skills/market-analysis.bar.md +1 -1
- package/templates/modules/market-analysis/skills/market-analysis.md +2 -2
- package/templates/modules/monitoring/agents/devops/skills/monitoring.md +1 -1
- package/templates/modules/monitoring/agents/engineer/skills/monitoring.fallback.md +2 -2
- package/templates/modules/monitoring/module.meta.json +1 -1
- package/templates/modules/monitoring/skills/monitoring.bar.md +1 -1
- package/templates/modules/monitoring/skills/monitoring.md +3 -3
- package/templates/modules/pr-review/README.md +10 -12
- package/templates/modules/pr-review/agents/code-reviewer/skills/code-review.md +16 -13
- package/templates/modules/pr-review/agents/devops/skills/infra-review.md +2 -2
- package/templates/modules/pr-review/agents/engineer/skills/pr-workflow.md +36 -26
- package/templates/modules/pr-review/agents/product-owner/skills/product-review.md +8 -8
- package/templates/modules/pr-review/agents/qa/skills/qa-review.md +10 -10
- package/templates/modules/pr-review/agents/security-engineer/skills/pr-security-review.md +5 -4
- package/templates/modules/pr-review/agents/ui-designer/skills/design-review.md +4 -4
- package/templates/modules/pr-review/agents/ux-researcher/skills/ux-review.md +3 -3
- package/templates/modules/pr-review/docs/pr-conventions.md +22 -26
- package/templates/modules/pr-review/module.meta.json +2 -2
- package/templates/modules/release-management/agents/ceo/skills/release-process.fallback.md +2 -2
- package/templates/modules/release-management/agents/engineer/skills/release-process.fallback.md +2 -2
- package/templates/modules/release-management/module.meta.json +3 -3
- package/templates/modules/release-management/skills/release-process.md +2 -2
- package/templates/modules/security-audit/agents/devops/skills/security-review.fallback.md +2 -2
- package/templates/modules/security-audit/agents/devops/skills/threat-model.fallback.md +2 -2
- package/templates/modules/security-audit/agents/engineer/skills/security-review.fallback.md +2 -2
- package/templates/modules/security-audit/agents/engineer/skills/threat-model.fallback.md +2 -2
- package/templates/modules/security-audit/module.meta.json +2 -2
- package/templates/modules/security-audit/skills/security-review.bar.md +1 -1
- package/templates/modules/security-audit/skills/security-review.md +1 -1
- package/templates/modules/security-audit/skills/threat-model.bar.md +1 -1
- package/templates/modules/security-audit/skills/threat-model.md +3 -3
- package/templates/modules/stall-detection/agents/ceo/heartbeat-section.md +1 -1
- package/templates/modules/stall-detection/agents/ceo/skills/stall-detection.md +19 -16
- package/templates/modules/tech-stack/agents/ceo/skills/tech-stack.fallback.md +2 -2
- package/templates/modules/tech-stack/module.meta.json +1 -1
- package/templates/modules/tech-stack/skills/tech-stack.bar.md +1 -1
- package/templates/modules/tech-stack/skills/tech-stack.md +2 -2
- package/templates/modules/triage/agents/ceo/skills/issue-triage.fallback.md +1 -1
- package/templates/modules/triage/agents/engineer/skills/issue-triage.fallback.md +1 -1
- package/templates/modules/triage/skills/issue-triage.md +1 -1
- package/templates/modules/user-testing/agents/ceo/skills/user-testing.fallback.md +2 -2
- package/templates/modules/user-testing/agents/product-owner/skills/user-testing.fallback.md +2 -2
- package/templates/modules/user-testing/agents/qa/skills/user-testing.md +2 -2
- package/templates/modules/user-testing/agents/ux-researcher/skills/user-testing.fallback.md +2 -2
- package/templates/modules/user-testing/module.meta.json +1 -1
- package/templates/modules/user-testing/skills/user-testing.md +2 -2
- package/templates/modules/vision-workshop/agents/ceo/skills/vision-workshop.md +2 -2
- package/templates/modules/vision-workshop/agents/ux-researcher/skills/vision-workshop.md +1 -1
- package/templates/modules/vision-workshop/module.meta.json +1 -1
- package/templates/modules/website-relaunch/agents/ui-designer/skills/site-audit.md +1 -1
- package/templates/modules/website-relaunch/module.meta.json +7 -7
- package/templates/modules/website-relaunch/skills/design-ingestion.md +1 -1
- package/templates/modules/website-relaunch/skills/site-audit.md +1 -1
- package/templates/presets/build-game/preset.meta.json +6 -6
- package/templates/presets/repo-maintenance/preset.meta.json +20 -21
- package/templates/roles/audio-designer/HEARTBEAT.md +1 -1
- package/templates/roles/ceo/AGENTS.md +2 -0
- package/templates/roles/ceo/HEARTBEAT.md +1 -1
- package/templates/roles/ceo/role.meta.json +1 -1
- package/templates/roles/cmo/HEARTBEAT.md +1 -1
- package/templates/roles/code-reviewer/AGENTS.md +3 -1
- package/templates/roles/code-reviewer/HEARTBEAT.md +1 -1
- package/templates/roles/cto/HEARTBEAT.md +1 -1
- package/templates/roles/customer-success/HEARTBEAT.md +1 -1
- package/templates/roles/devops/HEARTBEAT.md +1 -1
- package/templates/roles/engineer/AGENTS.md +3 -3
- package/templates/roles/engineer/HEARTBEAT.md +2 -2
- package/templates/roles/game-artist/HEARTBEAT.md +1 -1
- package/templates/roles/game-designer/HEARTBEAT.md +1 -1
- package/templates/roles/level-designer/HEARTBEAT.md +1 -1
- package/templates/roles/product-owner/AGENTS.md +1 -1
- package/templates/roles/product-owner/HEARTBEAT.md +2 -2
- package/templates/roles/qa/HEARTBEAT.md +4 -4
- package/templates/roles/security-engineer/AGENTS.md +2 -2
- package/templates/roles/security-engineer/HEARTBEAT.md +1 -1
- package/templates/roles/technical-writer/HEARTBEAT.md +1 -1
- package/templates/roles/ui-designer/HEARTBEAT.md +1 -1
- package/templates/roles/ux-researcher/HEARTBEAT.md +1 -1
|
@@ -8,6 +8,8 @@
|
|
|
8
8
|
|
|
9
9
|
Where `<prefix>` is the company issue prefix (lowercase) and `<N>` is the issue number.
|
|
10
10
|
|
|
11
|
+
When Paperclip has already created a managed issue branch, preserve its supplied name. This naming convention applies only when you must create a branch yourself; it does not authorize switching or renaming the branch in a managed worktree.
|
|
12
|
+
|
|
11
13
|
Examples: `yes-6/add-auth-endpoint`, `yes-12/fix-game-loop`
|
|
12
14
|
|
|
13
15
|
## PR Title
|
|
@@ -61,48 +63,42 @@ Apply one primary label: `feature`, `bug`, `docs`, `chore`, `infra`, `agent`.
|
|
|
61
63
|
|
|
62
64
|
## Review Workflow
|
|
63
65
|
|
|
64
|
-
Review runs through the issue's
|
|
66
|
+
Review runs through the originating issue's `executionPolicy`, not separate child issues. The gate is **exact-head verification, not opinion**. By default, use role-based stages: QA review, Security review only for security-relevant changes, Product Owner approval, then the Code Reviewer merge gate. Omit absent roles and the executor. If `docs/lean-delivery.md` exists, the optional lean-delivery contract replaces this chain with one Code Reviewer merge gate and risk-triggered specialist evidence.
|
|
65
67
|
|
|
66
68
|
1. **Engineer** resolves the project/worktree base ref before branching from `heartbeat-context` / project workspace metadata. Use the configured `repoRef`, `defaultRef`, or `executionWorkspacePolicy.workspaceStrategy.baseRef` exactly as Paperclip provides it. PRs must target the corresponding GitHub base and must not silently target the wrong branch.
|
|
67
69
|
2. **Engineer** opens the PR on GitHub and adds the PR link as an issue comment.
|
|
68
|
-
3. **Engineer** sets the
|
|
69
|
-
|
|
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** 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
|
-
Resolve each role to its agentId. **Never list the issue's assignee/executor (whoever did the work — engineer, QA, or any role) as a participant in any stage** — the runtime excludes the original executor from every stage, so such a stage has no eligible participant and the issue stalls (`422 No eligible approval participant`). This applies to **every** stage, but is fatal in the **first** stage: a first stage listing only the assignee cannot be passed, so the issue stalls at stage 1 (`422 Only the active reviewer or approver can advance the current execution stage`) even when later stages have non-author participants. If the policy ended up with the assignee as the first/only participant of a stage, recover with `PATCH /api/issues/{id}` `{"executionPolicy":null}` (returns the issue to `in_progress`), then re-set stages with a non-author first stage — or, with no Code Reviewer, self-merge via `gh pr merge <N> --merge`. Non-engineer roles (e.g. QA) must not author implementation work and then self-review it; implementation work belongs to the engineer.
|
|
70
|
+
3. **Engineer** sets the selected workflow's stages before entering review, with a final `approval` stage for the **Code Reviewer** as non-author merge gate. In lean delivery, this is the only stage and all triggered specialist handoffs must return before review begins. When no eligible non-author Code Reviewer is on the team, set no executionPolicy stages and use PR Self-Merge Flow.
|
|
71
|
+
Resolve each role to its agentId. **Never list the issue's assignee/executor (whoever did the work — engineer, QA, or any role) as a participant in any stage** — Paperclip selects each stage's participant by excluding the recorded return assignee (the implementation owner), so such a stage has no eligible participant and the request is rejected with `422 No eligible <review|approval> participant is configured for this issue`. This applies to **every** stage, but is fatal in the **first** stage: the PATCH that would open the review is refused outright, so the issue never reaches `in_review` even when later stages have non-author participants. (`422 Only the active reviewer or approver can advance the current execution stage` is a different error — it fires when someone who is not the active participant tries to advance a stage that is already pending.) If the policy ended up with the assignee as the first/only participant of a stage, recover with `PATCH /api/issues/{id}` `{"executionPolicy":null}` (returns the issue to `in_progress`), then re-set stages with a non-author first stage — or, with no Code Reviewer, self-merge via `gh pr merge <N> --merge`. Non-engineer roles (e.g. QA) must not author implementation work and then self-review it; implementation work belongs to the engineer.
|
|
74
72
|
4. **Engineer** sets the issue to `in_review`.
|
|
75
|
-
5.
|
|
76
|
-
6. **
|
|
77
|
-
7.
|
|
78
|
-
8.
|
|
79
|
-
9. **Code Reviewer** owns the final `approval` stage (merge gate): once reviewers and the Product Owner have approved, the Code Reviewer satisfies the hard gate (CI green, or runs the tests/build and pastes the output), merges the PR into the correct configured base, confirms the merge landed, preserves the isolated execution workspace for reuse, and only then records `approved` — which closes the issue to `done`. The merge owner must be a non-author: Paperclip excludes the issue's executor (the engineer) from every stage, so the engineer cannot be the merge gate.
|
|
73
|
+
5. In standard review, each active QA/Security/Product stage records its verdict through the executionPolicy, which wakes the next participant. In lean delivery, these roles contribute bounded same-issue evidence only for a concrete trigger before the merge gate, returning the issue to the implementation owner rather than advancing policy stages. UI/UX and DevOps remain advisory in both modes.
|
|
74
|
+
6. **Code Reviewer** verifies the exact head/base, required CI, and triggered evidence, merges into the configured base, confirms the merge landed, and only then records `approved` — which closes the issue.
|
|
75
|
+
7. A correction returns to the same implementation owner, issue, branch, and PR. Board users are not execution participants for technical defects; use a first-class board decision only for irreducible product, legal, licensing, or residual-risk acceptance.
|
|
76
|
+
8. Review rounds are capped by the runtime: after 3 consecutive agent-initiated `changes_requested` rounds on one stage (default; `executionPolicy.maxReviewRounds` overrides it), Paperclip keeps the stage pending and assigns it to the issue's responsible/creating human rather than the implementation owner. That escalation is expected behavior — comment the context that person needs and let them decide; their decision resets the counter.
|
|
80
77
|
|
|
81
78
|
## Review Roles
|
|
82
79
|
|
|
83
|
-
- **
|
|
84
|
-
- **Security
|
|
85
|
-
- **
|
|
86
|
-
- **Code Reviewer
|
|
87
|
-
- **Domain reviewers** (advisory): optional, non-blocking comments on correctness, clarity, design, accessibility, UX. They never gate the merge.
|
|
80
|
+
- **Product Owner**: defines acceptance before implementation; approves intent/scope in standard review. In lean delivery, returns only for a concrete unresolved decision.
|
|
81
|
+
- **QA / Security**: QA reviews by default and Security reviews security-relevant changes in standard mode. In lean delivery, both provide only risk-triggered bounded evidence.
|
|
82
|
+
- **UI/UX / DevOps**: risk-triggered advisory evidence on the originating issue in either mode.
|
|
83
|
+
- **Code Reviewer**: final non-author approval stage, exact-head verifier, and merge owner (sole stage in lean delivery). When absent or the author, the engineer self-merges with no executionPolicy stages.
|
|
88
84
|
|
|
89
85
|
## Merge Rules
|
|
90
86
|
|
|
91
|
-
The hard gate is **
|
|
87
|
+
The hard gate is **exact-head verification**, enforced by the Code Reviewer merge stage.
|
|
88
|
+
|
|
89
|
+
**When required company CI is available, it is authoritative on the exact reviewed head.** Cite the head SHA and required green checks, then run only the smallest independent check needed for a risky or unclear part of the diff. Do not duplicate the complete lint/test/typecheck/build suite. When company CI is unavailable, run the complete local gate once and record the real output.
|
|
92
90
|
|
|
93
|
-
|
|
91
|
+
Selecting `ci-cd` does not prove required checks exist yet. Use the local fallback until they exist on the reviewed head. Pending or failed required checks are not unavailable CI: wait for or repair them, rather than substituting local output. Branch-protection requirements remain binding even for checks the company did not configure.
|
|
94
92
|
|
|
95
|
-
**CI is a gate only when this company runs its own CI/CD** — i.e. the `ci-cd` module is active (you have the `ci-cd` skill and a `docs/CI-CD*.md` the company authored). In that case the company-owned CI (lint/test/build) must be **green** before the merge gate merges, with one narrow exception: the baseline-restore PR (`fix(ci): restore base CI`) may merge when the base branch's own CI is red and the PR carries cited local-executed verification that its scoped diff reduces the base failure set (remaining failing checks exactly the inherited baseline set). See
|
|
93
|
+
**CI is a gate only when this company runs its own CI/CD** — i.e. the `ci-cd` module is active (you have the `ci-cd` skill and a `docs/CI-CD*.md` the company authored). In that case the company-owned CI (lint/test/build) must be **green** before the merge gate merges, with one narrow exception: the baseline-restore PR (`fix(ci): restore base CI`) may merge when the base branch's own CI is red and the PR carries cited local-executed verification that its scoped diff reduces the base failure set (remaining failing checks exactly the inherited baseline set). See `docs/git-workflow.md` → *Base-branch-red deadlock* and *Narrow exception*. A feature PR on a red company-owned base is never merged; the merge gate records `changes_requested` citing `BASE-BRANCH-RED` and routes back with "waiting-on-baseline".
|
|
96
94
|
|
|
97
|
-
**When the company did NOT set up CI/CD** (no `ci-cd` module):
|
|
98
|
-
-
|
|
99
|
-
-
|
|
100
|
-
- Domain reviewers are advisory — blocking only when they escalate a concern that QA, the Security Engineer, or the merge gate then acts on.
|
|
101
|
-
- No force pushes.
|
|
95
|
+
**When the company did NOT set up CI/CD** (no `ci-cd` module): existing required checks and repository rules remain binding, regardless of who configured them. Only optional, non-required checks are advisory. Investigate failures that indicate a defect in the diff; use the complete local gate when no required CI exists. Do not disable protections or bypass a required failing check to make the workflow fit shared credentials.
|
|
96
|
+
- Triggered specialist evidence must be resolved on the originating issue before merge; completed evidence is not replayed after every correction.
|
|
97
|
+
- No force pushes to the base or someone else's branch. After rebasing your own issue branch, use only `--force-with-lease`.
|
|
102
98
|
- Merge using `gh pr merge <number> --merge`.
|
|
103
99
|
- Before merge, verify the PR base matches the configured project/worktree base from `heartbeat-context`. Retarget before review/merge if needed.
|
|
104
100
|
- The Code Reviewer is the merge owner (a non-author); the engineer who wrote the PR cannot merge it.
|
|
105
|
-
- The merge gate
|
|
101
|
+
- The merge gate is the **last stage** (the only stage in lean delivery) and must be a non-author. The issue's executor is never a participant.
|
|
106
102
|
- If Paperclip created an isolated execution workspace for the issue, leave it reusable after the PR is merged and the tree is clean. Do not archive/delete it as part of recording approval or marking the issue `done`; review, follow-up, or dependent work may still reference it. Workspace retirement is a separate board/operator action.
|
|
107
103
|
- Do not configure GitHub branch protection to require approving reviews unless the project has distinct non-author GitHub reviewer credentials; all agents using one GitHub account cannot formally approve their own PRs.
|
|
108
104
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pr-review",
|
|
3
|
-
"description": "Coordinates
|
|
3
|
+
"description": "Coordinates PR review through native executionPolicy stages: QA review, Product approval, then a non-author Code Reviewer merge gate, using roles present. Select the optional lean-delivery module to replace this chain with one merge gate and risk-triggered specialist evidence. Without a Code Reviewer, use the self-merge path.",
|
|
4
4
|
"requires": [
|
|
5
5
|
"github-repo"
|
|
6
6
|
],
|
|
@@ -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
|
|
28
|
+
"description": "Document and verify the selected PR workflow via the issue's executionPolicy and docs/pr-conventions.md. Standard stages are QA review when present, Security review only for a security-relevant change, Product Owner approval when present, and a final non-author Code Reviewer approval/merge gate. If docs/lean-delivery.md exists, it replaces the standard chain with exactly one Code Reviewer stage; triggered specialists provide bounded same-issue evidence before that gate, not serial stages. The implementation owner keeps the same issue, branch, and PR through corrections. Verify required company CI on the exact reviewed head; until required checks exist, run the complete local gate once. Pending or failed required checks must be awaited or repaired, not bypassed with local output. The Code Reviewer merges before recording approved, so the issue cannot become done with an open PR. Never list the executor/author as a stage participant: Paperclip excludes the original executor and an author-only stage stalls with 422. Technical corrections return to the implementation owner, not the board user. Use first-class interactions/approvals for genuine human decisions. When no eligible non-author Code Reviewer is present, set no executionPolicy stages and use PR-Self-Merge mode (`gh pr merge <N> --merge`)."
|
|
29
29
|
}
|
|
30
30
|
]
|
|
31
31
|
}
|
|
@@ -4,13 +4,13 @@ You are acting as a fallback for this capability because neither a devops agent
|
|
|
4
4
|
|
|
5
5
|
## What you should do
|
|
6
6
|
|
|
7
|
-
1. Check if
|
|
7
|
+
1. Check if `docs/RELEASE-PROCESS.md` exists. If not, create it with:
|
|
8
8
|
- Versioning convention (SemVer: `MAJOR.MINOR.PATCH`)
|
|
9
9
|
- Branch and tagging strategy (e.g., tag `vX.Y.Z` on the default branch after each release)
|
|
10
10
|
- Changelog format: Conventional Commits → CHANGELOG.md grouping
|
|
11
11
|
- Note: "This document was created by the CEO as a placeholder. A devops or engineer agent should implement and automate the release pipeline."
|
|
12
12
|
2. Check if the project has a CHANGELOG.md. If not, create one with a `## Unreleased` section listing the current commits since the last tag (use `git log --oneline`).
|
|
13
|
-
3. Create a follow-up issue: "Implement automated release pipeline" assigned to `capability:ci-cd` or directly to an engineer, linking to
|
|
13
|
+
3. Create a follow-up issue: "Implement automated release pipeline" assigned to `capability:ci-cd` or directly to an engineer, linking to `docs/RELEASE-PROCESS.md`.
|
|
14
14
|
4. Mark this issue done. **Do not push tags, create GitHub releases, or modify version files** — those actions require a devops or engineer agent.
|
|
15
15
|
|
|
16
16
|
## Rules
|
package/templates/modules/release-management/agents/engineer/skills/release-process.fallback.md
CHANGED
|
@@ -4,9 +4,9 @@ DevOps primarily owns the release process. You are the fallback — step in only
|
|
|
4
4
|
|
|
5
5
|
## Release Process (Fallback)
|
|
6
6
|
|
|
7
|
-
1. If no
|
|
7
|
+
1. If no `docs/RELEASE-PROCESS.md` exists and DevOps hasn't started:
|
|
8
8
|
- Check the project for existing versioning (git tags, package.json version)
|
|
9
|
-
- Document the current state in
|
|
9
|
+
- Document the current state in `docs/RELEASE-PROCESS.md`
|
|
10
10
|
- If no process exists, set up basic semver + CHANGELOG.md
|
|
11
11
|
- Mark the document as **provisional** — it needs DevOps review for CI integration and rollback procedures
|
|
12
12
|
2. If DevOps is active, skip this entirely.
|
|
@@ -19,16 +19,16 @@
|
|
|
19
19
|
{
|
|
20
20
|
"title": "Document or establish release process",
|
|
21
21
|
"assignTo": "capability:release-process",
|
|
22
|
-
"description": "Review the current release workflow. If one exists, document it in
|
|
22
|
+
"description": "Review the current release workflow. If one exists, document it in docs/RELEASE-PROCESS.md. If not, establish a semver + changelog workflow with tagging conventions."
|
|
23
23
|
}
|
|
24
24
|
],
|
|
25
25
|
"routines": [
|
|
26
26
|
{
|
|
27
|
-
"
|
|
27
|
+
"title": "Release readiness check",
|
|
28
28
|
"description": "Check for unreleased changes and cut a release if warranted.",
|
|
29
29
|
"assignTo": "capability:release-process",
|
|
30
30
|
"schedule": "0 9 * * 1",
|
|
31
|
-
"concurrencyPolicy": "
|
|
31
|
+
"concurrencyPolicy": "skip_if_active"
|
|
32
32
|
}
|
|
33
33
|
]
|
|
34
34
|
}
|
|
@@ -10,7 +10,7 @@ You are responsible for managing the release lifecycle — versioning, changelog
|
|
|
10
10
|
- A release branch strategy or tag-based releases
|
|
11
11
|
- CI/CD release automation (GitHub Actions release workflow, etc.)
|
|
12
12
|
|
|
13
|
-
2. **Establish or document the release process** in
|
|
13
|
+
2. **Establish or document the release process** in `docs/RELEASE-PROCESS.md`:
|
|
14
14
|
- **Versioning** — Semantic Versioning (MAJOR.MINOR.PATCH). Document what constitutes each level.
|
|
15
15
|
- **Changelog** — Keep a CHANGELOG.md following Keep a Changelog format. Update it with every release.
|
|
16
16
|
- **Tagging** — Tag releases as `vX.Y.Z`. Tags trigger release workflows if CI is configured.
|
|
@@ -34,7 +34,7 @@ You are responsible for managing the release lifecycle — versioning, changelog
|
|
|
34
34
|
When assigned a "Release readiness check" routine-run issue:
|
|
35
35
|
|
|
36
36
|
1. Check if unreleased changes have accumulated since the last release: `git log <last-tag>..HEAD --oneline`. If no unreleased commits, mark done.
|
|
37
|
-
2. Review
|
|
37
|
+
2. Review `docs/CHANGELOG.md` or commit log for breaking changes, new features, or bug fixes that warrant a version bump.
|
|
38
38
|
3. Run the full test suite and build. If failing, create a blocking issue and escalate before continuing.
|
|
39
39
|
4. If a release is warranted, follow the release steps in the *Setup* section of this skill to cut the release. Otherwise leave a comment noting the check result and mark the routine issue done.
|
|
40
40
|
|
|
@@ -4,10 +4,10 @@ The Security Engineer owns security review above you. You are the fallback — s
|
|
|
4
4
|
|
|
5
5
|
## Security Review (Fallback)
|
|
6
6
|
|
|
7
|
-
1. If no
|
|
7
|
+
1. If no `docs/SECURITY-REVIEW.md` exists and the Security Engineer hasn't started:
|
|
8
8
|
- Audit infrastructure config: Dockerfiles, CI/CD pipelines, cloud IAM, secrets management
|
|
9
9
|
- Check deployment security: TLS, security headers, network policies
|
|
10
|
-
- Document in
|
|
10
|
+
- Document in `docs/SECURITY-REVIEW.md`
|
|
11
11
|
- Tag the Security Engineer to expand with application-layer review
|
|
12
12
|
2. If the Security Engineer is active, skip this entirely.
|
|
13
13
|
|
|
@@ -4,10 +4,10 @@ The Security Engineer owns threat modeling above you. You are the fallback — s
|
|
|
4
4
|
|
|
5
5
|
## Threat Model (Fallback)
|
|
6
6
|
|
|
7
|
-
1. If no
|
|
7
|
+
1. If no `docs/THREAT-MODEL.md` exists and the Security Engineer hasn't started:
|
|
8
8
|
- Map the infrastructure attack surface: exposed ports, network boundaries, cloud IAM
|
|
9
9
|
- Identify deployment-specific risks: container escapes, supply chain, CI/CD pipeline security
|
|
10
|
-
- Document in
|
|
10
|
+
- Document in `docs/THREAT-MODEL.md`
|
|
11
11
|
- Tag the Security Engineer to expand with application-layer analysis
|
|
12
12
|
2. If the Security Engineer is active, skip this entirely.
|
|
13
13
|
|
|
@@ -4,10 +4,10 @@ The Security Engineer and DevOps own security review above you. You are the last
|
|
|
4
4
|
|
|
5
5
|
## Security Review (Fallback)
|
|
6
6
|
|
|
7
|
-
1. If no
|
|
7
|
+
1. If no `docs/SECURITY-REVIEW.md` exists and the Security Engineer hasn't started:
|
|
8
8
|
- Run `npm audit` (or equivalent) and document critical CVEs
|
|
9
9
|
- Check for obvious issues: hardcoded secrets, missing input validation, permissive CORS
|
|
10
|
-
- Document in
|
|
10
|
+
- Document in `docs/SECURITY-REVIEW.md`
|
|
11
11
|
- Tag the Security Engineer or DevOps to expand the review
|
|
12
12
|
2. If the Security Engineer or DevOps is active, skip this entirely.
|
|
13
13
|
|
|
@@ -4,10 +4,10 @@ The Security Engineer and DevOps own threat modeling above you. You are the last
|
|
|
4
4
|
|
|
5
5
|
## Threat Model (Fallback)
|
|
6
6
|
|
|
7
|
-
1. If no
|
|
7
|
+
1. If no `docs/THREAT-MODEL.md` exists and the Security Engineer hasn't started:
|
|
8
8
|
- Write a brief security overview: main attack surfaces, obvious risks
|
|
9
9
|
- Focus on the OWASP Top 10 most relevant to the project
|
|
10
|
-
- Document in
|
|
10
|
+
- Document in `docs/THREAT-MODEL.md`
|
|
11
11
|
- Tag the Security Engineer or DevOps to expand and maintain the model
|
|
12
12
|
2. If the Security Engineer or DevOps is active, skip this entirely.
|
|
13
13
|
|
|
@@ -25,12 +25,12 @@
|
|
|
25
25
|
{
|
|
26
26
|
"title": "Conduct initial threat model",
|
|
27
27
|
"assignTo": "capability:threat-model",
|
|
28
|
-
"description": "Identify attack surfaces, trust boundaries, and data flows using STRIDE methodology. Document the threat model in
|
|
28
|
+
"description": "Identify attack surfaces, trust boundaries, and data flows using STRIDE methodology. Document the threat model in docs/THREAT-MODEL.md with risk ratings and mitigation recommendations."
|
|
29
29
|
},
|
|
30
30
|
{
|
|
31
31
|
"title": "Perform initial security review",
|
|
32
32
|
"assignTo": "capability:security-review",
|
|
33
|
-
"description": "Audit the codebase for OWASP Top 10 vulnerabilities, dependency CVEs, secrets exposure, and configuration issues. Document findings in
|
|
33
|
+
"description": "Audit the codebase for OWASP Top 10 vulnerabilities, dependency CVEs, secrets exposure, and configuration issues. Document findings in docs/SECURITY-REVIEW.md with severity ratings."
|
|
34
34
|
}
|
|
35
35
|
]
|
|
36
36
|
}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
A good security review:
|
|
4
4
|
|
|
5
|
-
- A
|
|
5
|
+
- A `docs/SECURITY-REVIEW.md` with findings that include: severity (Critical / High / Medium / Low), exact file path and line number, the evidence (code snippet or reproduction step), and a specific recommended fix.
|
|
6
6
|
- A dependency report with CVE details from `npm audit` or equivalent. Critical and High findings have follow-up issues created.
|
|
7
7
|
|
|
8
8
|
Not done:
|
|
@@ -11,7 +11,7 @@ You own security code review for the project. This catches vulnerabilities in th
|
|
|
11
11
|
- **Data exposure**: Leaked secrets, verbose errors, unnecessary data in responses
|
|
12
12
|
- **Dependencies**: Known CVEs in dependencies (`npm audit` or equivalent)
|
|
13
13
|
- **Configuration**: Missing security headers, permissive CORS, debug mode in production
|
|
14
|
-
2. Document in
|
|
14
|
+
2. Document in `docs/SECURITY-REVIEW.md`:
|
|
15
15
|
- **Findings** with severity (Critical/High/Medium/Low), location, and evidence
|
|
16
16
|
- **Recommendations** for each finding with specific fix guidance
|
|
17
17
|
- **Dependency report** with CVE details
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
A good threat model:
|
|
4
4
|
|
|
5
|
-
- A
|
|
5
|
+
- A `docs/THREAT-MODEL.md` with a system overview that includes components, data flows, and explicit trust boundaries; STRIDE threats against the identified attack surfaces; a risk rating (Likelihood × Impact) for each threat; and mitigations for every Critical and High risk.
|
|
6
6
|
- Critical and High risks have corresponding follow-up issues with specific remediation tasks.
|
|
7
7
|
|
|
8
8
|
Not done:
|
|
@@ -4,15 +4,15 @@ You own threat modeling for the project. This identifies security risks before t
|
|
|
4
4
|
|
|
5
5
|
## Threat Modeling Process
|
|
6
6
|
|
|
7
|
-
1. Review the system architecture — if
|
|
8
|
-
2. Document in
|
|
7
|
+
1. Review the system architecture — if `docs/ARCHITECTURE.md` exists, use it as the starting point. Otherwise, analyze the codebase structure directly.
|
|
8
|
+
2. Document in `docs/THREAT-MODEL.md`:
|
|
9
9
|
- **System overview**: Components, data flows, trust boundaries
|
|
10
10
|
- **Attack surfaces**: Entry points, APIs, user inputs, external integrations
|
|
11
11
|
- **Threats (STRIDE)**: Spoofing, Tampering, Repudiation, Information Disclosure, Denial of Service, Elevation of Privilege
|
|
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
|
|
15
|
+
- `POST /api/companies/{companyId}/issues` with specific remediation tasks. Include `projectId` plus `goalId` / `parentId` when applicable, and set `executionWorkspaceSettings: { "mode": "isolated_workspace" }` for top-level repository implementation issues and subissues when the instance feature, project policy, and initialized repository support isolation. Otherwise follow the rendered project policy and avoid concurrent shared-checkout writes. Reuse only when explicitly required via `inheritExecutionWorkspaceFromIssueId`; keep API-only work project-detached.
|
|
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 your installed `stall-detection` skill, then summarize findings on the routine issue and exit.
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
You own stall detection when you are explicitly assigned a stall-detection routine run. This is not an every-heartbeat background scan.
|
|
4
4
|
|
|
5
|
-
This routine is the **periodic backstop**.
|
|
5
|
+
This routine is the **periodic backstop**. Do not create universal task-watchdog, queue-drain, status-repair, or workspace-cleanup wrapper issues. Prefer the originating issue's real owner, blockers, executionPolicy, interactions, and normal wake paths. Add a watchdog only when the issue explicitly documents a bounded recovery requirement those paths cannot cover.
|
|
6
6
|
|
|
7
7
|
## When To Use This Skill
|
|
8
8
|
|
|
@@ -28,17 +28,19 @@ Use this only when the current assigned issue/routine is titled like "Stall dete
|
|
|
28
28
|
|
|
29
29
|
Paperclip classifies `in_review_without_action_path` only when an agent-owned `in_review` issue has no participant, interaction, approval, user owner, monitor, active run/queued wake, or recovery issue owning the next action. A null `executionPolicy` is only one input to that classification.
|
|
30
30
|
|
|
31
|
-
|
|
31
|
+
**Paperclip repairs a lost review path itself.** The review path is a maintained invariant: when an `in_review` issue loses its path (a user comment supersedes the pending interaction, a monitor is exhausted, a run ends without restoring one), Paperclip queues a wake with reason `issue_review_path_lost` and drives its own recovery. If `GET /api/issues/{id}/diagnostics/wakes` shows that wake queued or recently claimed, Paperclip owns the next action — record it as `WAITING-REVIEW-PATH-RECOVERY` and do **not** intervene. Only treat the issue as stalled when that recovery is absent, or has itself gone stale/`failed`.
|
|
32
|
+
|
|
33
|
+
1. Check the interaction, approval, wake, monitor, active-run, and recovery routes in *Stall Check*. If any path is pending, record it as `WAITING-INTERACTION`, `WAITING-APPROVAL`, `WAITING-REVIEW-PATH-RECOVERY`, or the matching owner in the routine summary and do not nudge, reassign, or change status.
|
|
32
34
|
2. If every path is absent, flag the issue as `IN-REVIEW-WITHOUT-ACTION-PATH` and leave a structured comment naming the missing owner.
|
|
33
|
-
3. Make the next action explicit according to the work: add the intended reviewer/interaction, return it to `in_progress` with a concrete change request and active assignee, mark it `done` if already accepted
|
|
35
|
+
3. Make the next action explicit according to the work: add the intended reviewer/interaction, return it to `in_progress` with a concrete change request and active assignee, or mark it `done` if already accepted. Keep recovery on the originating issue unless independent work is genuinely required. For PR work, restore the selected policy from `docs/pr-conventions.md` if it exists: standard role-based stages, or exactly one non-author Code Reviewer stage when `docs/lean-delivery.md` exists. With no eligible non-author Code Reviewer, return it to the engineer for self-merge.
|
|
34
36
|
|
|
35
37
|
## Author-only first stage
|
|
36
38
|
|
|
37
|
-
|
|
39
|
+
Read `GET /api/issues/{id}` and locate the stage named by `executionState.currentStageId`; it need not be the first stage. Paperclip excludes `executionState.returnAssignee` (the implementation owner) when selecting a participant. Compare principals by both type and id. **Do not compare stage participants with `assigneeAgentId` to infer self-review:** Paperclip normally reassigns the issue to the active reviewer, so that match describes a healthy review. A stage is author-only only when every configured participant is the recorded return assignee and there is no eligible participant. If execution state is missing, diagnose with the issue's history/recovery actions rather than guessing who authored the work. If another explicit waiting path is pending, leave it intact.
|
|
38
40
|
|
|
39
41
|
1. Flag it in the routine-run summary as `AUTHOR-ONLY-STAGE`.
|
|
40
|
-
2. When no other waiting path is pending, leave a structured comment
|
|
41
|
-
3.
|
|
42
|
+
2. When no other waiting path is pending, leave a structured comment identifying `currentStageId`, `returnAssignee`, configured participants, and the evidence that no eligible participant exists.
|
|
43
|
+
3. Only with authority to repair this policy, clear it using `PATCH /api/issues/{id}` with `{"executionPolicy":null}`. When a pending execution state has a return assignee, Paperclip restores `in_progress` and that owner; re-read the response rather than assuming the transition. Restore the selected policy with a non-author gate before resubmitting, or return the same issue to its implementation owner for self-merge when no eligible Code Reviewer exists. Never clear a healthy reviewer stage or a human escalation hold. If authorization is denied, report the exact denial to the responsible board operator and stop retrying.
|
|
42
44
|
|
|
43
45
|
## Dependency-ready but still blocked
|
|
44
46
|
|
|
@@ -46,6 +48,8 @@ Treat `GET /api/issues/{id}/diagnostics/blockers` as authoritative. When `readin
|
|
|
46
48
|
|
|
47
49
|
If `readiness.pendingFinalizeBlockerCount` is non-zero, a blocker may be `done` but still carry `workspace_finalize_pending`, so the dependency is not ready yet. A recent finalization is a valid wait. If finalization remains stale or the corresponding `issue_blockers_resolved` wake is `skipped`/`failed`, flag `WORKSPACE-FINALIZE-PENDING`, attach the blocker and wake diagnostics, and escalate the blocker/finalization failure to the CEO or board operator. Do not force the downstream issue active and do not archive/delete the blocker workspace as a workaround.
|
|
48
50
|
|
|
51
|
+
A `cancelled` blocker does **not** resolve a dependency. Remove that blocker relation from every dependent when the dependency is no longer required, or replace it with the issue that now owns the work. Do not force a dependent active while diagnostics still list the cancelled blocker as unresolved.
|
|
52
|
+
|
|
49
53
|
1. If dependency-ready with no active/queued wake or recovery action, flag it in the routine-run summary as `DEPENDENCY-READY-BUT-BLOCKED`.
|
|
50
54
|
2. Leave a structured comment with blocker readiness and wake-diagnostic evidence.
|
|
51
55
|
3. Reactivate it with `PATCH /api/issues/{id}` `{"status":"in_progress"}`, then assign the correct owner with an explicit next action. For a merge-gate issue, the next action is to verify the PR base and verification gate, merge, leave the execution workspace reusable, and mark `done`.
|
|
@@ -53,17 +57,14 @@ If `readiness.pendingFinalizeBlockerCount` is non-zero, a blocker may be `done`
|
|
|
53
57
|
|
|
54
58
|
## PR-queue hygiene
|
|
55
59
|
|
|
56
|
-
|
|
60
|
+
When `github-repo` is active, reconcile each configured project repository's open PRs against their originating Paperclip issues. Resolve repositories only from project metadata/workspace origin and identify every PR as `owner/repo#number`.
|
|
57
61
|
|
|
58
|
-
1. List open PRs
|
|
59
|
-
2.
|
|
60
|
-
3.
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
5. If the base is green, the triage issue lists each UNSTABLE/DIRTY PR with its owner and the specific next action (rebase for DIRTY, fix the introduced failure for UNSTABLE).
|
|
65
|
-
6. Assign the triage issue to the CEO (or the engineer owning the red base) and summarize on the routine-run issue.
|
|
66
|
-
7. **Reconcile each open PR against its owning issue.** A `CLEAN`/mergeable open PR (CI green or no required CI) whose owning issue is already `done`, or whose dedicated merge issue is still `blocked` despite dependency readiness, means the merge step never ran. For each such PR: confirm the base and verification gate, then merge it (`gh pr merge <N> --merge`) or route a one-line next action to the merge owner, and recover the merge issue per *Dependency-ready but still blocked* above. Never leave a green, approved PR unmerged because its tracking issue already closed.
|
|
62
|
+
1. List open PRs and compare each with its originating issue, exact head/base, required CI, merge state, owner, and next gate.
|
|
63
|
+
2. Open PR count is a queue-health signal, not a hard WIP cap. Keep independent acceptance-ready work moving while routing stale, conflicting, red, or ownerless PRs to their existing owners; never create dependencies merely because other PRs are open.
|
|
64
|
+
3. Route CI/runner failures, stale bases, conflicts, branch protection, packaging, deployment, and release mechanics on the **existing originating issue and PR** to the operational owner. Never open a replacement PR to escape a blocker.
|
|
65
|
+
4. A `done` issue with an open PR is an invariant violation. Reopen/route the originating issue when work remains, or close the obsolete PR with evidence. Do not create a separate merge, status, evidence, or cleanup issue.
|
|
66
|
+
5. Detect base-branch-red before blaming feature diffs. Restore the base through one explicitly owned baseline fix, then rebase and drain existing PRs.
|
|
67
|
+
6. Summarize repository counts and exact existing issue/PR next actions on the routine-run issue.
|
|
67
68
|
|
|
68
69
|
## Rules
|
|
69
70
|
|
|
@@ -71,4 +72,6 @@ As part of every stall-detection run, scan the repository's open PR queue for pi
|
|
|
71
72
|
- Do not interrupt running agents.
|
|
72
73
|
- Do not close or cancel another agent's work unless the issue explicitly grants that authority.
|
|
73
74
|
- Be specific: which issue, which agent, last activity, why stalled, and who owns the next action.
|
|
75
|
+
- Do not poll ordinary review stages, PR-capacity waits, or workspace cleanup with a fixed-cadence monitor when a live owner, blocker, participant, or wake path exists. For a named external transition such as a running CI job, use a bounded monitor no more often than every 15 minutes unless the issue defines a tighter SLA; set attempt/timeout bounds and comment only on a state change or terminal checkpoint.
|
|
76
|
+
- **A `403 ... outside this actor's authorization boundary` is a final answer, not a retry.** Paperclip contains cross-issue agent writes: a repair you are not authorized to make on someone else's issue will be denied no matter how often you retry. Record the denial (issue id, attempted change, denial reason) in the routine summary and escalate to the responsible human/board operator in the same pass. Never loop on the same denied call.
|
|
74
77
|
- **Never archive or retire your own routine-run workspace.** This routine is pure control-plane work (reading and patching the board via the API) — it needs no repository state. When you finish, mark the routine issue `done` and exit. Do not call `PATCH /api/execution-workspaces/{id}` with `{"status":"archived"}`, do not check `close-readiness` to trigger a teardown, and do not otherwise remove the worktree your run is using. Archiving it mid-run makes Paperclip fail the run's workspace validation and breaks the next reuse of that workspace. Workspace retirement is a board/operator action only.
|
|
@@ -4,9 +4,9 @@ The Engineer primarily owns technology decisions. You are the fallback — step
|
|
|
4
4
|
|
|
5
5
|
## Tech Stack Evaluation (Fallback)
|
|
6
6
|
|
|
7
|
-
1. If no
|
|
7
|
+
1. If no `docs/TECH-STACK.md` exists and no engineer has started:
|
|
8
8
|
- Make pragmatic default choices based on the project type
|
|
9
|
-
- Document in
|
|
9
|
+
- Document in `docs/TECH-STACK.md` with clear rationale
|
|
10
10
|
- Create an issue for the engineer to review and refine the choices
|
|
11
11
|
2. If an engineer is active, skip this entirely.
|
|
12
12
|
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
{
|
|
16
16
|
"title": "Evaluate and document technology choices",
|
|
17
17
|
"assignTo": "capability:tech-stack",
|
|
18
|
-
"description": "Assess technology options for the project based on goals, constraints, and team capabilities. Document decisions, trade-offs, and rationale in
|
|
18
|
+
"description": "Assess technology options for the project based on goals, constraints, and team capabilities. Document decisions, trade-offs, and rationale in docs/TECH-STACK.md."
|
|
19
19
|
}
|
|
20
20
|
]
|
|
21
21
|
}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
A good tech stack evaluation:
|
|
4
4
|
|
|
5
|
-
- A
|
|
5
|
+
- A `docs/TECH-STACK.md` that lists the chosen technology per layer (language, framework, database, infra) with version, the rationale for each choice, and the alternatives that were considered and rejected.
|
|
6
6
|
- Covers at least: team familiarity, ecosystem maturity, performance trade-offs, and cost for each layer.
|
|
7
7
|
|
|
8
8
|
Not done:
|
|
@@ -9,13 +9,13 @@ You own technology decisions. Evaluate options and document choices that align w
|
|
|
9
9
|
- List viable options
|
|
10
10
|
- Evaluate against criteria: team familiarity, ecosystem maturity, performance, cost
|
|
11
11
|
- Document the decision and rationale
|
|
12
|
-
3. Write the complete tech stack to
|
|
12
|
+
3. Write the complete tech stack to `docs/TECH-STACK.md`:
|
|
13
13
|
- **Chosen stack**: Technology per layer with version
|
|
14
14
|
- **Rationale**: Why each choice was made
|
|
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
|
|
18
|
+
- `POST /api/companies/{companyId}/issues` for initial project scaffolding. Include `projectId` plus `goalId` / `parentId` when applicable, and set `executionWorkspaceSettings: { "mode": "isolated_workspace" }` for top-level repository implementation issues and subissues when the instance feature, project policy, and initialized repository support isolation. Otherwise follow the rendered project policy and avoid concurrent shared-checkout writes. Reuse only when explicitly required via `inheritExecutionWorkspaceFromIssueId`; keep API-only work project-detached.
|
|
19
19
|
|
|
20
20
|
## Rules
|
|
21
21
|
|
|
@@ -8,7 +8,7 @@ The Product Owner or Engineer primarily owns issue triage. You are the fallback
|
|
|
8
8
|
2. If issues are piling up without responses:
|
|
9
9
|
- Classify each as bug, feature, question, or invalid
|
|
10
10
|
- Respond with a brief acknowledgment
|
|
11
|
-
- Create Paperclip tasks for actionable items with priority set. When creating Paperclip issues from triaged GitHub items, include `executionWorkspaceSettings: { mode: 'isolated_workspace' }`
|
|
11
|
+
- Create Paperclip tasks for actionable items with priority set. When creating Paperclip issues from triaged GitHub items, include `executionWorkspaceSettings: { mode: 'isolated_workspace' }` for repository implementation only when the instance feature, project policy, and initialized repository support isolation; otherwise follow the rendered project policy and avoid concurrent shared-checkout writes. Keep API-only work project-detached.
|
|
12
12
|
- Close duplicates and invalid issues with explanation
|
|
13
13
|
3. If the Product Owner or Engineer is active and triaging, skip this entirely.
|
|
14
14
|
|
|
@@ -9,7 +9,7 @@ The Product Owner primarily owns issue triage. You are the engineering fallback:
|
|
|
9
9
|
3. For each technical issue:
|
|
10
10
|
- Reproduce or inspect enough to classify it as bug, feature, question, duplicate, invalid, or needs-info.
|
|
11
11
|
- Apply labels and priority based on user impact and technical severity.
|
|
12
|
-
- Create Paperclip issues for actionable bugs or engineering work. Top-level
|
|
12
|
+
- Create Paperclip issues for actionable bugs or engineering work. Top-level issues and subissues include `executionWorkspaceSettings: { "mode": "isolated_workspace" }` when the instance feature, project policy, and initialized repository support isolation; otherwise follow the rendered project policy and avoid concurrent shared-checkout writes. Explicit same-change reuse uses `inheritExecutionWorkspaceFromIssueId`.
|
|
13
13
|
- Ask concise follow-up questions when reproduction details are missing.
|
|
14
14
|
4. Leave product-priority and roadmap tradeoffs for the Product Owner or CEO.
|
|
15
15
|
|
|
@@ -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
|
|
19
|
+
- For actionable issues, create a corresponding Paperclip issue via `POST /api/companies/{companyId}/issues`. Include the GitHub URL/number, `projectId`, and `goalId` / `parentId` when applicable; set `executionWorkspaceSettings: { "mode": "isolated_workspace" }` for top-level repository implementation issues and subissues when the instance feature, project policy, and initialized repository support isolation. Otherwise follow the rendered project policy and avoid concurrent shared-checkout writes. Reuse only when explicitly required via `inheritExecutionWorkspaceFromIssueId`; keep API-only work project-detached.
|
|
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
|
|
|
@@ -4,10 +4,10 @@ QA, the UX Researcher, and PO all own usability evaluations above you. You are t
|
|
|
4
4
|
|
|
5
5
|
## User Testing (Fallback)
|
|
6
6
|
|
|
7
|
-
1. If no
|
|
7
|
+
1. If no `docs/USER-TESTING.md` exists and no one has started:
|
|
8
8
|
- Create a basic heuristic checklist covering the core user flow
|
|
9
9
|
- Identify the top 3-5 usability concerns based on product goals
|
|
10
|
-
- Document in
|
|
10
|
+
- Document in `docs/USER-TESTING.md`
|
|
11
11
|
- Mark all findings as **provisional** — they need validation by QA, a researcher, or PO
|
|
12
12
|
2. If QA, the researcher, or PO is active, skip this entirely.
|
|
13
13
|
|
|
@@ -4,10 +4,10 @@ QA and the UX Researcher primarily own usability evaluation. You are the fallbac
|
|
|
4
4
|
|
|
5
5
|
## User Testing (Fallback)
|
|
6
6
|
|
|
7
|
-
1. If no
|
|
7
|
+
1. If no `docs/USER-TESTING.md` exists and no one above you has started:
|
|
8
8
|
- Create a basic test plan covering the most critical user flows
|
|
9
9
|
- Evaluate against acceptance criteria from the product roadmap
|
|
10
|
-
- Document findings in
|
|
10
|
+
- Document findings in `docs/USER-TESTING.md`
|
|
11
11
|
- Mark all findings as **provisional** — they need validation by QA or a researcher
|
|
12
12
|
2. If QA or the researcher is active, skip this entirely.
|
|
13
13
|
|
|
@@ -8,7 +8,7 @@ You are the QA engineer and user-facing quality is your core domain. You own tes
|
|
|
8
8
|
2. Design test scenarios covering critical user flows
|
|
9
9
|
3. Define success metrics for each scenario (task completion, error rate, time-on-task)
|
|
10
10
|
4. Build test automation for repeatable user flow validation
|
|
11
|
-
5. Execute evaluations and document in
|
|
11
|
+
5. Execute evaluations and document in `docs/USER-TESTING.md`:
|
|
12
12
|
- **Functional testing**: Verify all user flows work end-to-end
|
|
13
13
|
- **Heuristic analysis**: Apply usability heuristics to key screens and flows
|
|
14
14
|
- **Edge case coverage**: Test boundary conditions, error states, and recovery flows
|
|
@@ -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
|
|
21
|
+
- `POST /api/companies/{companyId}/issues` with finding details and reproduction steps. Include `projectId` plus `goalId` / `parentId` when applicable, and set `executionWorkspaceSettings: { "mode": "isolated_workspace" }` for top-level repository implementation issues and subissues when the instance feature, project policy, and initialized repository support isolation. Otherwise follow the rendered project policy and avoid concurrent shared-checkout writes. Reuse only when explicitly required via `inheritExecutionWorkspaceFromIssueId`; keep API-only work project-detached.
|
|
22
22
|
8. Record summary in your daily notes
|
|
23
23
|
|
|
24
24
|
## Rules
|