linkedin-studio/config/language-rules.template.md
Kjell Tore Guttormsen f0532dce3f feat(linkedin-studio): N14 — foldIns-fangst + Step 11 retro + background-headless + språkregel-akkumulering [skip-docs]
Lukker sløyfen pluginen manglet: en rettelse operatøren gjør i utgave N
håndheves i N+1 i stedet for å bli gjenoppdaget. Maskineriet fantes
(foldIns-skjema + promote→ratify siden fix #1); det som manglet var wiring —
ingenting skrev til køen og ingen fase tømte den.

- Fangst (A2-F7): Steps 2.5/3a/5.5/6.5 appender rettelsen ordrett med trigger,
  decision "pending". Ubetinget og bevisst dum — å avgjøre ved fangst om noe
  "fortjener" en regel er nettopp slik køen holder seg tom og sløyfen dør.
- Step 11 retro (A2-F8), ≤5 min ETTER scheduling: promoter køen med eksplisitt
  JA/NEI (mekanisk → atomisk contract-gate-promotering, teller kun med grønn
  --ratify; dømmekraft → operatørens språkregelfil; NEI → rejected, beholdes),
  effort-oppsummering fra MÅLT phaseLog (aldri re-estimert), og ÉN
  friksjons-spørring som besvares tilbake til operatøren. Faser 18 → 19;
  resumption-tabellen ruter scheduling → Step 11, retro → complete.
- articles.NN.retro: additiv-valgfri (default null), schemaVersion forblir 1.
- Background-headless (A2-F6): --background kjører pakken i en bakgrunnsagent
  som skriver rapporten til disk; drafting-sesjonen leser fila. Samme isolasjon
  som fersk sesjon, uten copy-paste-sømmen. Inline fan-out = eksplisitt fallback.
- Språkregler (C-10): ${DATA}/language-rules/<lang>.md (opt-in, template).
  Leses TO ganger — av language-reviewer (fanger) og av Step 4 (forebygger).
  Shippet banliste forblir baseline; brukerfila utvider.
- references/fold-in-loop.md (A2-F9): loopen dokumentert domene-generelt in-tree,
  så en adopter uten ekstern skrivekontrakt har hele sløyfen. Refs 28 → 29.

Suiter (alle grønne): test-runner 197 → 217 (Section 16u: 18 ubetingede greps +
non-vacuity self-test; fase-sveip 16 → 17 faser; floor 179 → 198) · hooks 174 ·
trends 300 · brain 134 · editions 72 · specifics-bank 45 · contract-gate 33 ·
tests 35 · render 60.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QxvWAjte7vPcF79QeSRvRJ
2026-07-25 12:39:16 +02:00

70 lines
2.7 KiB
Markdown

---
language: en
schemaVersion: 1
---
# Accumulated language rules — `<language>`
> **OPT-IN — the plugin never writes this file for you.** Copy it into your data
> dir, one file per review language, and let it grow:
>
> ```bash
> mkdir -p "${LINKEDIN_STUDIO_DATA:-$HOME/.claude/linkedin-studio}/language-rules"
> cp "${CLAUDE_PLUGIN_ROOT}/config/language-rules.template.md" \
> "${LINKEDIN_STUDIO_DATA:-$HOME/.claude/linkedin-studio}/language-rules/en.md"
> ```
>
> Name the file after the edition's `language` value (`en.md`, `no.md`, …).
> While it is absent, the shipped baseline applies alone and nothing warns.
This file is **yours**. It holds the language corrections you have made that you
do not want to make again — the judgment half of the fold-in loop
(`references/fold-in-loop.md`). Two things read it:
- **`agents/language-reviewer.md`** (Step 6.5, cold review) — grades against
these rules in addition to its five standard checks, so a correction you
confirmed once is caught every edition after.
- **`/linkedin:newsletter` Step 4** (consistency + quality) — reads it while the
draft is still being cleaned, so the defect is *prevented*, not only caught.
**`/linkedin:newsletter` Step 11** (retro) appends to it: when you promote a
judgment-class fold-in, the rule lands here with the edition that surfaced it.
Mechanical corrections do **not** come here — those become deterministic
`scripts/contract-gate` rules instead.
## Relationship to the shipped baseline
`references/longform-quality-rules.md` rule 3 (the AI-slop ban-list) is the
**baseline** and is never edited by the loop. This file **extends** it. Where the
two disagree, the stricter one wins; if you actually want to overturn a baseline
rule, say so explicitly under *Deliberate exceptions* below — an unexplained
contradiction reads as drift to the next reviewer.
## Format
One rule per bullet. Keep each rule **checkable** — a reviewer must be able to
tell from the text alone whether it was broken. Add the date and the edition that
surfaced it, so a rule that turns out to be wrong can be traced back and dropped.
```markdown
- **<what to avoid>** → <what to do instead>. _(<YYYY-MM-DD>, edition <NN>)_
```
Good: *«"leverage" as a verb → use the plain verb ("use", "build on").»*
Bad: *«write better sentences»* — nothing can check that.
---
## Rules
<!-- Step 11 appends promoted judgment-class fold-ins below this line. -->
_(empty — no rules accumulated yet)_
## Deliberate exceptions
Baseline rules you have consciously decided not to follow, **with the reason**.
Keep this short; a long list here means the baseline is wrong for your practice
and should be discussed, not quietly bypassed.
_(none)_