Primacode
Skill: effect
House rules for writing Effect TypeScript in this codebase, and the instruction not to answer from memory.
Live Built and working today on the surface this card describes.
What it does
Its own description: work with Effect v4 and effect-smol TypeScript code in this repository.
Its first rule is a source of truth: use the current Effect source, not memory and not older examples. If the reference checkout is missing, clone it into the project first, and search it for the exact API before answering.
It carries house style rather than a tutorial: named effects for reusable service methods, schemas for domain shapes, branded identifiers, tagged errors, thin HTTP handlers with the business rules in services, and explicit layer composition so a missing dependency is visible.
It bans the shortcuts that hide a type error rather than fixing it: no any, no non-null assertions, no unchecked casts, no reaching for an older API to satisfy the compiler.
It carries the repository's own testing patterns, including which helper to use for tests that touch the filesystem, git, sockets, child processes or real time.
Inputs and outputs
| Input | A question about, or a change to, Effect code in this repository. |
|---|---|
| Source of truth | A local checkout of the Effect source, searched before answering. Not the model's memory. |
| Output | Code and answers backed by specific source files or nearby examples in the repository. |
| Testing | The repository's own Effect test helpers, with explicit test layers and scoped fixtures. |
Configuration
| How it is chosen | By name, or by the model matching the description this card opens with. That description is the routing rule, and it is what decides which of the nine runs. |
|---|---|
| Where it lives | Embedded in the binary as <name>/SKILL.md, on the branch that ships it. The same file is what the published catalog serves, so there is one copy in one layout. The catalog itself is built and verified and not yet uploaded to the portal. |
PRIMACODE_SKILLS_URL | Points the tool at a catalog of skills. Leave it alone unless you are serving a separate catalog. The nine that ship in the binary are already loaded without it. |
Limits
- It is repository-specific. It encodes one codebase's house style, and the rules that make sense there will not all make sense elsewhere.
- The reference checkout is cloned with
git, a child process. The egress guard wraps the globalfetchand does not intercept child processes, so this clone reaches the public source host whether or not that host is on the allowlist. It is a network call the guard cannot see. - Do not point the tool at the published catalog for these nine. The binary already embeds them, and the loader keys skills by name: a duplicate logs a warning and silently replaces rather than merging.
Example
the rule the rest of the skill rests on
Do not answer from memory. Verify against the local Effect source,
or against nearby code in this repository, first. Source of truth
primacode/.opencode/skills/effect/SKILL.md (the checked-out copy; on branch `claim-event-model` the same file is embedded at packages/core/src/plugin/skill/primacode/effect/SKILL.md, which is what a released binary carries)philosophers_stone/platform/primacode.md § Status (the nine skills ship in the binary, 2026-08-27)philosophers_stone/platform/primacode.md § The egress guard (it covers `globalThis.fetch` only, not `node:http` and not child processes)