1
Sibling Projects
David Young edited this page 2026-10-26 16:01:09 -06:00
This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Sibling Projects

A sibling project is another git repository that builds on CoreDesktop: extra tools, team-specific setup, dotfiles and so on. CoreDesktop installs it and keeps it up to date.

Using siblings

sibling                 # asks for the repository's git URL
sibling add <url>       # same, without the prompt
sibling list            # installed siblings, their URL and current commit
sibling remove <name>   # delete it

sibling add:

  1. Clones the repository into ~/.local/share/siblings/<name>.
  2. Runs its install.sh, if it has one.

From then on, every update pulls each sibling and runs its update.sh, if it has one.

sibling remove only deletes the clone. Anything its install.sh set up elsewhere stays.

Making a repository a sibling

A repository needs no special files to be installable. To do more, add either or both of these at the top level:

File When it runs
install.sh Once, from the repository folder, when the user runs sibling add, and again if they re-run it
update.sh On every update, from the repository folder, after the pull

Key rules:

  • The scripts inherit nothing from CoreDesktop. Set COREDESKTOP="$HOME/.local/share/coredesktop" yourself, and source $COREDESKTOP/utils.sh for its helpers.
  • Exit non-zero on failure. install.sh may prompt; update.sh shouldn't, and must be safe to run every time.
  • Keep git pull --ff-only working. Never force-push the default branch, and never write into tracked files in the clone.
  • Private repositories work only if the user can already clone them, with an SSH key or credential helper.

The full guide, with templates, testing steps and a checklist, is in the repository: skills/sibling-project-format.md.

Custom update hooks

For full control over how it updates, a sibling can instead copy its own hook, numbered 72–79, into CoreDesktop's updates.d/ from its install.sh. Use one approach or the other, not both, or the project updates twice. See skills/sibling-project-updates.md and Update Hooks.