skills/ai-wiley-wooldridge-an-introduction-to-multi-agent-systems/SKILL.md
Choose multi-agent architectures using environment-first analysis, coordination pressure, commitment tuning, and knowledge levels. Use for autonomy design, protocol choice, and coordination failures. NOT for single-agent planning, centralized schedulers, or prompt-only swarms.
npx skillsauth add curiositech/windags-skills ai-wiley-wooldridge-an-introduction-to-multi-agent-systemsInstall 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.
Use this skill when the question is not "how do I make several models talk," but "what kind of autonomous system does this environment force me to build?"
Start with observability, determinism, dynamics, and time pressure. Architecture choice is downstream of environment shape, not personal preference for a fashionable agent pattern.
Agents are not just asynchronous objects. They decide whether and when to comply, which means requests need semantics, refusals, and coordination logic rather than implicit obedience.
Partial observability, resource contention, and interdependent goals create coordination pressure. Good protocol design begins by naming that pressure instead of assuming collaboration is always desirable.
Bold agents overcommit in fast-changing environments; cautious agents thrash in stable ones. Reconsideration frequency is a design parameter tied to environment dynamics, not a universal best practice.
Individual knowledge, everyone-knows, common knowledge, and distributed knowledge are not interchangeable. Asking for the wrong level can make a protocol impossible or wastefully expensive.
flowchart TD
A[Need agent architecture] --> B{Environment fully observable and stable?}
B -->|Yes| C[Simple reactive or planner-heavy design may suffice]
B -->|No| D{Need real-time reaction under uncertainty?}
D -->|Yes| E[Hybrid architecture]
D -->|No| F[Deliberative architecture]
E --> G{Why do agents need to coordinate?}
F --> G
G -->|Partial information| H[Information-sharing protocol]
G -->|Resource contention| I[Negotiation or allocation mechanism]
G -->|Task dependency| J[Commitment or delegation protocol]
G -->|No real autonomy| K[Use a simpler centralized design]
Cue: the team wants BDI, debate, or a fancy agent framework before anyone can describe the environment.
Fix: force environment characterization first.
Cue: the design talks about beliefs and desires but cannot map them to local state, observations, or protocol obligations.
Fix: ground mental language in concrete computational state.
Cue: communication traffic rises, but no one can explain which environmental pressure requires it.
Fix: identify the actual forcing function and design the minimal protocol that addresses it.
Cue: one "agent" silently makes all important choices while the others just execute.
Fix: either admit the architecture is centralized or redistribute genuine decision rights.
Cue: protocol correctness depends on every agent knowing that every other agent knows a fact, but the network is unreliable.
Fix: relax to distributed knowledge, acknowledgments, or eventual consistency as the environment allows.
A coding system uses security, performance, and style agents. Security reviews depend on different evidence than style review, and no single reviewer has global visibility. Use a hybrid coordinator plus targeted information-sharing instead of assuming every reviewer should see the entire context.
Sensor agents cover overlapping but incomplete regions. Coordination is necessary because no single agent can maintain end-to-end track continuity. Design the protocol around partial observability rather than generic "collaboration."
references/environment-characterization-drives-architecture.md: load when architecture choice is the main question.references/coordination-as-necessity-not-luxury.md: load when you must justify or minimize coordination.references/commitment-strategies-and-environment-dynamics.md: load when boldness or replanning cadence is the main tuning issue.references/grounded-epistemic-logic-for-distributed-agents.md: load when knowledge claims drive safety or correctness.references/negotiation-and-resource-allocation-mechanisms.md: load when autonomy collides with scarce resources.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.