.DS_Store
# Sublime Text project/workspace files (user-specific, incl. editor _backup copies)
*.sublime-project
*.sublime-workspace
*.sublime-project_backup
*.sublime-workspace_backup
node_modules/
.env
.env.*
# Woodpecker CI secret bootstrap (ci/scripts/load-secrets.ts) — never commit.
.ci-secrets.env
.dev.vars
dist/
# Package-manager debug logs — never meant to be committed.
npm-debug.log*
pnpm-debug.log*
yarn-debug.log*
yarn-error.log*
.claude/pipeline-output/
.claude/worktrees/
.claude/scheduled_tasks.lock
# local-CI pre-push gate: freshness stamp written by the PreToolUse hook in .claude/settings.json
.claude/.local-ci-pass
# Generated cache + dev-server logs/pids — regenerable, never commit.
.claude/cache/
.claude/stack/dev-server-logs/
.worktrees/
# Operational pipeline state — never committed.
.pipeline/.state/
.pipeline/.candidates/
.wrangler/
*.tsbuildinfo
# Turbo per-package run metadata (#1840). The shared content-addressed cache lives on the CI
# agent volume /cache/turbo, never in the repo; .turbo/ is local run state and must stay untracked.
.turbo/
# pnpm content-addressable store, created when pnpm's store-dir is pointed at the repo (default is
# ~/.local/share/pnpm/store). Local package cache like node_modules — must stay untracked.
.pnpm-store/
coverage/
tests/e2e/results.json
tests/e2e/.sweep/
.playwright-mcp/
# Local Playwright persistent context for ux-design/markup-verification (Chromium profile + Clerk session)
/.cache/
packages/http-fetcher/ja3check
packages/http-fetcher/server
packages/http-fetcher/browserforge-bench
__pycache__/
*.pyc
# ruff's incremental cache. Written by the openapi-python-client post-hooks INSIDE the
# generated output dir (packages/sdk-python/src/bytekit/.ruff_cache/). ruff already drops a
# self-ignoring `.gitignore` containing `*` in there, which is exactly why the directory went
# unnoticed for so long — `git status` never mentions it. This entry is belt-and-braces so the
# by-product is ignored even if ruff stops self-ignoring. The reproducibility gate
# (ci/scripts/check-sdk-python-regen.sh) excludes it from BOTH of its diffs: cache entry names
# are hashes of the absolute path, so two clean-room generates differ by construction.
.ruff_cache/
# Generated artifact — reproduced via `pnpm --filter @rapidcrawl/sdk-python generate`
packages/sdk-python/filtered-openapi.yaml
# NOTE: the MCP server's generated docs JSON (see packages/mcp-server/src) is intentionally
# TRACKED (#2469). Coolify builds the gateway image from a git checkout, so this prebuild-generated
# file must be committed for the hosted MCP docs tools to work. Regenerate with:
#   pnpm --filter @hunt-labs/bytekit-mcp prebuild
# Generated by @tanstack/router-plugin/vite — reproduced on every dev/build
packages/app/src/routeTree.gen.ts
packages/app/.tanstack/
# CloakBrowser spike result directories — contain raw trial data, not committed
docs/plans/spike-cloakbrowser-results-*/
# Skill-output scratch (lean/, code-review artifacts, baseline-rot diagnostics)
.build/
# External Claude Code plugin source — e.g. the ux-design workflow plugin at
# ~/.claude/plugins/ux-design/. Prevent accidental re-add if someone copies
# the source back into the tree. See .claude/stack/ux-design.md for the
# invocation contract.
ux-design/plugin/
# Per-issue scratch notes
.issues/
# Per-ticket scratch (raw artifacts from `ticket` command runs)
docs/tickets/
.superpowers/
# Build outputs (webrtc-probe, etc.) — anywhere in tree
out/
# Graphify generated artifacts (cache, graph.json, wiki/, GRAPH_REPORT.md)
graphify-out/
# Graphify raw run state (transcripts of individual analyses)
.claude/learnings/raw/

# Claude Design extracted bundle — bulk that's regenerable from each re-export
# Keep the high-signal CSS / JSX / HTML / chats / README; drop the bulk.
ux-design/claude-design/marketing/bundle/project/fonts/*.woff
ux-design/claude-design/marketing/bundle/project/uploads/
ux-design/claude-design/marketing/bundle/project/screenshots/
ux-design/claude-design/marketing/bundle/project/verify/
# Root-level project/*.jsx files are vestigial canvas-iteration artifacts that
# Claude Design's export pipeline keeps including despite the files not existing
# in live project state (snapshot-staleness pattern verified syncs 8, 13, 14).
# Pattern matches root-level only (gitignore * doesn't recurse) — nested
# project/X/*.jsx files (homepage, vs/firecrawl/, features/anti-bot/, etc.) stay tracked.
ux-design/claude-design/marketing/bundle/project/*.jsx
ux-design/screens/playground-sitemap/.auth-state.json
# v2 verify saves a Clerk session storageState per screen — never commit (token).
ux-design/screens/**/.auth-state.json
# v2 verify scratch — OTP code + run log per screen, never commit.
ux-design/screens/**/.verify-code
ux-design/screens/**/.verify-run.log
.ci-deploy-uuids

# Astro types cache generated when astro runs from repo root (the package-level
# caches are already ignored via the package pattern).
/.astro/
