@williambeto/ai-workflow 1.18.16 → 1.18.17
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/.agents/skills/{codex-pr-workflow → pr-orchestrator}/SKILL.md +2 -2
- package/CHANGELOG.md +8 -0
- package/README.md +1 -0
- package/docs/full-documentation.md +2 -2
- package/opencode/agents/README.md +3 -3
- package/opencode.jsonc +2 -2
- package/package.json +1 -1
- package/packages/ai-workflow/src/commands/init.js +69 -0
- package/packages/ai-workflow/src/core/opencode-merge.js +39 -1
- package/packages/ai-workflow/src/core/templates.js +1 -1
- package/prompts/03-create-tech-plan.md +2 -2
- package/prompts/04-breakdown-prs.md +1 -1
- package/prompts/05-implement-pr.md +2 -2
- package/prompts/06-review-and-fix.md +2 -2
- package/prompts/08-validate.md +2 -2
- package/prompts/09-deploy.md +2 -2
- package/runbooks/apply-starter-to-real-project.md +1 -1
- package/runbooks/branch-cleanup.md +109 -0
- package/runbooks/deploy-checklist.md +1 -1
- package/runbooks/how-to-use-skills.md +16 -16
- package/runbooks/quick-start-guide.md +1 -1
- package/runbooks/tutorial-walkthroughs.md +5 -5
- package/runbooks/validation-checklist.md +1 -1
- package/templates/AGENTS.template.md +2 -2
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
---
|
|
2
|
-
name:
|
|
2
|
+
name: pr-orchestrator
|
|
3
3
|
description: Use when planning, implementing, reviewing, or validating small pull requests with Codex while preserving scope and avoiding regressions.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
> Token economy active: keep output compact, context minimal. Reference: `token-economy` + `minimal-context` skills.
|
|
7
7
|
|
|
8
|
-
#
|
|
8
|
+
# PR Orchestrator Skill
|
|
9
9
|
|
|
10
10
|
## Purpose
|
|
11
11
|
|
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,11 @@
|
|
|
1
|
+
## [1.18.17](https://github.com/williambeto/ai-workflow/compare/v1.18.16...v1.18.17) (2026-05-23)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Bug Fixes
|
|
5
|
+
|
|
6
|
+
* **init:** ignore generated workflow footprint ([15eba7a](https://github.com/williambeto/ai-workflow/commit/15eba7a2ac3ad81af3f6e6984be900717a6e89ef))
|
|
7
|
+
* **init:** use canonical opencode full config ([8b8551d](https://github.com/williambeto/ai-workflow/commit/8b8551d5af00b8924dbc8f2244b159f091fcb810))
|
|
8
|
+
|
|
1
9
|
## [1.18.16](https://github.com/williambeto/ai-workflow/compare/v1.18.15...v1.18.16) (2026-05-22)
|
|
2
10
|
|
|
3
11
|
|
package/README.md
CHANGED
|
@@ -242,7 +242,7 @@ Skills define focused behavior for AI agents. Use exactly one primary skill per
|
|
|
242
242
|
| --- | --- |
|
|
243
243
|
| [`product-manager`](.agents/skills/product-manager/SKILL.md) | Clarifying requirements, users, scope, and acceptance criteria. |
|
|
244
244
|
| [`tech-lead`](.agents/skills/tech-lead/SKILL.md) | Planning architecture, trade-offs, risks, and sequencing. |
|
|
245
|
-
| [`
|
|
245
|
+
| [`pr-orchestrator`](.agents/skills/pr-orchestrator/SKILL.md) | Splitting, executing, reviewing, and summarizing small PRs. |
|
|
246
246
|
| [`frontend-implementer`](.agents/skills/frontend-implementer/SKILL.md) | Frontend UI, routing, state, styling, and accessibility work. |
|
|
247
247
|
| [`backend-implementer`](.agents/skills/backend-implementer/SKILL.md) | APIs, services, data, validation, auth, and server-side tests. |
|
|
248
248
|
| [`tester`](.agents/skills/tester/SKILL.md) | Acceptance criteria, regression coverage, and validation evidence. |
|
|
@@ -266,7 +266,7 @@ Skills define focused behavior for AI agents. Use exactly one primary skill per
|
|
|
266
266
|
| --- | --- |
|
|
267
267
|
| Requirement or acceptance criteria | `product-manager` |
|
|
268
268
|
| Technical plan | `tech-lead` |
|
|
269
|
-
| PR breakdown | `
|
|
269
|
+
| PR breakdown | `pr-orchestrator` |
|
|
270
270
|
| Frontend implementation | `frontend-implementer` |
|
|
271
271
|
| Backend implementation | `backend-implementer` |
|
|
272
272
|
| Test strategy or review | `tester` |
|
|
@@ -79,9 +79,9 @@ Delegation policy baseline:
|
|
|
79
79
|
When routing to an agent, use this baseline skill auto-load map:
|
|
80
80
|
|
|
81
81
|
```txt
|
|
82
|
-
planner -> product-manager + tech-lead +
|
|
83
|
-
implementer ->
|
|
84
|
-
reviewer -> tester +
|
|
82
|
+
planner -> product-manager + tech-lead + pr-orchestrator
|
|
83
|
+
implementer -> pr-orchestrator + tester + (frontend-implementer or backend-implementer)
|
|
84
|
+
reviewer -> tester + pr-orchestrator
|
|
85
85
|
validator -> build-and-validate + tester
|
|
86
86
|
release-manager -> deploy-engineer
|
|
87
87
|
```
|
package/opencode.jsonc
CHANGED
|
@@ -96,10 +96,10 @@
|
|
|
96
96
|
"description": "Plan and review deployment, release, rollback, CI/CD readiness",
|
|
97
97
|
"prompt": "{file:.agents/skills/deploy-engineer/SKILL.md}"
|
|
98
98
|
},
|
|
99
|
-
"
|
|
99
|
+
"pr-orchestrator": {
|
|
100
100
|
"mode": "subagent",
|
|
101
101
|
"description": "Plan and validate small PRs, preserve scope, avoid regressions",
|
|
102
|
-
"prompt": "{file:.agents/skills/
|
|
102
|
+
"prompt": "{file:.agents/skills/pr-orchestrator/SKILL.md}"
|
|
103
103
|
},
|
|
104
104
|
"build-and-validate": {
|
|
105
105
|
"mode": "subagent",
|
package/package.json
CHANGED
|
@@ -20,6 +20,65 @@ function printPlan(actions) {
|
|
|
20
20
|
}
|
|
21
21
|
}
|
|
22
22
|
|
|
23
|
+
function toIgnoreEntries(linkPath) {
|
|
24
|
+
if (linkPath === "README.workflow.md") {
|
|
25
|
+
return [linkPath];
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
const normalized = linkPath.endsWith("/") ? linkPath.slice(0, -1) : linkPath;
|
|
29
|
+
return [normalized, `${normalized}/`];
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
function buildGitignoreBlock(entries) {
|
|
33
|
+
const unique = Array.from(new Set(entries));
|
|
34
|
+
const sorted = unique.sort((a, b) => a.localeCompare(b));
|
|
35
|
+
|
|
36
|
+
return [
|
|
37
|
+
"# BEGIN AI WORKFLOW KIT",
|
|
38
|
+
"# AI Workflow Kit generated files",
|
|
39
|
+
...sorted,
|
|
40
|
+
"# END AI WORKFLOW KIT"
|
|
41
|
+
].join("\n");
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
async function upsertGitignoreBlock(cwd, entries) {
|
|
45
|
+
const gitignorePath = path.join(cwd, ".gitignore");
|
|
46
|
+
const block = buildGitignoreBlock(entries);
|
|
47
|
+
const beginMarker = "# BEGIN AI WORKFLOW KIT";
|
|
48
|
+
const endMarker = "# END AI WORKFLOW KIT";
|
|
49
|
+
|
|
50
|
+
const hasGitignore = await exists(gitignorePath);
|
|
51
|
+
if (!hasGitignore) {
|
|
52
|
+
await writeFileSafe(gitignorePath, `${block}\n`);
|
|
53
|
+
return "created";
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
const current = await fs.readFile(gitignorePath, "utf8");
|
|
57
|
+
const beginIndex = current.indexOf(beginMarker);
|
|
58
|
+
const endIndex = current.indexOf(endMarker);
|
|
59
|
+
|
|
60
|
+
if (beginIndex >= 0 && endIndex > beginIndex) {
|
|
61
|
+
const before = current
|
|
62
|
+
.slice(0, beginIndex)
|
|
63
|
+
.replace(/\n?# AI Workflow Kit generated files\n?$/, "\n")
|
|
64
|
+
.replace(/[ \t]+$/gm, "")
|
|
65
|
+
.replace(/\n*$/, "\n");
|
|
66
|
+
const afterStart = endIndex + endMarker.length;
|
|
67
|
+
const after = current.slice(afterStart).replace(/^\n*/, "\n");
|
|
68
|
+
const next = `${before}${block}${after}`;
|
|
69
|
+
if (next !== current) {
|
|
70
|
+
await writeFileSafe(gitignorePath, next);
|
|
71
|
+
return "updated";
|
|
72
|
+
}
|
|
73
|
+
return "unchanged";
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
const separator = current.endsWith("\n") ? "\n" : "\n\n";
|
|
77
|
+
const next = `${current}${separator}${block}\n`;
|
|
78
|
+
await writeFileSafe(gitignorePath, next);
|
|
79
|
+
return "updated";
|
|
80
|
+
}
|
|
81
|
+
|
|
23
82
|
export async function runInit({ cwd, yes, force, dryRun, noInstall, noOverwrite, profile }) {
|
|
24
83
|
const selectedProfile = profile ?? "full";
|
|
25
84
|
const installRoot = ".ai-workflow";
|
|
@@ -139,10 +198,20 @@ export async function runInit({ cwd, yes, force, dryRun, noInstall, noOverwrite,
|
|
|
139
198
|
? { reason: "skipped (minimal profile)" }
|
|
140
199
|
: await mergeOpencodeConfig(cwd, { force, backupRoot, profile: selectedProfile });
|
|
141
200
|
|
|
201
|
+
const generatedIgnoreEntries = [
|
|
202
|
+
".ai-workflow/",
|
|
203
|
+
".ai-workflow.json",
|
|
204
|
+
".ai-workflow-backups/",
|
|
205
|
+
...linkEntries.flatMap((entry) => toIgnoreEntries(entry.linkPath))
|
|
206
|
+
];
|
|
207
|
+
|
|
208
|
+
const gitignoreResult = await upsertGitignoreBlock(cwd, generatedIgnoreEntries);
|
|
209
|
+
|
|
142
210
|
console.log("Installation complete.");
|
|
143
211
|
console.log(`- profile: ${selectedProfile}`);
|
|
144
212
|
|
|
145
213
|
console.log(`- opencode.jsonc: ${opencodeResult.reason}`);
|
|
214
|
+
console.log(`- .gitignore: ${gitignoreResult}`);
|
|
146
215
|
console.log(`- symlink layout: ${linkCreated.length > 0 ? `created ${linkCreated.length}` : "already-up-to-date"}`);
|
|
147
216
|
if (backups.length > 0) {
|
|
148
217
|
console.log(`- backups created: ${backups.length}`);
|
|
@@ -1,10 +1,40 @@
|
|
|
1
1
|
import path from "node:path";
|
|
2
2
|
import { exists, readJsonc, writeFileSafe } from "./filesystem.js";
|
|
3
3
|
import { createManagedBackup } from "./backup.js";
|
|
4
|
+
import { readPackageFile } from "./package-assets.js";
|
|
4
5
|
|
|
5
6
|
const LEGACY_MARKER = "_aiWorkflowManaged";
|
|
6
7
|
|
|
8
|
+
function loadCanonicalFullConfig() {
|
|
9
|
+
try {
|
|
10
|
+
const raw = readPackageFile("opencode.jsonc");
|
|
11
|
+
if (!raw) return null;
|
|
12
|
+
const parsed = JSON.parse(raw);
|
|
13
|
+
|
|
14
|
+
if (!parsed || typeof parsed !== "object") return null;
|
|
15
|
+
if (!parsed.agent || !parsed.command) return null;
|
|
16
|
+
|
|
17
|
+
if (!parsed.agent.default) {
|
|
18
|
+
parsed.agent.default = {
|
|
19
|
+
mode: "primary",
|
|
20
|
+
description: "Default OpenCode agent for this project",
|
|
21
|
+
prompt:
|
|
22
|
+
"You are the default OpenCode agent for this repository. Follow local project docs and validation commands."
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
return parsed;
|
|
27
|
+
} catch {
|
|
28
|
+
return null;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
|
|
7
32
|
function buildManagedConfig(profile = "full") {
|
|
33
|
+
const canonicalFull = profile === "full" ? loadCanonicalFullConfig() : null;
|
|
34
|
+
if (canonicalFull) {
|
|
35
|
+
return canonicalFull;
|
|
36
|
+
}
|
|
37
|
+
|
|
8
38
|
const fullPrimaryAgents =
|
|
9
39
|
profile === "full"
|
|
10
40
|
? {
|
|
@@ -31,7 +61,7 @@ function buildManagedConfig(profile = "full") {
|
|
|
31
61
|
? {
|
|
32
62
|
"backend-implementer": { mode: "subagent", description: "Backend implementation specialist", prompt: "{file:./.agents/skills/backend-implementer/SKILL.md}" },
|
|
33
63
|
"build-and-validate": { mode: "subagent", description: "Build and validation specialist", prompt: "{file:./.agents/skills/build-and-validate/SKILL.md}" },
|
|
34
|
-
"
|
|
64
|
+
"pr-orchestrator": { mode: "subagent", description: "PR breakdown and flow specialist", prompt: "{file:./.agents/skills/pr-orchestrator/SKILL.md}" },
|
|
35
65
|
"deploy-engineer": { mode: "subagent", description: "Deploy and release specialist", prompt: "{file:./.agents/skills/deploy-engineer/SKILL.md}" },
|
|
36
66
|
"docs-writer": { mode: "subagent", description: "Documentation specialist", prompt: "{file:./.agents/skills/docs-writer/SKILL.md}" },
|
|
37
67
|
"frontend-implementer": { mode: "subagent", description: "Frontend implementation specialist", prompt: "{file:./.agents/skills/frontend-implementer/SKILL.md}" },
|
|
@@ -114,6 +144,14 @@ export async function mergeOpencodeConfig(cwd, { force = false, backupRoot = ".a
|
|
|
114
144
|
const next = {
|
|
115
145
|
...currentWithoutLegacy,
|
|
116
146
|
$schema: current.$schema ?? managed.$schema,
|
|
147
|
+
...(managed.mcp
|
|
148
|
+
? {
|
|
149
|
+
mcp: {
|
|
150
|
+
...(current.mcp ?? {}),
|
|
151
|
+
...managed.mcp
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
: {}),
|
|
117
155
|
agent: {
|
|
118
156
|
...(current.agent ?? {}),
|
|
119
157
|
...managed.agent
|
|
@@ -35,14 +35,14 @@ Supporting skills:
|
|
|
35
35
|
```txt
|
|
36
36
|
.agents/skills/tester/SKILL.md
|
|
37
37
|
.agents/skills/build-and-validate/SKILL.md
|
|
38
|
-
.agents/skills/
|
|
38
|
+
.agents/skills/pr-orchestrator/SKILL.md
|
|
39
39
|
```
|
|
40
40
|
|
|
41
41
|
Use `tester` to check whether the plan is testable.
|
|
42
42
|
|
|
43
43
|
Use `build-and-validate` to define realistic validation commands.
|
|
44
44
|
|
|
45
|
-
Use `
|
|
45
|
+
Use `pr-orchestrator` to split the work into safe pull requests.
|
|
46
46
|
|
|
47
47
|
## Required input
|
|
48
48
|
|
|
@@ -38,11 +38,11 @@ Common options:
|
|
|
38
38
|
Supporting skills:
|
|
39
39
|
|
|
40
40
|
```txt
|
|
41
|
-
.agents/skills/
|
|
41
|
+
.agents/skills/pr-orchestrator/SKILL.md
|
|
42
42
|
.agents/skills/tester/SKILL.md
|
|
43
43
|
```
|
|
44
44
|
|
|
45
|
-
Use `
|
|
45
|
+
Use `pr-orchestrator` to keep the PR scoped.
|
|
46
46
|
|
|
47
47
|
Use `tester` to check whether the implementation satisfies the PR acceptance criteria.
|
|
48
48
|
|
|
@@ -34,14 +34,14 @@ Supporting skills:
|
|
|
34
34
|
|
|
35
35
|
```txt
|
|
36
36
|
.agents/skills/build-and-validate/SKILL.md
|
|
37
|
-
.agents/skills/
|
|
37
|
+
.agents/skills/pr-orchestrator/SKILL.md
|
|
38
38
|
```
|
|
39
39
|
|
|
40
40
|
Use `tester` to verify correctness, regressions, edge cases, and acceptance criteria.
|
|
41
41
|
|
|
42
42
|
Use `build-and-validate` to run or interpret validation commands.
|
|
43
43
|
|
|
44
|
-
Use `
|
|
44
|
+
Use `pr-orchestrator` to ensure fixes stay inside the selected PR scope.
|
|
45
45
|
|
|
46
46
|
## Required input
|
|
47
47
|
|
package/prompts/08-validate.md
CHANGED
|
@@ -35,14 +35,14 @@ Supporting skills:
|
|
|
35
35
|
|
|
36
36
|
```txt
|
|
37
37
|
.agents/skills/build-and-validate/SKILL.md
|
|
38
|
-
.agents/skills/
|
|
38
|
+
.agents/skills/pr-orchestrator/SKILL.md
|
|
39
39
|
.agents/skills/docs-writer/SKILL.md
|
|
40
40
|
.agents/skills/deploy-engineer/SKILL.md
|
|
41
41
|
```
|
|
42
42
|
|
|
43
43
|
Use `build-and-validate` for command execution and failure analysis.
|
|
44
44
|
|
|
45
|
-
Use `
|
|
45
|
+
Use `pr-orchestrator` to check PR scope and review readiness.
|
|
46
46
|
|
|
47
47
|
Use `docs-writer` when validating documentation, prompts, templates, or runbooks.
|
|
48
48
|
|
package/prompts/09-deploy.md
CHANGED
|
@@ -36,7 +36,7 @@ Supporting skills:
|
|
|
36
36
|
```txt
|
|
37
37
|
.agents/skills/build-and-validate/SKILL.md
|
|
38
38
|
.agents/skills/tester/SKILL.md
|
|
39
|
-
.agents/skills/
|
|
39
|
+
.agents/skills/pr-orchestrator/SKILL.md
|
|
40
40
|
.agents/skills/docs-writer/SKILL.md
|
|
41
41
|
```
|
|
42
42
|
|
|
@@ -44,7 +44,7 @@ Use `build-and-validate` to verify build, tests, artifacts, and command results.
|
|
|
44
44
|
|
|
45
45
|
Use `tester` to verify acceptance criteria, smoke tests, and regression risks.
|
|
46
46
|
|
|
47
|
-
Use `
|
|
47
|
+
Use `pr-orchestrator` to confirm that the deployed scope matches the approved PR scope.
|
|
48
48
|
|
|
49
49
|
Use `docs-writer` when deployment instructions, release notes, or runbooks need documentation.
|
|
50
50
|
|
|
@@ -184,7 +184,7 @@ Examples:
|
|
|
184
184
|
| Nuxt Dashboard | `vue-nuxt`, `vue-nuxt`, `frontend-implementer`, `build-and-validate` |
|
|
185
185
|
| WordPress | `wordpress-engineer`, `docs-writer`, `build-and-validate`, `tester` |
|
|
186
186
|
| Testing automation | `tester`, `build-and-validate` |
|
|
187
|
-
| Prompt/system work | `token-economy`, `opencode-agent-design`, `
|
|
187
|
+
| Prompt/system work | `token-economy`, `opencode-agent-design`, `pr-orchestrator`, `docs-writer` |
|
|
188
188
|
| Release flow | `deploy-engineer`, `build-and-validate` |
|
|
189
189
|
|
|
190
190
|
Select one primary skill for the current task. Add supporting skills only when they improve the result.
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
# Branch Cleanup Runbook
|
|
2
|
+
|
|
3
|
+
## Purpose
|
|
4
|
+
|
|
5
|
+
Keep local and remote branches clean after each merged PR.
|
|
6
|
+
|
|
7
|
+
This reduces confusion, avoids stale references, and keeps the repository focused on active work.
|
|
8
|
+
|
|
9
|
+
## When to use
|
|
10
|
+
|
|
11
|
+
- After merging any PR.
|
|
12
|
+
- At the end of a feature/fix cycle.
|
|
13
|
+
- Before starting a new work item.
|
|
14
|
+
|
|
15
|
+
## Prerequisites
|
|
16
|
+
|
|
17
|
+
- Your latest PR is already merged.
|
|
18
|
+
- You have no uncommitted local changes.
|
|
19
|
+
|
|
20
|
+
Check:
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
git status -sb
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
## Standard cleanup workflow
|
|
27
|
+
|
|
28
|
+
1) Switch to main and sync:
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
git switch main
|
|
32
|
+
git pull origin main
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
1) Delete merged local work branch:
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
git branch -d <type>/<short-slug>
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
1) Delete remote work branch:
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
git push origin --delete <type>/<short-slug>
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
1) Prune stale remote references:
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
git fetch -p origin
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
1) Confirm final branch state:
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
git branch -a
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
Expected result:
|
|
60
|
+
|
|
61
|
+
- Local: only `main` (or only currently active work branch + `main`)
|
|
62
|
+
- Remote: only active branches that still matter
|
|
63
|
+
|
|
64
|
+
## Optional one-line cleanup (local only)
|
|
65
|
+
|
|
66
|
+
Delete all local branches except `main`:
|
|
67
|
+
|
|
68
|
+
```bash
|
|
69
|
+
git for-each-ref --format='%(refname:short)' refs/heads | while read b; do if [ "$b" != "main" ]; then git branch -D "$b"; fi; done
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
Use with care: this force-deletes local branches.
|
|
73
|
+
|
|
74
|
+
## Safety rules
|
|
75
|
+
|
|
76
|
+
- Do not delete `main`.
|
|
77
|
+
- Do not delete branches with unmerged work unless explicitly approved.
|
|
78
|
+
- Prefer `git branch -d` (safe) before `-D` (force).
|
|
79
|
+
|
|
80
|
+
## Troubleshooting
|
|
81
|
+
|
|
82
|
+
### "remote ref does not exist"
|
|
83
|
+
|
|
84
|
+
Cause: the remote branch was already deleted.
|
|
85
|
+
|
|
86
|
+
Action:
|
|
87
|
+
|
|
88
|
+
```bash
|
|
89
|
+
git fetch -p origin
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
### Branch still appears after deletion
|
|
93
|
+
|
|
94
|
+
Cause: stale local remote-tracking reference.
|
|
95
|
+
|
|
96
|
+
Action:
|
|
97
|
+
|
|
98
|
+
```bash
|
|
99
|
+
git fetch -p origin
|
|
100
|
+
git branch -a
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
## Compliance checklist
|
|
104
|
+
|
|
105
|
+
- [ ] PR merged
|
|
106
|
+
- [ ] Local work branch deleted
|
|
107
|
+
- [ ] Remote work branch deleted
|
|
108
|
+
- [ ] Stale refs pruned
|
|
109
|
+
- [ ] `git branch -a` verified
|
|
@@ -28,7 +28,7 @@ Use this runbook when:
|
|
|
28
28
|
│ └── SKILL.md
|
|
29
29
|
├── build-and-validate/
|
|
30
30
|
│ └── SKILL.md
|
|
31
|
-
├──
|
|
31
|
+
├── pr-orchestrator/
|
|
32
32
|
│ └── SKILL.md
|
|
33
33
|
├── deploy-engineer/
|
|
34
34
|
│ └── SKILL.md
|
|
@@ -60,9 +60,9 @@ Use this as the default auto-load map for daily work.
|
|
|
60
60
|
|
|
61
61
|
| Agent role | Auto-loaded primary skills | Contextual skills |
|
|
62
62
|
| ---------- | -------------------------- | ----------------- |
|
|
63
|
-
| `planner` | `product-manager`, `tech-lead`, `
|
|
64
|
-
| `implementer` | `
|
|
65
|
-
| `reviewer` | `tester`, `
|
|
63
|
+
| `planner` | `product-manager`, `tech-lead`, `pr-orchestrator` | `napkin` when decisions should be preserved across sprints |
|
|
64
|
+
| `implementer` | `pr-orchestrator`, `tester`, plus one implementer skill (`frontend-implementer` or `backend-implementer`) | `interface-design` for UI/UX refinement tasks |
|
|
65
|
+
| `reviewer` | `tester`, `pr-orchestrator` | `interface-design` when reviewing design/system consistency |
|
|
66
66
|
| `validator` | `build-and-validate`, `tester` | `deploy-engineer` for deploy-readiness checks |
|
|
67
67
|
| `release-manager` | `deploy-engineer` | `napkin` when release lessons should be persisted |
|
|
68
68
|
|
|
@@ -84,12 +84,12 @@ Policy:
|
|
|
84
84
|
| Review a functional spec | `tester` | `product-manager` |
|
|
85
85
|
| Create a technical plan | `tech-lead` | `build-and-validate`, `tester` |
|
|
86
86
|
| Review a technical plan | `tech-lead` | `tester` |
|
|
87
|
-
| Break work into PRs | `
|
|
88
|
-
| Implement frontend work | `frontend-implementer` | `
|
|
89
|
-
| Implement backend work | `backend-implementer` | `
|
|
87
|
+
| Break work into PRs | `pr-orchestrator` | `tech-lead`, `tester` |
|
|
88
|
+
| Implement frontend work | `frontend-implementer` | `pr-orchestrator`, `tester` |
|
|
89
|
+
| Implement backend work | `backend-implementer` | `pr-orchestrator`, `tester` |
|
|
90
90
|
| Write or update documentation | `docs-writer` | `tester` |
|
|
91
91
|
| Validate build/test commands | `build-and-validate` | `tester` |
|
|
92
|
-
| Review implemented PR | `tester` | `build-and-validate`, `
|
|
92
|
+
| Review implemented PR | `tester` | `build-and-validate`, `pr-orchestrator` |
|
|
93
93
|
| Fix validation failures | `build-and-validate` | `tester`, relevant implementer |
|
|
94
94
|
| Apply UI/design improvements | `frontend-implementer` | `tester`, `docs-writer` |
|
|
95
95
|
| Audit SEO/AEO/GEO visibility | `seo-audit` | `tester`, `docs-writer` |
|
|
@@ -133,7 +133,7 @@ Best for:
|
|
|
133
133
|
|
|
134
134
|
Do not use as the primary skill for writing all code unless explicitly requested.
|
|
135
135
|
|
|
136
|
-
### `
|
|
136
|
+
### `pr-orchestrator`
|
|
137
137
|
|
|
138
138
|
Use for PR discipline.
|
|
139
139
|
|
|
@@ -341,7 +341,7 @@ Use:
|
|
|
341
341
|
|
|
342
342
|
```txt
|
|
343
343
|
prompts/04-breakdown-prs.md
|
|
344
|
-
.agents/skills/
|
|
344
|
+
.agents/skills/pr-orchestrator/SKILL.md
|
|
345
345
|
```
|
|
346
346
|
|
|
347
347
|
Supporting skills:
|
|
@@ -382,7 +382,7 @@ Choose one primary implementer:
|
|
|
382
382
|
Supporting skills:
|
|
383
383
|
|
|
384
384
|
```txt
|
|
385
|
-
.agents/skills/
|
|
385
|
+
.agents/skills/pr-orchestrator/SKILL.md
|
|
386
386
|
.agents/skills/tester/SKILL.md
|
|
387
387
|
```
|
|
388
388
|
|
|
@@ -408,7 +408,7 @@ Supporting skills:
|
|
|
408
408
|
|
|
409
409
|
```txt
|
|
410
410
|
.agents/skills/build-and-validate/SKILL.md
|
|
411
|
-
.agents/skills/
|
|
411
|
+
.agents/skills/pr-orchestrator/SKILL.md
|
|
412
412
|
```
|
|
413
413
|
|
|
414
414
|
Goal:
|
|
@@ -500,7 +500,7 @@ Skill chaining means using multiple skills in sequence, not all at once.
|
|
|
500
500
|
Good sequence:
|
|
501
501
|
|
|
502
502
|
```txt
|
|
503
|
-
product-manager → tester → tech-lead →
|
|
503
|
+
product-manager → tester → tech-lead → pr-orchestrator → implementer → tester → build-and-validate
|
|
504
504
|
```
|
|
505
505
|
|
|
506
506
|
Bad sequence:
|
|
@@ -574,7 +574,7 @@ frontend-implementer
|
|
|
574
574
|
Supporting:
|
|
575
575
|
|
|
576
576
|
```txt
|
|
577
|
-
|
|
577
|
+
pr-orchestrator
|
|
578
578
|
tester
|
|
579
579
|
```
|
|
580
580
|
|
|
@@ -596,7 +596,7 @@ Is the expected behavior defined but the technical path unclear?
|
|
|
596
596
|
└── Use tech-lead.
|
|
597
597
|
|
|
598
598
|
Is the work too large or needs PR planning?
|
|
599
|
-
└── Use
|
|
599
|
+
└── Use pr-orchestrator.
|
|
600
600
|
|
|
601
601
|
Is the task frontend implementation?
|
|
602
602
|
└── Use frontend-implementer.
|
|
@@ -637,7 +637,7 @@ Risk:
|
|
|
637
637
|
Better:
|
|
638
638
|
|
|
639
639
|
```md
|
|
640
|
-
Use `prompts/04-breakdown-prs.md` with `
|
|
640
|
+
Use `prompts/04-breakdown-prs.md` with `pr-orchestrator` to split this feature into safe PRs.
|
|
641
641
|
```
|
|
642
642
|
|
|
643
643
|
### Implementation before requirement
|
|
@@ -107,7 +107,7 @@ Each workflow step has a recommended prompt and specialist skill:
|
|
|
107
107
|
| Create the requirement | `prompts/01-create-requirement.md` | `product-manager` |
|
|
108
108
|
| Create the specification | `prompts/02-create-spec.md` | `product-manager` + `tester` |
|
|
109
109
|
| Create the technical plan | `prompts/03-create-tech-plan.md` | `tech-lead` |
|
|
110
|
-
| Break work into PRs | `prompts/04-breakdown-prs.md` | `
|
|
110
|
+
| Break work into PRs | `prompts/04-breakdown-prs.md` | `pr-orchestrator` |
|
|
111
111
|
| Implement PR 1 | `prompts/05-implement-pr.md` | Frontend/backend/docs/deploy implementer |
|
|
112
112
|
| Review and fix | `prompts/06-review-and-fix.md` | `tester` |
|
|
113
113
|
| Validate | `prompts/08-validate.md` | `tester` + `build-and-validate` |
|
|
@@ -182,7 +182,7 @@ Split a technical plan into small, reviewable, incremental pull requests that pr
|
|
|
182
182
|
|
|
183
183
|
### Key references
|
|
184
184
|
|
|
185
|
-
- `.agents/skills/
|
|
185
|
+
- `.agents/skills/pr-orchestrator/SKILL.md`
|
|
186
186
|
- `schemas/pr-breakdown.schema.json`
|
|
187
187
|
- `harness/workflows/requirement-to-pr.md`
|
|
188
188
|
|
|
@@ -240,7 +240,7 @@ Review an implemented PR for correctness, scope compliance, regression risk, and
|
|
|
240
240
|
### Key references
|
|
241
241
|
|
|
242
242
|
- `.agents/skills/tester/SKILL.md`
|
|
243
|
-
- `.agents/skills/
|
|
243
|
+
- `.agents/skills/pr-orchestrator/SKILL.md`
|
|
244
244
|
- `AGENTS.md` (severity model, finding types)
|
|
245
245
|
|
|
246
246
|
---
|
|
@@ -373,9 +373,9 @@ Adapt the generic workflow to a specific technology stack using the variants sys
|
|
|
373
373
|
| Requirement | `product-manager` | `docs-writer`, `tester` |
|
|
374
374
|
| Specification | `product-manager` | `tester`, `docs-writer` |
|
|
375
375
|
| Technical Plan | `tech-lead` | `build-and-validate`, `tester` |
|
|
376
|
-
| PR Breakdown | `
|
|
377
|
-
| Implementation | `frontend-implementer` or `backend-implementer` | `
|
|
378
|
-
| Review | `tester` | `build-and-validate`, `
|
|
376
|
+
| PR Breakdown | `pr-orchestrator` | `tech-lead`, `tester` |
|
|
377
|
+
| Implementation | `frontend-implementer` or `backend-implementer` | `pr-orchestrator`, `tester` |
|
|
378
|
+
| Review | `tester` | `build-and-validate`, `pr-orchestrator` |
|
|
379
379
|
| Validation | `tester` | `build-and-validate` |
|
|
380
380
|
| Deployment | `deploy-engineer` | `build-and-validate`, `tester` |
|
|
381
381
|
|
|
@@ -42,7 +42,7 @@ Use the relevant skill depending on the task.
|
|
|
42
42
|
```txt
|
|
43
43
|
.agents/skills/product-manager/SKILL.md
|
|
44
44
|
.agents/skills/tech-lead/SKILL.md
|
|
45
|
-
.agents/skills/
|
|
45
|
+
.agents/skills/pr-orchestrator/SKILL.md
|
|
46
46
|
.agents/skills/frontend-implementer/SKILL.md
|
|
47
47
|
.agents/skills/backend-implementer/SKILL.md
|
|
48
48
|
.agents/skills/tester/SKILL.md
|
|
@@ -55,7 +55,7 @@ Use the relevant skill depending on the task.
|
|
|
55
55
|
|
|
56
56
|
- Use `product-manager` to clarify requirements, scope, users, outcomes, and acceptance criteria.
|
|
57
57
|
- Use `tech-lead` to create technical plans, identify architecture boundaries, risks, and trade-offs.
|
|
58
|
-
- Use `
|
|
58
|
+
- Use `pr-orchestrator` to plan, scope, summarize, and review pull requests.
|
|
59
59
|
- Use `frontend-implementer` for UI, component, state, routing, styling, accessibility, and frontend API integration work.
|
|
60
60
|
- Use `backend-implementer` for APIs, services, repositories, persistence, validation, authentication, authorization, and backend integrations.
|
|
61
61
|
- Use `tester` for acceptance criteria validation, regression review, edge cases, and final approval checks.
|