Merge pull request #14 from Curabis/curabis-docs-structure

Standard v3 + Columbo v2 - docs/ struktur og requirement persistence
This commit is contained in:
Michael Dieringer 2026-06-24 07:22:14 +02:00 committed by GitHub
commit 416b30ee44
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 66 additions and 9 deletions

View file

@ -1,7 +1,7 @@
--- ---
kind: action-skill kind: action-skill
id: curabis-columbo id: curabis-columbo
version: 1 version: 2
title: Columbo — Customer Requirement Clarifier title: Columbo — Customer Requirement Clarifier
description: > description: >
Customer-facing requirement clarification agent. Never tells the customer 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 he is an advocate for the customer's actual need, which is often slightly
different from what the customer said. 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 ## When to invoke
- A new feature request arrives with a description but no edge cases - 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 [ ] 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] <Feature name> — 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. → Route to **al-complexity** for tier classification.
If open questions remain: 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 dismisses an edge case as "unlikely". Unlikely things happen.
- He never assumes silence means agreement. He asks again. - He never assumes silence means agreement. He asks again.
- He never routes a task with open questions still on the list. - 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 ## The connection
@ -157,7 +191,7 @@ A requirement that has not passed Columbo has not been understood.
Customer request Customer request
Columbo Columbo
(clarify) (clarify + write docs/specs/)
al-complexity al-complexity
(classify) (classify)

View file

@ -1,7 +1,7 @@
--- ---
kind: action-skill kind: action-skill
id: curabis-standard-setup id: curabis-standard-setup
version: 2 version: 3
title: CURABIS Standard — Project Setup title: CURABIS Standard — Project Setup
description: > description: >
Configures a new or existing repository to the CURABIS Standard development 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 from authoritative templates in BCQuality. Deploys bc-mcp-bridge.js to the
developer's machine. Also handles updates to an already-configured project. developer's machine. Also handles updates to an already-configured project.
inputs: [repo-root] 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 domain: setup
keywords: [setup, bootstrap, update, mcp, bcquality, standard, new-project] 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} {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 ## Shared project memory
At session start, read **all files** in `projectmemory/` — they contain shared 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) (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 ### Step 5 — Confirm and offer initial commit
List all files written, then ask: List all files written, then ask:
@ -342,7 +362,8 @@ If yes, stage and commit:
- .github/.agents/ med alle standard-agenter - .github/.agents/ med alle standard-agenter
- .mcp.json med BC MCP bridge - .mcp.json med BC MCP bridge
- cspell.json - cspell.json
- projectmemory/ mappe - projectmemory/ — delt projekthukommelse
- docs/specs/, docs/decisions/, docs/cleanup/ — projektdokumentation
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
``` ```
@ -354,7 +375,7 @@ Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Triggered by: "Opdater CURABIS Standard fra BCQuality" Triggered by: "Opdater CURABIS Standard fra BCQuality"
Updates only the files that come directly from 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 ### 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 | | `.github/.agents/m365.agent.md` | Fetch fresh from BCQuality, overwrite |
| `cspell.json` — words from template | Merge new words, keep project words | | `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 | | `.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 ### What does NOT get updated
- `CLAUDE.md` — project-specific, managed per project - `CLAUDE.md` — project-specific, managed per project
- `projectmemory/` — team knowledge, never overwritten by tooling - `projectmemory/` — team knowledge, never overwritten by tooling
- `docs/` content — project documentation, never overwritten by tooling
- `~/.bc-mcp.config.json` — contains developer secrets - `~/.bc-mcp.config.json` — contains developer secrets
### After update ### After update