Codex

voice-to-soul

Generate a SOUL.md from an existing AIWG voice profile

104 stars

Best use case

voice-to-soul is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

It is a strong fit for teams already working in Codex.

Generate a SOUL.md from an existing AIWG voice profile

Teams using voice-to-soul should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/voice-to-soul/SKILL.md --create-dirs "https://raw.githubusercontent.com/jmagly/aiwg/main/.agents/skills/voice-to-soul/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/voice-to-soul/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How voice-to-soul Compares

Feature / Agentvoice-to-soulStandard Approach
Platform SupportCodexLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

Generate a SOUL.md from an existing AIWG voice profile

Which AI agents support this skill?

This skill is designed for Codex.

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

Related Guides

SKILL.md Source

# 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

```bash
# 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

```bash
# 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)

Related Skills

voice-create

104
from jmagly/aiwg

Generate custom voice profiles from natural language descriptions by mapping tone, formality, and domain to voice dimensions

Codex

voice-blend

104
from jmagly/aiwg

Combine multiple voice profiles with weighted mixing to create hybrid voices

Codex

voice-apply

104
from jmagly/aiwg

Applies a voice profile to transform content. Use when user asks to write in a specific voice, match a tone, apply a style, or transform content to sound like a particular voice profile.

Codex

voice-analyze

104
from jmagly/aiwg

Reverse-engineer voice profiles from sample content by analyzing writing patterns

Codex

soul-validate

104
from jmagly/aiwg

Validate a SOUL.md file against community best practices and quality criteria

Codex

soul-to-voice

104
from jmagly/aiwg

Generate an AIWG voice profile from an existing SOUL.md identity file

Codex

soul-status

104
from jmagly/aiwg

Show SOUL.md enforcement state across all installed providers with quality check

Codex

soul-enhance

104
from jmagly/aiwg

Improve an existing SOUL.md by identifying vague sections, suggesting missing content, and generating calibration examples

Codex

soul-enable

104
from jmagly/aiwg

Enable soul enforcement by wiring SOUL.md into platform context files and deploying the enforcement rule

Codex

soul-disable

104
from jmagly/aiwg

Disable soul enforcement without deleting SOUL.md or soul files

Codex

soul-create

104
from jmagly/aiwg

Generate a SOUL.md identity file from source material, interactive prompts, or an existing voice profile

Codex

soul-blend

104
from jmagly/aiwg

Merge multiple SOUL.md files into a composite persona for team-level agents or multi-perspective characters

Codex