skills/wooldridge-multiagent-intro/SKILL.md
Comprehensive introduction to multi-agent systems covering coordination, communication, and distributed AI theory
npx skillsauth add curiositech/windags-skills wooldridge-multiagent-introInstall 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.
license: Apache-2.0
Load this skill when facing:
Don't use this skill for: Single-agent planning problems, centralized optimization, systems where "agents" are just objects with methods (no real autonomy), LLM prompt engineering (unless building true multiagent LLM systems).
The principle: Agent architecture complexity must match environment observability and dynamics, not domain sophistication.
The framework:
Fully observable + Deterministic + Static → Simple reactive suffices
Partially observable → Need internal state (belief tracking)
Non-deterministic → Need contingency planning or probabilistic reasoning
Dynamic → Need real-time responsiveness (limit deliberation cycles)
Continuous + Dynamic → Hybrid architectures mandatory (reactive layer + deliberative layer)
Why it matters: Starting with "what cool AI should the agent have?" inverts the design process. A Mars rover (inaccessible, partially observable, dynamic environment) needs fundamentally different architecture than a chess program (fully observable, deterministic, static), regardless of domain complexity. Environment characterization determines minimum viable architecture; domain determines sufficient capability.
The test: Can you specify your environment on these axes: accessible, deterministic, episodic, static, discrete? If not, you can't make principled architecture decisions yet.
The principle: An agent differs from an object because it encapsulates control—it decides whether to act on requests, not just how.
The inversion:
object.method() → immediate execution)Why it matters: This isn't philosophical—it's architectural. In distributed systems without global locks or guaranteed response times, you can't rely on synchronous control flow. "Agent-oriented" design means specifying desired behavior under the constraint that you cannot dictate execution. This forces explicit reasoning about:
The error: Treating agents as asynchronous objects. True agent systems require speech act semantics, commitment models, or contract protocols—mechanisms that acknowledge control inversion.
The principle: Coordination requirements emerge from environment properties (partial observability, non-determinism, resource contention), not from a design preference for "collaboration."
The forcing function:
The DVMT example (Distributed Vehicle Monitoring Testbed): Aircraft tracking with non-overlapping sensor coverage. No single agent can track a vehicle across its entire trajectory. Coordination isn't "nice"—it's the only way to maintain continuous tracks. The question shifts from "should we coordinate?" to "what's the minimal coordination protocol that prevents track loss?"
Design implication: Characterize environment first → identify coordination necessities → design minimal sufficient protocols. Over-coordinating wastes bandwidth/cycles; under-coordinating causes failures.
The principle (Kinny & Georgeff experiments): Agent boldness—how persistently it pursues goals despite changing circumstances—must track environment volatility.
The empirical result:
The tuning parameter: Meta-level strategy determining reconsideration frequency. No universal "best practice"—optimal boldness is environment-dependent.
Why it matters:
Design question: What's your environment's change rate relative to deliberation cost? If changes happen faster than replanning, you need reactive layers or approximate methods.
The formal result (Coordinated Attack Problem): Without guaranteed message delivery, common knowledge of any fact requires infinite message exchange. Even with guarantees, establishing "everyone knows that everyone knows that..." requires costly protocol rounds.
The hierarchy:
Individual knowledge: Agent i knows φ
Everyone knows: Every agent knows φ (but may not know others know)
Common knowledge: Everyone knows φ, everyone knows everyone knows φ, ad infinitum
Distributed knowledge: An omniscient observer combining all agents' knowledge could deduce φ
The pragmatic implications:
Design heuristic: Start with distributed knowledge requirements (what must be collectively knowable?), escalate to common knowledge only when proven necessary (what must everyone know everyone knows?), verify your communication model can actually establish it.
IF environment is:
Fully observable + deterministic + static
→ Simple reflex agent (stimulus-response)
Partially observable OR non-deterministic
→ Deliberative agent with belief state tracking
Dynamic + real-time constraints
→ Hybrid architecture (reactive layer for time-critical, deliberative for planning)
Continuous state/action spaces + dynamic
→ Subsumption-style layered reactivity OR explicit hybrid (see references/hybrid-architectures)
IF agents have:
Non-overlapping sensor coverage → Need information sharing protocols
Overlapping goals/resources → Need negotiation or allocation mechanisms
Task dependencies → Need commitment protocols with decommitment costs
Uncertain environments → Need replanning coordination (avoid thrashing on others' stale plans)
THEN consider:
Contract Net (task allocation via bidding)
Partial Global Planning (incrementally share/merge local plans)
Game-theoretic mechanisms (when self-interested)
(See references/coordination-as-necessity, references/negotiation-and-resource-allocation)
IF environment is:
Static + goals rarely invalidated → Bold commitment (low reconsideration)
Highly dynamic + frequent goal obsolescence → Cautious commitment (frequent reconsideration)
Mixed (stable plans with occasional disruptions) → Single-minded commitment (reconsider on new info, not timer)
THEN tune meta-level strategy:
Bold = reconsider only on explicit contradiction
Cautious = reconsider every N cycles
Single-minded = reconsider on new percepts affecting current intention
(See references/commitment-strategies-and-environment-dynamics)
IF safety property requires:
"At least one agent knows φ" → Individual knowledge (cheap)
"Every agent knows φ" → Broadcast + acknowledgment (moderate cost)
"Every agent knows every agent knows φ" → Common knowledge protocol (expensive/impossible in unreliable networks)
"Collectively, agents could deduce φ" → Distributed knowledge (no explicit protocol needed, but need query mechanism)
THEN:
Verify communication model supports required knowledge level
Consider relaxing common knowledge to distributed knowledge + query protocol
(See references/grounded-epistemic-logic)
| File | Load When... | Contents |
|------|-------------|----------|
| references/environment-characterization-drives-architecture.md | Choosing between reactive, deliberative, or hybrid architectures; characterizing environment properties | Environment taxonomy (accessible, deterministic, episodic, static, discrete), why environment properties force architectural choices, systematic mapping from environment to minimum viable architecture |
| references/coordination-as-necessity-not-luxury.md | Designing coordination protocols; justifying why agents must communicate/coordinate | Why coordination emerges from partial observability and resource contention, DVMT vehicle tracking case study, minimal sufficient coordination principles, over-coordination costs |
| references/commitment-strategies-and-environment-dynamics.md | Tuning agent boldness/persistence; handling dynamic environments; meta-level reasoning about when to replan | Kinny & Georgeff empirical results, bold vs. cautious vs. single-minded commitment strategies, environment dynamics as tuning parameter, real-time reasoning trade-offs |
| references/grounded-epistemic-logic-for-distributed-agents.md | Reasoning about distributed knowledge; verifying communication protocols; analyzing coordination failures due to knowledge asymmetry | Epistemic logic grounded in runs/local states/observation partitions, common vs. distributed knowledge distinction, coordinated attack problem, computational interpretation of modal operators |
| references/hybrid-architectures-and-realtime-adaptation.md | Designing agents that need both planning and fast reaction; integrating deliberative and reactive layers; real-time constraints | Historical progression (reactive → deliberative → hybrid), TouringMachines and InteRRaP architectures, vertical vs. horizontal layering, real-time constraint satisfaction |
| references/negotiation-and-resource-allocation-mechanisms.md | Designing negotiation protocols; allocating resources among self-interested agents; applying game theory to coordination | Shift from benevolent to self-interested agents, Contract Net Protocol, game-theoretic mechanisms (auctions, voting), Nash equilibrium in coordination, mechanism design principles |
Someone has not internalized Wooldridge if they:
Someone has internalized Wooldridge if they:
The definitive tell: They can explain why a simple reactive agent in a partially observable, non-deterministic, dynamic environment is harder to design correctly than a complex deliberative agent in a fully observable, deterministic, static environment—and defend it with Wooldridge's environment taxonomy rather than intuition.
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.