Skip to content

feat(rtk): scc rtk, plus a leaner entry file - #12

Merged
protonspy merged 3 commits into
mainfrom
feat/rtk-and-leaner-entry-file
Aug 3, 2026
Merged

protonspy merged 3 commits into
mainfrom
feat/rtk-and-leaner-entry-file

Conversation

@protonspy

Copy link
Copy Markdown
Owner

What

Three changes that ship together as template-set version 8.

scc rtk, and scc init --rtk. Wires in RTK, the CLI proxy that filters command output down to what is worth spending context on: it finds the binary or builds it with cargo, then puts RTK's marker-delimited usage block into CLAUDE.md/AGENTS.md.

scc rtk               # install if missing, then insert the block
scc rtk --check       # exit 2 when the block is missing; writes nothing
scc rtk --no-install  # only the block, never cargo
scc rtk --force       # replace an existing block with the one this scc ships
scc init --rtk        # scaffold and wire it in, one command

Insert-only by default. A block already between the markers is left exactly as it is, whatever version it claims — RTK writes that text, stamps its own version into the opening marker, and rtk init is what refreshes it. An scc that rewrote it every run would silently downgrade a newer block inside a file the user owns. Opt-in in both places, because the block tells the agent to prefix every command with a binary the machine may not have.

A leaner entry file. The table listed all nine rules as equals, which is false: five fire on their own trigger, four are looked up by name once you are already in that territory. The rewrite says which is which.

Tighter prose in both review agents. Same gates, same report shape.

Why it is shaped this way

  • The block is spliced, not written: the entry file belongs to the user, so the markers rather than a path are what make it replaceable, and everything outside them is untouched. CRLF documents stay CRLF.
  • A half-block (one marker, not both) is an error rather than treated as blockless — appending there would leave two openings and one close, which nothing could update afterwards.
  • internal/rtk is the only package that shells out to another program, and that boundary is deliberate.
  • --check counts a missing block, never the binary: a CI checkout has no reason to have RTK installed, and failing there would train people to ignore the check.
  • Codex and opencode share one AGENTS.md, so the splice runs per entry file rather than per harness.

Notes

  • assets.Version 7 → 8. The entry file is Owned, so scc update reports the new template without overwriting anyone's edits.
  • TestEntryFileLinksResolve → TestEntryFileNamesEveryRule: the format no longer carries a link per rule, but the guarantee that matters — a rule shipped without being announced — is still enforced.
  • go.mod is still stdlib-only.

🤖 Generated with Claude Code

https://claude.ai/code/session_013tUUXfGWX3huWmMZwSkmrc

protonspy and others added 3 commits August 3, 2026 17:15
`scc rtk` wires in RTK — the CLI proxy that filters command output down to
what is worth spending context on. It finds the binary or builds it with
cargo, then puts RTK's marker-delimited block into CLAUDE.md/AGENTS.md.
`scc init --rtk` does both in one step.

Insert-only: a block already between the markers is left exactly as it is,
whatever version it claims, because RTK writes that text and `rtk init` is
what refreshes it. --force is the separate decision. --check reports without
writing and exits 2 when the block is missing; --no-install never touches
cargo. The splice preserves the document's own line endings and refuses a
half-block rather than leaving two openings and one close.

Opt-in in both places: the block tells the agent to prefix every command
with a binary the machine may not have.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013tUUXfGWX3huWmMZwSkmrc
…t nine exist

The table listed all nine rules as equals, which is false: five fire on their
own trigger (autonomy at kickoff, routing when work arrives, methodology at
the start of a task, verification when the code looks done, delivery at the
last task) and four are looked up by name when you are already in that
territory. Splitting them says what a table cannot.

Costs the per-rule Markdown link, so TestEntryFileLinksResolve is replaced by
TestEntryFileNamesEveryRule — it holds the guarantee that actually breaks: a
rule shipped without being announced, or an entry file that never says where
the rules live.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013tUUXfGWX3huWmMZwSkmrc
Same gates, same report shape, fewer words in the way of them.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013tUUXfGWX3huWmMZwSkmrc
@protonspy
protonspy merged commit 812b7d1 into main Aug 3, 2026
4 checks passed
@protonspy
protonspy deleted the feat/rtk-and-leaner-entry-file branch August 3, 2026 20:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant