# Style Forensics

> Measure and explain the writing style of one or more prose samples using quantitative metrics and cited examples. Use when analyzing sentence rhythm, punctuation, vocabulary, tone, rhetorical devices, or producing a detailed Style DNA report.

- Skill: `majesticlabs-dev/style-forensics` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add majesticlabs-dev/style-forensics`
- Raw SKILL.md: https://api.skillmd.com/api/skills/majesticlabs-dev/style-forensics/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Docs & Writing
- Author: majesticlabs-dev (https://skillmd.com/u/majesticlabs-dev)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/majesticlabs-dev/style-forensics

---


# Style Forensics

Produce an evidence-backed style fingerprint. Measure first, then interpret the numbers with examples from the supplied prose.

## Boundary

Use this skill for deep analysis.

- To define a desired organizational voice, use `brand-voice`.
- To package an existing voice as concise reusable guidance, use `voice-dna-kit`.
- To draft against an existing profile, use `style-writer`.

Do not infer personality, demographics, identity, or intent from prose style.

## Inputs

Collect:

1. One or more samples believed to come from the same author or organizational voice.
2. The analysis goal and intended use.
3. Relevant context such as channel, audience, date, and editing history.
4. The requested output location, if the report should be saved.

State corpus limitations. A short, mixed-author, translated, or heavily AI-assisted sample cannot support a confident fingerprint.

## Workflow

### 1. Prepare clean prose

Work from a temporary copy. Remove:

- frontmatter and metadata
- navigation and repeated boilerplate
- code blocks and inline code
- URLs while preserving meaningful link text
- headings and formatting markers
- quotations not written by the target author

Preserve paragraph boundaries. Record the final prose word count and excluded material.

### 2. Generate baseline measurements

Resolve [analyze-style.sh](scripts/analyze-style.sh) relative to this file and run it against the cleaned source files.

Treat the script as a baseline, not ground truth. Validate sentence boundaries around abbreviations, decimals, initials, headings, and quotations. The bundled token categories are most useful for English prose. Adapt the tokenizer for other languages and disclose the change.

### 3. Measure sentence rhythm

Report:

| Metric | Required result |
| --- | --- |
| Sentences | Count |
| Sentence length | Mean, median, minimum, and maximum words |
| Distribution | 1 to 7, 8 to 15, 16 to 25, and 26 or more words |
| Short-sentence ratio | Percentage below 8 words |
| Rhythm | Where short and long sentences occur |

Explain clusters, alternation, punch lines, and unusually long constructions with examples.

### 4. Measure punctuation and paragraphs

Report counts and per-100-word rates for:

- commas
- colons
- semicolons
- em and en dashes
- exclamation marks
- question marks
- parenthetical asides

Separately identify rhetorical questions through inspection. A question mark is not proof of a rhetorical question.

Report paragraph count, average and median paragraph length, and one-sentence paragraph ratio. Exclude pure lists when they would distort prose structure.

### 5. Profile vocabulary and tone signals

Report:

- total and unique words
- lexical diversity, with corpus-size caveat
- long-word ratio
- optional common-function-word ratio when it helps compare similar corpora
- optional high-frequency long words when they reveal recurring technical or abstract vocabulary
- frequently repeated content words
- recurring jargon, colloquialisms, metaphors, and anchoring terms
- first-person singular, first-person plural, and second-person rates
- contractions and hedges with examples
- observable warmth, certainty, formality, and emotional intensity

Describe textual behavior, not hidden personal traits.

### 6. Identify signature devices

Search for:

- frequent sentence openers
- conjunction openers
- fragments and fragment stacks
- recurring launchers and landing lines
- contrast structures
- repetition and anaphora
- question clusters
- setup-and-payoff patterns
- temporal or narrative sequencing

Report absence when it is meaningful. Require at least two examples before calling a device recurring, unless the corpus is too short, in which case mark the observation provisional.

### 7. Describe macro-structure

Explain how samples tend to:

- open
- organize sections or paragraphs
- introduce evidence and examples
- transition
- close

For multiple samples, compare like with like before averaging metrics. Use a table such as:

| Feature | Sample or register A | Sample or register B | Stable trait, contextual dial, or outlier | Confidence and evidence |
| --- | --- | --- | --- | --- |
| | | | | |

Classify a feature as stable only when it recurs across representative samples. Treat a channel-bound pattern as a contextual dial, an isolated value as an outlier, and weak evidence as provisional.

### 8. Compile the report

Return:

1. Sources and corpus limitations
2. Cleaning and measurement notes
3. Core metrics table
4. Sentence distribution
5. Punctuation and paragraph profile
6. Vocabulary and tone signals
7. Signature devices with examples
8. Structural blueprint
9. Cross-sample comparison with stable traits, contextual dials, and outliers when multiple samples exist
10. Quick-reference metrics
11. Confidence and unresolved questions

If the user requested a file, save it as `<source-name>-style-dna.md` or to the supplied path. Otherwise present the report without writing files.

## Quality Gate

The report is ready when:

- every reported number is reproducible
- parsing errors were reviewed rather than trusted blindly
- every qualitative claim cites examples
- frequency claims distinguish counts from impressions
- sample limitations and uncertainty are explicit
- cross-sample claims distinguish stable traits, contextual dials, outliers, and provisional findings
- the report describes prose without making identity claims

