receipt-pattern
The Receipt Pattern — auditable AI agent actions in 10 lines. Every agent action leaves a receipt.
Install / Use
npx skills add vinceglakas/receipt-patternInstalls into whichever agent you are using.
SKILL.md
Installable skill definition
Quality Score
Category
Development & EngineeringSupported Platforms
Tags
Our assessment of receipt-pattern
receipt-pattern scores 68/100 on our quality scale, 3864th of 4,613 Development & Engineering skills we index.
Its SKILL.md is 4.2 KB long, well organised into 9 sections with 5 code examples: a solid amount of guidance for an agent.
It has no GitHub stars yet, so there is no community track record; judge it on its content.
Maintenance, license and trust
- The repository was last updated about 8 months ago. That is recent enough to be usable, but agent tooling moves fast, so check the instructions against your agent's current version.
- Our last check on 2026-10-19 found the source still online.
- No license is declared. By default that means all rights are reserved: you can read it, but reusing or redistributing it is not clearly permitted. Ask the author before building on it commercially.
- Its trust signals score 74/100, with 3 cautions from licensing, adoption, age or documentation. These come from repository metadata, not a code audit — read the skill file before letting an agent act on it.
Safety scan
No issues foundOur scan of the whole file found no instruction hijacking, hidden characters, credential access, data exfiltration or destructive commands. An AI review of the same text found nothing harmful.
AI review by kimi-k2.7-code on 2026-09-24. Automated pattern scan on 2026-09-24. It catches known dangerous patterns, not every risk — read a skill before letting an agent act on it.
receipt-pattern compared with similar skills
All 4 of these similar skills score higher than receipt-pattern; compare them before choosing.
| Skill | Score | Stars | Updated | Format |
|---|---|---|---|---|
| receipt-pattern (this skill)by vinceglakas | 68 | 0 | 8mo ago | SKILL.md |
| taste-skillby Leonxlnx | 100 | 110.6k | 1d ago | CLAUDE.md |
| ai-job-searchby ai-job-search-dev | 100 | 69.8k | today | CLAUDE.md |
| claude-howtoby luongnv89 | 100 | 46.6k | 2d ago | CLAUDE.md |
| algorithmic-artby anthropics | 100 | 177.9k | 44d ago | SKILL.md |
Frequently asked questions
- How do I install receipt-pattern?
- Run
npx skills add vinceglakas/receipt-pattern. The install tabs above show the steps for each supported agent. - Which AI agents does receipt-pattern work with?
- It is written for Universal, as a SKILL.md file. Other agents that read the same format can often use it too.
- Is receipt-pattern safe to use?
- Our scan of the whole file found no instruction hijacking, hidden characters, credential access, data exfiltration or destructive commands. An AI review of the same text found nothing harmful. It declares no license and scores 74/100 on trust signals. Skills are instructions an agent will follow, so read the file before installing it and do not approve commands you do not understand.
- Is receipt-pattern still maintained?
- The repository was last updated about 8 months ago. That is recent enough to be usable, but agent tooling moves fast, so check the instructions against your agent's current version.
Skill content
View source on GitHubReceipt Pattern — Agent Skill
You MUST write a receipt after every session that includes significant actions.
When to Write a Receipt
Write a receipt when your session includes ANY of:
- File writes, deletions, or renames
- API calls that mutate state (POST, PUT, DELETE, PATCH)
- Database writes or schema changes
- Sending emails, messages, or notifications
- Deployments or infrastructure changes
- Shell commands with side effects
Do NOT write receipts for read-only operations (file reads, GET requests, db queries, linting, grepping).
Receipt Location
receipts/YYYY-MM-DD-HH-MM-SS-[action-type].json
Example: receipts/2026-03-05-14-35-22-file-write.json
Use the primary action type. Create the receipts/ directory if it doesn't exist.
Receipt Schema
{
"id": "rcpt_<unix_timestamp>_<6_char_hex>",
"agentId": "<your agent name>",
"sessionId": "<session identifier>",
"timestamp": "<ISO 8601>",
"trigger": "manual | scheduled | webhook",
"status": "completed | failed | partial | rolled_back",
"durationMs": 0,
"actions": [
{
"sequence": 1,
"type": "file:write | file:delete | api:call | db:write | email:send | deploy | shell:exec",
"target": "<file path, URL, table name, etc.>",
"summary": "<plain English: what happened>",
"status": "success | failed | anomaly",
"isRollbackEligible": true,
"durationMs": 0,
"timestamp": "<ISO 8601>"
}
],
"anomalies": [
{
"actionSequence": 1,
"detail": "<what was unexpected>"
}
],
"rollbackAvailable": false,
"sdkVersion": "receipt-pattern/1.0.0"
}
Rules
- Sequence matters. Number actions in the order they occurred.
- Summaries are plain English. "Wrote 142 lines to src/index.ts" not "fs.writeFileSync called".
- Mark anomalies. If anything unexpected happened (file already existed, API returned non-200, retries needed), add it to
anomalies[]. - Rollback eligibility.
isRollbackEligible: truefor file writes/deletes (can restore from git).falsefor sent emails, API calls, deployments. rollbackAvailableistrueonly if ALL actions are rollback-eligible.- Always write the receipt as your LAST action before ending the session.
At Session Start
Check for existing receipts:
ls receipts/ 2>/dev/null | tail -5
If recent receipts exist, read the most recent one to understand what the last session did. This provides continuity.
TypeScript Template
import { writeFileSync, mkdirSync, existsSync } from 'fs';
interface ReceiptAction {
sequence: number;
type: string;
target: string;
summary: string;
status: 'success' | 'failed' | 'anomaly';
isRollbackEligible: boolean;
durationMs: number;
timestamp: string;
}
interface Receipt {
id: string;
agentId: string;
sessionId: string;
timestamp: string;
trigger: string;
status: 'completed' | 'failed' | 'partial' | 'rolled_back';
durationMs: number;
actions: ReceiptAction[];
anomalies: { actionSequence: number; detail: string }[];
rollbackAvailable: boolean;
sdkVersion: string;
}
function writeReceipt(receipt: Receipt): void {
if (!existsSync('receipts')) mkdirSync('receipts', { recursive: true });
const ts = new Date().toISOString().replace(/[T:]/g, '-').replace(/\..+/, '');
const mainType = receipt.actions[0]?.type.replace(':', '-') ?? 'unknown';
const path = `receipts/${ts}-${mainType}.json`;
writeFileSync(path, JSON.stringify(receipt, null, 2));
}
Python Template
import json, os, time, secrets
from datetime import datetime, timezone
def write_receipt(receipt: dict) -> str:
os.makedirs("receipts", exist_ok=True)
ts = datetime.now(timezone.utc).strftime("%Y-%m-%d-%H-%M-%S")
main_type = receipt["actions"][0]["type"].replace(":", "-") if receipt["actions"] else "unknown"
path = f"receipts/{ts}-{main_type}.json"
with open(path, "w") as f:
json.dump(receipt, f, indent=2)
return path
def make_receipt_id() -> str:
return f"rcpt_{int(time.time())}_{secrets.token_hex(3)}"
Completion Signal
Before ending ANY session that performed significant actions:
- Compile all actions into a receipt
- Write the receipt file
- Mention the receipt path in your final message
Related Skills
taste-skill
110.6kAgent skills that give coding agents taste: art direction, reference images and a browser check instead of generic AI pages
ai-job-search
69.8kThe job search that runs on your machine. AI job application framework built on Claude Code: evaluate postings, tailor CVs, write cover letters, prep interviews. Fork it and own it.
claude-howto
46.6kA visual, example-driven guide to Claude Code — from basic concepts to advanced agents, with copy-paste templates that bring immediate value.
algorithmic-art
177.9kCreating algorithmic art using p5.js with seeded randomness and interactive parameter exploration. Use this when users request creating art using code, generative art, algorithmic art, flow fields, or particle systems.
Trust signals
From repository metadata: license, adoption, age and documentation. Not a code audit — see the Safety scan above for what the skill file itself contains.
