skills/rao-georgeff-1991-modeling-rational-agents-bdi/SKILL.md
Formal framework for modeling intelligent agents through Beliefs, Desires/Goals, and Intentions as distinct mental states with rigorous semantics
npx skillsauth add curiositech/windags-skills rao-georgeff-1991-modeling-rational-agents-bdiInstall 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.
Name: BDI Rational Agent Design
Description: Formal framework for modeling intelligent agents through Beliefs, Desires/Goals, and Intentions as distinct mental states with rigorous semantics
Author/Source: Anand S. Rao & Michael P. Georgeff (1991)
Activation triggers: agent architecture, intelligent systems, commitment reasoning, intention modeling, action planning, side-effects problem, goal decomposition, multi-agent systems, autonomous behavior
Environment Stability Assessment:
├─ STABLE environment + HIGH resources
│ └─ Choose BLIND commitment (AI₁)
│ • Persist until believed achieved
│ • Maximize goal completion
├─ UNSTABLE environment + LIMITED resources
│ └─ Choose SINGLE-MINDED commitment (AI₂)
│ • Drop if impossible OR achieved
│ • Balance persistence with realism
└─ HIGHLY DYNAMIC + EXPLORATORY goals
└─ Choose OPEN-MINDED commitment (AI₃)
• Drop if no longer desired OR achieved
• Track changing preferences
Goal Decomposition Decision Tree:
├─ PRIMITIVE action (under agent control)
│ └─ INTEND(does(action)) → guarantees execution
├─ ACHIEVEMENT goal (world determines outcome)
│ └─ INTEND(achievement) → guarantees attempt only
└─ COMPLEX goal requiring subgoals
├─ IF sequential: INTEND(q) before INTEND(p) where q enables p
└─ IF disjunctive: Choose specific branch to commit to
Side-Effects Resolution:
├─ BELIEVE(action → wanted_effect AND unwanted_effect)
│ └─ Can INTEND(does(action)) without INTEND(unwanted_effect)
│ • Intention-worlds select specific branches
│ • Avoid closure under believed implications
└─ Multiple paths to same goal
└─ Select path minimizing unwanted side-effects
Other Agent's Mental States:
├─ What I BELIEVE they INTEND
│ └─ Plan coordination assuming their commitment
├─ What I INTEND regarding their actions
│ └─ My commitment to outcomes involving them
└─ Commitment conflicts detected
├─ IF my commitment is stronger → maintain, negotiate
└─ IF their commitment is stronger → revise, delegate
Detection: If you find yourself saying "intention = persistent goal" or treating INTEND(p) as equivalent to GOAL(p) + high_priority.
Diagnosis: Missing the independence of mental attitudes. Intentions have separate persistence conditions from goals.
Fix: Implement separate axioms for each attitude. An agent can intend something while no longer desiring it (obligation case) or desire something while not committing to it (wish case).
Detection: If BELIEVE(p → q) AND INTEND(p) forces INTEND(q), creating unwanted commitments to side-effects.
Diagnosis: Treating intentions as closed under logical entailment instead of using sub-world compatibility.
Fix: Apply geometric constraints: intention-worlds are sub-worlds of belief-worlds. You intend specific branches, not entire logical consequences.
Detection: Agent gives up too easily (needed blind commitment) or persists irrationally (needed open-minded commitment).
Diagnosis: Mismatched persistence axiom for environmental demands.
Fix: Reassess environment stability and resource constraints. Switch axioms: AI₁ for stable/high-resource, AI₂ for collaborative/resource-limited, AI₃ for dynamic/exploratory.
Detection: Treating failed outcomes as defective intentions when environmental factors prevented success.
Diagnosis: Confusing volitional commitment (does(action)) with result achievement (succeeds(action)).
Fix: Apply AI₄ correctly: INTEND(does(e)) guarantees execution, but INTEND(achieves(goal)) only guarantees attempt.
Detection: Using branching time to represent epistemic uncertainty instead of choice options.
Diagnosis: Collapsing two-dimensional structure (choices within worlds, uncertainty across worlds).
Fix: Separate optional/inevitable (branch quantification within worlds) from BEL/GOAL/INTEND (world quantification across epistemic alternatives).
Scenario: Two autonomous robots (A and B) must coordinate to move a heavy table. Initially, both have GOAL(table_moved) and different movement strategies.
Initial State:
Decision Point Navigation:
Expert vs. Novice:
Resolution: A adopts compatible sub-goal INTEND(push_while_B_pulls), maintaining higher-level commitment while adapting method.
Scenario: Diagnostic AI system must recommend treatment knowing it causes side-effects.
Setup:
Decision Tree Navigation:
Treatment recommendation:
├─ Can INTEND(prescribe_chemotherapy)
│ ├─ WITHOUT intending nausea (sub-world selection)
│ └─ WITH explicit management plan for side-effects
└─ Must inform about side-effects (belief obligation)
└─ But not commit to wanting them (goal independence)
Critical Insight: The system intends the specific branch where chemotherapy achieves tumor shrinkage with minimal nausea (through sub-world selection), not the entire logical closure including all side-effects.
Alternative Strategies Considered:
Scenario: Autonomous research assistant managing multiple paper deadlines with computation budget.
Initial Commitments:
Crisis Point: Halfway through, budget reduced to 60 hours total.
Strategy Comparison:
Expert Decision Process:
Trade-off Analysis: Single-minded commitment chosen because collaboration context requires reliability (better to deliver one complete paper than two incomplete ones).
Do NOT use BDI for:
Delegate to other skills:
Integration boundaries:
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.