ktg-plugin-marketplace/CLAUDE.md
Kjell Tore Guttormsen b6bb61246b refactor(linkedin)!: rename plugin linkedin-thought-leadership → linkedin-studio (v3.0.0)
BREAKING CHANGE: the marketplace slug, the agent namespace
(linkedin-studio:<agent>), and the runtime state-file path
(~/.claude/linkedin-studio.local.md) all change. Reinstall required;
existing state migrated in place (post metrics, streak, history preserved).
The /linkedin:* commands are unchanged — the command namespace is set
per-command in frontmatter and was always independent of the plugin slug.
Functionality is byte-identical to v2.4.0; this release is pure identity.

- dir + manifests: plugins/linkedin-studio + plugin.json + root marketplace.json
- agent namespace updated in commands/newsletter.md (only functional invoker)
- state path updated in 4 hook scripts + topic-rotation prompt + state template
- catch-all skill dir renamed skills/linkedin-studio (5 functional skills unchanged)
- docs + version bump to 3.0.0 across README badge, CHANGELOG, root README/CLAUDE.md
- historical records (CHANGELOG past entries, docs/ build artifacts,
  config-audit v5.0.0 snapshots) intentionally retain the old slug

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

7.3 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-studio/       v3.0.0  — Full-spectrum LinkedIn content engine (short-form feed + long-form newsletter). **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).
  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: