mcpbeat

Style Learner

athola/style-learner

Extracts writing style patterns from exemplar text into a reusable profile. Use when creating a style guide or learning a specific author's voice.

4k tokens
context cost
the whole folder, loaded on every use
4
files
instructions only
0
copies elsewhere
how many repositories repackaged it
324
stars on the repo
on the repository, not the skill itself

Install

one command, takes just this skill from the repository
npx skills add https://github.com/athola/claude-night-market --skill style-learner

The instruction itself

20 sections, as written by the author

Style Learning Skill

**A style profile is metrics plus exemplars. Either alone

is too weak to reproduce a voice.**

Extract style from exemplar text and codify it as a profile

that downstream skills (scribe:doc-generator,

scribe:voice-generate) can apply consistently.

When NOT To Use

  • Extracting a person's voice from their samples (use

scribe:voice-extract)

  • Reviewing text against a profile (use scribe:voice-review)

Approach: Feature Extraction and Exemplar Reference

The skill combines two methods because each fails alone:

  • Feature Extraction: quantifiable metrics (sentence

length distribution, vocabulary complexity, structural

patterns). Reproducible but soulless.

  • Exemplar Reference: specific passages that

demonstrate the target style. Vivid but hard to apply

at scale.

Together they form a profile precise enough to score new

text and rich enough to guide rewrites. Metrics catch what

exemplars miss. Exemplars carry what metrics flatten.

Required TodoWrite Items

  • style-learner:exemplar-collected - Source texts gathered
  • style-learner:features-extracted - Quantitative metrics computed
  • style-learner:exemplars-selected - Representative passages identified
  • style-learner:profile-generated - Style guide created
  • style-learner:validation-complete - Profile tested against new content

Step 1: Collect Exemplar Text

Gather representative samples of the target style.

Minimum requirements:

  • At least 1000 words of exemplar text
  • Multiple samples preferred (shows consistency)
  • Same genre/context as target output
## Exemplar Sources

| Source | Word Count | Type |
|--------|------------|------|
| README.md | 850 | Technical |
| blog-post-1.md | 1200 | Narrative |
| api-guide.md | 2100 | Reference |

Step 2: Feature Extraction

Load: @modules/feature-extraction.md

Vocabulary Metrics

| Metric | How to Measure | What It Indicates |

|--------|----------------|-------------------|

| Average word length | chars/word | Complexity level |

| Unique word ratio | unique/total | Vocabulary breadth |

| Jargon density | technical terms/100 words | Audience level |

| Contraction rate | contractions/sentences | Formality |

Sentence Metrics

| Metric | How to Measure | What It Indicates |

|--------|----------------|-------------------|

| Average length | words/sentence | Complexity |

| Length variance | std dev of lengths | Natural variation |

| Question frequency | questions/100 sentences | Engagement style |

| Fragment usage | fragments/100 sentences | Stylistic punch |

Structural Metrics

| Metric | How to Measure | What It Indicates |

|--------|----------------|-------------------|

| Paragraph length | sentences/paragraph | Density |

| List ratio | bullet lines/total lines | Format preference |

| Header depth | max header level | Organization style |

| Code block frequency | code blocks/1000 words | Technical density |

Punctuation Profile

| Metric | Normal Range | Style Indicator |

|--------|--------------|-----------------|

| Em dash rate | 0-3/1000 words | Parenthetical style |

| Semicolon rate | 0-2/1000 words | Formal complexity |

| Exclamation rate | 0-1/1000 words | Enthusiasm level |

| Ellipsis rate | 0-1/1000 words | Trailing thought style |

Step 3: Exemplar Selection

Load: @modules/exemplar-reference.md

Select 3-5 passages (50-150 words each) that best represent the target style.

Selection criteria:

  • Demonstrates characteristic sentence rhythm
  • Shows typical vocabulary choices
  • Represents the desired tone
  • Avoids atypical or exceptional passages

Exemplar Template

### Exemplar 1: [Label]
**Source**: [filename, lines X-Y]
**Demonstrates**: [what aspect of style]

> [Quoted passage]

**Key characteristics**:
- [Observation 1]
- [Observation 2]

Step 4: Generate Style Profile

Combine extracted features and exemplars into a usable style guide.

Profile Format

# Style Profile: [Name]
# Generated: [Date]
# Exemplar sources: [List]

voice:
  tone: [professional/casual/academic/conversational]
  perspective: [first-person/third-person/second-person]
  formality: [formal/neutral/informal]

vocabulary:
  average_word_length: X.X
  jargon_level: [none/light/moderate/heavy]
  contractions: [avoid/occasional/frequent]
  preferred_terms:
    - "use" over "utilize"
    - "help" over "facilitate"
  avoided_terms:
    - delve
    - leverage
    - comprehensive

sentences:
  average_length: XX words
  length_variance: [low/medium/high]
  fragments_allowed: [yes/no/sparingly]
  questions_used: [yes/no/sparingly]

structure:
  paragraphs: [short/medium/long] (X-Y sentences)
  lists: [prefer prose/balanced/prefer lists]
  headers: [descriptive/terse/question-style]

punctuation:
  em_dashes: [avoid/sparingly/freely]
  semicolons: [avoid/sparingly/freely]
  oxford_comma: [yes/no]

exemplars:
  - label: "[Exemplar 1 label]"
    text: |
      [Quoted passage]
  - label: "[Exemplar 2 label]"
    text: |
      [Quoted passage]

anti_patterns:
  - [Pattern to avoid 1]
  - [Pattern to avoid 2]

Step 5: Validation

Test the profile against new content:

  • Generate sample content using the profile
  • Compare metrics to extracted features
  • Have user evaluate voice/tone match
  • Refine profile based on feedback

Validation Checklist

  • [ ] Metrics within 20% of exemplar averages
  • [ ] No anti-pattern violations
  • [ ] Tone matches user expectation
  • [ ] Vocabulary aligns with exemplars
  • [ ] Structure follows profile guidelines

Usage in Generation

When generating new content, reference the profile:

Generate [content type] following the style profile:
- Voice: [from profile]
- Sentence length: target ~[X] words, vary between [Y-Z]
- Use exemplar passage as tone reference:
  > [exemplar quote]
- Avoid: [anti-patterns from profile]

Module Reference

  • See modules/style-application.md for applying learned styles to new content

Integration with slop-detector

After generating content, run slop-detector to verify:

  • No AI markers introduced
  • Style metrics match profile
  • Anti-patterns avoided

Exit Criteria

  • Style profile document created
  • At least 3 exemplar passages included
  • Quantitative metrics extracted
  • Anti-patterns from slop-detector integrated
  • Validation test passed

How to use it

Copy the folder

Take athola/style-learner from the repository into ~/.claude/skills for personal use, or into .claude/skills inside a project.

Check the name does not clash

The agent identifies a skill by the name field in its header. Two skills with the same name cannot sit side by side — one of them will be ignored.