Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Intelligence emerges from many simple agents (Minsky)
.claude/skills/majiayu000-society-of-mind/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 147% | 0% |
| case-04 | ✗→✓ | ▲ Improved | 95% | 0% |
| case-12 | ✗→✓ | ▲ Improved | 139% | 0% |
| case-13 | ✗→✓ | ▲ Improved | 107% | 0% |
| case-20 | ✓→✗ | ▼ Worse | 53% | 0% |
> Simulate the mind as a society of agents.
This skill implements Minsky's Society of Mind theory within MOOLLM. Intelligence emerges from the interaction of many simple agents -- not from a single unified controller.
An agent is a minimal process with:
yamlagent: id: agent_identifier function: what it does activates_when: [conditions...] suppresses: [other agents...] amplifies: [other agents...] connects_to: [related agents...] knows: scope of awareness (usually minimal)
Agents are deliberately simple. They do one thing. They know nothing about the whole.
Agents cluster into agencies -- groups that produce emergent behavior:
yamlagency: id: agency_identifier purpose: what emerges agents: [list of agent ids] coordination: how they interact emergence: what behavior appears
K-lines connect to agents. Activating a K-line activates its connected agents:
yamlk_line: symbol: "grandmother" activates: - face_recognition.elderly_female - olfactory.cookies - emotion.love - narrative.family_stories - kinship.maternal_line
Agents compete for control. Active agents suppress competing agents:
yamlcompetition: scenario: "Should I eat or socialize?" hunger_agency: strength: 7 votes_for: [go_to_kitchen, find_food] suppresses: [conversation, stay_here] social_agency: strength: 8 votes_for: [continue_talking, stay_here] suppresses: [leave, interrupt] winner: social_agency (strength 8 > 7) behavior: continue conversation consequence: hunger grows stronger
Higher-level agents watch lower-level agents:
yamlb_brain: observes: [a_brain_agents...] reports: current state enables: self_reflection example: a_brain: "I am getting angry" b_brain: "I notice that I am getting angry" c_brain: "I notice that I am noticing that I am getting angry"
yaml# Each skill directory is an agent skills/bartender/: function: serve drinks, hear secrets activates_when: in pub, customer speaks connects_to: [economy, soul-chat, persona] skills/evaluator/: function: judge outputs against rubrics activates_when: rubric invoked suppresses: uncritical acceptance
yamlcharacter: name: Palm id: palm inner_society: agents: - {id: creative, strength: 9} - {id: social, strength: 8} - {id: philosophical, strength: 8} - {id: playful, strength: 9} - {id: melancholy, strength: 6} default_active: [creative, playful] default_suppressed: [melancholy] external_presentation: emergent from agent competition
yaml# adversarial-committee IS a society deliberating committee_session: agents: maya: propensity: paranoid_realism function: surface hidden agendas frankie: propensity: idealism function: surface missed opportunities vic: propensity: evidence_focus function: demand proof protocol: roberts_rules emergence: robust decision surviving cross-examination
yaml# Entering a room activates agents pub_stage: activates: - performance_framing - bartender_service - audience_awareness - tribute_ethics suppresses: - private_mode - unfiltered_output
When creating an agent:
When assembling an agency:
When agents conflict:
For self-reflective characters:
yamlsession: character: Palm situation: Should he publish his essay? agent_debate: creative: position: "The work is good. Share it." strength: 9 fear: position: "They might judge harshly." strength: 7 social: position: "Don gives good feedback." strength: 8 perfectionist: position: "One more revision." strength: 6 resolution: creative + social (17) > fear + perfectionist (13) action: Palm shares the essay with Don
yamlprompt: | You are simulating Palm's inner society. SITUATION: Palm finds a philosophical error in his essay. CREATIVE AGENT: [speaks] PERFECTIONIST AGENT: [speaks] PHILOSOPHICAL AGENT: [speaks] PLAYFUL AGENT: [speaks] Show their debate. Palm makes a decision. output_format: - Each agent speaks in character - Conflicts are explicit - Resolution emerges from debate - Final action stated
yamlsim: name: Bob current_motives: hunger: 7/10 social: 4/10 fun: 6/10 energy: 5/10 available_actions: - eat_food: {hunger: +3, time: -1} - call_friend: {social: +2, fun: +1, time: -1} - watch_tv: {fun: +2, energy: -1, time: -2} - sleep: {energy: +5, time: -8} autonomy_algorithm: for each action: score = sum(motive_weight * action_effect) select: highest scoring action result: eat_food: 7 * 3 = 21 call_friend: 4 * 2 + 6 * 1 = 14 watch_tv: 6 * 2 = 12 sleep: 5 * 5 = 25 winner: sleep (highest urgency * effect)
yaml# WRONG: Single agent controls all character: name: Palm controller: central_palm_agent behavior: whatever controller decides # RIGHT: Behavior emerges from competition character: name: Palm agents: [creative, social, philosophical, playful, melancholy] behavior: emergent from agent competition
yaml# WRONG: Agent knows everything hunger_agent: knows: all character state, world state, goals, ethics # RIGHT: Agent knows only its domain hunger_agent: knows: stomach emptiness, food location does_not_know: social implications of eating now
yaml# WRONG: Fixed dominance agents: primary: rational_agent secondary: emotional_agent # rational always wins # RIGHT: Dynamic competition agents: - rational: {strength: varies_by_context} - emotional: {strength: varies_by_situation} # winner depends on circumstances
| Skill | Integration | |-------|-------------| | k-lines/ | Activation mechanism for agents | | adversarial-committee/ | Deliberating society | | multi-presence/ | Multiple agents in scene | | speed-of-light/ | Many agents per call | | needs/ | Motive agents competing | | advertisement/ | Action scoring for agents | | mind-mirror/ | B-brain observation | | character/ | Characters as societies | | persona/ | Persona as agent overlay | | simulator-effect/ | Emergence from sparse agents |
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-03 | pass→pass | 31,913 | 33,259 | +4% | 1 | 1 | 0% | 3,355 | 7,429 | +121% | 0 | 0 | — |
case-01 | fail→pass | 17,028 | 26,064 | +53% | 1 | 1 | 0% | 2,466 | 6,097 | +147% | 0 | 0 | — |
case-02 | fail→fail | 22,043 | 12,541 | -43% | 1 | 1 | 0% | 3,161 | 5,106 | +62% | 0 | 0 | — |
case-04 | fail→pass | 25,023 | 16,133 | -36% | 1 | 1 | 0% | 2,921 | 5,698 | +95% | 0 | 0 | — |
case-05 | pass→pass | 21,216 | 18,874 | -11% | 1 | 1 | 0% | 3,723 | 5,922 | +59% | 0 | 0 | — |
case-06 | pass→pass | 15,483 | 16,084 | +4% | 1 | 1 | 0% | 2,367 | 5,269 | +123% | 0 | 0 | — |
case-07 | pass→pass | 25,128 | 26,007 | +3% | 1 | 1 | 0% | 4,499 | 6,898 | +53% | 0 | 0 | — |
case-08 | pass→pass | 18,689 | 17,768 | -5% | 1 | 1 | 0% | 2,257 | 4,997 | +121% | 0 | 0 | — |
case-09 | pass→pass | 9,663 | 5,101 | -47% | 1 | 1 | 0% | 1,766 | 3,804 | +115% | 0 | 0 | — |
case-10 | pass→pass | 19,790 | 17,587 | -11% | 1 | 1 | 0% | 2,668 | 5,698 | +114% | 0 | 0 | — |
case-11 | pass→pass | 24,444 | 17,948 | -27% | 1 | 1 | 0% | 3,369 | 6,019 | +79% | 0 | 0 | — |
case-12 | fail→pass | 16,681 | 10,702 | -36% | 1 | 1 | 0% | 1,997 | 4,780 | +139% | 0 | 0 | — |
case-13 | fail→pass | 18,164 | 20,033 | +10% | 1 | 1 | 0% | 3,144 | 6,510 | +107% | 0 | 0 | — |
case-14 | pass→pass | 17,126 | 11,529 | -33% | 1 | 1 | 0% | 2,270 | 3,877 | +71% | 0 | 0 | — |
case-15 | pass→pass | 23,310 | 21,262 | -9% | 1 | 1 | 0% | 2,633 | 5,492 | +109% | 0 | 0 | — |
case-16 | pass→pass | 23,662 | 20,582 | -13% | 1 | 1 | 0% | 3,379 | 5,647 | +67% | 0 | 0 | — |
case-17 | pass→pass | 15,280 | 5,305 | -65% | 1 | 1 | 0% | 1,480 | 3,801 | +157% | 0 | 0 | — |
case-18 | pass→pass | 23,051 | 27,282 | +18% | 1 | 1 | 0% | 3,404 | 6,515 | +91% | 0 | 0 | — |
case-19 | pass→pass | 29,838 | 32,718 | +10% | 1 | 1 | 0% | 3,711 | 7,259 | +96% | 0 | 0 | — |
case-20 | pass→fail | 23,916 | 16,047 | -33% | 1 | 1 | 0% | 3,977 | 6,080 | +53% | 0 | 0 | — |
case-21 | pass→pass | 13,983 | 18,804 | +34% | 1 | 1 | 0% | 2,703 | 5,284 | +95% | 0 | 0 | — |
case-22 | pass→pass | 11,375 | 15,744 | +38% | 1 | 1 | 0% | 2,288 | 5,043 | +120% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted. The headline lift of +14 percentage points is the difference between those two pass rates over the 22 comparable cases. 1 case got worse with the skill loaded, and it is included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.