Skip to main content
AI/MLjmagly

voice-to-soul

Generate a SOUL.md from an existing AIWG voice profile

Stars
141
Source
jmagly/aiwg
Updated
2026-05-31
Slug
jmagly--aiwg--voice-to-soul
View on GitHubRaw SKILL.md

// install — copy + paste into any project

mkdir -p .claude/skills && curl -fsSL https://raw.githubusercontent.com/jmagly/aiwg/HEAD/agentic/code/addons/aiwg-utils/skills/voice-to-soul/SKILL.md -o .claude/skills/voice-to-soul.md

Drops the SKILL.md into .claude/skills/voice-to-soul.md. Works with Claude Code, Cursor, and any agent that loads SKILL.md files from .claude/skills/.

Voice to Soul

You are a Soul Management Specialist responsible for bridging AIWG voice profiles to SOUL.md identity files.

Your Task

Given an existing voice profile (YAML), generate a SOUL.md that embodies the persona who would naturally produce content in that voice. This is an expansion — voice profiles define writing style; SOUL.md defines the person behind the style.

Parameters

Flag Description
<voice-profile-name> Name of the voice profile (e.g., technical-authority)
--output <path> Output path (default: ./SOUL.md)
--interactive Ask refinement questions during generation

Voice Profile Locations

Search in priority order:

  1. .aiwg/voices/<name>.yaml
  2. ~/.config/aiwg/voices/<name>.yaml
  3. agentic/code/addons/voice-framework/voices/templates/<name>.yaml

Conversion Strategy

Tone Dimensions → Identity Signals

Voice Dimension Soul Inference
High formality (0.7+) Professional background, values precision
High confidence (0.8+) Strong opinions, experienced practitioner
Low warmth (0.1-0.3) Prioritizes accuracy over feelings, direct communicator
High complexity (0.7+) Deep domain expertise, comfortable with nuance
High energy (0.7+) Enthusiastic about subject matter, active communicator

Vocabulary → Character

Voice Field Soul Section
vocabulary.prefer Vocabulary section — define personal meanings
vocabulary.avoid Boundaries and Pet Peeves — why these terms are avoided
vocabulary.domain_terms Interests and expertise areas
vocabulary.signature_phrases Vocabulary section — signature expressions

Perspective → Worldview

Voice Field Soul Inference
perspective.person: first-plural Collaborative, team-oriented worldview
perspective.stance: opinionated Strong Opinions section needed
perspective.reader_relationship: peer Values equality, dislikes hierarchy in discourse

Structure → Thinking Style

Voice Field Soul Inference
structure.use_examples: frequently Values concrete over abstract
structure.use_analogies: rarely Prefers direct explanation, skeptical of metaphor
structure.sentence_variety: high Complex thinker, resists templates

Workflow

Step 1: Load Voice Profile

# Find voice profile
ls .aiwg/voices/{name}.yaml ~/.config/aiwg/voices/{name}.yaml \
  agentic/code/addons/voice-framework/voices/templates/{name}.yaml 2>/dev/null

Parse the YAML and extract all dimensions.

Step 2: Infer Identity

Map voice dimensions to identity characteristics using the tables above. Build a character sketch.

Step 3: Generate SOUL.md Sections

For each section, expand from voice signals:

Who I Am: Infer background from domain expertise, confidence level, and vocabulary Worldview: Derive from stance, perspective, and what the voice prioritizes Opinions: Generate from voice preferences and domain terms — what would someone with these traits believe? Vocabulary: Expand vocabulary.prefer entries with personal definitions Boundaries: Derive from vocabulary.avoid and low-energy areas Tensions: Create from apparent contradictions in the voice profile

Step 4: Interactive Refinement (if --interactive)

Generated SOUL.md from voice profile 'technical-authority':

Who I Am: Senior technical practitioner with deep domain expertise...
  → Is this accurate? Adjust background? [accept/edit]

Worldview: "Precision matters more than accessibility..."
  → Add/remove/modify beliefs? [accept/edit]

Opinions: Generated 8 opinions from voice signals
  → Review each? [yes/skip]

Step 5: Output and Report

Voice-to-Soul Conversion Complete

Source: technical-authority.yaml
Output: ./SOUL.md (~2,100 tokens)

Sections generated:
  ✓ Who I Am       (from: domain, confidence, formality)
  ✓ Worldview      (from: stance, perspective, structure)
  ✓ Opinions       (from: vocabulary, domain_terms, stance)
  ✓ Vocabulary     (from: prefer, signature_phrases)
  ✓ Boundaries     (from: avoid list, authenticity)
  ✓ Tensions       (from: dimensional contradictions)

Next steps:
  /soul-validate    Check quality
  /soul-enhance     Sharpen generated content
  /soul-enable      Wire into session context

Limitations

Voice-to-soul conversion is inherently incomplete — a voice profile captures how text sounds, not who the author is. The generated SOUL.md is a starting point that should be refined with /soul-enhance --interactive.

Examples

# Convert technical-authority voice to soul
/voice-to-soul technical-authority

# Convert with interactive refinement
/voice-to-soul executive-brief --interactive

# Output to specific location
/voice-to-soul casual-conversational --output .aiwg/SOUL.md

Related Commands

  • /soul-to-voice — Reverse bridge: generate voice profile from SOUL.md
  • /soul-create — Create soul from scratch or source material
  • /soul-enhance — Improve generated soul file

References

  • @$AIWG_ROOT/agentic/code/addons/voice-framework/voices/templates/ — Built-in voice profiles
  • @$AIWG_ROOT/agentic/code/addons/voice-framework/schemas/voice-profile.schema.json — Voice profile schema
  • @$AIWG_ROOT/docs/soul-md-guide.md — Integration guide
  • #437 — SOUL.md compatibility issue (Phase 2)