agent-bober 0.2.3 → 0.4.1
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/bober-evaluator.md +15 -4
- package/agents/bober-generator.md +2 -1
- package/agents/bober-planner.md +4 -2
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +81 -5
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/index.js +2 -1
- package/dist/cli/index.js.map +1 -1
- package/package.json +1 -1
- package/scripts/check-prereqs.sh +138 -0
- package/scripts/common.sh +50 -0
- package/scripts/init-project.sh +42 -0
- package/scripts/run-eval.sh +20 -7
- package/skills/bober.anchor/SKILL.md +9 -0
- package/skills/bober.brownfield/SKILL.md +9 -0
- package/skills/bober.eval/SKILL.md +13 -0
- package/skills/bober.plan/SKILL.md +13 -0
- package/skills/bober.principles/SKILL.md +175 -0
- package/skills/bober.react/SKILL.md +9 -0
- package/skills/bober.solidity/SKILL.md +9 -0
- package/skills/bober.sprint/SKILL.md +13 -0
|
@@ -39,7 +39,8 @@ Read these documents in order:
|
|
|
39
39
|
2. **SprintContract** at `.bober/contracts/<contractId>.json` -- the source of truth for what should have been built
|
|
40
40
|
3. **PlanSpec** at `.bober/specs/<specId>.json` -- for broader context on the feature
|
|
41
41
|
4. **`bober.config.json`** -- for configured commands and evaluator strategies
|
|
42
|
-
5.
|
|
42
|
+
5. **`.bober/principles.md`** if it exists -- the project's non-negotiable principles. During evaluation, you must check that the Generator's output adheres to these principles. If principles define quality standards, verify the code meets them. If principles specify patterns to follow or avoid, verify compliance. Principle violations are evaluation failures.
|
|
43
|
+
6. **Generator's completion report** (from the handoff) -- what the generator claims it did
|
|
43
44
|
|
|
44
45
|
Build a checklist from the contract's `successCriteria` array. This is your evaluation framework. Every criterion gets tested independently.
|
|
45
46
|
|
|
@@ -125,7 +126,17 @@ Go through EVERY success criterion in the contract, one by one. For each:
|
|
|
125
126
|
- A criterion with `required: false` is recorded but does not block the sprint
|
|
126
127
|
- If a criterion's `verificationMethod` cannot be executed (e.g., Playwright not set up), mark it as `"skipped"` with a clear reason. If it was `required`, escalate this as a configuration issue.
|
|
127
128
|
|
|
128
|
-
### Step 4: Check
|
|
129
|
+
### Step 4: Check Principles Adherence
|
|
130
|
+
|
|
131
|
+
If `.bober/principles.md` exists, verify the Generator's output adheres to the project principles:
|
|
132
|
+
|
|
133
|
+
1. **Quality Standards:** If principles specify quality bars (performance, accessibility, security, etc.), verify the code meets them. For example, if "accessibility" is a principle, check for ARIA attributes, semantic HTML, and keyboard navigation.
|
|
134
|
+
2. **Technical Principles:** If principles specify patterns to follow or avoid, spot-check the new code for compliance. For example, if "no default exports" is a principle, verify all new files use named exports.
|
|
135
|
+
3. **Design Principles:** If principles specify visual/UX standards, verify the UI code reflects them.
|
|
136
|
+
|
|
137
|
+
Principle violations should be reported in the `generatorFeedback` array with `category: "quality"` and a reference to the specific principle that was violated.
|
|
138
|
+
|
|
139
|
+
### Step 5: Check for Regressions
|
|
129
140
|
|
|
130
141
|
Beyond the contract's criteria, check for regressions:
|
|
131
142
|
|
|
@@ -133,7 +144,7 @@ Beyond the contract's criteria, check for regressions:
|
|
|
133
144
|
2. **Does the build still work?** Even if the contract is about backend code, verify the full build.
|
|
134
145
|
3. **Were any existing files modified in unexpected ways?** Use `git diff` to review all changes. Flag any changes to files NOT mentioned in the contract's `estimatedFiles`.
|
|
135
146
|
|
|
136
|
-
### Step
|
|
147
|
+
### Step 6: Produce Structured EvalResult
|
|
137
148
|
|
|
138
149
|
Generate the following JSON structure:
|
|
139
150
|
|
|
@@ -195,7 +206,7 @@ Generate the following JSON structure:
|
|
|
195
206
|
}
|
|
196
207
|
```
|
|
197
208
|
|
|
198
|
-
### Step
|
|
209
|
+
### Step 7: Save and Report
|
|
199
210
|
|
|
200
211
|
1. **Save the EvalResult** to `.bober/eval-results/<evalId>.json`
|
|
201
212
|
- IMPORTANT: You do not have Write tools. Output the EvalResult JSON and the orchestrator will save it.
|
|
@@ -41,7 +41,8 @@ You will receive a **ContextHandoff** document. Read it completely. It contains:
|
|
|
41
41
|
2. The SprintContract at `.bober/contracts/<contractId>.json`
|
|
42
42
|
3. The PlanSpec at `.bober/specs/<specId>.json` (for broader context)
|
|
43
43
|
4. `bober.config.json` for commands and configuration
|
|
44
|
-
5.
|
|
44
|
+
5. `.bober/principles.md` if it exists -- these are the project's non-negotiable principles. Every implementation decision must be consistent with them. If principles specify quality standards, patterns to follow, or patterns to avoid, you must adhere to them strictly.
|
|
45
|
+
6. Any files mentioned in `estimatedFiles` in the contract
|
|
45
46
|
|
|
46
47
|
If this is a **retry** (evaluator feedback is present), focus specifically on the failures. Read the feedback line by line. Understand what failed and why before making any changes.
|
|
47
48
|
|
package/agents/bober-planner.md
CHANGED
|
@@ -29,14 +29,16 @@ You are a product planning specialist, not a coder. You think in terms of user v
|
|
|
29
29
|
|
|
30
30
|
1. **Read `bober.config.json`** from the project root. This tells you the project mode (`greenfield` or `brownfield`), optional preset (e.g., `nextjs`, `react-vite`, `solidity`, `anchor`, `api-node`, `python-api`), configured evaluator strategies, sprint size preferences, and command configuration. If this file does not exist, STOP and tell the user to run the `bober.plan` skill first to initialize the project.
|
|
31
31
|
|
|
32
|
-
2. **
|
|
32
|
+
2. **Read `.bober/principles.md`** if it exists. These are the project's non-negotiable principles that must guide all planning decisions. Every spec, sprint contract, and success criterion must be consistent with these principles. If principles define quality standards, ensure they are reflected in the acceptance criteria. If principles define technical patterns, ensure the generator notes reference them.
|
|
33
|
+
|
|
34
|
+
3. **Analyze existing codebase** (if brownfield or existing project):
|
|
33
35
|
- Read `CLAUDE.md`, `README.md`, and the project manifest (`package.json`, `Cargo.toml`, `Anchor.toml`, `hardhat.config.ts`, `foundry.toml`, `pyproject.toml`, etc.) if they exist
|
|
34
36
|
- Use Glob to survey the file structure with patterns appropriate to the stack (e.g., `src/**/*`, `contracts/**/*.sol`, `programs/**/*.rs`, `app/**/*`, `pages/**/*`)
|
|
35
37
|
- Use Grep to find key patterns: route definitions, database schemas, API endpoints, component structure, smart contract interfaces, program instructions, etc.
|
|
36
38
|
- Read any files listed in `planner.contextFiles` from the config
|
|
37
39
|
- Build a mental model of: tech stack, architecture pattern (MVC, component-based, modular contracts, program accounts, etc.), existing test coverage, deployment setup
|
|
38
40
|
|
|
39
|
-
|
|
41
|
+
4. **Read existing specs** in `.bober/specs/` to understand what has already been planned. Do not duplicate or conflict with existing plans.
|
|
40
42
|
|
|
41
43
|
### Phase 2: Clarifying Questions
|
|
42
44
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"AAyPA,MAAM,WAAW,kBAAkB;IACjC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAsB,cAAc,CAClC,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,IAAI,CAAC,CAyEf"}
|
|
@@ -1,12 +1,13 @@
|
|
|
1
|
-
import { writeFile, readFile, appendFile } from "node:fs/promises";
|
|
2
|
-
import { join, basename } from "node:path";
|
|
1
|
+
import { writeFile, readFile, appendFile, readdir } from "node:fs/promises";
|
|
2
|
+
import { join, basename, dirname } from "node:path";
|
|
3
|
+
import { fileURLToPath } from "node:url";
|
|
3
4
|
import prompts from "prompts";
|
|
4
5
|
import chalk from "chalk";
|
|
5
6
|
import { createDefaultConfig } from "../../config/schema.js";
|
|
6
7
|
import { configExists } from "../../config/loader.js";
|
|
7
8
|
import { getDefaults, getPresetNames } from "../../config/defaults.js";
|
|
8
9
|
import { ensureBoberDir } from "../../state/index.js";
|
|
9
|
-
import { fileExists } from "../../utils/fs.js";
|
|
10
|
+
import { fileExists, ensureDir } from "../../utils/fs.js";
|
|
10
11
|
import { logger } from "../../utils/logger.js";
|
|
11
12
|
const PRESET_INFO = [
|
|
12
13
|
{ name: "nextjs", label: "nextjs", description: "Next.js full-stack app" },
|
|
@@ -516,6 +517,76 @@ function buildStrategyChoices(suggestedStrats) {
|
|
|
516
517
|
},
|
|
517
518
|
];
|
|
518
519
|
}
|
|
520
|
+
// ── Install Claude Code slash commands ───────────────────────────
|
|
521
|
+
/**
|
|
522
|
+
* Copy SKILL.md files from the package's skills/ directory into
|
|
523
|
+
* the project's .claude/commands/ directory so they appear as
|
|
524
|
+
* /bober-plan, /bober-sprint, etc. in Claude Code.
|
|
525
|
+
*
|
|
526
|
+
* Also copies agent definitions into .claude/agents/.
|
|
527
|
+
*/
|
|
528
|
+
async function installClaudeCommands(projectRoot) {
|
|
529
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
530
|
+
// From dist/cli/commands/init.js → go up to package root
|
|
531
|
+
const packageRoot = join(dirname(__filename), "..", "..", "..");
|
|
532
|
+
const commandsDir = join(projectRoot, ".claude", "commands");
|
|
533
|
+
await ensureDir(commandsDir);
|
|
534
|
+
// Map skill directories to command file names
|
|
535
|
+
const skillMap = {
|
|
536
|
+
"bober.plan": "bober-plan.md",
|
|
537
|
+
"bober.sprint": "bober-sprint.md",
|
|
538
|
+
"bober.eval": "bober-eval.md",
|
|
539
|
+
"bober.run": "bober-run.md",
|
|
540
|
+
"bober.react": "bober-react.md",
|
|
541
|
+
"bober.brownfield": "bober-brownfield.md",
|
|
542
|
+
"bober.solidity": "bober-solidity.md",
|
|
543
|
+
"bober.anchor": "bober-anchor.md",
|
|
544
|
+
"bober.principles": "bober-principles.md",
|
|
545
|
+
};
|
|
546
|
+
const skillsRoot = join(packageRoot, "skills");
|
|
547
|
+
let installed = 0;
|
|
548
|
+
for (const [skillDir, cmdFile] of Object.entries(skillMap)) {
|
|
549
|
+
const srcSkill = join(skillsRoot, skillDir, "SKILL.md");
|
|
550
|
+
const destCmd = join(commandsDir, cmdFile);
|
|
551
|
+
if (await fileExists(srcSkill)) {
|
|
552
|
+
const content = await readFile(srcSkill, "utf-8");
|
|
553
|
+
// Also append reference docs inline if they exist
|
|
554
|
+
const refsDir = join(skillsRoot, skillDir, "references");
|
|
555
|
+
let refs = "";
|
|
556
|
+
try {
|
|
557
|
+
const refFiles = await readdir(refsDir);
|
|
558
|
+
for (const refFile of refFiles) {
|
|
559
|
+
if (refFile.endsWith(".md")) {
|
|
560
|
+
const refContent = await readFile(join(refsDir, refFile), "utf-8");
|
|
561
|
+
refs += `\n\n---\n\n<!-- Reference: ${refFile} -->\n\n${refContent}`;
|
|
562
|
+
}
|
|
563
|
+
}
|
|
564
|
+
}
|
|
565
|
+
catch {
|
|
566
|
+
// No references directory — that's fine
|
|
567
|
+
}
|
|
568
|
+
await writeFile(destCmd, content + refs, "utf-8");
|
|
569
|
+
installed++;
|
|
570
|
+
}
|
|
571
|
+
}
|
|
572
|
+
// Copy agent definitions
|
|
573
|
+
const agentsDir = join(projectRoot, ".claude", "agents");
|
|
574
|
+
await ensureDir(agentsDir);
|
|
575
|
+
const agentFiles = ["bober-planner.md", "bober-generator.md", "bober-evaluator.md"];
|
|
576
|
+
const agentsSrc = join(packageRoot, "agents");
|
|
577
|
+
for (const agentFile of agentFiles) {
|
|
578
|
+
const src = join(agentsSrc, agentFile);
|
|
579
|
+
const dest = join(agentsDir, agentFile);
|
|
580
|
+
if (await fileExists(src)) {
|
|
581
|
+
const content = await readFile(src, "utf-8");
|
|
582
|
+
await writeFile(dest, content, "utf-8");
|
|
583
|
+
}
|
|
584
|
+
}
|
|
585
|
+
if (installed > 0) {
|
|
586
|
+
logger.success(`Installed ${installed} slash commands in .claude/commands/`);
|
|
587
|
+
logger.success(`Installed agent definitions in .claude/agents/`);
|
|
588
|
+
}
|
|
589
|
+
}
|
|
519
590
|
async function writeConfig(projectRoot, config, mode, strategies, preset) {
|
|
520
591
|
// Write config
|
|
521
592
|
const configPath = join(projectRoot, "bober.config.json");
|
|
@@ -537,6 +608,8 @@ async function writeConfig(projectRoot, config, mode, strategies, preset) {
|
|
|
537
608
|
await writeFile(gitignorePath, "# Bober agent state\n.bober/\n", "utf-8");
|
|
538
609
|
logger.success("Created .gitignore with .bober/");
|
|
539
610
|
}
|
|
611
|
+
// Install Claude Code slash commands into .claude/commands/
|
|
612
|
+
await installClaudeCommands(projectRoot);
|
|
540
613
|
// Print summary
|
|
541
614
|
console.log();
|
|
542
615
|
console.log(chalk.bold("Setup complete!"));
|
|
@@ -551,8 +624,11 @@ async function writeConfig(projectRoot, config, mode, strategies, preset) {
|
|
|
551
624
|
console.log(` Strategies: ${chalk.cyan(strategies.map((s) => s.type).join(", "))}`);
|
|
552
625
|
console.log();
|
|
553
626
|
console.log("Next steps:");
|
|
554
|
-
console.log(` ${chalk.gray("$")} ${chalk.green("
|
|
555
|
-
console.log(` ${chalk.
|
|
627
|
+
console.log(` ${chalk.gray("$")} ${chalk.green("claude")} ${chalk.gray("# Open Claude Code in this dir")}`);
|
|
628
|
+
console.log(` ${chalk.green("/bober-plan")} ${chalk.gray("# Describe your feature")}`);
|
|
629
|
+
console.log(` ${chalk.green("/bober-run")} ${chalk.gray("# Full autonomous pipeline")}`);
|
|
630
|
+
console.log();
|
|
631
|
+
console.log(` ${chalk.gray("Or via CLI:")} ${chalk.green("npx agent-bober plan")} ${chalk.gray('"your feature"')}`);
|
|
556
632
|
console.log();
|
|
557
633
|
}
|
|
558
634
|
//# sourceMappingURL=init.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/index.js
CHANGED
|
@@ -59,7 +59,8 @@ async function main() {
|
|
|
59
59
|
if (opts.verbose)
|
|
60
60
|
logger.verbose = true;
|
|
61
61
|
const preset = cmdOpts?.preset ?? presetArg;
|
|
62
|
-
|
|
62
|
+
// Init always uses cwd — the user is in the directory they want to init
|
|
63
|
+
const projectRoot = process.cwd();
|
|
63
64
|
await runInitCommand(projectRoot, { preset });
|
|
64
65
|
});
|
|
65
66
|
// ── plan ────────────────────────────────────────────────────────
|
package/dist/cli/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAElD,sEAAsE;AAEtE,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAE1D,KAAK,UAAU,WAAW;IACxB,IAAI,CAAC;QACH,uEAAuE;QACvE,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;QAC5D,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC7C,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAyB,CAAC;QACpD,OAAO,GAAG,CAAC,OAAO,IAAI,OAAO,CAAC;IAChC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,OAAO,CAAC;IACjB,CAAC;AACH,CAAC;AAED,sEAAsE;AAEtE,KAAK,UAAU,kBAAkB,CAAC,UAAmB;IACnD,IAAI,UAAU,EAAE,CAAC;QACf,yDAAyD;QACzD,OAAO,OAAO,CAAC,UAAU,CAAC,CAAC;IAC7B,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,eAAe,EAAE,CAAC;IACrC,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,mBAAmB;QACnB,OAAO,OAAO,CAAC,GAAG,EAAE,CAAC;IACvB,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,sEAAsE;AAEtE,KAAK,UAAU,IAAI;IACjB,MAAM,OAAO,GAAG,MAAM,WAAW,EAAE,CAAC;IAEpC,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;IAE9B,OAAO;SACJ,IAAI,CAAC,aAAa,CAAC;SACnB,WAAW,CACV,4FAA4F,CAC7F;SACA,OAAO,CAAC,OAAO,CAAC;SAChB,MAAM,CAAC,eAAe,EAAE,6BAA6B,CAAC;SACtD,MAAM,CAAC,qBAAqB,EAAE,2BAA2B,CAAC;SAC1D,MAAM,CACL,qBAAqB,EACrB,6CAA6C,CAC9C,CAAC;IAEJ,mEAAmE;IACnE,OAAO;SACJ,OAAO,CAAC,eAAe,CAAC;SACxB,WAAW,CAAC,yCAAyC,CAAC;SACtD,MAAM,CAAC,qBAAqB,EAAE,6BAA6B,CAAC;SAC5D,MAAM,CAAC,KAAK,EAAE,SAAkB,EAAE,OAA6B,EAAE,EAAE;QAClE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAA0C,CAAC;QACpE,IAAI,IAAI,CAAC,OAAO;YAAE,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;QAExC,MAAM,MAAM,GAAG,OAAO,EAAE,MAAM,IAAI,SAAS,CAAC;QAC5C,MAAM,WAAW,GAAG,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "agent-bober",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.1",
|
|
4
4
|
"description": "Generator-Evaluator multi-agent harness for building applications autonomously with Claude. Implements planner, sprint, and evaluator patterns.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# ──────────────────────────────────────────────────────────────────────
|
|
3
|
+
# check-prereqs.sh — Validate prerequisites for a bober command
|
|
4
|
+
#
|
|
5
|
+
# Usage:
|
|
6
|
+
# check-prereqs.sh <command> [project-root]
|
|
7
|
+
#
|
|
8
|
+
# Output: JSON with status and missing items
|
|
9
|
+
# ──────────────────────────────────────────────────────────────────────
|
|
10
|
+
|
|
11
|
+
set -euo pipefail
|
|
12
|
+
|
|
13
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
14
|
+
|
|
15
|
+
# Source shared utilities
|
|
16
|
+
# shellcheck source=common.sh
|
|
17
|
+
source "$SCRIPT_DIR/common.sh"
|
|
18
|
+
|
|
19
|
+
COMMAND="${1:-}"
|
|
20
|
+
PROJECT_ROOT="${2:-.}"
|
|
21
|
+
PROJECT_ROOT="$(cd "$PROJECT_ROOT" && pwd)"
|
|
22
|
+
|
|
23
|
+
if [[ -z "$COMMAND" ]]; then
|
|
24
|
+
echo "Usage: check-prereqs.sh <command> [project-root]"
|
|
25
|
+
echo ""
|
|
26
|
+
echo "Commands: plan, sprint, eval, run, principles"
|
|
27
|
+
exit 1
|
|
28
|
+
fi
|
|
29
|
+
|
|
30
|
+
# ── Collect checks ─────────────────────────────────────────────────
|
|
31
|
+
|
|
32
|
+
CHECKS=()
|
|
33
|
+
READY=true
|
|
34
|
+
|
|
35
|
+
# Helper to add a check result and track readiness
|
|
36
|
+
add_check() {
|
|
37
|
+
local json="$1"
|
|
38
|
+
CHECKS+=("$json")
|
|
39
|
+
if echo "$json" | grep -q '"status":"missing"' || echo "$json" | grep -q '"status":"empty"'; then
|
|
40
|
+
READY=false
|
|
41
|
+
fi
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
# ── Common check: bober.config.json ───────────────────────────────
|
|
45
|
+
|
|
46
|
+
config_check=$(check_file "config" "$PROJECT_ROOT/bober.config.json")
|
|
47
|
+
add_check "$config_check"
|
|
48
|
+
|
|
49
|
+
# ── Common check: .bober/ directory ───────────────────────────────
|
|
50
|
+
|
|
51
|
+
if [ -d "$PROJECT_ROOT/.bober" ]; then
|
|
52
|
+
add_check "{\"name\":\"bober_dir\",\"status\":\"ok\",\"path\":\".bober/\"}"
|
|
53
|
+
else
|
|
54
|
+
add_check "{\"name\":\"bober_dir\",\"status\":\"missing\",\"path\":\".bober/\",\"message\":\"No .bober/ directory. Run /bober-plan first.\"}"
|
|
55
|
+
fi
|
|
56
|
+
|
|
57
|
+
# ── Command-specific checks ───────────────────────────────────────
|
|
58
|
+
|
|
59
|
+
case "$COMMAND" in
|
|
60
|
+
plan)
|
|
61
|
+
# plan only needs bober.config.json (already checked above)
|
|
62
|
+
;;
|
|
63
|
+
|
|
64
|
+
sprint)
|
|
65
|
+
# Needs specs and contracts
|
|
66
|
+
if [ -d "$PROJECT_ROOT/.bober/specs" ]; then
|
|
67
|
+
spec_check=$(check_dir_has_files "specs" "$PROJECT_ROOT/.bober/specs" "*.json")
|
|
68
|
+
add_check "$spec_check"
|
|
69
|
+
else
|
|
70
|
+
add_check "{\"name\":\"specs\",\"status\":\"missing\",\"message\":\"No .bober/specs/ directory. Run /bober-plan first.\"}"
|
|
71
|
+
fi
|
|
72
|
+
|
|
73
|
+
if [ -d "$PROJECT_ROOT/.bober/contracts" ]; then
|
|
74
|
+
contract_check=$(check_dir_has_files "contracts" "$PROJECT_ROOT/.bober/contracts" "*.json")
|
|
75
|
+
add_check "$contract_check"
|
|
76
|
+
else
|
|
77
|
+
add_check "{\"name\":\"contracts\",\"status\":\"missing\",\"message\":\"No .bober/contracts/ directory. Run /bober-plan first.\"}"
|
|
78
|
+
fi
|
|
79
|
+
;;
|
|
80
|
+
|
|
81
|
+
eval)
|
|
82
|
+
# Needs contracts and code changes
|
|
83
|
+
if [ -d "$PROJECT_ROOT/.bober/contracts" ]; then
|
|
84
|
+
contract_check=$(check_dir_has_files "contracts" "$PROJECT_ROOT/.bober/contracts" "*.json")
|
|
85
|
+
add_check "$contract_check"
|
|
86
|
+
else
|
|
87
|
+
add_check "{\"name\":\"contracts\",\"status\":\"missing\",\"message\":\"No .bober/contracts/ directory. Run /bober-plan first.\"}"
|
|
88
|
+
fi
|
|
89
|
+
|
|
90
|
+
# Check for code changes (git diff)
|
|
91
|
+
if command -v git &>/dev/null && [ -d "$PROJECT_ROOT/.git" ]; then
|
|
92
|
+
changes=$(cd "$PROJECT_ROOT" && git diff --stat 2>/dev/null | wc -l | tr -d ' ')
|
|
93
|
+
if [ "$changes" -gt 0 ]; then
|
|
94
|
+
add_check "{\"name\":\"code_changes\",\"status\":\"ok\",\"count\":$changes}"
|
|
95
|
+
else
|
|
96
|
+
add_check "{\"name\":\"code_changes\",\"status\":\"empty\",\"count\":0,\"message\":\"No code changes detected. Run /bober-sprint first.\"}"
|
|
97
|
+
fi
|
|
98
|
+
fi
|
|
99
|
+
;;
|
|
100
|
+
|
|
101
|
+
run)
|
|
102
|
+
# run only needs bober.config.json (creates everything else)
|
|
103
|
+
;;
|
|
104
|
+
|
|
105
|
+
principles)
|
|
106
|
+
# principles only needs bober.config.json (already checked above)
|
|
107
|
+
;;
|
|
108
|
+
|
|
109
|
+
*)
|
|
110
|
+
json_output "error" "Unknown command: $COMMAND. Valid commands: plan, sprint, eval, run, principles"
|
|
111
|
+
exit 1
|
|
112
|
+
;;
|
|
113
|
+
esac
|
|
114
|
+
|
|
115
|
+
# ── Build output JSON ──────────────────────────────────────────────
|
|
116
|
+
|
|
117
|
+
CHECKS_JSON="["
|
|
118
|
+
for i in "${!CHECKS[@]}"; do
|
|
119
|
+
[[ $i -gt 0 ]] && CHECKS_JSON+=","
|
|
120
|
+
CHECKS_JSON+="${CHECKS[$i]}"
|
|
121
|
+
done
|
|
122
|
+
CHECKS_JSON+="]"
|
|
123
|
+
|
|
124
|
+
if [[ "$READY" == "true" ]]; then
|
|
125
|
+
MESSAGE="Ready to run"
|
|
126
|
+
else
|
|
127
|
+
MESSAGE="Missing prerequisites"
|
|
128
|
+
fi
|
|
129
|
+
|
|
130
|
+
cat <<EOF
|
|
131
|
+
{
|
|
132
|
+
"ready": $READY,
|
|
133
|
+
"command": "$COMMAND",
|
|
134
|
+
"projectRoot": "$PROJECT_ROOT",
|
|
135
|
+
"checks": $CHECKS_JSON,
|
|
136
|
+
"message": "$MESSAGE"
|
|
137
|
+
}
|
|
138
|
+
EOF
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# ──────────────────────────────────────────────────────────────────────
|
|
3
|
+
# common.sh — Shared utilities for bober scripts
|
|
4
|
+
# ──────────────────────────────────────────────────────────────────────
|
|
5
|
+
|
|
6
|
+
# Output JSON helper
|
|
7
|
+
json_output() {
|
|
8
|
+
local status="$1"
|
|
9
|
+
local message="$2"
|
|
10
|
+
echo "{\"status\":\"${status}\",\"message\":\"${message}\"}"
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
# Find project root (walk up looking for bober.config.json)
|
|
14
|
+
find_project_root() {
|
|
15
|
+
local dir="${1:-.}"
|
|
16
|
+
dir="$(cd "$dir" && pwd)"
|
|
17
|
+
while [ "$dir" != "/" ]; do
|
|
18
|
+
if [ -f "$dir/bober.config.json" ]; then
|
|
19
|
+
echo "$dir"
|
|
20
|
+
return 0
|
|
21
|
+
fi
|
|
22
|
+
dir="$(dirname "$dir")"
|
|
23
|
+
done
|
|
24
|
+
return 1
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
# Check if a file exists and report
|
|
28
|
+
check_file() {
|
|
29
|
+
local name="$1"
|
|
30
|
+
local path="$2"
|
|
31
|
+
if [ -f "$path" ]; then
|
|
32
|
+
echo "{\"name\":\"${name}\",\"status\":\"ok\",\"path\":\"${path}\"}"
|
|
33
|
+
else
|
|
34
|
+
echo "{\"name\":\"${name}\",\"status\":\"missing\",\"path\":\"${path}\"}"
|
|
35
|
+
fi
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
# Check if directory has files matching a pattern
|
|
39
|
+
check_dir_has_files() {
|
|
40
|
+
local name="$1"
|
|
41
|
+
local dir="$2"
|
|
42
|
+
local pattern="${3:-*}"
|
|
43
|
+
local count
|
|
44
|
+
count=$(find "$dir" -name "$pattern" -type f 2>/dev/null | wc -l | tr -d ' ')
|
|
45
|
+
if [ "$count" -gt 0 ]; then
|
|
46
|
+
echo "{\"name\":\"${name}\",\"status\":\"ok\",\"count\":${count}}"
|
|
47
|
+
else
|
|
48
|
+
echo "{\"name\":\"${name}\",\"status\":\"empty\",\"count\":0}"
|
|
49
|
+
fi
|
|
50
|
+
}
|
package/scripts/init-project.sh
CHANGED
|
@@ -204,3 +204,45 @@ fi
|
|
|
204
204
|
|
|
205
205
|
echo ""
|
|
206
206
|
echo "Run /bober:plan to start planning your first feature."
|
|
207
|
+
|
|
208
|
+
# ── Structured JSON summary ────────────────────────────────────────
|
|
209
|
+
|
|
210
|
+
CREATED_FILES=()
|
|
211
|
+
[[ -f "$PROJECT_DIR/.bober/progress.md" ]] && CREATED_FILES+=("\".bober/progress.md\"")
|
|
212
|
+
[[ -f "$PROJECT_DIR/.bober/history.jsonl" ]] && CREATED_FILES+=("\".bober/history.jsonl\"")
|
|
213
|
+
[[ -f "$PROJECT_DIR/bober.config.json" ]] && CREATED_FILES+=("\"bober.config.json\"")
|
|
214
|
+
[[ -f "$PROJECT_DIR/CLAUDE.md" ]] && CREATED_FILES+=("\"CLAUDE.md\"")
|
|
215
|
+
|
|
216
|
+
CREATED_JSON="["
|
|
217
|
+
for i in "${!CREATED_FILES[@]}"; do
|
|
218
|
+
[[ $i -gt 0 ]] && CREATED_JSON+=","
|
|
219
|
+
CREATED_JSON+="${CREATED_FILES[$i]}"
|
|
220
|
+
done
|
|
221
|
+
CREATED_JSON+="]"
|
|
222
|
+
|
|
223
|
+
CREATED_DIRS=()
|
|
224
|
+
[[ -d "$PROJECT_DIR/.bober/specs" ]] && CREATED_DIRS+=("\".bober/specs/\"")
|
|
225
|
+
[[ -d "$PROJECT_DIR/.bober/contracts" ]] && CREATED_DIRS+=("\".bober/contracts/\"")
|
|
226
|
+
[[ -d "$PROJECT_DIR/.bober/evaluations" ]] && CREATED_DIRS+=("\".bober/evaluations/\"")
|
|
227
|
+
[[ -d "$PROJECT_DIR/.bober/snapshots" ]] && CREATED_DIRS+=("\".bober/snapshots/\"")
|
|
228
|
+
|
|
229
|
+
DIRS_JSON="["
|
|
230
|
+
for i in "${!CREATED_DIRS[@]}"; do
|
|
231
|
+
[[ $i -gt 0 ]] && DIRS_JSON+=","
|
|
232
|
+
DIRS_JSON+="${CREATED_DIRS[$i]}"
|
|
233
|
+
done
|
|
234
|
+
DIRS_JSON+="]"
|
|
235
|
+
|
|
236
|
+
echo ""
|
|
237
|
+
cat <<INIT_JSON
|
|
238
|
+
{
|
|
239
|
+
"status": "ok",
|
|
240
|
+
"template": "$TEMPLATE",
|
|
241
|
+
"projectDir": "$PROJECT_DIR",
|
|
242
|
+
"projectName": "$(basename "$PROJECT_DIR")",
|
|
243
|
+
"timestamp": "$(date -u +%Y-%m-%dT%H:%M:%SZ)",
|
|
244
|
+
"createdFiles": $CREATED_JSON,
|
|
245
|
+
"createdDirs": $DIRS_JSON,
|
|
246
|
+
"message": "Project initialized successfully with template: $TEMPLATE"
|
|
247
|
+
}
|
|
248
|
+
INIT_JSON
|
package/scripts/run-eval.sh
CHANGED
|
@@ -6,11 +6,20 @@
|
|
|
6
6
|
# bash scripts/run-eval.sh [project-dir]
|
|
7
7
|
#
|
|
8
8
|
# Reads bober.config.json to determine which strategies to run,
|
|
9
|
-
# executes each in order, and outputs a
|
|
9
|
+
# executes each in order, and outputs a structured JSON result
|
|
10
|
+
# with per-strategy pass/fail status.
|
|
10
11
|
# ──────────────────────────────────────────────────────────────────────
|
|
11
12
|
|
|
12
13
|
set -euo pipefail
|
|
13
14
|
|
|
15
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
16
|
+
|
|
17
|
+
# Source shared utilities if available
|
|
18
|
+
if [[ -f "$SCRIPT_DIR/common.sh" ]]; then
|
|
19
|
+
# shellcheck source=common.sh
|
|
20
|
+
source "$SCRIPT_DIR/common.sh"
|
|
21
|
+
fi
|
|
22
|
+
|
|
14
23
|
PROJECT_DIR="${1:-.}"
|
|
15
24
|
PROJECT_DIR="$(cd "$PROJECT_DIR" && pwd)"
|
|
16
25
|
CONFIG_FILE="$PROJECT_DIR/bober.config.json"
|
|
@@ -160,16 +169,20 @@ for i in "${!RESULTS[@]}"; do
|
|
|
160
169
|
done
|
|
161
170
|
RESULTS_JSON+="]"
|
|
162
171
|
|
|
163
|
-
# Output combined result as JSON
|
|
172
|
+
# Output combined result as structured JSON
|
|
164
173
|
cat <<EOF
|
|
165
174
|
{
|
|
175
|
+
"status": "$( [[ "$OVERALL_PASS" == "true" ]] && echo "ok" || echo "error" )",
|
|
166
176
|
"overall": "$( [[ "$OVERALL_PASS" == "true" ]] && echo "pass" || echo "fail" )",
|
|
167
177
|
"timestamp": "$(date -u +%Y-%m-%dT%H:%M:%SZ)",
|
|
168
178
|
"projectDir": "$PROJECT_DIR",
|
|
169
|
-
"
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
179
|
+
"summary": {
|
|
180
|
+
"strategiesRun": $STRATEGY_COUNT,
|
|
181
|
+
"passed": $PASS_COUNT,
|
|
182
|
+
"failed": $FAIL_COUNT,
|
|
183
|
+
"skipped": $SKIP_COUNT
|
|
184
|
+
},
|
|
185
|
+
"results": $RESULTS_JSON,
|
|
186
|
+
"message": "$( [[ "$OVERALL_PASS" == "true" ]] && echo "All required strategies passed" || echo "One or more required strategies failed" )"
|
|
174
187
|
}
|
|
175
188
|
EOF
|
|
@@ -2,6 +2,10 @@
|
|
|
2
2
|
name: bober.anchor
|
|
3
3
|
description: "Solana program development workflow using Anchor. Plans program architecture, implements with proper account validation, and evaluates with build, test, and security checks. Use when building Solana programs, SPL tokens, or on-chain applications."
|
|
4
4
|
argument-hint: <program-description>
|
|
5
|
+
handoffs:
|
|
6
|
+
- label: "Plan Program"
|
|
7
|
+
command: /bober-plan
|
|
8
|
+
prompt: "Plan the Solana program feature"
|
|
5
9
|
---
|
|
6
10
|
|
|
7
11
|
# bober.anchor — Solana Program Workflow
|
|
@@ -355,6 +359,11 @@ After all sprints pass, run a final comprehensive check:
|
|
|
355
359
|
- Test with the client SDK
|
|
356
360
|
```
|
|
357
361
|
|
|
362
|
+
## Next Steps
|
|
363
|
+
|
|
364
|
+
After completing this phase, suggest the following next steps to the user:
|
|
365
|
+
- `/bober-plan` — Plan the Solana program feature
|
|
366
|
+
|
|
358
367
|
## Error Handling
|
|
359
368
|
|
|
360
369
|
- **Build failures:** Common issues include Rust version mismatches, missing dependencies in Cargo.toml, and Anchor version incompatibilities. Check `anchor --version` and `rustc --version`.
|
|
@@ -2,6 +2,10 @@
|
|
|
2
2
|
name: bober.brownfield
|
|
3
3
|
description: Safely add features to an existing codebase — deep analysis first, conservative sprints, regression-focused evaluation.
|
|
4
4
|
argument-hint: <feature-description>
|
|
5
|
+
handoffs:
|
|
6
|
+
- label: "Plan Feature"
|
|
7
|
+
command: /bober-plan
|
|
8
|
+
prompt: "Plan a feature for this existing codebase"
|
|
5
9
|
---
|
|
6
10
|
|
|
7
11
|
# bober.brownfield — Existing Codebase Workflow
|
|
@@ -413,6 +417,11 @@ After all sprints complete:
|
|
|
413
417
|
git revert <commit-hash> # Sprint N
|
|
414
418
|
```
|
|
415
419
|
|
|
420
|
+
## Next Steps
|
|
421
|
+
|
|
422
|
+
After completing this phase, suggest the following next steps to the user:
|
|
423
|
+
- `/bober-plan` — Plan a feature for this existing codebase
|
|
424
|
+
|
|
416
425
|
## Error Handling
|
|
417
426
|
|
|
418
427
|
- **Baseline broken before start:** Do NOT proceed. Tell the user the codebase has pre-existing failures and they should fix them first.
|
|
@@ -2,6 +2,13 @@
|
|
|
2
2
|
name: bober.eval
|
|
3
3
|
description: Run an independent evaluation of the current sprint state against its contract, producing structured pass/fail feedback.
|
|
4
4
|
argument-hint: "[contract-id]"
|
|
5
|
+
handoffs:
|
|
6
|
+
- label: "Rework Sprint"
|
|
7
|
+
command: /bober-sprint
|
|
8
|
+
prompt: "Rework the failed sprint with evaluator feedback"
|
|
9
|
+
- label: "Next Sprint"
|
|
10
|
+
command: /bober-sprint
|
|
11
|
+
prompt: "Move to the next sprint"
|
|
5
12
|
---
|
|
6
13
|
|
|
7
14
|
# bober.eval — Standalone Evaluation Skill
|
|
@@ -227,6 +234,12 @@ Present results in a clear, human-readable format:
|
|
|
227
234
|
<2-3 sentence summary>
|
|
228
235
|
```
|
|
229
236
|
|
|
237
|
+
## Next Steps
|
|
238
|
+
|
|
239
|
+
After completing this phase, suggest the following next steps to the user:
|
|
240
|
+
- `/bober-sprint` — Rework the failed sprint with evaluator feedback, or move to the next sprint
|
|
241
|
+
- `/bober-sprint` — Execute the next sprint if evaluation passed
|
|
242
|
+
|
|
230
243
|
## Anti-Leniency Reminders
|
|
231
244
|
|
|
232
245
|
- If a criterion says "the form displays an error message" and you can only verify the validation logic exists in code but cannot confirm the message renders, mark it as **fail** with a note about what you could not verify.
|
|
@@ -2,6 +2,13 @@
|
|
|
2
2
|
name: bober.plan
|
|
3
3
|
description: Transform a feature idea into a comprehensive plan with sprint contracts, clarifying questions, and acceptance criteria.
|
|
4
4
|
argument-hint: <feature-description>
|
|
5
|
+
handoffs:
|
|
6
|
+
- label: "Start Building"
|
|
7
|
+
command: /bober-sprint
|
|
8
|
+
prompt: "Execute the first sprint from the plan"
|
|
9
|
+
- label: "Full Autonomous Run"
|
|
10
|
+
command: /bober-run
|
|
11
|
+
prompt: "Run all sprints from the plan autonomously"
|
|
5
12
|
---
|
|
6
13
|
|
|
7
14
|
# bober.plan — Feature Planning Skill
|
|
@@ -236,6 +243,12 @@ Key criteria: <list 2-3 most important success criteria>
|
|
|
236
243
|
Run `/bober.sprint` to begin executing Sprint 1, or `/bober.run` to execute the full pipeline.
|
|
237
244
|
```
|
|
238
245
|
|
|
246
|
+
## Next Steps
|
|
247
|
+
|
|
248
|
+
After completing this phase, suggest the following next steps to the user:
|
|
249
|
+
- `/bober-sprint` — Start building by executing the first sprint from the plan
|
|
250
|
+
- `/bober-run` — Run all sprints from the plan autonomously
|
|
251
|
+
|
|
239
252
|
## Error Handling
|
|
240
253
|
|
|
241
254
|
- If the project has no manifest file (`package.json`, `Cargo.toml`, `pyproject.toml`, etc.) and no obvious project structure, ask the user if this is a new project and what they want to build
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: bober.principles
|
|
3
|
+
description: "Define and maintain project principles that guide all planning, generation, and evaluation. Establishes the non-negotiable standards for your project."
|
|
4
|
+
argument-hint: "[optional principles to add]"
|
|
5
|
+
handoffs:
|
|
6
|
+
- label: "Plan Feature"
|
|
7
|
+
command: /bober-plan
|
|
8
|
+
prompt: "Plan a feature guided by these principles"
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# bober.principles — Project Principles Skill
|
|
12
|
+
|
|
13
|
+
You are running the **bober.principles** skill. Your job is to help the user define or update the project principles that guide all planning, generation, and evaluation in the Bober pipeline.
|
|
14
|
+
|
|
15
|
+
## Step 1: Check for Existing Principles
|
|
16
|
+
|
|
17
|
+
Check if `.bober/principles.md` exists in the project root.
|
|
18
|
+
|
|
19
|
+
**If `.bober/principles.md` EXISTS:**
|
|
20
|
+
|
|
21
|
+
Read and display the current principles to the user:
|
|
22
|
+
|
|
23
|
+
```
|
|
24
|
+
Here are your current project principles:
|
|
25
|
+
|
|
26
|
+
<contents of .bober/principles.md>
|
|
27
|
+
|
|
28
|
+
Would you like to:
|
|
29
|
+
A) Keep these as-is
|
|
30
|
+
B) Update specific sections
|
|
31
|
+
C) Start over with new principles
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
If the user wants to update, proceed to Step 3 with the existing content as a starting point.
|
|
35
|
+
|
|
36
|
+
**If `.bober/principles.md` does NOT exist:**
|
|
37
|
+
|
|
38
|
+
Proceed to Step 2.
|
|
39
|
+
|
|
40
|
+
## Step 2: Interview the User
|
|
41
|
+
|
|
42
|
+
Ask the user 3-5 targeted questions to understand their project principles. Adapt the questions based on whether `bober.config.json` exists and what it reveals about the project type.
|
|
43
|
+
|
|
44
|
+
```
|
|
45
|
+
I'll help you define your project principles. These will guide every plan, sprint, and evaluation.
|
|
46
|
+
|
|
47
|
+
**Q1: Mission — What is the primary goal of this project?**
|
|
48
|
+
What problem are you solving, and for whom? (e.g., "A task manager that helps remote teams stay organized" or "An NFT marketplace for digital artists")
|
|
49
|
+
|
|
50
|
+
**Q2: Users — Who are the primary users?**
|
|
51
|
+
A) Developers / technical users
|
|
52
|
+
B) Non-technical end users
|
|
53
|
+
C) Both technical and non-technical users
|
|
54
|
+
D) Internal team / enterprise users
|
|
55
|
+
E) Other (please describe)
|
|
56
|
+
|
|
57
|
+
**Q3: Quality Standards — What quality bars matter most?**
|
|
58
|
+
Pick your top 2-3 priorities:
|
|
59
|
+
A) Performance (fast load times, low latency, efficient gas usage)
|
|
60
|
+
B) Accessibility (WCAG compliance, screen reader support)
|
|
61
|
+
C) Security (audit-ready code, input validation, access control)
|
|
62
|
+
D) Reliability (error handling, graceful degradation, uptime)
|
|
63
|
+
E) Developer experience (clean APIs, good docs, easy onboarding)
|
|
64
|
+
F) Test coverage (comprehensive tests, CI/CD gates)
|
|
65
|
+
|
|
66
|
+
**Q4: Technical Principles — What patterns or technologies should be followed or avoided?**
|
|
67
|
+
Examples:
|
|
68
|
+
- "Always use TypeScript strict mode"
|
|
69
|
+
- "Prefer composition over inheritance"
|
|
70
|
+
- "No external dependencies unless absolutely necessary"
|
|
71
|
+
- "Follow the existing codebase conventions exactly"
|
|
72
|
+
- "Use OpenZeppelin contracts for all standard functionality"
|
|
73
|
+
|
|
74
|
+
**Q5: Design Principles — What is the visual/UX style?** (if applicable)
|
|
75
|
+
A) Minimalist — clean, lots of whitespace, essential elements only
|
|
76
|
+
B) Data-dense — dashboards, tables, power-user focused
|
|
77
|
+
C) Playful — colorful, animated, engaging
|
|
78
|
+
D) Professional — corporate, trustworthy, conservative
|
|
79
|
+
E) Not applicable (no UI in this project)
|
|
80
|
+
F) Other (please describe)
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
## Step 2a: Expand Raw Input (if user provides a prompt/argument)
|
|
84
|
+
|
|
85
|
+
If the user provides text with this command — whether a short note like `"performance-first, minimal dependencies"` or a long paste of requirements, a PRD, or rough notes — your job is to **intelligently expand and elevate** that input into a polished principles document:
|
|
86
|
+
|
|
87
|
+
1. **Extract** all implicit and explicit principles from the user's input
|
|
88
|
+
2. **Expand** vague statements into specific, actionable standards. Example: "make it fast" → "**Performance:** Target < 3s initial page load. Use code splitting and lazy loading. Optimize images with next/image or equivalent. No blocking API calls on initial render."
|
|
89
|
+
3. **Infer** principles the user didn't state but clearly imply. If they describe a medical SaaS product, infer security and compliance principles. If they describe a DeFi protocol, infer audit-readiness and gas optimization.
|
|
90
|
+
4. **Organize** everything into the principles document structure (Mission, Users, Quality Standards, Technical Principles, Design Principles)
|
|
91
|
+
5. **Fill gaps** by asking 1-2 targeted follow-up questions ONLY for things you truly cannot infer. Don't ask obvious questions.
|
|
92
|
+
|
|
93
|
+
The goal: the user pastes rough notes, you produce a comprehensive, opinionated principles document that makes them say "yes, exactly — and I didn't even think of those."
|
|
94
|
+
|
|
95
|
+
Skip the interview (Step 2) entirely when the user provides substantive input. Go straight to generating the document.
|
|
96
|
+
|
|
97
|
+
## Step 3: Generate Principles Document
|
|
98
|
+
|
|
99
|
+
Based on the user's answers, generate `.bober/principles.md` with the following structure:
|
|
100
|
+
|
|
101
|
+
```markdown
|
|
102
|
+
# Project Principles
|
|
103
|
+
|
|
104
|
+
> These principles guide all planning, generation, and evaluation in the Bober pipeline.
|
|
105
|
+
> Updated: <date>
|
|
106
|
+
|
|
107
|
+
## Mission
|
|
108
|
+
|
|
109
|
+
<One-line project purpose derived from user's answer>
|
|
110
|
+
|
|
111
|
+
## Users
|
|
112
|
+
|
|
113
|
+
<Who this project is for, their technical level, their primary needs>
|
|
114
|
+
|
|
115
|
+
## Quality Standards
|
|
116
|
+
|
|
117
|
+
<Non-negotiable quality bars, ordered by priority>
|
|
118
|
+
|
|
119
|
+
- **<Standard 1>:** <Description of what this means in practice>
|
|
120
|
+
- **<Standard 2>:** <Description of what this means in practice>
|
|
121
|
+
- **<Standard 3>:** <Description of what this means in practice>
|
|
122
|
+
|
|
123
|
+
## Technical Principles
|
|
124
|
+
|
|
125
|
+
<Patterns to follow and patterns to avoid>
|
|
126
|
+
|
|
127
|
+
### Follow
|
|
128
|
+
- <Pattern to follow with brief rationale>
|
|
129
|
+
- <Pattern to follow with brief rationale>
|
|
130
|
+
|
|
131
|
+
### Avoid
|
|
132
|
+
- <Pattern to avoid with brief rationale>
|
|
133
|
+
- <Pattern to avoid with brief rationale>
|
|
134
|
+
|
|
135
|
+
## Design Principles
|
|
136
|
+
|
|
137
|
+
<Visual/UX standards if applicable, or "N/A — no user interface" for backend/library projects>
|
|
138
|
+
|
|
139
|
+
- <Design principle with brief description>
|
|
140
|
+
- <Design principle with brief description>
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
Save the file to `.bober/principles.md`.
|
|
144
|
+
|
|
145
|
+
## Step 4: Confirm and Report
|
|
146
|
+
|
|
147
|
+
Present the generated principles to the user for confirmation:
|
|
148
|
+
|
|
149
|
+
```
|
|
150
|
+
## Project Principles Created
|
|
151
|
+
|
|
152
|
+
<summary of each section>
|
|
153
|
+
|
|
154
|
+
These principles are saved at `.bober/principles.md` and will be used by:
|
|
155
|
+
- The **Planner** when creating specs and sprint contracts
|
|
156
|
+
- The **Generator** when implementing code
|
|
157
|
+
- The **Evaluator** when checking sprint output
|
|
158
|
+
|
|
159
|
+
You can update these at any time by running `/bober-principles` again.
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
Append to `.bober/history.jsonl`:
|
|
163
|
+
```json
|
|
164
|
+
{"event":"principles-created","timestamp":"..."}
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
Or if updating:
|
|
168
|
+
```json
|
|
169
|
+
{"event":"principles-updated","timestamp":"..."}
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
## Next Steps
|
|
173
|
+
|
|
174
|
+
After completing this phase, suggest the following next steps to the user:
|
|
175
|
+
- `/bober-plan` — Plan a feature guided by these principles
|
|
@@ -2,6 +2,10 @@
|
|
|
2
2
|
name: bober.react
|
|
3
3
|
description: React-based web application workflow — scaffold, plan, and build React apps with Vite or Next.js, optional backend, and database. This is one of several specialized workflows; use it specifically for React-based web applications.
|
|
4
4
|
argument-hint: <app-description>
|
|
5
|
+
handoffs:
|
|
6
|
+
- label: "Plan Feature"
|
|
7
|
+
command: /bober-plan
|
|
8
|
+
prompt: "Plan the feature for this React project"
|
|
5
9
|
---
|
|
6
10
|
|
|
7
11
|
# bober.react — React Web Application Workflow
|
|
@@ -321,6 +325,11 @@ After all sprints pass, run a final comprehensive check:
|
|
|
321
325
|
- When satisfied, merge to main
|
|
322
326
|
```
|
|
323
327
|
|
|
328
|
+
## Next Steps
|
|
329
|
+
|
|
330
|
+
After completing this phase, suggest the following next steps to the user:
|
|
331
|
+
- `/bober-plan` — Plan the feature for this React project
|
|
332
|
+
|
|
324
333
|
## Error Handling
|
|
325
334
|
|
|
326
335
|
- **Vite/Next.js HMR issues:** If the dev server shows HMR errors during evaluation, restart the dev server before re-evaluating
|
|
@@ -2,6 +2,10 @@
|
|
|
2
2
|
name: bober.solidity
|
|
3
3
|
description: "EVM smart contract development workflow. Scaffolds Hardhat or Foundry projects, plans contract architecture, implements with security best practices, and evaluates with compilation, linting, and test coverage. Use when building Solidity smart contracts, DeFi protocols, NFT projects, or DAOs."
|
|
4
4
|
argument-hint: <contract-description>
|
|
5
|
+
handoffs:
|
|
6
|
+
- label: "Plan Contract"
|
|
7
|
+
command: /bober-plan
|
|
8
|
+
prompt: "Plan the smart contract feature"
|
|
5
9
|
---
|
|
6
10
|
|
|
7
11
|
# bober.solidity — EVM Smart Contract Workflow
|
|
@@ -407,6 +411,11 @@ The evaluator MUST check for these common vulnerability patterns:
|
|
|
407
411
|
9. **Storage collisions:** In upgradeable contracts, storage layout changes between versions. Mitigate with storage gaps, ERC-7201 namespaced storage.
|
|
408
412
|
10. **Unchecked return values:** Not checking return values of `transfer`, `approve`, or low-level calls. Mitigate with SafeERC20 or explicit checks.
|
|
409
413
|
|
|
414
|
+
## Next Steps
|
|
415
|
+
|
|
416
|
+
After completing this phase, suggest the following next steps to the user:
|
|
417
|
+
- `/bober-plan` — Plan the smart contract feature
|
|
418
|
+
|
|
410
419
|
## Error Handling
|
|
411
420
|
|
|
412
421
|
- **Compilation failures:** Read the compiler output carefully. Common issues: import path errors, version mismatches, missing dependencies. Run `forge install` or `npm install` first.
|
|
@@ -2,6 +2,13 @@
|
|
|
2
2
|
name: bober.sprint
|
|
3
3
|
description: Execute the next pending sprint — negotiate contracts, run the Generator, evaluate output, and iterate until passing or exhausting retries.
|
|
4
4
|
argument-hint: "[sprint-number]"
|
|
5
|
+
handoffs:
|
|
6
|
+
- label: "Evaluate Sprint"
|
|
7
|
+
command: /bober-eval
|
|
8
|
+
prompt: "Evaluate the current sprint output"
|
|
9
|
+
- label: "Next Sprint"
|
|
10
|
+
command: /bober-sprint
|
|
11
|
+
prompt: "Execute the next sprint"
|
|
5
12
|
---
|
|
6
13
|
|
|
7
14
|
# bober.sprint — Sprint Execution Skill
|
|
@@ -271,6 +278,12 @@ Read `pipeline.contextReset` from config:
|
|
|
271
278
|
- `on-threshold`: Context resets only if the conversation is getting long. Not applicable in single-sprint skill execution.
|
|
272
279
|
- `never`: Context carries forward. Not recommended.
|
|
273
280
|
|
|
281
|
+
## Next Steps
|
|
282
|
+
|
|
283
|
+
After completing this phase, suggest the following next steps to the user:
|
|
284
|
+
- `/bober-eval` — Evaluate the current sprint output independently
|
|
285
|
+
- `/bober-sprint` — Execute the next sprint in the plan
|
|
286
|
+
|
|
274
287
|
## Error Handling
|
|
275
288
|
|
|
276
289
|
- **Generator fails to produce any output:** Mark sprint as `needs-rework` with note "Generator produced no output"
|