cbrst/nix
ModulesHome Manager

AI tooling

Claude Code, its agents and skills, Serena, RTK, and the inactive OpenCode setup.

modules/home/ai/ configures AI coding tools. It is part of the development profile.

Claude Code

Home Manager installs and configures Claude Code:

  • Settings default to medium reasoning effort and disable the commit and pull request attribution lines. settings.json stays writable (mutableSettings), so changes made with /config persist; the declared keys are merged over it on every activation.
  • Global rules (~/.claude/CLAUDE.md) come from the shared agentRules set in default.nix, described under Shared rules.
  • MCP integration shares the MCP servers declared in programs.mcp.
  • RTK hook. A PreToolUse hook on the Bash tool runs RTK's rewrite script, which compresses command output before it reaches the model.

Agents

AgentPurpose
dennisDesigns, implements, visually inspects, and iteratively improves web interfaces
write-commit-msgWrites a commit message from a supplied diff. Runs on Haiku with no tools and no permission prompts; used by the commit-message hook

The prompts are Markdown files in agents/; Nix wraps them with frontmatter for each tool.

Skills

Everything in skills/ is installed as Claude Code skills, including:

  • idiomatic-jj: Jujutsu mental models and safe command choices.
  • group-unstaged-commits: splitting working-copy changes into coherent commits.
  • A set of front-end design skills (brand kits, image-to-code, minimalist, brutalist, motion, and web interface guidelines) used together with dennis.

Shared rules

agentRules is a single attribute set of instruction sections. Claude Code receives it as rules, and OpenCode's context is the same sections joined with newlines, so both tools read one source.

RuleEffect
code-styleUse consistent formatting, follow language conventions, and obey an .editorconfig or other defined standard
collaborationAct as a critical collaborator: raise risks, tradeoffs, and missing requirements before a nontrivial change, propose a plan and wait for approval, separate facts from assumptions, and restate the risk before proceeding if the request is repeated
jj-firstCheck whether a repository is jj-managed before running Git commands and prefer jj. In a colocated repository Git shows a detached HEAD, which is expected, and the idiomatic-jj skill should be loaded instead of falling back to Git habits
subagentsRead-only search, exploration, or planning subagents may start without asking for broad sweeps or independent investigations; small lookups are done directly. Ask before starting any subagent that can edit files, run builds or other consequential commands, or act outside the repository, and report when subagents were used

Serena

The Serena MCP server provides symbol-level code navigation and editing. It is declared once in programs.mcp and runs over stdio in IDE context, picking the project from the working directory, without opening its web dashboard.

RTK

RTK is built locally from a pinned source (see Flake inputs). Besides the Claude Code hook, its OpenCode plugin is linked into ~/.config/opencode by Home Manager rather than with rtk init.

Playwright

playwright and playwright-test are installed for browser-based workflows, such as dennis inspecting a page it built.

OpenCode (inactive)

OpenCode is fully declared but disabled. Its configuration, including a theme generated from the shared palette, the same agents and skills, and a session picker (opencode-fzf) in the shell, is kept so it can be switched back on.

Last updated on

On this page