cli: Instructions file for Claude Code

CLAUDE.md

cli CLAUDE.md is an instructions file for Claude Code from BunnyWay/cli. It costs 1,277 tokens per session, scanned A, original, MIT.

A project instruction file for BunnyWay/cli that documents its runtime, tests, monorepo layout, coding conventions, and documentation rules. A monorepo is one repository containing multiple related projects or packages.

In plain words
What is it for?
It is for guiding development, testing, and documentation changes in the BunnyWay/cli repository.
Why use it?
It gives Claude Code the project-specific rules needed to work consistently in that codebase.

Instructions file for Claude Code

Written for Claude Code: the file is CLAUDE.md. Also seen: mentions AGENTS.md.

This is BunnyWay/cli's own configuration. It tells Claude Code how to work on cli itself, so it is not a mod to install elsewhere. Copy it as a starting point and replace the rules that are about this project. Everything cli configures →

Reuse

Borrowing it

Nothing to install: this file belongs to BunnyWay/cli. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.

Copy the file
curl -O https://raw.githubusercontent.com/BunnyWay/cli/main/CLAUDE.md
Clone the repo
git clone --depth 1 https://github.com/BunnyWay/cli

Made for: Claude Code.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for cli CLAUDE.md

README.md
[![agentmods](https://agentmods.dev/badge/instructions/bunnyway/cli/claude-md/github.svg)](https://agentmods.dev/instructions/bunnyway/cli/claude-md)
Your own site
<a href="https://agentmods.dev/instructions/bunnyway/cli/claude-md"><img src="https://agentmods.dev/badge/instructions/bunnyway/cli/claude-md/github.svg" alt="Measured on agentmods" height="20"></a>

Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.

agentmods 80×15 button for cli CLAUDE.md

Your own site · 80×15
<a href="https://agentmods.dev/instructions/bunnyway/cli/claude-md"><img src="https://agentmods.dev/badge/instructions/bunnyway/cli/claude-md.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 1,277 This file is loaded in full into every session.
When invoked 1,277 The same file — it is already loaded in full.
Security scan A 0 findings. A grade says what 26 rules found in the file — not that it is safe.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5.1 $0.01277 $0.01277
Opus 5.5 $0.00511 $0.00511
Sonnet 5.5 $0.00255 $0.00255
Haiku 4.5 $0.00128 $0.00128

Measured yesterday against content hash c5919c1fd2fe, method: parsed. Prices are Anthropic first-party input rates as of 2026-10-07, from the pricing page.

Security

Grade A, and why

cli CLAUDE.md scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured yesterday.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

CLAUDE.md · 62 lines

How it starts

The opening of the file, as written. The whole thing — 62 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Default to using Bun instead of Node.js.

  • Use bun <file> instead of node <file> or ts-node <file>
  • Use bun test instead of jest or vitest
  • Use bun install instead of npm install or yarn install or pnpm install
  • Use bun run <script> instead of npm run <script> or yarn run <script> or pnpm run <script>
  • Bun automatically loads .env, so don't use dotenv.

Runtime

  • Bun.serve() for HTTP servers (used by auth login callback). Don't use express.
  • Bun.spawn() for subprocesses (opening browsers). Don't use execa.
  • Prefer Bun.file over node:fs's readFile/writeFile where applicable.

Testing

Use bun test to run tests.

import { test, expect, describe } from "bun:test";

test("example", () => {
  expect(1).toBe(1);
});

Monorepo structure

This is a Bun workspace monorepo with six packages, plus one package per Stream import source adapter:

  • packages/openapi-client/ (@bunny.net/openapi-client): standalone, type-safe OpenAPI client, zero CLI deps
  • packages/config/ (@bunny.net/config): shared Zod schemas, types, and JSON Schema for bunny.jsonc
  • packages/database-shell/ (@bunny.net/database-shell): standalone SQL shell engine (REPL, formatting, masking)
  • packages/sandbox/ (@bunny.net/sandbox): standalone sandbox SDK (create, file buffering, command exec, port exposure) over Magic Containers + SSH
  • packages/stream-import/ (@bunny.net/stream-import): headless Stream import engine, published to npm; packages/stream-import-<source>/ hold one adapter each (vimeo, s3, wistia, mux, cloudflare, jwplayer, brightcove)
  • packages/cli/ (@bunny.net/cli): the CLI, depends on all of them

Project conventions

  • See AGENTS.md for full architecture documentation.
  • Commands use defineCommand() from packages/cli/src/core/define-command.ts.
  • Namespaces use defineNamespace() from packages/cli/src/core/define-namespace.ts.
  • Resolve config via resolveConfig(profile, apiKey, verbose) — always pass profile and apiKey; pass verbose so credential-source debug lines respect the flag.
  • Use formatTable() / formatKeyValue() from packages/cli/src/core/format.ts for non-JSON output.
  • Handle --output json first in every handler, then pass output to format functions.
  • Use logger from packages/cli/src/core/logger.ts for all user-facing output.
  • Import prompts from packages/cli/src/core/ui.ts, never from the prompts package directly: the wrapper refuses to prompt when stdin is not an interactive terminal (the raw library spins at 100% CPU on a closed stdin). Piped prompt answers are deliberately unsupported; flags and --force are the automation contract. prompts.inject() in tests still works.
  • confirm() is a gate by default: if stdin closes before an answer it throws, so the command exits non-zero. Pass optional: true only for offer-style prompts (link this directory? save to .env?) where declining is a normal outcome and the command should continue.
  • Throw UserError for expected errors.
  • Import CLI-internal modules with the @/ alias (@/core/logger.ts), not ../ chains. Same-directory ./ imports stay relative. CLI only: the published packages build with tsc, which does not rewrite paths.
  • Import API clients from @bunny.net/openapi-client, not relative paths. Import generated types from the per-API entrypoints (@bunny.net/openapi-client/<spec>, e.g. @bunny.net/openapi-client/core); the older generated/<spec>.d.ts paths remain supported.
  • Use clientOptions(config, verbose) from packages/cli/src/core/client-options.ts when creating API clients in command handlers that are not yet on the tools layer. core/tools-boundary.test.ts is a ratchet: new command files must not create clients; put the API work in packages/cli/src/tools/ (defineTool) and wrap it with defineToolCommand() from packages/cli/src/core/define-tool-command.ts (prepare -> confirm -> run -> after -> render). Tools never prompt or print; prompts and confirmations live in prepare.
  • Database commands use v2 API endpoints (/v2/databases/...).
  • Apps (Magic Containers) commands use bunny.jsonc as the single source of truth. App ID is stored in the config (no separate manifest file). Use resolveAppId() and resolveContainerId() from packages/cli/src/commands/apps/config.ts. Types and conversion functions come from @bunny.net/config.
  • Prefer generated schema types over inline primitives. Use Pick<components["schemas"]["TypeName"], "field1" | "field2"> instead of { field1: string; field2: number }. Only fall back to string, any, or number when no generated type exists.

Read the full file on GitHub · 62 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. yesterday Changed · -1 lines · -39 tokens per session c5919c1fd2fe
  2. 14d ago Changed · +1 lines · +73 tokens per session 4eed18caa3ba
  3. 1mo ago Changed · +1 lines · +132 tokens per session 84c7990c8ae7
  4. 1mo ago Changed · +1 lines · +55 tokens per session a7ba1e688c1a
  5. 1mo ago First seen · 60 lines · 1,056 tokens per session scan A 70e893584c39

Subscribe to this mod's changes

cli CLAUDE.md is an instructions file published in the GitHub repository BunnyWay/cli (33 stars, last pushed yesterday), licensed MIT. It adds 1,277 tokens to every session, about $0.0051 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.

Related

Other instructions, from other repositories

vscode buildNext.instructions.md

Working notes and architecture documentation for the new esbuild-based build system in build/next. Use when making changes to the new build pipeline (transpile/bundle commands, NLS plugin, source-map handling, resource copying, or self-hosting watch tasks).

microsoft/vscode · 9,649 tokens

next.js AGENTS.md

AGENTS.md instructions for vercel/next.js, covering next.js development guide, codebase structure, monorepo overview, core package: packages/next and other important packages.

vercel/next.js · 7,384 tokens

vscode oss-third-party-notices.instructions.md

Instructions for microsoft/vscode, covering vs code oss third-party-notices pipeline, architecture, pipeline flow in ci, cache eligibility and rollout and applying the notice (cutover).

microsoft/vscode · 5,262 tokens

langchain AGENTS.md

AGENTS.md instructions for langchain-ai/langchain, covering global development guidelines for the langchain monorepo, corridor security analysis, project architecture and context, monorepo structure and development tools & commands.

langchain-ai/langchain · 4,680 tokens

vscode copilot-instructions.md

Copilot instructions for microsoft/vscode, covering vs code copilot instructions, project overview, root folders, core architecture (src/ folder) and built-in extensions (extensions/ folder).

microsoft/vscode · 2,731 tokens

deno copilot-instructions.md

Copilot instructions for denoland/deno, covering deno development guide for github copilot, network access, high level overview, key directories and key files to understand first.

denoland/deno · 3,077 tokens