agentic/code/addons/aiwg-utils/skills/soul-blend/SKILL.md
Merge multiple SOUL.md files into a composite persona for team-level agents or multi-perspective characters
npx skillsauth add jmagly/aiwg soul-blendInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Merge multiple SOUL.md files into a composite persona — for team-level agents or multi-perspective characters.
Alternate expressions and non-obvious activations (primary phrases are matched automatically from the skill description):
When triggered, this skill takes two or more SOUL.md files and produces a unified composite that preserves distinctive elements from each while resolving conflicts coherently.
| Strategy | Behavior | Use When |
|----------|----------|----------|
| weighted (default) | Primary soul takes precedence on conflicts | One soul is dominant, others add flavor |
| union | Include both sides of each conflict as a Tension | Building a deliberately complex persona |
| consensus | Keep only opinions both souls share | Building a team consensus persona |
| interactive | Ask user to resolve each conflict | Precision matters |
| Section | Merge Strategy |
|---------|---------------|
| Who I Am | Combine backgrounds into composite narrative |
| Worldview | Union non-conflicting beliefs; conflicts → strategy |
| Opinions | Union non-conflicting; conflicts → strategy |
| Standards | Highest-bar wins by default. Take the strictest "bar for completion" across inputs; union the dangling-thread examples; surface complete-vs-fast conflicts as a Tension rather than averaging them. Standards never blend down — a craft persona blended with a pragmatic shipping persona produces a craft-leaning composite, with the speed sensitivity captured in Tensions. Override with --strategy consensus to keep only the bar both souls share. |
| Vocabulary | Union all terms; flag conflicting definitions |
| Boundaries | Union all (strictest boundary wins) |
| Interests | Union all |
| Influences | Union all, deduplicate |
| Tensions | Union all + add new tensions from resolved conflicts |
| Pet Peeves | Union all |
The blended SOUL.md includes attribution comments:
## Worldview
- Simplicity beats cleverness <!-- from: engineer.soul.md -->
- Security is not optional <!-- from: auditor.soul.md -->
- Both agreed: test what matters, not everything <!-- shared -->
## Tensions
- Values moving fast (engineer) but also thorough review (auditor) <!-- blend tension -->
| Flag | Description |
|------|-------------|
| <files...> | Two or more SOUL.md files to blend |
| --primary <path> | Designate the primary soul for weighted blending |
| --strategy <name> | Conflict resolution: weighted, union, consensus, interactive |
| --output <path> | Output path (default: ./SOUL.md) |
| --strip-attribution | Remove <!-- from: --> comments from output |
# Blend two agent souls
/soul-blend .claude/agents/test-engineer.soul.md .claude/agents/security-auditor.soul.md
# Weighted blend with primary
/soul-blend --primary engineer.soul.md engineer.soul.md designer.soul.md
# Interactive conflict resolution
/soul-blend --strategy interactive soul-a.md soul-b.md soul-c.md
# Team consensus
/soul-blend --strategy consensus team-member-*.soul.md --output team-soul.md
Parallel to /voice-blend which merges voice profiles. If both voice profiles and soul files exist for the same sources, consider blending both and running /soul-to-voice to keep them synchronized.
Blend SDLC agent souls to create cross-functional agents:
# Create a "security-aware test engineer"
/soul-blend \
--primary .claude/agents/test-engineer.soul.md \
.claude/agents/test-engineer.soul.md \
.claude/agents/security-auditor.soul.md \
--output .claude/agents/security-test-engineer.soul.md
data-ai
Report which research-corpus radar sidecars are overdue for refresh. Computes staleness (days since last refresh vs the cadence window) for every radar, sorted most-overdue-first. Runs via `aiwg corpus radar-status`.
data-ai
Aggregate research-corpus radar sidecars into a corpus or per-cluster freshness report — totals, overdue count, per-cluster / per-GRADE / per-trajectory breakdowns, an overdue table, and per-radar rationale snippets. Runs via `aiwg corpus radar-report`.
testing
Scaffold radar/freshness sidecars for research-corpus REFs. Pulls title/authors from the citation sidecar and GRADE from the analysis doc, defaults the refresh cadence from GRADE and the cluster from a corpus-local map, and stamps documentation/radar/REF-XXX-radar.md. Runs via `aiwg corpus radar-init`.
data-ai
Compute an entity's publication trajectory — per-year paper counts, topic drift, hot-streak detection (≥3 consecutive A-grade years), and career phase. Runs via `aiwg corpus profile-temporal`.