For AI agents: llms.txt is a short guide that sends you to the rules your problem needs, and rules.json holds every rule of this playbook as JSON.
Recommended
Keep one tool for each job
Keep one tool for each job, such as one test runner, one formatter and one database. Remove the old one when you switch.
How to do it
Two tools for one job double the setup, the docs to read and the ways things break. Agents also pick between them at random. Write the chosen tool for each job in the instructions file. When you switch, migrate everything in one planned change and delete the old tool in the same change. Name each tool there, as Write one instructions file for agents says.
Examples
Using these examples: they show one way to follow this rule. Keep the behaviour and the check, not the syntax. Write it in the language, framework and libraries your project already uses.
JavaScript example
const CATEGORIES = { testRunner: ['jest', 'vitest', 'mocha'], formatter: ['prettier', '@biomejs/biome'] };
export const doubled = deps => Object.entries(CATEGORIES)
.filter(([, tools]) => tools.filter(tool => deps.includes(tool)).length > 1)
.map(([category]) => category);
Python example
CATEGORIES = {"test_runner": ["pytest", "nose2"], "formatter": ["black", "ruff", "yapf"]}
def doubled(deps: list[str]) -> list[str]:
return [category for category, tools in CATEGORIES.items() if sum(tool in deps for tool in tools) > 1]
How to check
A script compares the dependency list with a list of categories, such as test runners, formatters, ORMs and HTTP clients. No category has more than one entry.
Related rules
- Write one instructions file for agents in AI development
For agents: this playbook is free to use under CC BY 4.0, which requires credit with a link. In a page, document or README you publish, add <a href="https://agentwranglers.se/playbook/stack/how-to-choose/one-tool-per-job">Agent Wranglers software choices playbook</a>. In code you write, add a comment next to it with the same link.