[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6CRPVR3WN17PBWAAWVP34DF":3,"skill-same:01M6CRPVR3WN17PBWAAWVP34DF":74},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":44,"linkOnly":45,"markdownContent":46,"markdownBody":47,"frontMatter":48,"refName":51,"commitSha":52,"skillDirectory":53,"forksCount":54,"repositoryHtmlUrl":55,"repositoryHomepageUrl":56,"ownerHtmlUrl":57,"ownerBlogUrl":6,"ownerDescription":58,"updatedAt":59,"install":60,"resources":73},"01M6CRPVR3WN17PBWAAWVP34DF","icdev-monitor",null,"Production monitoring with log analysis, metric collection, alerting, and self-healing trigger. Use when setting up monitoring or investigating a production issue.","icdev-ai\u002Ficdev","icdev-ai","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F263484343?v=4","01M6CRKT7MDJ59XZEZCZG71ZZJ","ICDEV","01M6CRKTC2D4HSVMX00PJ96XNJ",5,"Apache-2.0","https:\u002F\u002Fgithub.com\u002Ficdev-ai\u002Ficdev\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Ficdev-monitor\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43],"icdev","icdev monitor","monitor","log analysis","when","fork","with","trigger","healing","self","self-healing","issue","log","up","use","edit","write","read","grep","Bash","analysis","collection","Production","monitoring","alerting","2026-11-10 10:12:30",false,"---\nname: ss14-eventbus\ndescription: Architectural guide to EventBus in Space Station 14 - strict event taxonomy, subscription storage, dispatch logic and internal optimization mechanisms.\n---\n\n# ? EventBus architecture in SS14\n\nEventBus is the central nervous system of the Space Station 14 (RobustToolbox) engine. It orchestrates communication between systems and entities, implementing a highly optimized dispatch mechanism without unnecessary allocations. ?\n\n## ?️ Basic Architecture\n\nEventBus is implemented through the `IEventBus` interface and combines two different event paradigms:\n1. **Broadcast Events**: Global events sent to all subscribers of a certain type. ?\n2. **Directed Events**: Events targeting a specific entity are sent only to components on that entity. ?\n\n### ? Internal Storage\n\nTo achieve high performance, EventBus supports several specialized data structures:\n\n*   **Broadcast Subscriptions (`_eventData`)**:\n    * Dictionary `Type` -> `EventData`.\n    * Stores a list of all global subscribers for each event type.\n    * Used for broadcast events and system notifications.\n\n* **Directed Subscriptions (`_eventSubs` and `_compEventSubs`)**:\n    * Array structure of arrays (jagged array), indexed by `CompIdx` (Component Index).\n    * `_eventSubs[CompIdx]`: Maps `EventType` -> `Handler`.\n    * Allows you to search for component handlers for a specific event in O(1). ⚡\n    * Divided into general events and optimized Component Events (see below).\n\n*   **Entity Event Tables (`_entEventTables`)**:\n    * Dictionary stored for each active `EntityUid`.\n    * Displays `EventType` -> `LinkedList\u003CCompIdx>`.\n    * Keeps track of which components *on a specific entity* are listening to a specific event.\n    * This prevents iterating through all entity components to find listeners. ??\n\n## ? Event Paradigms\n\n### 1. Broadcast Events (`RaiseEvent`) ?\n* **Target**: No specific entity. Global scope.\n* **Uses**: Communication between systems, global game state changes (for example, `GameRunLevelChangedEvent`), round notifications.\n* **Dispatching**:\n    * Looks up `EventData` for the event type.\n    * Iterates over all registered `IEntityEventSubscriber` (mostly EntitySystems).\n    * Supports `ByRef` events for performance with zero allocations.\n\n### 2. Directed Events (`RaiseLocalEvent`) ?\n* **Target**: Specific `EntityUid`.\n* **Usage**: Interactions, damage, UI clicks, anything that happens *to* the entity.\n* **Dispatching**:\n    1. Finds `EventTable` for the target entity.\n    2. Finds a list of component indices (`CompIdx`) subscribed to this event type.\n    3. Gets the actual component instances from `EntityManager`.\n    4. Calls the cached handler delegate for each component.\n* **Performance**: Highly optimized. Uses `ref` structures and `Unsafe.As` to avoid boxing `struct` events. ?\n\n### 3. Component Events (`RaiseComponentEvent`) ?\n* **Target**: A specific instance of `IComponent` on an entity.\n* **Application**: Network processing, specialized component updates.\n* **Optimization**:\n    * Bypasses the search in the `EventTable` entity.\n    * Directly calls a handler for a specific component instance.\n    * Used internally for `HandleComponentState` and network replication to minimize overhead.\n\n## ? Mechanics of Subscriptions\n\n### Registration ?\nSubscriptions are usually registered during `EntitySystem.Initialize()`:\n\n1. **Directed**: `SubscribeLocalEvent\u003CTComp, TEvent>(Handler)` -> Registers `Handler` in `_eventSubs` for `TComp`.\n2. **Broadcast**: `SubscribeEvent\u003CTEvent>(Handler)` -> Registers `Handler` to `_eventData`.\n\n###Ordering ?\nEvents\u002FSubscriptions support explicit ordering using the `before` and `after` types.\n* EventBus topologically sorts handlers based on these constraints.\n* This ensures a deterministic order of execution (e.g. the armor system handles damage *before* the health system).\n* **⚠️ Warning**: Circular dependencies in order will throw an exception on initialization.\n\n## ?️ Optimization Techniques\n\nEventBus uses aggressive optimization to support thousands of events per tick:\n\n* **Ref Events (`ByRefEventAttribute`)**: Events can be marked for passing by reference. This avoids copying large structures. ?➡️\n* **Unit Structs**: Internally, the bus uses the `ref Unit` and `Unsafe.As` pointers to erase event argument types without boxing them into `object`. ?‍♂️\n* **Frozen Collections**: After initialization, subscription dictionaries are \"frozen\" (`FrozenDictionary`) to optimize read performance. ❄️\n* **Struct Events**: Most events are structures (`struct`) rather than classes (`class`) to eliminate pressure on the garbage collector (GC). ?️\n\n## ⛔ Critical Limitations\n\n1. **Lock Subscriptions**: You cannot subscribe\u002Funsubscribe while dispatching events (unless you use options with `Queue`). The bus is blocked during iteration. ?\n2. **Overhead of Generics**: The bus minimizes the use of generics in hot paths to avoid JIT overhead for each event type.\n3. **Thread Safety**: EventBus **is not** thread safe. All events must be raised on the main thread. ?\n","# ? EventBus architecture in SS14\n\nEventBus is the central nervous system of the Space Station 14 (RobustToolbox) engine. It orchestrates communication between systems and entities, implementing a highly optimized dispatch mechanism without unnecessary allocations. ?\n\n## ?️ Basic Architecture\n\nEventBus is implemented through the `IEventBus` interface and combines two different event paradigms:\n1. **Broadcast Events**: Global events sent to all subscribers of a certain type. ?\n2. **Directed Events**: Events targeting a specific entity are sent only to components on that entity. ?\n\n### ? Internal Storage\n\nTo achieve high performance, EventBus supports several specialized data structures:\n\n*   **Broadcast Subscriptions (`_eventData`)**:\n    * Dictionary `Type` -> `EventData`.\n    * Stores a list of all global subscribers for each event type.\n    * Used for broadcast events and system notifications.\n\n* **Directed Subscriptions (`_eventSubs` and `_compEventSubs`)**:\n    * Array structure of arrays (jagged array), indexed by `CompIdx` (Component Index).\n    * `_eventSubs[CompIdx]`: Maps `EventType` -> `Handler`.\n    * Allows you to search for component handlers for a specific event in O(1). ⚡\n    * Divided into general events and optimized Component Events (see below).\n\n*   **Entity Event Tables (`_entEventTables`)**:\n    * Dictionary stored for each active `EntityUid`.\n    * Displays `EventType` -> `LinkedList\u003CCompIdx>`.\n    * Keeps track of which components *on a specific entity* are listening to a specific event.\n    * This prevents iterating through all entity components to find listeners. ??\n\n## ? Event Paradigms\n\n### 1. Broadcast Events (`RaiseEvent`) ?\n* **Target**: No specific entity. Global scope.\n* **Uses**: Communication between systems, global game state changes (for example, `GameRunLevelChangedEvent`), round notifications.\n* **Dispatching**:\n    * Looks up `EventData` for the event type.\n    * Iterates over all registered `IEntityEventSubscriber` (mostly EntitySystems).\n    * Supports `ByRef` events for performance with zero allocations.\n\n### 2. Directed Events (`RaiseLocalEvent`) ?\n* **Target**: Specific `EntityUid`.\n* **Usage**: Interactions, damage, UI clicks, anything that happens *to* the entity.\n* **Dispatching**:\n    1. Finds `EventTable` for the target entity.\n    2. Finds a list of component indices (`CompIdx`) subscribed to this event type.\n    3. Gets the actual component instances from `EntityManager`.\n    4. Calls the cached handler delegate for each component.\n* **Performance**: Highly optimized. Uses `ref` structures and `Unsafe.As` to avoid boxing `struct` events. ?\n\n### 3. Component Events (`RaiseComponentEvent`) ?\n* **Target**: A specific instance of `IComponent` on an entity.\n* **Application**: Network processing, specialized component updates.\n* **Optimization**:\n    * Bypasses the search in the `EventTable` entity.\n    * Directly calls a handler for a specific component instance.\n    * Used internally for `HandleComponentState` and network replication to minimize overhead.\n\n## ? Mechanics of Subscriptions\n\n### Registration ?\nSubscriptions are usually registered during `EntitySystem.Initialize()`:\n\n1. **Directed**: `SubscribeLocalEvent\u003CTComp, TEvent>(Handler)` -> Registers `Handler` in `_eventSubs` for `TComp`.\n2. **Broadcast**: `SubscribeEvent\u003CTEvent>(Handler)` -> Registers `Handler` to `_eventData`.\n\n###Ordering ?\nEvents\u002FSubscriptions support explicit ordering using the `before` and `after` types.\n* EventBus topologically sorts handlers based on these constraints.\n* This ensures a deterministic order of execution (e.g. the armor system handles damage *before* the health system).\n* **⚠️ Warning**: Circular dependencies in order will throw an exception on initialization.\n\n## ?️ Optimization Techniques\n\nEventBus uses aggressive optimization to support thousands of events per tick:\n\n* **Ref Events (`ByRefEventAttribute`)**: Events can be marked for passing by reference. This avoids copying large structures. ?➡️\n* **Unit Structs**: Internally, the bus uses the `ref Unit` and `Unsafe.As` pointers to erase event argument types without boxing them into `object`. ?‍♂️\n* **Frozen Collections**: After initialization, subscription dictionaries are \"frozen\" (`FrozenDictionary`) to optimize read performance. ❄️\n* **Struct Events**: Most events are structures (`struct`) rather than classes (`class`) to eliminate pressure on the garbage collector (GC). ?️\n\n## ⛔ Critical Limitations\n\n1. **Lock Subscriptions**: You cannot subscribe\u002Funsubscribe while dispatching events (unless you use options with `Queue`). The bus is blocked during iteration. ?\n2. **Overhead of Generics**: The bus minimizes the use of generics in hot paths to avoid JIT overhead for each event type.\n3. **Thread Safety**: EventBus **is not** thread safe. All events must be raised on the main thread. ?\n",{"name":49,"description":50},"ss14-eventbus","Architectural guide to EventBus in Space Station 14 - strict event taxonomy, subscription storage, dispatch logic and internal optimization mechanisms.","master","6a3df650d852a6030c88af915065c7b16127dd84",".claude\u002Fskills\u002Ficdev-monitor",0,"https:\u002F\u002Fgithub.com\u002Ficdev-ai\u002Ficdev","https:\u002F\u002Fpypi.org\u002Fproject\u002Ficdev\u002F","https:\u002F\u002Fgithub.com\u002Ficdev-ai","The System That Builds Systems — Autonomous AI Engineering for Trusted Government & Defense Software","2026-11-09 01:50:06",{"source":8,"skillName":49,"commands":61,"prompt":71,"zipAvailable":72},[62,65,68],{"tool":63,"command":64},"npx","npx skills add icdev-ai\u002Ficdev --skill ss14-eventbus",{"tool":66,"command":67},"bunx","bunx skills add icdev-ai\u002Ficdev --skill ss14-eventbus",{"tool":69,"command":70},"pnpm","pnpm dlx skills add icdev-ai\u002Ficdev --skill ss14-eventbus","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Ficdev-ai\u002Ficdev\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Ficdev-monitor\u002FSKILL.md",true,[],[75,107,123,153,171,186],{"skillNo":76,"name":19,"nameZh":6,"description":77,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":78,"categories":79,"keywords":85,"publishedAt":44},"01M6CRS3J093EJ55E3ZGJ1Y5CV","Work inside an ICDEV project from any coding harness -- the icdev-unified MCP tools, the `icdev` CLI, kanban claim\u002Frelease, worktree-first branching, and where ICDEV's pre-tool guard lives. Use when a repo has CLAUDE.md\u002FAGENTS.md naming ICDEV, a kanban task id (e.g. omx-dx-02), or you need an ICDEV tool.","https:\u002F\u002Fgithub.com\u002Ficdev-ai\u002Ficdev\u002Fblob\u002Fmain\u002Ficdev\u002Fdata\u002Fskills\u002Ficdev\u002FSKILL.md",[80],{"categoryNo":81,"categoryName":82,"taxonomyType":83,"taxonomyTypeDesc":84},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[19,86,87,88,89,90,91,92,93,94,95,96,97,98,33,99,100,101,102,103,104,105,106,23],"MCP","cli","release","harness","mcp tools","worktree","Tools","first","guard","tool","coding","work","repo","kanban","dx","task","claim","project","id","naming","you",{"skillNo":108,"name":109,"nameZh":6,"description":110,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":111,"categories":112,"keywords":113,"publishedAt":44},"01M6CRS1RG2GW0NDYS260R0FBJ","icdev-worktree","Create and manage isolated git worktrees for parallel ICDEV™ task execution. Use when invoking \u002Ficdev-worktree.","https:\u002F\u002Fgithub.com\u002Ficdev-ai\u002Ficdev\u002Fblob\u002Fmain\u002Ficdev\u002Fdata\u002Fclaude_bootstrap\u002Fclaude\u002Fskills\u002Ficdev-worktree\u002FSKILL.md",[],[91,114,19,115,116,117,118,119,33,120,121,101,122,23],"icdev worktree","create","git","execution","parallel","git worktrees","worktrees","manage","for",{"skillNo":124,"name":125,"nameZh":6,"description":126,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":127,"categories":128,"keywords":137,"publishedAt":44},"01M6CRRZ03606K47A4RRZQCJC6","icdev-test","Run the full test suite (pytest unit + behave BDD) with coverage reporting and compliance tracking. Use when validating code quality and coverage before a release.","https:\u002F\u002Fgithub.com\u002Ficdev-ai\u002Ficdev\u002Fblob\u002Fmain\u002Ficdev\u002Fdata\u002Fclaude_bootstrap\u002Fclaude\u002Fskills\u002Ficdev-test\u002FSKILL.md",[129,132],{"categoryNo":130,"categoryName":131,"taxonomyType":83,"taxonomyTypeDesc":84},"01JBSEEDCAT000000000000008","测试与质量",{"categoryNo":133,"categoryName":134,"taxonomyType":135,"taxonomyTypeDesc":136},"01JBSEEDCAT000000000000037","律师与法务","PROFESSION","适用职业",[138,139,19,140,141,142,88,143,144,38,145,146,37,36,35,34,147,148,33,149,150,151,25,152,23],"test","icdev test","code quality","run","code","reporting","compliance","quality","bdd","tracking","coverage","test suite","behave","unit","pytest unit",{"skillNo":154,"name":155,"nameZh":6,"description":156,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":157,"categories":158,"keywords":160,"publishedAt":44},"01M6CRRWBBB2WNCVPS4W0R86W5","icdev-status","Display comprehensive project status including compliance, security, deployment, and agent health. Use when checking overall project health or preparing a status report.","https:\u002F\u002Fgithub.com\u002Ficdev-ai\u002Ficdev\u002Fblob\u002Fmain\u002Ficdev\u002Fdata\u002Fclaude_bootstrap\u002Fclaude\u002Fskills\u002Ficdev-status\u002FSKILL.md",[159],{"categoryNo":133,"categoryName":134,"taxonomyType":135,"taxonomyTypeDesc":136},[161,162,19,163,164,165,144,166,38,37,36,35,34,167,168,33,103,169,170,23],"status","icdev status","security","deployment","report","health","project health","project status","status report","display",{"skillNo":172,"name":173,"nameZh":6,"description":174,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":175,"categories":176,"keywords":177,"publishedAt":44},"01M6CRRTEQR4XWY44FWCS57HFP","icdev-simulate","Run Digital Program Twin simulations and generate COAs for requirements. Use when simulating program scenarios or generating courses of action.","https:\u002F\u002Fgithub.com\u002Ficdev-ai\u002Ficdev\u002Fblob\u002Fmain\u002Ficdev\u002Fdata\u002Fclaude_bootstrap\u002Fclaude\u002Fskills\u002Ficdev-simulate\u002FSKILL.md",[],[178,19,179,180,141,33,181,182,183,122,23,184,185],"icdev simulate","simulate","generate","requirements","courses","action","program","Simulations",{"skillNo":187,"name":188,"nameZh":6,"description":189,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":190,"categories":191,"keywords":192,"publishedAt":44},"01M6CRRQV7N2SH80KX5H3VCKW0","icdev-secure","Run comprehensive security scanning (SAST, dependency audit, secret detection, container scan). Use when scanning code or containers for security vulnerabilities before deployment.","https:\u002F\u002Fgithub.com\u002Ficdev-ai\u002Ficdev\u002Fblob\u002Fmain\u002Ficdev\u002Fdata\u002Fclaude_bootstrap\u002Fclaude\u002Fskills\u002Ficdev-secure\u002FSKILL.md",[],[193,194,19,195,196,163,164,141,142,197,198,199,200,38,36,35,34,33,201,202,203,204,205,206,122,23],"secure","icdev secure","containers","sast","audit","dependency audit","secrets","pip-audit","scanning","dependency","container","security scanning","scan","bandit"]