dotfilesCAUTION
My personal dotfiles. Using fish on macOS
Overview
From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.
This is my personal dotfiles repository. It contains my configuration files for various programs and tools. I use this repository to keep my dotfiles in sync across multiple machines.
Main tools used:
- Brew
- Git
- Fish / Fisher
- Starship
Setting up a new machine
The repo has to live at ~/projects/personal/dotfiles. Both setup.sh and .config/fish/conf.d/stow.fish hardcode that path.
Install Homebrew first:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
Clone over HTTPS, not SSH. The insteadOf rule in .config/git/config rewrites HTTPS to SSH, but that config is not linked into $HOME until stow has run:
mkdir -p ~/projects/personal git clone https://github.com/seanogdev/dotfiles.git ~/projects/personal/dotfiles cd ~/projects/personal/dotfiles ./setup.sh
setup.sh installs stow, symlinks the repo into $HOME, installs the .Brewfile packages, copies the iCloud fonts, and sets fish as the default shell.
Two things are not in the repo and need doing by hand afterwards:
- The private files and skills live in the iCloud Store at
~/Library/Mobile Documents/com~apple~CloudDocs/Code/dotfiles/. Run stow-icloud.
- The managed skills from
.Skillfile. Runskills-restore.
Skills
Two personal skills live at .agents/skills//SKILL.md in this repo: manage-skills and manage-stow. Both are dotfiles-specific tooling — they reference this repo's own fish functions and layout — so they stay here rather than in a general-purpose skills repo. .claude/skills/ is a symlink to ../../.agents/skills/, stowed into $HOME.
The rest of the personal skills (address-review, prune-merged-branches, quote-clip) live in seanogdev/skills. On this machine they're tracked in .Skillfile and installed via gh skill, the same as any other third-party skill — see the manage-skills skill.
Pulling changes o
f3f95b303cacOBSERVED · 2026-10-10Install
Commands as the repository documents them. They are shown, not run.
git clone https://github.com/seanogdev/dotfiles.git ~/projects/personal/dotfiles
Host compatibility
What the documentation claims. We have not run a compatibility test.
| Host | Status | Notes |
|---|---|---|
| claude-code | mentioned |
What it tells the agent
The instruction file, verbatim from the audited commit — this is the text the model reads, and the surface the audit's instruction layer examines. Quoted here so you can judge it without cloning anything.
--- name: manage-skills description: Install, update, back up, and restore GitHub-hosted Claude Code skills for this dotfiles setup. Use when the user wants to add a skill from a GitHub repo, keep installed skills current, back up or restore the skill inventory across machines, or asks about `gh skill`, `.Skillfile`, or the skills-install/backup/restore/update fish functions — even when they don't say "skill," e.g. "set this laptop up with my usual skills" or "is there an update for that thing I installed." Does not cover editing the two dotfiles-specific skills under `.agents/skills/<name>` in this repo (`manage-skills`, `manage-stow`). license: MIT --- Manage GitHub-hosted skills with `gh skill` (GitHub CLI, preview) via `skills-install`, `skills-backup`, `skills-restore`, and `skills-update`. Each takes `--help`. Install each one to the canonical location `~/.agents/skills/`, the agentskills.io convention. Claude Code reads from `~/.claude/skills/`. Each managed skill there is a symlink into `~/.agents/skills/<name>`. Two skills are different: `manage-skills` and `manage-stow` are dotfiles-specific, so they live in this repo as real files at `.agents/skills/<name>/SKILL.md` instead of being installed by `gh skill`. `.claude/skills/<name>` is a symlink to `../../.agents/skills/<name>`. Stow projects both into `$HOME`. ## Gotchas - `gh skill` keeps no lock file. It reads no manifest. It writes source-tracking metadata into the frontmatter of each `SKILL.md`. `gh skill update` needs that metadata to detect a change. - Scope `gh skill update` with `--dir`. Unscoped, it scans every agent host on the machine. These hosts include `~/.config/goose/skills/` and `~/.config/opencode/skills/`. The scan buries the real output in warnings. - `gh skill` does not follow a symlinked skill directory. `manage-skills` and `manage-stow` are each a symlink in `~/.agents/skills/`. Every scan skips them. The scan gives no warning. This is correct here. Neither has `github-repo` frontmatter, so `gh skill` has nothing to update. - Each `.Skillfile` line is `<owner/repo> <skill-path> [pin]`. The pin is the `github-pinned` frontmatter value, a tag or commit SHA. It is there only for a skill installed with `--pin`. `gh skill update` skips a pinned skill. To move a pin, reinstall with `skills-install <owner/repo> <skill-path> <new-pin>`, then run `skills-backup`. The path is the exact repo path from the `github-path` frontmatter. Do not substitute the namespaced name that `gh skill list` reports. The path `accessibility-compliance/wcag-audit-patterns` fails to install. The path `plugins/accessibility-compliance/skills/wcag-audit-patterns` works. `gh skill list --json` has no field for the exact path. Therefore `skills-backup` reads the frontmatter to get it. - `skills-restore` makes `~/.agents/skills/` agree with `.Skillfile`. It removes each skill that has `github-repo` frontmatter but no `.Skillfile` line, and it removes the `~/.claude/skills/` symlink of that skill. To remove a skill, delete its `.Skillfile` line, then run `skills-restore`. After `skills-install`, run `skills-backup`. If you do not, the next `skills-restore` removes the new skill. - `.Skillfile` excludes every skill without `github-repo` frontmatter. Private skills have none, so they never appear in `.Skillfile`. They live in the iCloud Store, and `stow-icloud` puts them in `~/.agents/skills/`. - The dotfiles repo is the exception to keeping project-scope and user-scope skills apart: its `.claude/skills/` holds the symlinks that stow projects into `$HOME`. - `seanogdev/skills`, not this repo, is the Claude Code plugin root for the general-purpose skills. Its `.claude-plugin/plugin.json` declares the plugin `seanog-skills`. To add a skill to that plugin, add it under `skills/` there. There is no list to update.
Trust audit
CAUTIONgrade B · trust 89/100 Install with care. The audit found things worth knowing before you trust its output.
| Layer | What it checks | Result |
|---|---|---|
| L0 | Provenance & inventory | WARN |
| L1 | Static analysis of the code | PASS |
| L2 | Instruction surface (what it tells the agent) | PASS |
| L3 | Class-specific surface | PASS |
| L4 | Behavioural (sandbox) | SKIPPED |
What the source does
- Filesystem
- none-observed
- Network
- none-observed
- Shell
- declared (1 observation(s))
- Dependencies
- pinned
- Secrets in source
- none-found
Findings (8)
.claude/skills/manage-skills
.claude/skills/manage-stow
.Brewfile
.Skillfile
.gitignore_global
.stow-local-ignore
.claude/AGENTS.md
.config/ghostty/CLAUDE.md
Gates applied: no_behavioural_pass.
f3f95b303cacfull audit observations/trust-audit/skill/seanogdev__dotfiles.json · Report an issue / request a re-scanAudit history
Every audit this skill has had.
| Date | Source | Verdict | Grade | Score | Change |
|---|---|---|---|---|---|
| 2026-10-10 | f3f95b303cac | CAUTION | B | 89 | first audit |
Questions
What does the dotfiles skill do?
My personal dotfiles. Using fish on macOS
Is dotfiles safe to install?
With care. The audit graded it B (89/100) and found 8 things worth knowing before you trust this skill, listed below with the exact line each was found on.
What can dotfiles access on my machine?
The audit observed that it runs shell commands. Each of those is consistent with what it says it does. Secrets in the source: none found.
What do I need installed to use dotfiles?
Its own instructions reference skills-backup, skills-restore and skills-update. Dependencies are pinned to exact versions.
Which assistants does dotfiles work with?
Its documentation mentions claude-code. That is what the text claims, not a compatibility test we ran.
How current is this page?
The grade is for one exact copy of the source (f3f95b303cac), read on 2026-10-10. The repository is watched, and a new audit runs when it changes — this is the first audit.