dotfiles-context
Route changes to emacs/config.org, dotfiles extras, Elpaca-managed package checkouts, and paired Claude/Codex configuration. Use to prepare external-package fixes, choose the canonical edit location,
SKILL.mdclaude/skills/dotfiles-context/SKILL.md
GitHubDotfiles and package routing
Use this context to choose the correct source tree and verification path. If the
task changes Emacs Lisp, also use elisp-conventions for coding, batch-test,
rebuild, and live-verification rules.
Before adding or changing agent-facing guidance, use the
instruction-placement skill.
Canonical sources
~/My Drive/dotfiles/is the canonical dotfiles source. It is the intentional exception to the rule that development repositories do not live under the Drive sync root.- The active profile's
elpaca/sources/dotfiles/checkout (or its registry's legacy equivalent) is a read-only mirror. Do not edit it, even if an edit guard does not fire. Commit-time synchronization supplies its canonical changes. - Extras belong in canonical
emacs/extras/, not the runtime mirror. The helper recognizes their package IDs and returns that directory. - For other Elpaca-managed packages, use the source directory reported by the
live package registry. It is usually
elpaca/sources/<package>/; a legacy registry may reportelpaca/repos/<package>/. Do not choose between profiles or directories by scanning for whichever checkout happens to exist.
Resolve package paths with the deterministic helper instead of guessing a
profile or using locate-library or symbol-file:
~/My\ Drive/dotfiles/bin/elpaca-package-path PACKAGE [relative-path]
The helper returns the canonical dotfiles root for dotfiles, the canonical
extras directory for an extras ID, and the live registry's source for standalone
packages. Confirm success and repository identity; an unavailable or ambiguous
registry is unresolved, not permission to guess a path or edit a build tree.
Keep any supplied relative path within the resolved source directory. For an
ordinary standalone repository outside Elpaca, retain the user's named checkout;
this routing rule does not move every repository into an Emacs profile.
Pushing is a separate sharing step; it is not required to update the local dotfiles mirror. The commit hook's intended sync is not proof that the mirror or loaded code reached that commit: observe the relevant completion evidence.
Workflow
- Resolve the canonical source and applicable repository instructions before editing. Inspect working tree/index and relevant unsaved buffers. Preserve other work, including unrelated hunks in a file you also need to change.
- For
.elchanges, followelisp-conventionsafter choosing the layout. - For
emacs/config.org, read references/config-org.md, complete its live source/profile and buffer preflight, then use the profile-aware command below. - For paired Claude/Codex configuration or skill changes, inspect the pairing manifest and update the canonical tracked counterparts. Preserve documented unpaired artifacts and runtime-specific metadata, paths and implementation differences; semantic parity does not require identical bytes. Do not edit generated shims or plugin caches as substitutes for their maintained source.
After an authorized emacs/config.org change, once preflight is satisfied, tangle
the intended running profile with:
emacsclient -e '(init-build-profile (file-name-directory user-init-file))'
Do not use org-babel-tangle-file directly. It does not know the active profile
and can write to the wrong target.
If the running server/profile cannot be verified, preserve the source edit and report activation as pending. Do not start, switch or restart Emacs to conceal the gap. A successful tangle generates files; it does not reload configuration or prove an Elpaca recipe, checkout or package changed in the running session.
When a fix belongs to an externally maintained package, read references/upstream-pr-pins.md before editing, even when the user has not mentioned a PR. Prepare the upstream contribution and local retention plan within the requested scope; publication requires explicit authorization. Also use that reference for an existing upstream PR whose Elpaca change must remain active locally. Diagnosis-only requests stay read-only, and an explicit local-only request excludes PR preparation.
If an authorized committed package change needs an explicit rebuild and an
observable completion point, use the bounded helper and target the package,
not the aggregate dotfiles source. Observe any already-started commit-hook
rebuild first rather than launching a competing one:
~/My\ Drive/dotfiles/claude/bin/elpaca-rebuild-wait PACKAGE
Verification
- Confirm the intended source/profile and generated output after a tangle; distinguish that from separately authorized live activation and behavior.
- Follow
elisp-conventionsfor every Emacs Lisp change. - Run
~/My\ Drive/dotfiles/bin/ai-config-sync auditafter paired Claude/Codex changes. - If a tracked public skill name or catalog description changed, run
~/My\ Drive/dotfiles/bin/docs-audit generateand then~/My\ Drive/dotfiles/bin/docs-audit audit. Inspect the generated diff and preserve concurrent catalog edits; a generator can update more than your row. - Inspect
git status --shortbefore completion so unrelated concurrent edits remain separate. - Commit logical owned changes under repository policy. Path selection alone does not isolate unrelated hunks in the same file. Report unresolved routing, sync or activation gaps without treating a configured path as a verified one.