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.5.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.5-py3-none-any.whl (8.3 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: claude_dentist-0.0.5.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.5.tar.gz
Algorithm Hash digest
SHA256 ef72522b7f00334bcb9019cbcb1e7a0665e396a6b2144bbf709872f6eac1718a
MD5 90004dc3e69fa1904c0d1de9030db857
BLAKE2b-256 3eb04ca943cefa2812bf584a62bc33c64fc40333f64b36dad24575e60fc2b4d3

See more details on using hashes here.

File details

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

File metadata

  • Download URL: claude_dentist-0.0.5-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.5-py3-none-any.whl
Algorithm Hash digest
SHA256 084b24342a086c45ebbe9312a108f31d25afc6f275631d87544ab63c5d796df2
MD5 44e649de7f21e9b3b0486bb3f0e44fd5
BLAKE2b-256 22a3dd6104a371c1bc3dc6f8c52ff67381d911af90d1c2daaba805b96ff193b7

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