View Symlink
Add a convenience symlink inside the dotfiles repo that points to an external runtime directory or file. This gives a browsable "view" into runtime state from within the repo tree, without the dotfiles repo owning the content.
Two Symlink Directions
The dotfiles repo uses two distinct symlink patterns:
| Pattern | Direction | Owner | Example |
|---|---|---|---|
| Source of truth | ~/.claude/rules → dotfiles/symlink-roots/claude/rules | Dotfiles repo | symlink_*.tmpl + dotctl lane config |
| Convenience view | dotfiles/claude/tasks → ~/.claude/tasks | Runtime | Manual repo-side symlink + .gitignore |
This skill handles the convenience view pattern.
Checklist
When adding a new convenience view symlink:
- •Identify the runtime path (e.g.,
~/.claude/tasks,~/.config/foo/cache) - •Identify the dotfiles view path (e.g.,
claude/tasks,foo/cache) - •Create the symlink directly in the repo
bash
ln -s "$HOME/<runtime-path>" "$HERE/<view-path>"
- •Add to
.gitignore— under the# Claude Code runtimesection (or appropriate section):code<view-path>
- •Verify it stays out of dotctl lanes
- •Do not put convenience views under managed source directories
- •Do not add them to
dotctl.config.jsontrueDirs - •They are repo-local browsing aids, not managed source-of-truth paths
Key Principles
- •The symlink target (runtime path) is the source of truth — dotfiles repo just provides a window
- •Always
.gitignorethe view path — it's runtime data, not config - •Convenience views are manual repo artifacts, not part of
just up - •Keep them obviously separate from real source-of-truth trees like
home/andsymlink-roots/