Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 5 additions & 2 deletions plugins/corbits-skills/skills/implement/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,9 @@ The order of operations depends on whether you're fixing a bug or building a fea

Keep the test focused on the behavior introduced by this commit. Don't test unrelated functionality. The test is part of the deliverable, not an afterthought.

Keep the scope tight to what was discussed. If you discover additional work is needed, finish the current commit's scope first and note the additional work for a future commit.
The test lands in the same unit of work as the implementation (Step 4) — same commit when committing — one logical unit (source of truth: style skill, AGENTS.md). When the caller passes testsmith-designed cases, land them as the implementation tests; any case left unlanded goes in the report with why so the caller can route a tester run.

Keep the scope tight to what was discussed. If you discover additional work is needed, finish the current commit's scope first and note the additional work for a future commit. When the landing alters documented behavior beyond the discussed doc scope, flag it for the caller so a shakespeare docs pass can follow.

### Step 3: Build Gate

Expand All @@ -105,12 +107,13 @@ Run `make` (or the project's equivalent full pipeline: format, lint, build, test
- If the build fails due to pre-existing issues unrelated to your changes, report the failure to the caller and let them decide how to proceed
- Do not move forward with a broken build
- Do not substitute partial builds (e.g., running only the compiler) for the full pipeline
- Record the exact verification commands and their exit statuses: the report maps each success criterion to pass, fail, or blocked with command evidence

### Step 4: Commit

Update `activeForm` to "Committing: {subject}".

Create the commit. Follow the commit message conventions from the `style` skill. Include the test in the same commit as the implementation — they are one logical unit of work.
Create the commit. Follow the commit message conventions from the `style` skill. Include the test in the same unit of work as the implementation — same commit when committing — one logical unit — and update the docs when the commit changes documented behavior. Worker-chain branch/PR convention: branch name carries the issue id, the PR body ends with `Fixes CL-…` and carries no AI-attribution lines (CONTRIBUTING: title stays a plain-English sentence, body is Summary/Verification).

### Step 5: Critique Loop

Expand Down
24 changes: 24 additions & 0 deletions src/agent/directors/builder/package.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -167,6 +167,30 @@ describe("builderPackage", () => {
expect(prompt).toMatch(/Summary \/ Findings \/ Blockers \/ Paths/);
});

test("systemPrompt wires same-unit tests, docs upkeep, and report mapping", () => {
const p = builderPackage.systemPrompt;
expect(p).toMatch(/same commit/);
expect(p).toMatch(/same commit when committing/);
expect(p).toMatch(/alters documented behavior/i);
expect(p).toMatch(/update the docs/i);
expect(p).toMatch(
/map each success_criteria item to pass, fail, or blocked/,
);
expect(p).toMatch(
/bare .*pass.*without command evidence.*incomplete report/is,
);
});

test("systemPrompt wires docs routing, testsmith consumer, and branch/PR shape", () => {
const p = builderPackage.systemPrompt;
expect(p).toMatch(/testsmith-designed cases/);
expect(p).toMatch(/route a tester run/);
expect(p).toMatch(/shakespeare docs pass/);
expect(p).toMatch(/branch name carries the issue id/i);
expect(p).toMatch(/Fixes CL-/);
expect(p).toMatch(/no AI-attribution lines/);
});

test("systemPrompt preserves public API sync/async under Guidelines", () => {
const prompt = builderPackage.systemPrompt;
expect(prompt).toMatch(/Public API shapes/i);
Expand Down
4 changes: 3 additions & 1 deletion src/agent/directors/builder/package.ts
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,8 @@ The order of operations depends on whether you're fixing a bug or building a fea

Keep the test focused on the behavior introduced by this unit of work. Don't test unrelated functionality. The test is part of the deliverable, not an afterthought.

Land the test in the same unit of work as the implementation — same commit when committing — one logical unit. When the change alters documented behavior, update the docs that describe it in the same unit of work (source of truth: style skill, AGENTS.md). When the brief carries testsmith-designed cases, land them as the implementation tests; any case left unlanded goes under Blockers with why so the parent can route a tester run. When the landing alters documented behavior outside the brief's doc scope, flag it under Blockers so the parent can route a shakespeare docs pass.

Keep the scope tight to the brief. If you discover additional work is needed, finish the current brief's scope first and note the additional work under Blockers / Findings for a future unit.

## Build Gate
Expand All @@ -79,7 +81,7 @@ For implementation work, run the repository-defined typecheck command and releva

**Don't shortcut verify.** The value is in the discipline. Skipping the build gate "because this change is simple" defeats the purpose.

**Keep units focused.** Deliver a working tree that satisfies the brief and report. Builder does NOT commit unless the brief's success_criteria explicitly ask for a commit — the parent / Skywalker usually owns commits. Prefer: working tree + report envelope.
**Keep units focused.** Deliver a working tree that satisfies the brief and report. Builder does NOT commit unless the brief's success_criteria explicitly ask for a commit — the parent / Skywalker usually owns commits. Prefer: working tree + report envelope. Worker-chain branch/PR convention for the parent's handoff: branch name carries the issue id, the PR body ends with \`Fixes CL-…\` and carries no AI-attribution lines (CONTRIBUTING: title stays a plain-English sentence, body is Summary/Verification only).

**Discovered extra work** belongs under Blockers / Findings for a future unit — finish the current brief first.

Expand Down
Loading