Commit graph

647 commits

Author SHA1 Message Date
3b034d9266 feat(llm-security): v7.7.0 — HTML-rapport for alle 18 skill-kommandoer
Hver /security <cmd> som produserer rapport printer nå en klikkbar
file://-lenke til en self-contained HTML-versjon. Levert over fem
sesjoner; sesjon 5 wirer de 14 resterende skill-filene + slipper
v7.7.0 (versjonsbump + docs).

Sesjon-historikk:
- Sesjon 1 (0dc7ff4) — playground katalog list-view + builder-pane med
  copy-knapp på alle 18 rapporter
- Sesjon 2 (86d6ecd) — playground prosjekt-surface opprydding
  (stub-screen + topbar-splitt)
- Sesjon 3 (fa5fb48) — extract 18 inline parsers + 18 inline renderers
  fra playground til canonical ESM-modul scripts/lib/report-renderers.mjs
  (playground beholder bit-identisk inline-kopi siden ESM import ikke
  fungerer fra file://)
- Sesjon 4 (db80854) — ny zero-dep CLI scripts/render-report.mjs
  (stdin/file/stdout-modus, kebab→camel commandId-routing, ~140 KB
  self-contained HTML med 6 inlined DS-stylesheets + lokal .report-table,
  absolutte file://-paths for Ghostty cmd-click). 4 skills wired:
  scan, audit, posture, deep-scan.
- Sesjon 5 (denne) — 14 resterende skills wired: plugin-audit, mcp-audit,
  mcp-inspect, ide-scan, supply-check, dashboard, pre-deploy, diff,
  watch, registry, clean, harden, threat-model, red-team. Hver skill-fil
  har nå en HTML Report-step som instruerer Claude å skrive markdown
  verbatim, kjøre CLI, og appende klikkbar file://-lenke til respons.

Release-arbeid:
- Versjonsbump v7.6.1 → v7.7.0 i 6 plugin-filer + 2 rot-filer
  (package.json, .claude-plugin/plugin.json, README badge, CLAUDE.md
  header + state-seksjon, docs/version-history.md, plugin Recent versions-
  tabell, rot README plugin-entry, rot CLAUDE.md plugin-katalog)
- CHANGELOG [7.7.0] med full historikk fra sesjon 1-5
- docs/version-history.md v7.7.0-seksjon

Verifisert:
- 18/18 commandIds i CLI gir > 138 KB self-contained HTML
- 1819/1820 tester grønne (pre-compact-scan-perf-flake fyrte under last,
  passerer i isolasjon på 1582 ms — pre-eksisterende, defer til v7.7.x)
- 18/18 skill-filer har HTML Report-step
- Ingen kildefil-treff på 7.6.1 utenfor historiske changelog/version-
  history/README releases-tabell

Ingen scanner- eller hook-atferdsendringer — purely additive surface.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-18 13:12:21 +02:00
db80854830 feat(llm-security): playground v7.6.2-dev — render-report CLI + wire 4 skills (scan, audit, posture, deep-scan) [skip-docs]
- New scripts/render-report.mjs CLI: stdin/file/stdout modes, ESM import
  from ./lib/report-renderers.mjs, kebab→camel renderer-name lookup so
  any of the 18 PARSERS works
- Standalone HTML wrap: inlines 6 DS stylesheets (tokens, base, components,
  tier2, tier3, tier3-supplement) + local .report-table CSS. Skips fonts.css
  → system-ui fallback via tokens.css (~137 KB self-contained vs ~1 MB
  with woff2 bundled)
- 4 skill files wired: commands/{scan,audit,posture,deep-scan}.md — new
  step instructs Claude to Write the markdown report to a temp file,
  invoke the CLI, and print a markdown-formatted file:// link
- Absolute file:// paths in stdout for Ghostty cmd-click compatibility
- Default output: reports/<command>-<YYYYMMDD-HHmmss>.html relative to CWD
- Smoke-tested: stdin→stdout, file→file roundtrip, all 4 commands produce
  valid HTML with DS-aligned page-shell (page__title, verdict-pill-lg,
  risk-meter, key-stats, findings__item, recommendation-card)
- Tests 1820/1820 green (same baseline; pre-compact-scan perf-flake from
  NEXT-SESSION-PROMPT did not fire on retry)
- Playground untouched (2 scripts, 0 parse failures), report-renderers.mjs
  untouched (74 exports, 18 PARSERS, 18 RENDERERS)

Sesjon 4 av 5. v7.7.0 release + 9 remaining skill wirings = sesjon 5.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-18 12:56:03 +02:00
fa5fb48a33 refactor(llm-security): playground v7.6.2-dev — extract 18 renderers til scripts/lib/report-renderers.mjs [skip-docs]
Ny scripts/lib/report-renderers.mjs ESM-modul (3042 linjer, 74 named
exports + PARSERS/RENDERERS routing-maps + KEY_STATS_CONFIG):

- 18 main renderers (renderScan, renderDeepScan, renderPluginAudit,
  renderMcpAudit, renderIdeScan, renderPosture, renderAudit,
  renderDashboard, renderHarden, renderRedTeam, renderMcpInspect,
  renderSupplyCheck, renderPreDeploy, renderDiff, renderWatch,
  renderRegistry, renderClean, renderThreatModel)
- 12 renderer helpers (renderEmptyState, renderFindingsBlock,
  renderRecommendationsList, mapSeverityToCardLevel, renderRiskMeter,
  renderSmallMultiples, renderRadarSvg, renderToxicFlow, renderMatLadder,
  renderSuppressedGroup, renderCodepointReveal, renderTopRisks)
- 3 page-shell helpers (renderPageShell, renderVerdictPill,
  renderKeyStatsGrid)
- 18 parsers + 15 parser helpers (parseTableRow, parseTable, parseSections,
  extractField, parseRiskDashboard, parseFindingsTables, etc.)
- Verdict + key-stats inference (normalizeVerdict, inferVerdict,
  KEY_STATS_CONFIG, inferKeyStats)
- escapeHtml / escapeAttr

Canonical source for sesjon 4 CLI (scripts/render-report.mjs).

playground/llm-security-playground.html beholdes UENDRET (Fallback 2 fra
brief): file:// + ESM import er blokkert i Chrome/Firefox uten flags, så
playground beholder inline-kopi for single-file file:// distribusjon.
Sync-invariant dokumentert i modul-header.

Bit-identisk verifisering: alle 18 renderer-bodies character-for-character
identiske mellom .mjs og playground inline (extract → dedent 4-space →
diff). Smoke-test: parseScan + renderScan/renderPosture/renderAudit
produserer forventet DS-aligned HTML.

Tester: 1819/1820 grønne (samme baseline som sesjon 2; kjent pre-existing
flaky pre-compact-scan perf-test). JS-parse av playground: 0 failures.
2026-05-18 12:42:28 +02:00
d5605a46ca docs(claude-design): avoid self-referencing forbidden-content tokens
CLAUDE.md and README.md previously named the forbidden tokens
literally when describing the validate-plugin.sh assertion (i) and
test-sc3-citations.sh negative grep. The recursive scans then flagged
the documentation itself as a leak. Rewords both descriptions to
describe the policy without using the banned literals.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-18 12:41:32 +02:00
22a197320e chore(claude-design): bump version 0.1.0-pre to 0.1.0 + CHANGELOG
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-18 12:38:58 +02:00
2a398b6297 docs(claude-design): update CLAUDE.md with Scope fence + authoring rules
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-18 12:37:11 +02:00
7c40dc5600 docs(claude-design): rewrite plugin README for v0.1 surface
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-18 12:35:56 +02:00
a6fb3869d9 feat(claude-design): add verify.sh top-level roll-up
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-18 12:34:24 +02:00
9882d416b5 feat(claude-design): add SC2 coverage + SC3 citation tests
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-18 12:33:38 +02:00
3d143275c1 feat(claude-design): add SC1 dogfood-log + skill-triggers tests
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-18 12:32:35 +02:00
3dc0414948 feat(claude-design): add tests/validate-plugin.sh foundation validator
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-18 12:31:17 +02:00
fd04793ee5 feat(claude-design): add .coverage.md preset manifest with evidence-grade labels
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-18 12:29:25 +02:00
4b5e8551b0 feat(claude-design): add frontier-design preset (labelled experimental)
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-18 12:28:06 +02:00
6b10b96077 feat(claude-design): add community-only preset references (one-pagers, wireframes, pitch decks, marketing)
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-18 12:27:02 +02:00
86d6ecdc50 feat(llm-security): playground v7.6.2-dev — prosjekt-surface opprydding + topbar-splitt [skip-docs]
- renderCommandSubCard: collapsed-by-default + click-to-expand uten remount
- renderProjectSurface: stub-screens (Oversikt/Kontekst/Eksport) fjernet, kun Rapporter-tab
- renderTopbar: split-pattern (primær nav venstre / state-IO høyre)
2026-05-18 12:23:57 +02:00
636bcb5824 feat(claude-design): add Anthropic-documented preset references (designs, prototypes, slides)
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-18 12:22:00 +02:00
dc8bc99ee7 feat(claude-design): add 04-handoff-and-scope fence vs Anthropic design plugin
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-18 12:17:58 +02:00
2a851f0e12 feat(claude-design): add 03-iteration-and-session cascade + recovery reference
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-18 12:16:53 +02:00
72336f811b feat(claude-design): add 02-design-md template + brand-to-DESIGN.md extractor
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-18 12:15:11 +02:00
ce715ef087 feat(claude-design): add 01-prompt-fundamentals five-layer stack reference
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-18 12:13:41 +02:00
24aa23f26f feat(claude-design): add 00-what-claude-design-is-and-isnt disambiguation reference
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-18 12:12:02 +02:00
a69f18e64f feat(claude-design): add claude-design-facilitator SKILL.md + .triggers.txt
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-18 12:09:19 +02:00
ac49baaa02 feat(claude-design): register in marketplace + LICENSE + GOVERNANCE scaffolding
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-18 12:06:58 +02:00
f460814fe9 chore: WIP marketplace doc adjustments across plugins
Pre-trekexecute snapshot of in-progress CLAUDE.md/SKILL.md edits and
extracted docs/ files. Captured as one commit so /trekexecute claude-design
can run against a clean working tree.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-18 12:04:02 +02:00
0dc7ff485f feat(llm-security): playground v7.6.2-dev — katalog list-view + builder-pane [skip-docs]
- renderCatalogSurface rewritten to list-view (1 rad per kommando),
  filter-chips (Alle/Rapport/Verktoy + 6 kategori-chips) + sok
- Builder-pane (modal) med live-preview: pipeline-strengen oppdateres
  mens skjema fylles ut. Kopier-knapp er primaer CTA med clipboard API +
  textarea-fallback for file:// (allerede eksisterende).
- Smart prefill fra store.state.shared via 'from: shared' fields i
  renderCommandForm. Pane-state skriver ikke tilbake til shared (scope
  'cat', ingen project-save). Felles-felt markert med 'felles'-badge.
- Forstegangsbesok lander pa home (fjernet onboarding auto-redirect).
  Re-onboard tilgjengelig via topbar.

Sesjon 1 av 5 i v7.7.0-lopet. CSS-additioner: catalog-filter-chips,
catalog-chip, catalog-list, catalog-row, builder-modal.

Tester: 1822/1822 gronne. Static JS-parse OK. Browser-walkthrough
gjenstar — verifiseres manuelt for v7.7.0 release. Docs oppdateres ved
v7.7.0-release i Sesjon 5 (samlet commit).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-18 11:56:44 +02:00
69610d46bd chore: roll up in-progress changes across plugins
- claude-design: scaffold new plugin (plugin.json, CHANGELOG, README)
- llm-security: playground design-system updates (tokens, components,
  tier3 supplement, new tier4 project-view CSS)
- ms-ai-architect: v2 mockup screenshots + local screenshot script
- voyage: annotate.mjs update

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-16 21:02:23 +02:00
6c94a1629f docs: add Communication patterns section to all plugin CLAUDE.md
Standardize named-markdown-link guidance across all plugins so file://
references render as independently clickable links in terminals like
Ghostty (bare file:// URLs only make the first clickable).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-16 21:01:45 +02:00
d8882f5220 feat(ms-ai-architect): v1.15.0 — playground v3 project-view integration
Erstatter v2 project-surface (screen-tabs + category-tabs + per-command paste-cards)
med v3 renderProjectView (sidebar med 17 artifacts + main-area + import-modal overlay).
renderActive() ruter project-surface til renderProjectSurfaceV3() som wrapper
renderProjectView + topbar + app-shell.

V2-surface helt fjernet:
- renderProjectSurface (152 linjer)
- renderCommandSubCard (87 linjer)
- rehydratePasteImports (15 linjer)
- ACTIONS['project-screen'], currentProjectScreen
- 5 v2-CSS-klasser: .project-tabs, .project-tab*, .sub-zone, .paste-import-row, .project-header__*, .command-cards

Zombie-handlers beholdt for test-back-compat:
currentProjectTab, ACTIONS['project-tab'], ACTIONS['parse'],
handlePasteImport, window.__handlePasteImport. Unreachable fra v3 DOM
men nødvendige for test-playground-v3.sh + test-playground-parsers.sh.

2 fingerprint-gap lukket:
- requirements.headers: utvidet med "EU AI Act — Krav" pattern
- license.headers: utvidet med "Lisens-kapabilitetsmatrise" pattern
- KNOWN_GAP_FIXTURES = {} i test-playground-fingerprints.sh

migrateDataVersion utvidet med parserFor (3. arg):
- Demo-state med kun raw_markdown auto-parses til project.artifacts[cid]
- defaultParserFor(cmdId) resolverer PARSERS[archetypeFor(cmdId)]
- 3 bootstrap-callsites oppdatert (cold-load, import, load-demo)

Ship-QA bugfixes funnet via browser-dogfood:
- components-tier4-project-view.css lagt til i <link>-kjeden (var ikke loaded
  -> modal-overlay og two-column layout virket ikke)
- renderImportModal setter data-open="true" (DS-kontrakt for display: flex)

Bundler også sesjon 2-4 deliverables som ikke ble committed tidligere:
- shared/playground-design-system v0.6.0 (Tier 4 project-view CSS + 6 tokens)
- ms-ai-architect/playground/vendor/ re-sync til DS v0.6.0
- tests/test-playground-fingerprints.sh (sesjon 4 NY - 32 PASS)
- tests/test-playground-projectview.sh (sesjon 4 NY - 30 PASS)
- tests/test-playground-actions.sh (sesjon 4 NY - 19 PASS)
- tests/test-playground-migrations.sh utvidet (7 -> 16 PASS)
- tests/run-e2e.sh wirer alle 6 playground-suiter

Stats:
- bash tests/run-e2e.sh --playground: 386 PASS, 0 FAIL, 2 WARN (pre-eks)
- bash tests/run-e2e.sh (full): All E2E suites passed
- bash tests/validate-plugin.sh: 219 PASS

Screenshots regenerert til playground/screenshots/v1.15.0/ (24 PNG-er, 12
surfaces x 2 tema). Nye v3-surfaces: project-overview, project-artifact-*,
project-import-modal (viewport-only), project-search.

Docs oppdatert (3 nivåer): README.md (badge + version history),
CHANGELOG.md, CLAUDE.md (playground-seksjon + valideringstabell),
rot-README.md + rot-CLAUDE.md (marketplace-landingen + plugin-index).

.gitignore: ny pattern *.local.html + *.local.json for sesjon-state-filer.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-16 20:58:51 +02:00
9affdca23e chore(voyage): bump version 5.1.0 → 5.1.1 2026-05-15 16:11:55 +02:00
c1b7bad389 feat(voyage): define high-effort behavior + amend brief Non-Goal/SC1 + coordinator normalization (Decision B)
Wave 6 / Step 10 — autonomy-gated. Operator confirmed: gemini-bridge
substitution for plan-critic doubling AND SC1 amendment to
resolver-invariant encoding (decisions.local.json recorded).

- commands/trekplan.md: gemini-bridge plan-review Pass 2 on
  post-revision plan in high-effort mode (replaces fragile
  plan-critic doubling per risk-assessor).
- commands/trekresearch.md: full swarm + contrarian-researcher +
  gemini-bridge always-on.
- commands/trekreview.md: skip Pass 3 reasonableness + invoke
  coordinator normalization rule.
- commands/trekexecute.md: gates_mode = closed (strict manifest-audit,
  main-merge pauses); flag override still wins.
- agents/review-coordinator.md: Pass 3 high-effort normalization —
  substitute unknown rule_key with PLAN_EXECUTE_DRIFT, preserve
  original in original_rule_key.
- .claude/projects/2026-05-13-trekflow-solo-lane/brief.md (gitignored,
  not committed): Non-Goal amendment locks low/high tiers; SC1
  amendment authorizes resolver-invariant interpretation.
- tests/lib/doc-consistency.test.mjs: +4 pins for the
  "### High-effort behavior (v5.1.1)" heading per command.

Tests: 578 pass, 0 fail, 2 skipped (+4 from 574).

Closes #7 (operator-gated decisions captured + coordinator
normalization landed).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-15 16:07:37 +02:00
07ae1e30e9 test(voyage): refactor 4 downstream command tests to runtime SC4+SC7 (closes #2 #3 #6 #10) 2026-05-14 21:46:11 +02:00
94c696fee6 test(voyage): refactor trekbrief command test to runtime SC1 (closes #1) 2026-05-14 21:44:38 +02:00
1bb6a9d63b fix(voyage): require brief-validator gate in trekresearch + trekexecute (closes #12) 2026-05-14 21:43:45 +02:00
1f056752c1 feat(voyage): wire phase-signal-resolver into 4 downstream commands (closes #9 wiring) 2026-05-14 21:43:16 +02:00
ce162e6c41 feat(voyage): add resolvePhaseModel for brief-signal orchestrator override (closes #9 part A) 2026-05-14 21:38:51 +02:00
48e092d2bc test(voyage): add profile-resolver non-interference tests (closes #4 SC5) 2026-05-14 21:36:57 +02:00
4c85a2c22b fix(voyage): coerce brief_version to string + quote template + update doc pin (closes #8 #11)
v5.1.0 shipped with an unquoted brief_version: 2.1 in trekbrief-template.md.
parseScalar coerced it to Number 2.1, and the sequencing gate guarded on
typeof === 'string', silently bypassing BRIEF_V51_MISSING_SIGNALS.

Three-part atomic fix:
- brief-validator.mjs:87+149 now accepts both string and number forms via
  String(fm.brief_version) coercion.
- trekbrief-template.md quotes the value so new briefs parse as String.
- doc-consistency.test.mjs pins the QUOTED form going forward.

Three regression tests added in brief-validator.test.mjs.
2026-05-14 21:36:10 +02:00
a67b5717c9 test(voyage): add 4 brief fixtures for v5.1.1 runtime scenarios 2026-05-14 21:34:51 +02:00
3ed2d84caa feat(voyage): add phase-signal-resolver helper for v5.1.1 wiring 2026-05-14 21:34:14 +02:00
8f4b79cfc6 docs(voyage): add CHANGELOG entry for v5.1.0 2026-05-13 21:24:49 +02:00
dfe1986f06 chore(voyage): bump version 5.0.3 → 5.1.0 2026-05-13 21:23:48 +02:00
6efcc62b68 docs(voyage): document phase_signals in CLAUDE + README + marketplace + ROADMAP (v5.1) 2026-05-13 21:22:07 +02:00
113296d7de docs(voyage): amend HANDOVER-CONTRACTS + add 5 doc-consistency pins (v5.1) 2026-05-13 21:18:42 +02:00
4504c9a8cf test(voyage): add 5 minimal command test files for v5.1 (sequencing-gate + low-effort) 2026-05-13 21:15:26 +02:00
d3975c441c feat(voyage): wire 4 downstream commands to brief.phase_signals + composition rule (v5.1) 2026-05-13 21:13:51 +02:00
56fed8f305 feat(voyage): add Phase 3.5 per-phase effort dialog to /trekbrief (v5.1) 2026-05-13 21:11:04 +02:00
0655b57930 feat(voyage): bump trekbrief-template to brief_version 2.1 + add phase_signals fixtures 2026-05-13 21:09:57 +02:00
bf68fe6f5f feat(voyage): add phase_signals validation + sequencing gate to brief-validator (v5.1) 2026-05-13 21:08:37 +02:00
8cbb33e1fd docs(voyage): pin operator-UX contract — always emit file:// link + open command
Operator runs Ghostty (also iTerm2, modern Terminal.app) — all support
cmd+click on file:// URLs. Producing commands (/trekbrief, /trekplan,
/trekreview) already emit both forms but the contract was implicit.
This commit makes it explicit:

1. CLAUDE.md gains an "Operator-UX guarantee" paragraph stating both
   forms must always appear in the final report: (a) plain file://
   URL with absolute path (for cmd+click), (b) copy-pasteable
   `open file://` command (for terminals without cmd+click).

2. tests/lib/doc-consistency.test.mjs gains a pin asserting both
   patterns appear in all three producing commands' final report
   blocks. Drift catches at test time.

Non-functional change to the commands themselves — they already
emit both forms (verified at trekbrief.md L510/L519, trekplan.md
L798/L802, trekreview.md L299/L317).

Operator request 2026-05-13: "Noter ned i Voyage at jeg ALLTID får
en slik direkte file:// lenke."
2026-05-13 20:31:58 +02:00
4b5a3a24dd chore(voyage): pin all sub-agents to Opus permanently (operator request)
Flip model: sonnet → model: opus across 20 agent files, 4 prose references
in commands (trekplan, trekresearch), trekendsession command frontmatter,
and CLAUDE.md tables. Aligns CLAUDE.md premium-profile row to actual
premium.yaml content (all-opus, which has been the case since v4.1.0 but
the doc was drift). Companion to VOYAGE_PROFILE=premium env-var (set in
~/.zshenv same day) — env-var governs orchestrator phase model; this
commit governs sub-agent models which are frontmatter-pinned and not
reachable by the profile resolver.

npm test: 516 pass, 0 fail, 2 skipped (unchanged from baseline).

Operator rationale: complete Opus coverage across all Voyage activity,
including the 20 sub-agents that the profile system does not control
(architecture-mapper, task-finder, plan-critic, scope-guardian,
brief-reviewer, code-correctness-reviewer, brief-conformance-reviewer,
review-coordinator, session-decomposer, plus the 6 researcher agents,
plus the 5 codebase-analysis agents).

Cost implication: sub-agent runs ~5x more expensive vs sonnet. Accepted.
2026-05-13 20:20:08 +02:00