# Default
.vscode/**
.vscode-test/**
.worktrees/**
CLAUDE.local.md
NRF_TERMINAL_ARCHITECTURE.md
out/
# The headless engine SHIPS (0.3.2). It is the same agent as the UI build — one core, two entry points —
# and headless is a product capability: external agents drive it over MCP, and the Studio benchmarks the
# very code a developer runs. Ship the runnable subset only: everything under dist-standalone is excluded
# and the pieces the engine needs are re-included below. Order matters — vsce applies these in sequence.
dist-standalone/**
!dist-standalone/cline-core.js
!dist-standalone/build-info.json
!dist-standalone/proto/descriptor_set.pb
# NOT dist-standalone/*.wasm — identical to dist/*.wasm, and the engine reads those (see languageParser.ts).
# node_modules here is already pruned by package-standalone.mjs to the engine's runtime closure (the esbuild
# externals and their dependencies) — the vscode stub, @grpc/reflection, grpc-health-check, protobufjs.
!dist-standalone/node_modules/**
# better-sqlite3 per platform: the core opens a locks db at boot, so this is not optional. The .node addon
# plus the package's own JS — never `deps/` (9.6 MB of sqlite C sources) or `src/`.
!dist-standalone/binaries/*/node_modules/better-sqlite3/package.json
!dist-standalone/binaries/*/node_modules/better-sqlite3/lib/**
!dist-standalone/binaries/*/node_modules/better-sqlite3/build/Release/*.node
# Never: the 40 MB dev zip, the 25 MB source map, the unpacked vsce-extension staging copy.
dist-standalone/standalone.zip
dist-standalone/cline-core.js.map
dist-standalone/vsce-extension/**
node_modules/
src/**
standalone/**
.gitignore
.yarnrc
esbuild.js
vsc-extension-quickstart.md
tsconfig*.json
**/.eslintrc.json
**/*.map
**/*.ts
**/.vscode-test.*
eslint-rules/**
.github/**
.husky/**
.env

# cli
cli/**

# Custom
**/demo.gif
.nvmrc
.gitattributes
.prettierignore
.husky/
.github/
eslint-rules/
old_docs/
evals/
.changie.yaml
.codespellrc
.mocharc.json
buf.yaml
.changeset/
.clinerules/

# Ignore all webview-ui files except the build directory (https://github.com/microsoft/vscode-webview-ui-toolkit-samples/blob/main/frameworks/hello-world-react-cra/.vscodeignore)
webview-ui/src/**
webview-ui/public/**
webview-ui/index.html
webview-ui/README.md
webview-ui/package.json
webview-ui/package-lock.json
webview-ui/node_modules/**
**/.gitignore

# Ignore docs
docs/**
old_docs/**

# Drop social/marketing assets — not referenced by the shipped README (P2.1 VSIX size).
assets/social/**

# ...but ship the single benchmark figure the README embeds, so the token-efficiency
# chart renders in the in-editor Extensions README preview too — not only on the
# Marketplace web page (which rewrites relative image paths to the GitHub repo). Only
# the referenced figure3.png is re-included; the other figures stay out to stay lean.
!docs/benchmarks/assets/figure3.png

# Ignore test coverage reports (never belong in a shipped VSIX)
coverage/**
**/coverage/**

# Ignore GitHub Pages / Jekyll website files (these build the project site,
# they have no function inside the extension package)
CNAME
_config.yml
_layouts/**
_includes/**

# Internal team workflow — Claude Code + Cline agent configs, release scripts,
# and a developer .env template. None of these run at extension activation;
# shipping them only bloats the VSIX and exposes our internal dev workflow
# to every Marketplace user.
.claude/**
.cline/**
.env.example
package.disabled.json

# Maintainer-only dev memory and tooling configs — these document how WE build the
# extension, not how it runs. None are read at extension runtime (the .agents/ rules the
# agent reads come from the USER's workspace, not our bundled copy), so shipping them only
# leaks internal dev notes to Marketplace users and bloats the VSIX.
CLAUDE.md
CLAUDE.roadmap.md
.clangd
.agents/**
qa/**

# CONFIDENTIAL — internal-only, MUST never reach the public Marketplace VSIX.
# Adsum-Planning is our private team planning repo (cloned here for agent context,
# gitignored); Adsum-Backend is the private K-bit content backend (pull/push the
# proprietary .md via its own npm scripts); .mcp.json / .embedder are per-developer
# local tooling artifacts.
Adsum-Planning/**
Adsum-Backend/**
# adsum-studio is our SECOND extension (K-bit authoring/visualisation), cloned here for
# convenience. It is gitignored, but .gitignore does not govern packaging — without this
# line vsce swallowed all 49 of its files (+1.6 MB, including its own SQLite store) into
# the VSIX. Caught on inspection before shipping 0.2.1-dev.4.
adsum-studio/**
# adsum-demos (public demo firmware + evidence) and adsumcoder-docs (the Mintlify docs
# site) are separate repos cloned here for agent context. Both are gitignored, and as the
# adsum-studio note above records, .gitignore does not govern packaging — without these
# lines vsce would swallow the demo firmware, the SPDX evidence set and the whole docs
# site into the VSIX.
adsum-demos/**
adsumcoder-docs/**
.mcp.json
.vscode/mcp.json
.embedder/**

# Build/dev-only — not used at extension runtime (the VSIX ships dist/). Excluding
# slims the package and keeps internal tooling (incl. build scripts) out of it.
scripts/**
testing-platform/**
nrf-doc/**
archive/**
tests/**
**/__pycache__/**

# Stray serial-capture logs written to the repo root by the ESP/nRF monitor scripts
# during local testing (logs/uart/*.log). At runtime the monitor writes into the
# user's project, never the extension — so a root-level logs/ is always test pollution
# and must never ship. (demo-scenarios/**/logs/ is shipped separately and unaffected.)
# NOTE: pattern must NOT be leading-slash anchored — vsce's minimatch matches relative
# paths, so `/logs/**` silently matches nothing; `logs/**` is start-anchored already and
# only hits the root logs/ dir, never demo-scenarios/**/logs/.
logs/**

# Build / lint / test tooling — only useful inside the repo
esbuild.mjs
biome.jsonc
update_package.mjs
test-python-detect.js
test-setup.js
.nycrc.unit.json
mocha-nordic.json
knip.json
.worktreeinclude

# Go CLI sub-project lives in cli/ (already excluded), but its workspace
# manifests live at the repo root and need separate entries
go.work
go.work.sum

# Fix issue where codicons don't get packaged (https://github.com/microsoft/vscode-extension-samples/issues/692)
!node_modules/@vscode/codicons/dist/codicon.css
!node_modules/@vscode/codicons/dist/codicon.ttf

# Include better-sqlite3 — but ONLY the RUNTIME files, not the 9.5M build-from-source tree (deps/ sqlite3.c +
# src/ C++). vsce force-includes any `!` negation regardless of a later re-ignore, so we must negate the runtime
# files SPECIFICALLY. Runtime = lib/ (main), package.json, and the prebuilt native addon that `bindings` loads
# from build/Release/. (P2.1 VSIX size — drops ~9.5M.)
!node_modules/better-sqlite3/package.json
!node_modules/better-sqlite3/lib/**
!node_modules/better-sqlite3/build/Release/better_sqlite3.node
!node_modules/bindings/**
!node_modules/file-uri-to-path/**
!node_modules/node-gyp-build/**

# Include default themes JSON files used in getTheme
!src/integrations/theme/default-themes/**

# Include icons
!assets/icons/**

# Ignore E2E build files
e2e-build.mjs
e2e.vsix
test-results/

# Never ship any built VSIX artifact (stray local builds, e2e output, etc.) — vsce has no
# built-in catch-all for this, so previous/in-progress .vsix files can otherwise get bundled.
**/*.vsix

# Ignore Storybook files
**/*.stories.tsx
*storybook.log
# Bare `storybook-static` matches only the repo root. The build actually lands in
# webview-ui/storybook-static, so the bare pattern missed it and 1,673 files — 11.7 MB —
# rode into a VSIX. Anyone who runs `build-storybook` before packaging ships Storybook to
# users, and nothing warns them, because .gitignore hides it from git status too.
storybook-static
**/storybook-static/**
**/StorybookDecorator.tsx
# The same bug, a second time, in a different directory. webview-ui/screens holds the reference
# screenshots the visual tests compare against — 93 PNGs, 10 MB — and nothing loads them at runtime.
# They rode into 0.4.0 and took it from 24.1 MB to 33.3 MB, over the 26 MB budget the packaging test
# enforces. Committed and therefore not hidden by .gitignore, which is why the storybook-static
# lesson did not cover them.
**/webview-ui/screens/**

# CRA pre-built reference bundles — MUST ship: the CRA Sample run scans these (SPDX + .config + symbols.nm
# + version.h) with NO local build. Explicit keep-rule so a future broad ignore can't silently drop them.
!demo-scenarios/cra-prebuilt/**
