Table of Contents
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:
- Clones the repository into
~/.local/share/siblings/<name>. - 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.shfor its helpers. - Exit non-zero on failure.
install.shmay prompt;update.shshouldn't, and must be safe to run every time. - Keep
git pull --ff-onlyworking. 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.
Using CoreDesktop
Working on CoreDesktop