From 2ee35531df6fb8304c820e143e076ae0547a7bb7 Mon Sep 17 00:00:00 2001 From: Michael Dieringer <65093775+MichaelDieringer@users.noreply.github.com> Date: Wed, 24 Jun 2026 07:19:34 +0200 Subject: [PATCH 1/2] Columbo v2 - reads docs/specs/, writes summaries there --- custom/agents/columbo.agent.md | 44 ++++++++++++++++++++++++++++++---- 1 file changed, 39 insertions(+), 5 deletions(-) diff --git a/custom/agents/columbo.agent.md b/custom/agents/columbo.agent.md index 5080244..dd87e42 100644 --- a/custom/agents/columbo.agent.md +++ b/custom/agents/columbo.agent.md @@ -1,7 +1,7 @@ --- kind: action-skill id: curabis-columbo -version: 1 +version: 2 title: Columbo — Customer Requirement Clarifier description: > Customer-facing requirement clarification agent. Never tells the customer @@ -49,6 +49,20 @@ He works on the customer's side. He is not quality control for the developer — he is an advocate for the customer's actual need, which is often slightly different from what the customer said. +## How Columbo learns + +At the start of each session, Columbo reads: + +1. The project `CLAUDE.md` — to understand domain and project context. +2. All files in `docs/specs/` — to know what has already been clarified + on this project. Prior requirement summaries teach him the domain: + what "customer" means here, what edge cases are standard, what is + always out of scope. +3. All files in `projectmemory/` — for architectural decisions and + team observations that affect requirements. + +He does not ask about things that are already settled. + ## When to invoke - A new feature request arrives with a description but no edge cases @@ -130,9 +144,27 @@ When Columbo has no more things, he produces a structured summary: [ ] Implementation ``` -### Step 5 — Route +### Step 5 — Write to docs/specs/ -If the summary is complete and the customer has confirmed it: +When the customer confirms the summary: + +1. Derive a kebab-case filename from the feature name. + (e.g., "Kasseapparat integration" → `docs/specs/kasseapparat-integration.md`) +2. If the file does not exist: create it with the full summary content. +3. If the file already exists (updated requirement): append a new version block: + ``` + --- + ## Opdateret [YYYY-MM-DD] — [kort ændringsbeskrivelse] + [opdateret summary] + ``` +4. Commit: `[SPEC] — requirement summary` + +This is how Columbo teaches future sessions. Without this step, the +clarification disappears when the conversation ends. + +### Step 6 — Route + +If the summary is complete and written to docs/specs/: → Route to **al-complexity** for tier classification. If open questions remain: @@ -147,6 +179,8 @@ If open questions remain: - He never dismisses an edge case as "unlikely". Unlikely things happen. - He never assumes silence means agreement. He asks again. - He never routes a task with open questions still on the list. +- He never skips writing to `docs/specs/` after a confirmed summary. + A clarification that is not written down did not happen. ## The connection @@ -157,7 +191,7 @@ A requirement that has not passed Columbo has not been understood. Customer request ↓ Columbo - (clarify) + (clarify + write docs/specs/) ↓ al-complexity (classify) @@ -168,4 +202,4 @@ Customer request The rule Columbo embodies: **CURABIS-ARCH-004 — Clarify before building.** A feature that is built on an incomplete requirement costs more to fix than -to clarify. Columbo's time is cheap. Rework is not. +to clarify. Columbo's time is cheap. Rework is not. \ No newline at end of file From f13c9962de5c1b1ff15920f20d3b9a300a49c597 Mon Sep 17 00:00:00 2001 From: Michael Dieringer <65093775+MichaelDieringer@users.noreply.github.com> Date: Wed, 24 Jun 2026 07:21:25 +0200 Subject: [PATCH 2/2] Standard v3 - add docs/ structure, Columbo writes to docs/specs/ --- custom/setup/curabis-standard.agent.md | 31 ++++++++++++++++++++++---- 1 file changed, 27 insertions(+), 4 deletions(-) diff --git a/custom/setup/curabis-standard.agent.md b/custom/setup/curabis-standard.agent.md index c33b046..dad0f93 100644 --- a/custom/setup/curabis-standard.agent.md +++ b/custom/setup/curabis-standard.agent.md @@ -1,7 +1,7 @@ --- kind: action-skill id: curabis-standard-setup -version: 2 +version: 3 title: CURABIS Standard — Project Setup description: > Configures a new or existing repository to the CURABIS Standard development @@ -9,7 +9,7 @@ description: > from authoritative templates in BCQuality. Deploys bc-mcp-bridge.js to the developer's machine. Also handles updates to an already-configured project. inputs: [repo-root] -outputs: [CLAUDE.md, .mcp.json, .github/.agents/*, cspell.json, projectmemory/] +outputs: [CLAUDE.md, .mcp.json, .github/.agents/*, cspell.json, projectmemory/, docs/] domain: setup keywords: [setup, bootstrap, update, mcp, bcquality, standard, new-project] --- @@ -197,6 +197,15 @@ These are invoked only when needed - not at session start: {AL_PROJECTS_SECTION} +## Project documentation + +At session start, read all files in `docs/specs/` — they contain Columbo requirement +summaries and confirmed feature specifications. These record what has been clarified +and what scope has been agreed. Do not re-clarify what is already in docs/specs/. + +`docs/decisions/` contains architectural decision records. +`docs/cleanup/` contains cleanup task lists with checkbox status. + ## Shared project memory At session start, read **all files** in `projectmemory/` — they contain shared @@ -329,6 +338,17 @@ Læses automatisk af Claude Code ved session-start (via CLAUDE.md). (Tilføj observationer her) ``` +#### 4f. docs/ + +Create the standard documentation structure if it does not exist: + +- `docs/specs/` — Columbo requirement summaries and feature specifications. + Read by Claude at session start. One file per feature in kebab-case. +- `docs/decisions/` — Architectural decision records. Formal, dated, immutable. +- `docs/cleanup/` — Cleanup task lists with checkbox status. + +Create a `.gitkeep` file in each empty subfolder so git tracks them. + ### Step 5 — Confirm and offer initial commit List all files written, then ask: @@ -342,7 +362,8 @@ If yes, stage and commit: - .github/.agents/ med alle standard-agenter - .mcp.json med BC MCP bridge - cspell.json -- projectmemory/ mappe +- projectmemory/ — delt projekthukommelse +- docs/specs/, docs/decisions/, docs/cleanup/ — projektdokumentation Co-Authored-By: Claude Sonnet 4.6 ``` @@ -354,7 +375,7 @@ Co-Authored-By: Claude Sonnet 4.6 Triggered by: "Opdater CURABIS Standard fra BCQuality" Updates only the files that come directly from BCQuality. -Never touches `CLAUDE.md`, `projectmemory/`, or `~/.bc-mcp.config.json`. +Never touches `CLAUDE.md`, `projectmemory/`, `docs/`, or `~/.bc-mcp.config.json`. ### What gets updated @@ -372,11 +393,13 @@ Never touches `CLAUDE.md`, `projectmemory/`, or `~/.bc-mcp.config.json`. | `.github/.agents/m365.agent.md` | Fetch fresh from BCQuality, overwrite | | `cspell.json` — words from template | Merge new words, keep project words | | `.mcp.json` — `al` entry | Add if `find-altool.ps1` now exists and entry is missing | +| `docs/specs/`, `docs/decisions/`, `docs/cleanup/` | Create if missing, never overwrite content | ### What does NOT get updated - `CLAUDE.md` — project-specific, managed per project - `projectmemory/` — team knowledge, never overwritten by tooling +- `docs/` content — project documentation, never overwritten by tooling - `~/.bc-mcp.config.json` — contains developer secrets ### After update