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>
This commit is contained in:
parent
9df3de795c
commit
b6bb61246b
196 changed files with 164 additions and 138 deletions
|
|
@ -0,0 +1,157 @@
|
|||
# Editorial-Reviewer Fasit Fixture
|
||||
|
||||
The Del 4 production round (Maskinrommet, 2026-05-28) as the gold standard for the
|
||||
`editorial-reviewer` agent. The persona resonance sweep returned 15 flags across
|
||||
three personas (Linjeleder C primær + KI-seksjon B sekundær + IT-direktør A
|
||||
sekundær) and **every persona reported PASS / ready-to-publish**. KTG then found
|
||||
**eight editorial points on first reading** — and only ~25 % of them overlapped
|
||||
anything the personas had touched. The other six were craft/architecture blind
|
||||
spots. Those eight points are the fasit below: a correct `editorial-reviewer` run
|
||||
on Del 4 v5 should surface **comparable flags**, mapped to the two axes with
|
||||
consistent severities.
|
||||
|
||||
This file is a *fasit*, not a test harness. The structural lint lives in
|
||||
`agents/__tests__/editorial-reviewer-fixture.test.mjs`. Whether the agent's live
|
||||
flags actually reproduce these directions is `[GATE]`/`[OPERATØR]` — it is **not**
|
||||
self-certified here.
|
||||
|
||||
> **The jury judges; the writer writes.** Every expected output below is
|
||||
> **direction, not rewritten copy.** A correct agent run hands back flags + a
|
||||
> severity — never edited prose. (`Foreslått retning`, not a new sentence.)
|
||||
|
||||
> **Why this gate exists.** A persona PASS measures *reader response*, not *craft*.
|
||||
> Six of these eight points were invisible to the persona sweep because they are
|
||||
> architecture and prose-craft defects, not resonance defects. The numbers tell
|
||||
> the story: persona overlap ≈ 2/8; editorial-only ≈ 6/8.
|
||||
|
||||
---
|
||||
|
||||
## The two axes (the agent judges on exactly these)
|
||||
|
||||
Both axes are the operationalized mirror of the **Maskinrommet skrivekontrakt
|
||||
§C2** — §C2 is the source of truth; this fixture and the agent's checklist follow
|
||||
it. (§C2 is the craft half of the writing contract; §A — skeleton-before-prose —
|
||||
is codified in `references/longform-quality-rules.md` rule 8.)
|
||||
|
||||
|
||||
- **Prosa-håndverk** (mechanical, grep-able): P1 tankestrek-tetthet · P2 ordrette
|
||||
gjentakelser · P3 postulerte tall uten kilde/hedge · P4 indre selvmotsigelse ·
|
||||
P5 versal-tic.
|
||||
- **Narrativ-arkitektur** (evaluative): A1 konkret instansiering · A2 teori-anker
|
||||
for hypoteser · A3 serietittel-symmetri · A4 like-brukbar handling per adressat ·
|
||||
A5 konklusjon ikke overlastet.
|
||||
|
||||
## Severity (every flag carries exactly one)
|
||||
|
||||
- **BLOCK** — misrepresents the piece or loses the takeaway.
|
||||
- **REWORK** — a real craft/architecture weakness, not load-bearing-fatal.
|
||||
- **NICE** — cheap polish, fold in if convenient.
|
||||
|
||||
---
|
||||
|
||||
## The eight Del 4 editorial points (fasit)
|
||||
|
||||
Each case states the point KTG raised, the axis it belongs to, the expected
|
||||
severity, and the direction a correct agent run returns. The persona-overlap
|
||||
column records whether the persona sweep had already (partially) touched it —
|
||||
the whole reason the gate is needed is the rows marked **blindsone**.
|
||||
|
||||
### Case 1 — manglende konkret eksempel (abstract figure never instantiated)
|
||||
|
||||
- **Axis:** A1 (arkitektur) · **Severity:** REWORK
|
||||
- **Persona overlap:** delvis (KI-seksjon B brushed it) — *not* a pure blind spot.
|
||||
- **Fasit / direction:** An abstract figure carries the section but never lands on
|
||||
one concrete case the reader can picture. Direction: instantiate with a single
|
||||
verifiable (preferably Norwegian) case — do not list several. The agent flags
|
||||
the *absence of instantiation*; it does not supply the case.
|
||||
|
||||
### Case 2 — postulert tall uten kilde eller hedge (postulated number)
|
||||
|
||||
- **Axis:** P3 (prosa) · **Severity:** REWORK
|
||||
- **Persona overlap:** delvis (IT-direktør A brushed it).
|
||||
- **Fasit / direction:** A specific figure is stated as fact with neither an inline
|
||||
source marker nor a hedge. This is distinct from a fact-check finding — Step 5
|
||||
verifies numbers that *have* a provenance; here the provenance is simply
|
||||
**absent**. Direction: source it or hedge it ("anslagsvis"); else cut.
|
||||
|
||||
### Case 3 — manglende SDT-anker for tillit-effekt (unanchored hypothesis) — BLINDSONE
|
||||
|
||||
- **Axis:** A2 (arkitektur) · **Severity:** BLOCK
|
||||
- **Persona overlap:** none — pure blind spot.
|
||||
- **Fasit / direction:** A psychological hypothesis about a trust effect is asserted
|
||||
as if established, with no named theory anchor (e.g. Self-Determination Theory)
|
||||
and no explicit hedge. A hypothesis dressed as a finding is an architecture
|
||||
defect. Direction: anchor in a named model OR mark it explicitly as hypothesis.
|
||||
|
||||
### Case 4 — brutt serietittel-kobling (broken series-title symmetry) — BLINDSONE
|
||||
|
||||
- **Axis:** A3 (arkitektur) · **Severity:** REWORK
|
||||
- **Persona overlap:** none — pure blind spot.
|
||||
- **Fasit / direction:** The part does not bind back to the series premise / its own
|
||||
title — it floats free of the whole. Direction: tie the part's argument back to
|
||||
the series title so the reader feels the part-of-a-whole. (N/A only for a
|
||||
standalone edition; Del 4 is part of a series, so it applies.)
|
||||
|
||||
### Case 5 — manglende småbedrifts-tommelfingerregel (stranded addressee) — BLINDSONE
|
||||
|
||||
- **Axis:** A4 (arkitektur) · **Severity:** BLOCK
|
||||
- **Persona overlap:** none — pure blind spot.
|
||||
- **Fasit / direction:** The text addresses more than one reader but the actionable
|
||||
takeaway only serves one; the small-business reader leaves with nothing they can
|
||||
do. Direction: add a small-business rule of thumb so each addressee gets an
|
||||
equally-usable action. (Stranding an addressee = BLOCK: that reader has no
|
||||
takeaway at all.)
|
||||
|
||||
### Case 6 — ordrette gjentakelser (verbatim repetition) — BLINDSONE
|
||||
|
||||
- **Axis:** P2 (prosa) · **Severity:** REWORK
|
||||
- **Persona overlap:** none — pure blind spot.
|
||||
- **Fasit / direction:** A distinctive phrase recurs more than twice. Direction:
|
||||
vary or cut the repeats; keep at most the one load-bearing use. `grep`-findable.
|
||||
|
||||
### Case 7 — tankestrek-tetthet (em-dash over-density) — BLINDSONE
|
||||
|
||||
- **Axis:** P1 (prosa) · **Severity:** REWORK
|
||||
- **Persona overlap:** none — pure blind spot.
|
||||
- **Fasit / direction:** Em-dashes run above ~1 per 50 words (clusters within
|
||||
paragraphs). Direction: thin them to the local target; the em-dash is a tool,
|
||||
not a tic. Report the count. `grep`-findable.
|
||||
|
||||
### Case 8 — indre selvmotsigelse (internal contradiction) — BLINDSONE
|
||||
|
||||
- **Axis:** P4 (prosa) · **Severity:** BLOCK
|
||||
- **Persona overlap:** none — pure blind spot.
|
||||
- **Fasit / direction:** Two passages cannot both be true (an assertion the
|
||||
conclusion silently reverses). Direction: name the contradiction and resolve one
|
||||
side — a contradiction misrepresents the piece, so BLOCK.
|
||||
|
||||
---
|
||||
|
||||
## Expected aggregate (what a correct run looks like)
|
||||
|
||||
- **Total flags:** 8 (well within the ≤10 cap — no suppression needed).
|
||||
- **By axis:** prosa-håndverk = 4 (P1, P2, P3, P4) · narrativ-arkitektur = 4 (A1,
|
||||
A2, A3, A4). A5 (overloaded conclusion) and P5 (versal-tic) did **not** flag on
|
||||
Del 4 v5 — record them clean.
|
||||
- **By severity:** BLOCK = 3 (A2, A4, P4) · REWORK = 5 (A1, P3, A3, P2, P1) ·
|
||||
NICE = 0.
|
||||
- **Persona overlap:** 2/8 (Cases 1 + 2, both delvis) · editorial-only blind
|
||||
spots: 6/8 (Cases 3–8). This 6/8 is the quantified case for the gate.
|
||||
|
||||
A run that reproduces ~these eight directions, on ~these axes, with ~these
|
||||
severities, is **comparable** to KTG's actual editorial round — the bar
|
||||
acceptance-criterion #8 sets. Exact wording is the editor's; the agent returns
|
||||
direction, never copy.
|
||||
|
||||
## Calibration boundary
|
||||
|
||||
Whether the agent's live flags truly match this fasit is judged by the operator
|
||||
(`[OPERATØR]`), not self-certified here. This fixture is the calibration target,
|
||||
the same way `persona-reviewer-cases.md` and `fact-checker-cases.md` are fasits
|
||||
for their agents.
|
||||
|
||||
> **Live-run note.** A live run on Del 4 v5 requires (a) a Claude Code session
|
||||
> reload — a freshly added agent is not invokable until the plugin agent set is
|
||||
> rebuilt at session start — and (b) read access to the Del 4 v5 draft in the
|
||||
> Maskinrommet series folder. Until both hold, this fixture is the gold-standard
|
||||
> of record.
|
||||
|
|
@ -0,0 +1,52 @@
|
|||
# Fact-Checker Fasit Fixture
|
||||
|
||||
Three reference claims with known ground truth, used to sanity-check the
|
||||
`fact-checker` agent. Each case states the claim, the **fasit** (the correct
|
||||
answer + why), and the expected risk verdict.
|
||||
|
||||
- 🟢 = verified true against a primary/credible source
|
||||
- 🔴 = contradicted by evidence (false), or a high-risk claim asserted without support
|
||||
- 🟡 = unverifiable from available sources — flagged, never guessed
|
||||
|
||||
This file is a *fasit*, not a test harness. The structural lint lives in
|
||||
`agents/__tests__/fact-checker-fixture.test.mjs`. Whether the agent's live
|
||||
output actually reproduces these verdicts is `[GATE]`/`[OPERATØR]` — it is
|
||||
not self-certified.
|
||||
|
||||
Each case block below carries exactly one verdict emoji (in its **Verdict**
|
||||
field); the prose deliberately avoids emoji so the structural lint can read a
|
||||
single, unambiguous verdict per case.
|
||||
|
||||
---
|
||||
|
||||
## Case 1 — verifiable true
|
||||
|
||||
- **Claim:** The EU AI Act entered into force on 1 August 2024.
|
||||
- **Verdict:** 🟢
|
||||
- **Fasit:** True. Regulation (EU) 2024/1689 was published in the Official
|
||||
Journal on 12 July 2024 and entered into force 20 days later, on
|
||||
1 August 2024. This is confirmable against the primary source (EUR-Lex)
|
||||
and the European Commission's own communications. A correct agent run
|
||||
returns the verified verdict with a primary-source citation.
|
||||
|
||||
## Case 2 — verifiable false
|
||||
|
||||
- **Claim:** GPT-4 was developed and released by Anthropic.
|
||||
- **Verdict:** 🔴
|
||||
- **Fasit:** False. GPT-4 was released by OpenAI (March 2023). Anthropic
|
||||
develops the Claude model family. The claim is contradicted by both
|
||||
vendors' primary documentation. A correct agent run returns the high-risk
|
||||
verdict and names the contradicting source — it must not soften a
|
||||
contradicted claim to the unverified tier.
|
||||
|
||||
## Case 3 — unverifiable
|
||||
|
||||
- **Claim:** A Norwegian public-sector agency cut its case-handling time by
|
||||
exactly 37% in Q3 2025 after deploying an internal AI assistant.
|
||||
- **Verdict:** 🟡
|
||||
- **Fasit:** Unverifiable. No named agency, no published report, and no
|
||||
primary source exists for this precise figure; an internal operational
|
||||
metric of this kind is not independently confirmable from open sources.
|
||||
A correct agent run returns the unverified verdict and states explicitly
|
||||
that the claim cannot be verified — it must not fill the gap by inventing
|
||||
a plausible source or promoting the claim to the verified tier.
|
||||
|
|
@ -0,0 +1,106 @@
|
|||
# Persona-Reviewer Fasit Fixture
|
||||
|
||||
One reader persona, one sample draft, the six judging axes, and the two review
|
||||
modes — used to sanity-check the `persona-reviewer` agent. This is a *fasit*,
|
||||
not a test harness. The structural lint lives in
|
||||
`agents/__tests__/persona-reviewer-fixture.test.mjs`. Whether the agent's live
|
||||
flags actually match the directions below is `[GATE]`/`[OPERATØR]` — it is not
|
||||
self-certified here.
|
||||
|
||||
**The jury judges; the editor writes.** Every expected output in this fixture is
|
||||
**direction, not rewritten copy**. A correct agent run hands back flags and a
|
||||
verdict — never edited text.
|
||||
|
||||
---
|
||||
|
||||
## Persona under review (primær)
|
||||
|
||||
Drawn from `config/personas.template.md` — the primær Linjeleder. Field keys are
|
||||
lowercase to match the library contract.
|
||||
|
||||
- **rolle** — Mellomleder med fag- og personalansvar i offentlig virksomhet;
|
||||
skal beslutte om og hvordan AI tas i bruk i egen enhet, uten dyp teknisk
|
||||
bakgrunn.
|
||||
- **avkobler** — Teknisk dypdykk uten «hva betyr dette for meg og mine»;
|
||||
frykt-retorikk; abstrakt policy; språk som forutsetter at hen kan koden.
|
||||
- **overbeviser** — Konkrete eksempler fra arbeidshverdagen, et klart ansvars- og
|
||||
dømmekraftsbilde, og en leder-takeaway hen kan handle på allerede i morgen.
|
||||
- **ekspertise** — Lav-til-middels teknisk; høy på ledelse og forvaltning.
|
||||
Trenger oversettelse, ikke nedlatenhet.
|
||||
- **sjargong** — Lav toleranse for teknisk sjargong; setter pris på presise,
|
||||
hverdagsnære formuleringer.
|
||||
|
||||
> Primær trumfer: a primær NO is not accepted — the text is revised until this
|
||||
> reader reaches a clean JA. A sekundær NO from a role or expertise ceiling is a
|
||||
> SIGNAL the gate works, not a defect.
|
||||
|
||||
---
|
||||
|
||||
## Sample-tekst
|
||||
|
||||
The draft excerpt this persona reads, read-only. Deliberately mixed: a workable
|
||||
human angle ("you don't outsource judgment") buried under one wall of jargon —
|
||||
exactly the case where the jury should flag direction without touching the copy.
|
||||
|
||||
> Transformatorarkitekturen vår utnytter selvoppmerksomhets-mekanismer over en
|
||||
> 175-milliarders parametermodell for å maksimere inferens-gjennomstrømning på
|
||||
> tvers av distribuerte GPU-clustere. Men det egentlige poenget er enklere: en
|
||||
> språkmodell tar ikke beslutningen for deg. Den foreslår — du svarer for
|
||||
> resultatet. Dømmekraften kan ikke settes ut. Spørsmålet er ikke om verktøyet
|
||||
> er smart nok, men om du fortsatt eier valget når det teller.
|
||||
|
||||
---
|
||||
|
||||
## The six axes
|
||||
|
||||
The persona-reviewer judges the sample on exactly six axes and returns **at most
|
||||
five flags** as direction (the sixth that passes cleanest is simply not flagged):
|
||||
|
||||
1. **Krok** — does the hook hold for THIS reader in the first two lines? Here:
|
||||
IKKE — the opening jargon wall ("transformatorarkitektur… inferens-
|
||||
gjennomstrømning") hits `avkobler` head-on; the linjeleder stops reading
|
||||
before the real point.
|
||||
2. **Resonans** — does the central point land for this reader? DELVIS — the
|
||||
"judgment can't be outsourced" core is exactly their concern, but it arrives
|
||||
too late to land.
|
||||
3. **Tone** — right for this reader (no condescension, no fear-rhetoric)? LØST —
|
||||
tone is respectful and non-alarmist once past the opening.
|
||||
4. **Troverdighet** — does the reader believe it? DELVIS — the closing claim is
|
||||
credible but abstract; no lived example from a leader's workday to anchor it.
|
||||
5. **Leder-takeaway** — one concrete thing this reader can act on tomorrow?
|
||||
IKKE — there is an insight but no action the linjeleder can take in their
|
||||
own unit.
|
||||
6. **Lengde/driv** — does it keep moving or sag? DELVIS — the front half drags
|
||||
under the jargon; the back half drives well.
|
||||
|
||||
Each flag is **direction**, not a rewrite: "the hook hits `avkobler` — open on
|
||||
the decision the leader owns" is correct; supplying the new opening line is not.
|
||||
|
||||
---
|
||||
|
||||
## The two modes
|
||||
|
||||
Both modes run the same persona but differ in scope and output.
|
||||
|
||||
### Resonans-modus (before lock)
|
||||
|
||||
Runs at the newsletter pipeline's pre-lock resonance sweep. Judges all six axes
|
||||
and returns ≤5 flags as direction, each tracked **LØST / DELVIS / IKKE**. The
|
||||
primær must reach a clean JA before the draft is locked. For this sample, the
|
||||
primær verdict is **NEI** (Krok + Leder-takeaway both IKKE) → REWORK, with the
|
||||
two IKKE flags as the priority directions.
|
||||
|
||||
### Konverter-modus (after lock)
|
||||
|
||||
Runs at the post-lock conversion sweep. Judges the **hook only**, binary:
|
||||
«would YOU click?» **JA / NEI**. No axis scoring, no copy — just the click
|
||||
verdict and a single reason. For this sample's current hook the verdict is
|
||||
**NEI** — "I'd scroll past; the first line is machinery, not me."
|
||||
|
||||
---
|
||||
|
||||
## Convergence loop
|
||||
|
||||
Re-run per persona until the primær returns a clean JA. Each flag is re-judged
|
||||
LØST / DELVIS / IKKE against the editor's revision. The jury never writes the
|
||||
fix — it only re-judges whether the revision now lands.
|
||||
Loading…
Add table
Add a link
Reference in a new issue