BluetOpen source

What agents should know before contributing

anthropics/anthropic-sdk-python

Read by Bluet from 2 files written for agents and 300 merged pull requests on 2026-09-24. Not reviewed by the maintainers.

Rules its files tell agents (11)

  • mustThey run through uv, but call uv yourself only to add a dependency or to run an ad hoc script, never to format…

    The entry points are ./scripts/{bootstrap,format,lint,test}. Always use them to format, lint, and run the tests, and pass pytest arguments through ./scripts/test. They run through uv, but call uv yourself only to add a dependency or to run an ad hoc script, never to format, lint, or test.

    CLAUDE.md
  • shouldDon't rename an existing tag, because telemetry matches on it.
    CLAUDE.md
  • shouldDon't call asyncio directly or block on pathlib I/O.

    Use anyio, not asyncio. Async helpers use anyio, including anyio.Path and anyio.to_thread.run_sync, so they work under any event loop the client supports. Don't call asyncio directly or block on pathlib I/O.

    CLAUDE.md
  • shouldDon't use the a<name> pattern.

    Methods keep the sync name. A method on an Async* class keeps the sync method's name: AsyncAnthropic.close(), not aclose(). Don't use the a<name> pattern.

    CLAUDE.md
  • shouldDon't make something public unless users need it.

    Don't make something public unless users need it. Every public name has to be supported from then on. A helper, constant, or parameter stays private when only the SDK uses it, even if exposing it would be convenient.

    CLAUDE.md
  • shouldDon't write one function that checks inspect.isawaitable or a mode flag.

    Two classes, same shape. Sync and async are separate classes: Anthropic and AsyncAnthropic, BetaFunctionTool and BetaAsyncFunctionTool. Don't write one function that checks inspect.isawaitable or a mode flag. Share the pure logic and write two thin wrappers.

    CLAUDE.md
  • shouldA helper that only works async goes on the Async* resource only, as AsyncWork.worker does. Don't add a sync me…

    Async-only helpers live on the async class only. A helper that only works async goes on the Async* resource only, as AsyncWork.worker does. Don't add a sync method that casts the client.

    CLAUDE.md
  • shouldA noqa for a rule that isn't selected does nothing, so don't add one.
    CLAUDE.md
  • shouldDon't merge into next.

    Don't merge into next. next is a release branch in the public repository, and only automation writes to it: release-please runs there and merges next into main at a release. Don't open a PR against next, and don't merge or push to it by hand.

    CLAUDE.md
  • shouldIn the public repository that is main. Elsewhere don't assume its name.

    PRs target the repository's default branch. In the public repository that is main. Elsewhere don't assume its name. gh repo view --json defaultBranchRef shows it.

    CLAUDE.md
  • shouldDon't add a comment that marks code as hand-written or mentions Stainless, and remove one from a block you are…

    No provenance comments. Don't add a comment that marks code as hand-written or mentions Stainless, and remove one from a block you are already editing.

    CLAUDE.md

Decisions its pull requests settled (1)

  • #1059use posix paths in file collection for cross-platform compatibility
Your agents can be told this before they touch the code. Get it for your repository: npx bluet-mcp init. What Bluet is.
anthropics/anthropic-sdk-python: what agents should know before contributing · Bluet