Install
$ agentstack add skill-nearform-unwind-uw-analyze-messaging ✓ 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
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
docs/unwind/layers/messaging/
├── index.md # Topic overview, event flow diagram
├── events.md # Event definitions & schemas
├── producers.md # Message producers
└── consumers.md # Message consumers with retry config
For large codebases (10+ topics), split by topic:
docs/unwind/layers/messaging/
├── index.md
├── order-events.md
├── user-events.md
└── ...
Process (Incremental Writes)
Step 1: Setup
mkdir -p docs/unwind/layers/messaging/
Write initial index.md:
# Messaging Layer
## Sections
- [Events](events.md) - _pending_
- [Producers](producers.md) - _pending_
- [Consumers](consumers.md) - _pending_
## Topics
_Analysis in progress..._
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
# Messaging Layer
## Configuration
[KafkaConfig.java](https://github.com/owner/repo/blob/main/src/config/KafkaConfig.java)
```java
@Configuration
public class KafkaConfig {
@Value("${kafka.bootstrap-servers}")
private String bootstrapServers;
@Bean
public ProducerFactory producerFactory() {
Map 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);
}
}
Topics
| Topic | Partitions | Producers | Consumers | |-------|------------|-----------|-----------| | order-events | 6 | OrderService | NotificationService, AnalyticsService | | user-events | 3 | UserService | EmailService |
Events
OrderCreatedEvent
public record OrderCreatedEvent(
String eventId,
Instant timestamp,
Long orderId,
Long userId,
List items,
BigDecimal total
) {}
JSON Schema:
{
"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"]
}
[Continue for ALL events...]
Producers
OrderEventPublisher
@Component
@RequiredArgsConstructor
public class OrderEventPublisher {
private final KafkaTemplate 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);
}
}
Consumers
NotificationEventConsumer
NotificationEventConsumer.java
@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());
}
}
[Continue for ALL consumers...]
Event Flow
graph LR
OrderService -->|publish| order-events
order-events -->|consume| NotificationService
order-events -->|consume| AnalyticsService
UserService -->|publish| user-events
user-events -->|consume| EmailService
Unknowns
- [List anything unclear]
## 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:
```markdown
### OrderCreatedEvent [MUST]
### OrderEventPublisher [MUST]
### DailyResetJob [SHOULD]
### KafkaConfig [DON'T]
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.
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: nearform
- Source: nearform/unwind
- 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.