Skip to main content

Good Start

Test whether a project's getting-started documentation is accurate and easy to follow, using an AI agent.

Good Start reads your project's setup instructions, attempts to follow them step by step, and reports back with a pass/fail result and actionable feedback.

Installation

Requires Python 3.12+.

pip install good-start

Or with uv:

uv add good-start

Prerequisites

Good Start uses the Anthropic API under the hood. Set your API key before running:

export ANTHROPIC_API_KEY=your-key-here

CLI Usage

Check a project's documentation by running good-start check from the project root:

# Let the agent find the getting-started docs automatically
good-start check .

# Point it at a specific file
good-start check README.md
good-start check docs/GETTING_STARTED.md

The output is a color-coded pass/fail panel with the agent's findings. The exit code is 0 on success and 1 on failure, so it works in CI scripts.

Save the output to a file:

good-start check . > report.txt

Pytest Plugin

Good Start ships as a pytest plugin that is automatically available once installed. No configuration or conftest imports needed.

Basic usage

def test_getting_started(good_start):
    result = good_start()
    assert result.passed, result.details

The good_start fixture is a callable that runs the agent and returns a Result object with:

  • result.passed -- boolean indicating whether the agent completed the instructions successfully
  • result.details -- summary of findings, with constructive feedback on failure

Checking a specific file

def test_quickstart(good_start):
    result = good_start("docs/QUICKSTART.md")
    assert result.passed, result.details

Configuration

Configuration resolves in this order (highest priority first):

  1. Direct call arguments: good_start("SETUP.md")
  2. Marker keyword arguments: @pytest.mark.good_start(target="SETUP.md")
  3. CLI options: pytest --good-start-target=SETUP.md
  4. ini options in pyproject.toml
  5. Default: "."

Marker-based configuration

import pytest

@pytest.mark.good_start(target="INSTALL.md")
def test_install_docs(good_start):
    result = good_start()
    assert result.passed, result.details

Project-wide defaults in pyproject.toml

[tool.pytest.ini_options]
good_start_target = "docs/GETTING_STARTED.md"
good_start_prompt = "tests/prompts/custom.md"

Custom prompt templates

Supply your own prompt file to tailor the agent's behavior:

def test_with_custom_prompt(good_start):
    result = good_start(prompt_path="tests/prompts/strict.md")
    assert result.passed, result.details

Skipping agent tests

Tests using the good_start fixture are automatically marked with @pytest.mark.good_start. Skip them during fast iteration:

pytest -m "not good_start"

Or run only the documentation tests:

pytest -m good_start -v

Failure output

When a test fails, the agent's detailed findings are appended to the pytest failure report, so you get actionable feedback directly in your CI output.

Metadata

Release files for good-start 0.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for good-start 0.1.1
File Size Uploaded
good_start-0.1.1.tar.gz 77.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for good-start 0.1.1
File Interpreter ABI Platform
good_start-0.1.1-py3-none-any.whl Python 3 none any Details

Total release size: 92.6 kB

Release files / good_start-0.1.1.tar.gz

Download URL good_start-0.1.1.tar.gz
Size 77.2 kB
Tags Source
SHA-256 checksum
How to use checksums
9057188dd84afb23a19700c7e025dc0743e9fbbc0d789404f5782fef2f8752e7
BLAKE2b-256 checksum
How to use checksums
118590a92b367dec9bd2dc341677e6b5ec0d88b8a3b560ce0857e100beed1094
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Feb 15, 2026.

Transparency log

Release files / good_start-0.1.1-py3-none-any.whl

Download URL good_start-0.1.1-py3-none-any.whl
Size 15.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
899b2034d81865a8555c29eaf18f2908fcc4a726c491c4d1ca54534eaef3d088
BLAKE2b-256 checksum
How to use checksums
2098c4edb001ec414bd68755ec69c12c6a71474cf9d48476f89bd19c5bc43199
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Feb 15, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page