Thanks for considering a contribution. This project lives or dies on community participation — adding a new AI bot signature takes about three minutes, and it directly helps every other site running this middleware.
The fastest contribution path is to flag an AI bot we don't yet know about.
- Open a new-signature issue.
- Fill in the structured form (operator name, user-agent regex, recommended action, evidence URL).
- A maintainer reviews within 7 days and either lands a PR adding it to
signatures/registry.json, asks for more evidence, or closes with a reason.
Evidence is non-negotiable. We require at least one of: (a) the operator's public documentation; (b) a captured server log showing the user-agent; (c) a third-party verified-bot list (Cloudflare Radar, Imperva, ai.robots.txt). This prevents griefing — without evidence, someone could add ^.*$ and break the world.
# Install Mise to manage tool versions
curl https://mise.run | sh
# Clone and bootstrap
git clone https://github.com/mthamil107/ai-bot-shield.git
cd ai-bot-shield
mise install # installs Node 22, Python 3.12, Go 1.23, pnpm, uv
# Per-language setup
cd packages/node && pnpm install && cd ../..
cd packages/python && uv sync && cd ../..
cd packages/go && go mod download && cd ../..# Run everything locally
cd packages/node && pnpm test && cd ../..
cd packages/python && uv run pytest && cd ../..
cd packages/go && go test ./... && cd ../..
# Parity check — the SAME 200 requests through all three middlewares.
# Verifies that Node / Python / Go produce identical decisions.
python tests/parity/run_parity.pyThe parity test is load-bearing. If you touch any detector logic, run it.
- New framework adapters (Django, Rails, Hapi, Fastify, chi, gin, echo extensions)
- More real-bot fixtures in
tests/fixtures/real-bot-requests/ - Documentation improvements per framework guide
- Performance improvements (target: p99 < 0.5ms per request)
- RFC 9421 verification module robustness (week-2 work)
- New detection heuristics without an associated test fixture
- Dependencies on heavy ML or remote APIs
- TLS termination, proof-of-work challenges, or CAPTCHAs (we delegate those — Anubis handles PoW, Cloudflare handles TLS)
- Telemetry that phones home
- Fork, create a feature branch.
- Make the change. Add a test (real or fixture-based).
- Run the parity check if you touched detector logic.
- Open a PR. The title should be in imperative ("Add Bytespider IP-range matching"), not past tense.
- CI runs Node / Python / Go suites. Green CI is required to merge.
- A maintainer reviews. Expect feedback; don't be discouraged if changes are requested.
- Node: TypeScript strict mode, formatted with Biome.
- Python: PEP 8, formatted with Ruff.
mypy --strictclean. - Go: standard
gofmt,golangci-lintclean.
See SECURITY.md. Do not open public issues for security bugs.
See CODE_OF_CONDUCT.md. The short version: be kind, assume good intent, focus on the work.
See GOVERNANCE.md for the maintainer list and decision-making process.