From just-bootstrap
Audit and set up CI, release, Justfile, and Homebrew infrastructure for any repo. Detects language (Rust, Zig, Swift, TypeScript/Bun) and project type (CLI, macOS app) automatically. Use this whenever the user mentions CI setup, release automation, homebrew tap, justfile recipes, bump/retag commands, pre-commit hooks, or wants to normalize build infrastructure across projects. Also use when the user asks about GitHub Actions workflows for building, testing, or releasing their project.
How this skill is triggered — by the user, by Claude, or both
Slash command
/just-bootstrap:just-bootstrapThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Audit a repo's build/release infrastructure and generate what's missing,
Audit a repo's build/release infrastructure and generate what's missing, normalized to battle-tested patterns from production projects.
DETECT --> AUDIT --> CHECKLIST --> GENERATE --> VERIFY --> SUGGEST
Work through each step in order. Do not skip detection or audit.
Read the repo to determine language, project type, and existing conventions. This drives all downstream decisions.
Check for these files at the repo root:
| File | Language | Build System |
|---|---|---|
Cargo.toml | Rust | Cargo |
build.zig.zon | Zig | zig build |
project.yml + *.xcodeproj | Swift | Xcode via XcodeGen |
Package.swift | Swift | Swift Package Manager |
package.json + bun.lockb | TypeScript | Bun |
package.json + package-lock.json | TypeScript | npm |
Determine CLI vs macOS app -- this affects homebrew (formula vs cask) and whether Apple code signing is relevant:
project.yml with app target, or Info.plist with CFBundleIdentifierGather these before generating anything:
Tag prefix: run git tag -l and check existing tags. If tags use v
prefix (e.g., v1.2.3), preserve that. If bare (e.g., 1.2.3), preserve
that. If no tags exist, default to v prefix.
Version file locations: varies by language.
Cargo.toml (version = "x.y.z")build.zig.zon (version = "x.y.z") + src/main.zig (const version = "x.y.z")Resources/Info.plist (CFBundleShortVersionString)package.json (version), possibly multiple packagesGitHub owner/repo: extract from git remote get-url origin.
Current version: extract from the canonical version file.
Record all detection results before proceeding to the audit.
Check each concern and classify as present, partial, or missing.
Justfile: Does a justfile or Justfile exist? If yes, which of these
standard recipes are present: check, test, lint, fmt, build,
install, clean, bump, retag, install-hooks?
CI workflow: Does .github/workflows/ci.yml exist? Does it use just check
(or install just + call just check)? If CI runs individual commands (e.g.,
cargo test + cargo clippy separately instead of just check), classify as
partial -- individual commands can drift from the justfile's check recipe,
meaning local checks and CI checks diverge silently. Also flag as partial
if it uses extractions/setup-just (deprecated, see GitHub Actions Versions).
Check every uses: action in the workflow for outdated major versions --
flag any that are behind as needing upgrade. To check the latest version of
an action, run gh release list --repo <owner>/<repo> --limit 1.
Release workflow: Does .github/workflows/release.yml exist? Does it
build for multiple platforms? Does it create a GitHub release? Does it use
--notes-from-tag (or equivalent) for release notes? Does it update a
homebrew tap? Does it use extractions/setup-just (deprecated)? Check every
uses: action for outdated major versions using
gh release list --repo <owner>/<repo> --limit 1. Are there redundant
test/lint jobs that duplicate what CI already runs?
Homebrew: Does scripts/setup-homebrew-tap.sh exist? Is there a homebrew
tap update step in the release workflow? For CLIs, this means a formula. For
macOS apps, a cask.
Bump recipe: Does a bump recipe exist in the justfile? Does it create
annotated tags (not lightweight)? Does it generate release notes via
claude -p (with fallback)?
Retag recipe: Does a retag recipe exist? Does it preserve the existing tag annotation before deleting and recreating?
Pre-commit hook: Does an install-hooks recipe exist in the justfile?
Does .git/hooks/pre-commit exist?
CLAUDE.md: Does the project's CLAUDE.md mention CI commands, testing
workflow (red/green), or just check?
Display the audit results as a formatted checklist, then use AskUserQuestion
with multiSelect: true to let the user pick what to set up or upgrade.
Example format:
## Infrastructure Audit: {project} ({language} {type})
[x] Justfile -- present (check, test, lint, fmt, build, install, clean, bump, retag)
[x] CI workflow -- present (.github/workflows/ci.yml)
[~] Release workflow -- PARTIAL (builds + releases, but no homebrew update)
[ ] Homebrew tap -- MISSING
[~] Bump recipe -- PARTIAL (uses lightweight tags, no Claude release notes)
[~] Retag recipe -- PARTIAL (does not preserve tag annotations)
[ ] Pre-commit hook -- MISSING
[x] CLAUDE.md -- present (has CI/testing section)
For the AskUserQuestion, list each missing or partial item as a selectable option. Include a "Set up all missing/partial items" option as the first choice for convenience.
For each selected item, read the corresponding reference file from
references/ and generate the appropriate files. Generate in dependency order:
references/justfile.md) -- other recipes depend on thisreferences/ci.md) -- uses just checkreferences/release.md) -- uses tag triggerreferences/homebrew.md) -- setup script + release integrationreferences/bump.md) -- creates tags that trigger releasereferences/pre-commit.md) -- runs just checkWhen reading a reference file, find the section for the detected language and adapt the template by filling in:
{OWNER} -- GitHub username (e.g., tednaleid){REPO} -- repository name (e.g., veer){BINARY_NAME} -- the executable name (e.g., veer){DESC} -- one-line project description (from README or ask user){TAG_PREFIX} -- v or empty string, based on detection{VERSION} -- current version stringWhen modifying an existing justfile, preserve all existing recipes. Add new recipes or replace partial ones. Match the indentation and style of the existing file.
When modifying an existing release workflow, add the homebrew update steps rather than rewriting the whole file. Preserve existing build matrix and packaging steps if they work.
When generating or modifying workflows, use the latest major version of each GitHub Action. Check the action's repository or marketplace page to confirm the current version rather than assuming. Key actions to keep current:
actions/checkoutactions/upload-artifactactions/download-artifactactions/cachetaiki-e/install-action (with tool: just)softprops/action-gh-release (if used)dtolnay/rust-toolchain, mlugg/setup-zig,
oven-sh/setup-bun, etc.)Old action versions cause real bugs (e.g., older checkout versions have issues with annotated tag fetching) and GitHub periodically deprecates the Node.js runtime they use. When auditing, flag any actions that are not on their latest major version as needing upgrade.
Deprecated: extractions/setup-just -- This action depends on
extractions/setup-crate, which is pinned to Node.js 20. GitHub will force
Node 24 by default on June 2, 2026 and remove Node 20 entirely on
September 16, 2026 (see extractions/setup-crate#10). When auditing, flag any
use of extractions/setup-just (any version) and replace it with
taiki-e/install-action@v2 with tool: just. This is a composite action
with no Node.js runtime dependency, so it is immune to this deprecation.
If a release workflow contains a standalone test/lint job that duplicates what the CI workflow already runs on push/PR, remove it. Release workflows should focus on building, packaging, and publishing. Testing belongs in CI. If the release workflow currently has a redundant test job, flag it in the audit as part of the release workflow being partial, and remove it when generating.
Both just bump and just retag always accept a bare version number
(e.g., just bump 1.2.3), never with a tag prefix. The recipe adds the
prefix internally based on the project's convention. This is non-negotiable
and must be consistent across all languages.
After generating infrastructure, check the project's CLAUDE.md. If it doesn't already cover these, add a brief section:
## Build and Test
- `just check` -- run all tests, linting, and type checking (used by CI)
- `just test` -- run tests only
- `just lint` -- run linter only
- `just clean` -- remove build artifacts and caches (use this, never bare rm -rf)
- `just bump` -- bump version, generate release notes, tag, and push
- `just retag` -- re-trigger release workflow for an existing version
Red/green testing: write a failing test before implementing, then make it pass.
All commits should pass `just check`.
Keep it brief. Don't duplicate what's already documented.
After generation, verify the changes work:
just check (if the justfile was modified or created)After the main generation is complete, briefly suggest enhancements that make sense for the detected project type. These are not generated -- just mentioned as things the user might want to add later:
Only suggest enhancements that are relevant. A TypeScript web app doesn't need binary size checks. A Zig CLI without benchmarks doesn't need benchmark CI.
Read these on demand during Step 4 (Generate). Each file contains complete, copy-paste-ready templates organized by language with parameterized placeholders.
references/justfile.md -- Standard Justfile recipes per languagereferences/ci.md -- GitHub Actions CI workflow templatesreferences/release.md -- GitHub Actions release workflow templatesreferences/homebrew.md -- Homebrew formula/cask templates, setup script, release integrationreferences/bump.md -- Bump and retag Justfile recipe templatesreferences/pre-commit.md -- install-hooks recipeexamples/audit-output.md -- Example audit checklist for a Zig CLI projectjust clean recipe for removing build artifacts,
caches, and generated files. Never use bare rm -rf commands -- always use
just clean instead. This keeps destructive operations auditable, safe, and
consistent. The clean recipe should remove only project-local artifacts (build
output, caches inside the project), never global or user-level directories.Provides UI/UX resources: 50+ styles, color palettes, font pairings, guidelines, charts for web/mobile across React, Next.js, Vue, Svelte, Tailwind, React Native, Flutter. Aids planning, building, reviewing interfaces.
Fetches up-to-date documentation from Context7 for libraries and frameworks like React, Next.js, Prisma. Use for setup questions, API references, and code examples.
npx claudepluginhub tednaleid/claude-plugins --plugin just-bootstrap