mirror of
https://github.com/microsoft/BCQuality.git
synced 2026-10-05 14:46:55 +01:00
v19: git-baseret konsumtion - forberedelse til privat repo
Beslutning: BCQuality skal vaere privat. En fork af et offentligt repo kan ikke goeres privat, saa flyttet sker via detach/nyoprettelse - men FOERST omlaegges al konsumtion fra tokenfri raw-URLs til git-baseret adgang, shippet mens kanalen stadig er offentlig, saa flaaden aldrig oplever et hul. GCM er token-haandteringen: udviklerne er allerede autentificeret. Kernen er KANAL-KLONEN: %USERPROFILE%\.claude\BCQuality, pinned til stable. Alt kopieres derfra (filsystem-kopi = raa bytes; ingen CDN-cache, ingen API-limits). - sync-bcquality-knowledge.ps1 v2: git-baseret (klon/fetch/checkout stable, mirror bygges lokalt, skriver selv versionsmarkoeren) - Install-CurabisMachine.ps1 v2: onboarding = git clone + script fra klonen; foerste GCM-login ER autentificeringen - curabis-standard.agent.md v19: SRC/BASE-tokens peger paa klonen; fetch betyder copy; Mode B Step 0 freshener klonen; ny Mode B- sektion opdaterer maskin-CLAUDE.md ved konsumtionsmodel-skift (gated, Identity bevares); CLAUDE.md-templatens self-heals er git-baserede - machine/CLAUDE.md v2: auto-update gater paa git fetch/rev-parse i stedet for GitHub API; setup laeses fra klonen - Ishikawa + al-triage + Francis: fallbacks peger paa mirror/klon; al-triages hardcodede URL-liste fjernet (samme sygdom som Ishikawa havde). Aerlig konsekvens: Copilot mister live custom-fallback - CONSUMPTION.md: Access model-sektion + to-linjers onboarding - Invoke-CurabisEvidence: RawBase markeret legacy/doed Nul raw.githubusercontent-referencer tilbage i forbrugerkritiske filer. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
parent
a95cf7f43f
commit
3ce08fe91e
9 changed files with 205 additions and 139 deletions
|
|
@ -2,30 +2,54 @@
|
|||
# CURABIS — Global Claude Code Instructions
|
||||
|
||||
These instructions apply to every Claude Code session, regardless of project.
|
||||
BCQuality is a PRIVATE repo: all access is git-based via the channel clone at
|
||||
`%USERPROFILE%\.claude\BCQuality` (pinned to `stable`; auth = Git Credential
|
||||
Manager). No raw.githubusercontent URLs — they do not work and must not be used.
|
||||
|
||||
## Auto-update BCQuality (runs at every session start)
|
||||
|
||||
If the current project has `.github/.agents/bcquality.agent.md`:
|
||||
|
||||
1. Fetch the latest commit SHA for `custom/setup/` in BCQuality:
|
||||
`https://api.github.com/repos/Curabis/BCQuality/commits?path=custom/setup&sha=stable&per_page=1`
|
||||
1. Freshen the channel clone and read its SHA:
|
||||
`git -C "$env:USERPROFILE\.claude\BCQuality" fetch origin stable --quiet`
|
||||
`git -C "$env:USERPROFILE\.claude\BCQuality" rev-parse origin/stable`
|
||||
(If the clone is missing: run the machine self-heal from the project
|
||||
CLAUDE.md — two lines: git clone + Install-CurabisMachine.ps1.)
|
||||
2. Read stored SHA from `~/.claude/.bcquality-version` (may not exist yet)
|
||||
3. If SHA is different (or file missing):
|
||||
a. Fetch and execute Mode B from:
|
||||
`https://raw.githubusercontent.com/Curabis/BCQuality/stable/custom/setup/curabis-standard.agent.md`
|
||||
b. Write new SHA to `~/.claude/.bcquality-version`
|
||||
c. Report: "BCQuality opdateret til [short-sha] — [antal] filer tjekket"
|
||||
4. If SHA is unchanged: continue silently
|
||||
a. `git -C "$env:USERPROFILE\.claude\BCQuality" checkout -B stable origin/stable --quiet`
|
||||
b. Execute Mode B from the clone:
|
||||
`%USERPROFILE%\.claude\BCQuality\custom\setup\curabis-standard.agent.md`
|
||||
c. Refresh the local knowledge mirror:
|
||||
`powershell -ExecutionPolicy Bypass -File "$env:USERPROFILE\.claude\sync-bcquality-knowledge.ps1"`
|
||||
(git-based; also writes the new SHA to the version marker)
|
||||
d. Report: "BCQuality opdateret til [short-sha] — [antal] filer tjekket"
|
||||
4. If SHA is unchanged: continue silently — do NOT re-run the sync script. One
|
||||
sync per actual upstream change covers every project worked on until the next one.
|
||||
|
||||
Do this silently and quickly — do not ask for permission, do not explain the process
|
||||
unless something actually changed.
|
||||
|
||||
## BCQuality knowledge files — session start
|
||||
|
||||
At session start, read BCQuality rules from the local cache (fast — no network):
|
||||
|
||||
- **`custom/`** — always read in full: `%USERPROFILE%\.claude\bcquality-knowledge\custom\**\*.md`
|
||||
- **`community/`** and **`microsoft/`** — do NOT read in full (200+ files is too
|
||||
much to preload). Instead read `%USERPROFILE%\.claude\bcquality-knowledge\INDEX.md`
|
||||
first, and open only the files whose domain/keywords match the current task.
|
||||
|
||||
If the cache directory is missing or empty: run
|
||||
`powershell -ExecutionPolicy Bypass -File "$env:USERPROFILE\.claude\sync-bcquality-knowledge.ps1"`
|
||||
once, then proceed as above.
|
||||
|
||||
## CURABIS Standard project setup
|
||||
|
||||
When the user says either of these commands, fetch and follow the setup agent:
|
||||
When the user says either of these commands, freshen the channel clone (see
|
||||
Auto-update step 1) and follow the setup agent read from:
|
||||
|
||||
```
|
||||
https://raw.githubusercontent.com/Curabis/BCQuality/stable/custom/setup/curabis-standard.agent.md
|
||||
%USERPROFILE%\.claude\BCQuality\custom\setup\curabis-standard.agent.md
|
||||
```
|
||||
|
||||
- **"Konfigurer dette projekt til CURABIS Standard"** → fuld setup af nyt repo
|
||||
|
|
|
|||
|
|
@ -1,16 +1,16 @@
|
|||
# CURABIS maskin-onboarding - goer en frisk udviklermaskine klar til
|
||||
# CURABIS Standard. Koeres EEN gang pr. maskine; er idempotent (sikker at
|
||||
# koere igen). Alt hentes som raa bytes fra stable-kanalen.
|
||||
# CURABIS maskin-onboarding v2 (GIT-BASERET, privat repo) - goer en frisk
|
||||
# udviklermaskine CURABIS-klar. Idempotent; sikker at koere igen.
|
||||
#
|
||||
# Torsten (eller enhver ny udvikler) koerer:
|
||||
# powershell -ExecutionPolicy Bypass -File Install-CurabisMachine.ps1
|
||||
# Onboarding paa en ny maskine er TO linjer (GCM-login i browseren ved
|
||||
# foerste git-kontakt ER autentificeringen):
|
||||
#
|
||||
# Eller direkte fra BCQuality:
|
||||
# powershell -ExecutionPolicy Bypass -Command "Invoke-WebRequest -UseBasicParsing https://raw.githubusercontent.com/Curabis/BCQuality/stable/custom/setup/machine/Install-CurabisMachine.ps1 -OutFile $env:TEMP\icm.ps1; & $env:TEMP\icm.ps1"
|
||||
# git clone --branch stable --single-branch https://github.com/Curabis/BCQuality.git "$env:USERPROFILE\.claude\BCQuality"
|
||||
# powershell -ExecutionPolicy Bypass -File "$env:USERPROFILE\.claude\BCQuality\custom\setup\machine\Install-CurabisMachine.ps1"
|
||||
#
|
||||
# Hvad der IKKE haandteres her (personligt/manuel):
|
||||
# - din client secret i ~/.bc-mcp.config.json (scriptet lægger templaten
|
||||
# og siger til)
|
||||
# Alt kopieres fra kanal-klonen (filsystem-kopi = raa bytes; ingen raw-URLs).
|
||||
#
|
||||
# Haandteres IKKE her (personligt/manuelt):
|
||||
# - din client secret i ~/.bc-mcp.config.json (templaten laegges, du udfylder)
|
||||
# - VS Code + AL Language-extensionen (ms-dynamics-smb.al fra Marketplace)
|
||||
param(
|
||||
[string]$FullName,
|
||||
|
|
@ -18,11 +18,21 @@ param(
|
|||
)
|
||||
|
||||
$ErrorActionPreference = 'Stop'
|
||||
$raw = 'https://raw.githubusercontent.com/Curabis/BCQuality/stable/custom/setup'
|
||||
$claude = Join-Path $env:USERPROFILE '.claude'
|
||||
$clone = Join-Path $env:USERPROFILE '.claude\BCQuality'
|
||||
New-Item -ItemType Directory -Force $claude | Out-Null
|
||||
|
||||
# Identitet: default fra git config, ellers spoerg
|
||||
# Kilde: scriptet ligger i <klon>\custom\setup\machine → klonrod tre niveauer op
|
||||
$src = (Resolve-Path (Join-Path $PSScriptRoot '..\..\..')).Path
|
||||
|
||||
# Sikr kanal-klonen paa den kanoniske placering (scriptet KAN vaere koert fra en anden klon)
|
||||
if (-not (Test-Path (Join-Path $clone '.git'))) {
|
||||
if ($src -ne $clone) {
|
||||
git clone --branch stable --single-branch 'https://github.com/Curabis/BCQuality.git' $clone
|
||||
if ($LASTEXITCODE -ne 0) { throw 'git clone af kanal-klonen fejlede - tjek adgang/GCM.' }
|
||||
}
|
||||
}
|
||||
|
||||
if (-not $FullName) { $FullName = (git config user.name 2>$null) }
|
||||
if (-not $UserName) { $UserName = $env:USERNAME }
|
||||
if (-not $FullName) { $FullName = Read-Host 'Dit fulde navn' }
|
||||
|
|
@ -30,12 +40,12 @@ if (-not $FullName) { $FullName = Read-Host 'Dit fulde navn' }
|
|||
$done = @()
|
||||
$todo = @()
|
||||
|
||||
# 1. Global CLAUDE.md (fra template; overskriver ALDRIG en eksisterende)
|
||||
# 1. Global CLAUDE.md (fra template i klonen; overskriver ALDRIG en eksisterende)
|
||||
$gcm = Join-Path $claude 'CLAUDE.md'
|
||||
if (Test-Path $gcm) {
|
||||
$done += "CLAUDE.md fandtes allerede - ikke roert"
|
||||
$done += 'CLAUDE.md fandtes allerede - ikke roert'
|
||||
} else {
|
||||
Invoke-WebRequest -UseBasicParsing "$raw/machine/CLAUDE.md" -OutFile $gcm
|
||||
Copy-Item (Join-Path $src 'custom\setup\machine\CLAUDE.md') $gcm
|
||||
$t = [System.IO.File]::ReadAllText($gcm)
|
||||
$t = $t.Replace('[Your Name]', $FullName).Replace('[your-username]', $UserName)
|
||||
$t = $t -replace '<!-- Replace the two lines below with your own details -->\r?\n', ''
|
||||
|
|
@ -44,29 +54,22 @@ if (Test-Path $gcm) {
|
|||
}
|
||||
|
||||
# 2. BC MCP bridge (stable er autoritativ - overskriv)
|
||||
Invoke-WebRequest -UseBasicParsing "$raw/bc-mcp-bridge.js" -OutFile (Join-Path $claude 'bc-mcp-bridge.js')
|
||||
$done += "bc-mcp-bridge.js installeret"
|
||||
Copy-Item (Join-Path $src 'custom\setup\bc-mcp-bridge.js') (Join-Path $claude 'bc-mcp-bridge.js') -Force
|
||||
$done += 'bc-mcp-bridge.js installeret'
|
||||
|
||||
# 3. BC MCP config-template (personlig secret - aldrig overskrive)
|
||||
$cfg = Join-Path $env:USERPROFILE '.bc-mcp.config.json'
|
||||
if (Test-Path $cfg) {
|
||||
$done += "bc-mcp.config.json fandtes allerede - ikke roert"
|
||||
$done += 'bc-mcp.config.json fandtes allerede - ikke roert'
|
||||
} else {
|
||||
Invoke-WebRequest -UseBasicParsing "$raw/machine/bc-mcp.config.template.json" -OutFile $cfg
|
||||
Copy-Item (Join-Path $src 'custom\setup\machine\bc-mcp.config.template.json') $cfg
|
||||
$todo += "Aabn $cfg og indsaet din personlige client secret"
|
||||
}
|
||||
|
||||
# 4. Knowledge-sync-script + mirror
|
||||
Invoke-WebRequest -UseBasicParsing "$raw/sync-bcquality-knowledge.ps1" -OutFile (Join-Path $claude 'sync-bcquality-knowledge.ps1')
|
||||
# 4. Sync-script til maskinen + koer det (bygger mirror + saetter versionsmarkoer)
|
||||
Copy-Item (Join-Path $src 'custom\setup\sync-bcquality-knowledge.ps1') (Join-Path $claude 'sync-bcquality-knowledge.ps1') -Force
|
||||
& powershell -ExecutionPolicy Bypass -File (Join-Path $claude 'sync-bcquality-knowledge.ps1')
|
||||
$done += "bcquality-knowledge mirror synkroniseret"
|
||||
|
||||
# 5. Versionsmarkoer (stable-SHA)
|
||||
try {
|
||||
$sha = (Invoke-RestMethod 'https://api.github.com/repos/Curabis/BCQuality/commits?sha=stable&per_page=1')[0].sha
|
||||
Set-Content -Path (Join-Path $claude '.bcquality-version') -Value $sha -Encoding ascii
|
||||
$done += "versionsmarkoer sat ($($sha.Substring(0,7)))"
|
||||
} catch { $todo += "Kunne ikke saette versionsmarkoer (GitHub API) - foerste session goer det selv" }
|
||||
$done += 'bcquality-knowledge mirror synkroniseret (git-baseret)'
|
||||
|
||||
Write-Host ''
|
||||
Write-Host '=== CURABIS maskin-onboarding faerdig ===' -ForegroundColor Green
|
||||
|
|
@ -78,5 +81,4 @@ if ($todo) {
|
|||
}
|
||||
Write-Host ''
|
||||
Write-Host 'Pr. repo herefter: sig "Opdater CURABIS Standard fra BCQuality" i Claude'
|
||||
Write-Host 'Code - den deployer selv .vscode/find-altool.ps1 og AL MCP-opsaetningen.'
|
||||
Write-Host 'Genstart Claude Code efter foerste onboarding.'
|
||||
Write-Host 'Code - den henter alt fra kanal-klonen. Genstart Claude Code foerst.'
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue