Install
$ agentstack add skill-event-catalog-skills-catalog-documentation-creator ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
EventCatalog Documentation Creator
Generate properly formatted EventCatalog documentation files following project conventions and best practices.
Instructions
Step 1: Locate or Create the User's Catalog
Before generating any files, ask the user: "Do you already have an EventCatalog project, or would you like to create a new one?"
If they already have a catalog:
- Ask: "Where is your EventCatalog project?" — It could be:
- A repo they've cloned locally (e.g.,
~/projects/my-catalog/) - A folder on their machine
- A monorepo with the catalog in a subdirectory
- Verify it looks like an EventCatalog project by checking for an
eventcatalog.config.jsfile or known directories (services/,agents/,events/,domains/,adrs/,data-products/,entities/, etc.) - Read the existing structure to understand whether they use nested (domains/services/agents/events) or flat (top-level services/, agents/, events/) organization
If they don't have a catalog yet:
- Ask where they'd like to create it (default: current directory)
- Run the following command to scaffold a new empty catalog:
``bash npx @eventcatalog/create-eventcatalog@latest my-catalog --empty ` (Replace my-catalog` with the user's preferred name)
- This creates a ready-to-use EventCatalog project with the correct structure
- All generated documentation files go inside this new catalog directory
CRITICAL: All generated files must be written to the user's catalog directory, not just displayed. Always ask where they want resources documented — never assume.
Step 2: Understand What the User Wants to Document
Ask the user what they want to document. Common scenarios:
- A single service or agent and its messages
- An event, command, or query
- A full domain with nested services
- A business flow across services and agents
- A channel (Kafka topic, RabbitMQ queue, etc.)
- A container (database, cache, queue)
- An architecture decision record (ADR)
- A data product for analytics, reporting, ML features, or operational data outputs
- A domain entity or aggregate
- A reusable diagram resource
Gather this information before generating:
- Resource name and purpose
- Version (default to
0.0.1for new resources) - Message relationships (what it sends/receives)
- Channel routing (what channels messages flow through)
- Containers (what databases/caches the service reads from or writes to)
- ADR links (what resources a decision applies to, and whether it supersedes/amends another ADR)
- Data product lineage (inputs, outputs, contracts, freshness/SLA expectations)
- Entities and relationships (identifier, properties, references, aggregate root)
- Diagram notation (Mermaid, PlantUML, or other supported fenced diagram formats)
- Agent model/provider and tools when documenting agents
- Schema format if applicable (JSON Schema, Avro, Protobuf)
If the user points you at a codebase (not the catalog), analyze it to extract services, agents, messages, schemas, and relationships — then generate the corresponding catalog documentation.
Step 3: Check the Existing Catalog
If the catalog directory already has resources, read the existing files to understand:
- Naming conventions (PascalCase IDs? kebab-case?)
- Folder structure (nested under domains or flat?)
- Which owners/teams are already defined
- Badge styles and patterns used
- Schema formats in use (JSON Schema, Avro, etc.)
Match new documentation to these existing conventions.
If the user has the EventCatalog MCP server connected:
- Use
getResourcesto see what already exists in the catalog - Use
getResourceto check conventions used in existing entries (naming patterns, owner formats, badge styles) - Use
findResourcesByOwnerto suggest consistent ownership - Use
getSchemaForResourceto match existing schema formats
This ensures new documentation is consistent with what's already in the catalog.
Step 4: Generate the Documentation
Generate files following the resource-specific references. Consult the appropriate reference file for the resource type:
references/services.md— Services with sends/receives, channel routing, containersreferences/agents.md— Agents with model metadata, tools, sends/receives, containers, and flowsreferences/events.md— Events with schemas, payload examples, producer/consumer codereferences/commands.md— Commands with REST operations and schemasreferences/queries.md— Queries with REST operations and response schemasreferences/domains.md— Domains with subdomains, services, and business contextreferences/flows.md— Business flows with steps, branching, and external systemsreferences/channels.md— Channels with routing, protocols, and parametersreferences/containers.md— Containers (databases, caches, queues) with data classificationreferences/adrs.md— Architecture decision records with status, date, decision makers, appliesTo, and relationshipsreferences/data-products.md— Data products with inputs, outputs, data contracts, lineage, and SLAsreferences/entities.md— DDD/domain entities with identifiers, properties, relationships, and aggregate rootsreferences/diagrams.md— Reusable diagram resources (Mermaid, PlantUML, architecture diagrams)references/ubiquitous-language.md— Ubiquitous language terms per domain (DDD glossary/dictionary)references/teams-and-users.md— Teams and users (ownership)references/components.md— Components (NodeGraph, Schema, Mermaid, Tabs, etc.) and resource references ([[type|Name]]wiki-style links)references/supporting-collections.md— Changelogs, resource docs, custom docs, schemas, and Studio designs
Every resource file MUST include:
- Valid YAML frontmatter between
---delimiters idfield matching existing catalog conventionsnameas human-readable display nameversionas semantic version stringsummaryas a concise 1-2 sentence description
CRITICAL: Always use index.mdx as the filename for versioned resources (services, agents, events, commands, queries, domains, flows, channels, containers, ADRs, data products, entities, diagrams). Teams and users use {id}.mdx files directly. Changelogs use changelog.mdx or changelog.md. Ubiquitous language uses ubiquitous-language.mdx. Place files in the correct folder path following the nested structure pattern:
domains/{DomainName}/services/{ServiceName}/events/{EventName}/index.mdx
domains/{DomainName}/agents/{AgentName}/index.mdx
domains/{DomainName}/data-products/{DataProductName}/index.mdx
domains/{DomainName}/entities/{EntityName}/index.mdx
domains/{DomainName}/diagrams/{DiagramName}/index.mdx
Or flat structure if the catalog uses that pattern:
services/{ServiceName}/index.mdx
agents/{AgentName}/index.mdx
events/{EventName}/index.mdx
adrs/{adr-id}/index.mdx
data-products/{DataProductName}/index.mdx
entities/{EntityName}/index.mdx
diagrams/{DiagramName}/index.mdx
Do not generate schemas collection entries directly. Generate or reference schema files from events, commands, or queries using schemaPath or schemas; EventCatalog creates the schemas collection from those references. Do not hand-author designs unless the user explicitly provides .ecstudio content from EventCatalog Studio.
Step 5: Validate the Output
Before presenting the files to the user, verify:
- YAML frontmatter has
---delimiters on both sides - All
idfields are consistent (no spaces, match folder name) - All
versionfields are valid semver strings (e.g.,0.0.1) - All message references in
sends/receivesincludeidand optionallyversion - Channel routing uses
to/fromfields correctly in sends/receives - Schema files referenced in
schemaPathactually exist or are generated - `` component is included for architecture visualization
- Owner IDs reference real teams/users in the catalog
Common Patterns
Documenting a Service That Processes Messages
When a user says "document my payment service that receives OrderCreated events and sends PaymentProcessed events":
- Generate the service
index.mdxwithreceivesandsendsarrays - If messages flow through channels, add
to/fromfields to the sends/receives - Generate each event
index.mdxif they don't already exist in the catalog - Include `` in the service body to show message flow
- Generate related entities if the service owns important domain objects
- Add example payload sections for each message
- Place files in the correct nested folder structure
Documenting an Agent
When a user says "document my support agent that reads order data and uses Zendesk":
- Generate the agent
index.mdxwithmodel,tools,receives/sends,readsFrom/writesTo, andflowswhere known - Generate or reference events/commands/queries the agent consumes or produces
- Generate containers for data stores the agent reads or writes
- Include `` when tools are documented
- Include `` so the agent appears in architecture visualizations
- If the agent belongs to a domain, add it to the domain's
agentsfrontmatter
Documenting a Domain
CRITICAL: A domain MUST have at least one service or agent. Never create an empty domain. If the user describes a domain, ensure services or agents are identified and generated for it.
When a user wants to document a full domain:
- Identify the services and agents that belong to this domain. If the user hasn't specified any, ask them: "What services or agents belong to this domain?" Do NOT create an empty domain.
- Generate the domain
index.mdxwith theservicesfield listing every service and theagentsfield listing every agent - Include
entities,data-products,flows, anddiagramsfields when those resources belong to the domain - Generate each service and agent within the domain
- Generate each message referenced by the services and agents
- Generate entities, data products, diagrams, and channels if the user describes them
- Use the nested folder structure:
domains/{Domain}/services/{Service}/events/{Event}/,domains/{Domain}/agents/{Agent}/,domains/{Domain}/entities/{Entity}/, anddomains/{Domain}/data-products/{DataProduct}/ - Generate a
ubiquitous-language.mdxfile for the domain by extracting domain-specific terms from service names, agent names, event/command names, entities, and business processes. Place it atdomains/{Domain}/ubiquitous-language.mdx. Seereferences/ubiquitous-language.mdfor format and examples. - CRITICAL: After generating all files, verify the domain's frontmatter
servicesfield lists every service andagentslists every agent that belongs to it. Every service or agent created under a domain MUST be referenced in the domain'sindex.mdx:
```yaml services:
- id: OrdersService
- id: InventoryService
- id: PaymentService
agents:
- id: OrderSupportAgent
``` If a service or agent is nested inside the domain folder but not listed in the domain's frontmatter, it will not appear as part of that domain. Always cross-check.
Documenting an ADR
When a user describes an architecture decision:
- Generate
adrs/{adr-id}/index.mdx - Use one of the supported statuses:
proposed,accepted,rejected,deprecated, orsuperseded - Include a
dateinYYYY-MM-DDformat - Add
decisionMakersandownersusing existing team/user IDs where known - Use
appliesToto link the decision to impacted resources (service,event,domain,flow,data-product,entity, etc.) - Use
supersedes,supersededBy,amends,amendedBy, orrelatedwhen linking ADRs together - Structure the body with
Context,Decision, andConsequences
Documenting a Data Product
When a user describes analytics, reporting, BI, ML feature, or derived operational data:
- Generate
data-products/{DataProductName}/index.mdxor nest it under the relevant domain/subdomain - Add
inputsfor upstream messages, services, containers, channels, or other resources - Add
outputsfor produced messages, services, containers, channels, or contracts - If an output has a data contract, include
contract.path,contract.name, andcontract.type - Include `
and any relevant` for contract files - Document lineage, freshness, ownership, access patterns, and SLAs
Documenting an Entity
When a user describes a domain model, aggregate, data object, or business concept with properties:
- Generate
entities/{EntityName}/index.mdx,domains/{Domain}/entities/{EntityName}/index.mdx, orservices/{Service}/entities/{EntityName}/index.mdxdepending on catalog structure - Include
identifierandaggregateRoot: truewhen applicable - Add
propertieswithname,type,required, anddescription - Use
references,referencesIdentifier, andrelationTypefor relationships to other entities - Include `` in the body to render the property table
- Link entities from domain/service frontmatter using
entities
Documenting a Diagram
When a user provides or asks for a reusable architecture, sequence, flow, or model diagram:
- Generate
diagrams/{DiagramName}/index.mdxor nest it under the relevant domain/subdomain - Include
id,name,version, andsummary - Put the diagram in the body as a fenced
mermaid,plantuml, or other supported diagram block - Reference the diagram from related resources using the
diagramsfrontmatter field
Documenting a Business Flow
When a user describes a multi-step process:
- Identify distinct steps (user actions, service calls, message exchanges, external systems)
- Generate the flow
index.mdxwithstepsarray - Each step should have
id,title, and appropriate type (actor,service,agent,message,externalSystem) - Connect steps with
next_stepornext_stepsfor branching
Documenting Channel Routing
When a user describes how messages flow through infrastructure:
- Generate channel
index.mdxfiles withroutesfor channel-to-channel routing - Update service or agent
sends/receiveswithto/fromfields pointing to channels - The full picture should show: Service or agent sends → Channel → routes to → Channel → service or agent receives
Quality Checklist
- Take your time to do this thoroughly
- Quality is more important than speed
- Do not skip validation steps
Before delivering documentation to the user, verify every file against this checklist:
- Frontmatter has valid YAML between
---delimiters idmatches the folder nameversionis a valid semver stringsummaryis concise and meaningful (not generic)- Message relationships (
sends/receives) includeid - Channel routing (
to/from) references valid channel IDs - Body includes `` for visualization when the resource has graph relationships
- Schema references point to real files
- Folder structure follows catalog conventions
- No duplicate resources (checked against existing catalog)
- Versioned resources use
index.mdx(or match the catalog's existing.md/.mdxconvention); teams and users use{id}.mdx; changelogs usechangelog.mdx/changelog.md - Every domain has at least one service or agent — never create an empty domain
- Domain
servicesandagentsfrontmatter lists every service and agent that belongs to that domain - Domain
entities,data-products,flows, anddiagramsfrontmatter lists nested resources when present - Every domain has a
ubiquitous-language.mdxfile with relevant domain terms extracted from services, agents, events, commands, entities, data products, and business processes - ADRs have a valid status, date, decision makers when known, and
appliesToreferences for impacted resources - Data product contract files referenced in
outputs.contract.pathexist when generated
Troubleshooting
Messages Not Showin
…
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: event-catalog
- Source: event-catalog/skills
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.