# Default
.vscode/**
.vscode-test/**
.worktrees/**
CLAUDE.local.md
NRF_TERMINAL_ARCHITECTURE.md
out/
dist-standalone/
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/**
.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
storybook-static
**/StorybookDecorator.tsx

# 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/**
