CtrlK
BlogDocsLog inGet started
Tessl Logo

billing

Work with the OpenMeter billing package. Use this skill whenever touching invoice lifecycle, billing profiles, customer overrides, invoice line items, gathering invoices, standard invoices, the invoice state machine, billing validation issues, billing-subscription sync, the billing worker, invoice calculation, rating/pricing engine, or tax config on billing objects. Also use when writing or debugging billing integration tests (BaseSuite, SubscriptionMixin), billing adapter (Ent queries), billing HTTP handlers, or the subscription→billing sync algorithm. Trigger this skill for any file under `openmeter/billing/`, `openmeter/billing/worker/`, `openmeter/billing/service/`, `openmeter/billing/adapter/`, `openmeter/billing/rating/`, `test/billing/`, or `cmd/billing-worker/`.

73

Quality

92%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide

SecuritybySnyk

Medium

Suggest reviewing before use

SKILL.md
Quality
Evals
Security

Quality

Content

85%Weight 40%Scale 1-3

Reviews the quality of instructions and guidance provided to agents. Good implementation is clear, handles edge cases, and produces reliable results.

The body is a high-quality, actionable reference for a complex billing domain, with executable code, exact file references, clear sequenced workflows with validation checkpoints, and well-organized one-level-deep references. Its only weakness is verbosity from cross-section redundancy that could be tightened.

Suggestions

Consolidate the side-effect hook (OnInvoiceIssued / OnPaymentAuthorized / OnPaymentSettled) material, which is currently restated in the Line Engine Lifecycle, App trigger interaction, and Non-Obvious Gotchas sections, into a single canonical location to reduce token cost.

Tighten the Invoice State Machine section by moving the exhaustive per-state listing into a reference file and keeping only the key guards and retry semantics inline, since the body is ~565 lines.

Consider extracting the Tax Handling dual-write write/read flows into `references/` to keep SKILL.md as an overview pointing to detail, consistent with how subscription-sync and testing are already split out.

DimensionReasoningScore

Conciseness

The body is dense with genuinely non-obvious internal OpenMeter knowledge (state machine wiring, tax dual-write, line-engine ownership) that Claude would not already know, so most tokens earn their place. It is not score 3 because the ~565-line body has real redundancy — side-effect hook behavior is restated across the Line Engine Lifecycle section, the App trigger interaction section, and the Non-Obvious Gotchas section — and several passages could be tightened.

2 / 3

Actionability

Provides executable Go snippets (the union-type constructor pattern, the tax code write/read flows), exact file paths and line references (`billing/adapter/stdinvoicelines.go` line 755), and copy-paste-ready checklists ('Adding a new field checklist', 'When adding a new line engine or hook'). This matches fully executable, specific, copy-paste-ready guidance rather than the pseudocode/incomplete score-2 anchor.

3 / 3

Workflow Clarity

Multi-step processes are clearly sequenced with explicit validation checkpoints and feedback loops: the numbered 'Adding a new field checklist', the 5-step 'When adding a new line engine or hook', the customer-locking sequence, and the state machine flow with retryable states (TriggerRetry → DraftValidating) and validation gates (noCriticalValidationErrors). This matches clear sequence with explicit validation and feedback loops, not the score-2 'checkpoints missing or implicit'.

3 / 3

Progressive Disclosure

SKILL.md is a well-sectioned overview with a package map and key-files table, and it offloads detail to two real, clearly-signaled one-level-deep references — 'See `references/subscription-sync.md` for full details' and 'See `references/testing.md` for full test patterns' (both files verified to exist). References are one level deep with easy navigation, matching the well-signaled one-level-deep anchor rather than the score-2 'content that should be separate is inline'.

3 / 3

Total

11

/

12

Passed

Description

100%Weight 40%Scale 1-3

Based on the skill's description, can an agent find and select it at the right time? Clear, specific descriptions lead to better discovery.

The description is specific, third-person, and answers both what the skill does and when to invoke it with explicit, file-path-gated triggers. It is comprehensive without fluff and clearly distinguishes itself from the sibling charges skill.

DimensionReasoningScore

Specificity

Lists many concrete capabilities and areas — 'invoice lifecycle, billing profiles, customer overrides, invoice line items, gathering invoices, standard invoices, the invoice state machine, billing validation issues, billing-subscription sync, the billing worker, invoice calculation, rating/pricing engine, or tax config' plus integration tests, adapter, HTTP handlers, and exact file paths. This matches the anchor for listing multiple specific concrete actions, not the narrower score-2 'names domain and some actions'.

3 / 3

Completeness

Explicitly answers both 'what' (Work with the OpenMeter billing package + enumerated areas) and 'when' via three explicit trigger clauses: 'Use this skill whenever touching...', 'Also use when writing or debugging...', and 'Trigger this skill for any file under...'. This clearly answers both what AND when with explicit triggers, not the score-2 case where 'when' is only implied.

3 / 3

Trigger Term Quality

Covers natural terms a developer would actually say ('invoice lifecycle', 'billing profiles', 'customer overrides', 'tax config', 'billing integration tests') alongside explicit file-path triggers like `openmeter/billing/` and `test/billing/`. Good coverage of common variations rather than only some relevant keywords (score 2).

3 / 3

Distinctiveness Conflict Risk

Has a clear niche (the OpenMeter billing package) with distinct file-path-gated triggers and even carves out the charges subpackage as a separate skill. Unlikely to trigger for the wrong skill, matching the clear-niche anchor rather than the score-2 'could still overlap with similar skills'.

3 / 3

Total

12

/

12

Passed

Validation

81%

Checks the skill against the spec for correct structure and formatting. All validation checks must pass before discovery and implementation can be scored.

Validation13 / 16 Passed

Validation for skill structure

CriteriaDescriptionResult

skill_md_line_count

SKILL.md is long (572 lines); consider splitting into references/ and linking

Warning

allowed_tools_field

'allowed-tools' contains unusual tool name(s)

Warning

relative_links

Relative link issues: 1 missing

Warning

Total

13

/

16

Passed

Repository
openmeterio/openmeter
Reviewed

Table of Contents

Is this your skill?

If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.