@starlein/paperclip-plugin-company-wizard 0.3.24 → 0.4.1
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 +24 -0
- package/README.md +15 -11
- package/dist/manifest.js +1 -6
- package/dist/manifest.js.map +2 -2
- package/dist/ui/index.css +3 -0
- package/dist/ui/index.css.map +2 -2
- package/dist/ui/index.js +59 -30
- package/dist/ui/index.js.map +3 -3
- package/dist/worker.js +263 -81
- package/dist/worker.js.map +3 -3
- package/package.json +1 -1
- package/templates/ai-wizard/config-format.md +4 -4
- package/templates/ai-wizard/interview-system.md +3 -3
- package/templates/ai-wizard/single-shot-system.md +3 -3
- package/templates/bootstrap-instructions.md +3 -3
- package/templates/modules/architecture-plan/agents/ui-designer/skills/design-system.md +1 -1
- package/templates/modules/auto-assign/agents/ceo/heartbeat-section.md +2 -8
- package/templates/modules/auto-assign/agents/product-owner/heartbeat-section.md +2 -9
- package/templates/modules/auto-assign/module.meta.json +1 -1
- package/templates/modules/auto-assign/skills/auto-assign.md +18 -15
- package/templates/modules/backlog/agents/ceo/heartbeat-section.md +2 -9
- package/templates/modules/backlog/agents/product-owner/heartbeat-section.md +2 -14
- package/templates/modules/backlog/module.meta.json +1 -1
- package/templates/modules/backlog/skills/backlog-health.md +20 -21
- package/templates/modules/codebase-onboarding/skills/codebase-audit.md +29 -30
- package/templates/modules/github-repo/agents/engineer/skills/git-workflow.md +11 -7
- package/templates/modules/github-repo/docs/git-workflow.md +10 -6
- package/templates/modules/hiring-review/skills/hiring-review.md +40 -16
- package/templates/modules/market-analysis/agents/ux-researcher/skills/market-analysis.md +1 -1
- package/templates/modules/pr-review/README.md +13 -13
- package/templates/modules/pr-review/agents/devops/skills/infra-review.md +1 -1
- package/templates/modules/pr-review/agents/engineer/skills/pr-workflow.md +17 -11
- package/templates/modules/pr-review/agents/product-owner/skills/product-review.md +1 -1
- package/templates/modules/pr-review/agents/qa/skills/qa-review.md +1 -1
- package/templates/modules/pr-review/agents/security-engineer/skills/pr-security-review.md +1 -1
- package/templates/modules/pr-review/agents/ui-designer/skills/design-review.md +1 -1
- package/templates/modules/pr-review/agents/ux-researcher/skills/ux-review.md +1 -1
- package/templates/modules/pr-review/docs/pr-conventions.md +11 -8
- package/templates/modules/stall-detection/README.md +8 -8
- package/templates/modules/stall-detection/agents/ceo/heartbeat-section.md +2 -11
- package/templates/modules/stall-detection/agents/ceo/skills/stall-detection.md +22 -13
- package/templates/modules/stall-detection/module.meta.json +1 -1
- package/templates/modules/triage/skills/issue-triage.md +20 -33
- package/templates/roles/audio-designer/HEARTBEAT.md +37 -21
- package/templates/roles/ceo/HEARTBEAT.md +34 -56
- package/templates/roles/cmo/HEARTBEAT.md +37 -21
- package/templates/roles/code-reviewer/HEARTBEAT.md +39 -19
- package/templates/roles/cto/HEARTBEAT.md +33 -25
- package/templates/roles/customer-success/HEARTBEAT.md +39 -19
- package/templates/roles/devops/HEARTBEAT.md +36 -25
- package/templates/roles/engineer/AGENTS.md +27 -9
- package/templates/roles/engineer/HEARTBEAT.md +35 -21
- package/templates/roles/game-artist/HEARTBEAT.md +37 -21
- package/templates/roles/game-designer/HEARTBEAT.md +37 -21
- package/templates/roles/level-designer/HEARTBEAT.md +37 -21
- package/templates/roles/product-owner/AGENTS.md +24 -8
- package/templates/roles/product-owner/HEARTBEAT.md +37 -19
- package/templates/roles/qa/AGENTS.md +26 -11
- package/templates/roles/qa/HEARTBEAT.md +37 -21
- package/templates/roles/security-engineer/AGENTS.md +21 -23
- package/templates/roles/security-engineer/HEARTBEAT.md +39 -19
- package/templates/roles/technical-writer/HEARTBEAT.md +39 -18
- package/templates/roles/ui-designer/AGENTS.md +26 -9
- package/templates/roles/ui-designer/HEARTBEAT.md +37 -21
- package/templates/roles/ux-researcher/HEARTBEAT.md +37 -21
|
@@ -4,20 +4,24 @@ When this skill is active, you work in feature branches and open PRs instead of
|
|
|
4
4
|
|
|
5
5
|
## Feature Branch Flow
|
|
6
6
|
|
|
7
|
-
1.
|
|
8
|
-
2.
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
7
|
+
1. Resolve the project/worktree base ref from the issue's `heartbeat-context` / project workspace metadata before branching. Use the configured `repoRef`, `defaultRef`, or `executionWorkspacePolicy.workspaceStrategy.baseRef` exactly as Paperclip provides it. Never guess from your shell's current branch and never rewrite the configured ref to `main`, `master`, or `origin/*`.
|
|
8
|
+
2. Fetch and update the base:
|
|
9
|
+
- external: `git fetch origin`, then branch from the configured base ref
|
|
10
|
+
- local: update from the configured local branch
|
|
11
|
+
3. Create branch from that base: `git checkout -b <prefix>-<N>/<short-description> <base-ref>`
|
|
12
|
+
4. Make your changes, commit with Conventional Commits format
|
|
13
|
+
5. Push branch: `git push -u origin <branch-name>`
|
|
14
|
+
6. Open PR against the same resolved base: derive the GitHub base branch from the configured ref (for example, strip the remote prefix only when the ref is remote-tracking), write the body (PR Body Template in `docs/pr-conventions.md`) to a file, then `gh pr create --base <github-base-branch> --head <branch-name> --title "<type>: <description>" --body-file <file>`. Never inline `--body "..."` — a double-quoted shell string keeps `\n` literal and the PR renders as `text\ntext` (see *Posting PR Bodies & Comments*).
|
|
15
|
+
7. Set the originating issue's `executionPolicy` to gate the merge on review, ending with your own merge gate:
|
|
16
|
+
- One `review` stage with **QA** when a QA agent exists (test adequacy / executed verification).
|
|
17
|
+
- One `review` stage with the **Security Engineer** only when the change is security-relevant (auth, secrets, input boundaries, crypto, dependencies, infra exposure).
|
|
18
|
+
- Additional `review` stages only for domain reviewers that should block this specific change. Code Reviewer and other specialists are advisory by default unless explicitly configured as participants.
|
|
15
19
|
- An `approval` stage with the **Product Owner** as participant (always) — the product sign-off.
|
|
16
20
|
- A final `approval` stage with **yourself (the Engineer)** as participant — the **merge gate**. This stage exists so you are woken *last*, after every reviewer and the Product Owner have cleared, to perform the merge.
|
|
17
21
|
- 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.
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
22
|
+
8. Move the originating issue to `in_review`.
|
|
23
|
+
9. Wait for the issue to clear its review/approval stages. Each reviewer and the Product Owner records `approved` by PATCHing the issue toward `done`, or `changes_requested` by PATCHing it back to `in_progress`; Paperclip stores the reviewer/approver decision metadata on the issue. Verdicts may be mirrored as PR comments. A `changes_requested` routes the issue back to you — address it, push to the same branch, and that stage re-runs.
|
|
24
|
+
10. When the issue reaches your final **merge gate** stage (you are the current participant and every prior stage is approved): run `gh pr merge <number> --merge`, confirm the merge landed into the configured project base, then close/archive the isolated execution workspace if one exists and close-readiness allows it. **Only after merge and workspace close/cleanup succeeds** record `approved` on your stage — that closes the issue to `done`. Never record `approved` before the merge has actually succeeded, and never set the issue to `done` with the PR still open or an execution workspace still active.
|
|
21
25
|
|
|
22
26
|
## Rules
|
|
23
27
|
|
|
@@ -26,6 +30,8 @@ When this skill is active, you work in feature branches and open PRs instead of
|
|
|
26
30
|
- Always include `Closes [PREFIX-N]` in the PR body.
|
|
27
31
|
- If a reviewer requests changes, address them, push to the same branch, and re-request review (the stage re-runs).
|
|
28
32
|
- You are the merge owner — never ask reviewers to merge.
|
|
33
|
+
- Before creating a PR or merging, verify the PR base matches the configured project/worktree base. If the base is wrong, retarget the PR before review/merge.
|
|
29
34
|
- **Your merge gate must be the last stage.** 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` and you would never be woken to merge — leaving the PR open on GitHub. Always append your own merge-gate `approval` stage after the Product Owner's, and do the merge there before recording your verdict.
|
|
30
35
|
- Do not create separate child review issues and do not use @-mentions to request review; the executionPolicy stages are the governance signal.
|
|
31
36
|
- 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.
|
|
37
|
+
- If Paperclip created an isolated execution workspace for this issue, do not leave it behind. Use the current execution workspace id from `heartbeat-context`, check close-readiness, and archive it after the PR is merged and the tree is clean. If archive/cleanup is blocked, leave the issue `blocked` or `in_review` with the exact cleanup blocker instead of marking `done`. If this issue runs in the shared project workspace, do not invent isolated-worktree cleanup.
|
|
@@ -14,7 +14,7 @@ You review PRs for intent alignment, scope discipline, and acceptance criteria.
|
|
|
14
14
|
## How to Review
|
|
15
15
|
|
|
16
16
|
1. When you are the active participant of the approval stage on an issue with a PR link, review the PR against the originating issue.
|
|
17
|
-
2. Record your verdict
|
|
17
|
+
2. Record your verdict through the normal issue update route for your approval stage:
|
|
18
18
|
- **approved** if the change meets product requirements
|
|
19
19
|
- **changes_requested** with specific feedback tied to acceptance criteria
|
|
20
20
|
3. Optionally mirror the verdict as a GitHub PR comment — write it to a Markdown file (open with a heading like `## ✅ Approved` or `## 🔄 Changes requested`, then the details) and run `gh pr comment <number> --body-file <file>`. Never use inline `--body "..."`: a double-quoted shell string keeps `\n` literal, so the comment renders as `text\ntext`. See `docs/pr-conventions.md` → *Posting PR Bodies & Comments*.
|
|
@@ -38,7 +38,7 @@ Record `approved` only if the suite and build pass and coverage is adequate; oth
|
|
|
38
38
|
## How to record your verdict
|
|
39
39
|
|
|
40
40
|
1. You are the active participant of a `review` stage on the issue carrying the PR link.
|
|
41
|
-
2. Record on your stage: `approved` (with the evidence — commands + results) or `changes_requested` (with specific gaps and suggested test cases)
|
|
41
|
+
2. Record on your stage through the normal issue update route: `approved` (with the evidence — commands + results) by PATCHing toward `done`, or `changes_requested` (with specific gaps and suggested test cases) by PATCHing back to `in_progress`.
|
|
42
42
|
3. Optionally mirror the verdict as a GitHub PR comment via a Markdown file: open with a heading (`## ✅ Approved` / `## 🔄 Changes requested`), then details, and run `gh pr comment <number> --body-file <file>`. Never inline `--body "..."` — a double-quoted shell string keeps `\n` literal. See `docs/pr-conventions.md` → *Posting PR Bodies & Comments*.
|
|
43
43
|
|
|
44
44
|
## Rules
|
|
@@ -17,7 +17,7 @@ Review is by *probing*, not by reading. Your verdict must state what you actuall
|
|
|
17
17
|
|
|
18
18
|
1. You are the active participant of a `review` stage on the issue carrying the PR link.
|
|
19
19
|
2. State **what you probed and how** (e.g. "checked the new `/upload` endpoint for path traversal with `../` inputs; validated the content-type allowlist"). A verdict without concrete checks is invalid.
|
|
20
|
-
3. Record `approved`
|
|
20
|
+
3. Record the stage decision through the normal issue update route: `approved` by PATCHing the issue toward `done` with the checks performed, or `changes_requested` by PATCHing back to `in_progress` with the specific finding, impact, and remediation.
|
|
21
21
|
4. Optionally mirror as a GitHub PR comment via a Markdown file (`## ✅ Approved` / `## 🔄 Changes requested`), run `gh pr comment <number> --body-file <file>`. Never inline `--body "..."`. See `docs/pr-conventions.md` → *Posting PR Bodies & Comments*.
|
|
22
22
|
|
|
23
23
|
## Rules
|
|
@@ -16,7 +16,7 @@ You review PRs for visual quality, brand consistency, and accessibility. When a
|
|
|
16
16
|
|
|
17
17
|
1. When you are the active participant of a review stage on an issue with a PR link, review the PR.
|
|
18
18
|
2. Focus only on visual/design concerns — leave code logic to Code Reviewer and product scope to Product Owner.
|
|
19
|
-
3. Record your verdict
|
|
19
|
+
3. Record your verdict through the normal issue update route for your review stage:
|
|
20
20
|
- **approved** if visually sound
|
|
21
21
|
- **changes_requested** with specific, actionable feedback if not
|
|
22
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*.
|
|
@@ -16,7 +16,7 @@ You review PRs for usability, user flow integrity, and alignment with user needs
|
|
|
16
16
|
|
|
17
17
|
1. When you are the active participant of a review stage on an issue with a PR link, review the PR.
|
|
18
18
|
2. Focus only on UX and usability concerns — leave code logic to Code Reviewer and visuals to UI Designer.
|
|
19
|
-
3. Record your verdict
|
|
19
|
+
3. Record your verdict through the normal issue update route for your review stage:
|
|
20
20
|
- **approved** if usability is sound
|
|
21
21
|
- **changes_requested** with specific, actionable feedback if not
|
|
22
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*.
|
|
@@ -63,19 +63,20 @@ Apply one primary label: `feature`, `bug`, `docs`, `chore`, `infra`, `agent`.
|
|
|
63
63
|
|
|
64
64
|
Review runs through the issue's native `executionPolicy` (stages), not separate child issues. The gate is **executed verification, not opinion**.
|
|
65
65
|
|
|
66
|
-
1. **Engineer**
|
|
67
|
-
2. **Engineer**
|
|
66
|
+
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
|
+
2. **Engineer** opens the PR on GitHub and adds the PR link as an issue comment.
|
|
68
|
+
3. **Engineer** sets the originating issue's `executionPolicy` stages, in order:
|
|
68
69
|
- a `review` stage for **QA** when a QA agent is on the team (test adequacy / running the tests),
|
|
69
70
|
- a `review` stage for the **Security Engineer** *only when the change is security-relevant* (auth, secrets, input boundaries, crypto, dependencies, infra exposure),
|
|
70
71
|
- an `approval` stage for the **Product Owner** (intent, scope, acceptance),
|
|
71
72
|
- a final `approval` stage for the **Engineer** as the merge gate.
|
|
72
73
|
Resolve each role to its agentId.
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
74
|
+
4. **Engineer** sets the issue to `in_review`.
|
|
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.
|
|
76
|
+
6. **Security Engineer** (when present as a stage) probes the security-relevant change and records a verdict stating what was checked.
|
|
77
|
+
7. **Code Reviewer** and other domain reviewers may add **advisory, non-blocking** PR comments. They do not gate the merge.
|
|
78
|
+
8. **Product Owner** reviews for intent match, scope discipline, and acceptance criteria, and records the `approval` verdict through the normal issue update route, preserving the issue-level approval audit trail.
|
|
79
|
+
9. **Engineer** owns the final `approval` stage (merge gate): once reviewers and the Product Owner have approved, the engineer 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, closes/archives the isolated execution workspace when one exists and close-readiness allows it, and only then records `approved` — which closes the issue to `done`. The merge and workspace cleanup must happen before the issue is `done`.
|
|
79
80
|
|
|
80
81
|
## Review Roles
|
|
81
82
|
|
|
@@ -97,8 +98,10 @@ The hard gate is **executed verification**, enforced on the Engineer's merge-gat
|
|
|
97
98
|
- The Code Reviewer and other domain reviewers are advisory — blocking only when they escalate a concern that QA, the Security Engineer, or the Engineer then acts on.
|
|
98
99
|
- No force pushes.
|
|
99
100
|
- Merge using `gh pr merge <number> --merge`.
|
|
101
|
+
- Before merge, verify the PR base matches the configured project/worktree base from `heartbeat-context`. Retarget before review/merge if needed.
|
|
100
102
|
- The Engineer is the merge owner — reviewers never merge.
|
|
101
103
|
- The engineer's merge gate must be the **last** `approval` stage. If the Product Owner's approval were last, it would auto-close the issue to `done` and the merge would be skipped, leaving the PR open on GitHub.
|
|
104
|
+
- If Paperclip created an isolated execution workspace for the issue, read its id from `heartbeat-context`, call close-readiness, and archive it after the PR is merged and the tree is clean. If cleanup is blocked or fails, do not mark the issue `done`; record the exact blocker and leave a concrete cleanup next action. If the issue runs in the shared project workspace, do not invent isolated-worktree cleanup.
|
|
102
105
|
- 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.
|
|
103
106
|
|
|
104
107
|
## Dev Cycle Rules
|
|
@@ -1,27 +1,27 @@
|
|
|
1
1
|
# Module: stall-detection
|
|
2
2
|
|
|
3
|
-
Adds
|
|
3
|
+
Adds scheduled stall detection as an assigned routine run.
|
|
4
4
|
|
|
5
5
|
## What it adds
|
|
6
6
|
|
|
7
|
-
- **CEO skill**: Stall check — detects issues stuck in `in_progress` or `in_review` for too long,
|
|
7
|
+
- **CEO skill**: Stall check — detects issues stuck in `in_progress` or `in_review` for too long, then records a structured next action, reassignment, blocker, or escalation.
|
|
8
8
|
|
|
9
9
|
## How it works
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
When the CEO is assigned a stall-detection routine run:
|
|
12
12
|
1. Are there issues in `in_progress` or `in_review` that haven't been updated recently?
|
|
13
13
|
2. If an issue appears stalled (no activity for a configurable period):
|
|
14
14
|
- Check if the assigned agent is running or idle
|
|
15
|
-
- If idle:
|
|
16
|
-
- If the agent has
|
|
17
|
-
3. This catches
|
|
15
|
+
- If idle: leave a structured next-action comment, reassign, or link a blocker as appropriate
|
|
16
|
+
- If the agent has already failed to respond: escalate to the board/CEO with exact evidence
|
|
17
|
+
3. This catches dropped handoffs without relying on generic mentions.
|
|
18
18
|
|
|
19
19
|
## Best for
|
|
20
20
|
|
|
21
|
-
- Any team
|
|
21
|
+
- Any team with multi-stage handoffs where ownership can become unclear
|
|
22
22
|
- Multi-agent teams where work can get dropped between agents
|
|
23
23
|
- Ensuring nothing falls through the cracks
|
|
24
24
|
|
|
25
25
|
## Example
|
|
26
26
|
|
|
27
|
-
An engineer finishes a PR and
|
|
27
|
+
An engineer finishes a PR and moves the issue to `in_review`, but the executionPolicy reviewer never acts. The CEO detects the stalled issue during the scheduled routine run, records the missing next action, and reassigns or escalates.
|
|
@@ -1,12 +1,3 @@
|
|
|
1
|
-
## Stall Detection
|
|
1
|
+
## Stall Detection Routine
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
1. Query active issues: `GET /api/companies/{companyId}/issues?status=in_progress,in_review`
|
|
6
|
-
2. For each issue, check the latest comment/activity timestamp.
|
|
7
|
-
3. If an issue has had no activity for more than 2 heartbeat cycles:
|
|
8
|
-
- Agent is `idle` → @-mention with a nudge.
|
|
9
|
-
- Agent is `running` → skip (may be mid-work).
|
|
10
|
-
- Agent is `error` or `paused` → escalate to the board.
|
|
11
|
-
4. If already nudged and still no progress → escalate to the board.
|
|
12
|
-
5. Record stall findings in daily notes.
|
|
3
|
+
Do not scan for stalled work during a normal heartbeat. When you are assigned a routine-run issue titled like "Stall detection", use `skills/stall-detection.md`, then summarize findings on the routine issue and exit.
|
|
@@ -1,21 +1,30 @@
|
|
|
1
1
|
# Skill: Stall Detection
|
|
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
|
+
|
|
5
|
+
## When To Use This Skill
|
|
6
|
+
|
|
7
|
+
Use this only when the current assigned issue/routine is titled like "Stall detection" or explicitly asks you to inspect stalled work. Otherwise follow the normal Paperclip heartbeat rule: only work assigned issues and do not scan the whole board.
|
|
4
8
|
|
|
5
9
|
## Stall Check
|
|
6
10
|
|
|
7
|
-
1.
|
|
8
|
-
2.
|
|
9
|
-
3.
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
-
|
|
13
|
-
-
|
|
14
|
-
|
|
15
|
-
|
|
11
|
+
1. Checkout the assigned routine-run issue.
|
|
12
|
+
2. Query active issues for the relevant company/project: `todo`, `in_progress`, `in_review`, and blocked work where applicable.
|
|
13
|
+
3. For each candidate, inspect latest comments/activity, execution state, blockers, approval/review state, and assigned agent status.
|
|
14
|
+
4. Skip issues with an active run, recent activity, valid `blockedByIssueIds`, or pending executionPolicy approval/review.
|
|
15
|
+
5. For a likely stall, leave a structured comment on the issue with:
|
|
16
|
+
- issue id/title
|
|
17
|
+
- assigned agent
|
|
18
|
+
- last activity timestamp/context
|
|
19
|
+
- why it appears stalled
|
|
20
|
+
- exact next action requested
|
|
21
|
+
6. Prefer reassignment, blocker linkage, or escalation to CEO/Product Owner over informal nudges.
|
|
22
|
+
7. If an agent is `error`, paused, or repeatedly non-responsive, escalate with an issue comment and assign the manager/CEO as appropriate.
|
|
23
|
+
8. Summarize findings on the routine-run issue and mark it done.
|
|
16
24
|
|
|
17
25
|
## Rules
|
|
18
26
|
|
|
19
|
-
-
|
|
20
|
-
-
|
|
21
|
-
-
|
|
27
|
+
- Do not @-mention as a generic nudge; use assignment, status, blockers, and explicit next-action comments.
|
|
28
|
+
- Do not interrupt running agents.
|
|
29
|
+
- Do not close or cancel another agent's work unless the issue explicitly grants that authority.
|
|
30
|
+
- Be specific: which issue, which agent, last activity, why stalled, and who owns the next action.
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
"routines": [
|
|
6
6
|
{
|
|
7
7
|
"title": "Stall detection",
|
|
8
|
-
"description": "
|
|
8
|
+
"description": "Routine-run checklist: inspect in_progress/in_review issues for stale activity, verify blockers and executionPolicy gates, record a concrete next action/reassignment/escalation on each stalled issue, summarize on the routine issue, then exit.",
|
|
9
9
|
"assignTo": "ceo",
|
|
10
10
|
"schedule": "0 */3 * * *",
|
|
11
11
|
"priority": "medium",
|
|
@@ -1,42 +1,29 @@
|
|
|
1
1
|
# Skill: Issue Triage
|
|
2
2
|
|
|
3
|
-
You are responsible for processing inbound GitHub issues
|
|
3
|
+
You are responsible for processing inbound GitHub issues when assigned a triage issue or triage routine. Classify, respond, and convert actionable reports into Paperclip work.
|
|
4
4
|
|
|
5
|
-
##
|
|
5
|
+
## When To Use This Skill
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
Use this only when the current assigned issue/routine asks for GitHub issue triage. Do not scan GitHub on every normal heartbeat.
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
2. **For each untriaged issue:**
|
|
11
|
-
a. Read the full issue body and any comments.
|
|
12
|
-
b. **Classify** by type:
|
|
13
|
-
- `bug` — Something is broken or behaves unexpectedly
|
|
14
|
-
- `feature` — New functionality request
|
|
15
|
-
- `enhancement` — Improvement to existing functionality
|
|
16
|
-
- `question` — User needs help or clarification
|
|
17
|
-
- `duplicate` — Already reported (link to original)
|
|
18
|
-
- `invalid` — Not actionable, out of scope, or spam
|
|
19
|
-
c. **Set priority** (P0–P3):
|
|
20
|
-
- P0: Production broken, data loss, security vulnerability
|
|
21
|
-
- P1: Major feature broken, blocking multiple users
|
|
22
|
-
- P2: Non-critical bug or important feature request
|
|
23
|
-
- P3: Minor issue, cosmetic, nice-to-have
|
|
24
|
-
d. **Apply labels** — `gh issue edit <number> --add-label "<type>,<priority>"`
|
|
25
|
-
e. **Respond to reporter:**
|
|
26
|
-
- Acknowledge the report
|
|
27
|
-
- Ask follow-up questions if reproduction steps are unclear (bugs)
|
|
28
|
-
- Set expectations ("we'll look into this" / "this is out of scope because...")
|
|
29
|
-
- For duplicates: link to the original issue and close
|
|
30
|
-
- For invalid: explain why and close politely
|
|
31
|
-
f. **Convert to Paperclip task** — For actionable issues (bug, feature, enhancement), create a corresponding issue in Paperclip via `POST /api/companies/{companyId}/issues` with the GitHub issue number in the description for traceability. Include the active `projectId` (and `goalId` / `parentId` when applicable).
|
|
9
|
+
## Triage Process
|
|
32
10
|
|
|
33
|
-
|
|
11
|
+
1. Checkout the assigned triage issue/routine.
|
|
12
|
+
2. Fetch new issues: `gh issue list --state open --label "" --json number,title,body,labels,createdAt` to find untriaged issues (no classification label yet).
|
|
13
|
+
3. For each untriaged issue:
|
|
14
|
+
- Read the full issue body and comments.
|
|
15
|
+
- Classify by type: `bug`, `feature`, `enhancement`, `question`, `duplicate`, `invalid`.
|
|
16
|
+
- Set priority P0-P3; P0 maps to urgent Paperclip priority.
|
|
17
|
+
- Apply labels with `gh issue edit <number> --add-label "<type>,<priority>"`.
|
|
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.
|
|
20
|
+
4. Link bidirectionally: GitHub comment references the Paperclip issue, Paperclip issue references GitHub.
|
|
21
|
+
5. Summarize triage results on the assigned triage issue/routine and mark it done.
|
|
34
22
|
|
|
35
23
|
## Rules
|
|
36
24
|
|
|
37
|
-
-
|
|
38
|
-
-
|
|
39
|
-
-
|
|
40
|
-
-
|
|
41
|
-
-
|
|
42
|
-
- Escalate P0 issues immediately — create the Paperclip task with priority `urgent` and mention it in the CEO's daily notes.
|
|
25
|
+
- Do not triage from unrelated heartbeats.
|
|
26
|
+
- Respond respectfully and constructively, even for invalid or duplicate reports.
|
|
27
|
+
- Do not close legitimate issues without explanation.
|
|
28
|
+
- If you cannot classify an issue, ask for clarification and label `needs-info`.
|
|
29
|
+
- Escalate P0 issues immediately via Paperclip issue assignment/status and a CEO/Product Owner comment.
|
|
@@ -1,37 +1,53 @@
|
|
|
1
|
-
# HEARTBEAT.md -- Audio Designer Heartbeat
|
|
1
|
+
# HEARTBEAT.md -- Audio Designer Heartbeat Checklist
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Run this checklist on every heartbeat. The Paperclip skill is the source of truth for board coordination; this file records the current expected flow and role-local reminders.
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
- Check wake context: `PAPERCLIP_TASK_ID`, `PAPERCLIP_WAKE_REASON`.
|
|
5
|
+
## 1. Identity and Wake Context
|
|
7
6
|
|
|
8
|
-
|
|
7
|
+
- `GET /api/agents/me` -- confirm your id, role, companyId, budget, and chain of command.
|
|
8
|
+
- Check wake context: `PAPERCLIP_TASK_ID`, `PAPERCLIP_WAKE_REASON`, `PAPERCLIP_WAKE_COMMENT_ID`, `PAPERCLIP_APPROVAL_ID`.
|
|
9
|
+
- If the wake reason is approval/review/routine, treat that object as the active assignment.
|
|
9
10
|
|
|
10
|
-
|
|
11
|
-
- Prioritize `in_progress` first, then `todo`.
|
|
11
|
+
## 2. Get Assigned Work
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
- Prefer `GET /api/agents/me/inbox-lite` for your actionable inbox.
|
|
14
|
+
- If `PAPERCLIP_TASK_ID` is set and belongs to you, prioritize it.
|
|
15
|
+
- Otherwise work assigned issues only. Never look for random unassigned work during a normal heartbeat.
|
|
16
|
+
- Include `todo`, `in_progress`, `in_review`, and review/approval tasks surfaced by the inbox. Skip blocked work unless you can unblock it.
|
|
14
17
|
|
|
15
|
-
|
|
16
|
-
- Never retry a 409 -- that task belongs to someone else.
|
|
17
|
-
- Do the work. Update status and comment when done.
|
|
18
|
-
- When creating audio assets, place them in the project's `assets/audio/` directory following naming conventions.
|
|
18
|
+
## 3. Load Execution Context
|
|
19
19
|
|
|
20
|
-
|
|
20
|
+
- For the chosen issue, call `GET /api/issues/{id}/heartbeat-context` before changing state.
|
|
21
|
+
- Inspect status, parent/children, project/goal, labels, comments, documents, work products, `blockedByIssueIds`, `executionPolicy`, and current execution state.
|
|
22
|
+
- Respect pause/cancel, budget, sandbox, and approval gates. Do not bypass executionPolicy review or approval stages.
|
|
21
23
|
|
|
22
|
-
|
|
23
|
-
- Include: file paths, format, duration, loop points, volume levels, playback triggers.
|
|
24
|
-
- Provide integration notes: when to play, how to layer, any spatial/positional audio needs.
|
|
24
|
+
## 4. Checkout and Work
|
|
25
25
|
|
|
26
|
-
|
|
26
|
+
- Checkout before mutating work: `POST /api/issues/{id}/checkout` with the expected current status when the API supports `expectedStatuses`.
|
|
27
|
+
- Never retry a 409; that issue belongs to another active run.
|
|
28
|
+
- Start actionable work in the same heartbeat; do not stop at a plan unless planning was requested.
|
|
29
|
+
- Leave durable progress with a clear next action. Use child issues for long or parallel delegated work instead of polling.
|
|
30
|
+
- Mark true dependencies with `blockedByIssueIds` instead of free-text blockers.
|
|
27
31
|
|
|
28
|
-
|
|
29
|
-
|
|
32
|
+
## 5. Evidence, Work Products, and Handover
|
|
33
|
+
|
|
34
|
+
- Record real verification: commands, test results, screenshots, reviewed artifacts, or explicit "not run" rationale.
|
|
35
|
+
- Upload or attach user-inspectable outputs as work products/artifacts/documents; local filesystem paths alone are not enough.
|
|
36
|
+
- Use issue documents for long plans, specs, QA reports, security reviews, or hiring drafts; comments should summarize and link.
|
|
37
|
+
- Handoffs should use assignment/status/executionPolicy and a concrete next action. Do not rely on generic @-mentions.
|
|
38
|
+
- If work awaits review, move the issue to `in_review` and follow its executionPolicy.
|
|
39
|
+
|
|
40
|
+
## 6. Exit
|
|
41
|
+
|
|
42
|
+
- Always comment before exiting any issue you touched: status, evidence, blockers, work products, and next action.
|
|
43
|
+
- If the issue used an isolated execution workspace/worktree, close it before final disposition: read `currentExecutionWorkspace.id` from `heartbeat-context`, check `GET /api/execution-workspaces/{id}/close-readiness`, then archive with `PATCH /api/execution-workspaces/{id}` `{ "status": "archived" }` after commits/PRs are merged and the tree is clean. If close-readiness or cleanup is blocked, do not mark `done`; leave the issue `blocked`/`in_review` with the exact cleanup blocker and next owner.
|
|
44
|
+
- If no assigned work, valid approval/review, or routine-run exists, exit cleanly without scanning unrelated unassigned work.
|
|
30
45
|
|
|
31
46
|
## Rules
|
|
32
47
|
|
|
33
48
|
- Always use the Paperclip skill for coordination.
|
|
34
|
-
- Always include `X-Paperclip-Run-Id`
|
|
35
|
-
-
|
|
49
|
+
- Always include `X-Paperclip-Run-Id` on mutating API calls when available.
|
|
50
|
+
- Keep comments concise markdown: status line + bullets + links.
|
|
51
|
+
- Never expose secrets, credentials, private customer data, or hidden chain-of-thought in comments or artifacts.
|
|
36
52
|
|
|
37
53
|
<!-- Module heartbeat sections are inserted above this line during assembly -->
|
|
@@ -1,75 +1,53 @@
|
|
|
1
|
-
# HEARTBEAT.md --
|
|
1
|
+
# HEARTBEAT.md -- Ceo Heartbeat Checklist
|
|
2
2
|
|
|
3
|
-
Run this checklist on every heartbeat.
|
|
3
|
+
Run this checklist on every heartbeat. The Paperclip skill is the source of truth for board coordination; this file records the current expected flow and role-local reminders.
|
|
4
4
|
|
|
5
|
-
## 1. Identity and Context
|
|
5
|
+
## 1. Identity and Wake Context
|
|
6
6
|
|
|
7
|
-
- `GET /api/agents/me` -- confirm your id, role, budget,
|
|
8
|
-
- Check wake context: `PAPERCLIP_TASK_ID`, `PAPERCLIP_WAKE_REASON`, `PAPERCLIP_WAKE_COMMENT_ID`.
|
|
7
|
+
- `GET /api/agents/me` -- confirm your id, role, companyId, budget, and chain of command.
|
|
8
|
+
- Check wake context: `PAPERCLIP_TASK_ID`, `PAPERCLIP_WAKE_REASON`, `PAPERCLIP_WAKE_COMMENT_ID`, `PAPERCLIP_APPROVAL_ID`.
|
|
9
|
+
- If the wake reason is approval/review/routine, treat that object as the active assignment.
|
|
9
10
|
|
|
10
|
-
## 2.
|
|
11
|
+
## 2. Get Assigned Work
|
|
11
12
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
5. **Record progress updates** in the daily notes.
|
|
13
|
+
- Prefer `GET /api/agents/me/inbox-lite` for your actionable inbox.
|
|
14
|
+
- If `PAPERCLIP_TASK_ID` is set and belongs to you, prioritize it.
|
|
15
|
+
- Otherwise work assigned issues only. Never look for random unassigned work during a normal heartbeat.
|
|
16
|
+
- Include `todo`, `in_progress`, `in_review`, and review/approval tasks surfaced by the inbox. Skip blocked work unless you can unblock it.
|
|
17
17
|
|
|
18
|
-
## 3.
|
|
18
|
+
## 3. Load Execution Context
|
|
19
19
|
|
|
20
|
-
|
|
20
|
+
- For the chosen issue, call `GET /api/issues/{id}/heartbeat-context` before changing state.
|
|
21
|
+
- Inspect status, parent/children, project/goal, labels, comments, documents, work products, `blockedByIssueIds`, `executionPolicy`, and current execution state.
|
|
22
|
+
- Respect pause/cancel, budget, sandbox, and approval gates. Do not bypass executionPolicy review or approval stages.
|
|
21
23
|
|
|
22
|
-
|
|
23
|
-
- Close resolved issues or comment on what remains open.
|
|
24
|
+
## 4. Checkout and Work
|
|
24
25
|
|
|
25
|
-
|
|
26
|
+
- Checkout before mutating work: `POST /api/issues/{id}/checkout` with the expected current status when the API supports `expectedStatuses`.
|
|
27
|
+
- Never retry a 409; that issue belongs to another active run.
|
|
28
|
+
- Start actionable work in the same heartbeat; do not stop at a plan unless planning was requested.
|
|
29
|
+
- Leave durable progress with a clear next action. Use child issues for long or parallel delegated work instead of polling.
|
|
30
|
+
- Mark true dependencies with `blockedByIssueIds` instead of free-text blockers.
|
|
26
31
|
|
|
27
|
-
|
|
28
|
-
- Prioritize: `in_progress` first, then `todo`. Skip `blocked` unless you can unblock it.
|
|
29
|
-
- If there is already an active run on an `in_progress` task, just move on to the next thing.
|
|
30
|
-
- If `PAPERCLIP_TASK_ID` is set and assigned to you, prioritize that task.
|
|
32
|
+
## 5. Evidence, Work Products, and Handover
|
|
31
33
|
|
|
32
|
-
|
|
34
|
+
- Record real verification: commands, test results, screenshots, reviewed artifacts, or explicit "not run" rationale.
|
|
35
|
+
- Upload or attach user-inspectable outputs as work products/artifacts/documents; local filesystem paths alone are not enough.
|
|
36
|
+
- Use issue documents for long plans, specs, QA reports, security reviews, or hiring drafts; comments should summarize and link.
|
|
37
|
+
- Handoffs should use assignment/status/executionPolicy and a concrete next action. Do not rely on generic @-mentions.
|
|
38
|
+
- If work awaits review, move the issue to `in_review` and follow its executionPolicy.
|
|
33
39
|
|
|
34
|
-
|
|
35
|
-
- Never retry a 409 -- that task belongs to someone else.
|
|
36
|
-
- Do the work. Update status and comment when done.
|
|
40
|
+
## 6. Exit
|
|
37
41
|
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
-
|
|
41
|
-
- Create subissues only for independent work slices; avoid splitting tightly coupled implementation across sibling subissues.
|
|
42
|
-
- Use `paperclip-create-agent` skill when hiring new agents.
|
|
43
|
-
- Assign work to the right agent for the job.
|
|
44
|
-
|
|
45
|
-
## 7. Fact Extraction
|
|
46
|
-
|
|
47
|
-
1. Check for new conversations since last extraction.
|
|
48
|
-
2. Extract durable facts to the relevant entity in `$AGENT_HOME/life/` (PARA).
|
|
49
|
-
3. Update `$AGENT_HOME/memory/YYYY-MM-DD.md` with timeline entries.
|
|
50
|
-
4. Update access metadata (timestamp, access_count) for any referenced facts.
|
|
51
|
-
|
|
52
|
-
## 8. Exit
|
|
53
|
-
|
|
54
|
-
- Comment on any in_progress work before exiting.
|
|
55
|
-
- If no assignments and no valid mention-handoff, exit cleanly.
|
|
56
|
-
|
|
57
|
-
---
|
|
58
|
-
|
|
59
|
-
## CEO Responsibilities
|
|
60
|
-
|
|
61
|
-
- **Strategic direction**: Set goals and priorities aligned with the company mission.
|
|
62
|
-
- **Hiring**: Spin up new agents when capacity is needed.
|
|
63
|
-
- **Unblocking**: Escalate or resolve blockers for reports.
|
|
64
|
-
- **Budget awareness**: Above 80% spend, focus only on critical tasks.
|
|
65
|
-
- **Never look for unassigned work** -- only work on what is assigned to you.
|
|
66
|
-
- **Never cancel cross-team tasks** -- reassign to the relevant manager with a comment.
|
|
42
|
+
- Always comment before exiting any issue you touched: status, evidence, blockers, work products, and next action.
|
|
43
|
+
- If the issue used an isolated execution workspace/worktree, close it before final disposition: read `currentExecutionWorkspace.id` from `heartbeat-context`, check `GET /api/execution-workspaces/{id}/close-readiness`, then archive with `PATCH /api/execution-workspaces/{id}` `{ "status": "archived" }` after commits/PRs are merged and the tree is clean. If close-readiness or cleanup is blocked, do not mark `done`; leave the issue `blocked`/`in_review` with the exact cleanup blocker and next owner.
|
|
44
|
+
- If no assigned work, valid approval/review, or routine-run exists, exit cleanly without scanning unrelated unassigned work.
|
|
67
45
|
|
|
68
46
|
## Rules
|
|
69
47
|
|
|
70
48
|
- Always use the Paperclip skill for coordination.
|
|
71
|
-
- Always include `X-Paperclip-Run-Id`
|
|
72
|
-
-
|
|
73
|
-
-
|
|
49
|
+
- Always include `X-Paperclip-Run-Id` on mutating API calls when available.
|
|
50
|
+
- Keep comments concise markdown: status line + bullets + links.
|
|
51
|
+
- Never expose secrets, credentials, private customer data, or hidden chain-of-thought in comments or artifacts.
|
|
74
52
|
|
|
75
53
|
<!-- Module heartbeat sections are inserted above this line during assembly -->
|
|
@@ -1,37 +1,53 @@
|
|
|
1
|
-
# HEARTBEAT.md --
|
|
1
|
+
# HEARTBEAT.md -- Cmo Heartbeat Checklist
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Run this checklist on every heartbeat. The Paperclip skill is the source of truth for board coordination; this file records the current expected flow and role-local reminders.
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
- Check wake context: `PAPERCLIP_TASK_ID`, `PAPERCLIP_WAKE_REASON`.
|
|
5
|
+
## 1. Identity and Wake Context
|
|
7
6
|
|
|
8
|
-
|
|
7
|
+
- `GET /api/agents/me` -- confirm your id, role, companyId, budget, and chain of command.
|
|
8
|
+
- Check wake context: `PAPERCLIP_TASK_ID`, `PAPERCLIP_WAKE_REASON`, `PAPERCLIP_WAKE_COMMENT_ID`, `PAPERCLIP_APPROVAL_ID`.
|
|
9
|
+
- If the wake reason is approval/review/routine, treat that object as the active assignment.
|
|
9
10
|
|
|
10
|
-
|
|
11
|
-
- Prioritize `in_progress` first, then `todo`.
|
|
11
|
+
## 2. Get Assigned Work
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
- Prefer `GET /api/agents/me/inbox-lite` for your actionable inbox.
|
|
14
|
+
- If `PAPERCLIP_TASK_ID` is set and belongs to you, prioritize it.
|
|
15
|
+
- Otherwise work assigned issues only. Never look for random unassigned work during a normal heartbeat.
|
|
16
|
+
- Include `todo`, `in_progress`, `in_review`, and review/approval tasks surfaced by the inbox. Skip blocked work unless you can unblock it.
|
|
14
17
|
|
|
15
|
-
|
|
16
|
-
- Never retry a 409 -- that task belongs to someone else.
|
|
17
|
-
- Do the work. Update status and comment when done.
|
|
18
|
-
- When producing marketing deliverables, write them as markdown documents in the project workspace.
|
|
18
|
+
## 3. Load Execution Context
|
|
19
19
|
|
|
20
|
-
|
|
20
|
+
- For the chosen issue, call `GET /api/issues/{id}/heartbeat-context` before changing state.
|
|
21
|
+
- Inspect status, parent/children, project/goal, labels, comments, documents, work products, `blockedByIssueIds`, `executionPolicy`, and current execution state.
|
|
22
|
+
- Respect pause/cancel, budget, sandbox, and approval gates. Do not bypass executionPolicy review or approval stages.
|
|
21
23
|
|
|
22
|
-
|
|
23
|
-
- Include links to deliverable files in your comment.
|
|
24
|
-
- Update issue status appropriately.
|
|
24
|
+
## 4. Checkout and Work
|
|
25
25
|
|
|
26
|
-
|
|
26
|
+
- Checkout before mutating work: `POST /api/issues/{id}/checkout` with the expected current status when the API supports `expectedStatuses`.
|
|
27
|
+
- Never retry a 409; that issue belongs to another active run.
|
|
28
|
+
- Start actionable work in the same heartbeat; do not stop at a plan unless planning was requested.
|
|
29
|
+
- Leave durable progress with a clear next action. Use child issues for long or parallel delegated work instead of polling.
|
|
30
|
+
- Mark true dependencies with `blockedByIssueIds` instead of free-text blockers.
|
|
27
31
|
|
|
28
|
-
|
|
29
|
-
|
|
32
|
+
## 5. Evidence, Work Products, and Handover
|
|
33
|
+
|
|
34
|
+
- Record real verification: commands, test results, screenshots, reviewed artifacts, or explicit "not run" rationale.
|
|
35
|
+
- Upload or attach user-inspectable outputs as work products/artifacts/documents; local filesystem paths alone are not enough.
|
|
36
|
+
- Use issue documents for long plans, specs, QA reports, security reviews, or hiring drafts; comments should summarize and link.
|
|
37
|
+
- Handoffs should use assignment/status/executionPolicy and a concrete next action. Do not rely on generic @-mentions.
|
|
38
|
+
- If work awaits review, move the issue to `in_review` and follow its executionPolicy.
|
|
39
|
+
|
|
40
|
+
## 6. Exit
|
|
41
|
+
|
|
42
|
+
- Always comment before exiting any issue you touched: status, evidence, blockers, work products, and next action.
|
|
43
|
+
- If the issue used an isolated execution workspace/worktree, close it before final disposition: read `currentExecutionWorkspace.id` from `heartbeat-context`, check `GET /api/execution-workspaces/{id}/close-readiness`, then archive with `PATCH /api/execution-workspaces/{id}` `{ "status": "archived" }` after commits/PRs are merged and the tree is clean. If close-readiness or cleanup is blocked, do not mark `done`; leave the issue `blocked`/`in_review` with the exact cleanup blocker and next owner.
|
|
44
|
+
- If no assigned work, valid approval/review, or routine-run exists, exit cleanly without scanning unrelated unassigned work.
|
|
30
45
|
|
|
31
46
|
## Rules
|
|
32
47
|
|
|
33
48
|
- Always use the Paperclip skill for coordination.
|
|
34
|
-
- Always include `X-Paperclip-Run-Id`
|
|
35
|
-
-
|
|
49
|
+
- Always include `X-Paperclip-Run-Id` on mutating API calls when available.
|
|
50
|
+
- Keep comments concise markdown: status line + bullets + links.
|
|
51
|
+
- Never expose secrets, credentials, private customer data, or hidden chain-of-thought in comments or artifacts.
|
|
36
52
|
|
|
37
53
|
<!-- Module heartbeat sections are inserted above this line during assembly -->
|