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>
73 lines
10 KiB
Markdown
73 lines
10 KiB
Markdown
# 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 0–3)**: 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 C1–C5, ≤8 flags), `language-reviewer` (Norwegian L1–L5, ≤10 flags), `fact-reviewer` (cold re-verification F1–F4 + 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:
|
||
|
||
- [Brief](file:///Users/ktg/.../brief.html)
|
||
- [Research summary](file:///Users/ktg/.../research/summary.md)
|