Skip to main content

doc-sync

WHAT: Keep REFERENCE.md and the README.md Configuration Options table in lockstep with the public shell surface of this dotfiles repo. WHEN: User adds, renames, or removes an alias, shell function, environment variable, git subcommand, hook, prompt option, plugin-exposed behavior, command on PATH, or a DOT_ / BASHRC_ startup variable. DO-NOT: Update only one of REFERENCE.md and README.md when both apply; do not touch either file for purely internal helpers, refactors, or non-user-facing changes.

Aller à l'installation

Informations de source

Dépôt
weikinhuang/dotfiles
Dernière activité de la source
22 mai 2026 à 22:26
Langue détectée de SKILL.md
anglais
Étoiles
21
Forks
3

Options d'installation

Le prompt qui vérifie d'abord la source est sélectionné par défaut. Vous pouvez passer à une commande directe ou télécharger une copie locale.

Vérifiez les fichiers source

Lisez SKILL.md et les fichiers associés affichés par SkillsMP avant de décider de l'installer.

Affichage de SKILL.md

SKILL.md
Instructions source · Aperçu en lecture seule
name
doc-sync
description
WHAT: Keep REFERENCE.md and the README.md Configuration Options table in lockstep with the public shell surface of this dotfiles repo. WHEN: User adds, renames, or removes an alias, shell function, environment variable, git subcommand, hook, prompt option, plugin-exposed behavior, command on PATH, or a DOT_ / BASHRC_ startup variable. DO-NOT: Update only one of REFERENCE.md and README.md when both apply; do not touch either file for purely internal helpers, refactors, or non-user-facing changes.
# Doc sync for the public shell surface `REFERENCE.md` is the single source of truth for everything a user can type at a shell after sourcing this repo: aliases, functions, env vars, git subcommands, hooks, prompt options, plugin-exposed behavior, and commands on `$PATH`. The Configuration Options table in `README.md` duplicates the user-facing `DOT_*` and `BASHRC_*` startup variables. Both can drift silently, so any change to that surface needs a matching doc edit in the same commit. ## When to use this skill Apply this skill when a code change adds, renames, or removes any of: - A shell alias under `dotenv/aliases` or a platform-scoped aliases file. - A shell function exposed for user invocation (not internal `__dot_*` / `internal::*` helpers). - A git subcommand (`dotenv/bin/git-*` or any other `bin/git-*`). - An executable on `$PATH` under `dotenv/bin/` or a platform `bin/` directory. - A user-facing environment variable read by the shell. - A startup configuration variable (`DOT_*`, `BASHRC_*`). - A hook surface (`chpwd`, `precmd`, `preexec`, or `dotfiles_hook_*`). - A prompt option, prompt segment, or plugin-exposed behavior. Skip this skill when the change is internal: refactoring an implementation, renaming a private helper, moving code between files without changing the user-callable surface, or editing tests. ## What lives where `REFERENCE.md` sections (one or more may apply per change): - `## Core shell interface` - aliases and user-facing functions. - `## Built-in plugin interface` - plugin-exposed behavior and `DOT_PLUGIN_DISABLE_*` toggles. - `## Commands on PATH > ### Utility commands` - non-git executables under any `bin/` directory. - `## Commands on PATH > ### Git subcommands` - `git-*` scripts invoked as `git <name>`. NOTE: `## Git aliases` is for git-config aliases like `gco` / `gst`, not for `git-*` scripts. - `## Hooks and extension points` - `chpwd` / `precmd` / `preexec`, per-phase hooks, `~/.bash_local` knobs. - `## Environment variables` has multiple subsections; pick by what the variable does: - `### Runtime exports` - non-startup env vars exported at load. - `### Startup configuration variables` - non-prompt `DOT_*` / `BASHRC_*` knobs read once during init. - `### Prompt configuration variables > #### Prompt options` - prompt-specific `DOT_*` knobs (`DOT_DISABLE_PS1`, `DOT_GIT_PROMPT_*`, `DOT_PS1_*`, etc.). A new prompt knob goes here, not under Startup configuration variables. - `### Prompt configuration variables > #### Prompt segment helpers`, `#### Prompt symbol overrides`, `#### Prompt color overrides` - pick the most specific subsection. - `## Additional tools` - vendored CLIs, completions, integrations. `README.md` Configuration Options table: - The table under `## Configuration Options` is a single flat alphabetical list of every `DOT_*` and `BASHRC_*` user-facing startup variable, regardless of whether `REFERENCE.md` splits it across `### Startup configuration variables` and `#### Prompt options`. Add the entry exactly once. - Defaults and one-line descriptions should match the corresponding `REFERENCE.md` row in shape; `README.md` writes `UNSET` in uppercase where `REFERENCE.md` uses lowercase `unset`. That casing difference is intentional; do not normalize it. ## Workflow 1. Identify the change type and the user-facing surface it touches. If the change is purely internal, stop; this skill does not apply. 2. Locate the matching section(s) in `REFERENCE.md`. Most surfaces are tabular; keep the existing column layout and alphabetical or logical order. 3. For added entries: insert the row in the right place, link the source path with a relative link where the section convention does so, and write a one-line description in the same voice as neighboring rows. 4. For renames: update both the entry and any cross-references. Search `REFERENCE.md` for the old name to catch links, examples, and "see also" lines. 5. For removals: drop the row and check that no other entry references it. 6. If the change is a `DOT_*` or `BASHRC_*` variable, repeat the same insert/rename/remove edit in the `README.md` Configuration Options table. Defaults and one-line descriptions should match `REFERENCE.md` exactly. 7. Stage `REFERENCE.md` (and `README.md` when applicable) in the same commit as the code change. ## Verification - `grep` for the old name across the repo after a rename to catch stale references in docs, tests, and other markdown. - For startup variables, diff the names between the two tables to confirm they match. A simple check: ```sh diff <(grep -oE '`(DOT|BASHRC)_[A-Z0-9_]+`' README.md | sort -u) \ <(grep -oE '`(DOT|BASHRC)_[A-Z0-9_]+`' REFERENCE.md | sort -u) ``` - Run `./dev/lint-shell.sh` if shell scripts changed; markdown is checked by `lint-staged` on commit. ## Common pitfalls - Editing only `REFERENCE.md` for a new `DOT_*` knob and forgetting the `README.md` table. - Putting a `git-*` script in `## Git aliases`. That section is for git-config aliases (`gco`, `gst`, etc.). Scripts named `git-<name>` belong under `## Commands on PATH > ### Git subcommands`. - Putting a prompt-related `DOT_*` knob in `### Startup configuration variables`. Prompt knobs go in `### Prompt configuration variables > #### Prompt options`. Adding to both subsections duplicates the entry; pick the more specific one. - Renaming a `git-*` subcommand and missing the link inside the `### Git subcommands` table that points at the old file path. - Adding a one-line description that restates the name. Match the density of neighboring rows; descriptions should add information, not paraphrase the identifier. - Documenting an `__dot_*` or `internal::*` helper. Internal names do not belong in `REFERENCE.md`.
Voir sur GitHub