From saurun
Use when reviewing Danish copy for anglicisms, technical jargon, defensive tone, vague formulations, English words, and overly formal language. Scans uncommitted files by default or specific files with --file flag.
npx claudepluginhub fiatkongen/saurun-marketplace --plugin saurunThis skill uses the workspace's default tool permissions.
> ⚠️ **Spelling:** It's `saurun:` (with U), not "sauron"
Guides Next.js Cache Components and Partial Prerendering (PPR) with cacheComponents enabled. Implements 'use cache', cacheLife(), cacheTag(), revalidateTag(), static/dynamic optimization, and cache debugging.
Guides building MCP servers enabling LLMs to interact with external services via tools. Covers best practices, TypeScript/Node (MCP SDK), Python (FastMCP).
Generates original PNG/PDF visual art via design philosophy manifestos for posters, graphics, and static designs on user request.
⚠️ Spelling: It's
saurun:(with U), not "sauron"
Systematisk gennemgang af danske tekster for at finde otte typer problemer: anglicismer (fordanskninger), teknisk jargon der skræmmer, defensiv/undskyldende tone, vage buzzwords, engelske ord i dansk tekst, unødvendigt formelt sprog, manglende trykaccenter, og forkert en/et (grammatisk køn).
Du er en dansk sproglærer og sprogekspert med speciale i:
Din opgave:
Din autoritet: Du har mandat til at påpege ALT der ikke lever op til høj dansk sprogstandard. Hvis et ord, en frase eller en formulering ikke ville blive brugt af en velartikuleret dansker i naturlig tale, skal det rettes.
Use when:
Symptoms that trigger this skill:
Don't use when:
<Terminal> components (technical language is appropriate there)# Default: Scan uncommitted files
/skills saurun:dansk-qa
# Interactive mode (step-by-step fixes)
/skills saurun:dansk-qa --interactive
# Scan specific file
/skills saurun:dansk-qa --file=landing/src/pages/om.astro
# Scan entire project
/skills saurun:dansk-qa --all
digraph dansk_qa {
"Parse arguments" [shape=box];
"Determine files" [shape=diamond];
"git diff --name-only" [shape=box];
"Use --file path" [shape=box];
"Use Glob for .astro/.md/.tsx" [shape=box];
"For each file" [shape=box];
"Read file" [shape=box];
"Extract prose (skip code blocks)" [shape=box];
"Run 8 checks" [shape=box];
"Interactive mode?" [shape=diamond];
"Present problem + fixes" [shape=box];
"Get user choice" [shape=box];
"Apply fix" [shape=box];
"Generate report" [shape=box];
"Output markdown report" [shape=box];
"Parse arguments" -> "Determine files";
"Determine files" -> "git diff --name-only" [label="default"];
"Determine files" -> "Use --file path" [label="--file"];
"Determine files" -> "Use Glob for .astro/.md/.tsx" [label="--all"];
"git diff --name-only" -> "For each file";
"Use --file path" -> "For each file";
"Use Glob for .astro/.md/.tsx" -> "For each file";
"For each file" -> "Read file";
"Read file" -> "Extract prose (skip code blocks)";
"Extract prose (skip code blocks)" -> "Run 6 checks";
"Run 8 checks" -> "Interactive mode?";
"Interactive mode?" -> "Present problem + fixes" [label="yes"];
"Interactive mode?" -> "Generate report" [label="no"];
"Present problem + fixes" -> "Get user choice";
"Get user choice" -> "Apply fix";
"Apply fix" -> "Run 6 checks" [label="next problem"];
"Generate report" -> "Output markdown report";
}
Reference: _docs/copywriter-persona-uddyb.md (Undgå fordanskede termer section)
Common patterns to find:
| ❌ Anglicisme | ✅ Dansk |
|---|---|
| "smertepunkter" | problemer, frustrationer, udfordringer |
| "røre basen" | kontakte, tale med, spørge |
| "række ud til" | kontakte, skrive til |
| "dykke dybt ned i" | undersøge grundigt, analysere |
| "ende-til-ende" | start-til-slut |
| "lavthængende frugter" | nemme gevinster, hurtige løsninger |
| "båndbredde" (om tid) | tid, kapacitet, ressourcer |
| "onboarding" | introduktion, opstart, opsætning |
| "touch base" | følge op, snakke sammen |
| "interessenter" | berørte parter, projektdeltagere |
| "leverancer" | hvad du får, resultater |
| "scope creep" | projektet vokser ukontrolleret |
| "småt tryk" | (fjern, eller brug "skjulte betingelser") |
| "værste del" | det værste |
Detection: Scan for these exact phrases. Reference full list in _docs/copywriter-persona-uddyb.md.
Reference: _docs/copywriter-persona-uddyb.md (Teknisk jargon section) + _docs/site-wide-term-audit.md
Always remove (åbenlyse skræmmere):
Framework & Database names:
Developer acronyms:
Development terms:
Deployment & process terms (NYT):
Test & quality terms:
OK to use (if explained):
Replace with benefits:
Reference: Recent fixes in om.astro, faq.astro, proces.astro
Patterns that signal weakness:
| ❌ Defensiv | ✅ Positiv |
|---|---|
| "Vi lover ikke..." | "Vi fokuserer på..." |
| "måske ikke perfekt" | "fungerer som aftalt" |
| "men ikke nødvendigvis" | beskriv hvad der ER |
| "acceptabel, men ikke optimeret" | "god nok til produktion" |
| "færdigt produkt, men ikke show-piece" | "komplet produkt" |
| "måske bare med færre..." | "kernen i drift" |
| "bare kernen af idéen" | "fuldt fungerende version" |
Pattern: Any sentence with "ikke", "men", "måske" followed by limitation = defensive.
Fix: Reframe to what you DO deliver, not what you DON'T.
Common buzzwords to remove:
| ❌ Vagt | ✅ Konkret |
|---|---|
| "tilbyder løsninger" | "bygger software der..." (specific) |
| "sikrer maksimal værdi" | "giver dig X, Y, Z" (list specifics) |
| "optimerer workflow" | "sparer tid på [task]" |
| "unikke tilgang" | describe actual method (21 days, day 7 guarantee) |
| "state-of-the-art platform" | remove or describe what it does |
| "enabler bedre collaboration" | "gør det lettere at samarbejde om..." |
Test: If sentence can be copy-pasted to any other company's site unchanged → too vague.
Pattern: Detect English words mixed into Danish prose (NOT in code blocks).
Category A: All-caps English
Category B: Common English tech words (skal oversættes i prosa)
Category C: Danish-ified English (engelsk ord + dansk bøjning)
Pattern: Engelsk ord + dansk artikel/bøjning (-en, -et, -erne)
| ❌ Danish-ified | ✅ Dansk |
|---|---|
| "UI'et" | "brugerfladen" |
| "Stack'en" | "teknologierne" |
| "scopet" | "omfanget" |
| "bug'en" | "fejlen" |
| "featuren" | "funktionen" |
Category D: English phrases
Detection strategy:
Examples:
| ❌ Engelsk | ✅ Dansk |
|---|---|
| "DONE: Software leveret" | "FÆRDIG: Software leveret" eller "KLAR: Software leveret" |
| "Vi fixer bugs" | "Vi retter fejl" |
| "Scopet er fastlagt" | "Omfanget er fastlagt" |
| "UI'et er poleret" | "Brugerfladen er poleret" |
| "Vendor lock-in" | "Leverandør-afhængighed" |
| "Efter go-live" | "Efter systemet går i drift" |
Exceptions:
<Terminal> components (technical context OK)Pattern: Academic/formal language that sounds stiff in customer-facing copy.
Common patterns:
Fix with simpler alternatives:
| ❌ Formelt | ✅ Enkelt |
|---|---|
| "AI-accelereret udvikling" | "Udvikling med AI", "AI-baseret udvikling" |
| "optimeret workflow" | "bedre arbejdsgang", "hurtigere proces" |
| "maksimeret værdi" | "mest mulig værdi", "bedst muligt resultat" |
| "genereret rapport" | "lavet rapport", "automatisk rapport" |
| "initialiserer projekt" | "starter projekt", "sætter projekt op" |
| "implementeret løsning" | "lavet løsning", "færdig løsning" |
| "faciliterer samarbejde" | "gør samarbejde lettere", "hjælper samarbejde" |
Test: Would you say this to a friend? If not, simplify it.
Hvad: Dansk bruger akut accent (´) til at markere tryk på verber i imperativ, hvor formen ellers er tvetydig med andre ordklasser.
Hvorfor: Uden accent læser modtageren ofte det forkerte ord. "Lever hurtigt" = "lives quickly" vs. "Levér hurtigt" = "deliver quickly".
Almindelige fejl:
| ❌ Uden accent | ✅ Med accent | Forklaring |
|---|---|---|
| "lever" (imperativ) | "levér" | vs. "lever" (nutid af "at leve") |
| "juster" (imperativ) | "justér" | vs. "juster" (substantiv, sjældent) |
| "former" (imperativ) | "formér" | vs. "former" (substantiv: "former") |
| "planer" (imperativ) | "planér" | vs. "planer" (substantiv: "planer") |
| "noter" (imperativ) | "notér" | vs. "noter" (substantiv: "noter") |
| "koder" (imperativ) | "kodér" | vs. "koder" (substantiv: "koder") |
| "tester" (imperativ) | "testér" | vs. "tester" (substantiv: "tester") |
| "kontakter" (imperativ) | "kontaktér" | vs. "kontakter" (substantiv) |
| "installer" (imperativ) | "installér" | vs. "installer" (substantiv) |
| "generer" (imperativ) | "generér" | vs. "generer" (nutid: "det generer mig") |
| "presenter" (imperativ) | "præsentér" | vs. "presenter" (substantiv) |
| "fokuser" (imperativ) | "fokusér" |
Detektionsstrategi:
Undtagelser:
Hvad: Danske substantiver har grammatisk køn (fælleskøn = en, intetkøn = et). AI-genereret tekst blander ofte disse, især ved sammensatte ord og fagtermer.
Hvorfor: Forkert en/et afslører øjeblikkeligt at teksten er maskin-genereret. Det er den mest basale grammatikfejl i dansk.
Almindelige AI-fejl:
| ❌ Forkert | ✅ Korrekt | Regel |
|---|---|---|
| "et software" | "en software" | fælleskøn |
| "en system" | "et system" | intetkøn |
| "en produkt" | "et produkt" | intetkøn |
| "et løsning" | "en løsning" | fælleskøn |
| "en projekt" | "et projekt" | intetkøn |
| "et virksomhed" | "en virksomhed" | fælleskøn |
| "en website" | "et website" | intetkøn |
| "et platform" | "en platform" | fælleskøn |
| "en design" | "et design" | intetkøn |
| "et funktion" | "en funktion" | fælleskøn |
| "en værktøj" | "et værktøj" | intetkøn |
| "et idé" | "en idé" | fælleskøn |
| "en overblik" | "et overblik" | intetkøn |
| "et garanti" | "en garanti" | fælleskøn |
| "en resultat" | "et resultat" | intetkøn |
| "en tilbud" | "et tilbud" | intetkøn |
| "et pris" | "en pris" | fælleskøn |
| "en firma" | "et firma" | intetkøn |
Sammensatte ord — køn følger SIDSTELEDDET:
Detektionsstrategi:
Undtagelser:
Skip technical checks inside:
```code```, <code>, <pre><Terminal>, <TypingAnimation>, <AnimatedSpan>$, >, #//, /*, #Why: These contexts are meant to look technical. Only check prose/customer-facing text.
Implementation:
1. Read file
2. Parse/mark code block regions
3. Run checks only on lines outside marked regions
4. Report line numbers relative to original file
Generate markdown report:
# Dansk Tekstkvalitet - Rapport
Scannet: 3 filer
Problemer fundet: 12
## landing/src/pages/om.astro
### Anglicismer (3)
❌ Linje 45: "smertepunkter"
→ Forslag: "problemer" eller "frustrationer"
❌ Linje 67: "røre basen"
→ Forslag: "kontakte" eller "tale med"
### Teknisk Jargon (2)
❌ Linje 89: "React, Node.js, PostgreSQL"
→ Forslag: "moderne, velkendte teknologier"
### Engelske Ord (1)
❌ Linje 102: "DONE: Software leveret"
→ Forslag: "FÆRDIG: Software leveret"
### Formelt Sprog (1)
❌ Linje 115: "AI-accelereret udvikling"
→ Forslag: "Udvikling med AI"
### Defensiv Tone (1)
❌ Linje 122: "Vi lover ikke komplekse integrationer..."
→ Forslag: "Vi fokuserer på kernen: Det der faktisk løser dit problem..."
## landing/src/pages/faq.astro
[...]
For each problem:
Read these files for context:
_docs/copywriter-persona-uddyb.md - Full anglicisme list + tone guidance_docs/copywriter-persona-punch.md - Forside-stemme rules_docs/site-wide-term-audit.md - Previously identified problemsCheck consistency:
| Mistake | Reality |
|---|---|
| "Just scan, don't fix" | User wants actionable feedback, not just list |
| "Technical terms are fine if explained" | Still scary. Remove when possible. |
| "Defensive tone adds nuance" | Defensive = weak. Reframe positively. |
| "Buzzwords sound professional" | Buzzwords = empty. Be specific. |
| "Only check uncommitted files" | User may want --all for full audit |
| "Check everything including code" | Skip code blocks - only check prose |
File discovery:
# Default (uncommitted)
git diff --name-only
# Filter for Danish content files
grep -E '\.(astro|md|tsx)$'
# Skip: node_modules, dist, .git, test files
Performance:
Exit codes: