Skill343 estrellas del repoactualizado 2mo ago
income-tax
The income-tax Claude Code skill calculates income tax amounts from business income and various tax deductions, assuming a completed financial settlement from the settlement skill. Use this skill after finishing the settlement process to compute tax liability, which then feeds into the e-tax skill for filing tax returns through Japan's online submission system.
Instalar en Claude Code
Copiargit clone --depth 1 https://github.com/kazukinagata/shinkoku /tmp/income-tax && cp -r /tmp/income-tax/skills/income-tax ~/.claude/skills/income-taxDespués abre una sesión nueva de Claude Code; el skill carga automáticamente.
Definición
SKILL.md
# 所得税計算(Income Tax Calculation)
事業所得・各種控除から所得税額を計算するスキル。
settlement スキルで決算書の作成が完了していることを前提とする。
計算結果は `/e-tax` スキル(Claude in Chrome)で確定申告書等作成コーナーに入力する。
## 設定の読み込み(最初に実行)
1. `shinkoku.config.yaml` を Read ツールで読み込む
2. ファイルが存在しない場合は `/setup` スキルの実行を案内して終了する
3. 設定値を把握し、相対パスは CWD を基準に絶対パスに変換する:
- `db_path`: CLI スクリプトの `--db-path` 引数に使用
- `output_dir`: 進捗ファイル等の出力先ベースディレクトリ
- 各ディレクトリ: ファイル参照時に使用
### パス解決の例
config の `db_path` が `./shinkoku.db` で CWD が `/home/user/tax-2025/` の場合:
- `shinkoku tax calc-income --input /home/user/tax-2025/output/income_input.json`
## 進捗情報の読み込み
設定の読み込み後、引継書ファイルを読み込んで前ステップの結果を把握する。
1. `.shinkoku/progress/progress-summary.md` を Read ツールで読み込む(存在する場合)
2. 以下の引継書を Read ツールで読み込む(存在する場合):
- `.shinkoku/progress/06-settlement.md`
- `.shinkoku/progress/02-assess.md`
- `.shinkoku/progress/05-furusato.md`
3. 読み込んだ情報を以降のステップで活用する(ユーザーへの再質問を避ける)
4. ファイルが存在しない場合はスキップし、ユーザーに必要情報を直接確認する
## 基本方針
- settlement スキルで青色申告決算書が完成しているか確認してから開始する
- 所得の計算 → 控除の計算 → 税額の計算 の順序で進める
- 各ステップの計算結果をユーザーに提示し、確認を得る
- references/form-b-fields.md の各欄に正しく値を設定する
- 端数処理ルールを厳守する:
- 課税所得: 1,000円未満切捨て(国税通則法118条)
- 復興特別所得税: 1円未満切捨て(復興財源確保法13条)
- ㊺ 所得税及び復興特別所得税の額: 端数処理なし
- 申告納税額(納付の場合のみ): 100円未満切捨て(国税通則法119条)
- 還付金: 1円単位・切捨てなし(国税通則法120条)
## 前提条件の確認
所得税計算を開始する前に以下を確認する:
1. **青色申告決算書が完成しているか**: settlement スキルの出力を確認する
2. **納税者プロファイルの読み込み**: `uv run shinkoku profile --config {config_path}` で config から納税者情報を取得する
- 氏名・住所・税務署名 → 確定申告書等作成コーナーへの入力に使用
- 寡婦/ひとり親・障害者・勤労学生の状態 → 人的控除の計算に使用
3. **事業所得以外の所得**: 給与所得・雑所得・配当所得・一時所得等がある場合は情報を収集する
4. **源泉徴収票**: 給与所得がある場合は取り込みを案内する
5. **各種控除の適用状況**: 適用可能な控除を網羅的に確認する
6. **予定納税額**: assess で確認済みの予定納税額を取得する
- 未確認の場合は、前年の確定申告書(㊺欄)から判定する
- 予定納税額は源泉徴収税額とは別に管理する
7. **分離課税の確認**: 株式・FX の分離課税(第三表)は対象外。該当する場合は税理士への相談を案内する
## 必須確認チェックリスト(スキップ不可)
所得税計算を開始する前に、以下の項目が**すべて確認済み**であることを検証する。
config・引継書に記載がない項目は、ユーザーに直接確認してから先に進む。
- [ ] **家族構成**: 配偶者の有無・扶養親族の有無を確認済みか?
- 未確認 → ユーザーに確認し、ステップ1.5 で詳細を登録する
- 確認済み(該当なし)→ ステップ1.5 をスキップ可
- [ ] **住宅ローン控除**: 適用有無を確認済みか?
- 未確認 → ユーザーに確認する
- 適用あり(初年度)→ ステップ3.7 で明細書を作成する
- [ ] **予定納税**: 有無・金額を確認済みか?
- 未確認 → 前年の確定申告書(㊺欄)から判定するようユーザーに確認する
- 金額未確定 → `estimated_tax_payment` パラメータに正しい値を設定できるまで進まない
## ステップ1: 源泉徴収票の取り込み
給与所得がある場合、源泉徴収票からデータを取り込む。
### `import_data.py import-withholding` の呼び出し
```bash
shinkoku import import-withholding --input withholding_input.json
```
入力 JSON:
```json
{
"file_path": "path/to/withholding_slip.pdf"
}
```
出力:
```json
{
"payer_name": "支払者名",
"payment_amount": 5000000,
"deduction_amount": 3560000,
"income_tax_withheld": 100000,
"social_insurance": 700000,
"life_insurance": 50000,
"spouse_deduction": 0
}
```
#### 画像ファイルの場合: OCR 読み取り
`extracted_text` が空の場合(画像ファイルまたはスキャン PDF)、画像の読み取りは `/reading-withholding` スキルを使用する。
スキルの指示に従い、デュアル検証(2つの独立した読み取り結果の照合)を行って結果を取得する。
**結果照合:** 両方の読み取り結果から `payment_amount`, `withheld_tax`, `social_insurance` を比較する
**一致の場合:** そのまま採用。「2つの独立した読み取りで結果が一致しました」と報告
**不一致の場合:** ユーザーに元画像パスと両方の結果を提示し、正しい方を選択してもらう:
- 差異のあるフィールドを明示する
- A を採用 / B を採用 / 手動入力 の3択を AskUserQuestion で提示する
**取り込み後の検算(必須):**
OCR 結果の整合性を検証するため、「所得控除の額の合計額」と各内訳の合計を照合する:
```
検算: 所得控除の額の合計額 ≟ 社会保険料等の金額 ← 小規模企業共済等掛金を含む(内数)
+ 生命保険料の控除額
+ 地震保険料の控除額
+ 配偶者(特別)控除の額
+ 扶養控除額 ← 人数×単価から算出(特定63万/老人48万or58万/その他38万)
+ 障害者控除 ← 人数×単価から算出(一般27万/特別40万/同居特別75万)
+ 寡婦控除(27万)またはひとり親控除(35万) ← 該当時
+ 勤労学生控除(27万) ← 該当時
+ 基礎控除の額 ← 源泉徴収票の記載額を使用。未記載なら所得と年度から算出
```
注意:
- 「(うち小規模企業共済等掛金の額)」は社会保険料等の金額の**内数**。別途加算すると二重計上になる
- 扶養控除・障害者控除は金額欄ではなく人数欄で記載されるため、人数×単価で算出する
- 基礎控除の額は源泉徴収票に記載があればその値を使う。未記載の場合は合計所得と年度に応じて算出する(令和7・8年は特例加算あり、令和9年以降は一律58万)
- **一致の場合:** 各フィールドの OCR 精度が確認できたものとして採用する
- **不一致の場合:** 差額を明示し、どのフィールドが誤読の可能性があるかユーザーに提示する。元画像と突き合わせて修正する
**その他の確認事項:**
1. 複数の勤務先がある場合は各社分を取り込む
2. 年末調整済みの控除を確認し、追加控除の有無を判定する
## ステップ1.5: 扶養親族・配偶者情報の確認
所得控除の計算前に、扶養親族の情報を収集する。
まず DB に登録済みのデータを確認し、不足があれば追加入力する。
### DB からの読み込み
1. `ledger.py get-spouse --db-path DB_PATH` で配偶者情報を取得する(登録済みの場合)
2. `ledger.py list-dependents --db-path DB_PATH` で扶養親族のリストを取得する(登録済みの場合)
### 未登録の場合の確認項目
1. **配偶者**: 配偶者の有無と年間所得金額を確認する
- 所得48万円以下 → 配偶者控除(38万円)
- 所得48万円超133万円以下 → 配偶者特別控除(段階的)
- 納税者の所得が1,000万円超 → 配偶者控除なし
- 確認後 `ledger.py set-spouse --db-path DB_PATH --input spouse.json` で DB に登録する
2. **扶養親族**: 以下の情報を収集する
- 氏名、続柄、生年月日、年間所得、障害の有無、同居の有無
- 16歳未満: 扶養控除なし(児童手当対象)
- 16歳以上: 一般扶養38万円
- 19歳以上23歳未満: 特定扶養63万円
- 70歳以上: 老人扶養48万円(同居58万円)
- 確認後 `ledger.py add-dependent --db-path DB_PATH --input dependent.json` で各人を DB に登録する
3. **マイナンバーの収集**(申告書B第二表に記載が必要):
- 配偶者のマイナンバー(12桁)
- 扶養親族(16歳以上)全員のマイナンバー
- 16歳未満の子供のマイナンバー(住民税に関する事項の記載に必要)
- 取扱注意: DB に保存するが、ツール出力やログには表示しない
4. **事業専従者の確認**:
- 配偶者が青色事業専従者として給与を受けている場合 → 配偶者控除の対象外
- 扶養親族が青色事業専従者・白色事業専従者の場合 → 扶養控除の対象外
- 該当する場合は控除計算から除外し、ユーザーに明示する
5. **障害者控除**: 扶養親族に障害がある場合
- 一般障害者: 27万円、特別障害者: 40万円、同居特別障害者: 75万円
**重要: 16歳未満の扶養親族も必ず登録する**
16歳未満の子供は扶養控除の対象外だが、以下の理由で申告書への記載が必要:
- 住民税の非課税限度額の判定(扶養人数に16歳未満も含む)
- 住民税の均等割の非課税判定
- 申告書B第二表「住民税に関する事項 - 16歳未満の扶養親族」欄への記載
`ledger.py add-dependent` で登録する際、16歳未満でもスキップせずに登録すること。
## ステップ1.6: iDeCo・小規模企業共済の確認
掛金払込証明書がある場合は `import_data.py import-deduction-certificate` で取り込むことができる。
1. iDeCo(個人型確定拠出年金)の年間掛金を確認する
- 小規模企業共済等掛金払込証明書から金額を確認
- 全額が所得控除(上限: 自営業者は年額81.6万円)
2. 小規模企業共済の掛金がある場合も同様に確認する
#### 画像ファイルの場合: OCR 読み取り
`extracted_text` が空の場合(画像ファイルまたはスキャン PDF)、画像の読み取りは `/reading-deduction-cert` スキルを使用する。
スキルの指示に従い、デュアル検証(2つの独立した読み取り結果の照合)を行って結果を取得する。
**結果照合:** 両方の読み取り結果から `annual_premium`, `certificate_type` を比較する
**一致の場合:** そのまま採用。「2つの独立した読み取りで結果が一致しました」と報告
**不一致の場合:** ユーザーに元画像パスと両方の結果を提示し、正しい方を選択してもらう:
- 差異のあるフィールドを明示する
- A を採用 / B を採用 / 手動入力 の3択を AskUserQuestion で提示する
## ステップ1.7: 医療費明細の集計
医療費控除を適用する場合、明細を集計する。
##