Skip to content

Commit 57d2fb3

Browse files
Overhaul the implement skill (#658)
* Overhaul implement skill Rewrite the per-commit spawn recipe for Skywalker clarity: named directors on current main (build/greybeard/intern/tester/critique), drop the false hard-cap-4 claim, and stop restating path-tool contracts. Pin the hygiene in catalog coverage. Closes CL-7023 * Replace implement re-fix ceiling with judgment close-the-loop
1 parent 72658d7 commit 57d2fb3

2 files changed

Lines changed: 36 additions & 30 deletions

File tree

plugins/corbits-skills/skills/implement/SKILL.md

Lines changed: 20 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,19 @@
11
---
22
name: implement
3-
description: Disciplined per-commit workflowSkywalker spawns greybeard, build, intern/tester, critique.
3+
description: Disciplined per-commit workflow. Skywalker spawn recipe — greybeard, build, intern/tester, critique.
44
---
55

66
# Implement
77

8-
You are Skywalker. This skill is a per-commit spawn recipe for substantial landings.
8+
You are Skywalker. This skill is a slash command (`/implement`) and a spawn recipe for substantial, commit-sized landings. DIY tiny / single-file / one-route / clear bounded product edits yourself — do not load this loop for that work.
99

10-
DIY is the exception: tiny / single-file / one-route / clear bounded product edits → use write_file/edit_file/delete_file on this session. Do not load this loop for that work.
10+
When this recipe runs: spawn directors, wait for reports, decide the next spawn from those reports. The loop is sequential by design (one unit at a time). Do not invent a worker-count or fan-out ceiling. Track units with `manage_tasks`.
1111

12-
Spawn remains the default for substantial, multi-file, parallel, or specialist work (hard cap 4 workers). When this recipe runs, spawn workers. Wait for reports. Decide the next spawn from those reports.
12+
Closed directors used here: `greybeard`, `build`, `intern`, `tester`, `critique`. Never a catch-all worker.
1313

1414
## Prerequisites
1515

16-
Load `style` and `philosophy` via `use_skill` on the primary **before spawning**. Follow those conventions in every brief you hand to workers.
16+
Load `style` and `philosophy` via `use_skill` on the primary **before spawning**. Copy those conventions into every worker brief (workers do not mount `use_skill`).
1717

1818
## Tracking
1919

@@ -22,7 +22,7 @@ Track commit-sized units with `manage_tasks`. One item per unit that will become
2222
- Before starting: create an item for each unit from the caller's instructions.
2323
- When a unit begins: mark it in progress.
2424
- When critique is clean and the build gate passed: mark it done.
25-
- If new work surfaces (greybeard suggests a prep refactor, critique reveals an edge case that warrants its own commit), append a new `manage_tasks` item and run it through the full loop.
25+
- New work that surfaces (prep refactor, edge case warranting its own commit)append a `manage_tasks` item and run the full loop.
2626

2727
## Per-commit spawn loop
2828

@@ -32,29 +32,18 @@ For each unit, run these steps in order. Do not skip. When this loop is running,
3232

3333
`task(agent="greybeard")` on the approach before any code is written.
3434

35-
Send:
36-
37-
- What will change and why
38-
- Files expected
39-
- Design decisions and trade-offs
40-
- Uncertainties
35+
Send: what will change and why, files expected, design decisions and trade-offs, uncertainties.
4136

4237
Adjust the plan from the report, then spawn build. Greybeard is for approach, not execution.
4338

44-
### 2. Implement
45-
46-
`task(agent="build")` with a typed brief:
47-
48-
- `intent`
49-
- `success_criteria`
50-
- `do_not`
51-
- `report_focus`
39+
### 2. Implement — build
5240

53-
**Bug fixes:** tell build to start from a failing test — write the repro, confirm it fails, then fix, then confirm it passes. If the test does not fail first, the bug is not understood.
41+
`task(agent="build")` with a typed brief: `intent`, `success_criteria`, `do_not`, `report_focus`.
5442

55-
**Features:** tests ship with the change. The test asserts the new behavior, not merely that the process did not crash.
43+
- **Bug fixes:** start from a failing test — write the repro, confirm it fails, fix, confirm it passes. If the test does not fail first, the bug is not understood.
44+
- **Features:** tests ship with the change. Assert the new behavior, not merely that the process did not crash.
5645

57-
Keep scope to this unit. Additional work becomes a later `manage_tasks` item, not a silent expansion of the current brief.
46+
Keep scope to this unit. Additional work becomes a later `manage_tasks` item.
5847

5948
### 3. Build gate — intern or tester
6049

@@ -63,23 +52,24 @@ Keep scope to this unit. Additional work becomes a later `manage_tasks` item, no
6352
- `intern` — mechanical full pipeline
6453
- `tester` — suite / repro
6554

66-
Do not move forward with a broken build. If failures come from this unit, re-dispatch build. If they are pre-existing and unrelated, report Blockers and stop. Do not substitute a partial compile for the full gate.
55+
Do not move forward with a broken build. Failures from this unitre-dispatch build. Pre-existing unrelated failures → Blockers and stop. Do not substitute a partial compile for the full gate.
6756

6857
### 4. Critique
6958

70-
`task(agent="critique")` on the diff. Include the intent agreed with greybeard so critique evaluates plan vs execution, not only surface quality. Limit findings to this unit; pre-existing issues in touched files are out of scope unless they block the gate.
59+
`task(agent="critique")` on the diff. Include the intent agreed with greybeard so critique evaluates plan vs execution. Limit findings to this unit; pre-existing issues in touched files are out of scope unless they block the gate.
7160

72-
If critique is **blocking**, re-dispatch build once or twice with those findings in `success_criteria` / `do_not`, then re-run the build gate and critique. After two re-fix rounds, report Blockers — do not loop forever.
61+
Blocking findings → re-dispatch build with those findings in `success_criteria` / `do_not`, then re-run the gate and critique. Close the loop; if still blocked, report Blockers — do not loop forever.
7362

7463
When critique is clean (or remaining findings are acknowledged judgment calls), mark the unit done and start the next.
7564

76-
## Hard rules
65+
## Non-negotiables
7766

78-
- Tiny / single-file / one-route / clear bounded edits: DIY with write_file/edit_file/delete_file. This recipe is for substantial units — when running it, spawn, do not DIY the coding.
79-
- Spawn with `task(agent="greybeard")`, `task(agent="build")`, `task(agent="intern")` or `task(agent="tester")`, and `task(agent="critique")`.
67+
- Tiny / single-file / one-route / clear bounded edits: DIY. This recipe is for substantial units — when running it, spawn build; do not DIY the coding.
68+
- Spawn `greybeard``build``intern`|`tester``critique` via `task(agent=)`.
8069
- Track only with `manage_tasks`.
81-
- Do not shortcut the loop. Skipping greybeard because this is simple or skipping critique because the build passed defeats the recipe.
70+
- Do not shortcut the loop. Skipping greybeard "because this is simple" or critique "because the build passed" defeats the recipe.
8271
- Build must pass before treating a unit as done.
72+
- No invented worker-count or fan-out ceiling.
8373

8474
## Report
8575

tests/unit/corbits-skills-catalog.test.ts

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,22 @@ test("spawn-recipe skills contain task(agent=", async () => {
106106
}
107107
});
108108

109+
test("implement skill is a sequential Skywalker spawn recipe without a false 4-cap", async () => {
110+
const skill = await Bun.file(join(pluginRoot, "skills/implement/SKILL.md")).text();
111+
expect(skill).toContain("You are Skywalker");
112+
expect(skill).toContain('task(agent="greybeard")');
113+
expect(skill).toContain('task(agent="build")');
114+
expect(skill).toContain('task(agent="critique")');
115+
expect(skill).toContain("Do not invent a worker-count or fan-out ceiling");
116+
expect(skill).toContain("Close the loop");
117+
expect(skill).not.toContain("once or twice");
118+
expect(skill).not.toContain("After two re-fix rounds");
119+
expect(skill).not.toContain("hard cap 4");
120+
expect(skill).not.toContain("4 workers");
121+
expect(skill).not.toContain("max-parallel");
122+
expect(skill).not.toContain("INTERN_TOOLS");
123+
});
124+
109125
test("style skill is guidance, not ceremony or tool-contract restatement", async () => {
110126
const skill = await Bun.file(join(pluginRoot, "skills/style/SKILL.md")).text();
111127
expect(skill).toContain(USER_INVOCABLE_FALSE);

0 commit comments

Comments
 (0)