effect-observability-time
Skill1 starsChanged 6 months agoMITView on GitHub
Use when adding or reviewing Effect time, retry, timeout, Clock/Duration, logging, tracing spans, metrics, Config, ConfigProvider, Redacted secrets, or operational observability in Theseus.
- Reads credentials
In this repository28 other files it gives its agents.
- AGENTS.mdAGENTS.md
- agent-self-checkSkill
- biome-grit-rulesSkill
- biome-toolingSkill
- bun-testSkill
- bun-workspaceSkill
- cleanup-auditSkill
- code-reviewSkill
- dispatch-satelliteSkill
- docs-managementSkill
- docs-readingSkill
- effect-concurrency-lifecycleSkill
- effect-errors-schemaSkill
- effect-services-layersSkill
- effect-testing-runtimeSkill
- effect-v4Skill
- jsx-md-authoringSkill
- monorepo-maintenanceSkill
- refactoring-disciplineSkill
- roadmap-managementSkill
- runtime-engineSkill
- server-runtimeSkill
- testing-patternsSkill
- theseus-designSkill
- tool-authoringSkill
- typescript-strictSkill
- ui-layout-disciplineSkill
- theseus-designSkill
The file
Show its rules and text
We split this skill into the rules it gives an agent
17 rules. About 0 are common, 4 are distinctive, and 13 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈4
Distinctive · estimate
This author's own choices. Worth a look.
13
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 8
Use this skill for time-based behavior, retries, logs, spans, metrics, and runtime config.
- Distinctive: line 12
Use Effect primitives instead of ad hoc timers and raw millisecond math.
- Very specific: line 26
Use Clock when code needs current time from the Effect environment.
- Very specific: line 27
Use Duration helpers for time units when clarity matters.
- Very specific: line 28
Use Effect.sleep for delays, not setTimeout wrapped by hand.
- Very specific: line 29
Use Effect.timeout around external calls that can hang.
- Very specific: line 30
Use Schedule for retry; gate retry by failure shape when only some errors are retryable.
- Very specific: line 35
Use Effect.logInfo, Effect.logDebug, Effect.logError, and Effect.annotateLogs.
- Very specific: line 36
Use Effect.withSpan("name", { attributes }) around meaningful runtime boundaries.
- Very specific: line 38
Use Metric.counter, Metric.gauge, or Metric.histogram when a value is operationally useful across runs, not just useful for local debugging.
- Very specific: line 39
Avoid console.log in Effect runtime code.
- Very specific: line 43
Use Effect Config for runtime configuration when code needs typed environment values.
- Very specific: line 44
Do not read process.env throughout domain code.
- Distinctive: line 45
Read config once through a service/layer, then inject the parsed values.
- Distinctive: line 46
Keep secrets redacted in logs and errors.
- Very specific: line 47
Use ConfigProvider in tests or alternate runtimes when config should come from a map/object rather than the process environment.
- Very specific: line 48
Use Redacted for secrets and unwrap only at the final foreign boundary that needs the raw value.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Effect Observability And Time
Use this skill for time-based behavior, retries, logs, spans, metrics, and runtime config.
Time And Retry
Use Effect primitives instead of ad hoc timers and raw millisecond math.
import { Duration, Effect, Schedule } from "effect"
const guarded = operation.pipe(Effect.timeout(Duration.seconds(5)))
const retryPolicy = Schedule.exponential("200 millis").pipe(
Schedule.jittered,
)Rules:
- Use
Clockwhen code needs current time from the Effect environment. - Use
Durationhelpers for time units when clarity matters. - Use
Effect.sleepfor delays, notsetTimeoutwrapped by hand. - Use
Effect.timeoutaround external calls that can hang. - Use
Schedulefor retry; gate retry by failure shape when only some errors are retryable. - Public retry fields should usually accept
Schedule.Schedule<unknown>because schedule input is contravariant.
Logging, Tracing, Metrics
- Use
Effect.logInfo,Effect.logDebug,Effect.logError, andEffect.annotateLogs. - Use
Effect.withSpan("name", { attributes })around meaningful runtime boundaries. - Attach stable IDs and small primitive attributes to logs/spans; avoid dumping large payloads.
- Use
Metric.counter,Metric.gauge, orMetric.histogramwhen a value is operationally useful across runs, not just useful for local debugging. - Avoid
console.login Effect runtime code.
Configuration And Secrets
- Use Effect
Configfor runtime configuration when code needs typed environment values. - Do not read
process.envthroughout domain code. - Read config once through a service/layer, then inject the parsed values.
- Keep secrets redacted in logs and errors.
- Use
ConfigProviderin tests or alternate runtimes when config should come from a map/object rather than the process environment. - Use
Redactedfor secrets and unwrap only at the final foreign boundary that needs the raw value.
Checks
- Does this external call have timeout or cancellation behavior?
- Are retryable and non-retryable failures separated?
- Would this log leak secrets or huge payloads?
- Does the span name describe an operation rather than an implementation detail?
- Is config read at a boundary and injected afterward?
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

