Skip to main content

/detect-writing

Writing system extraction with NNg tone dimensions, UI copy classification, and i18n maturity scoring.


What It Does​

Extracts the writing system from the repository with string discovery, classification, and heuristic scoring. Supports light mode (default, 1 summary file) and full mode (--full, 6 detailed files with NNg tone scoring, glossary, and governance).


Usage​

/detect-writing [repo] [--full]
ArgumentRequiredDescription
repoNoTarget repository (defaults to current)
--fullNoRun full analysis (6 detection steps, 6 output files). Default is light mode.

Light mode (default): Scans string inventory and i18n maturity, produces 1 summary file. Backend/CLI platforms also include error message quality scores (partial-mode exception).

Full mode (--full): Runs all steps including NNg tone dimensions, UI copy classification, glossary, and governance. Produces 6 detailed output files.


Output​

Light Mode (default) — 1 file​

FileContent
$JAAN_OUTPUTS_DIR/detect/writing/summary{suffix}.mdString corpus overview, i18n maturity, top-5 findings (+ error scores for backend/CLI)

Full Mode (--full) — 6 files​

FileContent
$JAAN_OUTPUTS_DIR/detect/writing/writing-system.mdVoice definition, tone spectrum (NNg dimensions), consistency score
$JAAN_OUTPUTS_DIR/detect/writing/glossary.mdTerminology glossary with ISO-704-ish statuses (preferred/admitted/deprecated/forbidden)
$JAAN_OUTPUTS_DIR/detect/writing/ui-copy.mdUI string classification across 8 categories with component-name patterns
$JAAN_OUTPUTS_DIR/detect/writing/error-messages.mdError message quality audit with 5-dimension weighted rubric
$JAAN_OUTPUTS_DIR/detect/writing/localization.mdi18n maturity assessment (0–5) with evidence
$JAAN_OUTPUTS_DIR/detect/writing/samples.mdRepresentative copy samples per category

Multi-Platform Monorepo​

Files use platform suffix: writing-system-{platform}.md, summary-{platform}.md, etc.


What It Scans​

CategoryPatterns
i18n locale filesReact i18next, Vue i18n, Angular, Next.js, Flutter/Dart, Android, iOS/macOS, Rails, Django, Java, .NET, PHP/Laravel, GNU gettext (13 framework-specific glob sets)
Component inline textJSX/TSX inline text, component props (label, title, message, placeholder, helperText, errorMessage)
UI copy components*Button*, *Error*, *EmptyState*, *Dialog*, *Toast*, *Onboarding*, *FormField*, *Loading* + variants
ICU MessageFormatPlural, select, and format patterns in locale files
RTL supportdir="rtl", CSS logical properties, RTL locale codes (ar, he, fa, ur, ps)
Content governanceCODEOWNERS, content linting tools (alex, write-good, vale, cspell, textlint), CI translation checks

Multi-Platform Support​

  • Platform auto-detection: Detects web/, backend/, mobile/, etc. from folder structure
  • Evidence ID format:
    • Single-platform: E-WRT-NNN (e.g., E-WRT-001)
    • Multi-platform: E-WRT-{PLATFORM}-NNN (e.g., E-WRT-WEB-001, E-WRT-BACKEND-023)
  • Partial analysis mode: Backend/CLI platforms analyze error messages only (skips UI copy, onboarding, CTA)
  • Cross-platform consistency: Tone dimension scoring compares across platforms for brand consistency

Key Points​

  • NNg tone dimensions: 4 primary (Formality/Humor/Respectfulness/Enthusiasm 1–5) + 5 extended (Technical complexity/Verbosity/Directness/Empathy/Confidence)
  • Consistency score: Standard deviation per dimension across all strings; flag >1.5σ outliers
  • UI copy classified into 8 categories: Buttons, Errors, Empty states, Confirm dialogs, Toasts, Onboarding, Form labels/helper, Loading
  • Error message rubric: Clarity (25%) / Specificity (20%) / Actionability (25%) / Tone (15%) / A11y (15%)
  • Automated heuristic flags: Flesch-Kincaid >8, sentences >25 words, messages >40 words, passive >10%, blame language, visible error codes, missing action verbs
  • i18n maturity rated 0–5: None → Basic → Partial → Functional → Mature → Excellence; centralization scoring (+1/−1 signals, cap at Level 1 if ≤−2)
  • Glossary uses ISO-704-ish methodology with TF-IDF/C-value term extraction
  • 4-level confidence: Confirmed / Firm / Tentative / Uncertain

Back to Detect Skills | Back to All Skills