skills/bellifemine-2007-jade-fipa/SKILL.md
JADE platform for building FIPA-compliant multi-agent systems with standardized agent communication
npx skillsauth add curiositech/windags-skills bellifemine-2007-jade-fipaInstall 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.
IF agents built by different teams/languages need semantic interoperability
→ START with ontology definition (concepts, predicates, actions)
→ THEN implement behaviors that use ontology
→ Example: Commerce ontology with PurchaseOrder, Price concepts
ELSE IF rapid prototyping single-team system
→ START with behavior implementation (protocols, workflows)
→ ADD ontology later when integration needed
→ Example: Internal workflow automation
IF task requires competitive selection among multiple candidates
→ Contract Net Protocol
→ Coordinator announces CFP, agents bid, select winner
ELSE IF task is conditional future execution
→ Request-When Protocol
→ "Execute X when condition Y becomes true"
ELSE IF task requires ongoing data subscription
→ Subscribe Protocol
→ Register for updates, receive INFORMs until unsubscribe
ELSE IF simple synchronous request-response
→ Request Protocol
→ AGREE/REFUSE followed by INFORM/FAILURE
IF mobile/edge agents with limited battery/connectivity
→ Use split-container architecture
→ Lightweight front-end + stateful back-end + mediator
ELSE IF high-throughput server environment
→ Direct peer-to-peer protocols
→ No mediation overhead needed
IF timeout budget < 5 seconds
→ Avoid nested Contract Net (too many round trips)
→ Use direct Request with pre-cached service discovery
ELSE IF timeout budget > 30 seconds
→ Safe to use Contract Net → Request composition
→ Full negotiation + execution workflow
IF agent needs standard FIPA semantics only
→ Extend SemanticAgent
→ Declare Capability (actions, beliefs)
→ Get QUERY/INFORM/SUBSCRIBE for free via SIPs
ELSE IF custom message interpretation required
→ Override specific SIPs (Semantic Interpretation Principles)
→ Keep default SIPs where possible
ELSE IF complex workflow coordination needed
→ Compose behaviors: Sequential/Parallel/FSM
→ Use protocol templates as building blocks
Symptoms: Agent accepts REQUEST (sends AGREE) but never responds with INFORM/FAILURE, or sends semantically invalid responses
Detection: if (timeoutExpired && lastReceived == AGREE) { /* Byzantine behavior detected */ }
Diagnosis: Agent implementation bug or malicious behavior - violating FIPA protocol contract
Fix: Implement timeout handling with explicit FAILURE generation, blacklist unreliable agents, add protocol validation layers
Symptoms: Ontology grows to 500+ concepts, agents spend seconds parsing/reasoning about messages
Detection: if (ontology.getConcepts().size() > threshold || messageParsingTime > 100ms)
Diagnosis: Monolithic ontology without modular decomposition
Fix: Split into domain-specific sub-ontologies, use ontology import/composition, implement lazy concept loading
Symptoms: Single agent failure brings down entire multi-step workflow, no partial progress recovery
Detection: if (behavior instanceof SequentialBehaviour && childFailureCount > 0)
Diagnosis: No failure isolation between workflow steps
Fix: Replace SequentialBehaviour with FSMBehaviour for explicit error states, add compensating actions for partial rollback
Symptoms: OutOfMemoryError in message delivery subsystem, agents stop receiving messages
Detection: Monitor containerMessageQueueSize > maxThreshold
Diagnosis: Producer/consumer rate mismatch, no backpressure mechanism
Fix: Set message TTL, implement priority queues, add flow control at protocol level
Symptoms: Service discovery taking >5 seconds, DF becomes single point of failure
Detection: if (dfSearchTime > threshold || dfRequestCount > maxConcurrent)
Diagnosis: Centralized service registry pattern under high load
Fix: Implement distributed DF federation, cache service advertisements locally, use gossip-based discovery
Scenario: Agent needs to buy "JADE Programming Guide" at lowest price from multiple online sellers
Decision Point Navigation:
Expert Implementation:
// Top level: Contract Net for vendor selection
ContractNetInitiator bookPurchaseNegotiation = new ContractNetInitiator(this, cfpMessage) {
protected void handlePropose(ACLMessage propose, Vector acceptances) {
// Expert: Evaluate proposals by price + delivery time + vendor reputation
double score = calculateVendorScore(propose);
if (score > bestScore) {
bestScore = score;
bestProposal = propose;
}
}
protected void handleFailure(ACLMessage failure) {
// Expert: Contract Net failure means no valid bids - try backup strategy
addBehaviour(new FallbackBehavior(searchAmazonDirect()));
}
};
// Execution level: Request Protocol for actual purchase
RequestInitiator purchaseExecution = new RequestInitiator(this, purchaseMessage) {
protected void handleInform(ACLMessage inform) {
// Expert: Validate purchase confirmation against ontology
if (validatePurchaseConfirmation(inform)) {
logger.info("Purchase confirmed: " + inform.getContent());
}
}
protected void handleFailure(ACLMessage failure) {
// Expert: Payment failure - try next best vendor from Contract Net results
retryWithNextVendor();
}
};
Novice Would Miss:
Expert Catches:
This skill should NOT be used for:
Delegation Guidelines:
message-queue-architecture skill insteaddistributed-consensus-algorithms skill insteadservice-mesh-patterns skill insteadevent-sourcing-cqrs skill insteadmicroservices-coordination skill insteadCore Trigger: Use JADE when you need semantic interoperability between autonomous components that must coordinate without central control using standardized protocols. If any of these requirements is missing, simpler alternatives will be more appropriate.
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.