{
  "name": "event-contract-draft",
  "version": "0.1.3",
  "description": "Draft the contract for an event or message interface (Kafka topics, SNS/SQS, EventBridge, Pub/Sub, RabbitMQ, webhooks) as an AsyncAPI 3.0 document plus a short decisions page — past-tense event names, a required envelope with event id for deduplication, the partition key and the ordering it does and doesn't give, at-least-once delivery and how consumers stay idempotent, data minimisation with PII marked, additive-only versioning with dated deprecation, and retention, replay and dead-letter handling. Use when the user wants to define events, design a Kafka topic or message schema, write an AsyncAPI spec, agree what a producer publishes and what consumers must do, or version an event safely.",
  "entrypoint": "SKILL.md",
  "deps": { "npm": [], "pip": [] },
  "env": { "required": [], "optional": [] },
  "related": ["api-contract-draft", "data-contract", "design-doc"],
  "handoff": [
    {
      "to": "data-contract",
      "when": "an analytics team or a trained model reads the topic as a dataset",
      "purpose": "Add the freshness, completeness and field-semantics guarantees a dataset reader needs on top of the event contract.",
      "fallback": "If data-contract is absent, add each analytics field's unit and meaning to the payload schema and list the freshness expectation under To confirm."
    }
  ],
  "tags": ["asyncapi", "event-driven", "kafka", "messaging", "contract-first"],
  "permissions": {
    "network": [],
    "commands": [],
    "files": "named-paths",
    "notes": "check_asyncapi.py reads the one JSON file it is given (or stdin) and writes a report only to the -o path the user names."
  },
  "model": { "tier": "standard", "rationale": "Contract drafting against the AsyncAPI shape with fixed rules on ordering, delivery and versioning; mid tier is enough." }
}
