Setup Dev
relytcloud/pg_ducklake
Dev environment setup for build tools, PostgreSQL, submodules, and worktrees.
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.
$ npx skills add trycompai/comp --skill stale-worktree-cleanup -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install trycompai/comp stale-worktree-cleanup --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/trycompai/comp.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/stale-worktree-cleanup .claude/skills/stale-worktree-cleanup && 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 "stale-worktree-cleanup" agent skill from https://github.com/trycompai/comp/tree/main/.agents/skills/stale-worktree-cleanup into .claude/skills/stale-worktree-cleanup/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "stale-worktree-cleanup", 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/trycompai/comp/tree/main/.agents/skills/stale-worktree-cleanupType 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 trycompai/comp --skill stale-worktree-cleanup -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install trycompai/comp stale-worktree-cleanup --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/trycompai/comp.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/stale-worktree-cleanup .agents/skills/stale-worktree-cleanup && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "stale-worktree-cleanup" agent skill from https://github.com/trycompai/comp/tree/main/.agents/skills/stale-worktree-cleanup into .agents/skills/stale-worktree-cleanup/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "stale-worktree-cleanup", 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 trycompai/comp --skill stale-worktree-cleanup -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install trycompai/comp stale-worktree-cleanup --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/trycompai/comp.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/stale-worktree-cleanup .cursor/skills/stale-worktree-cleanup && 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 "stale-worktree-cleanup" agent skill from https://github.com/trycompai/comp/tree/main/.agents/skills/stale-worktree-cleanup into .cursor/skills/stale-worktree-cleanup/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "stale-worktree-cleanup", 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/trycompai/comp.git --path .agents/skills/stale-worktree-cleanup--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 trycompai/comp --skill stale-worktree-cleanup -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install trycompai/comp stale-worktree-cleanup --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/trycompai/comp.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/stale-worktree-cleanup .gemini/skills/stale-worktree-cleanup && 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 "stale-worktree-cleanup" agent skill from https://github.com/trycompai/comp/tree/main/.agents/skills/stale-worktree-cleanup into .gemini/skills/stale-worktree-cleanup/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "stale-worktree-cleanup", 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 trycompai/comp stale-worktree-cleanupInstalls 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 trycompai/comp --skill stale-worktree-cleanup -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/trycompai/comp.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/stale-worktree-cleanup .github/skills/stale-worktree-cleanup && 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 "stale-worktree-cleanup" agent skill from https://github.com/trycompai/comp/tree/main/.agents/skills/stale-worktree-cleanup into .github/skills/stale-worktree-cleanup/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "stale-worktree-cleanup", 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 trycompai/comp --skill stale-worktree-cleanup -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install trycompai/comp stale-worktree-cleanup --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/trycompai/comp.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/stale-worktree-cleanup .opencode/skills/stale-worktree-cleanup && 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 "stale-worktree-cleanup" agent skill from https://github.com/trycompai/comp/tree/main/.agents/skills/stale-worktree-cleanup into .opencode/skills/stale-worktree-cleanup/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "stale-worktree-cleanup", 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.
stale-worktree-cleanupA 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.
Stale Worktree Cleanup is an agent skill from trycompai/comp. Use when cleaning up old git worktrees, removing worktrees whose branches have merged or been abandoned, or dropping orphaned compdev Postgres databases. Triggers on "clean up worktrees", "delete stale worktrees", "worktrees piling up", "orphaned databases", "remove unused worktree".
Its SKILL.md is about 1.8k 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 and Git. The repository describes itself as: AI Native platform to get companies compliant - Vanta & Drata Alternative. The licence is AGPL-3.0.
5 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 1bf4d52. 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:
gitghbunFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use git and gh, which can reach the network depending on how they are called.
From 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.
Stale Worktree Cleanup loads about 1.8k tokens when it runs. Until then it costs about 77 tokens; SKILL.md has 600 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.
require("fs").readFileSync("packages/db/.env", "utf8");require("fs").readFileSync("packages/db/.env", "utf8");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 trycompai/comp at commit 1bf4d52, republished under its AGPL-3.0 licence (© trycompai). 600 words, ~1,779 tokens.
.claude/skills/stale-worktree-cleanup/SKILL.md (or your agent's skills folder).This repo's .githooks/post-checkout creates a per-worktree Postgres database (compdev_<slug>) on every git worktree add. Git has no pre-worktree-remove hook, so dead databases pile up over time. This skill defines a safe, reversible process to reap both the worktree directories and their dangling databases together.
Core principle: never delete work the user might still want. Classify first, ask second, remove last.
compdev_* DBs or running out of disk space from dead node_modulesgit worktree remove <path> + drop its DB directly — don't load the whole process)Run these four commands (parallel-safe) and capture the output:
git worktree list --porcelain
gh pr list --author @me --state all --limit 50 --json headRefName,state,url,number
git branch --no-color | catThen query the DB for compdev_* databases. The management URL is the main worktree's DATABASE_URL with the database path swapped to postgres:
bun -e '
import { Client } from "pg";
const raw = require("fs").readFileSync("packages/db/.env", "utf8");
const url = raw.match(/^DATABASE_URL=(.*)$/m)[1].replace(/^["\x27]|["\x27]$/g, "");
const mgmt = url.replace(/\/[^/?]+(\?|$)/, "/postgres$1");
const c = new Client({ connectionString: mgmt });
await c.connect();
const r = await c.query("SELECT datname FROM pg_database WHERE datname LIKE \x27compdev\\\\_%\x27 ORDER BY 1");
for (const row of r.rows) console.log(row.datname);
await c.end();
'For each worktree (skip the main one):
| Signal | Classification |
|---|---|
| Branch merged to main AND clean working tree AND no unpushed commits | safe |
PR is CLOSED (not merged) | needs-confirm |
| Uncommitted changes OR unpushed commits | needs-confirm |
| No matching PR, no merge, has local commits | keep (user may still be working on it) |
| Is the main worktree | skip |
Gather per worktree:
cd <path> && git status --porcelain | wc -l — uncommitted changes countcd <path> && git log @{upstream}..HEAD --oneline 2>/dev/null | wc -l — unpushed commits (0 if no upstream)Show a table and explicit recommendations. Example:
Path Branch PR state Changes Recommendation
.worktrees/sale-45-… mariano/sale-45-… MERGED 0 / 0 ✅ safe to remove
.worktrees/old-experiment mariano/scratch — 3 / 0 ⚠ uncommitted — confirm first
.worktrees/worktree-env-auto-link mariano/worktree-env-auto-link OPEN 0 / 0 ⏳ keep (PR open)
Orphan databases (no worktree dir):
compdev_abandoned_feature
compdev_old_migration_testThen ask: "Remove the items marked ✅? Confirm by listing anything you want me to also nuke from the ⚠ / ⏳ set."
For each worktree the user approved:
# 1. Remove the worktree dir (use --force only if user confirmed dirty-removal)
git worktree remove "<path>" # clean case
git worktree remove --force "<path>" # only after explicit user OK
# 2. Derive the slug and drop the database
slug=$(basename "<path>" | tr '[:upper:]' '[:lower:]' | tr '-' '_' | tr -cd 'a-z0-9_')
bun -e '
import { Client } from "pg";
const raw = require("fs").readFileSync("packages/db/.env", "utf8");
const url = raw.match(/^DATABASE_URL=(.*)$/m)[1].replace(/^["\x27]|["\x27]$/g, "");
const mgmt = url.replace(/\/[^/?]+(\?|$)/, "/postgres$1");
const c = new Client({ connectionString: mgmt });
await c.connect();
await c.query(`DROP DATABASE IF EXISTS "compdev_'"$slug"'"`);
await c.end();
console.log("dropped compdev_'"$slug"'");
'For orphan databases (no matching worktree dir), just drop them — no worktree to remove.
Do NOT delete the local branch unless the user explicitly asked. Branches can be recreated from origin cheaply; worktrees cannot.
git worktree list
# then re-run the compdev_* query from step 1Report back:
git worktree list --porcelain.--force without confirmation. Dirty worktrees can contain un-stashed work.DROP DATABASE on anything not matching ^compdev_[a-z0-9_]+$. Never drop comp, postgres, or any production-looking name.cd to the main worktree first.| Mistake | Fix |
|---|---|
| Dropping the DB but leaving the worktree dir | Run git worktree prune then git worktree remove |
| Removing the worktree but leaving the DB (accumulates orphans) | Always do both in the same pass |
| Using hyphens in the DB name | The hook slug rule is tr '-' '_' — always underscores |
| Running from inside a doomed worktree | cd to the main worktree before starting the process |
Using gh pr list on a branch with no PR | Missing data is not "abandoned" — needs needs-confirm classification |
If any of these show up mid-process, stop and ask the user:
git worktree remove errors with "working tree is not clean" → never retry with --force without explicit consentcompdev_* name has weird characters or unexpected format → don't drop# List everything
git worktree list --porcelain
gh pr list --author @me --state all --limit 50 --json headRefName,state
# Per-worktree inspection
git -C <path> status --porcelain
git -C <path> log @{upstream}..HEAD --oneline 2>/dev/null
# Clean removal
git worktree remove <path>
# Dirty removal (requires user confirmation first)
git worktree remove --force <path>
# Database drop (run from main worktree)
# See the bun -e snippets above for the exact invocation© trycompai, AGPL-3.0. 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/stale-worktree-cleanup of trycompai/comp.
Open the folder on GitHubat commit 1bf4d52
Stale Worktree Cleanup 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 |
|---|---|---|---|---|---|---|
| Stale Worktree Cleanup this skilltrycompai/comp | 2k | — | ~1.8k | Automated safety check: Notes | AGPL-3.0 | |
| Setup Devrelytcloud/pg_ducklake | 143 | — | ~2k | Automated safety check: Notes | MIT | |
| Finishing a Development Branchobra/superpowers | 296k | 5 repos | ~1.9k | Automated safety check: Pass | MIT | |
| Finishing A Development Branchfarm-fe/farm | 5.6k | 33 repos | ~1.8k | Automated safety check: Pass | MIT | |
| Git Worktree Cleanuplobehub/lobehub | 83k | — | ~2.8k | Automated safety check: Pass | Custom licence | |
| Pre-Release PR Triagejamiepine/voicebox | 57k | — | ~3.1k | Automated safety check: Pass | MIT |
relytcloud/pg_ducklake
Dev environment setup for build tools, PostgreSQL, submodules, and worktrees.
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…
lobehub/lobehub
Audits stale Git worktrees and branches with a bundled script, classifies each one, and deletes only after you approve the exact candidates.
jamiepine/voicebox
Sorts a backlog of open pull requests into must-merge, candidate, superseded and deferred, writes a triage doc and works the merge loop before a release.
kbwo/ccmanager
Set up, review, or repair a CCManager config — .ccmanager.json at a git repository root, or the global ~/.config/ccmanager/config.json.
trycompai/comp
The contract every new or modified API endpoint must follow so it is correct for the public OpenAPI spec, the MCP server (npm @trycompai/mcp-server), the ValidationPipe, and the docs.
trycompai/comp
How to reuse ANY integration check's results in a feature via the universal CheckResultsService (apps/api integration-platform).
trycompai/comp
A skill your agent uses when implementing data fetching, API calls, server/client components, or SWR hooks
trycompai/comp
A skill your agent uses when SDK generation failed or seeing errors.
trycompai/comp
A skill your agent uses when building forms - covers React Hook Form, Zod validation, and form patterns
trycompai/comp
A skill your agent uses when writing TypeScript/React code - covers type safety, component patterns, and file organization
Works with
Categories
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. Stale Worktree Cleanup is an agent skill from trycompai/comp. Use when cleaning up old git worktrees, removing worktrees whose branches have merged or been abandoned, or dropping orphaned compdev Postgres databases.
Stale Worktree Cleanup fits situations like: cleaning up old git worktrees; removing worktrees whose branches have merged; dropping orphaned compdev Postgres databases; clean up worktrees.
Run `npx skills add trycompai/comp --skill stale-worktree-cleanup -a claude-code`. Or copy the skill folder (.agents/skills/stale-worktree-cleanup in trycompai/comp) into .claude/skills/stale-worktree-cleanup in your project. Claude Code loads it when a task matches its description.
Run `npx skills add trycompai/comp --skill stale-worktree-cleanup -a codex`. Or copy the skill folder (.agents/skills/stale-worktree-cleanup in trycompai/comp) into .agents/skills/stale-worktree-cleanup 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 trycompai/comp --skill stale-worktree-cleanup -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/stale-worktree-cleanup, .gemini/skills/stale-worktree-cleanup, .github/skills/stale-worktree-cleanup and .opencode/skills/stale-worktree-cleanup in your project.
Going by SKILL.md and its folder, Stale Worktree Cleanup needs the command-line tools its instructions call (git, gh and bun).
SKILL.md contains no URLs. Its commands use git and gh, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found notes only (mentions a .env file), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.
Stale Worktree Cleanup is published under the AGPL-3.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 1.8k tokens (SKILL.md is roughly 7.1k 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 Stale Worktree Cleanup: Setup Dev (relytcloud/pg_ducklake, 143 stars), Finishing a Development Branch (obra/superpowers, 296k stars), Finishing A Development Branch (farm-fe/farm, 5.6k stars) and Git Worktree Cleanup (lobehub/lobehub, 83k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
trycompai (a GitHub organization) maintains it in trycompai/comp, which has 2,016 GitHub stars. The repository holds 31 skills in this directory. The repository was last updated on October 2, 2026.
Source: trycompai/comp on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.