Skills DirectorySkills Directory
SkillsLearnSecurityCategoriesDocsCommunityBlog
Sign InSubmit Skill
Skills Directory

Security-tested agent skills for Claude, coding agents, and AI workflows.

Directory

  • Browse Skills
  • All Skills A–Z
  • Claude Skills
  • Claude Code Skills
  • Agent Skills
  • Categories
  • Authors
  • Submit a Skill

Learn

  • Learn Hub
  • Install Claude Skills
  • Write SKILL.md
  • Skills vs MCP
  • Directories Compared

Security

  • Security
  • Methodology
  • Secure Claude Skills
  • Security Badges

Company

  • About
  • Community
  • Blog
  • API Docs
  • Advertise

2026 Skills Directory. All rights reserved.

ProTermsPrivacyRefunds
Back to skills

E4008 Event

ASecurity

Validate the event publish-and-subscribe design of a space simulator against ECSS-E-ST-40-08C clause 5.4.6. Use when the task is declaring an event source with one typed argument, refusing a repeated subscription or an unsubscribe by a sink that never subscribed, holding notification in subscription order, checking an emitted argument against the declared type, keeping an emission out of a simulator state that cannot honour it, isolating one raising sink so the sinks behind it are still notif...

2 stars
0 votes
0 copies
0 views
Added 9/27/2026
ai-agentspython

Works with

claude code

Security Analysis

A100/100

Scanned 9/27/2026

Install to Claude Code

$npx -y skills add ashfordeOU/aero-agent-skills --skill e4008-event --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of E4008 Event?

Add the live security badge to your README — it updates automatically with every re-scan.

Security grade badge for E4008 Event
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/ashfordeou-e4008-event/badge)](https://www.skillsdirectory.com/skills/ashfordeou-e4008-event)

More formats (shields.io, HTML) on the badges page.

Download with Pro
Files
SKILL.md
---
name: e4008-event
description: "Validate the event publish-and-subscribe design of a space simulator against ECSS-E-ST-40-08C clause 5.4.6. Use when the task is declaring an event source with one typed argument, refusing a repeated subscription or an unsubscribe by a sink that never subscribed, holding notification in subscription order, checking an emitted argument against the declared type, keeping an emission out of a simulator state that cannot honour it, isolating one raising sink so the sinks behind it are still notified, and grading the design against the fourteen normative items the clause carries. Trigger: ecss, e-st-40-08c, simulator-event-source, simulator-event-sink, event-subscription-order, event-argument-type-check, duplicate-event-subscription, event-sink-failure-isolation, event-emission-state-guard."
license: Apache-2.0
compliance: STANDARDS-REF
standards:
  - id: ecss
    reference-only: true
gated: false
domain: space-systems
pack: space-systems
compatibility: "agentskills.io SKILL.md; any SKILL.md host (Claude Code, Hermes, OpenClaw)"
metadata:
  domain: space-systems
  subdomain: ecss
  tags: [ecss, e-st-40-08-simulation-scope, e4008-event, simulator-event-source, simulator-event-sink, event-subscription-order, event-argument-type-check, event-sink-failure-isolation]
  version: 0.1.0
  author: Aero Agent Skills
---

# ECSS Simulation Infrastructure — Event (space-systems/ecss/e4008-event)

Use when the task is the event mechanism of ECSS-E-ST-40-08C clause 5.4.6
-- how a simulator publishes an event, who is allowed to subscribe to it,
what an emission may carry, and what the infrastructure owes the
remaining subscribers when one of them fails. The clause carries fourteen
normative items and a design is graded against all of them.

## Domain quick reference

- An event source is a named publication point with exactly one declared
  argument type drawn from the infrastructure primitive set. A void
  source publishes the fact that something happened and nothing else, so
  handing it a payload is an error and not a convenience.
- Subscription is by sink identity, not by callable. A repeated
  subscription by the same sink is refused rather than folded into one,
  because the alternative makes the delivered notification count depend
  on how many times the model tree was walked during assembly.
- Sink identity has to be canonical before it is compared. Two names that
  differ only by case, hyphen or blank are the same subscriber; letting
  them both in means an unsubscribe removes one of a pair the design
  believed was single.
- Notification order is the subscription order. It is the only order a
  replay can reproduce, so a set-backed or hash-backed subscriber store
  is a reproducibility defect even when every sink is eventually reached.
- Emission is a state-dependent operation. A simulator that has not yet
  built its model tree, or that is already unwinding, has no consistent
  set of sinks to notify; those states refuse the emission instead of
  dropping it silently.
- One sink raising is a sink defect, not an event defect. The emission
  records the failure and carries on down the list, so a single bad
  subscriber cannot quietly starve every subscriber added after it.
- The delivery walks a snapshot of the subscriber list. A sink that
  unsubscribes from inside its own notification changes the next
  emission, never the one in flight.

## Workflow

1. Validate each source name and argument type at declaration; a
   repeated name inside one publisher is refused rather than shadowed.
2. Record a declared subscriber ceiling where the design states one, and
   whether the source has a documented emitter -- a source nothing ever
   raises is dead interface surface.
3. Canonicalise every sink name to its identity token before subscribing,
   and refuse both an exact repeat and an aliased repeat.
4. Refuse an unsubscribe naming a sink the source does not hold; an
   ignored unsubscribe hides a wiring error in the model tree.
5. On emission, resolve the simulator state, reject a state that cannot
   honour a notification, then check the argument against the declared
   type with the void case handled explicitly.
6. Stamp the emission with the next sequence number, notify the snapshot
   in subscription order, and collect the raising sinks separately from
   the delivered ones.
7. Grade the fourteen normative items, separating a violated item from
   one the evidence never exercised, and report coverage alongside the
   verdict so an untested item cannot read as a pass.

## Pitfalls

- Treating a repeated subscription as idempotent. Collapsing it silently
  makes the notification count depend on assembly order, and the defect
  only shows up as a duplicated telemetry sample much later.
- Comparing sink names raw. A subscriber added as one spelling and
  removed as another leaves a stale entry that keeps receiving
  notifications after the model believes it detached.
- Storing subscribers in a set or dictionary keyed by object identity.
  Every sink is still reached, so the tests pass, but two runs of the
  same scenario notify them in different orders and the recorded output
  stops being reproducible.
- Swallowing an exception raised by a sink and stopping the walk. The
  sinks registered after the raising one never learn the event happened,
  and nothing in the run log says so.
- Mutating the subscriber list from inside a notification. The walk then
  skips the sink that moved into the vacated slot, which is the hardest
  class of missed-notification defect to reproduce.
- Reporting an item as satisfied because no evidence contradicted it. An
  item no scenario exercised is not a pass; it is a coverage gap and the
  assessment reports it as its own status.

## Behavior contract (gate 3)

Name and type validation, sink identity canonicalisation, subscription
and unsubscription refusal, ordered snapshot delivery, state-guarded
emission, argument type checking, raising-sink isolation and the
fourteen-item conformance grading are exercised by the gate 3 contract
test: scripts/test_e4008_event.py against scripts/e4008_event_logic.py
(stdlib unittest, offline). Run:
python3 scripts/test_e4008_event.py

## Compliance

- ECSS standards are freely downloadable (ESA); cite the source and
  paraphrase per standards-map.yaml.
- compliance: STANDARDS-REF, gated: false.

Attribution

ashfordeOUashfordeOU
View sourceMore from ashfordeOU →
SSkills DirectorySkills Directory

Know which skills are safe — weekly.

Best new skills + every skill we flagged as malicious. From the team that scanned 103,619.

Join free

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments (0)

No comments yet. Be the first to comment!

SSkills DirectorySkills Directory

Know which skills are safe — weekly.

Best new skills + every skill we flagged as malicious. From the team that scanned 103,619.

Join free

Related Skills

Caveman

Ultra-compressed communication mode that cuts output tokens while keeping technical accuracy. Levels: lite, full, ultra and the wenyan variants. Use for /caveman, "caveman mode", "talk like caveman", "be brief" or "less tokens".

1074701 votes

Hyperplan

Adversarial multi-agent planning skill. Self-orchestrates 5 hostile category members (unspecified-low, unspecified-high, deep, ultrabrain, artistry) via team-mode for ruthless cross-critique debate, distills only the defensible insights, then MANDATORILY hands the distilled insight bundle to the `plan` agent for executable plan formalization. Use when planning needs maximum rigor and surfacing of weak assumptions, blind spots, and over-engineering. Triggers: 'hyperplan', 'hpp', '/hyperplan', ...

694821 votes

Mcp Code Execution

Routes multi-tool workflows through MCP servers for large datasets and pipelines. Use when Bash tool overhead is limiting throughput on data-heavy tasks.

3351 votes

catchup

Recovers the conversation and failed tool calls of a previous Codex, Claude Code, Antigravity, Cline, Copilot CLI, Cursor, DeepSeek Harness, Kimi, OpenCode, Pi Agent, or ZCode session. Use when the user says "catch up", "what did the last session do", "get me up to speed", "I switched agents", asks to recover/summarize a previous session before continuing, or asks to diagnose or report a catchup failure. Do NOT use for the current conversation, git history, or any non-agent log.

691 votes

math-skill

A comprehensive mathematical reasoning skill for AI assistants — handles arithmetic to research-level problems with rigorous step-by-step reasoning, systematic verification, and transparent uncertainty handling

381 votes
View all in ai-agents →