hook-event-architecture

Hook Event Architecture

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "hook-event-architecture" with this command: npx skills add melodic-software/claude-code-plugins/melodic-software-claude-code-plugins-hook-event-architecture

Hook Event Architecture

Design hook-based event systems for capturing and broadcasting agent activities in AI Developer Workflows.

MANDATORY: docs-management Delegation

Documentation Verification: This skill references Claude Code hook events and configuration that may change between releases. Before implementing, invoke hook-management skill to verify current event types and hook configuration patterns.

Verification Checkpoint:

  • Did I invoke hook-management for current event types?

  • Did official documentation confirm the event schema?

  • Is my implementation based on official docs?

When to Use

  • Implementing real-time event broadcasting

  • Building observability infrastructure

  • Creating swimlane visualizations

  • Logging agent activities to database

  • Generating AI-powered event summaries

Prerequisites

  • Understanding of Claude Code hooks (@hook-event-patterns.md)

  • Familiarity with WebSocket patterns (@websocket-architecture.md)

  • Access to Claude Agent SDK for full implementation

SDK Requirement

Implementation Note: Full hook event architecture requires Claude Agent SDK with custom tooling. This skill provides design patterns and specifications.

Event Types

Documentation Verification: The event types listed here are Claude Code internal types that may change between releases. For authoritative current event types, query the hook-management skill which delegates to docs-management for official documentation.

ADW systems capture these event types:

Event Type Icon Source Payload

PreToolUse

🪝 Hook Tool name, inputs, session

PostToolUse

🪝 Hook Tool name, outputs, duration

TextBlock

💬 Agent Response text, tokens

ToolUseBlock

🛠️ Agent Tool invocation record

ThinkingBlock

🧠 Agent Extended thinking content

StepStart

⚙️ System Step name, inputs

StepEnd

⚙️ System Step name, outputs, duration

Architecture Design Process

Step 1: Define Event Schema

Create Pydantic models for events:

class ADWEvent(BaseModel): type: str # Event type from table adw_id: str # 8-char correlation ID step: str # Current step name timestamp: datetime payload: dict # Type-specific data summary: str | None # AI-generated summary

Step 2: Configure Hook Triggers

Set up Claude Code hooks:

{ "hooks": { "PreToolUse": [{ "matcher": ".", "command": "python hooks/pre_tool.py" }], "PostToolUse": [{ "matcher": ".", "command": "python hooks/post_tool.py" }] } }

Step 3: Design Event Pipeline

Agent Execution │ ├── PreToolUse ──► Hook Script ──┬── Log to DB │ ├── Summarize (Haiku) ▼ └── Broadcast (WebSocket) Tool Execution │ ├── PostToolUse ──► Hook Script ──┬── Log to DB │ ├── Summarize (Haiku) ▼ └── Broadcast (WebSocket) Continue...

Step 4: Implement Summarization

AI-generated event summaries using Haiku:

async def summarize_event(event: ADWEvent) -> str: prompt = f"""Summarize in 15 words or less: Event: {event.type} Tool: {event.payload.get('tool_name', 'N/A')} Data: {str(event.payload)[:500]} """ return await claude.complete(prompt, model="haiku")

Step 5: Design Broadcast Pattern

Event distribution to clients:

class EventBroadcaster: def init(self, ws_manager, db_client): self.ws = ws_manager self.db = db_client

async def broadcast(self, event: ADWEvent):
    # Log to database first
    await self.db.log_event(event)

    # Broadcast to WebSocket clients
    await self.ws.broadcast(event.dict())

Hook Script Templates

PreToolUse Hook

#!/usr/bin/env python import sys, json, asyncio from adw_modules import broadcast, summarize

async def main(): data = json.load(sys.stdin)

event = {
    "type": "PreToolUse",
    "adw_id": data.get("adw_id"),
    "step": data.get("step"),
    "payload": {
        "tool_name": data["tool_name"],
        "tool_input": data["tool_input"]
    }
}

event["summary"] = await summarize(event)
await broadcast(event)

if name == "main": asyncio.run(main())

PostToolUse Hook

#!/usr/bin/env python import sys, json, asyncio from adw_modules import broadcast, summarize

async def main(): data = json.load(sys.stdin)

event = {
    "type": "PostToolUse",
    "adw_id": data.get("adw_id"),
    "step": data.get("step"),
    "payload": {
        "tool_name": data["tool_name"],
        "tool_output": data.get("tool_output", "")[:1000],
        "duration_ms": data.get("duration_ms", 0)
    }
}

event["summary"] = await summarize(event)
await broadcast(event)

if name == "main": asyncio.run(main())

Output Format

When designing hook event architecture:

Hook Event Architecture Design

Event Types

TypeTriggerPayload Schema
[type][when triggered][fields]

Hook Configuration

[hooks.json configuration]

Event Pipeline

[ASCII diagram of flow]

Summarization Strategy

[How Haiku generates summaries]

Broadcasting Pattern

[WebSocket or other broadcast mechanism]

Database Schema

[Event logging tables]

Implementation Checklist

-  [Step 1]

-  [Step 2]
...

## Design Checklist

- [ ] Event types defined with payloads
- [ ] Hook configuration specified
- [ ] Event pipeline documented
- [ ] Summarization prompt designed
- [ ] Broadcast mechanism chosen
- [ ] Database schema defined
- [ ] Error handling considered
- [ ] Performance implications assessed

## Anti-Patterns

| Anti-Pattern | Problem | Solution |
| --- | --- | --- |
| Sync broadcasting | Blocks agent execution | Async dispatch |
| No correlation ID | Can't trace workflows | Use adw_id |
| Raw payload logging | Token waste | Truncate large data |
| Missing summaries | Hard to scan | Always summarize |
| No error handling | Silent failures | Log and recover |

## Cross-References

- @hook-event-patterns.md - Event type details
- @websocket-architecture.md - Broadcasting patterns
- @production-patterns.md - Database logging
- @adw-framework.md - ADW overview

## Version History

- **v1.0.0** (2026-01-01): Initial release (Lesson 14)

---

## Last Updated

**Date:** 2026-01-01
**Model:** claude-opus-4-5-20251101

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Coding

design-thinking

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

plantuml-syntax

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

system-prompt-engineering

No summary provided by upstream source.

Repository SourceNeeds Review