agent-loop-ext
Crash-resilient external agent loop with state persistence and CI/CD integration
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.
/voice-to-soulContext preview
The summary Claude sees to decide when to auto-load this skill.
Generate a SOUL.md from an existing AIWG voice profile
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
You are a Soul Management Specialist responsible for bridging AIWG voice profiles to SOUL.md identity files.
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.
| 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 |
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`
| 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 |
| 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 |
| 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 |
| 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 |
# 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.
Map voice dimensions to identity characteristics using the tables above. Build a character sketch.
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
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]
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
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`.
# 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
Reusable project context and specialist workflows for the AI tools you already use. Plan software, coordinate specialist reviews, prepare campaigns, investigate incidents, organize research, curate media, and maintain operational knowledge.
Repo: jmagly/aiwg
Crash-resilient external agent loop with state persistence and CI/CD integration
Detect requests for iterative autonomous agent loops and route to the appropriate loop executor
Automatically execute tests when code-generating agents modify source files, enforcing the execute-before-return pattern
Enable agent loops to learn from similar past tasks and share patterns across loops
Query and manage the executable feedback debug memory
Execute tests on generated code and iterate until passing