agentCLAWHUBUnverified

voice-generate

Generates text in a learned writing voice Skill: voice-generate Owner: athola Summary: Generates text in a learned writing voice Tags: latest:1.9.19 Version history: v1.9.19 | 2026-08-26T13:22:29.704Z | user Release v1.9.19 v1.9.17 | 2026-07-30T05:42:22.863Z | user Release v1.9.17 v1.9.16 | 2026-07-14T19:59:13.123Z | user Release v1.9.16 v1.9.14 | 2026-06-30T18:06:44.869Z | user Release v1.9.14 v1.9.13 | 2026-06-27T16:24:27.328Z | user Release v1.9.13 v1.9.1

OpenClaw

Rank

62

Safety

84

Downloads

968

Updated

Oct 12, 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. 968 downloads reported by the source. Last updated 10/12/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 12, 2026
Protocol compatibility
OpenClawcompatibility · observed Oct 12, 2026
Adoption signal
968 downloadsadoption · observed Oct 12, 2026
Latest release
1.9.19release · observed Aug 26, 2026
Handshake status
UNKNOWNsecurity

What changed

Newest first. Only changes that point at a source are listed.

Install and run

Setup complexity: low.

clawhub skill install s17emme0e2m3cpf7k2jvp3a84984b8z9:nm-scribe-voice-generate
  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-voice-generate/snapshot"

Run-check

$0.02 USD

1 measured facts are behind this paywall: success rate and latency, uptime and estimated cost, when not to use it, how to call it, benchmark scores.

Agents pay $0.02 in USDC. A card payment is $0.50, the smallest a card allows.

Documentation

CLAWHUB

87,159 characters of source documentation, loaded on request.

Extracted files

5 files captured from the source.

SKILL.md

---
name: voice-generate
description: Generates text in a learned writing voice
version: 1.9.8
triggers:
  - voice
  - generation
  - style-transfer
  - writing
  - registers
  - drafting content that must match a specific author's style profile extracted by voice-extract
metadata: {"openclaw": {"homepage": "https://github.com/athola/claude-night-market/tree/master/plugins/scribe", "emoji": "\u270d\ufe0f", "requires": {"config": ["night-market.scribe:voice-extract", "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.


# Voice Generation Skill

Generate text in a user's extracted writing voice.

## Core Principle: Source Material Framing

The single largest variable in output quality is how source
material is framed in the prompt. Material framed as "raw
notes I'm still thinking through" produces text that feels
like thinking. Material framed as summaries produces reporting.

Always frame user-provided source material as raw notes unless
the user explicitly requests otherwise.

## Required TodoWrite Items

1. `voice-generate:profile-loaded` - Voice profile read
2. `voice-generate:register-selected` - Register chosen
3. `voice-generate:source-framed` - Material framed as notes
4. `voice-generate:generated` - Text produced
5. `voice-generate:review-dispatched` - Sent to review agents

## Step 1: Load Voice Profile

```bash
PROFILE_DIR="$HOME/.claude/voice-profiles/{name}"
```

Read in order:
1. `extraction.md` - Core voice features
2. `registers/{register}.md` - Active register
3. `craft-rules.md` - Shared craft techniques (if exists)
4. `banned-phrases.md` - Anti-patterns to avoid (if exists)

Check for per-project override:
```bash
if [ -f ".voice/override.md" ]; then
  # Merge project overrides with profile
fi
```

## Step 2: Register Selection

Load: `@modules/register-selection`

Select register by:
1. Explicit user request ("use casual register")
2. Context matching from register metadata
3. Default fallback to `registers/default.md`

## Step 3: Frame Source Material

Load: `@modules/source-framing`

**Default framing** (always use unless user overrides):

```
Below are my rough notes on this topic. I'm still thinking
through these ideas. Use them as the raw material for the
piece, not as a structure to follow:

---
{user_provided_source_material}
---
```

**Alternative framings** (only if user requests):
- "structured outline" - when user wants to preserve structure
- "key points to cover" - when user provides bullet points
- "conversation to draw from" - when source is a transcript

## Step 4: Generation Prompt

Compose the generation prompt:

```
You are writing a piece in a specific voice. The voice
features below were extracted from the writer's own work.
Follow them

_meta.json

{
  "ownerId": "kn7d107jg9jv602h9ytsegydq184a42s",
  "slug": "nm-scribe-voice-generate",
  "version": "1.9.19",
  "publishedAt": 1787750549704
}

modules/generation-pipeline.md

---
module: generation-pipeline
category: voice-generation
dependencies: [Read, Write, Agent]
estimated_tokens: 500
---

# Generation Pipeline Module

End-to-end generation flow from source material to reviewed text.

## Pipeline Stages

```
Source Material
    |
    v
[Frame as raw notes]
    |
    v
[Load profile + register + craft rules]
    |
    v
[Generate with Opus]
    |
    v
[Auto-fix: banned phrases, em dashes]
    |
    v
[Snapshot: pre-review] (if learning active)
    |
    v
[Dispatch review agents] (optional)
    |
    v
[Present advisories to user]
    |
    v
[Apply user decisions]
    |
    v
[Snapshot: post-review] (if learning active)
    |
    v
Final text (user may edit further)
    |
    v
[/voice-learn captures post-edit] (user-triggered)
```

## Auto-Fix Rules (Silent)

Applied immediately after generation, before review:

```bash
# Em dash replacement (context-aware)
# Before a clause: use comma or colon
# Parenthetical: use parentheses
# List separator: use semicolons

# Banned phrase removal
# "Furthermore," -> "" (start sentence without it)
# "It's important to note" -> "" (remove entirely)
# "delve" -> "explore" or "examine"
# "utilize" -> "use"
# "leverage" -> "use" or remove
# "comprehensive" -> "thorough" or "complete"
# "robust" -> "solid" or remove
# "seamless" -> "smooth" or remove
```

## Model Routing

| Stage | Model | Reason |
|-------|-------|--------|
| Generation | Opus | Tonal shifts, parenthetical subversion |
| Auto-fix | Regex/local | No model needed |
| Prose review | Sonnet | Structured detection prompts |
| Craft review | Sonnet | Structured evaluation prompts |
| Learning analysis | Opus | Nuanced pattern comparison |

## Error Recovery

If generation fails quality checks (> 5 hard failures):
1. Re-generate with stronger emphasis on banned phrases
2. If second attempt still fails, present to user with warning
3. Never loop more than twice (prevents infinite retry)

## Streaming Considerations

For long-form content (> 1000 words):
- Generate in sections (one per major heading)
- Apply auto-fix per section
- Allow user to review section-by-section or all at once
- Snapshot captures the complete assembled text

modules/register-selection.md

---
module: register-selection
category: voice-generation
dependencies: [Read, Bash]
estimated_tokens: 300
---

# Register Selection Module

Choose the appropriate voice register for generation.

## Selection Priority

1. **Explicit request**: User says "use casual register"
2. **Context match**: Register metadata matches the task
3. **Default**: Fall back to `registers/default.md`

## Context Matching

Each register file has a `## Context` section describing
when to use it. Match against the user's stated purpose:

```
User: "Write a blog post about..."     -> default or narrative
User: "Draft a technical doc for..."   -> technical
User: "Reply to this Reddit thread..." -> casual
User: "Write an email to my team..."   -> professional
```

## Register Loading

```bash
PROFILE_DIR="$HOME/.claude/voice-profiles/$PROFILE_NAME"
REGISTER_FILE="$PROFILE_DIR/registers/${REGISTER_NAME}.md"

if [ ! -f "$REGISTER_FILE" ]; then
  echo "Register '$REGISTER_NAME' not found. Available:"
  ls "$PROFILE_DIR/registers/"
  echo "Using default register."
  REGISTER_FILE="$PROFILE_DIR/registers/default.md"
fi
```

## Inheritance

Non-default registers inherit from default unless they
explicitly override a section. When loading a non-default
register:

1. Read `default.md` as base
2. Read `{name}.md` for overrides and additions
3. Merge: override sections replace, additions append

## Listing Available Registers

When user asks what registers exist:

```bash
echo "Available voice registers for $PROFILE_NAME:"
for f in "$PROFILE_DIR/registers/"*.md; do
  name=$(basename "$f" .md)
  context=$(grep -A1 "^## Context" "$f" | tail -1)
  echo "  $name: $context"
done
```

modules/source-framing.md

---
module: source-framing
category: voice-generation
dependencies: []
estimated_tokens: 400
---

# Source Framing Module

How source material is framed in the prompt is the single
largest variable in output quality. Larger than voice rules.
Larger than model choice.

## The Framing Lever

When material is framed as "raw notes I'm still thinking
through," the output is dramatically better than when framed
as "a transcript to draw on" or a bare topic sentence.

The framing changes how the model relates to the material:
- Notes to think through -> text that feels like thinking
- Summaries to report on -> text that feels like reporting
- Transcripts to draw from -> text that feels like paraphrase

## Default Framing (always use)

```
Below are my rough notes on this topic. I'm still working
through these ideas and haven't settled on a final structure.
Use them as raw material for thinking, not as an outline
to follow:

---
{source_material}
---

Write a piece that engages with these ideas in the voice
described above. You don't need to cover everything in the
notes. Follow where the interesting threads lead.
```

## When User Provides Structured Input

If the user gives bullet points or an outline, still
reframe as notes:

```
Below are my working notes. These bullet points represent
threads I'm pulling on, not a structure to reproduce:

---
{bullet_points}
---
```

## When User Provides a Topic Only

If just a topic sentence or phrase:

```
I want to write about: {topic}

Here's what I'm thinking so far: I don't have notes yet,
but the angle I'm interested in is {topic}. Write an
exploratory piece that discovers its argument as it goes.
```

## Override Framings

Only use these if the user explicitly requests a different
relationship to the source material:

### "Preserve my structure"
```
Below is an outline I want to follow. Keep the structure
but write each section in the voice described above:
```

### "Respond to this"
```
Below is something I'm responding to. Write a response
in the voice described above:
```

### "Expand these points"
```
Below are key points I want to develop. Expand each one
into full prose in the voice described above:
```
Github ReposUpdated 3d 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-voice-generate",
      "sourceUrl": "https://clawhub.ai/athola/skills/nm-scribe-voice-generate",
      "sourceType": "profile",
      "confidence": "medium",
      "observedAt": "2026-10-12T00:24:24.802Z",
      "isPublic": true
    },
    {
      "factKey": "protocols",
      "category": "compatibility",
      "label": "Protocol compatibility",
      "value": "OpenClaw",
      "href": "https://www.xpersona.co/api/v1/agents/clawhub-athola-nm-scribe-voice-generate/contract",
      "sourceUrl": "https://www.xpersona.co/api/v1/agents/clawhub-athola-nm-scribe-voice-generate/contract",
      "sourceType": "contract",
      "confidence": "medium",
      "observedAt": "2026-10-12T00:24:24.802Z",
      "isPublic": true
    },
    {
      "factKey": "traction",
      "category": "adoption",
      "label": "Adoption signal",
      "value": "968 downloads",
      "href": "https://clawhub.ai/athola/nm-scribe-voice-generate",
      "sourceUrl": "https://clawhub.ai/athola/nm-scribe-voice-generate",
      "sourceType": "profile",
      "confidence": "medium",
      "observedAt": "2026-10-12T00:24:24.802Z",
      "isPublic": true
    },
    {
      "factKey": "latest_release",
      "category": "release",
      "label": "Latest release",
      "value": "1.9.19",
      "href": "https://clawhub.ai/athola/nm-scribe-voice-generate",
      "sourceUrl": "https://clawhub.ai/athola/nm-scribe-voice-generate",
      "sourceType": "release",
      "confidence": "medium",
      "observedAt": "2026-08-26T13:22:29.704Z",
      "isPublic": true
    },
    {
      "factKey": "handshake_status",
      "category": "security",
      "label": "Handshake status",
      "value": "UNKNOWN",
      "href": "https://www.xpersona.co/api/v1/agents/clawhub-athola-nm-scribe-voice-generate/trust",
      "sourceUrl": "https://www.xpersona.co/api/v1/agents/clawhub-athola-nm-scribe-voice-generate/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-voice-generate",
      "sourceUrl": "https://clawhub.ai/athola/nm-scribe-voice-generate",
      "sourceType": "release",
      "confidence": "medium",
      "observedAt": "2026-08-26T13:22:29.704Z",
      "isPublic": true
    }
  ]
}

Record generated Oct 12, 2026.

For crawlers

This page is free to read. The run-check above is the only paid part, and it answers HTTP 402 until it is paid. Everything else here is public.

  • One record, as JSON: card, facts, snapshot, contract, trust, changes, warnings, seen by, disagreements.
  • Every agent, one feed: /.well-known/ai-catalog.json
  • What this site sells, and the price: /.well-known/x402
  • Paid run-check: /api/v1/agents/clawhub-athola-nm-scribe-voice-generate/run-check

Sponsored

Ads related to voice-generate and adjacent AI workflows.