Token导航 LogoToken导航TokenDH.com
研究检索只读github未标认证来源可访问clear审计未展示

event-sourcing事件溯源

Agent Skill

event-sourcing 用于查找、检索和筛选相关信息,适合在 Codex、Claude、Cursor、Gemini CLI 中需要根据关键词、任务场景或来源线索快速定位候选结果时使用。可结合来源仓库、安装命令和原始 README 继续核验具体用法。安装前建议确认权限范围、维护状态,以及是否会触发联网、命令执行或文件读写。

总安装

432

周安装

18

GitHub Stars

公开资料未说明

下载量

144
CodexClaudeCursorGemini CLI

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

GitHub

来源数

2

许可证

MIT

最后核验

2026-05-01

来源状态

来源可访问

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:event-sourcing(事件溯源)
来源仓库:https://github.com/yonatangross/skillforge-claude-plugin
仓库路径:skills/event-sourcing
安装命令:
npx skills add yonatangross/skillforge-claude-plugin --skill "event-sourcing"
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 npx skills 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

AgentSkills.tonpx skills
npx skills add yonatangross/skillforge-claude-plugin --skill "event-sourcing"

简介

用于发现并安装 AI 代理的技能。

  • 适合在 Codex、Claude、Cursor、Gemini CLI 中需要根据关键词快速定位候选结果时使用。
  • 通过 github 安装,安装命令为 npx skills add yonatangross/skillforge-claude-plugin --skill "event-sourcing"。
  • 建议确认权限范围、维护状态,以及是否会触发联网、命令执行或文件读写。
  • 可结合来源仓库和原始 README 继续核验具体用法。

SKILL.md

Event Sourcing Patterns

Store application state as immutable events rather than current state snapshots.

Overview

  • Full audit trail requirements (compliance, finance)
  • Temporal queries ("what was state at time X?")
  • CQRS implementations with separate read/write models
  • Systems requiring event replay and debugging
  • Microservices with eventual consistency

Quick Reference

Domain Event Base

from pydantic import BaseModel, Field
from datetime import datetime, timezone
from uuid import UUID, uuid4

class DomainEvent(BaseModel):
    event_id: UUID = Field(default_factory=uuid4)
    aggregate_id: UUID
    event_type: str
    version: int
    timestamp: datetime = Field(default_factory=lambda: datetime.now(timezone.utc))
    class Config:
        frozen = True  # Events are immutable

Event-Sourced Aggregate

class Account:
    def __init__(self):
        self._changes, self._version, self.balance = [], 0, 0.0

    def deposit(self, amount: float):
        self._raise_event(MoneyDeposited(aggregate_id=self.id, amount=amount, version=self._version + 1))

    def _apply(self, event):
        match event:
            case MoneyDeposited(): self.balance += event.amount
            case MoneyWithdrawn(): self.balance -= event.amount

    def load_from_history(self, events):
        for e in events: self._apply(e); self._version = e.version

Event Store Append

async def append_events(self, aggregate_id: UUID, events: list, expected_version: int):
    current = await self.get_version(aggregate_id)
    if current != expected_version:
        raise ConcurrencyError(f"Expected {expected_version}, got {current}")
    for event in events:
        await self.session.execute(insert(event_store).values(
            event_id=event.event_id, aggregate_id=aggregate_id,
            event_type=event.event_type, version=event.version, data=event.model_dump()
        ))

Key Decisions

DecisionRecommendation
Event namingPast tense (OrderPlaced, not PlaceOrder)
ConcurrencyOptimistic locking with version check
SnapshotsEvery 100-500 events for large aggregates
Event schemaVersion events, support upcasting
ProjectionsAsync handlers, idempotent updates
StoragePostgreSQL + JSONB or dedicated event store

Anti-Patterns (FORBIDDEN)

# NEVER modify stored events
await event_store.update(event_id, new_data)  # Destroys audit trail

# NEVER include computed data in events
class OrderPlaced(DomainEvent):
    total: float  # WRONG - compute from line items

# NEVER ignore event ordering
async for event in events:  # May arrive out of order
    await handle(event)  # Must check version/sequence

# ALWAYS use immutable events
class Event(BaseModel):
    class Config:
        frozen = True  # Correct

# ALWAYS version your events
event_schema_version: int = 1  # Support schema evolution

Related Skills

  • message-queues - Distributed event delivery
  • database-schema-designer - Event store schema design
  • integration-testing - Testing event-sourced systems

Capability Details

event-store

Keywords: event store, append-only, event persistence, event log Solves:

  • Store events with optimistic concurrency
  • Query events by aggregate ID
  • Implement event versioning

aggregate-pattern

Keywords: aggregate, domain model, event sourcing aggregate, DDD Solves:

  • Model aggregates with event sourcing
  • Apply events to rebuild state
  • Handle commands and raise events

projections

Keywords: projection, read model, CQRS read side, denormalization Solves:

  • Create optimized read models from events
  • Implement async event handlers
  • Build materialized views

snapshots

Keywords: snapshot, performance, aggregate loading, checkpoint Solves:

  • Speed up aggregate loading with snapshots
  • Implement snapshot strategies
  • Balance snapshot frequency vs storage

适合场景

01

用户想查找某类 Agent Skill 时

02

需要根据任务场景推荐可安装能力包时

03

需要对比不同来源的安装命令和来源信息时

04

需要参考平台分布和安装热度时

能力概览

能力 1

按任务关键词查找相关 Skills

能力 2

展示可复制的安装命令

能力 3

保留来源站点、仓库和原始说明,方便继续核验

能力 4

补充不同宿主或平台的使用分布数据

安装后应在对应宿主中按原始 README 的触发条件使用;具体调用方式请以来源页面和 README 为准。

平台分布

Claude Code

26.15%
按下载量换算38

OpenCode

23.25%
按下载量换算33

Antigravity

19.62%
按下载量换算28

Gemini CLI

13.63%
按下载量换算20

windsurf

7.13%
按下载量换算10

trae

3.5%
按下载量换算5

安全审计

暂无安全审计结果可展示。

权限和风险

只读

该 Skill 主要提供规则、说明或参考内容,本身偏只读;真正读写文件、联网或执行命令仍取决于宿主 Agent 的任务。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。当前只有一个来源,正式发布前建议补源仓库或其他目录站核验。

来源信息

继续浏览同类 Skills