agentleFS
wandbwandb/wandb-mcp-server/.agents/skills/develop-wandb-mcp-tools/SKILL.md

develop-wandb-mcp-tools

Skill71 starsChanged 32 days agoMITView on GitHub

Safely implement, fix, refactor, or review W&B MCP tools and their shared runtime behavior. Use for changes to public tool schemas, descriptions, registration, tool profiles/access modes, W&B or Weave reads and writes, ARIA integration, admission cost, response limits, error handling, privacy, or MCP client compatibility in this repository.

  • Reads credentials

We split this skill into the rules it gives an agent

16 rules. About 0 are common, 10 are distinctive, and 6 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈10

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 6

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Very specific:

    Read CONTRIBUTING.md and the relevant tool, registration, and tests before editing.

    line 10
  2. Distinctive:

    Prefer extending an existing tool.

    line 11
  3. Distinctive:

    read, write, or read/write behavior.

    line 14
  4. Distinctive:

    Keep caller-supplied GraphQL out of normal tools.

    line 19
  5. Very specific:

    Put tool behavior in src/wandb_mcp_server/mcp_tools/ and register it through register_tools().

    line 23
  6. Very specific:

    Add every public tool exactly once to src/wandb_mcp_server/runtime-contract.json.

    line 24
  7. Very specific:

    Treat WANDB_MCP_TOOL_PROFILE as the deployment capability envelope and WANDB_MCP_ACCESS_MODE=read-only as a monotonic subtraction.

    line 25
  8. Distinctive:

    Never log raw arguments, prompts, queries, filters, credentials, resource identifiers, or upstream response bodies.

    line 29
  9. Distinctive:

    Add only bounded, low-cardinality telemetry dimensions.

    line 30
  10. Distinctive:

    Do not retry non-idempotent writes.

    line 31
  11. Distinctive:

    Add focused tests for:

    line 37
  12. Distinctive:

    every supported tool-profile/access-mode manifest, unknown-profile and legacy-variable rejection, and missing prerequisites.

    line 41
  13. Very specific:

    Run the smallest relevant tests while iterating, then run the repository checks from CONTRIBUTING.md.

    line 46
  14. Distinctive:

    Use a dedicated test entity/project, never customer data.

    line 54
  15. Very specific:

    Prefer read-only operations.

    line 55
  16. Distinctive:

    Update the README, query capability matrix, release notes, and environment example only when their public contract changed.

    line 60

≈ “Common” is an estimate: at least 1 in 5 of the 308,232 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Develop W&B MCP Tools

Establish the contract

  1. Read CONTRIBUTING.md and the relevant tool, registration, and tests before editing.
  2. Prefer extending an existing tool. Add a new public tool only when the request explicitly requires a distinct capability.
  3. Record the intended public contract before coding:
    • input schema and validation;
    • read, write, or read/write behavior;
    • idempotency and ambiguous-timeout behavior;
    • canonical tool group, tool profile, access mode, prerequisite, and risk metadata;
    • bounded request, iteration, and response behavior;
    • stable error codes and retry guidance.
  4. Keep caller-supplied GraphQL out of normal tools. Use documented SDK APIs or fixed, application-owned query-only projections.

Implement through shared boundaries

  • Put tool behavior in src/wandb_mcp_server/mcp_tools/ and register it through register_tools().
  • Add every public tool exactly once to src/wandb_mcp_server/runtime-contract.json; generate release evidence and documentation from that packaged contract rather than copying manifests.
  • Treat WANDB_MCP_TOOL_PROFILE as the deployment capability envelope and WANDB_MCP_ACCESS_MODE=read-only as a monotonic subtraction. Neither replaces call-time authorization.
  • Reuse the shared API configuration, URL resolution, error sanitizer, response budget, deadline, and InstrumentedFastMCP boundary.
  • Classify the tool in admission.py; an unclassified tool is deliberately treated as heavy.
  • Preserve public links on WANDB_BASE_URL; never expose a server-side route.
  • Never log raw arguments, prompts, queries, filters, credentials, resource identifiers, or upstream response bodies.
  • Add only bounded, low-cardinality telemetry dimensions.
  • Do not retry non-idempotent writes. Return an explicit unknown outcome when a timeout makes write completion ambiguous.
  • For optional external services, require an explicit reviewed profile and typed endpoint configuration, validate the endpoint, bound input and polling, disable redirects when credentials could cross origins, and keep the group out of managed profiles until its entitlement boundary is approved.
  • For credential-forwarding HTTP tools, stream through a finite byte cap before JSON decoding, reject unexpected redirects or encodings, and bound the request by the active MCP tool deadline.

Test the behavior users actually invoke

Add focused tests for:

  • valid, invalid, missing, null, large, cyclic, and non-finite inputs or results;
  • authentication, authorization, not-found, timeout, rate-limit, overload, and malformed-upstream errors;
  • every supported tool-profile/access-mode manifest, unknown-profile and legacy-variable rejection, and missing prerequisites;
  • cancellation, permit cleanup, pagination, truncation, and concurrency bounds;
  • credential, prompt, customer-name, and internal-host canaries in responses, logs, and telemetry;
  • the installed wheel through an official MCP client when transport or registration changes.

Run the smallest relevant tests while iterating, then run the repository checks from CONTRIBUTING.md. For a release-targeted change, also run the complete release gate in RELEASING.md.

Handle live credentials safely

Mock-based tests are the default and need no API key. Run live tests only when the user explicitly authorizes them and supplies an isolated fixture.

  • Receive credentials through the environment; never inspect, print, echo, hash for display, copy, or report metadata about an .env file.
  • Source a user-approved environment file only when necessary and only with shell tracing disabled; prefer injected CI secrets.
  • Use a dedicated test entity/project, never customer data.
  • Prefer read-only operations. For authorized write tests, use uniquely named fixtures and delete them in finally; cleanup failure fails the test.
  • Sanitize logs and artifacts before attaching them to a PR.

Finish the change

Update the README, query capability matrix, release notes, and environment example only when their public contract changed. In the PR, state the exact behavior, compatibility/security impact, tests run, and any unverified live behavior. Never present mocked coverage as live proof.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

Reviews can't be read right now.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.