ktg-plugin-marketplace/CLAUDE.md
Kjell Tore Guttormsen 9df3de795c feat(linkedin): v2.4.0 — editorial-reviewer agent + Step 5.5 craft gate in /linkedin:newsletter
Endring 8 from the change spec (Del 4 production, Maskinrommet). The persona
resonance sweep measures reader-response (does it land?); nothing measured prose
craft or narrative architecture (is it well-made?). In Del 4 every persona
reported PASS, yet the editor found 8 fresh editorial points on first reading —
~6/8 craft/architecture blind spots no agent could see. v2.4.0 adds the missing
editor role.

New Step 5.5 (editorial-review) runs between fact-check (Step 5) and the persona
sweep (Step 6): a new editorial-reviewer agent (Opus) judges two axes —
prosa-handverk (em-dash density, verbatim repetition, postulated numbers,
contradictions, versal-tic) + narrativ-arkitektur (concrete instantiation,
theory-anchored hypotheses, series-title symmetry, equal action per addressee,
un-overloaded conclusion). Returns <=10 flags as direction (never copy), each
BLOCK/REWORK/NICE, operator-gated via SendUserFile. Runs before the persona
sweep so the personas measure resonance instead of stumbling on craft noise.
Mirrors the Maskinrommet writing-contract section C2 (bidirectional mirror rule).

- agents/editorial-reviewer.md (NEW, Opus, orange) + fasit fixture
  (editorial-reviewer-cases.md: Del 4 v5 gold standard, 8 points -> 2 axes +
  severities, 3 BLOCK / 5 REWORK, 6/8 blind spots) + structural lint (7 tests).
- Step 5.5 wired into commands/newsletter.md; pipeline 14 -> 15 phases.
- editorial-review phase + additive editorialReview state in
  config/edition-state.template.json; resumption: factcheck-sweep -> Step 5.5,
  editorial-review -> Step 6 (spec said fact-check; canonical key is
  factcheck-sweep).
- persona-reviewer contract unchanged: editorial-reviewer is supplementary
  (one measures craft, one measures response).
- All doc levels synced (plugin + root README/CLAUDE.md, CHANGELOG, plugin.json
  2.3.0 -> 2.4.0; agents 15 -> 16). 94 tests green.

Acceptance-criterion #8 (live run on Del 4 v5) delivered as fasit fixture:
a live run needs a session reload (new agent not invokable until then) + read
access to the Del 4 v5 draft in Maskinrommet.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-05-29 06:17:50 +02:00

6.9 KiB

ktg-plugin-marketplace

Open-source Claude Code plugin marketplace. Solo project by Kjell Tore Guttormsen.

Repo-struktur

plugins/
  ai-psychosis/          v1.0.0  — Interaction awareness (sycophancy, reinforcement loops)
  config-audit/          v3.1.0  — Configuration intelligence (health, opportunities, auto-fix, whats-active)
  graceful-handoff/      v2.1.0  — Auto-trigger handoff via Stop hook (skill + JSON pipeline + 4-step model-aware context resolution)
  linkedin-thought-leadership/  v2.4.0  — Full-spectrum LinkedIn content engine (short-form feed + long-form newsletter). v2.0.0 consolidated surface (27→24 commands, 16→14 agents) + added `/linkedin:newsletter` orchestrator with fact-check + persona-sweep gates BEFORE lock. v2.1.0 added skeleton-gate BEFORE prose (Step 2.5 + Step 3a) + third `persona-reviewer` mode (`skjelett`); pipeline 11→13 phases. v2.2.0 hardened the longform gates (2nd production run): blocking persona hard-fails, fact-check post-cutoff web-search mandate + orthogonal-to-narrative rule, new `voice-scrubber` agent (Opus, de-AI + Norwegian-chronicle voice; gold standard = approved Norwegian editions NOT English post corpus), render+annotate operator gates (2.5/3a), edition-state reconciled with STATE.md (`edition-HANDOVER.md` deleted); agents 14→15. v2.3.0 added **Step 7.5 (visual-assets)** to `/linkedin:newsletter` — cover (+ inline figures) or carousel deck, generated (default mcp-image; external `cover-raw.png` accepted) + operator-gated via `SendUserFile` BEFORE lock so `build-linkedin.mjs` picks up `cover.png` without a post-lock re-render; pipeline 13→14 phases, new `config/image-credit-caption.template.md`, additive `visualAssets` state. v2.4.0 adds **Step 5.5 (editorial-review)** to `/linkedin:newsletter` — new `editorial-reviewer` agent (Opus) judging craft (prosa-håndverk + narrativ-arkitektur), not reader-response, ≤10 flags BLOCK/REWORK/NICE as direction, operator-gated via `SendUserFile` between fact-check (5) and persona-sweep (6), mirroring Maskinrommet skrivekontrakt §C2; motivated by Del 4 (every persona PASS yet 8 fresh editor points, ~6/8 craft/architecture blind spots). Pipeline 14→15 phases; agents 15→16; additive `editorialReview` state; doc/orchestration-only (new agent + fasit fixture + lint test the only new files). Commands unchanged (24); agents 16. Render pipeline self-hosted (OFL-1.1 fonts).
  llm-security/          v7.7.2  — Security scanning, auditing, threat modeling. HTML report output for all 18 skill commands (render-report CLI + canonical ESM module mirrored bit-identical into the playground). v7.7.2 translated the remaining Norwegian surface text in the playground UI, the canonical renderer, the agent prompts, and the README/CLAUDE.md state sections to English. v7.7.1 stripped the playground to the catalog as the only routable surface.
  ms-ai-architect/       v1.15.0 — Microsoft AI architecture (Cosmo Skyberg persona) + manual KB-refresh slash command + v3 project-view (sidebar med 17 artifacts + main + import-modal overlay, v2-surface fjernet i v1.15.0)
  okr/                   v1.0.0  — OKR guidance for Norwegian public sector
  voyage/                v5.0.3  — Brief, research, plan, execute, review, continue. Contract-driven Claude Code pipeline (six-command universal pipeline + multi-session resumption + --gates autonomy chain). /trekbrief, /trekplan, and /trekreview each end by running scripts/annotate.mjs against the just-written .md and printing the file:// link to a self-contained operator-annotation HTML modelled on claude-code-100x/build-site.js: pencil-toggle annotation mode, select text or click any element, choose intent (Fiks/Endre/Spørsmål), comment, sidebar groups by section with delete + Copy Prompt, localStorage persistence per artifact path. v5.0.0 removed the v4.2/v4.3 bespoke playground + /trekrevise + Handover 8; v5.0.1 pointed at /playground document-critique (wrong direction); v5.0.2 was operator-led but too thin; v5.0.3 matches the reference the operator pointed at from day one.

shared/
  playground-design-system/  v0.6.0 — Aksel/Digdir-aligned CSS design system + JSON schemas + self-hosted Inter/JetBrains Mono/Source Serif 4 fonts. Tier 1 base + Tier 2 + Tier 3 wave 1+2 (20 components) + Tier 4 project-view-arketype (v0.6.0 — sidebar + main + import-modal overlay). Consumed by ms-ai-architect, okr, llm-security, voyage, config-audit.
  playground-examples/             — Reference scenarios (ROS-Lier, OKR-Bærum, security-Direktorat) + showcase landing + 12 isolated Tier 3 wave 2 component demos under components/

Hvert plugin er selvstendig med egen CLAUDE.md, README, hooks, agents og commands. shared/ inneholder marketplace-nivå infrastruktur som flere plugins bygger på.

Konvensjoner

  • Språk: Norsk dialog, engelsk kode/docs
  • Commits: Conventional Commits — type(scope): description
  • Git: Forgejo (git.fromaitochitta.com/open/ktg-plugin-marketplace). Aldri GitHub.
  • Hooks: Alltid Node.js (.mjs), aldri bash. Cross-platform.
  • Avhengigheter: Null npm dependencies i hooks/scannere. node:test for tester.
  • Bidrag: Issues velkommen som signaler. PRs ikke akseptert. Fork-and-own er anbefalt adopsjonsmodell — se GOVERNANCE.md.
  • Lisens: MIT, alle plugins
  • Docs ved endring (OBLIGATORISK): Enhver feature-endring som pusher til Forgejo MÅ oppdatere alle tre doc-nivåer i SAMME commit eller umiddelbart etter:
    1. Plugin README.md — detaljert dokumentasjon av endringen
    2. Plugin CLAUDE.md — arkitektur/oversikt
    3. Rot-README.md — marketplace-landingssiden (git.fromaitochitta.com/open/ktg-plugin-marketplace)
  • Playground-oppdatering: Ved endring av plugin playground HTML eller delt design-system, følg prosedyren i shared/PLAYGROUND-MAINTENANCE.md (4 spor: HTML-endring, DS-endring, screenshots, release).

Sesjonsfiler (lokale, gitignored)

Alle plugins + root har:

  • REMEMBER.md — Sesjonsstatus, sist gjort, viktige beslutninger
  • TODO.md — Nærliggende oppgaver (1-4 uker)
  • ROADMAP.md — Langsiktig retning (kvartal/halvår)

Disse trackes IKKE i git. Oppdater ved sesjonsslutt.

Arbeidsflyt

  1. cd til riktig plugin-mappe
  2. Les pluginets CLAUDE.md for kontekst
  3. Les REMEMBER.md og TODO.md for sesjonsstatus
  4. Jobb innenfor scope
  5. Oppdater REMEMBER.md ved avslutning

Communication patterns

Linking to local files

When pointing to local files in responses, always use markdown link syntax with a descriptive name:

  • Use [Human-friendly name](file:///absolute/path) — never bare file:///... URLs or autolinks <file://...>.
  • Always use absolute paths. Never ~/ or relative paths.
  • For multiple files, render as a bullet list of named markdown links.

Why: bare file:// URLs only render the first as clickable across multiple lines. Named markdown links make each entry independently clickable and look cleaner.

Example: