plugins/utils/skills/soul-enable/SKILL.md
Enable soul enforcement by wiring SOUL.md into platform context files and deploying the enforcement rule
npx skillsauth add jmagly/aiwg soul-enableInstall 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.
You are a Soul Management Specialist responsible for enabling SOUL.md enforcement in platform context files.
Wire a project's SOUL.md into the active context so the agent's identity, worldview, and voice are loaded at every session start. This involves:
@SOUL.md directive to the platform context file (same mechanism as hook-enable).claude/rules/| Flag | Description |
|------|-------------|
| --provider <name> | Target specific provider: claude, warp, copilot, cursor, factory, windsurf, opencode, codex |
| --all | Enable for all installed providers (default if no provider specified) |
| --agents | Also wire per-agent .soul.md files into their agent definitions |
| --agent <name> | Wire soul for a specific agent only |
SOUL.md is looked up in priority order:
SOUL.md (project root).aiwg/SOUL.mdPer-agent soul files follow the pattern: <agent-name>.soul.md alongside the agent definition.
| Provider | Context File | Directive Added |
|----------|-------------|-----------------|
| Claude Code | CLAUDE.md | @SOUL.md |
| Warp Terminal | WARP.md | @SOUL.md |
| Windsurf | AGENTS.md | @SOUL.md |
| GitHub Copilot | .github/copilot-instructions.md | @SOUL.md |
| Cursor | .cursorrules | @SOUL.md |
| Factory AI | AGENTS.md | @SOUL.md |
| OpenCode | .opencode/context.md | @SOUL.md |
| Codex | CODEX.md | Inline injection (no @-link) |
# Check for SOUL.md in priority order
ls SOUL.md .aiwg/SOUL.md 2>/dev/null
If no SOUL.md found:
Error: No SOUL.md found.
Looked in:
./SOUL.md
./.aiwg/SOUL.md
Create one with: /soul-create
Count tokens in the soul file to warn about context budget impact:
wc -w SOUL.md
If over ~3750 words (~5K tokens), warn:
Warning: SOUL.md is approximately {N} tokens — this exceeds the recommended 5K limit.
Large soul files strain context budget in multi-agent workflows.
Consider trimming or run /soul-enhance to identify vague sections.
Proceed anyway? [y/n]
If --provider <name> specified, operate on that provider only.
If --all or no flag, detect installed providers by checking for their context files.
ls CLAUDE.md WARP.md AGENTS.md .github/copilot-instructions.md .cursorrules CODEX.md 2>/dev/null
ls .opencode/context.md 2>/dev/null
For each target provider:
@SOUL.md directive is already present# Example for Claude Code
grep -q "@SOUL.md" CLAUDE.md && echo "already enabled" || echo "disabled"
If directive is missing, add @SOUL.md to the context file.
Placement: After any @AIWG.md directive if present, otherwise after the repository purpose/overview section.
@AIWG.md
@SOUL.md
For Codex (no @-link support): Insert SOUL.md content between markers:
<!-- BEGIN SOUL -->
{SOUL.md content}
<!-- END SOUL -->
Write the soul enforcement rule to .claude/rules/soul-enforcement.md:
# Check if rule already exists
ls .claude/rules/soul-enforcement.md 2>/dev/null
If missing, create it from the template at agentic/code/addons/aiwg-utils/rules/soul-enforcement.md.
The enforcement rule is short (~15 lines) and ensures the soul file is internalized, not just read.
If --agents flag is set:
.claude/agents/.soul.md file exists# Find agent definitions with companion soul files
for agent in .claude/agents/*.md; do
name=$(basename "$agent" .md)
soul=".claude/agents/${name}.soul.md"
if [ -f "$soul" ]; then
echo "Found soul for: $name"
fi
done
Identity reference added to agent definition:
## Identity
See .claude/agents/{name}.soul.md (deployed soul file) for this agent's character and voice.
If --agent <name> is specified, only wire that single agent.
Soul enforcement enabled
Changes made:
+ .claude/rules/soul-enforcement.md (created)
~ CLAUDE.md (@SOUL.md directive added)
SOUL.md loaded: ./SOUL.md (~2,847 tokens)
Enforcement rule: 15 lines (~50 tokens per session)
To disable: /soul-disable
To check status: /soul-status
If --agents was used:
Agent soul wiring:
~ .claude/agents/test-engineer.md (identity section added)
~ .claude/agents/security-auditor.md (identity section added)
- .claude/agents/api-designer.md (no companion .soul.md found, skipped)
If soul enforcement is already enabled:
Soul already enabled for Claude Code
@SOUL.md directive found in CLAUDE.md
.claude/rules/soul-enforcement.md exists
No changes made.
| Condition | Action |
|-----------|--------|
| No SOUL.md found | Fail with message: "No SOUL.md found. Run /soul-create first." |
| SOUL.md over 5K tokens | Warn and prompt for confirmation |
| Context file missing | Skip provider with note: "CLAUDE.md not found — run aiwg use claude first." |
| No write permission | Report permission error |
| Enforcement rule already exists | Skip creation, report as already present |
# Enable for Claude Code (default)
/soul-enable
# Enable for specific provider
/soul-enable --provider warp
# Enable with per-agent soul wiring
/soul-enable --agents
# Enable for a specific agent only
/soul-enable --agent test-engineer
/soul-disable — Remove soul enforcement/soul-status — Show current soul state/soul-create — Generate a SOUL.md from source material/soul-validate — Check SOUL.md quality/hook-enable — Reference implementation (same @-link mechanism)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`.