Skip to content

Commit 73b5dfb

Browse files
committed
Overhaul Bruckheimer prompt
Teach Bruckheimer named-identity product discovery docs with blinders on, success-criteria capture, and no tool-schema restatement or fake caps. Keep package id/path as bruckheimer. Closes CL-7027
1 parent 02a3f85 commit 73b5dfb

2 files changed

Lines changed: 76 additions & 11 deletions

File tree

src/agent/directors/bruckheimer/package.test.ts

Lines changed: 58 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { describe, expect, test } from "bun:test";
22
import { bruckheimerPackage } from "./package.js";
33

44
describe("bruckheimerPackage", () => {
5-
test("id matches directory", () => {
5+
test("id matches directory (keep bruckheimer path; identity is Bruckheimer)", () => {
66
expect(bruckheimerPackage.id).toBe("bruckheimer");
77
});
88

@@ -13,9 +13,59 @@ describe("bruckheimerPackage", () => {
1313

1414
test("systemPrompt states PRIMARY INTENT", () => {
1515
expect(bruckheimerPackage.systemPrompt).toMatch(/PRIMARY INTENT/i);
16-
expect(bruckheimerPackage.systemPrompt).toContain(
17-
"Route those via Blockers to build, greybeard, critique, or skywalker",
18-
);
16+
});
17+
18+
test("systemPrompt identity is Bruckheimer / BruckheimerDirector", () => {
19+
const p = bruckheimerPackage.systemPrompt;
20+
expect(p).toMatch(/BruckheimerDirector \(Bruckheimer\)/);
21+
expect(p).toMatch(/product-discovery lane only/i);
22+
expect(p).not.toMatch(/ProductDiscoveryDirector/);
23+
});
24+
25+
test("systemPrompt teaches product discovery docs (shape, not code)", () => {
26+
const p = bruckheimerPackage.systemPrompt;
27+
expect(p).toMatch(/product discovery documentation/i);
28+
expect(p).toMatch(/product shape/i);
29+
expect(p).toMatch(/first ninety seconds/i);
30+
expect(p).toMatch(/discoverable affordances/i);
31+
expect(p).toMatch(/failure states/i);
32+
expect(p).toMatch(/Do not implement product code/i);
33+
expect(p).toMatch(/PRODUCT \/ ARCHITECTURE \/ IMPLEMENTATION/i);
34+
});
35+
36+
test("systemPrompt is blinders-on discovery lane (no ship / plan / arch / fleet)", () => {
37+
const p = bruckheimerPackage.systemPrompt;
38+
expect(p).toMatch(/Blinders on/i);
39+
expect(p).toMatch(/Do not spawn specialists/i);
40+
expect(p).toMatch(/not Builder/i);
41+
expect(p).toMatch(/not Shakespeare/i);
42+
expect(p).toMatch(/not Counsel/i);
43+
expect(p).toMatch(/not Greybeard/i);
44+
expect(p).toMatch(/not Critic/i);
45+
expect(p).toMatch(/not an orchestrator/i);
46+
expect(p).toMatch(/report Blockers/i);
47+
});
48+
49+
test("systemPrompt has no tool-schema restatement or fake caps", () => {
50+
const p = bruckheimerPackage.systemPrompt;
51+
expect(p).not.toMatch(/parameters?:/i);
52+
expect(p).not.toMatch(/fan-out/i);
53+
expect(p).not.toMatch(/at most \d+/i);
54+
expect(p).not.toMatch(/turn budget/i);
55+
expect(p).not.toMatch(/scheduler/i);
56+
expect(p).not.toMatch(/Write tools are mounted/i);
57+
expect(p).not.toMatch(/path lock/i);
58+
expect(p).not.toMatch(/Prefer grep\/search_files/i);
59+
expect(p).not.toMatch(/Shell find\/rg/i);
60+
expect(p).not.toMatch(/via run_shell/i);
61+
});
62+
63+
test("systemPrompt has DONE GATE for success_criteria", () => {
64+
const p = bruckheimerPackage.systemPrompt;
65+
expect(p).toContain("DONE GATE");
66+
expect(p).toContain("success_criteria");
67+
expect(p).toMatch(/[Ss]top when/);
68+
expect(p).toContain("Blockers");
1969
});
2070

2171
test("spawn.maySpawn is false", () => {
@@ -36,5 +86,9 @@ describe("bruckheimerPackage", () => {
3686
expect(bruckheimerPackage.primaryIntent).toMatch(/product discovery/i);
3787
expect(bruckheimerPackage.outOfLane).toContain("shipping product code");
3888
expect(bruckheimerPackage.outOfLane).toContain("architecture gates");
89+
expect(bruckheimerPackage.outOfLane).toContain(
90+
"ongoing P/A/I docs maintenance as Shakespeare",
91+
);
92+
expect(bruckheimerPackage.outOfLane).toContain("ordered eng plans as Counsel");
3993
});
4094
});

src/agent/directors/bruckheimer/package.ts

Lines changed: 18 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@ import type { DirectorPackage } from "../types.js";
22
import { DOCS_TOOLS } from "../tool-sets.js";
33

44
/**
5-
* Product discovery specialist (CL-5824).
5+
* Bruckheimer leaf (CL-5824 / CL-7027).
6+
* Product discovery docs — invent/capture product shape; do not implement.
7+
* Package id/path stays `bruckheimer` (global rename is out of scope).
68
*/
79
export const bruckheimerPackage: DirectorPackage = {
810
id: "bruckheimer",
@@ -13,21 +15,30 @@ export const bruckheimerPackage: DirectorPackage = {
1315
"feature implementation",
1416
"hard merge blockers as Greybeard",
1517
"running the fleet",
18+
"ongoing P/A/I docs maintenance as Shakespeare",
19+
"ordered eng plans as Counsel",
1620
],
1721
description: "Product discovery specialist — user/product shape docs, not code",
1822
tools: { allow: DOCS_TOOLS },
1923
spawn: { maySpawn: false },
2024
tier: "leaf",
2125
modelRole: "docs",
22-
systemPrompt: `You are BruckheimerDirector, a specialist in Corbits Code.
26+
systemPrompt: `You are BruckheimerDirector (Bruckheimer), a specialist in Corbits Code.
2327
24-
PRIMARY INTENT: product discovery documentation. Invent and capture product shape — who the user is, first ninety seconds, discoverable affordances, failure states, copy that should change.
28+
PRIMARY INTENT: product discovery documentation. Invent and capture product shape — who the user is, first ninety seconds, discoverable affordances, failure states, and copy that should change. Produce discovery that orients PRODUCT / ARCHITECTURE / IMPLEMENTATION briefs. Do not implement product code.
2529
26-
Write tools are mounted with no path lock. Stay on the product-discovery lane. You are not an implementer. You are not the architecture gate (that is Greybeard). You do not ship features or product code.
30+
You are the product-discovery lane only — not Builder, not Shakespeare (ongoing P/A/I docs maintenance), not Counsel (ordered eng plans), not Greybeard (architecture gate), not Critic, not an orchestrator. Blinders on: stay on the brief's discovery ask. Do not spawn specialists. Do not ship features or become the architecture/docs/plan gate as your primary job.
2731
28-
Read the product as a person using it: can a new user get through the first ninety seconds? Which affordances are discoverable and which exist only in a file nobody reads? What state is the user left in when something fails — do they know what to press? Name specific strings and surfaces that should change.
32+
Discover against the brief:
33+
1. Map every success_criteria item to product-shape facts you will capture (or Blockers if you cannot).
34+
2. Read the product as a person using it: can a new user get through the first ninety seconds? Which affordances are discoverable vs buried? What state is the user left in when something fails — do they know what to press?
35+
3. Name specific strings, surfaces, flows, and failure modes that should change — evidence over vibes.
36+
4. Capture discovery in product-shape docs/briefs that a parent can hand to Shakespeare, Counsel, or Builder. Prefer concrete user moments over abstract vision essays.
37+
5. Report product shape and discovery, paths touched, and Blockers.
2938
30-
OUT OF LANE: implementing features, architecture sign-off, code review severity theater, fleet orchestration. Route those via Blockers to build, greybeard, critique, or skywalker.
39+
DONE GATE: Stop when every success_criteria item from the brief is answered OR explicitly blocked under Blockers. Do not invent architecture, ship code, author eng step-plans, or expand the brief after discovery is complete. If the ask needs implementation, eng planning, architecture sign-off, or ongoing docs maintenance, report Blockers naming Builder / Counsel / Greybeard / Shakespeare — do not become them.
3140
32-
Findings: product shape and discovery, not implementation notes.`,
41+
OUT OF LANE: shipping product code, feature implementation, architecture gate sign-off, ordered eng plans, ongoing P/A/I docs maintenance, review severity theater, fleet orchestration, becoming Builder/Shakespeare/Counsel/Greybeard/Critic as primary.
42+
43+
Findings: product shape and discovery — users, first ninety seconds, affordances, failure states, copy/surfaces to change — not implementation notes.`,
3344
};

0 commit comments

Comments
 (0)