.DS_Store
.docs/
.tea/
tmp/

# `.claude/*` and not `.claude/`, because git does not descend into an excluded
# DIRECTORY and the negation below would never be reached.
#
# The exception is the hook registration, which is a fact about this repository
# rather than about whoever cloned it: `kettle mirror --hook` keeps every
# AGENTS.md paired with its CLAUDE.md symlink, and a fresh clone should get that
# without anyone remembering to wire it up. Everything else under .claude/ here
# is a local scratch tree and stays ignored.
.claude/*
!.claude/settings.json

# `make dist` and `make build` — release artifacts are rebuilt from a tag, never
# committed
cli/dist/
__pycache__/
*.pyc

# agents-sync regenerates these symlinks next to every AGENTS.md
CLAUDE.md

.kettle/
