See #ideas > `roc init` subcommand for the discussion about the proposed roc init subcommand feature.
What I am showing and telling is the (presumably temporary) roc-init repo. This is the most up-to-date, comprehensive resource for new developers targeting the "new" Zig-based Roc compiler. It is temporary in that is a working area with PRs welcome to develop more documentation for the new compiler, using that to augment LLM skills, and ultimately inform the proposed roc init subcommand.
It currently provides a roc-language skill that is claude-native (use your wits!) yet intended to be generic across Gemini and Codex.
Within docs/, the UPCASE.md docs are LLM-generated. docs/ROC_LANGREF_TUTORIAL.md was the result of a long Opus run on the new compiler src and tests and langref. docs/Builtin.roc and docs/all_syntax_test.roc are fetched from the roc source repo. docs/roc-advent-2025.md is the most comprehensive handwritten doc and remains quite accurate.
My idea is that the LLM-generated docs can be considered stubs, skeletons, or starting points for hand-curated docs.
@Anton @Luke Boswell et al, I am happy to grant push etc. to this repo if we want to skip the PR rigamorale
Yeah, that would be convenient :)
It may take a while before I can get to this though
I figured out Luke, what is your gh user?
2 invites pending; I've never set this up before on github; I haven't looked at any of the access controls yet
Accepted, we can adjust access controls later if needed
for personal repos, no real access controls. collaborators have read/write :thumbs_up:
We are cooking here: https://github.com/rickhull/roc-init
I confirm that the @ directives in CLAUDE.md are being followed, confirmed by /status (see: memory)
This has seen some recent updates. Some highlights:
just install-lsp makes ~/.local/bin/roc_language_server which Zed should likeroc experimental-lsp)just install-rocgist makes ~/.local/bin/rocgist which can be used to create gists for getting help/support (requires gh github client)just install-skill reimplemented and takes an optional arg: local|project|repo that determines where the skill is installed (by default to ~/.claude/skills)I am introducing "platform choice" with some guidelines:
roc-platform-template-zig (release url)roc-platform-template-rust (release url)basic-cli (build git branch, relative path)I am updating the README.md with more details and guidance.
UPDATE: first draft is finalized
UPDATE: second draft is finalized
just basic-cli: clone, checkout, build (new compiler platform).gitignore so future fetches will not change repo stateroc-language skill../basic-cli from roc-initmigrate-zig-compiler; pull (if cloned earlier)ROC_LANGREF_TUTORIAL.md which has no competitors that I am aware ofMINI_TUTORIAL_AUGMENTS.md which should minimize overlap and extend the coverage of roc-lang/roc/docs/mini-tutorial-new-compiler.mdGOTCHAS.mdThree docs are fetched from roc-lang/roc:
Three docs are maintained by rickhull/roc-init:
MINI_TUTORIAL_AUGMENTS.md into roc-lang/roc somehowroc-language SkillThe skill structure is very simple: 2 sections, eager load and lazy load.
main.roc to examples/zig-template.rocexpect in detail)There was a bug introduced a few days ago that copied the user-level skill to the wrong location. Now fixed.
https://github.com/rickhull/roc-init/blob/master/docs/SUSPICIOUS_REFERENCES.md
This is an LLM analysis of the more-comprehensive LLM-generated docs.
There are definitely some TODOs in here before considering promoting any of the remaining docs in roc-init to any sort of official docs
@Luke Boswell you mentioned that roc test hasn't gotten much love lately. I found some bugs a few weeks ago. This situation is slightly unfortunate because I was leaning on roc test heavily for exploration; trying something that should work, and if it does, codifying the discovered behavior in a test. In this way, I made a lot of incremental exploratory process, using roc test like a ratchet.
I think that giving roc test some love is an important part of the new-roc new-dev experience. That said, it makes sense to focus on core without being distracted by dragging the entirety of peripherals along for the ride; get core to stable place, and then consider peripherals.
Agreed :)
While I've got you, can you confirm any/all of the SUSPICIOUS_REFERENCES? :vampire:
app [main!] { pf: ... } a header. Scripts must use the app header.exposing is likely dead but I'm not 100% sureFor 6. this is accurate: "hides the internal structure of a type from external modules (you can't pattern match on it or access fields directly), but the type itself and its .{} methods are fully accessible externally"
An interesting exercise to see how you can push LLMs to correct themselves :)
There are lots of tricks :wink: I'll have codex or gemini coding agent in an ssh terminal, and they give me some reason about why they are struggling. Then I'll go to my claude desktop app, and get claude's opinion about the general problem, often with "web research". I copy/paste the response to docs/FOOBAR_DIFFICULTIES.md and then ask my coding agent to review and critique. This gets them thinking about the problem, and usually I get a nice solution.
I haven't tried goading them with: "Well, here is what _Claude_ thinks.", but this might be viable in the future. Generally I have found all the agents to be mutually respectful of other agents. Maybe they are collaborating on Moltbook :rofl:
FYI roc test got some of that love it needed in https://github.com/roc-lang/roc/pull/9130
It should be much more stable.
Last updated: Feb 20 2026 at 12:27 UTC