Create Worktree
timeplus-io/proton
Create a Proton git worktree with local submodule reuse. An agent skill from timeplus-io/proton.
Dev environment setup for build tools, PostgreSQL, submodules, and worktrees.
$ npx skills add relytcloud/pg_ducklake --skill setup-dev -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install relytcloud/pg_ducklake setup-dev --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/relytcloud/pg_ducklake.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/setup-dev .claude/skills/setup-dev && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "setup-dev" agent skill from https://github.com/relytcloud/pg_ducklake/tree/main/.agents/skills/setup-dev into .claude/skills/setup-dev/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "setup-dev", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/relytcloud/pg_ducklake/tree/main/.agents/skills/setup-devType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add relytcloud/pg_ducklake --skill setup-dev -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install relytcloud/pg_ducklake setup-dev --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/relytcloud/pg_ducklake.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/setup-dev .agents/skills/setup-dev && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "setup-dev" agent skill from https://github.com/relytcloud/pg_ducklake/tree/main/.agents/skills/setup-dev into .agents/skills/setup-dev/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "setup-dev", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add relytcloud/pg_ducklake --skill setup-dev -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install relytcloud/pg_ducklake setup-dev --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/relytcloud/pg_ducklake.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/setup-dev .cursor/skills/setup-dev && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "setup-dev" agent skill from https://github.com/relytcloud/pg_ducklake/tree/main/.agents/skills/setup-dev into .cursor/skills/setup-dev/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "setup-dev", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/relytcloud/pg_ducklake.git --path .agents/skills/setup-dev--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add relytcloud/pg_ducklake --skill setup-dev -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install relytcloud/pg_ducklake setup-dev --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/relytcloud/pg_ducklake.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/setup-dev .gemini/skills/setup-dev && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "setup-dev" agent skill from https://github.com/relytcloud/pg_ducklake/tree/main/.agents/skills/setup-dev into .gemini/skills/setup-dev/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "setup-dev", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install relytcloud/pg_ducklake setup-devInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add relytcloud/pg_ducklake --skill setup-dev -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/relytcloud/pg_ducklake.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/setup-dev .github/skills/setup-dev && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "setup-dev" agent skill from https://github.com/relytcloud/pg_ducklake/tree/main/.agents/skills/setup-dev into .github/skills/setup-dev/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "setup-dev", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add relytcloud/pg_ducklake --skill setup-dev -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install relytcloud/pg_ducklake setup-dev --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/relytcloud/pg_ducklake.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/setup-dev .opencode/skills/setup-dev && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "setup-dev" agent skill from https://github.com/relytcloud/pg_ducklake/tree/main/.agents/skills/setup-dev into .opencode/skills/setup-dev/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "setup-dev", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
setup-devDev environment setup for build tools, PostgreSQL, submodules, and worktrees.
Setup Dev is an agent skill from relytcloud/pg_ducklake. Dev environment setup for build tools, PostgreSQL, submodules, and worktrees. Use when setting up or entering a development worktree.
Its SKILL.md is about 2k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Development, covering Git worktrees. It works with PostgreSQL, DuckDB, C++ and Git. The repository describes itself as: Native lakehouse experience in Postgres powered by DuckDB & Ducklake. The licence is MIT.
5 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit bc5d4b4. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
gitmakeaptbrewFrom the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
github.comFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Setup Dev loads about 2k tokens when it runs. Until then it costs about 36 tokens; SKILL.md has 813 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check noted patterns worth knowing about, such as sudo or a known installer.
**brew/apt** | `brew install ccache` | `sudo apt install ccache` |`dpkg -l build-essential` (if missing: `sudo apt install build-essential bison flex`)- Ubuntu: `sudo apt install build-essential bison flex libreadline-dev zlib1g-dev`Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from relytcloud/pg_ducklake at commit bc5d4b4, republished under its MIT licence (© relytcloud). 813 words, ~2,048 tokens.
.claude/skills/setup-dev/SKILL.md (or your agent's skills folder).Interactive playbook -- follow steps in order, detect current state, skip what is already done, and ask the user when a choice is required.
~/.ccache, shared across all worktrees.git worktree add on each submodule's git repo
to share the same object store across worktrees.Run these checks silently to understand what is already set up:
command -v ccache # compiler cache
ls pg-*/bin/pg_config 2>/dev/null # local PG installs in workdir
ls ~/.dev/pg-*/configure 2>/dev/null # PG source worktrees
ls "$(git rev-parse --show-toplevel)"/duckdb/Makefile 2>/dev/null # duckdb submodule initialized?
git worktree list # current worktree situationSkip any step below that is already satisfied.
command -v ccache && ccache --versionPresent these options using the agent's available interaction mechanism:
| Option | macOS | Linux (apt) |
|---|---|---|
| brew/apt | brew install ccache | sudo apt install ccache |
| Skip | Continue without cache (slow builds) |
Also check for platform build tools:
xcode-select -p (if missing: xcode-select --install)dpkg -l build-essential (if missing: sudo apt install build-essential bison flex)Check the user's shell profile:
grep CMAKE_C_COMPILER_LAUNCHER ~/.zshrc ~/.bashrc 2>/dev/nullIf not configured, tell the user to add this block to ~/.zshrc or ~/.bashrc:
if command -v ccache >/dev/null; then
export CC="ccache cc"
export CXX="ccache c++"
export CMAKE_C_COMPILER_LAUNCHER=ccache
export CMAKE_CXX_COMPILER_LAUNCHER=ccache
fiWhy: duckdb and ducklake use cmake and ignore CC=ccache cc. Without
CMAKE_C_COMPILER_LAUNCHER, these heavy builds (~1GB source) recompile
from scratch in every worktree.
Note: if sccache is already installed (e.g. via Homebrew), cmake may
pick it up automatically. That works fine -- just use sccache --show-stats
instead of ccache -s to verify cache hits.
Always build from source, per-worktree. Uses a shared bare repo so multiple PG versions share one clone, and ccache makes rebuilds fast.
Ask the user which versions to install (usually the oldest and newest supported, e.g. 14 and 18).
Shared PG source lives at ~/.dev/pg-src (bare repo, ~200MB):
git clone --bare https://github.com/postgres/postgres.git ~/.dev/pg-srcFor each needed version, fetch the branch and create a source worktree:
git -C ~/.dev/pg-src fetch --depth=1 origin refs/heads/REL_<VER>_STABLE:refs/heads/REL_<VER>_STABLE
git -C ~/.dev/pg-src worktree add ~/.dev/pg-<VER> REL_<VER>_STABLEWT=$(git rev-parse --show-toplevel)
NCPU=$(nproc 2>/dev/null || sysctl -n hw.ncpu)
for VER in 14 18; do
pushd ~/.dev/pg-$VER
./configure --prefix="$WT/pg-$VER" \
--without-icu --without-readline --without-libxml
make -j"$NCPU" && make install
popd
donePG_CONFIG will be: $(pwd)/pg-<VER>/bin/pg_config
Add pg-*/ to .git/info/exclude to keep git status clean:
exclude_file=$(git rev-parse --git-dir)/info/exclude
grep -qF 'pg-*/' "$exclude_file" 2>/dev/null || echo 'pg-*/' >> "$exclude_file"Time: ~15-20 min per version on first run, ~1-2 min on reruns (ccache).
pg_ducklake lives in the libpgduckdb monorepo: the libpgddb kernel is
plain in-repo source at libpgduckdb/ (repo root) -- nothing to
initialize. The DuckDB source is a submodule at the repo root,
duckdb/. Initialize it:
git -C "$(git rev-parse --show-toplevel)" submodule update --init --depth=1 duckdbTime: 5-10 min on first run (duckdb is large even with shallow clone).
third_party/ducklake is a git submodule pinned to a community
duckdb/ducklake commit. Our divergence from community lives as an ordered
series of patch files third_party/ducklake-NNN-<desc>.patch, applied onto the
pristine checkout at build time (apply-once, stamp-guarded -- see the
DUCKLAKE_STAMP rule in Makefile). The build inits the submodule
non-recursively (its inner duckdb / extension-ci-tools submodules are only
for ducklake's own CI and are not needed) and applies the patches in numeric
order; make clean drops the stamp so the next build re-applies from a clean
reset. The submodule working tree is therefore intentionally left dirty
(patched); the gitlink stays at the pinned community commit.
To inspect our customization, read the ducklake-NNN-*.patch files. To bump the
community base: repoint the submodule gitlink, regenerate/rebase the patches
against the new commit, and re-verify (make ... && make check-regression).
git worktree add on a submodule gitdir silently overwrites
core.worktree to point at the new worktree instead of the main one.
Stale worktree entries also break submodule foreach --recursive.
Two hooks in .claude/settings.json handle this automatically:
EnterWorktree (.claude/hooks/worktree-setup.sh):
repairs broken gitdirs, then creates submodule worktrees with
core.worktree preservation.ExitWorktree (.claude/hooks/worktree-cleanup.sh):
removes submodule worktree entries pointing to the current worktree,
then repairs any core.worktree that got corrupted. Only runs when
action is "remove".If the main worktree's submodules are not initialized, the setup hook
has nothing to iterate. Fall back to
git submodule update --init --recursive --depth=1 in the main
worktree first (slow, downloads from remote).
The PG source worktrees at ~/.dev/pg-<VER> already have compiled
object files from the initial build. Reconfigure with the new prefix
and rebuild. make clean is required because PG bakes the
--prefix path into binaries as rpaths — without it, old objects
with the previous worktree's rpath get reused and executables fail
at runtime with "Library not loaded".
WT=$(git rev-parse --show-toplevel)
NCPU=$(nproc 2>/dev/null || sysctl -n hw.ncpu)
for VER in 14 18; do
pushd ~/.dev/pg-$VER
make clean
./configure --prefix="$WT/pg-$VER" \
--without-icu --without-readline --without-libxml
make -j"$NCPU" && make install
popd
doneTime: ~2-5 min per version (ccache hits on recompilation).
PG_CONFIG=<path_to_pg_config> make install
PG_CONFIG=<path_to_pg_config> make installcheckTime: first build takes 15-30 min (duckdb cmake build dominates). Subsequent builds with ccache take 1-5 min.
A successful make install ends with PGXS installing pg_ducklake.so
and the SQL files into the PG extension directory.
ccache not hitting -- ccache -s shows zero hits. Verify:
echo $CC contains ccacheecho $CMAKE_C_COMPILER_LAUNCHER is ccacheccache in compiler commandWrong submodule commit -- reset to what the branch expects:
git -C "$(git rev-parse --show-toplevel)" submodule update duckdb pg_ducklake/third_party/ducklakePG configure fails -- missing build deps:
xcode-select --install && brew install bison flexsudo apt install build-essential bison flex libreadline-dev zlib1g-devpg-*/ in git status -- re-run Step 3's exclude command.
© relytcloud, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in .agents/skills/setup-dev of relytcloud/pg_ducklake.
Open the folder on GitHubat commit bc5d4b4
Setup Dev next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Setup Dev this skillrelytcloud/pg_ducklake | 143 | — | ~2k | Automated safety check: Notes | MIT | |
| Create Worktreetimeplus-io/proton | 2.3k | — | ~812 | Automated safety check: Pass | Apache-2.0 | |
| DB AI GitHub Paper Weekly Newsdigoal/blog | 8.6k | — | ~1.2k | Automated safety check: Pass | GPL-2.0 | |
| Stale Worktree Cleanuptrycompai/comp | 2k | — | ~1.8k | Automated safety check: Notes | AGPL-3.0 | |
| DB AI GitHub Paper Weekly Newsdigoal/blog | 8.6k | — | ~2.4k | Automated safety check: Pass | GPL-2.0 | |
| Finishing a Development Branchobra/superpowers | 296k | 5 repos | ~1.9k | Automated safety check: Pass | MIT |
timeplus-io/proton
Create a Proton git worktree with local submodule reuse. An agent skill from timeplus-io/proton.
digoal/blog
抓取并汇总"数据库、AI、GitHub、AI 论文"近 1 周新闻,输出图文并茂(含 mermaid 图)的 markdown 周报到当前项目的 markdown/ 目录。覆盖 10 个数据源:postgresweekly.com/issues(自动解析最新 issue…
trycompai/comp
A skill your agent uses when cleaning up old git worktrees, removing worktrees whose branches have merged or been abandoned, or dropping orphaned compdev Postgres databases.
digoal/blog
抓取并分析"数据库、AI、GitHub、AI论文"相关的近1周内最新内容,分类汇总,输出图文并茂(含内置 Mermaid 图)的 Markdown 周报到当前项目的 markdown/ 目录。
obra/superpowers
Walks the last step of a branch: confirm tests pass, detect the git environment, ask how to integrate, carry out your choice and clean up the worktree.
farm-fe/farm
A skill your agent uses when implementation is complete, all tests pass, and you need to decide how to integrate the work - guides completion of development work by presenting structured options for…
relytcloud/pg_ducklake
Safely bump pgducklake's vendored DuckLake commit, rebase its patch series, account for newly added upstream SQLLogicTests, update mapped test schedules, and validate the result.
relytcloud/pg_ducklake
Commit message conventions and pull request description guidelines.
relytcloud/pg_ducklake
Versioning, branch, and release policy (semantic versioning, branch-per-minor, tag-per-patch).
Works with
Categories
Dev environment setup for build tools, PostgreSQL, submodules, and worktrees. Setup Dev is an agent skill from relytcloud/pg_ducklake. Dev environment setup for build tools, PostgreSQL, submodules, and worktrees.
Setup Dev fits situations like: entering a development worktree; tasks that involve Git worktrees.
Run `npx skills add relytcloud/pg_ducklake --skill setup-dev -a claude-code`. Or copy the skill folder (.agents/skills/setup-dev in relytcloud/pg_ducklake) into .claude/skills/setup-dev in your project. Claude Code loads it when a task matches its description.
Run `npx skills add relytcloud/pg_ducklake --skill setup-dev -a codex`. Or copy the skill folder (.agents/skills/setup-dev in relytcloud/pg_ducklake) into .agents/skills/setup-dev in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add relytcloud/pg_ducklake --skill setup-dev -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/setup-dev, .gemini/skills/setup-dev, .github/skills/setup-dev and .opencode/skills/setup-dev in your project.
Going by SKILL.md and its folder, Setup Dev needs the command-line tools its instructions call (git, make, apt and brew).
SKILL.md names 1 domain. In commands or code: github.com; the agent is likely to contact it when it follows the instructions. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found notes only (runs commands with sudo), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.
Setup Dev is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2k tokens (SKILL.md is roughly 8.2k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Setup Dev: Create Worktree (timeplus-io/proton, 2.3k stars), DB AI GitHub Paper Weekly News (digoal/blog, 8.6k stars), Stale Worktree Cleanup (trycompai/comp, 2k stars) and DB AI GitHub Paper Weekly News (digoal/blog, 8.6k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
relytcloud (a GitHub organization) maintains it in relytcloud/pg_ducklake, which has 143 GitHub stars. The repository holds 4 skills in this directory. The repository was last updated on August 26, 2026.
Source: relytcloud/pg_ducklake on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.