Install any skill in seconds. Free to start, no credit card required.
Get Started Free →bartsoj/ERRORS.md
Build the unified error / result taxonomy — classification tree, canonical error shape, alphabetical error-code registry with stable UPPER_SNAKE codes, wrapping rules across component boundaries, per-surface rendering, and a deprecation policy.
Passed 17 of 25 test cases with the skill, and 7 of 25 without it.
and 21 more in the full report
13 fixed4 passed either way5 still failing3 broke
Tokens, turns and time describe resource use, not a dollar price.
One of 13 test cases the skill fixed. Same model, same prompt, with and without the skill.
We need an ERRORS.md taxonomy for an eCommerce platform called ShopCore. The system has 4 client error codes, 2 server error codes, and 1 protocol error code. Two of the codes are marked retryable with backoff. Draft the complete YAML frontmatter header block for this document.
| Checked | Without skill | With skill |
|---|---|---|
| Sets error_codes to 7 in the YAML frontmatter. | Missed | Passed |
| Sets retryable_codes to 2 in the YAML frontmatter. | Missed | Passed |
| Sets status to complete when open questions are resolved. | Missed | Passed |
The instructions your model reads when the skill loads.
Produce an ERRORS.md that serves as the single source of truth for every error code the system can emit, its HTTP status, CLI exit code, UI message key, user action, retry semantics, log level, and owning bounded context. The document fixes a classification tree and per-class policy, pins the canonical error response body, publishes the complete alphabetical registry of stable UPPER_SNAKE error codes, names the wrapping and translation rules across component boundaries, states how each error is rendered on each surface, and commits a deprecation policy for retiring codes. An agent reading this document alone can — for any code the system emits — cite its HTTP status, CLI exit, UI key, user action, retry semantics, and owner, without opening INTERFACES.md or any IA.
ERRORS.md sits between INTERFACES.md (which owns the shape of error responses and per-endpoint error-code listings) and the per-surface IAs (which own user-facing error UX) and resolves them to one taxonomy. It is small, stable, widely cited, and read by IAs (for user-facing message copy), /spec (for the codes a unit may emit), /review (for contract conformance), and /system-verify (when diagnosing failures). The defining discipline — and the commonest violation — is codes are stable: once a code string is assigned, it is never reused, never re-meaning'd, never silently deleted.
EP-name boundaries. Every error code mentioned in an endpoint response in INTERFACES.md must have a registry row here.WEB_IA.md, CLI_IA.md, MOBILE_IA.md, TUI_IA.md, VOICE_IA.md. Only the IAs that were produced for this project are read; surfaces the project does not build have no IA and no column in § 5. Each IA's error-surface section names the ui_message_key or template it expects.owner_context value on every row; § 9 Invariants Index supplies the INV-NN references that certain codes signal (a uniqueness invariant violation surfaces as a specific code, named here).throw, raise, panic, return Err(...), respondError(...) sites and collect codes already emitted that are not yet documented. Surface undocumented codes as rows or as open questions if the mapping is ambiguous.deprecated_since / removed_in columns populated.Read set size: 3 required (INTERFACES, DOMAIN, each surface IA in scope) + optional source scan + optional prior ERRORS. Read all IAs and INTERFACES.md end-to-end before drafting. Omitted reading causes two specific failure modes: codes cited in INTERFACES or an IA without a registry row (contract drift) and codes emitted by code that never reach the registry (silent divergence).
Error taxonomy construction proceeds in seven phases: harvest, classification, canonical shape, registry, wrapping, per-surface mapping, and validation. Phases are sequential. Revisit earlier phases if a later one reveals a missing code or a contradiction.
Collect every error code candidate from four sources:
errors: field of an endpoint. These are the externally-visible codes; every one must land in § 3.ui_message_key an IA expects to render; the corresponding code must exist here.INV-NN that is enforced at runtime typically signals through a specific code when violated. Name one code per enforced invariant, citing the INV-NN in the row's references column.throw, raise, panic, Err(...), error-response helpers. Normalise to UPPER_SNAKE. Codes found only in code with no INTERFACES / IA reference are either internal-only (log-level error or critical; never reach users) or missing from INTERFACES — surface as an open question if the boundary is unclear.Deduplicate by meaning, not by spelling. NOT_FOUND and MISSING and UNKNOWN_RESOURCE are the same code in three forms; pick one canonical UPPER_SNAKE string. Record the rejected forms so the registry does not accumulate synonyms.
Partition the harvested codes into three top-level classes and their conventional HTTP families:
test cases passed, vs 7 / 25 without
More skills from the same source and nearby in the registry, with their headline benchmark lift.