kazukinagata/journal
> This skill should be used when the user wants to record bookkeeping entries (仕訳), import transaction data from CSV files, receipts, or invoices, or "仕訳登録", "CSVを取り込む", "レシートを読み込む", "請求書を取り込む", "帳簿を付ける", "経費を記録", "売上を記録", "仕訳を修正", "仕訳を検索", "仕訳を削除", "取引を登録", "帳簿の初期化".
npx skills add https://github.com/kazukinagata/shinkoku --skill journal
CSV・レシート・請求書からデータを取り込み、ユーザー確認のうえ仕訳を登録するスキル。
帳簿の初期化、仕訳の検索・修正・削除も本スキルで対応する。
本スキルでは以下の CLI スクリプトを使用する:
shinkoku ledger <subcommand> [args]shinkoku import <subcommand> [args]すべてのコマンドは JSON を stdout に出力する。入力はコマンドライン引数または --input <json_file> で渡す。
shinkoku.config.yaml を Read ツールで読み込む/setup スキルの実行を案内して終了するdb_path: CLI スクリプトの --db-path 引数に使用output_dir: 進捗ファイル等の出力先ベースディレクトリconfig の db_path が ./shinkoku.db で CWD が /home/user/tax-2025/ の場合、CLI スクリプトには絶対パス /home/user/tax-2025/shinkoku.db を --db-path で渡す。init, journal-add, journal-batch-add, search, journal-update, journal-delete すべてに同じ絶対パスを使用する。
設定の読み込み後、引継書ファイルを読み込んで前ステップの結果を把握する。
.shinkoku/progress/progress-summary.md を Read ツールで読み込む(存在する場合).shinkoku/progress/01-setup.md仕訳入力を開始する前に以下を確認する:
init コマンドで初期化を案内する初回利用時、または新しい会計年度を開始する際に帳簿を初期化する。
init コマンドshinkoku ledger init \
--db-path /path/to/shinkoku.db \
--fiscal-year 2025
ユーザーが持つ取引データの形式に応じて適切なインポートツールを選択する。
csv コマンド)クレジットカード明細・銀行取引明細・会計ソフトのエクスポートデータ等を読み込む。
shinkoku import csv \
--file-path /path/to/transactions.csv
戻り値(JSON):
headers: 検出されたカラムヘッダ一覧rows: パースされた各行のデータencoding: 自動検出されたエンコーディングrow_count: 行数取り込み後の処理手順:
勘定科目の推定ルール:
receipt コマンド)紙のレシート・領収書の画像ファイルからOCRでデータを抽出する。
shinkoku import receipt \
--file-path /path/to/receipt.jpg
重要: 画像の読み取りは対応する reading-* スキルに委任する。
receipt コマンドでファイルの存在を確認する/reading-receipt スキルを使用する。スキルの指示に従い、デュアル検証(2つの独立した読み取り結果の照合)を行って結果を取得する。
結果照合: 両方の読み取り結果から total_amount, date, vendor を比較する
一致の場合: そのまま採用。「2つの独立した読み取りで結果が一致しました」と報告
不一致の場合: ユーザーに元画像パスと両方の結果を提示し、正しい方を選択してもらう:
---RECEIPT_DATA--- ブロックの内容を解析するreceipts/*.jpg, receipts/*.png)receipt コマンドで各ファイルの存在を確認する/reading-receipt スキルを使用する。スキルの指示に従い、デュアル検証(2つの独立した読み取り結果の照合)を行って結果を取得する。
結果照合: ファイル単位で両方の読み取り結果の total_amount, date, vendor を比較する
一致の場合: そのまま採用。「2つの独立した読み取りで結果が一致しました」と報告
不一致の場合: 不一致のファイルについてユーザーに元画像パスと両方の結果を提示し、正しい方を選択してもらう:
journal-batch-add コマンドで一括登録するinvoice コマンド)PDFの請求書からテキストを抽出する。
shinkoku import invoice \
--file-path /path/to/invoice.pdf
戻り値(JSON):
vendor: 請求元date: 請求日due_date: 支払期日amount: 請求金額tax_amount: 消費税額items: 明細行raw_text: 抽出生テキストextracted_text が空の場合(画像ファイルまたはスキャン PDF)、画像の読み取りは /reading-invoice スキルを使用する。
スキルの指示に従い、デュアル検証(2つの独立した読み取り結果の照合)を行って結果を取得する。
結果照合: 両方の読み取り結果から total_amount, tax_amount, date, vendor を比較する
一致の場合: そのまま採用。「2つの独立した読み取りで結果が一致しました」と報告
不一致の場合: ユーザーに元画像パスと両方の結果を提示し、正しい方を選択してもらう:
取り込み後の処理手順:
CSVインポートのフローに重複チェックを組み込む:
check-imported コマンドでファイルのハッシュを確認 shinkoku import check-imported \
--db-path DB --file-path /path/to/file.csv
journal-batch-add が自動的に重複を検出--force を付けて再実行record-source コマンドでインポート履歴を記録する shinkoku import record-source \
--db-path DB --file-path /path/to/file.csv --source-type csv
決算処理の前に check-duplicates コマンドを実行し、重複の疑いのある仕訳ペアを一覧表示する。
shinkoku ledger check-duplicates \
--db-path DB --fiscal-year 2025
ユーザーに確認の上、不要な重複は journal-delete コマンドで削除する。
ユーザーが確認したデータを帳簿に登録する。
journal-add)# journal.json に JournalEntry を JSON で記述
shinkoku ledger journal-add \
--db-path DB --fiscal-year 2025 --input journal.json
journal.json の形式:
{
"date": "2025-01-15",
"description": "摘要テキスト",
"lines": [
{"side": "debit", "account_code": "5200", "amount": 1000},
{"side": "credit", "account_code": "1100", "amount": 1000}
]
}
journal-batch-add)CSV取り込み等で複数の仕訳を一度に登録する場合に使用する。
# entries.json に JournalEntry の配列を記述
shinkoku ledger journal-batch-add \
--db-path DB --fiscal-year 2025 --input entries.json [--force]
登録前の確認事項:
journal-batch-add を実行する以下を検証し、不備があれば登録前に警告する:
登録済みの仕訳を検索する。
search コマンド# search_params.json に JournalSearchParams を記述
shinkoku ledger search \
--db-path DB --input search_params.json
search_params.json の形式:
{
"fiscal_year": 2025,
"date_from": "2025-01-01",
"date_to": "2025-03-31",
"account_code": "5200",
"description_contains": "Amazon"
}
検索結果の表示:
journal-update)shinkoku ledger journal-update \
--db-path DB --fiscal-year 2025 --journal-id 42 --input updated.json
journal-delete)shinkoku ledger journal-delete \
--db-path DB --journal-id 42
借方: 売掛金(1010) / 貸方: 売上(4001) 金額: 110,000円 税率: 10%
摘要: ○○社 Webサイト制作費 請求書No.2025-001
借方: 消耗品費(5190) / 貸方: 普通預金(1002) 金額: 5,500円 税率: 10%
摘要: Amazon ワイヤレスキーボード
借方: 旅費交通費(5130) / 貸方: 事業主借(3010) 金額: 1,200円 税率: 10%
摘要: JR 新宿→渋谷 打ち合わせ往復
借方: 事業主貸(1200) / 貸方: 普通預金(1002) 金額: 50,000円
摘要: 生活費引き出し
仕訳入力が完了したら、以下を案内する:
settlement スキルで決算整理・決算書作成を行うtrial-balance コマンドで残高試算表を確認して仕訳漏れがないか検証する: shinkoku ledger trial-balance \
--db-path DB --fiscal-year 2025
サマリー提示後、以下のファイルを Write ツールで出力する。
これにより、セッションの中断や Compact が発生しても次のステップで結果を引き継げる。
.shinkoku/progress/04-journal.md に以下の形式で出力する:
---
step: 4
skill: journal
status: completed
completed_at: "{当日日付 YYYY-MM-DD}"
fiscal_year: {tax_year}
---
# 仕訳入力・帳簿管理の結果
## インポート済みソース
| ソース名 | 件数 | インポート日 |
|---------|------|------------|
| {CSV名やレシート等} | {件数} | {日付} |
## 登録済み仕訳
- 総仕訳件数: {件数}件
## 主要勘定科目の残高(試算表スナップショット)
| 勘定科目 | コード | 残高 |
|---------|--------|------|
| {科目名} | {コード} | {残高}円 |
(売上、主要経費、現預金、売掛金、買掛金など主要科目を記載)
## 重複チェック結果
- チェック実施: {済み/未実施}
- 重複の疑い: {なし/あり(件数)}
## 未処理の項目
- {あれば記載、なければ「なし」}
## 次のステップ
/settlement で決算整理・決算書作成を行う
.shinkoku/progress/progress-summary.md を更新する(存在しない場合は新規作成):
ファイルを出力したらユーザーに以下を伝える:
.shinkoku/progress/ に保存しました。セッションが中断しても次のスキルで結果を引き継げます。」Take kazukinagata/journal from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.