一键导入
develop-at-repl
The project's interactive eval loop. Connect once, evaluate small forms, read the value, adjust. The discipline the write-time recipes run inside.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
The project's interactive eval loop. Connect once, evaluate small forms, read the value, adjust. The discipline the write-time recipes run inside.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Review dimension for naming, idiom, comment debt, and AI tells against the codified per-language and prose standards. Invoked by reviewer agents over one module shard.
Recipe for writing C in the runtime, module placement and the ownership and control-flow discipline. Invoked by writer agents when a C unit is dispatched.
Recipe for writing Clojure, Functional Core / Imperative Shell at the function level (namespaces by domain), native wrappers, and the boundary discipline. Invoked when writing Clojure for the project.
Recipe for writing Elixir, pure functions in modules as the core and GenServer plus OTP as the shell, supervision trees, and NIF discipline for the C and Zig edge. Invoked when writing Elixir for the project.
Recipe for any English the agent produces in this project, commits, comments, docstrings, ADRs, design docs, skill bodies, changelog, error messages, project guides. Optimizes for terse, humanized prose with no em dashes and no AI tells. Invoke for any prose-writing activity.
Recipe for writing Zig, native bodies and edge wrappers, the allocator and lifetime discipline, and the hot-path rules. Invoked when writing or editing any Zig source.
| name | develop-at-repl |
| description | The project's interactive eval loop. Connect once, evaluate small forms, read the value, adjust. The discipline the write-time recipes run inside. |
| user-invocable | false |
The interactive eval loop is the primary development rhythm, not a debugging aside. Write a form, evaluate it, read the returned value, adjust: data in, data out, no setup ceremony. Batch test runs are the exception, reached for at landing boundaries (see "When to leave the loop"), not the rhythm.
The host depends on the language: nREPL for Clojure, IEx for Elixir.
C and Zig have no eval loop; their fast inner cycle is a small
throwaway harness built and run in seconds (see run-spike). The code
standard is the relevant write-<lang> recipe; the boundary contract
is references/architecture.md; the module layout and dev loop live
in the descriptor's module map.
Start the host (nREPL, IEx) and attach the editor's client. One
long-lived session; do not restart it per change. The running image is
the unit of work. Require the namespace you are shaping; reload it
(:reload, IEx recompile, or a fresh harness run) after edits to a
dependency.
If the project has no live host yet (a C or Zig unit, or a Clojure or Elixir project before the dev alias is wired), say so and fall back to reasoning over the source plus a fast harness. Do not fabricate a running image.
keys and get-in, or a harness printf). Do not
boot the whole application to see one function's output.Hold the loop to pure data wherever the work allows. The pure core is built for this: no clock, no atom, no IO, so a literal input fully determines the output and the value at the prompt is the whole truth.
Keep exploration in the source, not a transient buffer. A comment block
at the foot of the namespace (Clojure (comment ...),
Elixir a ## dev section, C or Zig a guarded SELF main) holds the
forms you evaluated to shape the code. The block does not load at
compile time, so it can carry half-formed forms; it is a living record
of how the module is meant to be driven. Keep it honest: prune dead
forms before landing, leave the ones that document intended use. A
block rotted into noise is a style finding (check-style).
Where the runtime supports live redefinition across the native edge (a foreign-function or NIF wrapper that recompiles the native body on demand and caches the artifact by content), the loop extends to native functions: tweak the body, re-evaluate the form, re-call, no separate build step. The gotchas all follow from one rule: a handle refers into the native image that produced it.
Bracket each native run in the scratch block: acquire, call, free, in forms you evaluate together, so a recompile never strands a live handle.
The loop is where red-green happens; the commit is where it lands.
Surface selection, fixture discipline, and the spec-first rule are
write-tests. The commit choreography is write-commit. The loop
proves the behavior; it does not replace the landed test.
The loop answers "does this form return what I expect." It does not
answer "does the whole suite still pass, is the format clean, does the
native bake stay byte-identical." Run verify-lanes when:
main (the pre-land set).A green form is necessary, not sufficient.
Owns the interactive eval discipline only. The code standard is
write-<lang>; the boundary contract is references/architecture.md;
landing the proven behavior is write-tests plus write-commit. Does
not replace the lanes or the landed test.
eval: <form or behavior>, green | red (or eval: no live host, reasoned over source when the host is absent).