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:
tools
Building resilient distributed systems with circuit breakers, retries with full-jitter exponential backoff, retry budgets (per-request 3-attempt + per-client 10% ratio per Google SRE), deadline propagation, and the cascading-failure math (4 layers × 3 retries = 64x amplification). Grounded in Resilience4j, Microsoft Cloud Patterns, AWS Architecture Blog (Marc Brooker), and Google SRE Book.
testing
Designing HTTP cache headers that work correctly across browsers, CDNs, and shared proxies — `Cache-Control` directives per RFC 9111, `stale-while-revalidate` and `stale-if-error` per RFC 5861, the Vary header for varying responses, and surrogate keys for tag-based purging. Grounded in IETF RFCs and Cloudflare/Fastly docs.
development
Use when designing or fixing a Content Security Policy on a real site, choosing between nonce-based and hash-based CSP, adding strict-dynamic, debugging "Refused to execute inline script" errors, deploying CSP in report-only mode first, configuring report-to / report-uri, or auditing an existing policy for unsafe-inline / unsafe-eval / wildcards. Triggers: "CSP blocks legitimate inline script", strict-dynamic, nonce-{RANDOM}, sha256-{HASH}, object-src none, base-uri none, frame-ancestors, Trusted Types, X-Content-Security-Policy obsolete, report-only vs enforced. NOT for general HTTP security headers (HSTS, COOP/COEP), Trusted Types deep dive, CORS configuration, or building a WAF.
tools
Choosing and operating an HTTP API versioning strategy that doesn't break clients — Stripe's date-based pinned versions, the Deprecation/Sunset header pair (RFC 9745 + RFC 8594), URI vs header vs media-type approaches, and the version-transformer pattern. Grounded in Stripe's published architecture and IETF RFCs.