From 0be4b54de41bbd3ca860bee12d5915f90e0f2f8d Mon Sep 17 00:00:00 2001 From: Michael Dieringer <65093775+MichaelDieringer@users.noreply.github.com> Date: Thu, 25 Jun 2026 17:58:53 +0200 Subject: [PATCH] Add HEARTBEAT.md template og opdater curabis-standard setup - custom/setup/templates/HEARTBEAT.md: Florence's vagtliste-template med 6 standard ward-checks (BCQuality PRs, CI/CD, BC-opgaver, forsinkede opgaver, gamle branches, agent-synlighed i CLAUDE.md) - curabis-standard.agent.md: * Mode A: HEARTBEAT.md oprettelse som step 4f * Mode A: court/lincoln/aurelius/munger tilfoejt til agent-liste * Mode B: court-agenter og HEARTBEAT.md tilfoejt til opdateringstabel * Mode B: agent-synligheds-check efter opdatering * CLAUDE.md-template: court.agent.md og Francis-trigger tilfoejt Co-Authored-By: Claude Sonnet 4.6 --- custom/setup/curabis-standard.agent.md | 50 ++++++++++++++- custom/setup/templates/HEARTBEAT.md | 86 ++++++++++++++++++++++++++ 2 files changed, 134 insertions(+), 2 deletions(-) create mode 100644 custom/setup/templates/HEARTBEAT.md diff --git a/custom/setup/curabis-standard.agent.md b/custom/setup/curabis-standard.agent.md index dad0f93..f375f84 100644 --- a/custom/setup/curabis-standard.agent.md +++ b/custom/setup/curabis-standard.agent.md @@ -192,6 +192,19 @@ These are invoked only when needed - not at session start: - `.github/.agents/bc-mcp.agent.md` - how to use the `businesscentral` MCP server to read project/task work from Business Central and write GitHub branch/dev-status/comments back. Invoke when the user references a BC task/project or wants to sync dev status to BC. +- `.github/.agents/court.agent.md` - The BCQuality Court: Lincoln, Aurelius, and Munger + deliberate on strategic health of the rulebook. Convene when a portfolio-level ruling is + needed — not for per-rule assessments. Requires a case brief with Edison scorecards. + +## Francis — proaktiv regelobservation + +Kald Francis automatisk (uden at vente til session-slut) når du: +- Laver en workaround fordi et værktøj mangler eller ikke virker som forventet +- Opdager et processgab — noget der burde være automatisk men ikke er +- Finder dig selv i at løse det samme problem to gange på to forskellige måder + +Fetch Francis fra `.github/.agents/francis.agent.md` hvis den eksisterer, +ellers fra `{BASE}/templates/francis.agent.md`. ## AL projects @@ -313,6 +326,10 @@ Fetch and write verbatim: - `{AGENTS_BASE}/columbo.agent.md` → `.github/.agents/columbo.agent.md` - `{AGENTS_BASE}/florence.agent.md` → `.github/.agents/florence.agent.md` - `{AGENTS_BASE}/m365.agent.md` → `.github/.agents/m365.agent.md` +- `{AGENTS_BASE}/court.agent.md` → `.github/.agents/court.agent.md` +- `{AGENTS_BASE}/lincoln.agent.md` → `.github/.agents/lincoln.agent.md` +- `{AGENTS_BASE}/aurelius.agent.md` → `.github/.agents/aurelius.agent.md` +- `{AGENTS_BASE}/munger.agent.md` → `.github/.agents/munger.agent.md` Create `.github/.agents/` if it does not exist. @@ -338,7 +355,18 @@ Læses automatisk af Claude Code ved session-start (via CLAUDE.md). (Tilføj observationer her) ``` -#### 4f. docs/ +#### 4f. HEARTBEAT.md + +If `HEARTBEAT.md` does NOT exist at repo root: +1. Fetch `{BASE}/templates/HEARTBEAT.md` +2. Replace `{PROJECT_NAME}` with the project name from Step 2 +3. Replace `{SETUP_DATE}` with today's ISO date +4. Write to repo root +5. Confirm: "HEARTBEAT.md oprettet — Florence er klar til at gå sine runder." + +If `HEARTBEAT.md` already exists: skip silently. + +#### 4g. docs/ Create the standard documentation structure if it does not exist: @@ -362,6 +390,7 @@ If yes, stage and commit: - .github/.agents/ med alle standard-agenter - .mcp.json med BC MCP bridge - cspell.json +- HEARTBEAT.md — Florence's vagtliste - projectmemory/ — delt projekthukommelse - docs/specs/, docs/decisions/, docs/cleanup/ — projektdokumentation @@ -391,8 +420,13 @@ Never touches `CLAUDE.md`, `projectmemory/`, `docs/`, or `~/.bc-mcp.config.json` | `.github/.agents/columbo.agent.md` | Fetch fresh from BCQuality, overwrite | | `.github/.agents/florence.agent.md` | Fetch fresh from BCQuality, overwrite | | `.github/.agents/m365.agent.md` | Fetch fresh from BCQuality, overwrite | +| `.github/.agents/court.agent.md` | Fetch fresh from BCQuality, overwrite | +| `.github/.agents/lincoln.agent.md` | Fetch fresh from BCQuality, overwrite | +| `.github/.agents/aurelius.agent.md` | Fetch fresh from BCQuality, overwrite | +| `.github/.agents/munger.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 | +| `HEARTBEAT.md` | Create from template if missing, never overwrite | | `docs/specs/`, `docs/decisions/`, `docs/cleanup/` | Create if missing, never overwrite content | ### What does NOT get updated @@ -402,7 +436,19 @@ Never touches `CLAUDE.md`, `projectmemory/`, `docs/`, or `~/.bc-mcp.config.json` - `docs/` content — project documentation, never overwritten by tooling - `~/.bc-mcp.config.json` — contains developer secrets -### After update +### After update — agent-synligheds-check + +After updating agent files, compare `.github/.agents/*.agent.md` against CLAUDE.md: +- For each agent file in the directory, check if its filename is referenced in CLAUDE.md +- If any are missing, report them: + ``` + ⚠️ Nye agenter installeret men ikke refereret i CLAUDE.md: + - .agent.md + Vil du have mig til at tilføje dem? + ``` +- Do not add them without the developer's confirmation + +### After update — report and commit Report what changed, then ask: > "Opdatering færdig. Vil du have mig til at committe ændringerne? (ja/nej)" diff --git a/custom/setup/templates/HEARTBEAT.md b/custom/setup/templates/HEARTBEAT.md new file mode 100644 index 0000000..92ebf98 --- /dev/null +++ b/custom/setup/templates/HEARTBEAT.md @@ -0,0 +1,86 @@ +# HEARTBEAT.md — {PROJECT_NAME} + +Florence læser denne fil ved hver runde. Hun følger checklistet præcist +og flagger hvis det er forældet. + +Sidst opdateret: {SETUP_DATE} + +--- + +## Checklistet + +### 1. BCQuality PRs +Tjek åbne PRs på `Curabis/BCQuality`: +`https://api.github.com/repos/Curabis/BCQuality/pulls?state=open` + +| Klassifikation | Kriterium | +|---|---| +| Routine | Ingen åbne PRs | +| Notable | 1 åben PR, oprettet inden for 24 timer | +| Concerning | 1+ åben PR, ældre end 3 dage uden aktivitet | +| Urgent | PR afventer merge og blokerer andet arbejde | + +--- + +### 2. CI/CD — AL-Go builds +Tjek seneste build-status på `main` og åbne branches. + +| Klassifikation | Kriterium | +|---|---| +| Routine | Alle builds grønne | +| Notable | Et enkelt build fejlede men er siden rettet | +| Concerning | Seneste build på main fejler | +| Urgent | Main fejler og der er en igangværende release | + +--- + +### 3. BC-opgaver — klar til start +Tjek opgaver med status `Accepted` i projektet. + +| Klassifikation | Kriterium | +|---|---| +| Routine | Ingen nye Accepted-opgaver siden sidste runde | +| Notable | 1-2 opgaver er blevet Accepted | +| Concerning | 3+ opgaver er Accepted og ingen er taget op | + +--- + +### 4. Forsinkede opgaver +Tjek opgaver hvor `expectedDelivery` er passeret og BC-status ikke er afsluttet. + +| Klassifikation | Kriterium | +|---|---| +| Routine | Ingen forsinkede opgaver | +| Notable | 1 opgave forsinket med under 3 dage | +| Concerning | 1+ opgave forsinket med mere end 3 dage | +| Urgent | Forsinkelse påvirker kundeleverance | + +--- + +### 5. Gamle branches +Tjek branches ældre end 14 dage uden åben PR. + +| Klassifikation | Kriterium | +|---|---| +| Routine | Ingen branches ældre end 14 dage | +| Notable | 1-2 gamle branches uden PR | +| Concerning | 3+ gamle branches, eller en branch ældre end 30 dage | + +--- + +### 6. Agent-synlighed i CLAUDE.md +Sammenlign filer i `.github/.agents/` med referencer i `CLAUDE.md`. + +| Klassifikation | Kriterium | +|---|---| +| Routine | Alle agenter er nævnt i CLAUDE.md | +| Concerning | 1+ agent i mappen er ikke nævnt i CLAUDE.md | + +--- + +## Hvad Florence aldrig gør + +- Vækker Michael for et Notable +- Springer en runde over fordi "der sikkert ikke er sket noget" +- Redigerer dette dokument uden at blive bedt om det +- Lukker BC-opgaver — det kan kun en BC-bruger