跳到主要内容
知仓学习社ZHICANG

voice-learn

Improves a voice profile by learning from manual edits. Use after editing generated text to refine registers and close voice drift over time.

不碰外部(只输出文字)无严重或高危命中athola/claude-night-market

它会碰到什么

扫了多少3 个文本文件,10 KB
它会碰到什么不碰外部(只输出文字)
命中总数0 处
命中统计严重 0 · 高 0 · 中 0 · 低 0

这一栏是扫描器报的事实,不是结论。命中多不等于有毒(安全工具、规则库、示例脚本本来就会包含危险写法),命中少也不等于干净。它和你手上的凭据、文件、网络有什么关系,需要你自己看。

技能内容

Voice Learning Skill

Learn from user edits to improve the voice profile over time.

When NOT To Use

  • Building the first profile (use scribe:voice-extract)
  • Reviewing text without changing the profile (use

scribe:voice-review)

Method: Three-Stage Comparison

Every piece flows through three stages:

  1. Pre-review: Raw generation output (before review agents)
  2. Post-review: After user accepts/rejects advisory fixes
  3. Post-edit: User's manually edited final version

The learning agent compares stages 2 and 3 (post-review vs

post-edit) to identify patterns in what the user changed.

These patterns inform register and rule updates.

Core Rules

  1. Sharpen, don't add: Modify existing rules to cover new

patterns. Rule bloat degrades output.

  1. Tag specificity: Register-specific patterns go to

registers. Universal patterns go to craft rules or agents.

  1. Flag contradictions: Opposite patterns across pieces

require user resolution.

  1. Evidence threshold: Patterns need 3+ instances (or 1-2

matching existing accumulator entries) before becoming rules.

  1. Detection surface: Structural changes increase AI

detectability. Craft-level changes are neutral. Prefer

craft-level updates.

  1. Rule count check: Suggest consolidation if any section

has 8+ rules.

Required TodoWrite Items

  1. voice-learn:snapshots-loaded - All three stages read
  2. voice-learn:diff-analyzed - Changes categorized
  3. voice-learn:accumulator-checked - Prior patterns reviewed
  4. voice-learn:proposals-generated - Updates proposed
  5. voice-learn:user-approved - Changes accepted by user

Step 1: Load Snapshots

Load: @modules/snapshot-management

PROFILE_DIR="$HOME/.claude/voice-profiles/{name}"
SNAP_DIR="$PROFILE_DIR/learning/snapshots"

# Find the most recent snapshot set
# Format: {piece-name}-{timestamp}-{stage}.md

Read all three stages for the target piece.

Step 2: Diff Analysis

Load: @modules/pattern-analysis

Compare post-review vs post-edit. Categorize every change:

| Category | Example |

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

| Tone adjustment | Softened a claim, added hedge |

| Voice insertion | Added parenthetical, aside, humor |

| Structure change | Broke paragraph, reordered |

| Precision edit | Replaced vague with specific |

| Deletion | Removed fluff or decoration |

| Addition | Added context, example, anchor |

Step 3: Check Accumulator

Read learning/accumulator.json:

{
  "patterns": [
    {
      "id": "pat-001",
      "category": "tone_adjustment",
      "description": "Softens confident claims about tool capabilities",
      "instances": [
        {"piece": "blog-post-1", "date": "2026-04-08", "diff": "..."}
      ],
      "target": "register",
      "status": "accumulating",
      "first_seen": "2026-04-08",
      "last_seen": "2026-04-08"
    }
  ],
  "staleness_threshold_days": 30
}

Match new changes against existing patterns:

  • Semantic similarity (same category + similar description)
  • If match found: merge instance, check if threshold reached
  • If no match: create new accumulator entry

Step 4: Generate Proposals

For patterns that reach threshold (3+ instances or 1-2

matching prior accumulator entries with 2+ instances):

Apply (strong evidence)

## Proposed Update

**Pattern**: {description}
**Target**: {register file or craft-rules.md}
**Evidence**: {N instances across M pieces}

| Piece | Date | Change Made |
|-------|------|-------------|
| ... | ... | ... |

**Proposed edit**:
- File: {path}
- Section: {section name}
- Current: "{current text or 'new addition'}"
- Proposed: "{new text}"

Hold (insufficient evidence)

Add to accumulator with current instances. Report:

Holding: "{pattern description}" (N instances, need 3+)

Contradictions

If a new pattern contradicts an existing accumulator entry:

Contradiction detected:
- Existing: "{accumulator pattern}"
- New: "{contradicting pattern}"
- Resolution required: user must choose

Step 5: User Approval

Present proposals to user:

Learning found N patterns ready to apply:

[1] {pattern}: {proposed change}
    Evidence: {N instances}
    [a]pply / [s]kip / [v]iew evidence?

[2] ...

Apply approved changes to the target files.

Staleness

Patterns in the accumulator expire after staleness_threshold_days

(default 30). If a pattern hasn't recurred within that window,

it was likely a one-off preference rather than a voice trait.

On each learning pass, prune stale entries:

# Remove patterns older than threshold with < 3 instances

Snapshot Capture

The learning system captures snapshots automatically when

voice-review completes. Snapshot naming:

{piece-filename}-{YYYYMMDD-HHMMSS}-pre-review.md
{piece-filename}-{YYYYMMDD-HHMMSS}-post-review.md
{piece-filename}-{YYYYMMDD-HHMMSS}-post-edit.md

The post-edit snapshot is captured when the user runs

/voice-learn after finishing their manual edits.

Exit Criteria

  • Snapshots loaded and compared
  • Changes categorized
  • Accumulator checked and updated
  • Proposals generated for threshold patterns
  • User approved/rejected proposals
  • Approved changes applied to profile files
  • Stale accumulator entries pruned

想直接用这个技能?

本站把开放许可(MIT / Apache 等)的技能按仓库打包整理到网盘,点一下转存到你自己的网盘,不用一个个从 GitHub 拉。许可未声明的技能只给原始仓库链接,不打包。