skills/conway-1968-how-do-committees-invent/SKILL.md
Apply Conway's homomorphism principle to multi-agent system design, recognizing that agent coordination structure predetermines system architecture and capability.
npx skillsauth add curiositech/windags-skills conway-1968-how-do-committees-inventInstall 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.
Source: "How Do Committees Invent?" by Melvin E. Conway (1968)
Description: Apply Conway's homomorphism principle to multi-agent system design, recognizing that agent coordination structure predetermines system architecture and capability.
Core insight: Agent coordination topology isn't infrastructure—it's an active constraint that makes certain solution architectures literally impossible to discover, regardless of agent capability.
Problem Complexity Assessment:
├─ Simple (< 3 sub-components)
│ └─ Use 1-2 agents with direct communication
├─ Moderate (3-6 sub-components)
│ ├─ If components are independent → Use 3-4 agents, minimal coordination
│ └─ If components must integrate → Use 2-3 agents, full communication mesh
└─ Complex (7+ sub-components)
├─ Can decompose cleanly → Use hierarchical coordination (5-8 agents)
├─ Requires tight integration → Limit to 3-4 agents, accept slower progress
└─ Unknown decomposition → Use single agent until structure emerges
If coordination needs are:
├─ Sequential handoffs → Use pipeline topology (A→B→C)
├─ Parallel + merge → Use star topology (A,B,C → D)
├─ Collaborative design → Use mesh topology (all-to-all)
├─ Hierarchical review → Use tree topology (leaves→branches→root)
└─ Exploratory research → Use single agent initially
Before delegating subtasks, check:
├─ Can you clearly define interfaces between subtasks?
│ ├─ Yes → Safe to delegate with defined communication
│ └─ No → Keep unified until interfaces emerge
├─ Will subtasks need runtime coordination?
│ ├─ Yes → Ensure agents can communicate during work
│ └─ No → Can use minimal coordination
└─ Is this delegation reversible if integration fails?
├─ Yes → Proceed with monitoring
└─ No → Consider keeping unified longer
Symptom: "We have 10 agents available, let's use them all to go faster" Detection: When agent count decisions are driven by availability rather than coordination topology Fix: Evaluate coordination requirements first, then determine optimal agent count. Often fewer agents with better coordination outperform many agents with poor coordination.
Symptom: Creating agent assignments without considering architectural implications Detection: When task decomposition focuses only on workload distribution, not system boundaries Fix: Design delegation as preliminary architecture. Map communication needs between subtasks before assigning agents.
Symptom: Restricting agent communication to "reduce overhead" then wondering why solutions are suboptimal Detection: Limited communication paths producing fast convergence to poor solutions Fix: Recognize communication restrictions as solution space constraints. Open necessary paths even if coordination seems expensive.
Symptom: Expecting better prompts or more capable agents to fix poorly integrated outputs Detection: Repeated integration failures despite agent improvements Fix: Examine coordination structure. Integration requires communication paths during design, not just assembly logic after completion.
Symptom: Trying to "fix" system architecture through output processing while keeping coordination unchanged Detection: Architecture problems persist despite multiple fix attempts that don't change agent coordination Fix: Change coordination topology to match desired architecture. The homomorphism cannot be bypassed.
Scenario: Design a REST API for an e-commerce platform
Poor approach (ignoring Conway):
Result: 6 separate API designs that don't integrate well, inconsistent patterns, authentication/authorization scattered across services
Conway-aware approach:
Coordination topology: Centralized with validation feedback loop System outcome: Coherent API with consistent patterns, clean service boundaries
Key insight: More agents created more disconnected subsystems because coordination topology was fragmented
Scenario: Generate comprehensive analysis of market trends with multiple data sources
Initial attempt:
Problem: Report-Writer receives incompatible analysis formats, trend timeframes don't align, competitor data uses different market segments than sizing data
Conway diagnosis: Pipeline topology created rigid boundaries, no coordination during analysis phase
Revised approach:
Key decision: Fewer agents with richer communication > more agents with handoff boundaries
Task completion checklist:
Don't use this skill for:
Use other skills instead:
When to delegate elsewhere:
data-ai
license: Apache-2.0 NOT for unrelated tasks outside this domain.
development
Use when designing caching strategies (cache-aside, write-through, write-behind), implementing distributed locks, building rate limiters, leaderboards, real-time streams (XADD/consumer groups), pub/sub, or tuning eviction policies. Triggers: thundering-herd on cache miss, dogpile on key expiry, Redlock vs SET-NX-PX choice, sliding-window rate limiter, hot-key on a single cluster slot, big-key blowup, MULTI/EXEC across slots, KEYS in production. NOT for Redis Cluster operations/admin (different domain), embedded KV (SQLite, leveldb), in-process LRU caches, or Memcached.
tools
Drawing the `'use client'` boundary correctly in React Server Components apps (Next.js App Router, RSC frameworks) — leaf-pushing, slot composition, serialization rules, and environment poisoning prevention. Grounded in react.dev and Next.js 16 docs.
development
Use when designing rate limiting for an API, choosing between token bucket / sliding window / leaky bucket / fixed window, implementing it in Redis, deciding edge (Cloudflare/Upstash) vs origin enforcement, sizing per-user vs per-IP vs per-endpoint quotas, returning the right 429 response with Retry-After, or fixing the boundary-burst bug in fixed-window limiters. Triggers: 429 too many requests, INCR + EXPIRE, ZADD + ZREMRANGEBYSCORE + ZCARD, X-RateLimit-Remaining header, Cloudflare WAF rate limiting rules, Upstash @upstash/ratelimit, leaky bucket shaping vs policing, distributed rate limiter consistency. NOT for DDoS mitigation specifically (different scale), CAPTCHA / bot management, full WAF design, or per-user quota billing.