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 successfullyresult.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):
- Direct call arguments:
good_start("SETUP.md") - Marker keyword arguments:
@pytest.mark.good_start(target="SETUP.md") - CLI options:
pytest --good-start-target=SETUP.md - ini options in
pyproject.toml - 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)
| File | Size | Uploaded | |
|---|---|---|---|
| good_start-0.1.1.tar.gz | 77.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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 logRelease 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