e-tax

SKILL.md

e-Tax 電子申告 — ブラウザ自動化による確定申告書等作成コーナー入力

shinkoku で計算した確定申告データを、確定申告書等作成コーナー(https://www.keisan.nta.go.jp/)に Claude in Chrome を使ってブラウザ上で入力・提出するためのスキル。

前提条件

  • /income-tax スキルで所得税の計算が完了していること
  • /settlement スキルで決算書(PL/BS)の作成が完了していること
  • /consumption-tax スキルで消費税の計算が完了していること(該当者のみ)
  • shinkoku.config.yaml が設定済みであること
  • ブラウザ自動化ツールがいずれか利用可能であること(下記「ブラウザ自動化方式の選択」参照)

ブラウザ自動化方式の選択

確定申告書等作成コーナーへの入力には、以下の3つの方式がある。

方式 A: Claude in Chrome(推奨)

項目 内容
対象環境 Windows / macOS のネイティブ Chrome
前提 Claude in Chrome 拡張機能がインストール済み
利点 OS 検出の問題なし。追加設定不要

方式 B: Antigravity Browser Sub-Agent

項目 内容
対象環境 Windows / macOS / Linux(Antigravity IDE)
前提 Antigravity IDE がインストール済みで browser_subagent ツールが利用可能
利点 ネイティブ Chrome を使用するため OS 偽装不要。Linux でも動作

方式 C: Playwright CLI(フォールバック)

項目 内容
対象環境 WSL / Linux、または Claude in Chrome・Antigravity が利用できない環境
前提 @playwright/cli + Playwright CLI スキル + etax-stealth.js(OS 偽装スクリプト)
制限 headed モード必須(QR コード認証に物理操作が必要)

判定ロジック

1. Claude in Chrome のツール(browser_navigate 等)が利用可能か?
   → はい: 方式 A を使用
   → いいえ: 次へ

2. Antigravity の browser_subagent ツールが利用可能か?
   → はい: 方式 B を使用
   → いいえ: 次へ

3. Bash ツールで `playwright-cli` コマンドが利用可能か?
   → はい: 方式 C を使用(headed モードで起動)
   → いいえ: エラー表示

   エラーメッセージ:
   「確定申告書等作成コーナーへの入力には、Claude in Chrome、
    Antigravity Browser Sub-Agent、または Playwright CLI が必要です。
    セットアップ方法は README.md の『ブラウザ自動化』セクションを参照してください。」

方式 B 使用時の操作方法

Antigravity の browser_subagent は高レベルなタスク記述で操作する。 各ステップの入力操作を自然言語で記述し、browser_subagent に委任する。

例:

※ Antigravity はネイティブ Chrome を使用するため、etax-stealth.js による OS 偽装は不要。

方式 C 使用時のセッション開始手順

Playwright CLI でブラウザを開く際の手順:

  1. 環境変数を設定: PLAYWRIGHT_MCP_INIT_SCRIPT=skills/e-tax/scripts/etax-stealth.js
  2. ブラウザ起動: playwright-cli -s=etax open <url> --headed --browser=chrome
  3. 以降のコマンドは -s=etax セッション指定で実行

設定の読み込み(最初に実行)

  1. shinkoku.config.yaml を Read ツールで読み込む
  2. ファイルが存在しない場合は /setup スキルの実行を案内して終了する
  3. 設定値を把握する:
    • 納税者プロファイル(氏名・住所・マイナンバー等)
    • 事業情報(屋号・業種等)
    • 申告方法(e-Tax/郵送/窓口)

進捗情報の読み込み

  1. .shinkoku/progress/progress-summary.md を Read ツールで読み込む(存在する場合)
  2. 以下の引継書を Read ツールで読み込む(存在する場合):
    • .shinkoku/progress/06-settlement.md — 決算結果(PL/BS データ)
    • .shinkoku/progress/07-income-tax.md — 所得税計算結果
    • .shinkoku/progress/08-consumption-tax.md — 消費税計算結果
    • .shinkoku/progress/02-assess.md — 課税判定結果
  3. .shinkoku/progress/10-etax.mdstatus を確認する:
    • status: interrupted の場合 → 下記「中断・再開プロトコル」の 再開手順 に従う
    • status: completed の場合 → ユーザーに完了済みである旨を伝え、再実行の意図を確認する
  4. 計算結果がまだ存在しない場合は、先に /income-tax/settlement の実行を案内する

中断・再開プロトコル

全ステップ共通のルール。ユーザーが中断を要求した場合(「中断したい」「今日はここまで」「また続きから」等)、以下の手順に従う。

中断手順

  1. 現在のステップの入力内容を確認する — 未保存の入力がないか確認
  2. .data ファイルのダウンロードを案内する — AskUserQuestion で以下を表示:
作成コーナーの入力データを .data ファイルとして保存することを推奨します。
画面上部の「入力データの一時保存」ボタン(またはページ下部の「ここまでの入力データを保存する」リンク)
をクリックし、ファイルをダウンロードしてください。

ダウンロードが完了したら「ダウンロード済み」を選択してください。
  • 選択肢: 「ダウンロード済み」 / 「スキップ(保存しない)」
  • 「スキップ」が選ばれた場合は、次回は最初からやり直しになる可能性がある旨を警告する
  1. 進捗ファイルを記録する.shinkoku/progress/10-etax.md に以下の形式で Write ツールで出力:
---
step: 10
skill: e-tax
status: interrupted
last_completed_step: "{最後に完了したステップ番号(例: 3)}"
last_url: "{中断時のブラウザURL}"
data_file_saved: {true/false}
interrupted_at: "{当日日付 YYYY-MM-DD}"
fiscal_year: {tax_year}
---

# e-Tax 電子申告(中断)

## 中断時点の状況

- 最後に完了したステップ: ステップ{N}
- 中断時のURL: {URL}
- .data ファイル保存: {済/未}

## 次回の再開方法

1. `/e-tax` スキルを再実行する
2. .data ファイルがある場合は「保存データを利用して作成」から再開する
3. .data ファイルがない場合はステップ0からやり直す
  1. ユーザーに中断完了を報告 — 次回の再開方法を案内して終了する

再開手順

.shinkoku/progress/10-etax.mdstatus: interrupted を検出した場合:

  1. 中断時の情報(last_completed_step, data_file_saved)を読み取る
  2. AskUserQuestion で以下を表示:
前回の e-Tax 入力はステップ{N}で中断されています。

再開方法を選択してください。
  • 選択肢:
    • 「.data ファイルから再開する」(data_file_saved: true の場合のみ表示)
    • 「最初からやり直す」
    • 「中断記録を破棄して終了する」
  1. .data ファイルから再開する場合:

    • 確定申告書等作成コーナーのトップページにアクセス
    • 「保存データを利用して作成」→「作成再開」を選択
    • .data ファイルのアップロードを案内
    • 読み込み完了後、last_completed_step の次のステップから再開する
  2. 最初からやり直す場合:

    • ステップ0 から通常通り開始する

ステップ0: 必須データの検証

確定申告書等作成コーナーへの入力に必要なデータが揃っているか検証する。

検証項目

[1] 税額計算済み
    - .shinkoku/progress/07-income-tax.md が存在し、status: completed であること

[2] プロファイル完備
    - 氏名(姓・名)が登録されているか
    - 住所が登録されているか
    - 所轄税務署名が登録されているか

[3] 決算書データ
    - PL/BS の計算結果が取得可能であること

[4] 消費税(該当者のみ)
    - .shinkoku/progress/08-consumption-tax.md が存在し、status: completed であること

[5] サニティチェック
    - `tax_calc.py sanity-check` を実行する
    - error > 0 の場合: 入力を中止し、`/income-tax` スキルで修正を促す
    - warning > 0 の場合: ユーザーに確認してから続行する

画面遷移フロー全体像

┌─────────────────────────────────────────────────────┐
│ CC-AA-010 税務署への提出方法の選択                      │
│   マイナンバーカード: はい → スマホ: はい               │
│   → 「スマートフォンを使用する」                        │
└──────────────┬──────────────────────────────────────┘
┌─────────────────────────────────────────────────────┐
│ CC-AE-090 作成する申告書等の選択                        │
│   「決算書・収支内訳書(+所得税)」を選択              │
│   → doSubmitCMW0900(2,'25')                           │
│                                                         │
│   ※ 消費税のみ別途作成する場合:                        │
│   → doSubmitCMW0900(3,'25')                           │
└──────────────┬──────────────────────────────────────┘
┌─────────────────────────────────────────────────────┐
│ CC-AE-600 マイナポータル連携の選択                      │
│   → 「マイナポータル連携を利用しない」                  │
└──────────────┬──────────────────────────────────────┘
┌─────────────────────────────────────────────────────┐
│ CC-AA-024 e-Taxを行う前の確認                           │
│   → 「利用規約に同意して次へ」                          │
└──────────────┬──────────────────────────────────────┘
┌─────────────────────────────────────────────────────┐
│ CC-AA-440 QRコード認証                                  │
│   ★ ユーザーの物理的認証が必要                         │
│   スマートフォンでQRコード読み取り                      │
│   → マイナンバーカード認証完了後、自動遷移              │
└──────────────┬──────────────────────────────────────┘
       ┌───────┴───────┐
       ▼               ▼
  決算書コーナー    所得税コーナー
  (事業所得あり)    (給与のみ等)

決算書コーナーのフロー

/kessan/ac/r7/top → ac0300(種類選択)→ aa0200(P/L入力)
  → aa0100(青色特別控除)→ preAoiroCalc(B/S入力)
  → aa0700(所得確認)→ ac0500(住所氏名)→ 印刷/保存
  → 所得税コーナーへ遷移

所得税コーナーのフロー

SS-AA-010a(所得選択)→ SS-AA-050(収入入力ハブ)
  → SS-CA-010(給与入力) / SS-CB-xxx(事業所得) / 雑所得
  → SS-AA-070a(控除1/2)→ SS-AA-080(控除2/2)
  → SS-AA-090(計算結果確認)
  → SS-AC-010a(納付方法)→ SS-AC-020a(住民税等)
  → SS-AC-030(基本情報)→ SS-AC-040(マイナンバー)
  → ステップ5.5(意思決定ゲート)→ ステップ6(電子署名・送信プロトコル)

消費税コーナーのフロー(所得税完了後)

所得税完了 → 「消費税の申告書作成はこちら」

2割特例:
  ac0100(条件判定) → ac0250(所得区分選択) → 売上入力hub → 売上入力detail
  → 売上入力hub → 中間納付 → ac0300(計算結果) → 納税地等
  → ステップ6.5(電子署名・送信プロトコル)

簡易課税:
  ac0100(条件判定) → ac0250(所得区分・事業区分選択) → 売上入力hub → 売上入力detail
  → 売上入力hub → ak2140(仕入税額控除方式選択)※ → 中間納付 → ac0300(計算結果)
  → 納税地等 → ステップ6.5(電子署名・送信プロトコル)
  ※ 2種以上の事業がある場合のみ

一般課税:
  ac0100(条件判定) → ac0250(所得区分選択) → 売上・仕入入力hub → 売上入力detail
  → ai3610(決算額テーブル)※ → 売上・仕入入力hub → 中間納付 → ac0300(計算結果)
  → 納税地等 → ステップ6.5(電子署名・送信プロトコル)
  ※ 積上げ計算選択時のみ

ステップ1: 確定申告書等作成コーナーへのアクセス

開始URL

https://www.keisan.nta.go.jp/kyoutu/ky/sm/top_web#bsctrl

CC-AA-010: 税務署への提出方法の選択

画面番号: CC-AA-010

  1. 「マイナンバーカードをお持ちですか」→ 「はい」 ラジオボタンをクリック
  2. 「マイナンバーカード読み取りに対応したスマートフォン又はICカードリーダライタをお持ちですか」→ 「はい」 をクリック
  3. 「スマートフォンを使用する」 をクリック
    • JS: doSubmitCSW0100('1','3','/ky/sm/csw0100_myno_qr')

CC-AE-090: 作成する申告書等の選択

画面番号: CC-AE-090

選択肢(令和7年分):

  • 所得税doSubmitCMW0900(1,'25')
  • 決算書・収支内訳書(+所得税)doSubmitCMW0900(2,'25') ← 事業所得ありの場合
  • 消費税doSubmitCMW0900(3,'25')
  • 贈与税doSubmitCMW0900(4,'25')

判断基準:

  • 事業所得あり → 「決算書・収支内訳書(+所得税)」
  • 事業所得なし(給与のみ等)→ 「所得税」
  • 消費税は所得税完了後に別途作成

CC-AE-600: マイナポータル連携の選択

「マイナポータル連携を利用しない」 をクリック

CC-AA-024: e-Taxを行う前の確認

「利用規約に同意して次へ」 をクリック

※ 環境チェック termnalInfomationCheckOS_myNumberLinkage() が実行される。 Windows/macOS の Chrome/Edge であれば問題なし。

CC-AA-440: QRコード認証

★ ユーザー操作待ち — ブラウザ操作を一時停止

この画面ではエージェントがブラウザを操作してはならない。 AskUserQuestion ツールで一時停止し、ユーザーが認証完了を報告するまで絶対に次のステップに進まないこと。

AskUserQuestion で以下を表示する:

QRコード認証画面が表示されました。
スマートフォンのマイナポータルアプリでQRコードを読み取り、
マイナンバーカードで認証してください。

認証が完了したら「認証完了」を選択してください。
  • 選択肢: 「認証完了」 / 「QRコードが表示されない」
  • 「QRコードが表示されない」が選ばれた場合は下記の ⚠️ Playwright CLI 使用時の注意 を参照して対処する
  • ユーザーが「認証完了」を選択するまで、一切のブラウザ操作・画面遷移を行わない

認証完了後、自動的に次の画面に遷移する。

⚠️ Playwright CLI 使用時の注意: PLAYWRIGHT_MCP_INIT_SCRIPT 環境変数で etax-stealth.js を指定することで サーバーベイク関数パッチが自動適用されるが、QR コードが表示されない場合はコンソールで getClientOS() の 戻り値を確認し、'Windows' でなければ以下を手動実行する:

window.getClientOS = function() { return 'Windows'; };
displayQrcode();

ステップ2: 青色申告決算書の入力(事業所得がある場合)

⚠️ ネイティブダイアログ注意: 「次へ」クリック後に画面が遷移しない場合、ネイティブダイアログ(alert/confirm)が表示されている可能性がある。技術的な知見の「ネイティブダイアログの検知と対処」を参照。

/kessan/ac/pre/ac0300: 決算書の種類選択

ラジオボタン:

  • 青色申告決算書 ← 青色申告の場合
  • 収支内訳書(白色申告の場合)
  • 青色申告決算書(現金主義用)

/kessan/ac/aa0200: 損益計算書(P/L)の入力

URL: https://www.keisan.nta.go.jp/kessan/ac/aa0200#bsctrl

期間の入力

フィールド name デフォルト
開始月 sonekiKeisansyoFromMonth 1
開始日 sonekiKeisansyoFromDay 1
終了月 sonekiKeisansyoToMonth 12
終了日 sonekiKeisansyoToDay 31

売上(収入)金額

「入力」ボタン → /kessan/ac/aa0201 売上仕入月別入力サブページに遷移。

aa0201 のフィールド:

  • uriageKingaku1uriageKingaku12: 月別売上
  • siireKingaku1siireKingaku12: 月別仕入
  • kajisyohi: 家事消費等
  • zatusyunyu: 雑収入

合計: uriageKingakuGokei, siireKingakuGokei

経費(行8〜31)

科目 name(直接入力) 備考
8 租税公課 sozeiKoka
9 荷造運賃 nidukuriUntin
10 水道光熱費 suidoKonetuhi
11 旅費交通費 ryohiKotuhi
12 通信費 tusinhi
13 広告宣伝費 kokokuSendenhi
14 接待交際費 settaiKosaihi
15 損害保険料 songaiHokenryo
16 修繕費 syuzenhi
17 消耗品費 syomohinhi
18 減価償却費 「入力」→ /kessan/ac/init/aa0203
19 福利厚生費 fukuriKoseihi
20 給料賃金 「入力」→ /kessan/ac/aa0205
21 外注工賃 gaichukotin
22 利子割引料 「入力」→ /kessan/ac/aa0206
23 地代家賃 「入力」→ /kessan/ac/aa0207
24 貸倒金 kasidaorekin
25 税理士等の報酬 keihiNiniKingaku1 科目名: keihiNiniKamoku1
26 震災関連経費 keihiNiniKingaku2 科目名: keihiNiniKamoku2
27-30 任意科目 keihiNiniKingaku36 科目名: keihiNiniKamoku36
31 雑費 zappi

集計 hidden フィールド: keihiSannyugakuGokei, kyuryoTinginTotalGokei, risiWaribikiryoGokei, tidaiYatinGokei

繰戻額等

  • kurimodosiNiniKamoku1/kurimodosiNiniKingaku1
  • kurimodosiNiniKamoku2/kurimodosiNiniKingaku2

専従者給与

  • senjusyaKyuyoTotalGokei (hidden、「入力」ボタンで別画面)
  • kasidaoreKuriireGokei (hidden)

計算結果(自動)

  • disp_aoiroKojomaeSyotokuKingaku = 売上 - 売上原価 - 経費 + 繰戻額 - 専従者給与等

/kessan/ac/submit/aa0100: 青色申告特別控除

Q&A形式で控除額を選択:

選択肢 value 条件
10万円 2
55万円 3
65万円 1 e-Tax送信が必須。書面提出ではエラー KS-E10089

フィールド: aoiroTokubetuKojoSentakugaku

65万円を選択する場合、電子帳簿保存または e-Tax 送信が条件。

⚠️ ネイティブダイアログ注意: 65万円を選択して次へ進むと、書面提出の場合は KS-E10089(e-Tax送信が必要)のネイティブダイアログが表示される。画面が遷移しない場合はダイアログの有無をユーザーに確認すること。

貸借対照表(B/S)の入力

URL: /kessan/ac/preAoiroCalc

資産の部

配列形式: sisannobuTaisyohyoDetailDataList[N].kisyuKingaku / .kimatuKingaku

index 勘定科目
0 現金
1 当座預金
2 定期預金
3 その他の預金
4 受取手形
5 売掛金
6 有価証券
7 棚卸資産
8 前払金
9 貸付金
10 建物
11 建物附属設備
12 機械装置
13 車両運搬具
14 工具器具備品
15 土地
16-23 任意科目

負債・資本の部

配列形式: fusainobuTaisyohyoDetailDataList[N].kisyuKingaku / .kimatuKingaku

index 勘定科目
0 支払手形
1 買掛金
2 借入金
3 未払金
4 前受金
5 預り金
6 貸倒引当金
7-15 任意科目
16 元入金
17 事業主借
18 事業主貸
19 青色申告特別控除前の所得金額(P/Lから自動)

重要: 資産期末合計 = 負債期末合計 が必須(KS-E40003)

⚠️ ネイティブダイアログ注意: 資産期末合計と負債期末合計が一致しない状態で「次へ」を押すと、KS-E40003 のネイティブダイアログが表示される。画面が遷移しない場合はダイアログの有無をユーザーに確認すること。

/kessan/ac/ac0500: 住所・氏名等の入力

フィールド name
郵便番号 jitakuZip
都道府県 jitakuPrefectureId
市区町村以下 jitakuAddress
事業所住所(該当者) jimusyoAddress
提出先税務署 zeimusyoName
氏名漢字(姓) nameKanjiSei
氏名漢字(名) nameKanjiMei
業種名 gyosyuName
屋号 yago
提出年月日 teisyutuYear/teisyutuMonth/teisyutuDay

決算書完了 → 所得税コーナーへ

印刷・データ保存画面(/kessan/ac/submit/ac0600)の 「所得税の申告書作成はこちら」ボタンで所得税コーナーに遷移(住所氏名引継ぎ)。

⚠️ ネイティブダイアログ注意: このボタンをクリックすると KS-W10035(印刷を確認したか)のネイティブダイアログが表示される場合がある。画面が遷移しない場合はダイアログの有無をユーザーに確認し、「OK」をクリックするよう案内すること。


ステップ3: 所得税の申告書入力

⚠️ ネイティブダイアログ注意: 「次へ」クリック後に画面が遷移しない場合、ネイティブダイアログ(alert/confirm)が表示されている可能性がある。技術的な知見の「ネイティブダイアログの検知と対処」を参照。

SS-AA-010a: 申告する所得の選択等

URL: https://www.keisan.nta.go.jp/r7/syotoku/taM010a40_doInitialDisplay#bbctrl

生年月日

フィールド name
inOutDto.shnkkBirthymdYy
inOutDto.shnkkBirthymdMm
inOutDto.shnkkBirthymdDd

所得種類の選択(チェックボックス)

所得 name 典型的な選択
給与 inOutDto.kyuy 会社員: checked
事業(営業等) inOutDto.jgyoEgyoTo 個人事業主: checked
事業(農業) inOutDto.jgyoNogyo
不動産 inOutDto.fdosn
雑(業務・その他) inOutDto.ztsGyomSnt 暗号資産等: checked
公的年金等 inOutDto.kotkNnknKgyoNnknEtc
退職金 inOutDto.tasyku
株式等 inOutDto.hatoKbshkJyotRsh
先物取引 inOutDto.skmnTrhk
一時 inOutDto.ichj

shinkoku 対象の典型パターン:

  • 会社員+副業(事業所得): kyuy + jgyoEgyoTo + ztsGyomSnt(暗号資産あれば)
  • 給与所得のみ: kyuy

SS-AA-050: 収入・所得の入力ハブ

選択した所得種類ごとに入力リンクが表示される。各リンクをクリックして個別入力画面へ遷移。

SS-CA-010: 給与所得の源泉徴収票の入力

物理的な源泉徴収票との対応: 年末調整済みと年末調整未済で別フォーム・別ラベル体系。 年末調整済み = A〜L(12項目)、年末調整未済 = A〜E(5項目)。 物理的な源泉徴収票の「給与所得控除後の金額」「所得控除の額の合計額」欄は、 年末調整済みフォームでは入力不要だが、年末調整未済フォームでは B(自動)・C(入力) として存在する。

年末調整済みフォーム

URL: https://www.keisan.nta.go.jp/r7/syotoku/taS510a10_doAdd_nncyzm#bbctrl

主要入力フィールド
ラベル name 備考
A: 支払金額 inOutDto.shhraKngk 必須
B: 源泉徴収税額 inOutDto.gnsnTyosyuZegk 2段記載時は下段
E: 社会保険料等の金額 inOutDto.sykaHknryoToKngk
K: 支払者の住所 inOutDto.shhrasyJysyKysyOrSyzach 28文字以内
L: 支払者の氏名又は名称 inOutDto.shhrasyNameOrMesyo 28文字以内
ラジオボタン(記載有無の選択)
フィールド ラベル name
控除対象配偶者の記載 C inOutDto.kojyTashoHagsyKsaUm 1(あり)/2(なし)
控除対象扶養親族の記載 D inOutDto.kojyTashoFyoShnzkKsaUm 1(あり)/2(なし)
生命保険料控除額の記載 F※ inOutDto.semeHknryoKojygkKsaUm 1(あり)/2(なし)
地震保険料控除額の記載 G※ inOutDto.jshnHknryoKojygkKsaUm 1(あり)/2(なし)
住宅借入金等特別控除額の記載 H※ inOutDto.jyutkKrirknToTkbtsKojyGkKsaUm 1(あり)/0(なし)
所得金額調整控除額の記載 I※ inOutDto.sytkKngkTyoseKojygkKsaUm 1(あり)/0(なし)
本人が障害者・寡婦等 J※ inOutDto.hnninSygsyKfHtriyKnroGkseKsaUm 1(あり)/2(なし)

※ F〜J のラベルはフォーム上の並び順からの推定(スクリーンショット未確認)

条件付きフィールド(ラジオ/チェックで「記載あり」選択時に表示)
ラベル name 表示条件
B': 源泉徴収税額(内書き) inOutDto.gnsnTyosyuZegkUchgk チェック時
社会保険料等(内書き) inOutDto.sykaHknryoToUchgk チェック時
生命保険料控除額 inOutDto.semeHknryoKojygk F「記載あり」時
新生命保険料金額 inOutDto.shnSemeHknryoKngk F「記載あり」時
旧生命保険料金額 inOutDto.kyuSemeHknryoKngk F「記載あり」時
介護医療保険料金額 inOutDto.kagIryoHknryoKngk F「記載あり」時
新個人年金保険料金額 inOutDto.shnKjnNnknHknryoKngk F「記載あり」時
旧個人年金保険料金額 inOutDto.kyuKjnNnknHknryoKngk F「記載あり」時
地震保険料控除額 inOutDto.jshnHknryoKojygk G「記載あり」時
旧長期損害保険料金額 inOutDto.kyuCyokSngaHknryoKngk G「記載あり」時
H: 住宅借入金等特別控除額 inOutDto.jyutkKrirknToTkbtsKojyGk H「記載あり」時
H': 住宅借入金等特別控除可能額 inOutDto.jyutkKrirknToTkbtsKojyknoGk H「記載あり」時
H'': 住宅借入金年末残高1回目 inOutDto.jyutkKrirknToNnmtszndkIkkam H「記載あり」時
H''': 住宅借入金年末残高2回目 inOutDto.jyutkKrirknToNnmtszndkNkam チェック時
寡婦チェック inOutDto.ksaArKforkf J「記載あり」時
勤労学生チェック inOutDto.ksaArKnroGkse J「記載あり」時

年末調整未済フォーム

URL: 要確認

入力フィールド
ラベル name 備考
A: 支払金額 inOutDto.shhraKngk 必須
B: 給与所得控除後の金額 (自動計算) 入力不可。A から自動算出
C: 所得控除の額の合計額 要確認 入力欄あり。源泉徴収票に記載があれば入力
D: 源泉徴収税額 inOutDto.gnsnTyosyuZegk
E: 住宅借入金等特別控除額 inOutDto.jyutkKrirknToTkbtsKojyGk

SS-AA-070a: 控除の入力(1/2)— 支出系控除

入力リンクのハブ画面。各控除をクリックして個別入力画面に遷移。

対応控除:

  • 社会保険料控除(源泉徴収票入力済みの場合「入力あり」表示)
  • 小規模企業共済等掛金控除(iDeCo等)
  • 生命保険料控除
  • 地震保険料控除
  • 雑損控除・災害減免
  • 医療費控除
  • 寄附金控除(ふるさと納税含む — ワンストップ特例分も要入力)

SS-AA-080: 控除の入力(2/2)— 人的控除・住宅控除等

対応控除:

  • 配偶者(特別)控除
  • 扶養控除・特定親族特別控除
  • 寡婦・ひとり親控除
  • 勤労学生控除
  • 障害者控除
  • 基礎控除(自動計算表示)
  • 住宅借入金等特別控除
  • 住宅耐震改修特別控除等
  • 予定納税額
  • 繰越損失額

SS-AA-090: 計算結果の確認

入力内容から計算された所得税額の確認画面。

表示項目:

  • 収入金額・所得金額(所得種類別)
  • 所得控除合計
  • 課税される所得金額(1,000円未満切捨て)
  • 上記に対する税額(速算表適用)
  • 差引所得税額
  • 復興特別所得税額(基準所得税額の2.1%)
  • 所得税及び復興特別所得税の額
  • 源泉徴収税額
  • 申告納税額(100円未満切捨て)/ 還付される税金

ここで shinkoku の計算結果と照合する(後述「ステップ5: 申告内容の確認」参照)。

各セクションに「訂正する」ボタンがあり、前画面に戻れる。

SS-AC-010a: 納付方法等の入力

納付金額が発生した場合に表示。還付の場合は還付口座入力画面(SS-AB-010a)が表示される。

フィールド type name 備考
延納を届け出る checkbox 利子税がかかる旨の注意あり
納付方法 select inOutDto.nofHoho 必須

納付方法の選択肢:

value 方法
1 振替納税(期限内申告の場合に利用可)
2 電子納税(ダイレクト納付/インターネットバンキング)
3 クレジットカード納付
5 コンビニ納付
6 金融機関等での窓口納付

還付の場合は還付口座情報の入力:

  • 金融機関名、支店名、口座番号、口座名義

SS-AC-020a: 財産債務・住民税等

住民税に関する設定(給与からの特別徴収 or 自分で納付 等)。

SS-AC-030: 基本情報の入力

ラベル name 備考
氏名フリガナ(姓) inOutDto.nameKnSe 11文字以内
氏名フリガナ(名) inOutDto.nameKnMe
氏名漢字(姓) inOutDto.nameKnjSe 10文字以内
氏名漢字(名) inOutDto.nameKnjMe
電話番号(種別) inOutDto.rnrkSkKbn 自宅/勤務先/携帯
電話番号(市外) inOutDto.shgaKykbn
電話番号(市内) inOutDto.shnaKykbn
電話番号(番号) inOutDto.knyusyBngo
納税地区分 inOutDto.nozeCh 1=住所地, 2=事業所等
郵便番号 inOutDto.yubnBngoGnzaAddress 7桁
都道府県 inOutDto.tdofknGnzaAddress select
市区町村 inOutDto.shkcyosnGnzaAddress 都道府県連動 select
丁目番地等 inOutDto.cyomBnchToGnzaAddress 28文字以内
建物名 inOutDto.ttmnMeGoshtsGnzaAddress 28文字以内
提出先税務署(県) inOutDto.tesytSkZemsyTdofkn select
提出先税務署 inOutDto.tesytSkZemsyZemsy 県連動 select
職業 inOutDto.job 11文字以内
屋号・雅号 inOutDto.ygoGgo 30文字以内
世帯主の氏名 inOutDto.stanshNameKnj
続柄 inOutDto.stanshKrTsdkgr select
提出年月日 inOutDto.tesytYmdYy/Mm/Dd

SS-AC-040: マイナンバーの入力

マイナンバー(12桁)を入力する画面。チェックディジットアルゴリズムによる検証あり。


ステップ4: 消費税の申告書入力(該当者のみ)

⚠️ ネイティブダイアログ注意: 「次へ」クリック後に画面が遷移しない場合、ネイティブダイアログ(alert/confirm)が表示されている可能性がある。技術的な知見の「ネイティブダイアログの検知と対処」を参照。

所得税申告書の完了後、「他の申告書等を作成する」→ doSubmitCSW0900(3,'25') で消費税コーナーに遷移。

ac0100: 条件判定等

URL: https://www.keisan.nta.go.jp/syouhi/ac0100/submit.htmj#bsctrl

フィールド name 備考
基準期間の課税売上高 kijunKazeiUriage R5年分
インボイス発行事業者 invoice true/false
簡易課税制度選択 kani true/false
経理方式 zeikomi 税込/税抜

インボイス=はい の場合に追加表示

フィールド name 備考
新たに課税事業者か newKazeiJigyosya true/false
2割特例を適用するか niwariTokurei true/false

一般課税の場合に追加表示

フィールド name 備考
仕入税額の計算方法 siireKeisanHouhou warimodosi/tumiage

条件判定画面の表示ロジック(基準期間による分岐)

kijunKazeiUriage(基準期間の課税売上高)の値によって表示される選択肢が変化する:

条件 新規課税事業者? 2割特例? 簡易課税?
基準期間=0, invoice=はい 表示 表示 非表示
基準期間=3,000,000, invoice=はい 表示 表示 表示
基準期間=60,000,000, invoice=はい 非表示 非表示 表示

一般課税のみ: 「税額の計算方法として積上げ計算を選択する方」ボタン(折りたたみセクション内)

分岐ロジック

条件 遷移先ルート
インボイス=はい & 2割特例=はい 2割特例
簡易課税=はい 簡易課税
上記以外 一般課税

ac0250: 所得区分の選択

URL: https://www.keisan.nta.go.jp/syouhi/ac0250/submit.htmj#bsctrl

該当する所得区分を全て選択する。ヘッダに課税方式(一般課税/簡易課税)と経理方式(税込/税抜)が表示される。

ラベル name 備考
事業所得(営業等) jigyoSyotokuEigyo メインターゲット
事業所得(農業) jigyoSyotokuNogyo
不動産所得 fudosanSyotoku
雑所得(原稿料等) zatuSyotoku
業務用固定資産等の譲渡所得 jotoSyotoku 一般課税のみ表示

簡易課税のみ: 事業区分の選択

簡易課税の場合、各所得区分に対して事業区分(第1種〜第6種)のサブ選択がある:

フィールド name 備考
事業区分(第1種) jigyoSyotokuEigyoJigyoKubun1 卸売業
事業区分(第2種) jigyoSyotokuEigyoJigyoKubun2 小売業
事業区分(第3種) jigyoSyotokuEigyoJigyoKubun3 製造業等
事業区分(第4種) jigyoSyotokuEigyoJigyoKubun4 その他
事業区分(第5種) jigyoSyotokuEigyoJigyoKubun5 サービス業等
事業区分(第6種) jigyoSyotokuEigyoJigyoKubun6 不動産業

一般課税のみ: 業務用固定資産等

フィールド name 備考
業務用固定資産等の購入がある gyomuyosisanKonyu checkbox

売上入力(全ルート共通フォーム)

URL パターン:

  • 2割特例: /syouhi/at3600/inputEigyo.htmj
  • 簡易課税: /syouhi/ak3600/inputEigyo.htmj
  • 一般課税: /syouhi/ai3600/inputEigyo.htmj
フィールド name 備考
売上(収入)金額 uriageWari 必須。税込総額
免税売上 menzeiUriageWari
非課税売上 hikazeiUriageWari
不課税取引 jigyoFukazeiUriageWari
軽減税率(6.24%)適用分 kazeiUriage624PercentWari
返還等対価(軽減) uriageTaikaKeigen.uriageTaika624Percent
返還等対価(標準) uriageTaikaKeigen.uriageTaika78Percent
貸倒れ発生(軽減) kasidaoreKeigen.occurredKasidaore624Percent 2割特例・簡易課税のみ
貸倒れ発生(標準) kasidaoreKeigen.occurredKasidaore78Percent 2割特例・簡易課税のみ
貸倒れ回収(軽減) kasidaoreKeigen.recoveredKasidaore624Percent 2割特例・簡易課税のみ
貸倒れ回収(標準) kasidaoreKeigen.recoveredKasidaore78Percent 2割特例・簡易課税のみ
貸倒れ発生有無 kasidaore.occurredKasidaoreAns 2割特例・簡易課税のみ (radio)

一般課税のみの追加フィールド

フィールド name 備考
非課税返還 uriageTaikaKeigen.hikazeiHenkan
非課税資産の輸出等返還 uriageTaikaKeigen.hikazeiSisanHenkan

中間納付税額等の入力(全ルート共通)

name 備考
chukanNofuZei 中間納付消費税額
chukanNofuJotoWari 中間納付譲渡割額

一般課税(積上げ計算)専用: 決算額テーブル

URL: /syouhi/ai3610/submit.htmj

積上げ計算選択時のみ表示される大規模フォーム(194項目)。 青色申告決算書の各勘定科目に対して、決算額・課税取引金額・軽減税率分・免税事業者等取引分を入力。

フィールド名パターン: {科目略称}{列略称}Wari (割戻し) / {科目略称}{列略称}Tumi (積上げ)

列略称: Kessan(決算額), KazeiIgai(課税取引にならないもの), Keigen624(軽減税率分), MenzeiKeigen(免税事業者等/軽減), Menzei(免税事業者等/標準)

科目 プレフィックス
仕入金額 siire
租税公課 sozeiKoka
荷造運賃 nidukuri
水道光熱費 suido
旅費交通費 ryohi
通信費 tusin
広告宣伝費 kokoku
接待交際費 settai
損害保険料 songai
修繕費 syuzen
消耗品費 syomohin
減価償却費 genkasyokyaku
福利厚生費 fukurikosei
給料賃金 kyuryo
外注工賃 gaichu
利子割引料 risiWaribiki
地代家賃 jidai
貸倒金 kasidaore
任意科目 niniKamoku2530
雑費 zappi

テーブル下の Yes/No 質問(一般課税のみ)

フィールド name 内容
発生した貸倒金 kasidaoreKeigen.occurredKasidaoreAns radio
回収した貸倒金 kasidaoreKeigen.recoveredKasidaoreAns radio
保税地域からの引取貨物 hozeiKeigenIppan.hozeiAns radio
課税仕入れに係る対価の返還等 siireTaikaKeigenIppan.siireTaikaAns radio
課税事業者になった方の棚卸高調整 tanaorosiKeigenIppan.oldMenzeiJigyoshaAns radio
免税事業者になる方の棚卸高調整 tanaorosiKeigenIppan.newMenzeiJigyoshaAns radio

簡易課税のみ: 仕入税額控除の控除方式の選択

URL: /syouhi/ak2140/submit.htmj

2種以上の事業を営む場合に表示される。以下から選択:

  • 原則計算
  • 特例計算(2種特例/3種特例/75%特例)

ac0300: 消費税計算結果の確認

全ルート共通の結果画面。ヘッダ部で「2割特例」「簡易課税」「一般課税」を表示。

表示項目:

  • 課税標準額
  • 消費税額
  • 控除税額小計
  • 差引税額(100円未満切捨て)
  • 中間納付税額
  • 納付税額
  • 地方消費税 譲渡割額(= 差引税額 × 22/78、100円未満切捨て)
  • 中間納付譲渡割額
  • 合計納付税額

一般課税のみの追加表示項目

  • 「控除過大調整税額」
  • 「課税売上割合」セクション(課税資産の譲渡等の対価の額 / 資産の譲渡等の対価の額)

消費税 納税地等の入力

URL パターン(ルートごとに異なる):

  • 2割特例: /syouhi/at1400/submit.htmj
  • 簡易課税: /syouhi/ak1400/submit.htmj
  • 一般課税: /syouhi/ai1400/submit.htmj

画面は全ルートで同一構造(pageId=ac0400)。

フィールド name type 備考
納付方法 nofuHohoType select
納税地区分 nozeitiKubun radio
郵便番号1 nozeitiZipCode1 text
郵便番号2 nozeitiZipCode2 text
都道府県 nozeitiPrefectureCode select 住所用コード: 13=東京都
市区町村 municipalityCode select
丁目番地等 nozeiti1ElaseMunicipal text
税務署都道府県 prefectureCode select 税務署用コード: 15=東京都 ← 住所と異なるコード体系!
税務署 sinkokuZeimusyoCode select
氏名カナ(姓) simeiKanaSei text
氏名カナ(名) simeiKanaMei text
氏名漢字(姓) simeiKanjiSei text
氏名漢字(名) simeiKanjiMei text
マイナンバー1 myNumber1 password
マイナンバー2 myNumber2 password
マイナンバー3 myNumber3 password
電話番号1 telNumber1 text
電話番号2 telNumber2 text
電話番号3 telNumber3 text

⚠️ 注意: 住所の都道府県コード(nozeitiPrefectureCode: 13=東京都)と税務署の都道府県コード(prefectureCode: 15=東京都)で異なるコード体系が使用されている。

消費税 計算結果のテストデータ

項目 2割特例 (売上5M) 簡易課税 第5種 (売上5M) 一般課税 (売上66M, 仕入0)
課税標準額 4,545,000円 4,545,000円 60,000,000円
消費税額 354,510円 354,510円 4,680,000円
控除税額 283,608円 (×80%) 177,255円 (×50%) 0円
差引税額 70,900円 177,200円 4,680,000円
地方消費税譲渡割額 19,900円 49,900円 1,320,000円
合計納付 90,800円 227,100円 6,000,000円

3ルートの計算方式の違い

項目 2割特例 簡易課税 一般課税
控除税額 消費税額×80% みなし仕入率 実額(割戻し or 積上げ)
仕入入力 不要 不要 割戻し: 不要 / 積上げ: 決算額テーブル
URL prefix /at**** /ak**** /ai****

⚠️ ネイティブダイアログ注意: 消費税コーナー終了時は 2段階のネイティブダイアログが表示される — #otherTax(他の申告書等を作成しますか?)と #end(終了してもよろしいですか?)。画面が遷移しない場合はダイアログの有無をユーザーに確認し、それぞれ適切にクリックするよう案内すること。


ステップ5: 申告内容の確認

作成コーナーの確認画面で、shinkoku の計算結果と一致しているか検証する。

検証項目

□ 合計所得金額が一致するか
□ 所得控除合計が一致するか
□ 課税所得金額が一致するか
□ 算出税額が一致するか
□ 税額控除が一致するか
□ 復興特別所得税が一致するか
□ 申告納税額(または還付額)が一致するか
□ 消費税の納付税額が一致するか(該当者のみ)

不一致がある場合は、差異の原因を調査し、ユーザーに報告する。


ステップ5.5: .data ファイルの保存と次ステップの選択(意思決定ゲート)

★ ユーザー確認待ち — 明示的な指示なくステップ6(電子署名・送信)に進んではならない

2段階ゲート構造: ステップ5.5 は「送信フェーズに進むかどうかの意思決定ゲート」。 ステップ6-3 は「送信ボタン直前の操作ゲート(AI は送信しない、ユーザーが手動で送信する)」。 両方のゲートを通過しない限り、送信は実行されない。

申告内容の確認が完了した時点で、以下の手順を実行する。

.data ファイルのダウンロード案内

ユーザーに .data ファイルの保存を案内する:

申告内容の入力と確認が完了しました。

電子署名・送信に進む前に、入力データを .data ファイルとして保存することを強く推奨します。
画面上部の「入力データの一時保存」ボタン(またはページ下部の「ここまでの入力データを保存する」リンク)
をクリックし、ファイルをダウンロードしてください。

次の操作の選択

AskUserQuestion で以下を表示する:

次の操作を選択してください。
  • 選択肢:
    • 「電子署名・送信に進む」→ ステップ6 へ
    • 「入力内容を見直す」→ 見直したいステップを確認し、該当ステップに戻る
    • 「ここで中断する」→ 中断・再開プロトコルの中断手順に従い終了する

重要: ユーザーが「電子署名・送信に進む」を明示的に選択するまで、絶対にステップ6に進まないこと。


ステップ6: 電子署名と送信(所得税)

前提: ステップ5.5 でユーザーが「電子署名・送信に進む」を選択済みであること。この前提が満たされていない場合はステップ5.5 に戻る。

6-1: 電子署名(ユーザーの手動操作)

マイナンバーカードで電子署名する。署名用パスワード(6〜16桁の英数字)が必要。

★ ユーザー操作待ち — ブラウザ操作を一時停止

AskUserQuestion で以下を表示する:

電子署名の画面に進みます。
マイナンバーカードで電子署名を行ってください。

署名が完了したら「署名完了」を選択してください。
  • 選択肢: 「署名完了」 / 「署名で問題が発生した」
  • ユーザーが「署名完了」を選択するまで、一切のブラウザ操作を行わない

6-2: 送信前確認ページでの一次確認

電子署名完了後、送信前の最終確認ページが表示される。

  1. ブラウザ上の確認ページの内容を読み取る
  2. 主要項目をユーザーに報告する(収入・所得・税額・納付/還付額など)
  3. shinkoku の計算結果との照合結果を報告する

6-3: ブラウザ操作の一時停止(送信はユーザー操作)

★★★ 絶対に AI が送信ボタンをクリックしてはならない ★★★ ★★★ ユーザーが「送信完了」を選択するまで、一切のブラウザ操作を行わない ★★★

★ ユーザー操作待ち — ブラウザ操作を一時停止

AskUserQuestion で以下を表示する:

送信前の申告内容確認ページが表示されています。
上記の内容をご確認ください。

問題がなければ、ご自身の操作で画面上の「送信を実行する」ボタンを
クリックしてください。

送信が完了したら「送信完了」を選択してください。
  • 選択肢: 「送信完了」 / 「入力内容を見直したい」
  • 「入力内容を見直したい」が選ばれた場合は、見直したい箇所を確認し、該当ステップに戻る

6-4: 送信後の処理(Claude 再開)

ユーザーが「送信完了」を選択したら:

  1. 受付番号の記録 — 画面から受付番号を読み取って記録する
  2. 受信通知の確認 — メッセージボックスで受信通知を確認する
  3. 消費税の申告 — 消費税の申告が必要な場合はステップ6.5 に進む。不要な場合はステップ7 に進む

注意事項

  • 送信後の修正は「修正申告」として再提出が必要
  • ★★★ 送信操作は必ずユーザーの手動操作で行う — エージェントが送信ボタンを自動クリックすることは絶対に禁止 ★★★

ステップ6.5: 消費税の電子署名と送信(該当者のみ)

消費税の申告が必要な場合、所得税の送信完了後に消費税コーナーで申告書を作成する(ステップ4)。 消費税の入力・確認が完了したら、以下の送信プロトコルに従う。

6.5-1: 消費税の送信フェーズに進む前の確認

消費税の計算結果確認(ac0300)と納税地等の入力が完了した時点で、以下を実行する。

★ ユーザー確認待ち — 明示的な指示なく電子署名・送信に進んではならない

AskUserQuestion で以下を表示する:

消費税の申告内容の入力と確認が完了しました。

電子署名・送信に進む前に、入力データを .data ファイルとして保存することを強く推奨します。
画面上部の「入力データの一時保存」ボタンをクリックし、ファイルをダウンロードしてください。

次の操作を選択してください。
  • 選択肢:
    • 「電子署名・送信に進む」→ 6.5-2 へ
    • 「入力内容を見直す」→ 見直したい箇所を確認し、該当ステップに戻る
    • 「ここで中断する」→ 中断・再開プロトコルの中断手順に従い終了する

重要: ユーザーが「電子署名・送信に進む」を明示的に選択するまで、絶対に送信フェーズに進まないこと。

6.5-2: 電子署名(ユーザーの手動操作)

マイナンバーカードで電子署名する。

★ ユーザー操作待ち — ブラウザ操作を一時停止

AskUserQuestion で以下を表示する:

消費税の電子署名の画面に進みます。
マイナンバーカードで電子署名を行ってください。

署名が完了したら「署名完了」を選択してください。
  • 選択肢: 「署名完了」 / 「署名で問題が発生した」
  • ユーザーが「署名完了」を選択するまで、一切のブラウザ操作を行わない

6.5-3: 送信前確認ページでの一次確認

電子署名完了後、送信前の最終確認ページが表示される。

  1. ブラウザ上の確認ページの内容を読み取る
  2. 主要項目をユーザーに報告する(課税標準額・消費税額・差引税額・地方消費税・合計納付税額など)
  3. shinkoku の計算結果との照合結果を報告する

6.5-4: ブラウザ操作の一時停止(送信はユーザー操作)

★★★ 絶対に AI が送信ボタンをクリックしてはならない ★★★ ★★★ ユーザーが「送信完了」を選択するまで、一切のブラウザ操作を行わない ★★★

★ ユーザー操作待ち — ブラウザ操作を一時停止

AskUserQuestion で以下を表示する:

消費税の送信前確認ページが表示されています。
上記の内容をご確認ください。

問題がなければ、ご自身の操作で画面上の「送信を実行する」ボタンを
クリックしてください。

送信が完了したら「送信完了」を選択してください。
  • 選択肢: 「送信完了」 / 「入力内容を見直したい」
  • 「入力内容を見直したい」が選ばれた場合は、見直したい箇所を確認し、該当ステップに戻る

6.5-5: 送信後の処理(Claude 再開)

ユーザーが「送信完了」を選択したら:

  1. 受付番号の記録 — 画面から受付番号を読み取って記録する
  2. 受信通知の確認 — メッセージボックスで受信通知を確認する
  3. ステップ7 の .data ファイル保存案内に進む

ステップ7: .data ファイルの保存案内

作成コーナーでは申告データを .data ファイルとして保存できる。

送信後の .data ファイル再保存(推奨)

送信完了後の .data ファイルには受付番号・送信日時等の追加情報が含まれる。 ステップ5.5 で保存済みであっても、送信後に改めて .data ファイルを再保存することを推奨する。

AskUserQuestion で以下を表示する:

送信が完了しました。送信後の .data ファイルには受付番号等の情報が追加されています。
「入力データを保存する」で .data ファイルを再度ダウンロードすることを推奨します。

ダウンロードが完了したら「ダウンロード済み」を選択してください。
  • 選択肢: 「ダウンロード済み」 / 「スキップ」

.data ファイルの用途

  • .data ファイルがあれば、次回は「保存データを利用して作成」から途中再開できる
  • 控えとしても有用(来年の申告時に前年データとして参照可能)
  • 修正申告が必要になった場合、.data ファイルから入力データを復元できる

技術的な知見

SPA構造

  • jQuery 3 + jQuery UI ベース
  • ページ遷移はフォーム POST(document.forms[formName].submit()
  • ハッシュ #bsctrl(決算書コーナー)/ #bbctrl(所得税コーナー)はページ管理用
  • <input type="button"> が多用されており、id="input_xxx" で JS .click() 操作

URL体系

コーナー URL パターン
共通(認証等) /kyoutu/ky/sm/***
決算書 /kessan/ac/***
所得税 /r7/syotoku/***
消費税(共通) /syouhi/ac****
消費税(2割特例) /syouhi/at****
消費税(一般課税) /syouhi/ai****
消費税(簡易課税) /syouhi/ak****

主要ナビゲーション関数

  • doSubmitCSW0100(qrCodeReadingFlag, reportType, url) — 認証方法選択
  • doSubmitCMW0900(zeimokuType, year) — 申告書種類選択(1=所得税, 2=決算書, 3=消費税, 4=贈与税)

確認ダイアログ

コード 内容 対応
KS-W90011 入力データが初期化される OK で続行
KS-W90006 入力データをクリアする OK で続行
KS-W10035 印刷を確認したか OK で続行
KS-E10089 e-Tax送信が必要(65万円控除) e-Tax ルートで再実行
KS-E10001 必須入力チェック 入力漏れを修正
KS-E40003 B/S 資産期末合計 ≠ 負債期末合計 金額を修正

終了ダイアログフロー

消費税コーナー終了時は2段階のダイアログが表示される:

  1. #otherTax — 「他の申告書等を作成しますか?」
  2. #end — 「終了してもよろしいですか?」

※ 書面提出選択時はサーベイダイアログが毎回表示される(セッション間で記憶されない)

ネイティブダイアログの検知と対処

Claude in Chrome は alert() / confirm() / prompt() によるネイティブダイアログを検知できない。 ダイアログが表示されている間、ブラウザの DOM 操作はブロックされるため、エージェントの操作が無応答になる。

検知ヒューリスティック

ボタンクリック後に以下の状態が続く場合、ネイティブダイアログが表示されている可能性がある:

  • URL が変化しない
  • DOM の内容が変化しない(新しい画面に遷移しない)
  • ボタンのクリックが何も起こさないように見える

対処手順

  1. ダイアログの可能性を検知したら、AskUserQuestion で以下を表示する:
ボタンをクリックしましたが、画面が遷移しません。
ブラウザにポップアップ(確認ダイアログ)が表示されていませんか?

表示されている場合は、ダイアログの内容(コード番号がある場合はそれも)を教えてください。
  • 選択肢: 「ダイアログが表示されている」 / 「ダイアログは表示されていない」
  1. ダイアログが表示されている場合:

    • ユーザーにダイアログのメッセージ内容を確認する
    • 既知のコード(上記「確認ダイアログ」テーブルの KS-W*, KS-E* 等)に該当するか照合する
    • KS-W 系(警告): ユーザーに「OK」をクリックするよう案内
    • KS-E 系(エラー): エラー内容に応じた修正を案内
    • 不明なダイアログ: ユーザーにメッセージ全文を共有してもらい、対処を判断
  2. ダイアログが表示されていない場合:

    • ネットワークエラーやページ読み込み中の可能性を調査する
    • ページの再読み込みを試みる

ダイアログが発生しやすい操作

操作 想定ダイアログ ステップ
「次へ進む」クリック全般 KS-E10001(必須入力チェック) 2, 3, 4
65万円控除の選択 KS-E10089(e-Tax送信必須) 2
B/S 入力後の「次へ」 KS-E40003(資産≠負債) 2
決算書完了→所得税遷移 KS-W10035(印刷確認) 2→3
消費税コーナー終了 #otherTax + #end(2段階) 4
データクリア・初期化操作 KS-W90011, KS-W90006 全般

環境チェック(参考)

確定申告書等作成コーナーの推奨環境:

  • Windows 11 + Chrome / Edge
  • macOS + Safari

Linux は公式非対応。OS 検出は 2層 で行われるため、回避にも2層の偽装が必要:

  1. クライアントサイド検出: CC-AA-024 の画面遷移時に termnalInfomationCheckOS_myNumberLinkage()navigator.platform / navigator.userAgent を検査し、Linux 環境では isTransition=false となり QR コード認証画面(CC-AA-440)への遷移がブロックされる。

  2. サーバーサイド OS ベイク: サーバーが HTTP リクエストの User-Agent / sec-ch-ua-platform ヘッダ から OS を判定し、レスポンス内の getClientOS() 関数に const os = "Linux" のようにハードコードする (サーバーサイドレンダリング)。addInitScript による navigator プロパティ偽装ではこのベイク値は変わらない。 CC-AA-440 の displayQrcode() でも getClientOS() が呼ばれ、oStUseType を決定する (Win='3', Mac='4')。Linux だと undefined になり QR コードが描画されない。

etax-stealth.js の2層偽装

PLAYWRIGHT_MCP_INIT_SCRIPT 環境変数で etax-stealth.js を指定して回避可能:

PLAYWRIGHT_MCP_INIT_SCRIPT=skills/e-tax/scripts/etax-stealth.js \
  playwright-cli -s=etax open https://www.keisan.nta.go.jp/ --headed --browser=chrome

層 1: navigator プロパティ偽装addInitScript で実行、ページ読み込み前)

プロパティ 偽装値
navigator.platform 'Win32'
navigator.userAgent Windows Chrome 131 UA
navigator.userAgentData Windows Chrome Client Hints
navigator.webdriver false
navigator.plugins Chrome 標準プラグイン
navigator.languages ['ja', 'en-US', 'en']

層 2: サーバーベイク関数のパッチDOMContentLoaded で実行、ページスクリプト後)

パッチ対象 偽装値 目的
getClientOS() 'Windows' サーバーベイク値の上書き
getClientOSVersionAsync() 'Windows 11' OS バージョン判定の回避
isRecommendedOsAsEtaxAsync() true 推奨 OS 判定の回避
isRecommendedBrowserAsEtaxAsync() 'OK' 推奨ブラウザ判定の回避

トラブルシューティング: QR コードが表示されない

CC-AA-440 で QR コードが表示されない場合、displayQrcode() 内で getClientOS()'Linux' 等を返し、 oStUseTypeundefined になっている可能性がある。

確認方法: ブラウザコンソールで getClientOS() の戻り値を確認。'Windows' でなければパッチが適用されていない。

手動対処(Playwright CLI の場合):

playwright-cli -s=etax run-code 'window.getClientOS = function() { return "Windows"; }; displayQrcode();'

検証済み画面遷移フロー

CC-AA-010 → CC-AE-090 → CC-AE-600 → CC-AA-024 → CC-AA-440(QR 表示確認済み)

詳細は docs/wsl-os-detection-workaround.md を参照。


引継書の出力

全ステップ完了後、以下のファイルを Write ツールで出力する。

ステップ別ファイルの出力

.shinkoku/progress/10-etax.md に以下の形式で出力する:

---
step: 10
skill: e-tax
status: completed
completed_at: "{当日日付 YYYY-MM-DD}"
fiscal_year: {tax_year}
---

# e-Tax 電子申告の結果

## 提出方法

- 確定申告書等作成コーナー(Claude in Chrome 入力代行)

## 税額サマリー

- 事業所得: {金額}円
- 課税所得: {金額}円
- 所得税額: {金額}円
- 申告納税額: {金額}円({納付/還付})
- 消費税納付額: {金額}円(該当者のみ)

## 送信結果

- 受付番号: {受付番号}
- 送信日時: {日時}

## 次のステップ

/submit で提出後のチェックリストを確認する

進捗サマリーの更新

.shinkoku/progress/progress-summary.md を更新する(存在しない場合は新規作成):

  • YAML frontmatter: fiscal_year、last_updated(当日日付)、current_step: e-tax
  • テーブル: 全ステップの状態を更新(e-tax を completed に)

免責事項

  • 確定申告書等作成コーナーの画面構成・フォーム要素は国税庁の更新により変更される可能性がある
  • Claude in Chrome の入力代行はユーザーの目視確認を前提とする — 自動送信は行わない
  • マイナンバーカードの操作(電子署名)はユーザーの手動操作が必要
  • 最終的な申告内容は税理士等の専門家に確認することを推奨する

調査資料

詳細なセレクタ情報・スクリーンショットは skills/e-tax/research/ ディレクトリを参照:

  • 00-screen-flow-summary.md — 画面遷移マップ
  • 0105 — 認証フロー画面
  • 0614 — 決算書コーナー画面
  • 3041 — 所得税コーナー画面
  • 5055 — 消費税コーナー画面(初期調査)
  • 8487 — 消費税 2割特例(条件判定、売上入力、計算結果)
  • 8993 — 消費税 簡易課税(条件判定、事業区分、売上入力、控除方式、計算結果)
  • 9498 — 消費税 一般課税(条件判定、所得区分、売上入力、決算額テーブル、計算結果)
Weekly Installs
232
GitHub Stars
312
First Seen
Feb 22, 2026
Installed on
codex164
cursor162
github-copilot158
opencode158
gemini-cli155
amp155