mirror of
https://github.com/microsoft/BCQuality.git
synced 2026-08-06 17:36:53 +01:00
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 <noreply@anthropic.com>
This commit is contained in:
parent
d75783c311
commit
0be4b54de4
2 changed files with 134 additions and 2 deletions
|
|
@ -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
|
- `.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.
|
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.
|
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
|
## AL projects
|
||||||
|
|
||||||
|
|
@ -313,6 +326,10 @@ Fetch and write verbatim:
|
||||||
- `{AGENTS_BASE}/columbo.agent.md` → `.github/.agents/columbo.agent.md`
|
- `{AGENTS_BASE}/columbo.agent.md` → `.github/.agents/columbo.agent.md`
|
||||||
- `{AGENTS_BASE}/florence.agent.md` → `.github/.agents/florence.agent.md`
|
- `{AGENTS_BASE}/florence.agent.md` → `.github/.agents/florence.agent.md`
|
||||||
- `{AGENTS_BASE}/m365.agent.md` → `.github/.agents/m365.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.
|
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)
|
(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:
|
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
|
- .github/.agents/ med alle standard-agenter
|
||||||
- .mcp.json med BC MCP bridge
|
- .mcp.json med BC MCP bridge
|
||||||
- cspell.json
|
- cspell.json
|
||||||
|
- HEARTBEAT.md — Florence's vagtliste
|
||||||
- projectmemory/ — delt projekthukommelse
|
- projectmemory/ — delt projekthukommelse
|
||||||
- docs/specs/, docs/decisions/, docs/cleanup/ — projektdokumentation
|
- 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/columbo.agent.md` | Fetch fresh from BCQuality, overwrite |
|
||||||
| `.github/.agents/florence.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/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 |
|
| `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 |
|
||||||
|
| `HEARTBEAT.md` | Create from template if missing, never overwrite |
|
||||||
| `docs/specs/`, `docs/decisions/`, `docs/cleanup/` | Create if missing, never overwrite content |
|
| `docs/specs/`, `docs/decisions/`, `docs/cleanup/` | Create if missing, never overwrite content |
|
||||||
|
|
||||||
### What does NOT get updated
|
### 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
|
- `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 — 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-navn>.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:
|
Report what changed, then ask:
|
||||||
> "Opdatering færdig. Vil du have mig til at committe ændringerne? (ja/nej)"
|
> "Opdatering færdig. Vil du have mig til at committe ændringerne? (ja/nej)"
|
||||||
|
|
|
||||||
86
custom/setup/templates/HEARTBEAT.md
Normal file
86
custom/setup/templates/HEARTBEAT.md
Normal file
|
|
@ -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
|
||||||
Loading…
Add table
Add a link
Reference in a new issue