Scaffolds custom tools for a devenv environment
README.md
# devkit Shared [devenv](https://devenv.sh) module: my personal dev tools (`bug`, `secrets`, `local-code-review`) and a jujutsu toolchain. Importing devkit keeps every project's toolchain identical and lets a single edit here propagate to all of them. Shell-side helpers (prompt indicator, nested-shell warning) live in `fish/` and are installed once per machine. ## Use it in a project devenv.yaml: ```yaml inputs: nixpkgs: url: github:cachix/devenv-nixpkgs/rolling devkit: url: git+https://knot.rtw.run/rtw.run/devkit imports: - devkit ``` That's the whole wiring. devkit pins the tools (`bug`, `secrets`, `local-code-review`) in its own `flake.lock` and hands them to the project through the `devkit` input, so a project declares no tool inputs of its own and its `devenv.lock` records them as devkit's. (devenv#2205: an imported input's devenv.yaml isn't evaluated, which is why the pins live in devkit's flake, not its devenv.yaml.) A project's own `devenv.nix` only needs its project-specific packages/env. To try an unreleased tool in one project, declare that tool's input in the project's devenv.yaml: a project-level input wins over devkit's pin. Disable a tool with, e.g., `devkit.bug.enable = false;` (used by a project that ships its own wrapper, like sovrn). ### bug agent skill When `bug` is enabled, entering the shell copies the `SKILL.md` shipped with the pinned `bug` package to `~/.agents/skills/working-with-bug/` (Claude) and `~/.agents/skills/superpowers/working-with-bug/` (OpenCode with superpowers). The file is rewritten only when it differs, so `devenv update bug` followed by the next `devenv shell` is all it takes to update the skill. It is a copy, not a symlink, so garbage collection can't leave it dangling. Turn it off with `devkit.bug.skill.enable = false;` or change targets with `devkit.bug.skill.dirs`. Pins of `bug` older than v1.3.0 don't ship the skill and are skipped. ### jj: bugs sync with the code; no Claude attribution; no git worktrees devkit puts a `jj` wrapper (`jj/jj`) a…