{"id":"5b58c198-1195-4701-ad68-ce63cd08f50e","shortId":"eemKHU","kind":"skill","title":"furusato","tagline":"This skill manages furusato nozei (hometown tax) donations. Use when the user wants to register donation data, read donation receipts, check deduction limits, or manage their furusato nozei records. Trigger phrases: \"ふるさと納税\", \"furusato\", \"寄附金\", \"寄付金\", \"ふるさと納税の控除\", \"寄附金受領証明書\", \"ワン","description":"# ふるさと納税管理（Furusato Nozei Management）\n\nふるさと納税の寄附金受領証明書を読み取り、寄附データを管理し、控除額を計算するスキル。\n\n## 設定の読み込み（最初に実行）\n\n1. `shinkoku.config.yaml` を Read ツールで読み込む\n2. ファイルが存在しない場合は `/setup` スキルの実行を案内して終了する\n3. 設定値を把握する:\n   - `db_path`: CLI スクリプトの `--db-path` 引数に使用（CWD基準で絶対パスに変換）\n   - `tax_year`: 対象年度\n   - `furusato_receipts_dir`: 受領証明書の格納ディレクトリ（任意）\n\n## 進捗情報の読み込み\n\n設定の読み込み後、引継書ファイルを読み込んで前ステップの結果を把握する。\n\n1. `.shinkoku/progress/progress-summary.md` を Read ツールで読み込む（存在する場合）\n2. 以下の引継書を Read ツールで読み込む（存在する場合）:\n   - `.shinkoku/progress/01-setup.md`\n3. 読み込んだ情報を以降のステップで活用する（ユーザーへの再質問を避ける）\n4. ファイルが存在しない場合はスキップし、ユーザーに必要情報を直接確認する\n\n## ステップ1: 受領証明書の画像読み取り\n\n### 1-1. ファイルの確認\n\n`import_data.py furusato-receipt --file-path PATH` でファイルの存在を確認する。\n\n### 1-2. 画像の読み取り\n\n**重要: 画像の読み取りは対応する reading-* スキルに委任する。**\n\n#### 単一の受領証明書の場合\n\n画像ファイルの読み取りには `/reading-receipt` スキルを使用する。\nスキルの指示に従い、デュアル検証（2つの独立した読み取り結果の照合）を行って結果を取得する。\n\n**結果照合:** 両方の読み取り結果から `amount`, `date`, `municipality_name` を比較する\n\n**一致の場合:** そのまま採用。「2つの独立した読み取りで結果が一致しました」と報告\n\n**不一致の場合:** ユーザーに元画像パスと両方の結果を提示し、正しい方を選択してもらう:\n- 差異のあるフィールドを明示する\n- A を採用 / B を採用 / 手動入力 の3択を AskUserQuestion で提示する\n\n読み取り結果の `---FURUSATO_RECEIPT_DATA---` ブロックから以下の情報を取得する:\n\n- **自治体名**: 寄附先の市区町村名\n- **都道府県名**: 寄附先の都道府県\n- **寄附金額**: 円単位の整数\n- **寄附日**: YYYY-MM-DD 形式\n- **受領証明書番号**: 記載があれば\n\n#### 複数の受領証明書を一括処理する場合\n\n1. Glob ツールで受領証明書画像の一覧を取得する（例: `furusato_receipts/*.jpg`, `furusato_receipts/*.png`）\n2. `shinkoku import furusato-receipt --file-path PATH` で各ファイルの存在を確認する\n3. 画像ファイルの読み取りには `/reading-receipt` スキルを使用する。\n   スキルの指示に従い、デュアル検証（2つの独立した読み取り結果の照合）を行って結果を取得する。\n\n   **結果照合:** ファイル単位で両方の読み取り結果の `amount`, `date`, `municipality_name` を比較する\n\n   **一致の場合:** そのまま採用。「2つの独立した読み取りで結果が一致しました」と報告\n\n   **不一致の場合:** 不一致のファイルについてユーザーに元画像パスと両方の結果を提示し、正しい方を選択してもらう:\n   - 差異のあるフィールドを明示する\n   - A を採用 / B を採用 / 手動入力 の3択を AskUserQuestion で提示する\n\n4. 各証明書の結果をまとめてユーザーに提示する\n\n### 1-3. ユーザーに確認\n\n抽出した情報を一覧表示し、正しいか確認する。修正があればユーザーの入力を反映する。\n\n## ステップ2: 寄附データの登録\n\n確認が完了したら `furusato.py add` で登録する。\n\n```bash\nshinkoku furusato add --db-path DB --input FILE\n```\n\n入力 JSON ファイルのフォーマット:\n```json\n{\n  \"fiscal_year\": 2025,\n  \"municipality_name\": \"自治体名\",\n  \"amount\": 30000,\n  \"date\": \"2025-06-15\",\n  \"municipality_prefecture\": \"都道府県\",\n  \"receipt_number\": \"受領証明書番号\",\n  \"one_stop_applied\": false\n}\n```\n\n### ワンストップ特例の確認\n\n登録時に「ワンストップ特例を申請しましたか？」と確認する。\n\n**重要な注意**: 副業で確定申告する場合、ワンストップ特例は**無効化**される。\n確定申告時に全額を寄附金控除として申告する必要がある。\n\n## ステップ3: 複数の証明書を繰り返し処理\n\n「他に受領証明書はありますか？」と確認し、あればステップ1~2を繰り返す。\n\n## ステップ4: 集計と控除上限チェック\n\nすべての寄附データを登録したら `furusato.py summary` で集計する。\n\n```bash\nshinkoku furusato summary --db-path DB --fiscal-year YEAR [--estimated-limit N]\n```\n\n表示する情報:\n- 寄附先自治体数と合計金額\n- 所得控除額（合計 - 2,000円）\n- ワンストップ特例申請数\n- 控除上限の推定（所得情報がある場合）\n\n### 控除上限の推定\n\n所得情報が把握できている場合は `tax_calc.py furusato-limit` で上限を推定する。\n\n```bash\nshinkoku tax furusato-limit --input FILE\n```\n\n上限超過の場合は警告を表示:\n「寄附合計額が推定上限を超えています。超過分は自己負担となります。」\n\n## ステップ5: 確定申告との関係\n\n以下を説明する:\n- 副業で確定申告する場合、ワンストップ特例は使えない\n- 確定申告で寄附金控除（所得控除）として申告する\n- 所得税からの控除 = (寄附合計 - 2,000) x 所得税率\n- 住民税からの控除は別途計算される（特例分含む）\n\n## リファレンスファイル参照ガイド\n\n| 質問カテゴリ | 参照ファイル |\n|-------------|-------------|\n| ふるさと納税の税制ルール・計算式 | `references/furusato-tax-rules.md` |\n| 上限額・返礼品・タイミング・相談全般 | `references/furusato-consultation-guide.md` |\n\n## 次のステップの案内\n\n- `income-tax` スキルで所得税の計算に進む（寄附金控除が自動反映される）\n- 他の控除（医療費控除等）がある場合は先にそちらを処理する\n\n## 引継書の出力\n\nサマリー提示後、以下のファイルを Write ツールで出力する。\nこれにより、セッションの中断や Compact が発生しても次のステップで結果を引き継げる。\n\n### ステップ別ファイルの出力\n\n`.shinkoku/progress/05-furusato.md` に以下の形式で出力する:\n\n```\n---\nstep: 5\nskill: furusato\nstatus: completed\ncompleted_at: \"{当日日付 YYYY-MM-DD}\"\nfiscal_year: {tax_year}\n---\n\n# ふるさと納税管理の結果\n\n## 登録済み寄附一覧\n\n| 自治体名 | 都道府県 | 金額 | 寄附日 | ワンストップ |\n|---------|---------|------|--------|------------|\n| {自治体名} | {都道府県} | {金額}円 | {日付} | {申請済み/未申請} |\n\n## 集計\n\n- 寄附先自治体数: {件数}\n- 寄附合計額: {合計金額}円\n- 控除額（合計 - 2,000円）: {控除額}円\n\n## 控除上限との比較\n\n- 推定控除上限: {上限額}円（所得情報がある場合）\n- 上限超過: {なし/あり（超過額: {金額}円）}\n\n## 次のステップ\n\n/income-tax で所得税の計算に進む\n```\n\n寄附がない場合（スキップ）は status を `skipped` とし、内容は「該当なし」と記載する。\n\n### 進捗サマリーの更新\n\n`.shinkoku/progress/progress-summary.md` を更新する（存在しない場合は新規作成）:\n\n- YAML frontmatter: fiscal_year、last_updated（当日日付）、current_step: furusato\n- テーブル: 全ステップの状態を更新（furusato を completed または skipped に）\n- 次のステップの案内を記載\n\n### 出力後の案内\n\nファイルを出力したらユーザーに以下を伝える:\n- 「引継書を `.shinkoku/progress/` に保存しました。セッションが中断しても次のスキルで結果を引き継げます。」\n- 次のステップの案内","tags":["furusato","shinkoku","kazukinagata","agent-skills","bookkeeping","claude-code-plugin","claude-code-skills","japan","python","tax-filing"],"capabilities":["skill","source-kazukinagata","skill-furusato","topic-agent-skills","topic-bookkeeping","topic-claude-code-plugin","topic-claude-code-skills","topic-japan","topic-python","topic-tax-filing"],"categories":["shinkoku"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/kazukinagata/shinkoku/furusato","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add kazukinagata/shinkoku","source_repo":"https://github.com/kazukinagata/shinkoku","install_from":"skills.sh"}},"qualityScore":"0.619","qualityRationale":"deterministic score 0.62 from registry signals: · indexed on github topic:agent-skills · 339 github stars · SKILL.md body (4,289 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-05-02T18:53:48.737Z","embedding":null,"createdAt":"2026-04-18T22:02:42.898Z","updatedAt":"2026-05-02T18:53:48.737Z","lastSeenAt":"2026-05-02T18:53:48.737Z","tsv":"'-06':260 '-1':101 '-15':261 '-2':113 '-3':225 '/income-tax':441 '/reading-receipt':121,193 '/setup':56 '000':349 '000円':316,426 '1':49,80,100,112,170,224 '2':54,86,180,315,348,425 '2025':252,259 '2つの独立した読み取りで結果が一致しました':136,208 '2つの独立した読み取り結果の照合':125,197 '3':58,92,191 '30000':257 '4':95,222 '5':387 'add':234,239 'amount':129,201,256 'appli':270 'askuserquest':148,220 'b':144,216 'bash':236,295,327 'check':22 'cli':62 'compact':381 'complet':391,392,471 'current':464 'cwd基準で絶対パスに変換':68 'data':18,153 'date':130,202,258 'db':60,65,241,243,300,302 'db-path':64,240,299 'dd':165,398 'deduct':23 'dir':74 'donat':9,17,20 'estim':308 'estimated-limit':307 'fals':271 'file':108,187,245,334 'file-path':107,186 'fiscal':250,304,399,459 'fiscal-year':303 'frontmatt':458 'furusato':1,5,28,34,41,72,105,151,174,177,184,238,297,324,331,389,466,469 'furusato-limit':323,330 'furusato-receipt':104,183 'furusato.py':233,292 'glob':171 'hometown':7 'import':182 'import_data.py':103 'incom':367 'income-tax':366 'input':244,333 'jpg':176 'json':247,249 'last':461 'limit':24,309,325,332 'manag':4,26,43 'mm':164,397 'municip':131,203,253,262 'n':310 'name':132,204,254 'nozei':6,29,42 'number':266 'one':268 'path':61,66,109,110,188,189,242,301 'phrase':32 'png':179 'prefectur':263 'read':19,52,83,88,117 'receipt':21,73,106,152,175,178,185,265 'record':30 'references/furusato-consultation-guide.md':364 'references/furusato-tax-rules.md':359 'regist':16 'shinkoku':181,237,296,328 'shinkoku.config.yaml':50 'shinkoku/progress':479 'shinkoku/progress/01-setup.md':91 'shinkoku/progress/05-furusato.md':384 'shinkoku/progress/progress-summary.md':81,454 'skill':3,388 'skill-furusato' 'skip':448,473 'source-kazukinagata' 'status':390,446 'step':386,465 'stop':269 'summari':293,298 'tax':8,69,329,368,401 'tax_calc.py':322 'topic-agent-skills' 'topic-bookkeeping' 'topic-claude-code-plugin' 'topic-claude-code-skills' 'topic-japan' 'topic-python' 'topic-tax-filing' 'trigger':31 'updat':462 'use':10 'user':13 'want':14 'write':377 'x':350 'yaml':457 'year':70,251,305,306,400,402,460 'yyyi':163,396 'yyyy-mm-dd':162,395 '~2':287 'あり':436 'あればステップ1':286 'がある場合は先にそちらを処理する':373 'が発生しても次のステップで結果を引き継げる':382 'これにより':379 'される':280 'すべての寄附データを登録したら':291 'そのまま採用':135,207 'でファイルの存在を確認する':111 'で上限を推定する':326 'で各ファイルの存在を確認する':190 'で所得税の計算に進む':442 'で提示する':149,221 'で登録する':235 'で集計する':294 'とし':449 'として申告する':345 'と報告':137,209 'と確認し':285 'と確認する':275 'と記載する':452 'なし':435 'に':474 'に以下の形式で出力する':385 'に保存しました':480 'の3択を':147,219 'は':445 'ふるさと納税':33 'ふるさと納税の寄附金受領証明書を読み取り':44 'ふるさと納税の控除':37 'ふるさと納税の税制ルール':357 'ふるさと納税管理':40 'ふるさと納税管理の結果':403 'または':472 'を':51,82,447,470 'を採用':143,145,215,217 'を更新する':455 'を比較する':133,205 'を繰り返す':288 'を行って結果を取得する':126,198 'サマリー提示後':375 'スキップ':444 'スキルで所得税の計算に進む':369 'スキルに委任する':118 'スキルの実行を案内して終了する':57 'スキルの指示に従い':123,195 'スキルを使用する':122,194 'スクリプトの':63 'ステップ1':98 'ステップ2':230 'ステップ3':282 'ステップ4':289 'ステップ5':338 'ステップ別ファイルの出力':383 'セッションが中断しても次のスキルで結果を引き継げます':481 'セッションの中断や':380 'タイミング':362 'ツールで出力する':378 'ツールで受領証明書画像の一覧を取得する':172 'ツールで読み込む':53,84,89 'テーブル':467 'デュアル検証':124,196 'ファイルが存在しない場合は':55 'ファイルが存在しない場合はスキップし':96 'ファイルのフォーマット':248 'ファイルの確認':102 'ファイルを出力したらユーザーに以下を伝える':477 'ファイル単位で両方の読み取り結果の':200 'ブロックから以下の情報を取得する':154 'ユーザーに元画像パスと両方の結果を提示し':139 'ユーザーに必要情報を直接確認する':97 'ユーザーに確認':226 'ユーザーへの再質問を避ける':94 'リファレンスファイル参照ガイド':354 'ワン':39 'ワンストップ':409 'ワンストップ特例の確認':272 'ワンストップ特例は':278 'ワンストップ特例は使えない':342 'ワンストップ特例を申請しましたか':274 'ワンストップ特例申請数':317 '一致の場合':134,206 '上限超過':434 '上限超過の場合は警告を表示':335 '上限額':360,431 '不一致のファイルについてユーザーに元画像パスと両方の結果を提示し':211 '不一致の場合':138,210 '両方の読み取り結果から':128 '他に受領証明書はありますか':284 '他の控除':371 '以下のファイルを':376 '以下の引継書を':87 '以下を説明する':340 '件数':419 '任意':76 '住民税からの控除は別途計算される':352 '例':173 '修正があればユーザーの入力を反映する':229 '入力':246 '全ステップの状態を更新':468 '内容は':450 '円':413,422,428,432,439 '円単位の整数':160 '出力後の案内':476 '副業で確定申告する場合':277,341 '医療費控除等':372 '単一の受領証明書の場合':119 '参照ファイル':356 '受領証明書の格納ディレクトリ':75 '受領証明書の画像読み取り':99 '受領証明書番号':167,267 '各証明書の結果をまとめてユーザーに提示する':223 '合計':314,424 '合計金額':421 '存在しない場合は新規作成':456 '存在する場合':85,90 '寄付金':36 '寄附がない場合':443 '寄附データの登録':231 '寄附データを管理し':45 '寄附先の市区町村名':156 '寄附先の都道府県':158 '寄附先自治体数':418 '寄附先自治体数と合計金額':312 '寄附合計':347 '寄附合計額':420 '寄附合計額が推定上限を超えています':336 '寄附日':161,408 '寄附金':35 '寄附金受領証明書':38 '寄附金控除が自動反映される':370 '寄附金額':159 '対象年度':71 '差異のあるフィールドを明示する':141,213 '引数に使用':67 '引継書の出力':374 '引継書を':478 '引継書ファイルを読み込んで前ステップの結果を把握する':79 '当日日付':394,463 '形式':166 '所得情報がある場合':319,433 '所得情報が把握できている場合は':321 '所得控除':344 '所得控除額':313 '所得税からの控除':346 '所得税率':351 '手動入力':146,218 '抽出した情報を一覧表示し':227 '控除上限との比較':429 '控除上限の推定':318,320 '控除額':423,427 '控除額を計算するスキル':46 '推定控除上限':430 '日付':414 '最初に実行':48 '未申請':416 '次のステップ':440 '次のステップの案内':365,482 '次のステップの案内を記載':475 '正しいか確認する':228 '正しい方を選択してもらう':140,212 '無効化':279 '特例分含む':353 '申請済み':415 '画像の読み取り':114 '画像の読み取りは対応する':116 '画像ファイルの読み取りには':120,192 '登録時に':273 '登録済み寄附一覧':404 '相談全般':363 '確定申告で寄附金控除':343 '確定申告との関係':339 '確定申告時に全額を寄附金控除として申告する必要がある':281 '確認が完了したら':232 '結果照合':127,199 '自治体名':155,255,405,410 '表示する情報':311 '複数の受領証明書を一括処理する場合':169 '複数の証明書を繰り返し処理':283 '計算式':358 '記載があれば':168 '設定の読み込み':47 '設定の読み込み後':78 '設定値を把握する':59 '該当なし':451 '読み取り結果の':150 '読み込んだ情報を以降のステップで活用する':93 '質問カテゴリ':355 '超過分は自己負担となります':337 '超過額':437 '返礼品':361 '進捗サマリーの更新':453 '進捗情報の読み込み':77 '都道府県':264,406,411 '都道府県名':157 '重要':115 '重要な注意':276 '金額':407,412,438 '集計':417 '集計と控除上限チェック':290","prices":[{"id":"f962d341-401a-4683-bb54-7afb48f49768","listingId":"5b58c198-1195-4701-ad68-ce63cd08f50e","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"kazukinagata","category":"shinkoku","install_from":"skills.sh"},"createdAt":"2026-04-18T22:02:42.898Z"}],"sources":[{"listingId":"5b58c198-1195-4701-ad68-ce63cd08f50e","source":"github","sourceId":"kazukinagata/shinkoku/furusato","sourceUrl":"https://github.com/kazukinagata/shinkoku/tree/main/skills/furusato","isPrimary":false,"firstSeenAt":"2026-04-18T22:02:42.898Z","lastSeenAt":"2026-05-02T18:53:48.737Z"}],"details":{"listingId":"5b58c198-1195-4701-ad68-ce63cd08f50e","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"kazukinagata","slug":"furusato","github":{"repo":"kazukinagata/shinkoku","stars":339,"topics":["agent-skills","bookkeeping","claude-code-plugin","claude-code-skills","japan","python","tax-filing"],"license":"mit","html_url":"https://github.com/kazukinagata/shinkoku","pushed_at":"2026-03-21T04:08:44Z","description":"確定申告自動化 AI エージェントプラグイン — 帳簿管理から e-Tax 入力代行まで","skill_md_sha":"944f572200c61201832ccae300bae9bc8324dc10","skill_md_path":"skills/furusato/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/kazukinagata/shinkoku/tree/main/skills/furusato"},"layout":"multi","source":"github","category":"shinkoku","frontmatter":{"name":"furusato","description":"This skill manages furusato nozei (hometown tax) donations. Use when the user wants to register donation data, read donation receipts, check deduction limits, or manage their furusato nozei records. Trigger phrases: \"ふるさと納税\", \"furusato\", \"寄附金\", \"寄付金\", \"ふるさと納税の控除\", \"寄附金受領証明書\", \"ワンストップ特例\"."},"skills_sh_url":"https://skills.sh/kazukinagata/shinkoku/furusato"},"updatedAt":"2026-05-02T18:53:48.737Z"}}