Skip to content
Development
Skill

/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.

BOOST
From plugin
claude-night-market
342200 skills60 agents162 commands1 MCP
Install
$ npx -y skills add athola/claude-night-market --skill style-learner --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/style-learner

Context preview

The summary Claude sees to decide when to auto-load this skill.

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

SKILL.md

style-learner.SKILL.md
name: style-learner
description: Extracts writing style patterns from exemplar text into a reusable profile. Use when creating a style guide or learning a specific author's voice.
globs: "**/*.md"
alwaysApply: false
category: writing-quality
tags:
- style
- voice
- tone
- exemplar
- learning
- consistency
tools: []
complexity: medium
model_hint: standard
estimated_tokens: 1800
progressive_loading: true
modules:
- modules/feature-extraction.md
- modules/exemplar-reference.md
- modules/style-application.md
dependencies:
- scribe:slop-detector

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:

1. **Feature Extraction**: quantifiable metrics (sentence length distribution, vocabulary complexity, structural patterns). Reproducible but soulless. 2. **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

1. `style-learner:exemplar-collected` - Source texts gathered 2. `style-learner:features-extracted` - Quantitative metrics computed 3. `style-learner:exemplars-selected` - Representative passages identified 4. `style-learner:profile-generated` - Style guide created 5. `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:

1. Generate sample content using the profile 2. Compare metrics to extracted features 3. Have user evaluate voice/tone match 4. Refine profile based on feedback

Validation Checklist

  • [ ] Metrics within 20% of exemplar averages
  • [ ] No anti-p
Read more
Ships withclaude-night-market

A plugin marketplace for Claude Code. Install only the plugins you need to run git workflows, code review, spec-driven development, and autonomous agents from inside your Claude Code session.

Get the whole plugin

Other skills on claude-night-market.