nearform/unwind/uw-analyze-messaging
Claude Code and agent skill by nearform/unwind
- community
Checking that the SKILL.md file is still in the repository.
Use when analyzing event-driven systems, message queues, async processing, and pub/sub patterns
Install
npx vskill@latest install nearform/unwind/uw-analyze-messagingSKILL.md
Analyzing Messaging Layer
Output: docs/unwind/layers/messaging/ (folder with index.md + section files)
Principles: See analysis-principles.md - completeness, machine-readable, link to source, no commentary, incremental writes.
Output Structure
For large codebases (10+ topics), split by topic:
Process (Incremental Writes)
Step 1: Setup
Write initial index.md:
Step 2: Analyze and write events.md
- Find all event/message classes
- Include JSON schemas or Avro/Protobuf definitions
- Write
events.mdimmediately - Update
index.md
Step 3: Analyze and write producers.md
- Find all publishers/producers
- Include actual implementation code
- Write
producers.mdimmediately - Update
index.md
Step 4: Analyze and write consumers.md
- Find all listeners/consumers
- Document retry/error handling, DLQ config
- Write
consumers.mdimmediately - Update
index.md
Step 5: Finalize index.md Add topic table and event flow diagram
Output Format
@Configuration public class KafkaConfig { @Value("${kafka.bootstrap-servers}") private String bootstrapServers;
@Bean public ProducerFactory<String, Object> producerFactory() { Map<String, Object> config = new HashMap<>(); config.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, bootstrapServers); config.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class); config.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, JsonSerializer.class); return new DefaultKafkaProducerFactory<>(config); } }
public record OrderCreatedEvent( String eventId, Instant timestamp, Long orderId, Long userId, List<OrderItemDto> items, BigDecimal total ) {}
{ "type": "object", "properties": { "eventId": { "type": "string", "format": "uuid" }, "timestamp": { "type": "string", "format": "date-time" }, "orderId": { "type": "integer" }, "userId": { "type": "integer" }, "items": { "type": "array" }, "total": { "type": "number" } }, "required": ["eventId", "timestamp", "orderId", "userId", "total"] }
@Component @RequiredArgsConstructor public class OrderEventPublisher { private final KafkaTemplate<String, Object> kafkaTemplate;
public void publishOrderCreated(Order order) { OrderCreatedEvent event = new OrderCreatedEvent( UUID.randomUUID().toString(), Instant.now(), order.getId(), order.getUser().getId(), mapItems(order.getItems()), order.getTotal() ); kafkaTemplate.send("order-events", order.getId().toString(), event); } }
@Component @RequiredArgsConstructor public class NotificationEventConsumer { private final NotificationService notificationService;
@KafkaListener(topics = "order-events", groupId = "notification-service") @Retryable(maxAttempts = 3) public void handleOrderEvent(OrderCreatedEvent event) { notificationService.sendOrderConfirmation(event.orderId()); }
@DltHandler public void handleDlt(OrderCreatedEvent event) { log.error("Failed to process event after retries: {}", event.eventId()); } }
graph LR OrderService -->|publish| order-events order-events -->|consume| NotificationService order-events -->|consume| AnalyticsService UserService -->|publish| user-events user-events -->|consume| EmailService
Mandatory Tagging
Every event, producer, consumer, and handler must have a [MUST], [SHOULD], or [DON'T] tag in its heading.
Default categorizations for messaging layer:
- [MUST]: Event schemas, core producers, core consumers, webhook handlers
- [SHOULD]: Scheduled jobs, retry logic, dead letter handling
- [DON'T]: Message broker configuration, serialization config
Example:
See analysis-principles.md section 9 for full tagging rules.
Refresh Mode
If docs/unwind/layers/messaging/ exists, compare current state and add ## Changes Since Last Review section to index.md.
Security
- Security scanPassed, 90 of 100Pattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingskills/uw-analyze-messaging/SKILL.md
Popularity
- 7-day trend score
- 0
Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/nearform/unwind/uw-analyze-messaging)