Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add kazukinagata/shinkoku --skill reading-invoicegit clone --depth 1 https://github.com/kazukinagata/shinkokuWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/kazukinagata/shinkoku/reading-invoice)<a href="https://agentmods.dev/skills/kazukinagata/shinkoku/reading-invoice"><img src="https://agentmods.dev/badge/skills/kazukinagata/shinkoku/reading-invoice/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/kazukinagata/shinkoku/reading-invoice"><img src="https://agentmods.dev/badge/skills/kazukinagata/shinkoku/reading-invoice.svg" alt="Reviewed on agentmods" width="80" height="20"></a>- Socket pass
- Snyk pass
What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00047 | $0.01268 |
| Opus 5 | $0.00023 | $0.00634 |
| Sonnet 5 | $0.00009 | $0.00254 |
| Haiku 4.5 | $0.00005 | $0.00127 |
Grade A, and why
reading-invoice scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 11d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
This is a copy
84% identical to reading-deduction-cert — 101 lines differ, which has more behind it and is treated as the original. This page carries a canonical link to it rather than competing with it.
What it actually says
請求書 画像読み取り
請求書の画像を読み取り、構造化データとして返すスキル。
PDF ファイルの場合
ファイルが PDF(.pdf)の場合、画像 OCR の前にテキスト抽出を試みる。
shinkoku pdf extract-text --file-path <path>を実行する- 抽出テキストに必要な情報(金額・日付・請求元等)が含まれていれば、テキストから構造化データを生成する
- テキストが不十分(スキャン PDF 等)の場合は
shinkoku pdf to-image --file-path <path> --output-dir <dir>で PNG に変換し、以下の画像読み取りフローに進む
画像読み取り方法
推奨: デュアル検証(並列2コンテキスト)
精度を高めるため、同じ画像を2つの独立したコンテキストで並列に読み取り、結果を照合する。
-
2つの独立した読み取りを実行する: サブエージェントが使える環境では、2つのサブエージェントを並列で起動し、それぞれ独立に画像を読み取る。 各サブエージェントには以下の「基本ルール」と「出力フォーマット」をプロンプトとして渡し、画像ファイルパスを指定する。
-
結果照合: 両方の読み取り結果から主要フィールド(金額等)を比較する。
-
一致の場合: そのまま採用。「2つの独立した読み取りで結果が一致しました」と報告する。
-
不一致の場合: ユーザーに元画像パスと両方の結果を提示し、正しい方を選択してもらう:
- 差異のあるフィールドを明示する
- A を採用 / B を採用 / 手動入力 の3択を提示する
フォールバック(サブエージェント非対応の場合)
サブエージェントが利用できない環境では、以下の手順で読み取る:
- 画像ファイルを直接 Read ツールで読み取る
- 以下の「基本ルール」と「出力フォーマット」に従ってデータを抽出する
- 抽出結果をユーザーに提示し、必ず目視確認を依頼する
⚠ デュアル検証が利用できないため、必ずユーザーに目視確認を依頼してください。
基本ルール
- 画像ファイルは Read ツールで読み取る(Claude Vision が自動的に画像を認識する)
- 金額は必ず int(円単位の整数)で返す。カンマや「円」は除去する
- 日付は YYYY-MM-DD 形式で返す
- 和暦は西暦に変換する(令和7年 → 2025、令和6年 → 2024、平成31年 → 2019)
- 読み取れないフィールドは UNKNOWN(文字列)または 0(金額)とする
- 複数ファイルを渡された場合は全て順に処理してまとめて返す
出力フォーマット
画像を読み取り、以下の形式で返す:
---INVOICE_DATA---
vendor: 請求元名
invoice_number: 請求書番号
invoice_registration_number: 適格請求書発行事業者番号(T+13桁)
date: YYYY-MM-DD
total_amount: 請求金額合計(int)
tax_amount: 消費税額(int)
items:
- description: 品目・サービス名
amount: 金額(int)
quantity: 数量(int)
tax_rate: 税率(10 or 8)
---END---
抽出のポイント
- 請求金額の合計(税込)を最優先で抽出する
- 消費税額を確認する(10% と 8% 軽減税率の区分があれば区別する)
- インボイス番号(T+13桁の適格請求書発行事業者登録番号)の有無を確認する
- 請求書番号がある場合は抽出する
- 請求元(vendor)の名称を抽出する
- 日付は請求日を使用する(発行日と請求日が異なる場合は請求日を優先)
- 明細行は読み取れる範囲で抽出する(不明な場合は items を空にする)
複数ファイルの処理
複数のファイルパスが指示された場合:
- Glob ツールでファイル一覧を取得する(パターンが指示された場合)
- 各ファイルを Read ツールで順に読み取る
- 全ファイルの結果をまとめて返す(各結果の前にファイル名を記載する)
## file1.jpg
---INVOICE_DATA---
...
---END---
## file2.jpg
---INVOICE_DATA---
...
---END---
What ships with it
1 file beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 11d ago First seen · 106 lines · 47 tokens per session scan A 99a5f850c6a6
reading-invoice is a skill published in the GitHub repository kazukinagata/shinkoku (359 stars, last pushed 2d ago), licensed MIT. It adds 47 tokens to every session and 1,268 once invoked, about $0.0002 per session on Opus 5. A static security scan graded it A with 0 findings. It is 84% identical to reading-deduction-cert, differing in 101 lines, and is treated as a copy.
Other skills, from other repositories
add-pdf-report
Internal implementation skill invoked by /add-native for app-generated PDF report workflows using expo-print and, when present, expo-sharing.
add-pdf-viewer
Internal implementation skill invoked by /add-native for native PDF control workflows. Handles HTTPS and file URI PDF viewing with @microsoft/power-apps-native-pdf-viewer 0.2.9+.
jangbu-import
A data-import workflow for turning bank files, card records, spreadsheets, receipts, tax invoices, and statement PDFs into a standard set of 13 transaction fields. OCR, or optical character recognition, is used to read information from document images and PDFs.
process-my-statements
Process a batch of PDF or CSV bank and credit-card statements end to end: extract every transaction (parallel Haiku subagents), canonicalize the party names, categorize against your locked chart of accounts (parallel Sonnet subagents), detect inter-account transfers, and assemble a reviewed Google Sheets workbook with…
log-an-expense
Log a single expense from a forwarded receipt — image, PDF, or email — and produce one categorized expense plus one balanced journal entry. I extract vendor, date, amount, and line items via multimodal read, pick an account code against your locked chart of accounts (anything below 0.90 confidence lands in Suspense…
extract-bank-statement
Extract bank PDF/CSV to transactions.json with running-balance proof (pull bank lines with balance proof). Prefer CSV; Maybank Islamic PDF adapter when needed.