算法艺术创作
algorithmic-art
通过代码和可调参数创作生成艺术与交互式视觉效果。
observability【设计与创意】Use when designing what to emit (not how to deploy). Produces a signals map — SLIs, correlation IDs, span boundaries, alert classes, redaction rules, cardinality budget, ownership. Covers the four pillars (logging / metrics / tracing / alerting) unified under OTLP in 2026 with vendor-neutral schemas. Callable by forge or standalone. Trigger on: "what…
独立 GitHub 快照 · 自动分类 · 以原作者文档为准
A signal-design primitive. Produces a signals map (signals-map.yaml) that
declares WHAT a service emits: Service Level Indicators, correlation IDs, span
boundaries, alert classes, redaction rules, cardinality budget, and ownership.
Vendor-neutral by construction: the map is consumed by whichever backend is
deployed (Prometheus+Grafana+Loki+Tempo, Datadog, Honeycomb, Dynatrace, Splunk
Observability, etc.).
Scope. Signal design only. Does NOT deploy telemetry infrastructure, does NOT set SLO targets / error budgets, does NOT write vendor query languages. Those responsibilities live in other skills (see Boundaries table below).
Callers.
forge — Step 1 branching question routes here when the task changes runtime
behavior, service boundaries, or SLOs. Signals map lands in shared_context
as a constraint for design agents.We own signal design. Platform deployment, SLO governance, and vendor queries are owned by other skills. Attempting to cover all three in one skill produced a thin router in earlier iterations; this skill is scoped to the unique artifact only — the signals map — because that is where the value lives and the other skills already do the remaining work well.
| Responsibility | Owner | Why here is wrong |
|---|---|---|
| Platform deployment (install / systemd / daemon.json / agent rollout) | ubuntu-monitoring, rhel-monitoring | OS-dependent ops detail; signals-map is runtime-agnostic |
| SLO governance (targets, error budgets, burn-rate policy) | delivery-manager | SLIs defined here are INPUTS to SLOs; the policy layer is elsewhere |
| Vendor query languages (SPL, Datadog DQL, Kusto, LogQL dialects) | splunk-developer, per-vendor skills | Queries depend on the backend; signals-map is the contract each backend consumes |
| Capacity math / load testing | performance | Observability observes; performance predicts and validates |
| OS event / SIEM analysis | windows-ps-security, rhel-monitoring | Security observability has its own taxonomy (out of v1 scope) |
If a user asks "how do I install Prometheus on RHEL 9?" — redirect to
rhel-monitoring. If they ask "what should we instrument?" or "define our SLIs"
or "design our signals" — stay here.
In 2020 logs, metrics, traces, and alerts were silos owned by separate vendors and wired by hand. In 2026 they are one OpenTelemetry Protocol (OTLP) stream with shared identity:
trace_id + span_id alongside the messageThe signals map declares these linkages explicitly — a service whose logs do
not carry trace_id or whose alerts do not reference runbooks is NOT complete
regardless of how much telemetry volume it emits.
The OTel Collector (sidecar or daemonset) is the common receive/transform/export hop; which backend it exports to is a deployment decision that lives outside this skill.
Every invocation of this skill produces a filled signals-map.yaml. Schema,
required fields, completeness-check procedure, and a fully-worked FastAPI
example: see references/signals-map-schema.md.
Skeleton:
schema_version: 1
service: <name>
owners: {team, slack, pagerduty}
generated_at: <iso8601>
generated_by: observability@<skill-version>
slis: [...] # SERVICE LEVEL INDICATORS (what is measured)
correlation_ids: {...} # HEADER + generation + propagation channels
span_boundaries: [...] # WHAT GETS TRACED (entry points and fan-outs)
alerts: [...] # EACH references an SLI + has a runbook_ref
redaction_rules: [...] # optional unless PII handling
cardinality_budget: {...} # per-metric + per-label caps; exile rules
runbook_urls: [...]
The map is the handoff to every downstream consumer:
performance skill reads slis + span_boundaries to know what to
load-test againstdelivery-manager reads slis to attach SLO targets and error budgetscardinality_budget to cap metric labels before they
explode storage costsalerts[].runbook_ref to know what to do at 3amUser invokes the skill directly ("design our signals for checkout-api"). Procedure:
references/signals-questionnaire.md
and ask the five SRE gatekeeper questions in order (failure mode,
collector presence, cardinality, backpressure, runbooks).signals-map.yaml as a YAML code block in the response.Forge Step 1 detects "changes runtime behavior, service boundaries, or SLOs"
and delegates here. Forge passes shared_context (problem statement,
component list, existing architecture notes). Procedure:
shared_context; extract service name, teams, likely
correlation header (x-request-id if none specified), framework hints.span_boundaries includes
kafka-publish, design agents cannot propose an async integration that
skips tracing).shared_context; do not re-ask what forge already captured.progress/signals-maps/<service>.yaml by default) and return the path.ubuntu-monitoring or rhel-monitoring. This skill does not cover
installation, systemd units, daemon.json, or OS-level config.delivery-manager.
The alerts[] section references SLIs; the TARGET each alert fires against
(e.g. "2% budget burn in 1h") is a policy decision for delivery-manager.service,
slis[] (≥1), correlation_ids.header, span_boundaries[] (≥1),
alerts[] (≥1 burn-rate alert if any SLI exists), cardinality_budget,
ownership.primary_team, runbook_urls[] (≥1). A map missing any of these
is incomplete; the skill must refuse a "complete" verdict and report the
gap.runbook_ref = not a complete alert.
Alerts without runbooks create pager fatigue, which creates alert apathy,
which creates outages. If the runbook URL is not yet written, record the
alert as status: draft and block completion — do not file a pointer to
TBD or an internal wiki landing page that does not exist.per_metric_labels_max and per_label_distinct_values_max as concrete
integers. Claiming "unlimited" is incomplete. High-cardinality items
(user_id, request_id, session_id, tenant IDs in large-tenant systems)
go to tracing via high_cardinality_exile_to: tracing, NOT to metric
labels. Discovering cardinality after a backend bill spike is the failure
mode this rule prevents.| Don't | Why |
|---|---|
Cardinality explosion — tag metrics with user_id or request_id | Unbounded label values turn one counter into millions of series; Prometheus OOMs or the SaaS bill triples. Exile per HARD-RULE 5 |
| Dashboard graveyard — ship 40-panel Grafana dashboards as the deliverable | Dashboards are a secondary consumer of signals, not the design. Start from SLIs + alerts; dashboards derive from them |
| ELK in 2026 (cargo-cult) — spec Elasticsearch / Logstash / Kibana because the playbook says so | In 2026 the default stack is OTLP → OTel Collector → (Prometheus / Loki / Tempo) or a SaaS (Datadog / Honeycomb). ELK still fits specific compliance cases but is not the default |
| CPU-threshold alerts without SLO linkage — "alert if CPU > 80%" | CPU at 80% is fine if latency is fine. Alert on USER-FACING failure (SLO burn rate), then investigate CPU as a cause. See HARD-RULE 2 |
Traces that don't propagate headers — trace_id starts fresh at each service | Cross-service traces require W3C Trace Context forwarded through HTTP + message broker + task queue. Declare every hop in correlation_ids.propagation |
logger.info in tight loops — emitting per-request debug logs in hot paths | At 1k RPS a tight-loop info log is 1k lines/sec = 86M lines/day = terabytes/month. Use DEBUG level + sampling, or move to tracing |
| Alerts without runbooks — ship an alert rule with a TODO for the runbook | Pager fatigue is the enemy. HARD-RULE 4: no runbook = not a complete alert |
| SLIs defined by what's easy to measure | Start from the user-visible failure mode ("checkout hangs", "page renders blank") and work backwards to the indicator that would catch it. "What's easy to measure" is how you end up with 200 dashboards nobody reads |
references/signals-map-schema.md —
schema, required/optional fields, completeness check, FastAPI working examplereferences/signals-questionnaire.md —
the five SRE gatekeeper questions + schema-completeness checkFor infrastructure deployment: ubuntu-monitoring (Ubuntu 24.04) or
rhel-monitoring (RHEL 9). For SLO / error-budget policy: delivery-manager.
For SPL / Splunk-specific query work: splunk-developer. For load-test +
capacity math: performance.
Deferred per design §14 (2026-04-20): per-pillar references
(logging.md / metrics.md / tracing.md / alerting.md), stack
catalog (LGTM / Honeycomb / Datadog recipes), SIEM / security
observability, telemetry cost modeling, Python validator scripts, and
delivery-manager SLI↔SLO cross-link patches. v1 validation gate:
run this skill against 2-3 real services before investing in v1.1.