skills/a-normative-extension-for-the-bdi-agent/SKILL.md
Apply normative BDI reasoning to agents that must detect norms, choose which commitments to internalize, and resolve conflicts by comparing consequences. Use when obligations, prohibitions, or policies collide in autonomous systems. NOT for simple fixed-priority rules, pure constraint satisfaction, or domains where no real normative conflict exists.
npx skillsauth add curiositech/windags-skills a-normative-extension-for-the-bdi-agentInstall 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 an agent must stay aware of multiple norms, decide which ones to adopt into action, and explain why a deliberate violation was less bad than the alternatives.
This skill is not the primary tool for:
Keep the Abstract Norm Base separate from the Norm Instance Base. The agent can detect a norm without adopting it. That separation is what allows deliberate, explainable non-compliance instead of accidental ignorance.
The weak-consistency case is where most real design judgment lives.
When norms conflict, compare coherent bundles of commitments by their worst downstream consequence. The point is not maximizing average goodness; it is choosing the least-bad worst case among incompatible futures.
Adopted obligations and prohibitions become defeasible pressures inside the BDI machinery rather than a separate override system. That keeps normative reasoning inside the same deliberative loop as ordinary goal pursuit.
See the adoption and conflict flow in diagrams/01_flowchart_decision-points.md.
flowchart TD
A[Norm detected] --> B{Groundable in current beliefs?}
B -->|No| C[Keep abstract and monitor]
B -->|Yes| D[Check consistency]
D -->|Strongly inconsistent| E[Compare conflict bundles by worst consequence]
D -->|Weakly consistent| F[Evaluate flexibility cost]
D -->|Strongly consistent| G[Adopt norm]
E --> H[Choose least-bad worst case]
F --> I{Adoption still worth it?}
I -->|Yes| G
I -->|No| J[Reject or defer]
H --> G
Symptoms: the agent keeps internalizing norms until no feasible action remains.
Detection rule: the active action space shrinks faster than conflicts are resolved.
Recovery: force a consistency review before any additional norm enters the Norm Instance Base.
Symptoms: the agent violates a norm but cannot state that it chose to do so.
Detection rule: post-hoc explanations omit the rejected norm or treat the violation as if it never existed.
Recovery: persist rejected-but-recognized norms and log the winning consequence comparison.
Symptoms: adoption logic treats every norm as either fully compatible or impossible.
Detection rule: weak consistency never appears in the architecture or logs.
Recovery: add an explicit weak-consistency branch and model flexibility loss directly.
Symptoms: the same global priority stack produces obviously wrong choices in edge cases.
Detection rule: conflict outcomes change only when the priority table changes, never when consequences change.
Recovery: move from rigid precedence to subset generation plus consequence ranking.
Symptoms: norm handling lives in a separate enforcement module that overrides BDI deliberation late in execution.
Detection rule: norm logic cannot be explained using beliefs, desires, and intentions.
Recovery: transform adopted norms into internal deliberative pressures and route them through the main architecture.
A service agent knows a norm prohibiting direct use of customer-level data and an obligation to improve the user experience. The system finds weak consistency: aggregate behavioral summaries preserve most personalization while limiting privacy harm. The skill keeps both norms visible, instantiates only the aggregate-safe obligation, and records why direct data use was rejected.
A caretaker robot faces an obligation to keep a baby alive and a prohibition against developing love for humans. No plan satisfies both. The skill generates two coherent subsets, compares the worst consequences, and deliberately violates the design prohibition because death is a worse outcome than the forbidden attachment. The violation is explicit and reportable.
| File | Load when |
| --- | --- |
| references/separation-of-norm-recognition-and-norm-internalization.md | Designing ANB vs. NIB boundaries |
| references/three-types-of-consistency-for-norm-adoption.md | Implementing adoption checks and flexibility-cost logic |
| references/normative-conflict-resolution-through-consequence-ranking.md | Building or reviewing consequence-based conflict resolution |
| references/norm-instantiation-through-belief-grounding.md | Grounding abstract norms into context-specific instances |
| references/maximal-non-conflicting-subsets-for-action-selection.md | Computing coherent option bundles under conflict |
| references/desire-internalization-as-norm-adoption-mechanism.md | Integrating norms into BDI desire and intention handling |
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.