agentCLAWHUBUnverified

style-learner

Extracts writing style patterns from exemplar text into a reusable profile Skill: style-learner Owner: athola Summary: Extracts writing style patterns from exemplar text into a reusable profile Tags: latest:1.9.19 Version history: v1.9.19 | 2026-08-26T13:22:10.842Z | user Release v1.9.19 v1.9.17 | 2026-07-30T05:42:06.379Z | user Release v1.9.17 v1.9.16 | 2026-07-14T19:58:55.224Z | user Release v1.9.16 v1.9.14 | 2026-06-30T18:06:33.094Z | user Release v1.9.14 v1.9.13 | 2026-06-27T16:24:16.44

OpenClaw

Rank

62

Safety

84

Downloads

1.6k

Updated

Oct 10, 2026

Version

1.9.19

Source

CLAWHUB

About

What it does, and when to use it.

Capability contract not published. No trust telemetry is available yet. 1.6K downloads reported by the source. Last updated 10/10/2026.

Avoid when

  • Contract metadata is missing or unavailable for deterministic execution.

Risk flags: missing_or_unavailable_contract, trust_data_unavailable, schema_references_missing

Public facts

Every fact links back to the source it came from.

Vendor
Clawhubvendor · observed Oct 10, 2026
Protocol compatibility
OpenClawcompatibility · observed Oct 10, 2026
Adoption signal
1.6K downloadsadoption · observed Oct 10, 2026
Latest release
1.9.19release · observed Aug 26, 2026
Handshake status
UNKNOWNsecurity

Install and run

Setup complexity: low.

clawhub skill install s17emme0e2m3cpf7k2jvp3a84984b8z9:nm-scribe-style-learner
  1. Setup complexity is classified as HIGH. You must provision dedicated cloud infrastructure or an isolated VM. Do not run this directly on your local workstation.
  2. Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data.

Contract: missing

curl -s "https://www.xpersona.co/api/v1/agents/clawhub-athola-nm-scribe-style-learner/snapshot"

Documentation

CLAWHUB

145,048 characters of source documentation, loaded on request.

Extracted files

5 files captured from the source.

SKILL.md

---
name: style-learner
description: Extracts writing style patterns from exemplar text into a reusable profile
version: 1.9.8
triggers:
  - style
  - voice
  - tone
  - exemplar
  - learning
  - consistency
  - creating a style guide or learning a specific author's voice
metadata: {"openclaw": {"homepage": "https://github.com/athola/claude-night-market/tree/master/plugins/scribe", "emoji": "\u270d\ufe0f", "requires": {"config": ["night-market.scribe:shared", "night-market.scribe:slop-detector"]}}}
source: claude-night-market
source_plugin: scribe
---

> **Night Market Skill** — ported from [claude-night-market/scribe](https://github.com/athola/claude-night-market/tree/master/plugins/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:

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

```markdown
## 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 |
|--------|----------------|-------------------|
| A

_meta.json

{
  "ownerId": "kn7d107jg9jv602h9ytsegydq184a42s",
  "slug": "nm-scribe-style-learner",
  "version": "1.9.19",
  "publishedAt": 1787750530842
}

modules/exemplar-reference.md

---
module: exemplar-reference
category: style-analysis
dependencies: [Read]
estimated_tokens: 350
---

# Exemplar Reference Module

Select and document representative passages for style guidance.

## Selection Criteria

Choose passages that demonstrate:

1. **Characteristic rhythm**: Sentence length variation patterns
2. **Vocabulary choices**: Typical word selection
3. **Tone markers**: How formality/informality is expressed
4. **Structural preferences**: Paragraph and list usage

## Anti-Selection Criteria

Avoid passages that:

- Are atypically long or short
- Contain unusual formatting
- Quote external sources
- Are transitional/boilerplate
- Contain code blocks (unless style includes code)

## Passage Length

Optimal exemplar length: **50-150 words**

- Too short: Insufficient pattern demonstration
- Too long: Dilutes key characteristics

## Annotation Format

```markdown
### Exemplar: Technical Explanation

**Source**: docs/architecture.md, lines 45-52
**Word count**: 87
**Demonstrates**: Concise technical explanation with grounded examples

> The cache layer sits between the API and database. When a request
> arrives, we check Redis first. Cache hits return in under 5ms;
> misses fall through to Postgres, adding 50-200ms depending on
> query complexity. We chose Redis over Memcached for its richer
> data structures—sorted sets power our leaderboard feature.

**Key characteristics**:
- Short, direct sentences (avg 12 words)
- Specific numbers (5ms, 50-200ms)
- One em dash for aside
- Trade-off explanation ("chose X over Y because")
- No filler phrases
- Technical but accessible
```

## Minimum Exemplar Set

For a complete style profile, collect at least:

| Type | Purpose |
|------|---------|
| Explanation | How concepts are introduced |
| Instruction | How steps are given |
| Transition | How sections connect |

For narrative content, add:

| Type | Purpose |
|------|---------|
| Description | Scene/object portrayal |
| Dialogue | Character voice |
| Action | Event pacing |

## Usage in Generation

When generating new content, present exemplars as reference:

```
Write in a style similar to this passage:

> [exemplar text]

Key aspects to match:
- Sentence length around X words
- [Specific vocabulary preferences]
- [Tone markers to include]
- [Patterns to avoid]
```

modules/feature-extraction.md

---
module: feature-extraction
category: style-analysis
dependencies: [Bash, Read]
estimated_tokens: 400
---

# Feature Extraction Module

Quantitative style metrics extraction from exemplar text.

## Vocabulary Analysis

```bash
# Average word length
awk '{for(i=1;i<=NF;i++){sum+=length($i);count++}}END{print sum/count}' file.md

# Unique word ratio
words=$(tr '[:space:]' '\n' < file.md | grep -v '^$' | wc -l)
unique=$(tr '[:space:]' '\n' < file.md | grep -v '^$' | sort -u | wc -l)
echo "scale=2; $unique / $words" | bc

# Contraction count
grep -oE "\b\w+'(t|s|d|ll|ve|re|m)\b" file.md | wc -l
```

## Sentence Analysis

```python
import re

def analyze_sentences(text):
    # Split on sentence boundaries
    sentences = re.split(r'[.!?]+', text)
    sentences = [s.strip() for s in sentences if s.strip()]

    lengths = [len(s.split()) for s in sentences]

    return {
        'count': len(sentences),
        'avg_length': sum(lengths) / len(lengths),
        'min_length': min(lengths),
        'max_length': max(lengths),
        'std_dev': statistics.stdev(lengths) if len(lengths) > 1 else 0,
        'questions': sum(1 for s in sentences if '?' in s),
        'fragments': sum(1 for l in lengths if l < 5)
    }
```

## Structural Analysis

```bash
# Paragraph lengths (sentences per paragraph)
awk -v RS='\n\n' '{
    gsub(/[.!?]/, "&\n");
    n = split($0, a, "\n");
    print n
}' file.md

# List ratio
bullets=$(grep -c '^\s*[-*]' file.md)
total=$(wc -l < file.md)
echo "scale=2; $bullets / $total" | bc

# Header depth
grep -E '^#{1,6}\s' file.md | head -1 | grep -o '#' | wc -c
```

## Punctuation Profile

```bash
# Per 1000 words
words=$(wc -w < file.md)

em_dashes=$(grep -o '—' file.md | wc -l)
semicolons=$(grep -o ';' file.md | wc -l)
exclamations=$(grep -o '!' file.md | wc -l)
colons=$(grep -o ':' file.md | wc -l)

echo "Em dashes: $((em_dashes * 1000 / words)) per 1000"
echo "Semicolons: $((semicolons * 1000 / words)) per 1000"
```

## Output Format

```yaml
vocabulary:
  avg_word_length: 5.2
  unique_ratio: 0.42
  contraction_rate: 3.5  # per 100 sentences

sentences:
  avg_length: 18.4
  std_dev: 8.2
  question_rate: 2.1  # per 100
  fragment_rate: 1.5  # per 100

structure:
  avg_paragraph_sentences: 4.2
  list_ratio: 0.15
  max_header_depth: 3

punctuation:
  em_dash_rate: 1.8  # per 1000 words
  semicolon_rate: 0.5
  exclamation_rate: 0.2
```

modules/style-application.md

---
module: style-application
category: writing-quality
dependencies: [Write, Edit]
estimated_tokens: 350
---

# Style Application Module

Apply learned style profiles to new content generation and editing.

## Generation Prompting

When generating new content with a style profile:

```markdown
## Style Guidelines

**Voice**: [profile.voice.tone] with [profile.voice.perspective] perspective

**Sentence targets**:
- Average length: [profile.sentences.average_length] words
- Vary between [min] and [max]
- [Fragment guidance from profile]

**Vocabulary**:
- Prefer: [profile.vocabulary.preferred_terms]
- Avoid: [profile.vocabulary.avoided_terms]
- Contractions: [profile.vocabulary.contractions]

**Structure**:
- Paragraphs: [profile.structure.paragraphs]
- Lists: [profile.structure.lists]

**Reference exemplar**:
> [Most relevant exemplar passage]

**Anti-patterns** (will be checked by slop-detector):
[profile.anti_patterns]
```

## Editing to Match Style

When editing existing content to match a profile:

### Step 1: Measure Current State

Extract metrics from current content and compare to profile.

| Metric | Current | Target | Gap |
|--------|---------|--------|-----|
| Avg sentence length | 24 | 18 | -6 |
| Contraction rate | 0.5 | 3.5 | +3.0 |
| List ratio | 0.45 | 0.15 | -0.30 |

### Step 2: Prioritize Changes

1. **High gap** metrics first
2. **Anti-pattern** violations
3. **Vocabulary** substitutions
4. **Structural** adjustments

### Step 3: Section-by-Section Editing

For each section:
1. Show current metrics
2. Propose specific changes
3. Present exemplar for reference
4. Wait for approval
5. Apply changes
6. Re-measure

## Validation Loop

After applying style:

```
1. Run slop-detector on output
2. Re-extract metrics
3. Compare to profile targets
4. Flag remaining gaps > 20%
5. Iterate if needed
```

## Style Drift Detection

For ongoing content:

```bash
# Compare new content metrics to profile
new_metrics=$(extract_metrics new-doc.md)
profile_metrics=$(cat .scribe/style-profile.yaml)

# Alert if drift > threshold
if [ $avg_sentence_diff -gt 5 ]; then
    echo "WARNING: Sentence length drifting from profile"
fi
```

## Integration Points

| Tool | Integration |
|------|-------------|
| slop-detector | Validate anti-patterns |
| doc-generator | Apply during generation |
| pre-commit | Check style conformance |
Github ReposUpdated 15h agoRank 70

AionUi

Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!

MCPOPENCLAW
Github ReposUpdated 6mo agoRank 70

activepieces

AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents

OPENCLAW
Github ReposUpdated 6mo agoRank 70

cherry-studio

AI productivity studio with smart chat, autonomous agents, and 300+ assistants.

MCPOPENCLAW
Github ReposUpdated 7mo agoRank 70

CopilotKit

The Frontend for Agents & Generative UI. React + Angular

OPENCLAW

Machine-readable data

The same record, as JSON, for agents and crawlers.

{
  "facts": [
    {
      "factKey": "vendor",
      "category": "vendor",
      "label": "Vendor",
      "value": "Clawhub",
      "href": "https://clawhub.ai/athola/skills/nm-scribe-style-learner",
      "sourceUrl": "https://clawhub.ai/athola/skills/nm-scribe-style-learner",
      "sourceType": "profile",
      "confidence": "medium",
      "observedAt": "2026-10-10T06:02:06.100Z",
      "isPublic": true
    },
    {
      "factKey": "protocols",
      "category": "compatibility",
      "label": "Protocol compatibility",
      "value": "OpenClaw",
      "href": "https://www.xpersona.co/api/v1/agents/clawhub-athola-nm-scribe-style-learner/contract",
      "sourceUrl": "https://www.xpersona.co/api/v1/agents/clawhub-athola-nm-scribe-style-learner/contract",
      "sourceType": "contract",
      "confidence": "medium",
      "observedAt": "2026-10-10T06:02:06.100Z",
      "isPublic": true
    },
    {
      "factKey": "traction",
      "category": "adoption",
      "label": "Adoption signal",
      "value": "1.6K downloads",
      "href": "https://clawhub.ai/athola/nm-scribe-style-learner",
      "sourceUrl": "https://clawhub.ai/athola/nm-scribe-style-learner",
      "sourceType": "profile",
      "confidence": "medium",
      "observedAt": "2026-10-10T06:02:06.100Z",
      "isPublic": true
    },
    {
      "factKey": "latest_release",
      "category": "release",
      "label": "Latest release",
      "value": "1.9.19",
      "href": "https://clawhub.ai/athola/nm-scribe-style-learner",
      "sourceUrl": "https://clawhub.ai/athola/nm-scribe-style-learner",
      "sourceType": "release",
      "confidence": "medium",
      "observedAt": "2026-08-26T13:22:10.842Z",
      "isPublic": true
    },
    {
      "factKey": "handshake_status",
      "category": "security",
      "label": "Handshake status",
      "value": "UNKNOWN",
      "href": "https://www.xpersona.co/api/v1/agents/clawhub-athola-nm-scribe-style-learner/trust",
      "sourceUrl": "https://www.xpersona.co/api/v1/agents/clawhub-athola-nm-scribe-style-learner/trust",
      "sourceType": "trust",
      "confidence": "medium",
      "observedAt": null,
      "isPublic": true
    }
  ],
  "events": [
    {
      "eventType": "release",
      "title": "Release 1.9.19",
      "description": "Release v1.9.19",
      "href": "https://clawhub.ai/athola/nm-scribe-style-learner",
      "sourceUrl": "https://clawhub.ai/athola/nm-scribe-style-learner",
      "sourceType": "release",
      "confidence": "medium",
      "observedAt": "2026-08-26T13:22:10.842Z",
      "isPublic": true
    }
  ]
}

Record generated Oct 10, 2026.

Sponsored

Ads related to style-learner and adjacent AI workflows.