skills/rao-georgeff-1995-bdi-agents-from-theory-to-practice/SKILL.md
Foundational framework for modeling intelligent agents through Beliefs, Desires, and Intentions with practical implementation strategies under resource constraints
npx skillsauth add curiositech/windags-skills rao-georgeff-1995-bdi-agents-from-theory-to-practiceInstall 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.
Skill ID: bdi-agents-theory-practice
Domain: Agent architectures, AI system design, decision-making under resource constraints
Source: Rao & Georgeff, "BDI Agents: From Theory to Practice"
INPUT: Environment volatility + Goal clarity + Computation budget
IF Environment volatility = LOW (changes slower than plan execution):
└─ IF Goal clarity = HIGH (specific, measurable outcomes):
└─ CHOOSE: Blind commitment
• Perceptual cue: Plan steps complete in predictable timeframes
• Trigger reconsideration: Only when goal achieved/failed
└─ IF Goal clarity = LOW (abstract, evolving objectives):
└─ CHOOSE: Single-minded commitment
• Perceptual cue: Subgoal failures indicate impossibility
IF Environment volatility = MEDIUM (changes comparable to plan duration):
└─ IF Computation budget = HIGH:
└─ CHOOSE: Open-minded commitment
• Perceptual cue: Monitor for better opportunities
• Trigger reconsideration: Goal deprioritization OR impossibility
└─ IF Computation budget = LOW:
└─ CHOOSE: Single-minded commitment
• Perceptual cue: Focus on clear failure signals only
IF Environment volatility = HIGH (changes faster than typical plans):
└─ IF Goal urgency = CRITICAL:
└─ CHOOSE: Reactive execution (bypass BDI deliberation)
• Perceptual cue: Environmental state requires immediate response
└─ ELSE:
└─ CHOOSE: Open-minded with frequent reconsideration windows
• Perceptual cue: Schedule reconsideration at plan checkpoints
IF Domain knowledge = COMPLETE AND STABLE:
└─ Pre-compile all plans with full context conditions
└─ Use hash-table indexing on event types
IF Domain knowledge = INCOMPLETE OR EVOLVING:
└─ Use hierarchical decomposition with abstract plans
└─ Enable runtime plan composition
└─ Index on goal patterns, not specific events
IF Real-time constraints = CRITICAL:
└─ Sacrifice completeness for speed
└─ Cache frequent plan instantiations
└─ Use compiled pattern matching over full search
IF Environmental change rate > Belief update rate:
└─ Use event-triggered updates only
└─ Accept temporary inconsistency for speed
IF Belief inconsistency tolerance = LOW:
└─ Implement belief revision with dependency tracking
└─ May require pausing execution during updates
IF Memory constraints = TIGHT:
└─ Maintain only current-state beliefs
└─ Compile temporal dependencies into plan preconditions
Symptoms: Agent switches between plans rapidly, never completing goals, high deliberation overhead Detection Rule: If reconsideration frequency > 1 per plan step execution, you're thrashing Root Cause: "Potentially significant change" detection is too sensitive OR commitment strategy is too weak for environment Fix: Tighten change detection criteria, increase commitment strength, or batch environmental updates
Symptoms: Agent continues executing obviously obsolete plans, ignores contradictory evidence, goals never achieved Detection Rule: If plan execution continues after preconditions become false, you have zombie plans Root Cause: Missing "impossibility" detection in termination conditions OR belief update failures Fix: Add explicit plan precondition monitoring, implement belief-intention consistency checks
Symptoms: Long delays before any plan selection, agent appears "frozen" before acting, timeout failures Detection Rule: If time-to-first-action > environment change period, option generation is the bottleneck Root Cause: Plan library too large for real-time search OR matching algorithm is naive Fix: Index plans by triggering events, use compiled pattern matching, accept incompleteness for speed
Symptoms: Plan library grows exponentially, new situations require entirely new plans, brittle to minor variations Detection Rule: If adding new capability requires modifying >10% of existing plans, you have schema bloat Root Cause: Plans encode too much detail rather than using hierarchical decomposition Fix: Use abstract plans with subgoal decomposition, separate invariant patterns from situation-specific details
Symptoms: Agent attempts impossible combinations, violates resource constraints, goals conflict in execution Detection Rule: If multiple intentions require mutually exclusive resources, desires and intentions are confused Root Cause: Deliberation process doesn't filter desires for mutual consistency before commitment Fix: Implement explicit compatibility checking in deliberation, maintain resource allocation tracking
Scenario: Delivery robot must reach destination in 10 minutes. Environment has pedestrians (medium volatility) and network connectivity for map updates (computation budget = medium).
Decision Process:
Key Insight: Agent commits to paths but reconsiders when assumptions (clear route) become invalid. Novice would either replan at every pedestrian (thrashing) or ignore the blocked path (zombie plan).
Scenario: Algorithm trading in options market, goal is profit maximization, market shows high volatility.
Decision Process:
Failure Trace: Without proper reconsideration windowing, agent either:
Scenario: Earth station controlling satellite with 3-second communication delay, goal is maintain orbital position.
Decision Process:
Expert vs Novice:
Do NOT use BDI for:
Delegate to other skills:
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.