Repository navigation
Install fixes, skill dedupe, and CI - #25
Conversation
Port the script to bash so it matches its .sh extension, use git status --porcelain so new files are committed, and limit the commit to the named path so unrelated staged changes are left alone. Co-authored-by: Robert Jackson <me@rwjblue.com>
FORCE=true now replaces symlinks and moves real files or directories to <dest>.bak.<timestamp> instead of rm -rf. The Linux-only jj link duplicated the cross-platform one. Co-authored-by: Robert Jackson <me@rwjblue.com>
system:install ran tools:update, so every ./install upgraded all tools and rewrote mise.lock. Upgrades stay available via tools:update. Co-authored-by: Robert Jackson <me@rwjblue.com>
The path was copied into four tasks. It now lives in mise/config.toml and respects an existing SHARED_BINUTILS_PATH override. Co-authored-by: Robert Jackson <me@rwjblue.com>
Co-authored-by: Robert Jackson <me@rwjblue.com>
Nine skills under packages/codex/skills were byte-identical copies of packages/agents/skills, which dot:install already links to ~/.agents/skills for Codex. fastmail-email stays Codex-only because it reads the Fastmail MCP entry from ~/.codex/config.toml. Co-authored-by: Robert Jackson <me@rwjblue.com>
The dotfiles, dotfiles-tasks and nvim skills were duplicated in .agents/skills and .claude/skills and had started to drift. Keep .agents/skills canonical and allow symlinks through .gitignore. Co-authored-by: Robert Jackson <me@rwjblue.com>
systemlist raises E475 for a missing executable, so repo_root errored instead of reaching the git fallback on machines without jj. Co-authored-by: Robert Jackson <me@rwjblue.com>
Co-authored-by: Robert Jackson <me@rwjblue.com>
shfmt is left out because it would collapse the aligned link_dotfile columns in dot:install. Co-authored-by: Robert Jackson <me@rwjblue.com>
Document FORCE backups, SHARED_BINUTILS_PATH, the skills layout, CI, and that mise tasks and scripts are bash. Point the README at `mise tasks` instead of a hand-maintained list. Co-authored-by: Robert Jackson <me@rwjblue.com>
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 702ea10de1
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| min_version = "2025.10.0" | ||
|
|
||
| [env] | ||
| SHARED_BINUTILS_PATH = "{{ get_env(name='SHARED_BINUTILS_PATH', default=config_root ~ '/../../malleatus/shared_binutils') }}" |
There was a problem hiding this comment.
Make the binutils build honor the shared checkout override
When SHARED_BINUTILS_PATH points to a checkout outside the default location, binutils:install now clones and builds that checkout, but the subsequent local build still resolves latest_bin, test_utils, and fixturify through the hard-coded paths in packages/binutils/Cargo.toml:25–27. On a machine without a checkout at the default location, installation therefore fails while loading those dependencies; if both locations exist, it builds against a different checkout than the one selected. Make dependency resolution use the selected checkout as well so the newly documented override works throughout installation.
AGENTS.md reference: AGENTS.md:L13-L13
Useful? React with 👍 / 👎.
Instead of leaving <dest>.bak.<timestamp> next to each replaced file,
move them under ${XDG_STATE_HOME:-~/.local/state}/dotfiles/backups/<run>/
mirroring the path relative to $HOME, so all backups can be cleared at
once.
Co-authored-by: Robert Jackson <me@rwjblue.com>
Cargo path dependencies in packages/binutils/Cargo.toml hard-code the sibling checkout and cannot be redirected, so an override would build or clone a different checkout than the one cargo resolves. Co-authored-by: Robert Jackson <me@rwjblue.com>
Implements the follow-ups from the repo review: install-task fixes, removal of duplicated agent skills, a new CI workflow, and doc updates. Each change is its own commit.
Script and install fixes
scripts/commit_changed_file.shis now bash, to match its extension. It detects new files withgit status --porcelainand commits only the named path, so unrelated staged changes are left alone.dot:install: withFORCE=true, existing symlinks are replaced and real files or directories are moved into one per-run backup directory,${XDG_STATE_HOME:-~/.local/state}/dotfiles/backups/<timestamp>/, instead of being deleted withrm -rf. Each backup keeps its path relative to$HOME. The run prints where backups went and how to clear them. The duplicate Linux-onlyjjlink is gone.system:installno longer runstools:update, so./installinstalls the locked tool versions instead of upgrading everything.SHARED_BINUTILS_PATHis defined once inmise/config.tomlinstead of in four tasks. It can't be overridden, because the Cargo path dependencies inpackages/binutils/Cargo.tomlhard-code the same sibling checkout../installnow runs withset -euo pipefailand downloads mise withcurl -fsSL.repo_rootnow falls back to git whenjjisn't installed. Before, Neovim raised an error for the missing executable, so the git fallback never ran.Skills
packages/codex/skills/that were byte-identical copies ofpackages/agents/skills/. Codex already reads~/.agents/skills.fastmail-emailstays Codex-only because it reads~/.codex/config.toml..claude/skills/{dotfiles,dotfiles-tasks,nvim}are now symlinks to the.agents/skillscopies, which had started to drift..gitignorenow allows those symlinks.mise run skills:checktask that fails on either kind of duplication.CI
.github/workflows/ci.ymlruns:--severity=warningskills:checkcargo fmt --check,cargo clippy -D warningsandcargo testinpackages/binutils, against a clonedshared_binutilsagent-review:testshfmt is left out because it would collapse the hand-aligned
link_dotfilecolumns indot:install.Docs
README.md,AGENTS.md, thedotfilesskill, and the installation and symlink specs now describe the newFORCEbehavior, whereshared_binutilsmust live, the skills layout, CI, and the bash convention for tasks and scripts.Checks run locally
commit_changed_file.shin a scratch repo with a new file, an unchanged file, and a modified file alongside other staged changes.link_dotfilewithFORCE=truein a scratch$HOMEagainst a real directory, a real file, and a symlink pointing elsewhere. The file and directory landed under one backup directory, and nothing was left next to the originals.mise env:SHARED_BINUTILS_PATHresolves to the sibling checkout and ignores an existing value in the environment.mise run skills:check: passes on the repo, and fails for an injected Codex duplicate and for a non-symlinked.claudecopy.mise run agent-review:test: 34 of 34 pass. Six of them failed before the jj fallback fix.cargo fmt --check,cargo clippyandcargo testinpackages/binutils. The crates have no tests yet.