Skills

Property Repro

Reproduce a reported Honcho API bug (a 5xx, a wrong status code, data that doesn't...

Install

npx skills add plastic-labs/honcho --skill property-repro -g -a claude-code -y
Repository
plastic-labs/honcho7.9k
Category
Testing
Updated
3d ago
License
AGPL-3.0
Context cost
Lightabout 1,337 tokens
Runs scripts
No, instructions only

What it does

Reproduce a reported Honcho API bug (a 5xx, a wrong status code, data that doesn't round-trip) as a failing Hypothesis/Schemathesis test, then fix it. Use when an issue reports an unexpected API error, when hunting for 5xx bugs in a route, or before changing request validation or error handling.

Reproducing API bugs with property tests

tests/property/ fuzzes the /v3 API in-process against a real Postgres test database. Every test asserts that no response is a 5xx and that no unhandled exception escapes (TestClient re-raises them). Start here when an issue says "I got a 500 when…": the shortest path is usually to get one of these tests to fail on the reported input, then fix the cause.

The harnesses

FileWhat it drivesReach for it when
test_api_no_server_errors.pySchemathesis: every operation, from the app's own OpenAPI schema, in positive and negative mode. Path and body IDs point at seeded resources (seeded_ids) most of the time.The report is one request.
test_api_inputs.pyHand-written strategies for what the schema doesn't describe: multipart uploads, the filter DSL, odd JSON in metadata/configuration, store-then-read round trips.The input is a file, a filter, or a JSON value.
test_api_stateful.pyA RuleBasedStateMachine over workspaces, peers, sessions, messages, conclusions, including use after delete.The bug needs a history ("after I deleted the session…").
test_api_auth.pyThe per-operation fuzzer with auth on and a random token per request (none, forged, expired, admin, workspace/peer/session/named-scope keys across two workspaces), checked against an oracle built from the route policy.The report involves a scoped key, a 401/403, or data visible to the wrong caller.
test_api_concurrency.pyBatches of requests on colliding names fired at once over httpx's ASGI transport, each on its own DB connection; also checks get-or-create leaves exactly one row.The bug is intermittent, a spurious 409, or only shows up under load.
Read the whole SKILL.md on GitHub

More in Testing