AC invoice-generator
Generate a professional invoice from natural language or structured input. USE WHEN: - User asks to create an invoice, bill, or payment request - User provides line items, client details, or says "invoice [client] for [work]" - User wants a receipt or proof of payment document DON'T USE WHEN: - User wants a quote, estimate, or proposal (different document structure and intent) - User wants to track invoices, manage accounts receivable, or build an invoicing system - User wants a contract or agreement (use a contract/legal template instead) - User wants to send an invoice via email (this generates the document; sending is a separate step) - User wants a recurring billing setup or subscription management OUTPUTS: Single self-contained .html file, print-ready. User opens in browser → Print → Save as PDF. Clean, professional layout. INPUTS: Sender info, client info, line items (description + qty + price). Optional: invoice number, dates, tax rate, notes, payment terms.
As a process C 55/100 · Has gaps — weak spots: result and completion, inputs and preconditions, consistency
How to improve
- Your own cases (evals/evals.json, 4–6 real requests with expected answers): the full check would then run those instead of a model-drafted suite.
- A spec.yaml with trigger phrases and assertions — a behaviour contract for CI; `skilltest init` writes a template.
Guard findings · 0
✓ No critical or high findings
Files scanned: 2. Evidence is masked. Grey chips explain why severity was lowered.
Against the Agent Skills spec
✓ No remarks against the Agent Skills spec
Process rating: all ten parameters 55/100
- 0Result and completion. Does not say what the result is
- 0Inputs and preconditions. Does not say what the process needs to start
- 0Progress reporting. Says nothing while it works
- 30Running it twice. 5 mutating operations with no state check
- 40Consistency. Frontmatter name (invoice-generator) differs from the folder (nova-invoice-generator)
- 50When it triggers. No condition that starts the skill
- 55Failures and branches. 1 branches
- 100Tools and files. No external tools needed
- 100Steps. 23 steps
- 100Execution cost. Instruction body is 492 tokens
Everything here is measured from the skill text rather than judged by a model, so the numbers are checkable. A parameter weighs more when it is a more common reason for the process to stall.
Quality signals
- +5Description has no quoted example phrases that should trigger the skill
- +3Description length 983: 120–800 characters recommended
- +3Output format is not stated: the model decides each time
- +4No input/output examples
- +1No license
- +2Single-language instructions
- +4Description says when NOT to use the skill
- +4Structure: 6 headings
- +3Step-by-step instructions: 23 items
Quality base 70; lint remarks subtract, signals add up to 100. Result: 81.