Skip to content
Dotfiles
Esc
navigateopen⌘Jpreview
On this page

Private Git Config

The dot-git.yml schema for repository shortcuts, updates, activity, notifications, and agent lint opt-ins.

The git and GitHub tooling reads a private YAML config that lists the repositories to track and how. It lives in the private overlay at $DOTFILES_PRIVATE_DIR/dot-git.yml by default (override with DOT_GIT_CONFIG_FILE).

It is consumed by dot git-diff, dot git-notifications --bar-json, dot notes-capture-sync, dot stow, dot update, and dot doctor.

Per-repo keys

Each repo entry has two required sections, each with an explicit enabled flag and a 5-field cron schedule:

The optional aliases list generates Zsh repository shortcuts during dot stow and dot update. The same entries feed Herdr’s repository picker alongside ~/ and ~/repos. Inside Herdr, a shortcut changes directory in the current tab when it already belongs to the repository workspace; otherwise it creates or focuses that workspace using the repository’s name. Outside Herdr, it changes directory normally:

- name: "[HA] Frontend"
  path: ~/repos/home-assistant/frontend
  aliases: [haf]

Top-level shortcuts use the same name, path, and aliases keys for directories that are not managed repositories, such as the private dotfiles checkout or a repository group directory.

Open the Herdr picker with prefix+s. Its cache is regenerated from validated dot-git.yml data by dot stow and dot update. The Home and Repos entries leave the workspace title unset.

An optional post_update command runs from the repository root when dot update successfully pulls that repo to a new HEAD. Use it for local generated artefacts that must match the checkout, such as rebuilding an unpacked browser extension:

post_update: mise run build

The command does not run when the repo is already current or its pull is skipped. A failure or five-minute timeout stops the update so stale build output is not silently retained.

Set agent_oxlint: true only for an external TypeScript or JavaScript repository that should receive the personal generic Oxlint pass without owning its configuration:

- name: "[HA] Frontend"
  path: ~/repos/home-assistant/frontend
  github: home-assistant/frontend
  agent_oxlint: true

dot agent-oxlint checks this opt-in before preparing its cache. It also skips a repository that already has an Oxlint config, dependency, script, or local binary, so repository-owned linting always takes precedence. The personal pass extends the published generic config and can lower selected rules to advisory warnings without changing the shared package. Only diagnostics on added or modified diff lines are candidates for fixes. Personal repositories should install @timmo001/oxlint-rules directly instead of using this opt-in.

  • activity — include the repo in dot git-diff and pull it during dot update.
  • notifications — include the repo in GitHub notification checks and in the notes capture repository picker generated by dot notes-capture-sync.

dot notes-capture-sync finds the managed timmo001/notes checkout, mirrors the active Worker’s non-secret variables and KV bindings into its ignored capture/wrangler.local.jsonc, and updates vars.CAPTURE_REPOSITORIES. Secret values are never written locally. When the live picker differs, the command deploys the capture Worker; keep_vars preserves dashboard-managed runtime variables and secrets on later Git-connected builds. Run it when watched repositories change.

  • notifications — include the repo in the notification inbox surfaces.

The notifications.bar.ignore_bot_activity key controls status-bar bot noise. A repo’s remote.upstream.url lets upstream notifications match a managed fork.

Requirements

  • dot git-notifications requires gh authenticated with a classic token carrying the notifications or repo scope.
  • dot doctor verifies dot-git.yml and GitHub notification access.

Last updated on September 3, 2026