Skip to main content

7 out of 10 Claude Dentists agree this package is GREAT and not COULD BE BETTER.

Project description

PyPI version Python versions License Claude Dentist Rating

claude-dentist

7 out of 10 Claude Dentists agree this package is GREAT and not COULD BE BETTER.

Agent Experience (AX) testing for tools built for Claude Code. Asserts X out of Y agents report your tool works GREAT and not COULD BE BETTER.

Agents run with bypassPermissions enabled and can execute shell commands, read/write files, and install packages without confirmation. Always run in a sandboxed environment.

Usage

import pytest
from claude_dentist import claude_dentist

@pytest.mark.anyio
async def test_agent_experience() -> None:
    await claude_dentist(
        runs=3,
        min_passes=2,
        prompt="Assess my-tool by using it. Install with `uv add my-tool`.",
        max_turns=15,
        deadline_seconds=60,
    )

Self-assessment

This is the test used to assess claude-dentist itself:

@pytest.mark.agent_experience
@pytest.mark.anyio
async def test_claude_can_use_claude_dentist() -> None:
    await claude_dentist(
        runs=10,
        min_passes=9,
        prompt=textwrap.dedent(f"""\
            Assess the claude-dentist library. Create a temporary project
            in /tmp, install it with
            `uv add "claude-dentist @ {CLAUDE_DENTIST_ROOT}"`, and try
            it out. Use a maximum of 3 runs to save on costs.
        """),
        options=ClaudeAgentOptions(max_turns=30),
        deadline_seconds=600,
    )

Dissenting opinions

Three Claude Dentists reported this library COULD BE BETTER:

  • Dentist #2 found that sub-agents kept hitting the max turns limit before completing, causing ERROR verdicts.
  • Dentist #8 discovered that verdict parsing is fragile — an agent that mentions "COULD BE BETTER" anywhere in its narrative gets misclassified, even when the final judgment is GREAT.
  • Dentist #10 actually said GREAT, but fell victim to the same verdict parsing bug that Dentist #8 reported.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

claude_dentist-0.0.4.tar.gz (7.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

claude_dentist-0.0.4-py3-none-any.whl (8.3 kB view details)

Uploaded Python 3

File details

Details for the file claude_dentist-0.0.4.tar.gz.

File metadata

  • Download URL: claude_dentist-0.0.4.tar.gz
  • Upload date:
  • Size: 7.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.14 {"installer":{"name":"uv","version":"0.11.14","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for claude_dentist-0.0.4.tar.gz
Algorithm Hash digest
SHA256 a7fae72f77e2cd37456d8b3bfddd6aec3f6af8c283fd31d3da44fee3f38cc7bf
MD5 188bf7ba117f79b7ce8c2d747617953d
BLAKE2b-256 81f1a2b1b19003ba2608103033f36b4cc28f2e219e0502c64fc29e4ee601e8c0

See more details on using hashes here.

File details

Details for the file claude_dentist-0.0.4-py3-none-any.whl.

File metadata

  • Download URL: claude_dentist-0.0.4-py3-none-any.whl
  • Upload date:
  • Size: 8.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.14 {"installer":{"name":"uv","version":"0.11.14","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for claude_dentist-0.0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 2ade521fabc06a7943a3a972afdb28cfd6d49280723dd43c1392411265b763ef
MD5 9f361f3bf28829d281c55cdc86eff2d3
BLAKE2b-256 a34392343adb5eb02fa6717ed9a2e612962127f83dab86deee661e4b55cda0c9

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page