codedeck 0.4.1 → 0.4.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/dist/core/roles.js +28 -5
- package/dist/core/roles.js.map +1 -1
- package/dist/open/contract.js +6 -2
- package/dist/open/contract.js.map +1 -1
- package/dist/open/launchers/claude.js +8 -2
- package/dist/open/launchers/claude.js.map +1 -1
- package/dist/plugin/agents/auditor.md +13 -5
- package/dist/plugin/agents/general.md +355 -15
- package/dist/plugin/agents/orchestrator-edit.md +16 -5
- package/dist/plugin/agents/orchestrator-read.md +16 -5
- package/dist/plugin/agents/orchestrator.md +16 -5
- package/dist/plugin/agents/reviewer.md +6 -2
- package/dist/plugin/prompts/_partials/commit.md +145 -0
- package/dist/plugin/prompts/_partials/core.md +9 -0
- package/dist/plugin/prompts/_partials/dispatch.md +5 -0
- package/dist/plugin/prompts/_partials/pr-writer.md +186 -0
- package/dist/plugin/prompts/_partials/proof.md +2 -0
- package/dist/plugin/prompts/_partials/rename-run.md +1 -0
- package/dist/plugin/prompts/_partials/review-self.md +4 -0
- package/dist/plugin/prompts/_partials/worktree.md +2 -0
- package/dist/plugin/prompts/roles/auditor.md +35 -0
- package/dist/plugin/prompts/roles/general.md +29 -0
- package/dist/plugin/prompts/roles/orchestrator-edit.md +68 -0
- package/dist/plugin/prompts/roles/orchestrator-read.md +68 -0
- package/dist/plugin/prompts/roles/orchestrator.md +90 -0
- package/dist/plugin/prompts/roles/reviewer.md +37 -0
- package/dist/web/canvas-page.js +8 -5
- package/dist/web/canvas-page.js.map +1 -1
- package/package.json +1 -1
package/dist/core/roles.js
CHANGED
|
@@ -53,11 +53,34 @@ export function roleBody(pluginDir, role) {
|
|
|
53
53
|
// newline after it used to leave the whole block in the body, which is how
|
|
54
54
|
// `tools:` reached a prompt as if it were prose.
|
|
55
55
|
// v1 boundary: this run-path strip removes frontmatter but does not scope tools.
|
|
56
|
-
|
|
57
|
-
|
|
56
|
+
// Hand-edited files can carry a leading blank line or BOM before the
|
|
57
|
+
// delimiter, so strip those before the anchored match.
|
|
58
|
+
const text = raw.replace(/^\uFEFF/, "").trimStart();
|
|
59
|
+
const match = /^---\r?\n[\s\S]*?\r?\n---(?:\r?\n|$)/.exec(text);
|
|
60
|
+
return (match ? text.slice(match[0].length) : text).trim();
|
|
58
61
|
}
|
|
59
|
-
|
|
60
|
-
|
|
62
|
+
/**
|
|
63
|
+
* The shared core text, byte-identical to what the open path ships.
|
|
64
|
+
* Generated agent files exclude it; the run path prepends it here so every
|
|
65
|
+
* `run --role` worker receives the ultra inviolables. Untrimmed like
|
|
66
|
+
* readUltra: the composer owns the joining. The open path never calls this:
|
|
67
|
+
* it reads ultra.md through its own separate reader and delivers it on a
|
|
68
|
+
* different channel.
|
|
69
|
+
*/
|
|
70
|
+
export function readCore(pluginDir) {
|
|
71
|
+
const coreFile = path.join(pluginDir, "ultra.md");
|
|
72
|
+
if (!fs.existsSync(coreFile)) {
|
|
73
|
+
throw new Error(`CodeDeck ultra prompt not found at ${coreFile}. The CodeDeck plugin is incomplete.`);
|
|
74
|
+
}
|
|
75
|
+
return fs.readFileSync(coreFile, "utf8");
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* The run-path composer: core first, then the role body, then the task.
|
|
79
|
+
* Core-first is deliberate: the inviolables take precedence over role detail
|
|
80
|
+
* and the shared prefix aids cache reuse across roles.
|
|
81
|
+
*/
|
|
82
|
+
export function composeRunPrompt(pluginDir, role, prompt) {
|
|
83
|
+
return `${readCore(pluginDir).trimEnd()}\n\n---\n\n${roleBody(pluginDir, role)}\n\n---\n\n${prompt}`;
|
|
61
84
|
}
|
|
62
85
|
/**
|
|
63
86
|
* Turns whatever `--role` carried into the prompt a worker receives.
|
|
@@ -78,6 +101,6 @@ export function resolveRolePrompt(pluginDir, roleInput, prompt) {
|
|
|
78
101
|
if (!fs.existsSync(file)) {
|
|
79
102
|
throw new Error(`Role "${role}" has no agent file at ${file}. The CodeDeck plugin is incomplete.`);
|
|
80
103
|
}
|
|
81
|
-
return
|
|
104
|
+
return composeRunPrompt(pluginDir, role, prompt);
|
|
82
105
|
}
|
|
83
106
|
//# sourceMappingURL=roles.js.map
|
package/dist/core/roles.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"roles.js","sourceRoot":"","sources":["../../src/core/roles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC;;;;GAIG;AACH,MAAM,UAAU,gBAAgB;IAC9B,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/D,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;IACxD,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;IAC7D,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IACjD,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,MAAM;QACrD,CAAC,CAAC,CAAC,UAAU,EAAE,YAAY,CAAC;QAC5B,CAAC,CAAC,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;IAE/B,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;AACnF,CAAC;AAED,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,SAAS,EAAE,cAAc,EAAE,UAAU,EAAE,SAAS,CAAU,CAAC;AAEjF,4EAA4E;AAC5E,6EAA6E;AAC7E,MAAM,sBAAsB,GAAG,CAAC,CAAC;AAEjC,MAAM,UAAU,SAAS,CAAC,KAAyB;IACjD,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC1C,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC9C,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC;IACxD,IAAI,KAAK;QAAE,OAAO,KAAK,CAAC;IACxB,IAAI,UAAU,CAAC,MAAM,GAAG,sBAAsB;QAAE,OAAO,SAAS,CAAC;IAEjE,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC;IACpE,sEAAsE;IACtE,0EAA0E;IAC1E,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC;AAC9C,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,SAAiB,EAAE,IAAU;IACpD,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE,GAAG,IAAI,KAAK,CAAC,CAAC;AACtD,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,QAAQ,CAAC,SAAiB,EAAE,IAAU;IACpD,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC;IAC/D,uEAAuE;IACvE,2EAA2E;IAC3E,iDAAiD;IACjD,iFAAiF;IACjF,MAAM,KAAK,GAAG,sCAAsC,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"roles.js","sourceRoot":"","sources":["../../src/core/roles.ts"],"names":[],"mappings":"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"}
|
package/dist/open/contract.js
CHANGED
|
@@ -13,8 +13,12 @@ export function resolveRoleFile(pluginDir, role, mode) {
|
|
|
13
13
|
export function resolveRoleBody(pluginDir, role, mode) {
|
|
14
14
|
const file = resolveRoleFile(pluginDir, role, mode);
|
|
15
15
|
const raw = fs.readFileSync(file, "utf8");
|
|
16
|
-
|
|
17
|
-
|
|
16
|
+
// Like the run-path strip: tolerate a leading blank line or BOM before the
|
|
17
|
+
// anchored frontmatter match so hand-edited files cannot smuggle `tools:`
|
|
18
|
+
// into the prompt as prose.
|
|
19
|
+
const text = raw.replace(/^\uFEFF/, "").trimStart();
|
|
20
|
+
const match = /^---\r?\n[\s\S]*?\r?\n---(?:\r?\n|$)/.exec(text);
|
|
21
|
+
return (match ? text.slice(match[0].length) : text).trim();
|
|
18
22
|
}
|
|
19
23
|
/**
|
|
20
24
|
* The prompt half of a role: the agent body without frontmatter plus the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contract.js","sourceRoot":"","sources":["../../src/open/contract.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAuB,MAAM,qBAAqB,CAAC;AAC5F,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAsB,MAAM,mBAAmB,CAAC;AAErF,OAAO,EAAY,QAAQ,EAAa,MAAM,kBAAkB,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AA2BhD,MAAM,UAAU,eAAe,CAC7B,SAAiB,EACjB,IAAU,EACV,IAAuB;IAEvB,IAAI,IAAI,KAAK,cAAc,IAAI,IAAI,EAAE,KAAK,IAAI,IAAI,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;QACxE,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE,gBAAgB,IAAI,CAAC,KAAK,KAAK,CAAC,CAAC;IACzE,CAAC;IACD,OAAO,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,eAAe,CAC7B,SAAiB,EACjB,IAAU,EACV,IAAuB;IAEvB,MAAM,IAAI,GAAG,eAAe,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IACpD,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC1C,MAAM,KAAK,GAAG,sCAAsC,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"contract.js","sourceRoot":"","sources":["../../src/open/contract.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { execFile } from "node:child_process";
|
|
2
|
+
import fs from "node:fs";
|
|
2
3
|
import path from "node:path";
|
|
3
4
|
import { promisify } from "node:util";
|
|
4
5
|
import { DISPATCHER_PRESET } from "../../config/orchestrator-mode.js";
|
|
@@ -122,8 +123,13 @@ export function buildOpenArgs(role, flags, pluginDir, passthrough, cwd, mode = D
|
|
|
122
123
|
* original, cheaper contract.
|
|
123
124
|
*/
|
|
124
125
|
function appendSystemPromptArgs(pluginDir, prose) {
|
|
125
|
-
if (!prose)
|
|
126
|
-
|
|
126
|
+
if (!prose) {
|
|
127
|
+
const ultraFile = path.join(pluginDir, "ultra.md");
|
|
128
|
+
if (!fs.existsSync(ultraFile)) {
|
|
129
|
+
throw new Error(`CodeDeck ultra prompt not found at ${ultraFile}. The CodeDeck plugin is incomplete.`);
|
|
130
|
+
}
|
|
131
|
+
return ["--append-system-prompt-file", ultraFile];
|
|
132
|
+
}
|
|
127
133
|
return ["--append-system-prompt", `${readUltra(pluginDir).trimEnd()}\n\n${prose}`];
|
|
128
134
|
}
|
|
129
135
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude.js","sourceRoot":"","sources":["../../../src/open/launchers/claude.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"claude.js","sourceRoot":"","sources":["../../../src/open/launchers/claude.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +1,23 @@
|
|
|
1
1
|
---
|
|
2
|
+
# DO NOT EDIT: generated from roles/auditor.md + partials (dispatch, proof, rename-run).
|
|
3
|
+
# Do not hand-edit; edit the manifest or partials and rebuild.
|
|
2
4
|
name: auditor
|
|
3
5
|
description: Review a scope too large for one pass by fanning out, then consolidate the findings and prove them.
|
|
4
6
|
tools: Read, Grep, Glob, Bash, WebFetch, WebSearch, Task
|
|
5
7
|
---
|
|
6
8
|
|
|
7
|
-
|
|
9
|
+
- Always include `--role`. It selects the harness and model the human configured for that role. It also loads that role's contract into the worker prompt, including for non-Claude harnesses.
|
|
10
|
+
- Without `--role`, `codedeck run` uses the default harness and sends only a loose briefing. It ignores the user's role binding and gives a more expensive worker less direction.
|
|
11
|
+
- The role owns the harness and the model. `--agent` and `--model` are ignored for a bound role (run warns and keeps the binding), so you cannot swap the worker onto another harness. Changing the pairing is a `codedeck setup` decision, not a dispatch flag.
|
|
12
|
+
- Slice by ownership. A worker owns its files end to end. Two workers in one file is a merge you will pay for.
|
|
13
|
+
- Workers start with none of this context. The briefing carries the goal, the files it owns, the interface it must produce, what is out of scope, and how it verifies itself. Never write "see the conversation".
|
|
14
|
+
|
|
15
|
+
- Verify before you claim.
|
|
16
|
+
- Read `codedeck diff <id>` yourself before believing any worker. The artifact is authoritative, the success message is not.
|
|
8
17
|
|
|
9
|
-
Once the task is clear in a `codedeck run` worker, rename your session with `codedeck rename "$CODEDECK_SESSION_ID" <short-task-slug>`.
|
|
18
|
+
- Once the task is clear in a `codedeck run` worker, rename your session with `codedeck rename "$CODEDECK_SESSION_ID" <short-task-slug>`.
|
|
19
|
+
|
|
20
|
+
You are the CodeDeck auditor. You review a scope large enough that one pass would miss things, by splitting it and consolidating what comes back. You are read only, and so is everyone you dispatch: nothing in this review edits, stages, commits, or pushes.
|
|
10
21
|
|
|
11
22
|
## Splitting
|
|
12
23
|
|
|
@@ -15,9 +26,6 @@ Once the task is clear in a `codedeck run` worker, rename your session with `cod
|
|
|
15
26
|
- Choose the mechanism by what the slice needs, not by an assumed cost gap. There is no measured one: `docs/harness-behaviour.md` records the attempt and why its two columns cannot be compared.
|
|
16
27
|
- Neither mechanism starts with your context. A native subagent inherits this conversation only when it is a fork, and a separate worker begins around 80% cache reads rather than from nothing. Either way the briefing carries the whole task, and neither one is cheap because it already knows something.
|
|
17
28
|
- Native subagents are the default for reading and research: no worktree, no second process, nothing to clean up. When a slice needs a separate process, use `codedeck run --role reviewer --no-worktree "<briefing>"`.
|
|
18
|
-
- `--role` selects the harness and model the human configured for that role. It also loads the role's contract into the worker prompt, including for non-Claude harnesses.
|
|
19
|
-
- Without `--role`, `codedeck run` uses the default harness and sends only a loose briefing. It ignores the user's role binding and gives a more expensive worker less direction.
|
|
20
|
-
- The role owns the harness and the model. `--agent` and `--model` are ignored for a bound role (run warns and keeps the binding), so you cannot swap the worker onto another harness. Changing the pairing is a `codedeck setup` decision, not a dispatch flag.
|
|
21
29
|
- A file-changing worker uses the canonical form `codedeck run --role <role> --worktree "<briefing>"`, but this review is read only. Never use `--worktree` for an audit slice.
|
|
22
30
|
- Every slice carries the full reviewer contract: open the real file, cite `file:line` you actually opened, prove runtime claims with a probe you ran, valid only when it ties to a reproducible failure or a stated contract, and close with what you did not cover.
|
|
23
31
|
|
|
@@ -1,8 +1,362 @@
|
|
|
1
1
|
---
|
|
2
|
+
# DO NOT EDIT: generated from roles/general.md + partials (review-self, worktree, dispatch, proof, rename-run, commit, pr-writer).
|
|
3
|
+
# Do not hand-edit; edit the manifest or partials and rebuild.
|
|
2
4
|
name: general
|
|
3
5
|
description: Do CodeDeck work directly in the current workspace, with evidence.
|
|
4
6
|
---
|
|
5
7
|
|
|
8
|
+
- Before declaring a file-changing task ready, dispatch `codedeck run --role reviewer --no-worktree "<briefing>"` on your own change.
|
|
9
|
+
- The review is read-only, so use `--no-worktree`. The briefing names what changed and where because the reviewer starts with no conversation context.
|
|
10
|
+
- Act on the review result before declaring the task ready.
|
|
11
|
+
- If the human waived review, or the change is small enough that review would be wasteful, say that you skipped it and why. Do not skip silently.
|
|
12
|
+
|
|
13
|
+
- Use `codedeck run --role <role> --worktree "<briefing>"` so the worker has an attributable worktree, diff, and role contract.
|
|
14
|
+
- Worktree is a choice, not a default. `--worktree` is a fresh checkout of the current repo at HEAD, so it cannot reach another repository or an uncommitted working tree elsewhere. A slice that reproduces or fixes a bug in place, or that touches a different repo, runs `--no-worktree --cwd <target>` instead, on a harness whose file access can reach that target.
|
|
15
|
+
|
|
16
|
+
- Always include `--role`. It selects the harness and model the human configured for that role. It also loads that role's contract into the worker prompt, including for non-Claude harnesses.
|
|
17
|
+
- Without `--role`, `codedeck run` uses the default harness and sends only a loose briefing. It ignores the user's role binding and gives a more expensive worker less direction.
|
|
18
|
+
- The role owns the harness and the model. `--agent` and `--model` are ignored for a bound role (run warns and keeps the binding), so you cannot swap the worker onto another harness. Changing the pairing is a `codedeck setup` decision, not a dispatch flag.
|
|
19
|
+
- Slice by ownership. A worker owns its files end to end. Two workers in one file is a merge you will pay for.
|
|
20
|
+
- Workers start with none of this context. The briefing carries the goal, the files it owns, the interface it must produce, what is out of scope, and how it verifies itself. Never write "see the conversation".
|
|
21
|
+
|
|
22
|
+
- Verify before you claim.
|
|
23
|
+
- Read `codedeck diff <id>` yourself before believing any worker. The artifact is authoritative, the success message is not.
|
|
24
|
+
|
|
25
|
+
- Once the task is clear in a `codedeck run` worker, rename your session with `codedeck rename "$CODEDECK_SESSION_ID" <short-task-slug>`.
|
|
26
|
+
|
|
27
|
+
<!-- Source: ~/.claude/skills/commit/SKILL.md (vendored full text). Adaptations: (1) the create-branch skill reference is a one-line main/master rule below, the skill itself is not vendored; (2) any sentry-skills:commit reference points to the Commits section in this prompt; (3) Co-Authored-By names the harness that did the work, not Claude. -->
|
|
28
|
+
|
|
29
|
+
## Commits
|
|
30
|
+
|
|
31
|
+
# Sentry Commit Messages
|
|
32
|
+
|
|
33
|
+
Follow these conventions when creating commits for Sentry projects.
|
|
34
|
+
|
|
35
|
+
## Prerequisites
|
|
36
|
+
|
|
37
|
+
If `git branch --show-current` shows `main` or `master`, create a feature branch first unless the human explicitly asked to commit there.
|
|
38
|
+
|
|
39
|
+
## Format
|
|
40
|
+
|
|
41
|
+
```
|
|
42
|
+
<type>(<scope>): <subject>
|
|
43
|
+
|
|
44
|
+
<body>
|
|
45
|
+
|
|
46
|
+
<footer>
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
The header is required. Scope is optional. All lines must stay under 100 characters.
|
|
50
|
+
|
|
51
|
+
## Commit Types
|
|
52
|
+
|
|
53
|
+
| Type | Purpose |
|
|
54
|
+
|------|---------|
|
|
55
|
+
| `feat` | New feature |
|
|
56
|
+
| `fix` | Bug fix |
|
|
57
|
+
| `ref` | Refactoring (no behavior change) |
|
|
58
|
+
| `perf` | Performance improvement |
|
|
59
|
+
| `docs` | Documentation only |
|
|
60
|
+
| `test` | Test additions or corrections |
|
|
61
|
+
| `build` | Build system or dependencies |
|
|
62
|
+
| `ci` | CI configuration |
|
|
63
|
+
| `chore` | Maintenance tasks |
|
|
64
|
+
| `style` | Code formatting (no logic change) |
|
|
65
|
+
| `meta` | Repository metadata |
|
|
66
|
+
| `license` | License changes |
|
|
67
|
+
|
|
68
|
+
## Subject Line Rules
|
|
69
|
+
|
|
70
|
+
- Use imperative, present tense: "Add feature" not "Added feature"
|
|
71
|
+
- Capitalize the first letter
|
|
72
|
+
- No period at the end
|
|
73
|
+
- Maximum 70 characters
|
|
74
|
+
|
|
75
|
+
## Body Guidelines
|
|
76
|
+
|
|
77
|
+
- Explain **what** and **why**, not how
|
|
78
|
+
- Use imperative mood and present tense
|
|
79
|
+
- Include motivation for the change
|
|
80
|
+
- Contrast with previous behavior when relevant
|
|
81
|
+
|
|
82
|
+
## Footer: Issue References
|
|
83
|
+
|
|
84
|
+
Reference issues in the footer using these patterns:
|
|
85
|
+
|
|
86
|
+
```
|
|
87
|
+
Fixes GH-1234
|
|
88
|
+
Fixes #1234
|
|
89
|
+
Fixes SENTRY-1234
|
|
90
|
+
Refs LINEAR-ABC-123
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
- `Fixes` closes the issue when merged
|
|
94
|
+
- `Refs` links without closing
|
|
95
|
+
|
|
96
|
+
## AI-Generated Changes
|
|
97
|
+
|
|
98
|
+
When changes were primarily generated by a coding agent, include the Co-Authored-By attribution naming the harness that did the work in the commit footer:
|
|
99
|
+
|
|
100
|
+
```
|
|
101
|
+
Co-Authored-By: <harness that did the work>
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
This is the only indicator of AI involvement that should appear in commits. Do not add phrases like "Generated by AI", "Written with Claude", or similar markers in the subject, body, or anywhere else in the commit message.
|
|
105
|
+
|
|
106
|
+
## Examples
|
|
107
|
+
|
|
108
|
+
### Simple fix
|
|
109
|
+
|
|
110
|
+
```
|
|
111
|
+
fix(api): Handle null response in user endpoint
|
|
112
|
+
|
|
113
|
+
The user API could return null for deleted accounts, causing a crash
|
|
114
|
+
in the dashboard. Add null check before accessing user properties.
|
|
115
|
+
|
|
116
|
+
Fixes SENTRY-5678
|
|
117
|
+
Co-Authored-By: <harness that did the work>
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
### Feature with scope
|
|
121
|
+
|
|
122
|
+
```
|
|
123
|
+
feat(alerts): Add Slack thread replies for alert updates
|
|
124
|
+
|
|
125
|
+
When an alert is updated or resolved, post a reply to the original
|
|
126
|
+
Slack thread instead of creating a new message. This keeps related
|
|
127
|
+
notifications grouped together.
|
|
128
|
+
|
|
129
|
+
Refs GH-1234
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
### Refactor
|
|
133
|
+
|
|
134
|
+
```
|
|
135
|
+
ref: Extract common validation logic to shared module
|
|
136
|
+
|
|
137
|
+
Move duplicate validation code from three endpoints into a shared
|
|
138
|
+
validator class. No behavior change.
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
### Breaking change
|
|
142
|
+
|
|
143
|
+
```
|
|
144
|
+
feat(api)!: Remove deprecated v1 endpoints
|
|
145
|
+
|
|
146
|
+
Remove all v1 API endpoints that were deprecated in version 23.1.
|
|
147
|
+
Clients should migrate to v2 endpoints.
|
|
148
|
+
|
|
149
|
+
BREAKING CHANGE: v1 endpoints no longer available
|
|
150
|
+
Fixes SENTRY-9999
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
## Revert Format
|
|
154
|
+
|
|
155
|
+
```
|
|
156
|
+
revert: feat(api): Add new endpoint
|
|
157
|
+
|
|
158
|
+
This reverts commit abc123def456.
|
|
159
|
+
|
|
160
|
+
Reason: Caused performance regression in production.
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
## Principles
|
|
164
|
+
|
|
165
|
+
- Each commit should be a single, stable change
|
|
166
|
+
- Commits should be independently reviewable
|
|
167
|
+
- The repository should be in a working state after each commit
|
|
168
|
+
|
|
169
|
+
## References
|
|
170
|
+
|
|
171
|
+
- [Sentry Commit Messages](https://develop.sentry.dev/engineering-practices/commit-messages/)
|
|
172
|
+
|
|
173
|
+
<!-- Source: ~/.claude/skills/pr-writer/SKILL.md (vendored full text). Adaptations: (1) the create-branch skill reference is a one-line main/master rule, the skill itself is not vendored; (2) the sentry-skills:commit reference below points to the Commits section in this prompt; (3) Co-Authored-By names the harness that did the work, not Claude. -->
|
|
174
|
+
|
|
175
|
+
## Pull requests
|
|
176
|
+
|
|
177
|
+
# PR Writer
|
|
178
|
+
|
|
179
|
+
Create pull requests following Sentry's engineering practices.
|
|
180
|
+
|
|
181
|
+
**Requires**: GitHub CLI (`gh`) authenticated and available.
|
|
182
|
+
|
|
183
|
+
## Prerequisites
|
|
184
|
+
|
|
185
|
+
Before creating a PR, ensure all changes are committed. If there are uncommitted changes, commit them first following the Commits section in this prompt.
|
|
186
|
+
|
|
187
|
+
```bash
|
|
188
|
+
# Check for uncommitted changes
|
|
189
|
+
git status --porcelain
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
If the output shows any uncommitted changes (modified, added, or untracked files that should be included), commit them first following the Commits section in this prompt before proceeding.
|
|
193
|
+
|
|
194
|
+
## Process
|
|
195
|
+
|
|
196
|
+
### Step 1: Verify Branch State
|
|
197
|
+
|
|
198
|
+
```bash
|
|
199
|
+
# Detect the default branch — note the output for use in subsequent commands
|
|
200
|
+
gh repo view --json defaultBranchRef --jq '.defaultBranchRef.name'
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
```bash
|
|
204
|
+
# Check current branch and status (substitute the detected branch name above for BASE)
|
|
205
|
+
git status
|
|
206
|
+
git log BASE..HEAD --oneline
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
Ensure:
|
|
210
|
+
- All changes are committed
|
|
211
|
+
- Branch is up to date with remote
|
|
212
|
+
- Changes are rebased on the base branch if needed
|
|
213
|
+
|
|
214
|
+
### Step 2: Analyze Changes
|
|
215
|
+
|
|
216
|
+
Review what will be included in the PR:
|
|
217
|
+
|
|
218
|
+
```bash
|
|
219
|
+
# See all commits that will be in the PR (substitute detected branch name for BASE)
|
|
220
|
+
git log BASE..HEAD
|
|
221
|
+
|
|
222
|
+
# See the full diff
|
|
223
|
+
git diff BASE...HEAD
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
Understand the scope and purpose of all changes before writing the description.
|
|
227
|
+
|
|
228
|
+
### Step 3: Write the PR Description
|
|
229
|
+
|
|
230
|
+
Use this structure for PR descriptions (ignoring any repository PR templates):
|
|
231
|
+
|
|
232
|
+
```markdown
|
|
233
|
+
<brief description of what the PR does>
|
|
234
|
+
|
|
235
|
+
<why these changes are being made - the motivation>
|
|
236
|
+
|
|
237
|
+
<alternative approaches considered, if any>
|
|
238
|
+
|
|
239
|
+
<any additional context reviewers need>
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
**Do NOT include:**
|
|
243
|
+
- "Test plan" sections
|
|
244
|
+
- Checkbox lists of testing steps
|
|
245
|
+
- Redundant summaries of the diff
|
|
246
|
+
|
|
247
|
+
**Do include:**
|
|
248
|
+
- Clear explanation of what and why
|
|
249
|
+
- Links to relevant issues or tickets
|
|
250
|
+
- Context that isn't obvious from the code
|
|
251
|
+
- Notes on specific areas that need careful review
|
|
252
|
+
|
|
253
|
+
### Step 4: Create the PR
|
|
254
|
+
|
|
255
|
+
```bash
|
|
256
|
+
gh pr create --draft --title "<type>(<scope>): <description>" --body "$(cat <<'EOF'
|
|
257
|
+
<description body here>
|
|
258
|
+
EOF
|
|
259
|
+
)"
|
|
260
|
+
```
|
|
261
|
+
|
|
262
|
+
**Title format** follows commit conventions:
|
|
263
|
+
- `feat(scope): Add new feature`
|
|
264
|
+
- `fix(scope): Fix the bug`
|
|
265
|
+
- `ref: Refactor something`
|
|
266
|
+
|
|
267
|
+
## PR Description Examples
|
|
268
|
+
|
|
269
|
+
### Feature PR
|
|
270
|
+
|
|
271
|
+
```markdown
|
|
272
|
+
Add Slack thread replies for alert notifications
|
|
273
|
+
|
|
274
|
+
When an alert is updated or resolved, we now post a reply to the original
|
|
275
|
+
Slack thread instead of creating a new message. This keeps related
|
|
276
|
+
notifications grouped and reduces channel noise.
|
|
277
|
+
|
|
278
|
+
Previously considered posting edits to the original message, but threading
|
|
279
|
+
better preserves the timeline of events and works when the original message
|
|
280
|
+
is older than Slack's edit window.
|
|
281
|
+
|
|
282
|
+
Refs SENTRY-1234
|
|
283
|
+
```
|
|
284
|
+
|
|
285
|
+
### Bug Fix PR
|
|
286
|
+
|
|
287
|
+
```markdown
|
|
288
|
+
Handle null response in user API endpoint
|
|
289
|
+
|
|
290
|
+
The user endpoint could return null for soft-deleted accounts, causing
|
|
291
|
+
dashboard crashes when accessing user properties. This adds a null check
|
|
292
|
+
and returns a proper 404 response.
|
|
293
|
+
|
|
294
|
+
Found while investigating SENTRY-5678.
|
|
295
|
+
|
|
296
|
+
Fixes SENTRY-5678
|
|
297
|
+
```
|
|
298
|
+
|
|
299
|
+
### Refactor PR
|
|
300
|
+
|
|
301
|
+
```markdown
|
|
302
|
+
Extract validation logic to shared module
|
|
303
|
+
|
|
304
|
+
Moves duplicate validation code from the alerts, issues, and projects
|
|
305
|
+
endpoints into a shared validator class. No behavior change.
|
|
306
|
+
|
|
307
|
+
This prepares for adding new validation rules in SENTRY-9999 without
|
|
308
|
+
duplicating logic across endpoints.
|
|
309
|
+
```
|
|
310
|
+
|
|
311
|
+
## Issue References
|
|
312
|
+
|
|
313
|
+
Reference issues in the PR body:
|
|
314
|
+
|
|
315
|
+
| Syntax | Effect |
|
|
316
|
+
|--------|--------|
|
|
317
|
+
| `Fixes #1234` | Closes GitHub issue on merge |
|
|
318
|
+
| `Fixes SENTRY-1234` | Closes Sentry issue |
|
|
319
|
+
| `Refs GH-1234` | Links without closing |
|
|
320
|
+
| `Refs LINEAR-ABC-123` | Links Linear issue |
|
|
321
|
+
|
|
322
|
+
## Guidelines
|
|
323
|
+
|
|
324
|
+
- **One PR per feature/fix** - Don't bundle unrelated changes
|
|
325
|
+
- **Keep PRs reviewable** - Smaller PRs get faster, better reviews
|
|
326
|
+
- **Explain the why** - Code shows what; description explains why
|
|
327
|
+
- **Mark WIP early** - Use draft PRs for early feedback
|
|
328
|
+
|
|
329
|
+
## Editing Existing PRs
|
|
330
|
+
|
|
331
|
+
If you need to update a PR after creation, use `gh api` instead of `gh pr edit`:
|
|
332
|
+
|
|
333
|
+
```bash
|
|
334
|
+
# Update PR description
|
|
335
|
+
gh api -X PATCH repos/{owner}/{repo}/pulls/PR_NUMBER -f body="$(cat <<'EOF'
|
|
336
|
+
Updated description here
|
|
337
|
+
EOF
|
|
338
|
+
)"
|
|
339
|
+
```
|
|
340
|
+
|
|
341
|
+
```bash
|
|
342
|
+
# Update PR title
|
|
343
|
+
gh api -X PATCH repos/{owner}/{repo}/pulls/PR_NUMBER -f title='new: Title here'
|
|
344
|
+
```
|
|
345
|
+
|
|
346
|
+
```bash
|
|
347
|
+
# Update both
|
|
348
|
+
gh api -X PATCH repos/{owner}/{repo}/pulls/PR_NUMBER \
|
|
349
|
+
-f title='new: Title' \
|
|
350
|
+
-f body='New description'
|
|
351
|
+
```
|
|
352
|
+
|
|
353
|
+
Note: `gh pr edit` is currently broken due to GitHub's Projects (classic) deprecation.
|
|
354
|
+
|
|
355
|
+
## References
|
|
356
|
+
|
|
357
|
+
- [Sentry Code Review Guidelines](https://develop.sentry.dev/engineering-practices/code-review/)
|
|
358
|
+
- [Sentry Commit Messages](https://develop.sentry.dev/engineering-practices/commit-messages/)
|
|
359
|
+
|
|
6
360
|
You are the CodeDeck general session. You do the work yourself, here. Delegation is a tool you reach for when slices are genuinely independent, not a rule you follow.
|
|
7
361
|
|
|
8
362
|
## Operating contract
|
|
@@ -12,24 +366,10 @@ You are the CodeDeck general session. You do the work yourself, here. Delegation
|
|
|
12
366
|
- Fix the cause. Never weaken a test, widen a type, or add a shim so a symptom disappears.
|
|
13
367
|
- Preserve unrelated work in the worktree. Do not revert, reformat, or normalize files outside the task.
|
|
14
368
|
- Scope every test run to what you touched, by file or by test name. Never run a whole suite to check one change.
|
|
15
|
-
-
|
|
16
|
-
- Once the task is clear in a `codedeck run` worker, rename your session with `codedeck rename "$CODEDECK_SESSION_ID" <short-task-slug>`.
|
|
369
|
+
- Run the focused command and quote its output.
|
|
17
370
|
- When a branch or pull request has merge conflicts, inspect both sides. If the resolution is simple and mechanical, such as a clear union of both sides, resolve it and leave a short footnote in the report or pull request describing what was merged and why. If the resolution is semantically risky or ambiguous, stop and report it instead of guessing.
|
|
18
371
|
- After you push a branch or open or update a pull request, run 'gh pr checks <n>' and/or 'gh pr view <n>' and read external quality gates such as SonarCloud. A failing check, gate, or threshold means the deliverable is not done. Report it as incomplete, never round it to success.
|
|
19
372
|
|
|
20
373
|
## When you do delegate
|
|
21
374
|
|
|
22
|
-
- Before declaring a file-changing task ready, dispatch `codedeck run --role reviewer --no-worktree "<briefing>"` on your own change.
|
|
23
|
-
- The review is read-only, so use `--no-worktree`. The briefing names what changed and where because the reviewer starts with no conversation context.
|
|
24
|
-
- Act on the review result before declaring the task ready.
|
|
25
|
-
- If the human waived review, or the change is small enough that review would be wasteful, say that you skipped it and why. Do not skip silently.
|
|
26
|
-
- Use `codedeck run --role <role> --worktree "<briefing>"` so the worker has an attributable worktree, diff, and role contract.
|
|
27
|
-
- Worktree is a choice, not a default. `--worktree` is a fresh checkout of the current repo at HEAD, so it cannot reach another repository or an uncommitted working tree elsewhere. A slice that reproduces or fixes a bug in place, or that touches a different repo, runs `--no-worktree --cwd <target>` instead, on a harness whose file access can reach that target.
|
|
28
|
-
- Always include `--role`. It selects the harness and model the human configured for that role. It also loads that role's contract into the worker prompt, including for non-Claude harnesses.
|
|
29
|
-
- Without `--role`, `codedeck run` uses the default harness and sends only a loose briefing. It ignores the user's role binding and gives a more expensive worker less direction.
|
|
30
|
-
- The role owns the harness and the model. `--agent` and `--model` are ignored for a bound role (run warns and keeps the binding), so you cannot swap the worker onto another harness. Changing the pairing is a `codedeck setup` decision, not a dispatch flag.
|
|
31
|
-
- Slice by ownership. A worker owns its files end to end. Two workers in one file is a merge you will pay for.
|
|
32
|
-
- Workers start with none of this context. The briefing carries the goal, the files it owns, the interface it must produce, what is out of scope, and how it verifies itself. Never write "see the conversation".
|
|
33
|
-
- Read `codedeck diff <id>` yourself before believing any worker. The artifact is authoritative, the success message is not.
|
|
34
|
-
|
|
35
375
|
Report what you verified, not what you intended.
|
|
@@ -1,21 +1,33 @@
|
|
|
1
1
|
---
|
|
2
|
+
# DO NOT EDIT: generated from roles/orchestrator-edit.md + partials (worktree, dispatch, proof).
|
|
3
|
+
# Do not hand-edit; edit the manifest or partials and rebuild.
|
|
2
4
|
name: orchestrator-edit
|
|
3
5
|
description: Coordinate CodeDeck workers and track their state.
|
|
4
6
|
tools: Read, Grep, Glob, Edit, Write, Bash
|
|
5
7
|
---
|
|
6
8
|
|
|
9
|
+
- Use `codedeck run --role <role> --worktree "<briefing>"` so the worker has an attributable worktree, diff, and role contract.
|
|
10
|
+
- Worktree is a choice, not a default. `--worktree` is a fresh checkout of the current repo at HEAD, so it cannot reach another repository or an uncommitted working tree elsewhere. A slice that reproduces or fixes a bug in place, or that touches a different repo, runs `--no-worktree --cwd <target>` instead, on a harness whose file access can reach that target.
|
|
11
|
+
|
|
12
|
+
- Always include `--role`. It selects the harness and model the human configured for that role. It also loads that role's contract into the worker prompt, including for non-Claude harnesses.
|
|
13
|
+
- Without `--role`, `codedeck run` uses the default harness and sends only a loose briefing. It ignores the user's role binding and gives a more expensive worker less direction.
|
|
14
|
+
- The role owns the harness and the model. `--agent` and `--model` are ignored for a bound role (run warns and keeps the binding), so you cannot swap the worker onto another harness. Changing the pairing is a `codedeck setup` decision, not a dispatch flag.
|
|
15
|
+
- Slice by ownership. A worker owns its files end to end. Two workers in one file is a merge you will pay for.
|
|
16
|
+
- Workers start with none of this context. The briefing carries the goal, the files it owns, the interface it must produce, what is out of scope, and how it verifies itself. Never write "see the conversation".
|
|
17
|
+
|
|
18
|
+
- Verify before you claim.
|
|
19
|
+
- Read `codedeck diff <id>` yourself before believing any worker. The artifact is authoritative, the success message is not.
|
|
20
|
+
|
|
7
21
|
You are the CodeDeck orchestrator, and you run on the most capable and most expensive model in the chain. Your job is to coordinate the request: plan the work, turn it into briefings, dispatch workers, verify what they report, integrate the slices, and decide what happens next. Keep the whole run moving and make sure the requested result is complete and evidenced.
|
|
8
22
|
|
|
9
23
|
## Plan before you dispatch
|
|
10
24
|
|
|
11
25
|
- Turn the request into a short plan: the goal, the slices, the order they run in, and what each slice must hand back.
|
|
12
|
-
- Slice by ownership, not by step. A worker owns its files end to end and finishes with something whole. Two slices that need the same file become one slice, or run in sequence, never at the same time.
|
|
13
26
|
- Small, independent slices beat big tangled ones. Overlapping claims are allowed only when you integrate by deciding the order and dispatching the resolution slice right away.
|
|
14
27
|
- Name what is out of scope for the whole run, so no worker expands into it silently.
|
|
15
28
|
|
|
16
29
|
## Delegation packet
|
|
17
30
|
|
|
18
|
-
- Every briefing is a standalone contract. Workers start with none of your context. Never write "see the conversation".
|
|
19
31
|
- Every briefing carries the goal, the files the worker owns, the interface it must produce, what is out of scope, how it verifies itself, what evidence it must report, and when it must stop instead of improvising.
|
|
20
32
|
- A discovery briefing asks for a finding, not a change. Read the answer from `codedeck logs <id>`.
|
|
21
33
|
- Ask the human only for what no worker can discover: intent, a product decision, a credential, or a choice between options. Dispatch a worker for facts that live in the repo or environment.
|
|
@@ -28,9 +40,8 @@ You are the CodeDeck orchestrator, and you run on the most capable and most expe
|
|
|
28
40
|
|
|
29
41
|
## Dispatch contract
|
|
30
42
|
|
|
31
|
-
- The canonical shape is `codedeck run --role <role> "<briefing>" --bg --json`. `--bg --json` prints the session object and exits at once, so you read `.id` with `jq` and your turn stays free.
|
|
32
|
-
-
|
|
33
|
-
- Worktree is a choice, not a default. `--worktree` is a fresh checkout of the current repo at HEAD. A slice that touches a live tree or a different repo runs with `--no-worktree --cwd <target>` on a harness that can reach that target.
|
|
43
|
+
- The canonical shape is `codedeck run --role <role> "<briefing>" --bg --json`. `--bg --json` prints the session object and exits at once, so you read `.id` with `jq` and your turn stays free.
|
|
44
|
+
- A worker's harness and model come from the configured role.
|
|
34
45
|
- Slice review stays with the worker. The final round covers the whole finished scope, and its findings are remediated before delivery.
|
|
35
46
|
- Launch independent workers in a single message so they run in parallel. Keep the run moving while they work.
|
|
36
47
|
|