ktg-plugin-marketplace/CLAUDE.md
Kjell Tore Guttormsen baca30feb1 feat(linkedin-studio): S14 — journey layer (create/measure front-doors + 5-journey router), v4.1.0
14a's cold command-rationalization found ZERO redundancy across the 27 commands
(no defensible merge/cut), so the operator reframed S14 from "merge/cut" to
"add a journey layer over the kept atomics".

- Add /linkedin:create + /linkedin:measure — delegate-only guided front-doors
  (Read/Glob/AskUserQuestion only; route to the command that owns the work)
- Re-tier commands/linkedin.md into 5 journeys (Start/Create/Engage/Measure/Grow);
  onboarding/strategy elevated as Start/Grow front-doors; Engage = calendar+firsthour tier
- 14a honesty nits: router now lists firsthour; calendar cross-links to firsthour;
  competitive confirmed UNGATED (the claimed 1K-gating inconsistency was unfounded)
- Lockstep: EXPECT_COMMANDS 27->29, v4.0.0->4.1.0 across plugin.json / README badges /
  plugin+root CLAUDE.md / README / CHANGELOG; new README commands-badge lint guard
- 14a deliverable corrected: multiplatform entry added (26/27 -> 27/27), header counts,
  competitive nit withdrawn
- Independent /trekreview (2 Opus reviewers) raised 3 MAJORs (stale commands badge,
  router competitive self-contradiction, STATE.md count) — ALL remediated in-session;
  verdict ALLOW

Gate: test-runner.sh 74/0/0; node --test 98/98; commands=29; v4.1.0 consistent.
Additive/minor — no command removed/renamed/behavior-changed; reload registers create+measure.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-30 21:27:06 +02:00

10 KiB
Raw Blame History

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-studio/       v4.1.0  — Full-spectrum LinkedIn content engine (short-form feed + long-form newsletter). **v4.0.0 is an audit-remediation release (Voyage Phase 03)**: a critical self-review found overclaiming, dormant capability, and structural rot, so every user-facing claim is made honest or removed, **all 11 orphaned agents are wired** (no deletions → 19 agents), a **`/linkedin:firsthour`** command is added (→ 27 commands) alongside a short-form de-AI gate + a video quality gate, `post-feedback-monitor` is promoted to Opus, the newsletter-distribution / profile-SEO / outreach surfaces are made honest, the **algorithm signals are reconciled to one sourced statement** (no model name or date; `references/algorithm-signals-reference.md` is the single source of truth), the analytics fresh-clone crash is fixed, the voice-profile leak is closed (placeholder + sentinel + gitignore), and the structure lint is rebuilt with version/count/stat-consistency guards. Breaking — reinstall/reload required for the newly-wired agents; consolidates the v3.0.0 identity break. **v3.1.0 added a cold adversarial review package (Endring 9)** to the long-form pipeline: three new headless archetypes (all Opus) — `content-reviewer` (argument integrity C1C5, ≤8 flags), `language-reviewer` (Norwegian L1L5, ≤10 flags), `fact-reviewer` (cold re-verification F1F4 + pivot-risk, web search) — that re-review a frozen draft with NO drafting-session context (each refuses drafting framing as "context pollution"); new **Step 6.5 (headless-review)** in `/linkedin:newsletter` after the persona sweep, before lock (the independence layer the in-session gates can't be); standalone **`/linkedin:headless-review`** command (run in a fresh session for max isolation); **`/linkedin:pivot`** command + pivot-detection gate (>20 % word-count / >2 new sections re-opens cleared gates before lock); **per-artifact personas** (`articles.NN.personas`). Motivated by Del 4 (Security Champions pivot): the in-session editor + persona sweep shared the drafting session's framing-bias, so the shipped version was never independently re-reviewed. Pipeline 15→16 phases; 24→26 commands; 16→19 agents; additive `personas`/`pivots`/`headlessReview` state; backward-compatible, reload required for the new agents. **v3.0.0 renamed from `linkedin-thought-leadership`** (LinkedIn Thought Leadership → LinkedIn Studio): slug + agent namespace (`linkedin-studio:<agent>`) + runtime state path (`~/.claude/linkedin-studio.local.md`) all change; the `/linkedin:*` commands are unchanged (frontmatter-namespaced, slug-independent). Breaking — reinstall required; functionality byte-identical to v2.4.0. 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). **v4.1.0 (Voyage S14)** adds a journey layer over the command surface: 14a's cold command-rationalization found zero redundancy (no merges/cuts), so two new guided front-doors (`/linkedin:create`, `/linkedin:measure`) are added and the router is re-tiered into five journeys (Start · Create · Engage · Measure · Grow) with `onboarding`/`strategy` elevated as the Start/Grow front-doors and the 27 atomic commands kept as the execution tier (27→29 commands; additive/minor, reload registers the two new commands).
  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)

Rot: STATE.md er state-of-play, injisert ved sesjonsstart av ~/.claude/hooks/session-start.sh (nærmeste STATE.md fra cwd opp til rot) og overskrevet ved sesjonsslutt. Varige fakta hører i denne CLAUDE.md / GOVERNANCE.md; git-historikk er langtidsloggen.

Per-plugin (legacy, under utfasing): noen plugins/<navn>/ har fortsatt egne REMEMBER.md / TODO.md / ROADMAP.md. Disse konsolideres til plugin-egen STATE.md + git etter samme mønster som rot, ett plugin om gangen.

Arbeidsflyt

  1. cd til riktig plugin-mappe
  2. Les pluginets CLAUDE.md + injisert STATE.md for kontekst
  3. Jobb innenfor scope
  4. Overskriv STATE.md ved avslutning, commit endringer

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: