agent-browser
Browser automation CLI for AI agents. Use when the user needs to interact with websites, including navigating pages, filling…
Design, write, review, and test production Effect v4 programs: deep services and layers, schemas, tagged errors, observability, Config, persistence, resources, concurrency, schedules, workers, streams, caches, HTTP clients, Effect platform services (Node
$ npx -y skills add humanlayer/humanlayer --skill effect-program-design --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/effect-program-designContext preview
The summary Claude sees to decide when to auto-load this skill.
Design, write, review, and test production Effect v4 programs: deep services and layers, schemas, tagged errors, observability, Config, persistence, resources, concurrency, schedules, workers, streams, caches, HTTP clients, Effect platform services (Node
name: effect-program-design
description: >-
Design, write, review, and test production Effect v4 programs: deep services and layers, schemas,
tagged errors, observability, Config, persistence, resources, concurrency, schedules, workers,
streams, caches, HTTP clients, Effect platform services (Node filesystem/path/crypto/process/socket),
and Effect Atom integrations. Use for any Effect application or adapter work.Build production Effect v4 programs with small domain-shaped interfaces, typed success and error channels, declared dependencies, observable operation boundaries, and tests that substitute layers at real seams. This skill combines broad Effect mechanics with HumanLayer's deep-module, capture-before-narrow, and real-seam design standards.
Check these before guessing:
1. the nearest `CLAUDE.md` / `AGENTS.md` and project-local conventions; 2. the installed `effect`, `@effect/*`, and related package versions and declarations; 3. the Effect v4 docs at <https://effect-ts-effect-smol.mintlify.app/>; 4. the pinned/upstream source (`~/projects/effect-smol`) when docs do not settle an API.
unstable-tagged modules (`effect/http`, `effect/rpc`, `effect/process`, ...) can change between beta/minor versions. Typecheck examples against the installed version. Local project conventions take precedence unless the task explicitly changes them.
Read only the references relevant to the task; read all matching branches when work crosses concerns.
`references/SERVICES_LAYERS.md`.
`references/SCHEMA_DATA_MODELING.md`.
`references/RESOURCES_CONCURRENCY.md`.
`references/PLATFORM_NODE.md`.
`references/TYPESCRIPT_CONTRACTS.md`.
1. **Deep modules.** The interface is the cost and the hidden implementation is the benefit. Public operations use domain inputs and outputs; callers do not supply credentials, clients, rows, or other internals. 2. **Everything stays in Effect.** Keep expected failures in `E`, dependencies in `R`, and resources in scopes. Do not pass services, layers, effects, or errors as ordinary values when composition expresses the relationship. 3. **Two-tier errors.** Classify rich internal failures, capture them, then narrow to a small caller-actionable union. Prefer typed `catchTag`/`catchTags`; never recover with `instanceof`, `Match`, or manual `_tag` comparisons. **Respect the error channel!** Errors stay in the error channel and are not passed as values 4. **Observe operations.** Every public operation has a stable `Effect.fn("domain.operation")`, an explicit `Effect.withSpan`, or both. Capture raw actionable/unexpected failures before narrowing or swallowing them.\ Use Effect's logger to log info, errors, etc - `yield* Effect.logError` - do NOT pass in external loggers. Errors MUST also be captured to sentry as soon as they surface before they are re-mapped or transformed.
someEffect.pipe(
Effect.tapError(Effect.logError),
Effect.tapError((e) => Effect.sync(() => Sentry.captureException(e))),
)5. **Test at real seams.** Use `@effect/vitest`, layers, deterministic test services, and real infrastructure where behavior depends on it. Assert both the result/error and externally visible end state. **If you are writing tests you MUST read `references/TESTING.md`** 6. **Use Effect platform services.** Application code depends on Effect's FileSystem, Path, Crypto, HTTP, process, socket, worker, and related abstractions. Native Node/Bun/browser APIs belong only in runtime adapters when no Effect service exists or when constructing the platform layer. 7. Use Martin Fowler / Uncle Bob Martin naming conventions. Prefer longer, readable, explanatory names that indicate WHAT the thing is and WHAT the thing does - how it fits into the system. err on the side of overly explanatory. bad: `publish`; good: `publishPatchDiffToStream`
external adapters by transport, persistence, orchestration, and other mean
HumanLayer runs coding agents (Claude Code, Codex, OpenCode, Pi) on your machines and lets your team steer them from one place: tasks, sessions, plans, and reviews, synced between a desktop app, a web app, and a daemon on each host. This repo holds all of it.
Browser automation CLI for AI agents. Use when the user needs to interact with websites, including navigating pages, filling…
Rewrites ambiguous English into ASD-STE100 style — one meaning per word, active voice, simple tense, short sentences. Use when…
Use for 1) inspecting PR state, 2) reading review threads, or 3) debugging CI failures. Otherwise use the gh CLI.
Bump the base version of one or more packages (riptide-native, cli, linear-cli, rpi-plugin) on a PR - updates every synced file,…
Diff call stacks across git commits for agentic code review (22 languages). Run `calldiff --help` for usage details.
Use this to skill to write shell scripts or run shell commands to automate tasks in the browser or otherwise use Chrome DevTools…