# JetBrains IDE
.idea/

# Python
__pycache__/
*.py[cod]

# OS
.DS_Store

# Local-only security denylist: the maintainer's private infra terms (host names, domains,
# IPs, etc.) that the repo-gate scans for. Kept out of the repo so the terms themselves are
# never published; never commit this file.
.security-denylist.local

# Private skill: stays local, not published to the marketplace
plugins/bitranox/skills/python-libraries-to-use/
.pytest_cache/
.coverage

# Local, per-developer settings (Claude Code etc.) - never commit
*.local.json

# Internal planning docs - design plans, not shipped
PLANS/


# Curated self-learning memory store (per-project; local, never committed on this public repo).
# Pointer blocks live in CLAUDE.local.md; bodies in the anchor's .claude-memory/. Both stay local.
notes.md
.claude-bx-selflearning/
.claude-memory/
CLAUDE.local.md
.plan/

# Engine-scaffolded altitude MARKER files (one-line CLAUDE.md per memory level inside the repo);
# the real, tracked CLAUDE.md at the repo root is unaffected.
plugins/CLAUDE.md
plugins/bitranox/CLAUDE.md
plugins/bitranox/hooks/CLAUDE.md

# pfsense.py writes `config-<host>-<timestamp>.xml` snapshots into its --snapshot-dir, which
# defaults to the current directory. Those are LIVE firewall configs carrying password hashes,
# private keys and certificates, and this repo is public: never commit one.
config-*-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9].xml

# session scaffolding, never committed
.sweep-2026-08-27/

# render-graphs.js writes its SVGs beside the skill it rendered; they are generated, not shipped.
plugins/bitranox/skills/*/diagrams/

# Python build artifacts (pyproject/hatchling); the wheel bundles the whole plugin
# tree, so dist/ is large and is rebuilt by the release workflow on every version.
dist/
build/
*.egg-info/
# The package declares no dependencies and pyproject carries floating floors, so a
# lock adds nothing to resolve and only goes stale; the house convention is to omit it.
uv.lock
