Generate and edit Draw.io, Mermaid, and Excalidraw diagrams from natural language using a structured JSON spec.
Coding
style-learner
Try itExtracts writing style patterns from exemplar text into a reusable profile
What it does
**Night Market Skill** — ported from claude-night-market/scribe. For the full experience with agents, hooks, and commands, install the Claude Code plugin.
The skill document
Night Market Skill — ported from claude-night-market/scribe. For the full experience with agents, hooks, and commands, install the Claude Code plugin.
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.
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 gatheredstyle-learner:features-extracted- Quantitative metrics computedstyle-learner:exemplars-selected- Representative passages identifiedstyle-learner:profile-generated- Style guide createdstyle-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.mdfor 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
Related skills
Join a video meeting as an AI bot with voice, avatar, and screenshare across four operating modes.
Stores durable facts in a categorized, plain-markdown vault on disk, alongside your agent's built-in memory.
Fetch raw ad creative, app, ranking, and revenue data from AdMapix as structured JSON.
Write, debug, and tune Playwright specs with locator strategy, trace diagnosis, and CI-aware timeouts.
Find why your productivity system keeps failing, then apply the smallest fix — capacity math, bottleneck routing, durable local notes.
More from athola
Browse all skillsEvaluate hook security, performance, and SDK compliance. Use for audits
Applies KISS, YAGNI, and SOLID principles for clean code with reduced complexity
Configures pre-commit hooks for linting, type checking, formatting, and testing
Executes implementation plans with progress tracking, checkpoint validation, and quality gates. Use after planning is complete and tasks are ready to implement
Guide creating Claude Code hooks with security-first design. Use for validation and enforcement
Analyze and improve the improvement process. Use for detecting regressions and meta-optimization