/voice-to-soul
Generate a SOUL.md from an existing AIWG voice profile
$ npx -y skills add jmagly/aiwg --skill voice-to-soul --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
- You can call itInvoke it directly when you want it.
- Slash command
/voice-to-soul
Context preview
The summary Claude sees to decide when to auto-load this skill.
Generate a SOUL.md from an existing AIWG voice profile
SKILL.md
voice-to-soul.SKILL.mdnamespace: aiwg
name: voice-to-soul
platforms: [all]
description: Generate a SOUL.md from an existing AIWG voice profile
commandHint:
argumentHint: "<voice-profile-name> [--output <path>] [--interactive]"
allowedTools: Read, Write, Bash, Glob
model: haiku
category: soul-management
modelRole: efficiency
modelTier: economy
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/nullParse 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)
Read more
namespace: aiwg name: voice-to-soul platforms: [all] description: Generate a SOUL.md from an existing AIWG voice profile commandHint: argumentHint: "<voice-profile-name> [--output <path>] [--interactive]" allowedTools: Read, Write, Bash, Glob model: haiku category: soul-management modelRole: efficiency modelTier: economy
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/nullParse 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)
Multi-agent AI framework for Claude Code, Copilot, Cursor, Warp, and 6 more platforms 200+ agents, 109+ CLI commands, 400+ deployable agent/skill/command/rule artifacts, 8 core frameworks, 32 addons, and a 40-plugin Claude Code marketplace.
Repo: jmagly/aiwg
Other skills on aiwg.
- /agent-loop-ext
Crash-resilient external agent loop with state persistence and CI/CD integration
Open skill - /agent-loop
Detect requests for iterative autonomous agent loops and route to the appropriate loop executor
Open skill - /auto-test-execution
Automatically execute tests when code-generating agents modify source files, enforcing the execute-before-return pattern
Open skill - /cross-task-learner
Enable agent loops to learn from similar past tasks and share patterns across loops
Open skill - /debug-memory
Query and manage the executable feedback debug memory
Open skill - /execute-feedback
Execute tests on generated code and iterate until passing
Open skill

