Fin Daily Pulse
evolution-foundation/evo-nexus
Daily financial pulse — queries Stripe (MRR, charges, churn, failures), Omie (accounts payable/receivable, invoices) and Evo Academy (courses, subscriptions, Summit tickets) to generate an HTML…
A skill your agent uses when issuing an invoice, quote, or credit note and moving it draft-to-paid — the legally required VAT fields, gap-free numbering, per-country e-invoicing mandates, dunning…
$ npx skills add ericrisco/rsc-harness --skill invoicing -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install ericrisco/rsc-harness invoicing --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/ericrisco/rsc-harness.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/invoicing .claude/skills/invoicing && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "invoicing" agent skill from https://github.com/ericrisco/rsc-harness/tree/main/skills/invoicing into .claude/skills/invoicing/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "invoicing", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/ericrisco/rsc-harness/tree/main/skills/invoicingType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add ericrisco/rsc-harness --skill invoicing -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install ericrisco/rsc-harness invoicing --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ericrisco/rsc-harness.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/invoicing .agents/skills/invoicing && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "invoicing" agent skill from https://github.com/ericrisco/rsc-harness/tree/main/skills/invoicing into .agents/skills/invoicing/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "invoicing", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add ericrisco/rsc-harness --skill invoicing -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install ericrisco/rsc-harness invoicing --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ericrisco/rsc-harness.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/invoicing .cursor/skills/invoicing && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "invoicing" agent skill from https://github.com/ericrisco/rsc-harness/tree/main/skills/invoicing into .cursor/skills/invoicing/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "invoicing", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/ericrisco/rsc-harness.git --path skills/invoicing--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add ericrisco/rsc-harness --skill invoicing -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install ericrisco/rsc-harness invoicing --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ericrisco/rsc-harness.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/invoicing .gemini/skills/invoicing && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "invoicing" agent skill from https://github.com/ericrisco/rsc-harness/tree/main/skills/invoicing into .gemini/skills/invoicing/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "invoicing", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install ericrisco/rsc-harness invoicingInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add ericrisco/rsc-harness --skill invoicing -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/ericrisco/rsc-harness.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/invoicing .github/skills/invoicing && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "invoicing" agent skill from https://github.com/ericrisco/rsc-harness/tree/main/skills/invoicing into .github/skills/invoicing/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "invoicing", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add ericrisco/rsc-harness --skill invoicing -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install ericrisco/rsc-harness invoicing --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ericrisco/rsc-harness.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/invoicing .opencode/skills/invoicing && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "invoicing" agent skill from https://github.com/ericrisco/rsc-harness/tree/main/skills/invoicing into .opencode/skills/invoicing/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "invoicing", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
invoicingA skill your agent uses when issuing an invoice, quote, or credit note and moving it draft-to-paid — the legally required VAT fields, gap-free numbering, per-country e-invoicing mandates, dunning…
Invoicing is an agent skill from ericrisco/rsc-harness. Use when issuing an invoice, quote, or credit note and moving it draft-to-paid — the legally required VAT fields, gap-free numbering, per-country e-invoicing mandates, dunning overdue ones. NOT recording a paid invoice in the books (that is bookkeeping), NOT Stripe SDK plumbing (that is stripe), NOT setting the price (that is pricing).
Its SKILL.md is about 2.7k tokens, which your agent loads only when the skill is triggered. The skill folder holds 11 other files, including scripts and reference files (for example `evals/README.md`, `evals/cases.yaml` and `references/dunning-ladder.md`).
It sits in Business, Finance & HR, covering Accounting and bookkeeping and Forms and invoices. It works with Stripe. The repository describes itself as: Your agent invents things because it has no memory, and can't touch your database because it has no arms. rsc is the meta-harness that gives it both, plus the trade to know the… The licence is MIT.
Read from SKILL.md and the folder at commit e3d5b33. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Ships 3 files in scripts/ (Shell), which the agent can run.
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Invoicing loads about 2.7k tokens when it runs, and up to ~4.6k if it reads all its reference files. Until then it costs about 88 tokens; SKILL.md has 1,291 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.
The full file from ericrisco/rsc-harness at commit e3d5b33, republished under its MIT licence (© ericrisco). 1,291 words, ~2,708 tokens.
.claude/skills/invoicing/SKILL.md (or your agent's skills folder). This skill also uses 7 other files; get the full folder from GitHub.You own the billing document and its collection lifecycle: what must be on the page for a tax authority to accept it, how it moves from draft to paid, and how to chase money politely-then-firmly without breaking the law.
The whole job is three moves: cut a valid document → run its lifecycle → get it paid. Skip the validity step and the customer can't deduct the VAT. Skip the lifecycle and you lose track of who owes what. Skip the chase and you work for free.
This skill answers "make a valid bill and collect it." When the ask is something else, stop and route:
| The ask | Goes to |
|---|---|
| Record a paid invoice in the books, reconcile it to the bank line | ../bookkeeping/SKILL.md |
Wire up the Stripe SDK, keys, or invoice.paid webhook as code | ../stripe/SKILL.md / ../webhooks/SKILL.md |
| Decide what to charge — rate card, margin, price list | ../pricing/SKILL.md |
| Draft the MSA / SOW / engagement terms the invoice bills against | ../contracts/SKILL.md |
| Write the pre-sale pitch that persuades before money is owed | ../proposals/SKILL.md |
| Get a signature on a document | ../e-signature/SKILL.md |
| Runway / P&L / cash-flow cadence | ../finance-ops/SKILL.md |
Sharpest near-miss: "reconcile this paid invoice / record it in the accounts" reads invoicing-shaped but is bookkeeping. The moment money is recorded against the books, it leaves your hands.
Before anything, decide which document you are issuing — they use different number sequences and carry different obligations.
| Document | Use when | Number sequence | Creates a payment obligation? |
|---|---|---|---|
| Quote / estimate (presupuesto, pressupost) | Before work starts, to propose a price | Its own quote series (not the invoice series) | No — it is an offer, not a debt |
| Invoice (factura) | Work delivered or goods supplied, money is owed | The continuous invoice series | Yes |
| Proforma | A "please-pay-this" preview that is not yet a tax document | Not the invoice series | No — not a fiscal invoice |
| Credit note / corrective (factura rectificativa) | To cancel or reduce an invoice already sent | Its own corrective series, referencing the original number | Reduces an existing obligation |
Never delete or renumber a finalized invoice to fix it — issue a corrective that points back at the original (see the lifecycle rule below).
An EU VAT invoice that won't let the customer deduct VAT is a broken invoice. Every one of these must be present (source: European Commission VAT Invoicing rules, accessed 2026-06-02):
Sequential numbering is law, not style. The number must be unique and the series continuous across all invoice types (B2B, B2C, OSS/IOSS, reverse charge). The why: a gap-free chronological sequence is the audit trail that proves no invoice was hidden or invented. Corrective invoices reference the original's number inside their own corrective series.
Bad 2024-001, 2024-002, 2024-004 ← 003 is missing → auditor asks "what did you delete?"
Bad INV-5, EST-6, INV-7 ← quote EST-6 must not consume an invoice slot
Good 2024-001, 2024-002, 2024-003 ← continuous invoice series
Good REC-2024-001 → refs invoice 2024-002 ← corrective points back, own seriesThe EU is moving from "any readable invoice" to structured e-invoices (machine-readable XML, EN 16931 semantic model, Peppol BIS transport). A PDF — even a perfect one — is not a structured e-invoice. Gate every new invoice: which country + B2B/B2G/B2C + by what date (source: Fiskaly/Fonoa e-invoicing roadmaps; EC eInvoicing country pages; accessed 2026-06-02):
If the customer is in a country past its mandate date, do not email a PDF — generate the structured format. Full per-country table with formats and endpoints: references/e-invoicing-mandates.md.
Every invoice moves through a fixed set of states. Track which state each one is in — that is your accounts-receivable.
| State | Meaning | Action to move it forward |
|---|---|---|
draft | Not yet issued; editable | Finalize → assigns the sequential number |
open / sent | Finalized and delivered; awaiting payment | Send, then watch the due date |
| overdue | Past due date, still open | Start the dunning ladder |
paid | Settled in full | Hand off to ../bookkeeping/SKILL.md to record |
void | Cancelled before any payment | Void (keeps the number; never delete) |
uncollectible | Written off after collection failed | Mark; consider a credit note |
The rule that catches people: you never delete a finalized invoice. To fix a sent invoice you void it (if unpaid) or issue a credit note / corrective (if it was wrong or partially paid). Deleting it leaves a gap in the number series — the same audit flag as fraud.
Overdue invoices get a day-based cadence with escalating tone, not random nagging. The skeleton (full bilingual templates in references/dunning-ladder.md):
Your legal lever (source: EU Directive 2011/7/EU on late payment; EC Late Payment page; accessed 2026-06-02): for B2B/B2G commercial invoices, default payment term is 30 days (extendable to 60 for B2B). On default, statutory interest accrues automatically at the ECB reference rate + at least 8 percentage points, plus a fixed EUR 40 recovery-cost compensation per invoice, owed without proof of cost. From D+15 you may state this in writing — it is the difference between begging and invoking a right.
When the user wants invoices sent by software rather than by hand, use Stripe. SDK is stripe-node v19.1.0; invoice status enum is draft → open → paid | uncollectible | void (source: Stripe API Reference; context7 /stripe/stripe-node v19.1.0; accessed 2026-06-02).
// 1. add line items to the customer, then 2. create the invoice
await stripe.invoiceItems.create({
customer: customerId,
amount: 120000, // cents — 12h consulting @ EUR 100/h
currency: 'eur',
description: '12h consulting',
});
const invoice = await stripe.invoices.create({
customer: customerId,
collection_method: 'send_invoice', // email the customer (vs charge_automatically)
days_until_due: 30, // due-date / payment terms
});
// 3. finalize assigns the sequential number, 4. send emails it
await stripe.invoices.finalizeInvoice(invoice.id);
await stripe.invoices.sendInvoice(invoice.id);Quotes follow draft → finalize (assigns number) → accept, which auto-generates the invoice. Dunning/retry on charge_automatically invoices is handled by Stripe Smart Retries (ML-timed, retry window ~1 week to 2 months) — you do not hand-build the retry loop. For the integration plumbing itself — keys, idempotency, the invoice.paid webhook — hand to ../stripe/SKILL.md and ../webhooks/SKILL.md.
| Anti-pattern | Why it's wrong | Do instead |
|---|---|---|
| Reusing or skipping an invoice number | Gap/duplicate in the series is an audit flag | One continuous gap-free series; void, don't delete |
| Letting a quote consume an invoice number | Pollutes the fiscal series with non-debts | Separate quote series; only finalized invoices take invoice numbers |
| Deleting a finalized invoice to "fix" it | Creates a number gap = looks like concealment | Void if unpaid, else issue a credit note referencing it |
| Emailing a PDF where structured e-invoice is mandated | A PDF is not EN 16931 / Peppol — legally non-compliant | Check the jurisdiction gate; emit the structured format |
| No due date / no payment terms | No basis to claim overdue or interest | Always set due date + terms (default 30 days B2B/B2G) |
| Chasing payment with no statutory basis | Weak, easily ignored | From D+15 cite ECB+8pp interest + EUR 40 fixed cost |
| Omitting the per-rate VAT breakdown | Customer can't deduct VAT; invalid invoice | Net + rate + VAT amount per rate, plus total |
| Recording the payment in the books yourself | Wrong skill, double-entry not your job | Hand the paid invoice to ../bookkeeping/SKILL.md |
© ericrisco, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 7 other files (scripts, references) in skills/invoicing of ericrisco/rsc-harness.
Open the folder on GitHubat commit e3d5b33
Invoicing next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Invoicing this skillericrisco/rsc-harness | 174 | — | ~2.7k | Automated safety check: Pass | MIT | |
| Fin Daily Pulseevolution-foundation/evo-nexus | 545 | — | ~1.7k | Automated safety check: Pass | Custom licence | |
| Odoo Month End Closeerpipe-org/mcp-odoo | 421 | — | ~753 | Automated safety check: Pass | MIT | |
| Journalkazukinagata/shinkoku | 365 | — | ~2.3k | Automated safety check: Pass | MIT | |
| Invoice Organizerdavila7/claude-code-templates | 32k | 12 repos | ~2.9k | Automated safety check: Pass | MIT | |
| Purchase Accountingsickn33/agentic-awesome-skills | 47k | 1 repos | ~5.1k | Automated safety check: Pass | MIT |
evolution-foundation/evo-nexus
Daily financial pulse — queries Stripe (MRR, charges, churn, failures), Omie (accounts payable/receivable, invoices) and Evo Academy (courses, subscriptions, Summit tickets) to generate an HTML…
erpipe-org/mcp-odoo
Drive a month-end accounting close on Odoo through odoo-mcp — AR/AP aging, open-item and draft-invoice review, reconciliation checklists, and chatter documentation — with human sign-off at every…
kazukinagata/shinkoku
This skill should be used when the user wants to record bookkeeping entries (仕訳), import transaction data from CSV files, receipts, or invoices, or manage their general ledger.
davila7/claude-code-templates
Automatically organizes invoices and receipts for tax preparation by reading messy files, extracting key information, renaming them consistently, and sorting them into logical folders.
sickn33/agentic-awesome-skills
Purchase register: supplier, invoice, gross amount, VAT and TDS, net payable, ledger account and payment balance.
sickn33/agentic-awesome-skills
Sales register: customer, invoice, gross amount, discount, VAT and TDS, net receivable, credit terms and balance.
ericrisco/rsc-harness
A skill your agent uses when designing or analyzing a controlled experiment — falsifiable hypothesis, sample size from an MDE, reading significance/CI/power, CUPED, or rescuing tests that won't go…
ericrisco/rsc-harness
A skill your agent uses when making a web UI conform to WCAG 2.2 Level AA — axe-core or Lighthouse a11y violations, keyboard operability, focus management, ARIA roles/names/live regions, contrast…
ericrisco/rsc-harness
A skill your agent uses when running or fixing paid acquisition on Google or Meta — campaign structure (Performance Max, Demand Gen, Search, Advantage+), platform-fit creative, budget/scaling rules…
ericrisco/rsc-harness
A skill your agent uses when measuring whether an LLM or agent system actually got better and gating merges on it: golden sets, fixing an inflated LLM-as-judge, scoring RAG (faithfulness, contextual…
ericrisco/rsc-harness
A skill your agent uses when a creative goal must become a finished media file: pick and order generative-media models per modality — AI voiceover, image-to-video clips, score — then glue them with…
ericrisco/rsc-harness
A skill your agent uses when instrumenting product or web analytics — GA4/PostHog SDK wiring, event taxonomy, funnels, double-counted events, consent gating, PII scrubbing.
Works with
Categories
A skill your agent uses when issuing an invoice, quote, or credit note and moving it draft-to-paid — the legally required VAT fields, gap-free numbering, per-country e-invoicing mandates, dunning…. Invoicing is an agent skill from ericrisco/rsc-harness. Use when issuing an invoice, quote, or credit note and moving it draft-to-paid — the legally required VAT fields, gap-free numbering, per-country e-invoicing mandates, dunning overdue ones.
Invoicing fits situations like: issuing an invoice; credit note and moving it draft-to-paid — the legally required VAT fields; gap-free numbering; per-country e-invoicing mandates.
Run `npx skills add ericrisco/rsc-harness --skill invoicing -a claude-code`. Or copy the skill folder (skills/invoicing in ericrisco/rsc-harness) into .claude/skills/invoicing in your project. Claude Code loads it when a task matches its description.
Run `npx skills add ericrisco/rsc-harness --skill invoicing -a codex`. Or copy the skill folder (skills/invoicing in ericrisco/rsc-harness) into .agents/skills/invoicing in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add ericrisco/rsc-harness --skill invoicing -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/invoicing, .gemini/skills/invoicing, .github/skills/invoicing and .opencode/skills/invoicing in your project.
Going by SKILL.md and its folder, Invoicing needs a shell for the scripts in its folder. Our summary lists: A Bash shell.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Invoicing is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.7k tokens (SKILL.md is roughly 11k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 1.9k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Invoicing: Fin Daily Pulse (evolution-foundation/evo-nexus, 545 stars), Odoo Month End Close (erpipe-org/mcp-odoo, 421 stars), Journal (kazukinagata/shinkoku, 365 stars) and Invoice Organizer (davila7/claude-code-templates, 32k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
ericrisco (a GitHub user) maintains it in ericrisco/rsc-harness, which has 174 GitHub stars. The repository holds 233 skills in this directory. The repository was last updated on October 7, 2026.
Source: ericrisco/rsc-harness on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.