# Node.js
node_modules/
dist/
npm-debug.log*
yarn-debug.log*
yarn-error.log*
.npm/

# Python
__pycache__/
*.py[cod]
*$py.class
.pytest_cache/
.venv/
venv/
ENV/
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
!web/src/lib/
!web/src/lib/**
parts/
sdist/
var/
wheels/
share/python-wheels/
*.egg-info/
.installed.cfg
*.egg
MANIFEST

# Environment variables
.env
.env.local
.env.development.local
.env.test.local
.env.production.local
*.env

# Docker
docker-compose.override.yml

# IDEs
.vscode/
.idea/
*.swp
*.swo

# MacOS
.DS_Store

# Beever Atlas specific
bot/node_modules/
bot/dist/
bot/teams-app/beever-atlas-teams.zip
web/node_modules/
web/dist/

# Development worktrees
.dev/

# Tooling state (OMC, agents, etc.)
**/.omc/
.agents/
.impeccable.md
*.pen

# Stray version artifacts (e.g. pip's '=3.6.0' sentinel files)
=*

# Root package-lock (monorepo uses per-package locks)
/package-lock.json

# Claude Code runtime state
.claude/

# QA harness output artifacts
scripts/_qa_harness_out/

# Local scratch notes
daily_update.md
future/

# hypothesis cache
.hypothesis/

# Coverage artifacts
.coverage
.coverage.*
htmlcov/
coverage.xml

# OpenSpec scratch artifacts — commit specific change dirs explicitly with `git add -f`
openspec/
web/openspec/

# Local env backups created by ./atlas on re-runs
# (glob covers .env.backup, .env.backup.<x> and .env.backup-<x> variants)
.env.backup*

# Local presentation drafts and ad-hoc debug scripts (intentionally untracked)
PRESENTATION.md
web/test-faq.mjs

# Local untracked assets, demo seed data, and deploy scripts (intentionally untracked)
assets/posters/
scripts/deploy/
demo/seed_slack.py
demo/slack_demo_conversations.json
