configure-plugin/skills/configure-worktreeinclude/SKILL.md
Generate a .worktreeinclude so Claude Code copies gitignored env/secret/config files into new worktrees. Use when worktrees miss .env or local config.
npx skillsauth add laurigates/claude-plugins configure-worktreeincludeInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Generate a .worktreeinclude file whose patterns tell Claude Code which
gitignored files to copy from the main checkout into a newly-created git
worktree. A worktree is a fresh checkout containing only git-tracked files, so
gitignored runtime inputs — .env, local secrets, local config — do not come
along by default; this skill builds the include list from the gitignored files
actually present in this repo, so the patterns match the project instead of
a generic template.
| Use this skill when... | Use another approach when... |
|------------------------|------------------------------|
| Worktrees / subagent worktrees start without .env or local config | Ignoring a build artifact — use /configure:gitignore |
| Onboarding a repo to Claude Code (also reachable via /configure:repo) | Copying large regenerable dirs (node_modules/) — let the worktree's setup hook reinstall them |
| You want gitignored inputs reproduced per-worktree without committing them | A non-git VCS — a custom WorktreeCreate hook must copy files itself; .worktreeinclude is git-only |
.worktreeinclude is.worktreeinclude lives at the repo root, alongside .gitignore, and uses
.gitignore glob syntax. When Claude Code creates a worktree (the
--worktree flag, subagent worktree isolation, or parallel desktop sessions),
every file that matches a pattern and is gitignored is copied into the new
worktree. The match is constrained two ways by design:
node_modules/, .venv/, build output) are better
rebuilt by the worktree's setup than copied — copying is slow and can carry
platform-specific binaries or absolute paths.Commit .worktreeinclude so the whole team (and every agent worktree) shares
the same include list.
find . -maxdepth 1 -name .worktreeinclude -type ffind . -maxdepth 1 -name .gitignore -type fgit status --ignored --porcelain=v1| Parameter | Description |
|-----------|-------------|
| --check-only | Report the proposed include patterns without writing any file |
| --fix | Write the proposed patterns without prompting (headless) |
Default (no flag): propose the patterns, confirm the set with the user via
AskUserQuestion, write .worktreeinclude, and git add it (staged, not
committed).
Execute this .worktreeinclude configuration workflow:
Parse $ARGUMENTS for --check-only / --fix. From Context, note whether
.worktreeinclude already exists (Read it and record its current patterns if
so) and capture the ignored-entry list. If no .gitignore exists and no ignored
entries are present, report "nothing gitignored to include" and stop.
The ignored list comes from git status --ignored --porcelain=v1 — lines
prefixed !! are ignored paths, with directories collapsed to a single trailing
/ entry. Sort each entry into one of two buckets:
| Propose to include (small per-environment inputs) | Skip (regenerable / large / risky) |
|--------------------------------------------------------|-----------------------------------------|
| .env, .env.local, .env.* (not a tracked .env.example) | node_modules/, .venv/, venv/, .direnv/ |
| *.local config (config.local.*, settings.local.*) | dist/, build/, out/, target/, .next/, .nuxt/ |
| local secrets / credentials present as files (secrets.*, gitignored *.pem/*.key) | __pycache__/, .pytest_cache/, .ruff_cache/, .mypy_cache/ |
| gitignored tool config the build needs (.npmrc, .tool-versions) when present | coverage/, .coverage, *.log, .DS_Store, .git/ |
Only propose patterns for entries that actually appear in the ignored list — the include list must describe this repo. When in doubt about a file (it could be a needed input or just local cruft), surface it as a candidate rather than deciding silently.
--check-only: print the proposed patterns as a diff-style block; write nothing.--fix: skip confirmation; use the proposed include set as-is.AskUserQuestion, letting the
user drop any pattern or add one you skipped (the built-in "Other" option
covers additions). Keep the question self-contained — list each proposed
pattern and the file(s) it matches.Write the confirmed patterns to .worktreeinclude at the repo root, one pattern
per line, with a short header comment. If the file already exists, merge
additively — preserve existing lines verbatim and append only patterns not
already present (idempotent, safe to re-run). Then git add .worktreeinclude.
Confirm each written pattern targets a gitignored file (so it will actually be
copied): git check-ignore -v <path> should report a match for a representative
file behind each pattern. A pattern that matches no gitignored file is inert —
flag it so the user knows it does nothing.
Print a summary: patterns added vs already-present, the file path, and the
git diff --cached hint. If --check-only, prefix with "DRY RUN — no files
modified".
.worktreeinclude lines;
append missing patterns so the skill is idempotent.git check-ignore in Step 5 catches inert patterns.node_modules/, virtualenvs,
and build output out of the include list; let the worktree's setup hook
regenerate them..worktreeinclude is shared configuration — stage it and
let the user commit so every worktree (and teammate) uses the same list.git diff --cached.| Context | Command |
|---------|---------|
| Propose + write the include list | /configure:worktreeinclude |
| Dry-run, no file changes | /configure:worktreeinclude --check-only |
| Write headless (no prompt) | /configure:worktreeinclude --fix |
| List gitignored entries (collapsed) | git status --ignored --porcelain=v1 |
| Confirm a pattern matches a gitignored file | git check-ignore -v .env |
| Review staged change | git diff --cached |
/configure:gitignore — the sibling skill that keeps Claude Code runtime
state (incl. .claude/worktrees/) out of commits/configure:repo — full repo onboarding (offers this skill)development
Debug HTTP APIs: trace requests, inspect headers. Use when a request fails: check status first.
documentation
Render architecture diagrams from text sources. Use when documenting system topology.
tools
Inspect JSON payloads and extract nested fields. Use when parsing API responses.
tools
--- name: no-description allowed-tools: Read --- # No Description This skill has no description and must be dropped with a warning.