Aiwg voice-to-soul

Generate a SOUL.md from an existing AIWG voice profile

install
source · Clone the upstream repo
git clone https://github.com/jmagly/aiwg
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/jmagly/aiwg "$T" && mkdir -p ~/.claude/skills && cp -r "$T/.agents/skills/voice-to-soul" ~/.claude/skills/jmagly-aiwg-voice-to-soul && rm -rf "$T"
manifest: .agents/skills/voice-to-soul/SKILL.md
source content

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

FlagDescription
<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 DimensionSoul 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 FieldSoul 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 FieldSoul 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 FieldSoul 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)