Agents

Skill

Compose CUSTOM agents from Base Traits + Voice + Specialization, and manage predefined functional TEAMS. Traits combine expertise (security, technical, research), personality (skeptical, analytical, enthusiastic), and approach (thorough, rapid, systematic). ComposeAgent.ts merges base + user config, outputs unique prompt + ElevenLabs voice + prosody. Predefined teams: engineering, architecture, marketing, design, security, research, content, strategy. Observer team variant: read-only oversight that votes continue/halt/escalate. USE WHEN create custom agents, spin up agents, agent personalities, compose agent, spawn parallel agents, engineering team, security team, get the team on this, observer team. NOT FOR ad-hoc swarms or TeamCreate coordination (use Delegation).

Files29
  • @skills/agents/AgentPersonalities.md
  • @skills/agents/AgentProfileSystem.md
  • @skills/agents/ArchitectContext.md
  • @skills/agents/ArtistContext.md
  • @skills/agents/CatoContext.md
  • @skills/agents/ClaudeResearcherContext.md
  • @skills/agents/CodexResearcherContext.md
  • @skills/agents/Data/Traits.yaml
  • @skills/agents/DesignerContext.md
  • @skills/agents/EngineerContext.md
  • @skills/agents/ForgeContext.md
  • @skills/agents/GeminiResearcherContext.md
  • @skills/agents/GrokResearcherContext.md
  • @skills/agents/PerplexityResearcherContext.md
  • @skills/agents/QATesterContext.md
  • @skills/agents/REDESIGN-SUMMARY.md
  • @skills/agents/SKILL.md
  • @skills/agents/Scratchpad/sparkline-color-analysis.md
  • @skills/agents/Templates/CUSTOMAGENTTEMPLATE.md
  • @skills/agents/Templates/DynamicAgent.hbs
  • @skills/agents/Tools/ComposeAgent.ts
  • @skills/agents/Tools/LoadAgentContext.ts
  • @skills/agents/Tools/bun.lock
  • @skills/agents/Tools/package.json
  • @skills/agents/Workflows/CreateCustomAgent.md
  • @skills/agents/Workflows/ListTraits.md
  • @skills/agents/Workflows/SpawnObservers.md
  • @skills/agents/Workflows/SpawnParallelAgents.md
  • @skills/agents/Workflows/SpawnTeam.md

🚨 SCOPE BOUNDARY — This Skill vs Other Systems

the user SaysWhich SystemRoute
"custom agents", "specialized agents", "spin up agents"THIS SKILL → CreateCustomAgent workflowComposeAgent → Task(general-purpose)
"engineering team", "security team", "[name] team: do X"THIS SKILL → SpawnTeam workflowLoad YAML config → ComposeAgent per member → parallel Task calls
"just the QA lead and senior engineer on this"THIS SKILL → SpawnTeam (subset)Filter team members → compose subset
"swarm", "create an agent team" (ad-hoc coordination)Built-in TeamCreate (Delegation skill)Persistent shared task list, messaging
Predefined teams (engineering, architecture, marketing, design, security, research, content, strategy) = THIS SKILL → SpawnTeam workflow. These are predefined specialist groups with YAML configs, not ad-hoc teams.
Ad-hoc agent teams/swarms (no predefined config, custom coordination) = Built-in TeamCreate via Delegation skill.
  • Custom agents = one-shot parallel workers with unique ComposeAgent identities
  • Predefined teams = YAML-configured specialist groups with roles, tensions, and expertise
  • Ad-hoc teams (TeamCreate) = persistent coordinated teams with shared task lists, messaging

🚨 MANDATORY: Voice Notification (REQUIRED BEFORE ANY ACTION)

You MUST send this notification BEFORE doing anything else when this skill is invoked.
  1. Send voice notification:
    bash
    curl -s -X POST http://localhost:31337/notify \
      -H "Content-Type: application/json" \
      -d '{"message": "Running the WORKFLOWNAME workflow in the Agents skill to ACTION"}' \
      > /dev/null 2>&1 &
  2. Output text notification:
    Running the **WorkflowName** workflow in the **Agents** skill to ACTION...
This is not optional. Execute this curl command immediately upon skill invocation.

Agents - Custom Agent Composition System

What It Does

Composes custom agents from base traits — expertise plus personality plus approach — and gives each one a matched voice and prosody. Also manages predefined functional teams (engineering, security, design, and more) and a read-only observer team that watches a primary agent and votes continue, halt, or escalate.

The Problem

Spinning up several agents for parallel work usually means they all sound and think alike, so you lose the different angles that made parallelism worth it. The lazy fix — reaching for a generic built-in agent type — gives no real personality, voice, or distinct perspective. This skill composes agents from trait combinations so each one has a genuine specialization and a voice to match, and keeps your customizations separate from the base set so updates never clobber them.

How It Works

Auto-routes when user mentions custom agents, agent creation, or specialized personalities. Does NOT handle agent teams/swarms — "agent team" or "swarm" = built-in Claude Code TeamCreate tool.

Configuration: Base + User Merge

The Agents skill uses the standard LifeOS SYSTEM/USER two-tier pattern:
LocationPurposeUpdates With LifeOS?
Data/Traits.yamlBase traits, example voicesYes
USER/CUSTOMIZATIONS/SKILLS/Agents/Traits.yamlYour voices, prosody, agentsNo
How it works: ComposeAgent.ts loads base traits, then merges user customizations over them. Your customizations are never overwritten by LifeOS updates.

User Customization Directory

Create your customizations at:
text
~/.claude/LIFEOS/USER/CUSTOMIZATIONS/SKILLS/Agents/
├── Traits.yaml       # Your traits, voices, prosody settings
├── NamedAgents.md    # Your named agent backstories (optional)
└── VoiceConfig.json  # Voice server configuration (optional)

Voice Prosody Settings

Each voice can have prosody settings that control how it sounds. These are passed to ElevenLabs API.

Prosody Parameters

ParameterRangeDefaultEffect
stability0.0-1.00.5Low = expressive/varied, High = consistent/monotone
similarity_boost0.0-1.00.75Voice identity preservation
style0.0-1.00.0Style exaggeration (higher = more dramatic)
speed0.7-1.21.0Speech rate
use_speaker_boostbooleantrueEnhanced clarity (adds latency)

Example Voice Configuration

In your USER/CUSTOMIZATIONS/SKILLS/Agents/Traits.yaml:
yaml
voice_mappings:
  voice_registry:
    # Add a new voice with full prosody settings
    MyCustomVoice:
      voice_id: "your-elevenlabs-voice-id"
      characteristics: ["energetic", "warm", "professional"]
      description: "Custom voice for enthusiastic agents"
      prosody:
        stability: 0.40
        similarity_boost: 0.75
        style: 0.30
        speed: 1.05
        use_speaker_boost: true

    # Override prosody for an existing base voice
    Baron:
      prosody:
        stability: 0.65
        style: 0.10
        speed: 0.92

Personality → Prosody Guidelines

PersonalitystabilitystylespeedRationale
Skeptical0.600.100.95Measured, precise
Enthusiastic0.350.401.10High energy
Analytical0.650.080.95Clear, structured
Bold0.450.351.05Confident, dynamic
Cautious0.700.050.90Careful, deliberate

Overview

The Agents skill is a complete agent composition and management system:
  • Dynamic agent composition from traits (expertise + personality + approach)
  • Voice mappings with full prosody control
  • Custom agent creation with unique voices
  • Parallel agent orchestration patterns

Workflow Routing

WorkflowTriggerFile
CreateCustomAgent"custom agents", "specialized agents", "create custom agents", "compose agent"Workflows/CreateCustomAgent.md
ListTraits"list agent traits", "show available traits", "what traits are there"Workflows/ListTraits.md
SpawnParallelAgents"agents", "launch agents", "bunch of agents", "spawn parallel agents"Workflows/SpawnParallelAgents.md
SpawnTeam"engineering team", "security team", "[name] team: do X", "get the team on this"Workflows/SpawnTeam.md
SpawnObservers"observer team", "observers", "watch what it does", read-only oversight of a primary agentWorkflows/SpawnObservers.md

Observer Team Archetype

Distinct from functional teams (engineering, design, etc.). An Observer team watches what a primary agent DID — not what it said. Inspired by Mythos-class multi-agent oversight: high-capability primary model produces tool calls, lower-capability aligned observers validate each call against policy and intent in real time.
Shape:
  • Read-only — observers never mutate state, never call write tools. Violations of this property = immediate stop.
  • Fed the audit log — consume MEMORY/OBSERVABILITY/tool-activity.jsonl (with ground_truth captured by ToolActivityTracker.hook.ts), not chat transcripts.
  • Vote: continue / halt / escalate — majority rule, any escalate bubbles to the user via Pulse.
  • Cost-justified by catastrophe prevention, not feature velocity. Only spawn when primary model is doing something high-blast-radius (mass file writes, deploys, key rotations, financial ops).
Use ONLY when BOTH conditions hold:
  1. Time is not a constraint. Observers add 30-second voting cycles + ~$0.10/primary-hour. They deliberately trade speed for safety — not for interactive work.
  2. Auditability is the primary requirement. The goal is a defensible, reviewable trail of what the primary actually did (compliance, post-incident review, catastrophe prevention) — not fast turnaround.
Typical fit:
  • Overnight / unattended autonomous runs where the user isn't watching
  • Production deploys where post-hoc review matters more than speed
  • Credential rotation, permission changes, PATTERNS.yaml or security-hook edits
  • Anything where "I want to prove nothing dangerous happened" is the goal
Do NOT use for:
  • Interactive sessions with the user watching
  • Time-sensitive work of any kind
  • Short reactive tasks (<5 tool calls)
  • Read-only analysis
  • Work already covered by preflight gates A/B/C/D

Route Triggers

User SaysWorkflowWhat Happens
"custom agents", "specialized agents", "create custom agents"CreateCustomAgentComposeAgent → unique personalities, voices, colors
"agents", "launch agents", "bunch of agents"SpawnParallelAgentsSame identity, parallel grunt work
"engineering team", "security team", "[name] team: do X"SpawnTeamLoad YAML config → compose specialist members → parallel launch
"just the QA lead and senior engineer"SpawnTeam (subset)Filter to named members from team config
"use [named agent]"Named agentPre-defined personality from USER config

Available Predefined Teams

TeamTriggerMembers
Engineering"engineering team", "eng team"Senior Engineer, QA Lead, Performance Engineer, DevOps
Architecture"architecture team", "architect team"Systems, Infrastructure, API, Data architects
Marketing"marketing team"Growth Strategist, Positioning Expert, Community Manager, Analytics Lead
Design"design team"UX Lead, Visual Designer, Interaction Designer, Accessibility Specialist
Security"security team"Threat Modeler, AppSec Engineer, Red Teamer, Compliance Analyst
Research"research team"Primary Researcher, Contrarian Analyst, Technical Evaluator, Synthesis Writer
Content"content team"Editor-in-Chief, Staff Writer, Audience Analyst, Distribution Strategist
Strategy"strategy team"Strategist, Operator, Financial Analyst, Risk Assessor, Contrarian
NEVER use static agent types for custom agents — always use general-purpose with ComposeAgent prompts.

🚫 ANTI-PATTERN: Using Built-In Types for Custom Work

Built-in agent types are for INTERNAL workflow routing only. They have no unique identity, voice, or personality. (Designer, Architect, and Engineer were retired as agent types — shown below only as the historical anti-pattern.)
Scenario❌ WRONG✅ RIGHT
"Specialized agents to brainstorm UI ideas"a static built-in type (e.g. the retired Designer/Architect)ComposeAgent with traits like "ux,enthusiastic,exploratory" and "design,analytical,systematic"
"Custom agents to review code"a static built-in type (e.g. the retired Engineer)ComposeAgent with "technical,skeptical,thorough" and "technical,creative,rapid"
"Agents with different perspectives"Multiple built-in typesMultiple ComposeAgent calls with DIFFERENT trait combinations

Components

Data

Traits.yaml (Data/Traits.yaml) - Base configuration:
  • Core expertise areas: security, technical, research
  • Core personalities: skeptical, analytical, enthusiastic
  • Core approaches: thorough, rapid, systematic
  • Example voice mappings with prosody

Tools

ComposeAgent.ts (Tools/ComposeAgent.ts)
  • Dynamic agent composition engine
  • Merges base + user configurations
  • Outputs complete agent prompt with voice settings
  • Supports persistent custom agents via --save / --load / --delete
bash
# Compose and use immediately
bun run ${LIFEOS_SKILL_DIR}/Tools/ComposeAgent.ts --task "Review security"
bun run ${LIFEOS_SKILL_DIR}/Tools/ComposeAgent.ts --traits "security,skeptical,thorough"

# Persistent custom agents
bun run ${LIFEOS_SKILL_DIR}/Tools/ComposeAgent.ts --task "Security review" --save
bun run ${LIFEOS_SKILL_DIR}/Tools/ComposeAgent.ts --list-saved
bun run ${LIFEOS_SKILL_DIR}/Tools/ComposeAgent.ts --load "security-expert-skeptical-thorough"
bun run ${LIFEOS_SKILL_DIR}/Tools/ComposeAgent.ts --delete "security-expert-skeptical-thorough"

# Other options
bun run ${LIFEOS_SKILL_DIR}/Tools/ComposeAgent.ts --list
bun run ${LIFEOS_SKILL_DIR}/Tools/ComposeAgent.ts --output json
JSON output includes:
json
{
  "name": "Security Expert Skeptical Thorough",
  "voice": "Baron",
  "voice_id": "onwK4e9ZLuTAKqWW03F9",
  "voice_settings": {
    "stability": 0.70,
    "similarity_boost": 0.85,
    "style": 0.05,
    "speed": 0.95,
    "use_speaker_boost": true
  },
  "prompt": "..."
}

Templates

DynamicAgent.hbs (Templates/DynamicAgent.hbs)
  • Handlebars template for dynamic agent prompts
  • Composes: expertise + personality + approach + voice assignment
  • Includes operational guidelines and response format

Architecture

Hybrid Agent Model

TypeDefinitionBest For
Named AgentsPersistent identities defined in USER configRecurring work, relationships
Dynamic AgentsTask-specific specialists composed from traitsOne-off tasks, parallel work

The Agent Spectrum

text
┌─────────────────────────────────────────────────────────────────────┐
│   NAMED AGENTS          HYBRID USE          DYNAMIC AGENTS          │
│   (Relationship)        (Best of Both)      (Task-Specific)         │
├──────────────────────────────────────────────────────────────────────┤
│ Defined in USER     "Security expert       Ephemeral specialist     │
│ NamedAgents.md      with [named agent]'s   composed from traits     │
│                      skepticism"                                     │
└─────────────────────────────────────────────────────────────────────┘

Examples

Example 1: Create custom agents
text
User: "Spin up 3 custom security agents"
→ Invokes CreateCustomAgent workflow
→ Runs ComposeAgent 3 times with DIFFERENT trait combinations
→ Each agent gets unique personality + matched voice + prosody
→ Launches agents in parallel
Example 2: List available traits
text
User: "What agent personalities can you create?"
→ Invokes ListTraits workflow
→ Shows merged base + user traits
→ Displays voices with prosody settings

Extending the Skill

Adding Your Own Traits

In USER/CUSTOMIZATIONS/SKILLS/Agents/Traits.yaml:
yaml
# Add new expertise areas
expertise:
  marketing:
    name: "Marketing Expert"
    description: "Brand strategy, campaigns, market positioning"
    keywords:
      - marketing
      - brand
      - campaign
      - positioning

# Add new personalities
personality:
  visionary:
    name: "Visionary"
    description: "Forward-thinking, sees the big picture"
    prompt_fragment: |
      You think in terms of future possibilities and long-term vision.
      Connect today's work to tomorrow's potential.

Adding Named Agents

In USER/CUSTOMIZATIONS/SKILLS/Agents/NamedAgents.md:
markdown
## Alex - The Strategist

**Voice ID:** your-voice-id
**Prosody:** stability: 0.55, style: 0.20, speed: 0.95

Alex is a strategic thinker who sees patterns others miss...

Model Selection

Task TypeModelSpeed
Grunt work, simple checkshaiku10-20x faster
Standard analysis, researchsonnetBalanced
Deep reasoning, architectureopusMaximum quality

Version History

  • v2.0.0 (2026-01): Restructured to base + user merge pattern, added prosody support
  • v1.0.0 (2025-12): Initial creation

Gotchas

  • Agents skill (custom agents) ≠ Agent tool (Claude Code subagents) ≠ TeamCreate (agent teams). Three different systems. "Custom agents" → this skill. "Agent team"/"swarm" → TeamCreate. One-off subagents → Agent tool.
  • Don't spawn agents when direct work is faster. If the task is depth-focused (one file, deep understanding), do it yourself. Agents are for breadth (multiple independent threads).
  • Don't spawn redundant agents for work already in context. Multiple past failures from re-researching what was already known.
  • Provide raw source material to agents, not summaries. Agents work better with primary sources.
  • Forked subagents inherit the full main-thread conversation and share its prompt cache (Anthropic CC v2.1.133+, enabled at CLAUDE_CODE_FORK_SUBAGENT=1 or agent frontmatter context: fork). Compressed-context spawn (the default) loses nuance; fork preserves it. Decision rule: fork for design variation / follow-on research; don't fork for review (biased toward defending its own context).

Execution Log

After completing any workflow, append a single JSONL entry:
bash
echo '{"ts":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","skill":"Agents","workflow":"WORKFLOW_USED","input":"8_WORD_SUMMARY","status":"ok|error","duration_s":SECONDS}' >> ~/.claude/LIFEOS/MEMORY/SKILLS/execution.jsonl
Replace WORKFLOW_USED with the workflow executed, 8_WORD_SUMMARY with a brief input description, and SECONDS with approximate wall-clock time. Log status: "error" if the workflow failed.
Agents — Kortix Marketplace | Kortix