feat(ms-ai-architect): v1.12.0 manuell KB-refresh — fjern launchd/cron-arkitektur
ToS-vurdering konkluderte med at autonom cron-kjøring er unødvendig kompleks for en solo-fork-and-own-plugin. Apply-fasen krever LLM-resonnering uansett, så manuell trigger fra en aktiv Claude Code-sesjon er enklere og holder pluginen klart innenfor Anthropic Consumer Terms paragraf 3 (automated access only via API key or where explicitly permitted — Claude Code CLI er eksemptert som offisielt verktøy). Lagt til: - commands/kb-update.md — ny /architect:kb-update slash-kommando som driver poll, endringsrapport, microsoft_docs_fetch-update og commit fra sesjonen. Argumenter: --skip-discover, --priorities, --dry-run, --single-commit - Catalog-entry i playground HTML for kb-update (categori: tool, 4 input-felt) Slettet (Wave 3-5 reversert, ~1500 linjer + 7 testmoduler): - scripts/install-kb-cron.mjs (cross-OS scheduler-installer) - scripts/kb-update/weekly-kb-cron.mjs (cron-orkestrator med pre-flight, lock, backup, claude -p subprocess, post-run verify, rollback) - scripts/kb-update/templates/ (4 scheduler-templates: launchd plist, systemd service+timer, Windows ps1 + README) - scripts/kb-update/lib/auth-mode.mjs (cron-spesifikk auth validation) - scripts/kb-update/lib/lock-file.mjs (PID+mtime stale-detection) - scripts/kb-update/lib/cost-estimat.mjs (pre-flight budget-cap) - 7 testmoduler under tests/kb-update/ for slettet kode - tests/test-kb-update.sh (Bash-3.2-shim, erstattet av direkte node --test) Beholdt (utility-laget fortsatt brukbart): - run-weekly-update.mjs, report-changes.mjs, build-registry.mjs, discover-new-urls.mjs (KB change-detection-pipelinen) - lib/atomic-write, lib/backup, lib/cross-platform-paths, lib/log-rotate - 4 testmoduler (42/42 tester PASS) Endret: - hooks/scripts/session-start-context.mjs: fjern kb-update-status.json-overvaaking - tests/run-e2e.sh --kb-update kaller node --test direkte i stedet for shim - README.md, CLAUDE.md: KB-vedlikehold-seksjon rewriter for manuell modell - plugin.json: 1.11.0 -> 1.12.0 - Rot README + CLAUDE.md: ms-ai-architect-versjon bumpet Schedulering er bevisst utenfor scope og overlatt til brukeren — eventuelle forks som vil ha periodisk varsling kan sette opp egen cron / launchd / GitHub Actions som kjører rapport-fasen og varsler om aa kjore /architect:kb-update i CC-sesjon. Verifisering: - bash tests/validate-plugin.sh: 219 PASS, 0 FAIL - bash tests/run-e2e.sh --kb-update: 42/42 inner + suite PASS - bash tests/run-e2e.sh --playground: 271/271 PASS (statisk + parsers) Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
parent
97d1101e91
commit
a7a334c8d1
29 changed files with 238 additions and 2708 deletions
119
plugins/ms-ai-architect/commands/kb-update.md
Normal file
119
plugins/ms-ai-architect/commands/kb-update.md
Normal file
|
|
@ -0,0 +1,119 @@
|
|||
---
|
||||
name: architect:kb-update
|
||||
description: Manuell oppdatering av kunnskapsbasen — poller Microsoft Learn-sitemaps, sammenligner mot lokale `Last updated`-headere, oppdaterer endrede filer og oppdager nye relevante URLer
|
||||
argument-hint: "[valgfritt: --skip-discover | --priorities critical,high,medium,low | --dry-run]"
|
||||
allowed-tools: Bash, Read, Edit, Write, Glob, Grep, mcp__microsoft-learn__microsoft_docs_search, mcp__microsoft-learn__microsoft_docs_fetch, mcp__microsoft-learn__microsoft_code_sample_search
|
||||
model: opus
|
||||
---
|
||||
|
||||
# /architect:kb-update — Manuell KB-oppdatering
|
||||
|
||||
Holder Microsoft AI-kunnskapsbasen i `skills/*/references/` ferskt ved å sammenligne lokale referansefiler mot Microsoft Learn-sitemaps. **All kjøring er manuell** — pluginen schedulerer ingenting, og brukere som ønsker periodisk kjøring sørger for det selv (cron, launchd, GitHub Actions, etc.).
|
||||
|
||||
## Hva kommandoen gjør
|
||||
|
||||
1. **Polle sitemaps:** kjører `node scripts/kb-update/run-weekly-update.mjs --force` for å hente fersk `<lastmod>` for hver Microsoft Learn-URL i registeret
|
||||
2. **Optional discovery:** med default `--discover` finner nye relevante URLer i sitemap som ikke er i registeret (`scripts/kb-update/discover-new-urls.mjs --limit 500`)
|
||||
3. **Generere endringsrapport:** `report-changes.mjs` produserer `data/change-report.json` med per-fil prioritering (critical/high/medium/low) basert på antall endrede kilder + alder på lokal fil
|
||||
4. **Vise rapporten:** lese rapport, presentere oppsummering til bruker, vente på `go`
|
||||
5. **Oppdatere filer:** for hver fil i valgt prioritetsbøtte (default: critical + high):
|
||||
- Hente fersk innhold fra alle endrede kildene via `microsoft_docs_fetch`
|
||||
- Oppdatere relevante seksjoner i den lokale `.md`-fila
|
||||
- Oppdatere `Last updated:`-header til dagens dato
|
||||
6. **Committe:** én git-commit per fil med `chore(ms-ai-architect): refresh KB <fil> [skip-docs]`-format (eller én samlet commit om brukeren foretrekker det)
|
||||
|
||||
## Argumenter
|
||||
|
||||
| Flagg | Effekt |
|
||||
|-------|--------|
|
||||
| `--skip-discover` | Hopp over discovery-passet (raskere, ingen nye URLer oppdages) |
|
||||
| `--priorities <list>` | Komma-separert subset av `critical,high,medium,low`. Default: `critical,high` |
|
||||
| `--dry-run` | Generer rapport, men ikke oppdater filer eller committ |
|
||||
| `--single-commit` | Samle alle filendringer i én commit i stedet for én per fil |
|
||||
|
||||
## Instruksjoner til assistenten
|
||||
|
||||
### 1. Pre-flight
|
||||
|
||||
- `pwd` — bekreft at du står i `plugins/ms-ai-architect/` (eller delegere via absolutt sti)
|
||||
- `git status --porcelain | grep -E '\.md$' && echo "WARN: ucommittede skill-endringer — kommandoen vil blande dem inn"` — advar bruker hvis det finnes lokale skill-endringer
|
||||
- Parse argumenter
|
||||
|
||||
### 2. Kjør pollingsfasen
|
||||
|
||||
```bash
|
||||
node scripts/kb-update/run-weekly-update.mjs --force${ARG_DISCOVER}
|
||||
```
|
||||
|
||||
Hvor `${ARG_DISCOVER}` er `--discover` med mindre `--skip-discover` ble gitt.
|
||||
|
||||
Output forventes å skrive `data/change-report.json` og evt. nye registry-entries hvis discovery kjørte.
|
||||
|
||||
### 3. Vis rapport-oppsummering
|
||||
|
||||
```bash
|
||||
node scripts/kb-update/report-changes.mjs | head -40
|
||||
```
|
||||
|
||||
Presenter til bruker:
|
||||
- Antall filer per prioritet
|
||||
- Hvilke prioriteter som blir behandlet (default: critical + high)
|
||||
- Estimert antall `microsoft_docs_fetch`-kall (≈ sum av endrede kilder per fil)
|
||||
- Spør: "Fortsett med oppdatering? (y/n)"
|
||||
|
||||
Hvis `--dry-run`: stopp her, ikke oppdater filer.
|
||||
|
||||
### 4. Per-fil oppdatering (etter brukerens `y`)
|
||||
|
||||
For hver fil i valgte prioriteter:
|
||||
|
||||
a. **Les nåværende fil:** `Read` på filstien
|
||||
b. **Hent oppdaterte kilder:** for hver URL i `change-report.json[file].changed_urls`, kjør `microsoft_docs_fetch` på URLen
|
||||
c. **Identifiser endringer:** sammenlign hentet markdown mot eksisterende seksjoner i fila. Fokuser på faktuelle endringer (ny info, oppdaterte features, deprecation-varsler) — ikke små formuleringsendringer
|
||||
d. **Oppdater fila:** `Edit` med relevante endringer. Behold "For Cosmo"-seksjonen og overordnet struktur. Oppdater `Last updated: YYYY-MM-DD`-header til dagens dato
|
||||
e. **Committ:** `git add <fil>` + `git commit -m "chore(ms-ai-architect): refresh KB $(basename <fil>) [skip-docs]"` med mindre `--single-commit` ble gitt
|
||||
|
||||
### 5. Single-commit modus
|
||||
|
||||
Hvis `--single-commit`: skip committer per fil, og lag én samlet commit til slutt:
|
||||
|
||||
```bash
|
||||
git add skills/
|
||||
git commit -m "chore(ms-ai-architect): refresh KB — N files [skip-docs]"
|
||||
```
|
||||
|
||||
### 6. Push (om bruker bekrefter)
|
||||
|
||||
Spør: "Push til Forgejo origin/main? (y/n)". Per global push-policy er direkte main-push pre-autorisert, men spør likevel her siden dette er en bulk-operasjon.
|
||||
|
||||
```bash
|
||||
git push origin main
|
||||
```
|
||||
|
||||
### 7. Oppsummering
|
||||
|
||||
Rapporter:
|
||||
- Antall filer oppdatert per prioritet
|
||||
- Antall commits laget
|
||||
- Hvis discovery kjørte: antall nye URLer oppdaget og lagt til registry
|
||||
- Eventuelle filer som ble hoppet over (f.eks. ingen reelle endringer i hentet innhold)
|
||||
- `data/change-report.json` blir værende på disk for diagnose
|
||||
|
||||
## Fallgruver
|
||||
|
||||
- **Sitemap-coverage:** ~69% av URLene matche mot sitemap. ~31% (mest `azure/ai-foundry/openai/`) finnes ikke pga. URL-restrukturering på Microsofts side. Disse rapporteres som "always stale" og må vurderes manuelt
|
||||
- **Microsoft_docs_fetch latency:** hver fetch tar 2-5 sek. 9 critical + 44 high filer × ~1.5 kilder hver = ~80 fetches = ~3-7 minutter
|
||||
- **Modellvalg:** Opus brukes fordi diff-resonnering + tekst-syntese krever nyanse. For enklere "just refresh dates"-oppdateringer er Sonnet tilstrekkelig — bruker kan overstyre med eksplisitt `--model claude-sonnet-4-6` i Claude Code config
|
||||
- **MCP-tilgjengelighet:** kommandoen krever at `microsoft-learn` MCP-serveren er aktiv. Sjekk med `claude mcp list` ved første kjøring
|
||||
|
||||
## Når kjøre
|
||||
|
||||
- **Anbefalt:** ukentlig eller månedlig, avhengig av hvor sensitive prosjektene dine er for KB-ferskhet
|
||||
- **Før viktig vurdering:** kjør med `--priorities critical,high,medium` før en stor `/architect:utredning` eller `/architect:adr`
|
||||
- **Etter Microsoft-events:** Build, Ignite, eller annen større Microsoft-konferanse → forvent mange endringer
|
||||
|
||||
## Schedulering
|
||||
|
||||
Pluginen schedulerer **ingenting**. Hvis du vil ha periodisk kjøring, sett opp en cron-jobb / launchd-jobb / systemd timer / GitHub Actions-workflow som kjører `node scripts/kb-update/run-weekly-update.mjs --force --discover` (uten apply-fasen) og varsler deg om å kjøre `/architect:kb-update` i en interaktiv Claude Code-sesjon.
|
||||
|
||||
Apply-fasen (oppdatere filer + committe) kan ikke automatiseres innenfor denne pluginen — den krever LLM-resonnering på endringene og menneskelig vurdering, og er bevisst designet for kjøring fra en åpen Claude Code-sesjon.
|
||||
Loading…
Add table
Add a link
Reference in a new issue