AGENTS.md · blacklanternsecurity/bbot
AGENTS.md from blacklanternsecurity/bbot: 964 lines covering Core Principles, Tooling, Dev Environment Setup, AI Use Disclosure and more.
Template by blacklanternsecurity
Chalk Labs
Need help deploying AGENTS.md · blacklanternsecurity/bbot?
Chalk Labs sets up agents like this inside real teams: connected to your tools, tested on your data, with a human in the loop where it matters.
Install
Works with Codex, Cursor, GitHub Copilot, Gemini CLI, OpenCode, Claude Code. Read the repository before you give any tool access to your data.
curl -fsSL https://raw.githubusercontent.com/blacklanternsecurity/bbot/stable/AGENTS.md -o AGENTS.md
Read it and adapt it to your project before use.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: prompt-engineering
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
What's in it
An AGENTS.md file: instructions coding agents (Codex, Cursor, Copilot, Gemini CLI and others) read before working in a repo.
- For
- Codex, Cursor, GitHub Copilot, Gemini CLI, OpenCode, Claude Code
- Length
- 964 lines
- File
AGENTS.md
Sections
- Core Principles
- Tooling
- Dev Environment Setup
- AI Use Disclosure
- Architecture Overview
- Writing a Module
First lines (shown under the repo's AGPL-3.0 license)
# BBOT Developer Guide
## Core Principles
### Modularity Principle
When writing a BBOT module, make sure all module-specific code lives in the module itself. Don't hard-code module-specific things in core or in helpers.
### DRY Principle
Don't Repeat Yourself -- and interpret this broadly. If two pieces of code aren't identical but follow a similar enough pattern that they could be generalized, they should be. Extract shared logic into a common abstraction rather than duplicating the pattern. Usually this means creating a shared helper, or a shared module template in `bbot/modules/templates`. When you notice structural similarity, unify it.
### Engineering Principle
Every system that is implemented must be implemented properly. No hacks, no hardcoding, no shortcuts. If we implement one of something, we build a proper system for it. It's okay to take a step back from the current task, in order to do things right. This relates directly to the Modularity Principle above.
### Testing Principle
BBOT has extremely thorough tests, including **one or more individual tests for each module, with no exceptions**. This is critical to maintaining stability in a recursive tool, which by its nature flirts with race conditions and infinite loops. If you add a module, you write a test. If you change a module, you make sure its test still passes.
---
## Tooling
- **Package manager**: [uv](https://docs.astral.sh/uv/)
- **Linter/formatter**: [ruff](https://docs.astral.sh/ruff/) (pinned to 0.15.10)
- **Test framework**: [pytest](https://docs.pytest.org/) with pytest-asyncio
- **Python**: 3.10 - 3.14
---
## Dev Environment Setup
```bash
# 1. Fork and clone
git clone git@github.com:<you>/bbot.git
cd bbot
# 2. Switch to dev branch, then create a feature branch
git checkout dev
git checkout -b my-feature
# 3. Install uv (if you haven't already)
curl -LsSf https://astral.sh/uv/install.sh | sh
# 4. Install all dependencies (including dev)
uv sync --group dev
# 5. Install pre-commit hooks (ruff, file checks, etc.)
uv run pre-commit install
# 6. Activate the virtualenv
source .venv/bin/activate
# 7. Verify
bbot --help
```
### Running Tests
```bash
# Run the full suite
./bbot/test/run_tests.sh
# Run specific module tests
./bbot/test/run_tests.sh robots,sslcert
# Run a single test file directly
pytest bbot/test/test_step_2/module_tests/test_module_robots.py -x -vv
```
### Linting
```bash
ruff check # lint
ruff format # auto-format
ruff format --check # verify formatting without changes
```
### Git Workflow
- `stable` - production releases
- `dev` - active development, **almost all PRs should target this branch**
- Feature branches should be created from `dev`
---
## AI Use Disclosure
Use of AI is not prohibited -- and in many cases, encouraged. However, when reviewing a PR, it is helpful for the reviewer to know the extent to which AI was used, and which model.
Please add a small section at the bottom of the PR with the header: `### AI Use Disclosure`, followed by the following information:
* Extent of the AI use. For example, was this fully autonomous by the AI, or was it a collaborative back-and-forth, or did the user just use the AI to review their work, etc.
* Model Used
This should only apply to external contributors, not members of the blacklanternsecurity organization.
---
## Architecture Overview
### How a Scan Works
BBOT is an async, recursive OSINT tool. A scan starts with **seed events** (targets) and passes them through a pipeline of **modules**. Each module watches for specific event types, processes them, and may emit new events, which feed back into the pipeline. This continues until no module has anything left to do.
```
Seeds (targets)
|
v
+--------------+
| ScanIngress | dedup, blacklist, scope check
+--------------+
|
v
+--------------+
| Intercept | dns, cloud tagging
| Modules | (modify/tag events before distribution)
+--------------+
|
v
+--------------+
| ScanEgress | scope filtering, graph management
+--------------+
|
v
+-----------+-----------+
| | |
Module A Module B Module C ...
| | |
+-----------+-----------+
|
v
Output Modules (json, csv, neo4j, ...)
```
### Events
Events are the currency of BBOT. Every piece of data -- a hostname, IP, URL, open port, finding -- is an event. Events have:
- **type**: `DNS_NAME`, `IP_ADDRESS`, `URL`, `OPEN_TCP_PORT`, `HTTP_RESPONSE`, `FINDING`, `EMAIL_ADDRESS`, etc.
- **data**: the actual data (a string, dict, etc.)
- **parent**: the event that led to this one (forming a discovery chain)
- **scope_distance**: how many hops from the original target (0 = in-scope)
- **tags**: metadata like `in-scope`, `affiliate`, `cloud-azure`, `open-port`, etc.
- **module**: which module discovered it
### Scope Distance
Scope distance tracks how far an event is from the original target:
- `0` = explicitly in-scope (matches target or discovered in-scope)
- `1` = one hop away (e.g. a hostname found in an SSL cert of an in-scope host)
- `2+` = further away
The scan's `scope.search_distance` (default 0) controls how far modules are allowed to look. A module's `scope_distance_modifier` adjusts this per-module.
### Helpers
BBOT has a helper for almost everything. **Please use them.** They're accessible via `self.helpers` inside any module.
Key helpers:
| Helper | What it does |
|--------|-------------|
| `self.helpers.request(url)` | Make an HTTP request (with retries, SSL handling, etc.) |Signals
- Stars
- 10,839
- Forks
- 957
- Open issues
- 23
- Last commit (this folder)
- Aug 24, 2026 (2 months ago)
- Last release
- Aug 24, 2026 (2 months ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- AGPL-3.0
- Repository
- github.com/blacklanternsecurity/bbot
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
Done for you
Rather not set it up yourself?
Chalk Labs scopes, builds and runs agents for your team: the task audit, the eval harness, the integrations and the weekly ops report. Fixed scope, priced before we start.
See how we build AI agents →Read the case studies
Chalk Labs is a two-founder AI and growth studio. We build AI agents, CRMs and MVPs for Web3 and AI companies, and have shipped 50+ product and token launches.
- launches shipped
- 50+
- launches shipped
- media placements
- 500+
- media placements
- founders on every account
- 2
- founders on every account
Press we've placed: Forbes · CoinDesk · Decrypt · Cointelegraph · The Block
Rahil Jain, Co-founder, Chalk Labs. Ex-Goldman Sachs engineer. You talk to the person who builds it.
Get AGENTS.md · blacklanternsecurity/bbot running in your business
Tell us what you want to automate. A founder replies within one working day with a plan, not a pitch deck.
Cite this page
AGENTS.md · blacklanternsecurity/bbot. Agent Mart. https://agentmart.dev/templates/blacklanternsecurity-bbot-agents-md (last updated 2026-10-24)