jpskill.com
📄 ドキュメント コミュニティ

retirement-syncing

Sync retirement account data from Vanguard and Fidelity CSV exports to Google Sheets DataHub. Handles multiple accounts, aggregates holdings by ticker, and updates quantities in retirement section (rows 46-62). Triggers on sync retirement, update retirement, vanguard sync, 401k update, IRA sync, or working with notebooks/retirement-accounts/ files.

⚡ おすすめ: コマンド1行でインストール(60秒)

下記のコマンドをコピーしてターミナル(Mac/Linux)または PowerShell(Windows)に貼り付けてください。 ダウンロード → 解凍 → 配置まで全自動。

🍎 Mac / 🐧 Linux
mkdir -p ~/.claude/skills && cd ~/.claude/skills && curl -L -o retirement-syncing.zip https://jpskill.com/download/22819.zip && unzip -o retirement-syncing.zip && rm retirement-syncing.zip
🪟 Windows (PowerShell)
$d = "$env:USERPROFILE\.claude\skills"; ni -Force -ItemType Directory $d | Out-Null; iwr https://jpskill.com/download/22819.zip -OutFile "$d\retirement-syncing.zip"; Expand-Archive "$d\retirement-syncing.zip" -DestinationPath $d -Force; ri "$d\retirement-syncing.zip"

完了後、Claude Code を再起動 → 普通に「動画プロンプト作って」のように話しかけるだけで自動発動します。

💾 手動でダウンロードしたい(コマンドが難しい人向け)
  1. 1. 下の青いボタンを押して retirement-syncing.zip をダウンロード
  2. 2. ZIPファイルをダブルクリックで解凍 → retirement-syncing フォルダができる
  3. 3. そのフォルダを C:\Users\あなたの名前\.claude\skills\(Win)または ~/.claude/skills/(Mac)へ移動
  4. 4. Claude Code を再起動

⚠️ ダウンロード・利用は自己責任でお願いします。当サイトは内容・動作・安全性について責任を負いません。

🎯 このSkillでできること

下記の説明文を読むと、このSkillがあなたに何をしてくれるかが分かります。Claudeにこの分野の依頼をすると、自動で発動します。

📦 インストール方法 (3ステップ)

  1. 1. 上の「ダウンロード」ボタンを押して .skill ファイルを取得
  2. 2. ファイル名の拡張子を .skill から .zip に変えて展開(macは自動展開可)
  3. 3. 展開してできたフォルダを、ホームフォルダの .claude/skills/ に置く
    • · macOS / Linux: ~/.claude/skills/
    • · Windows: %USERPROFILE%\.claude\skills\

Claude Code を再起動すれば完了。「このSkillを使って…」と話しかけなくても、関連する依頼で自動的に呼び出されます。

詳しい使い方ガイドを見る →
最終更新
2026-05-18
取得日時
2026-05-18
同梱ファイル
1

📖 Skill本文(日本語訳)

※ 原文(英語/中国語)を Gemini で日本語化したものです。Claude 自身は原文を読みます。誤訳がある場合は原文をご確認ください。

退職口座の同期

目的

VanguardおよびFidelityの退職口座CSVエクスポートをGoogle Sheets DataHubの退職セクションに安全にインポートし、数量(列B)のみを更新します。

使用する場面

このスキルは、以下の状況で使用します。

  • notebooks/retirement-accounts/からの退職口座のポジションを同期する場合
  • ユーザーが「退職口座を同期して」「退職口座を更新して」「Vanguardを同期して」「401kを更新して」「IRAを同期して」と発言した場合
  • notebooks/retirement-accounts/ディレクトリ内のファイルを操作する場合

ソースファイル

場所: notebooks/retirement-accounts/

ファイル ソース 内容
OfxDownload.csv Vanguard IRA 口座 39321600 & 35407271 の保有銘柄
OfxDownload (1).csv Vanguard Brokerage 口座 53527429 & 50580939 の保有銘柄
Portfolio_Positions_*.csv Fidelity 401(k) {employer_name} 401(k) プランの保有銘柄

CSV形式

Vanguard OFX形式 (OfxDownload.csv)

Account Number,Investment Name,Symbol,Shares,Share Price,Total Value,
39321600,VANGUARD S&P 500 INDEX ETF,VOO,18.1817,629.3,11441.74,

主要フィールド:

  • 列3: Symbol
  • 列4: Shares (数量)

Fidelity 401k形式 (PortfolioPositions*.csv)

Account Number,Account Name,Symbol,Description,Quantity,Last Price,...
86689,{employer_name} 401(K) PLAN,FGCKX,FID GROWTH CO K,4.447,$50.04,...

主要フィールド:

  • 列3: Symbol
  • 列5: Quantity

DataHubのターゲット場所

スプレッドシートID: fin-guru/data/user-profile.yamlから読み込みます。

退職セクション: 46-62行目(45行目の「RETIREMENT ACCOUNTS (VANGUARD)」ヘッダーの後)

ティッカー 説明
46 VOO Vanguard S&P 500 ETF
47 VUG Vanguard Growth ETF
48 VTSAX Vanguard Total Stock Market
49 SCHG Schwab US Large-Cap Growth
50 PLTR Palantir
51 NVDA NVIDIA
52 TSLA Tesla
53 VB Vanguard Small-Cap ETF
54 ARKK ARK Innovation
55 VMFXX Vanguard Money Market
56 FGCKX Fidelity Growth Company K
57 FXAIX Fidelity 500 Index
58-62 Reserved 将来の保有銘柄

コアワークフロー

1. すべてのCSVファイルを読み込む

# Read Vanguard files
vanguard_1 = read_csv("notebooks/retirement-accounts/OfxDownload.csv")
vanguard_2 = read_csv("notebooks/retirement-accounts/OfxDownload (1).csv")

# Read latest Fidelity file (by date in filename)
fidelity = read_csv("notebooks/retirement-accounts/Portfolio_Positions_*.csv")

2. ティッカーごとに保有銘柄を集計する

同じティッカーが複数の口座に現れる可能性があるため、すべての数量を合計します。

holdings = {}
for file in [vanguard_1, vanguard_2, fidelity]:
    for row in file:
        ticker = row['Symbol']
        shares = float(row['Shares'] or row['Quantity'])
        holdings[ticker] = holdings.get(ticker, 0) + shares

期待される集計:

  • VOO: 口座全体で合計 (IRA + Brokerage)
  • VUG: 口座全体で合計
  • PLTR: 口座全体で合計 (53527429 + 50580939)
  • SCHG: 口座全体で合計
  • VMFXX: 口座全体で合計 (すべてのマネーマーケット)
  • VTSAX: 口座全体で合計

3. DataHubの列Bのみを更新する

書き込み可能: 列B (数量) のみ

触らない:

  • 列A (ティッカー) - すでに設定済み
  • 列C以降 - 数式
// Update VOO quantity (Row 46)
mcp__gdrive__sheets(operation: "updateCells", params: {
    spreadsheetId: SPREADSHEET_ID,
    range: "DataHub!B46:B46",
    values: [["214.7947"]]  // Aggregated quantity
})

4. 更新パターン

各退職ティッカーをループし、列Bを更新します。

ティッカー 範囲 集計
VOO B46 18.1817 + 196.613 = 214.7947
VUG B47 10.9488 + 2.1164 = 13.0652
VTSAX B48 126.336 + 102.126 = 228.462
SCHG B49 100 + 6 = 106
PLTR B50 25 + 42 = 67
NVDA B51 150
TSLA B52 58
VB B53 20
ARKK B54 16.13
VMFXX B55 2.94 + 0.57 + 179.92 + 428.42 = 611.85
FGCKX B56 4.447
FXAIX B57 3.705

安全チェック

更新前:

  • notebooks/retirement-accounts/に3つのCSVファイルすべてが存在することを確認します。
  • 行マッピングが期待されるティッカーと一致することを確認します。
  • 現在のシートにない新しいティッカーをログに記録します。

大幅な変更の警告 (>20%):

  • 数量が20%を超えて変更された場合、差分を表示し、確認を求めます。

実行例

// Step 1: Read CSVs and aggregate
const holdings = aggregateFromCSVs();

// Step 2: Update each ticker's quantity
const updates = [
    { range: "DataHub!B46:B46", values: [[holdings.VOO.toFixed(4)]] },
    { range: "DataHub!B47:B47", values: [[holdings.VUG.toFixed(4)]] },
    { range: "DataHub!B48:B48", values: [[holdings.VTSAX.toFixed(3)]] },
    // ... etc
];

for (const update of updates) {
    mcp__gdrive__sheets(operation: "updateCells", params: {
        spreadsheetId: SPREADSHEET_ID,
        ...update
    });
}

// Step 3: Log summary
console.log("Updated 12 retirement positions");

更新後の検証

検証項目:

  • [ ] すべての数量が正しく更新されていること
  • [ ] 列C以降の数式が引き続き機能していること
  • [ ] 退職口座の合計値がCSVの合計値とほぼ一致すること
  • [ ] 数式エラーが導入されていないこと

サマリーのログ:

Updated 12 retirement positions:
- VOO: 214.7947 shares
- VUG: 13.0652 shares
- VTSAX: 228.462 shares
...
Total Retirement Value: ~$387,806

重要なルール

書き込み可能な列

  • 列B: 数量のみ

触らない

  • 列A: ティッカー (事前設定済み)
  • 列C-S: すべての数式

行マッピング

退職セクションは46行目から始まります(45行目のヘッダーの後)。 46-62行目は退職口座の保有銘柄のために予約されています。

トリガーキーワード

  • "sync retirement"
  • "update retirement"
  • "retirement accounts"
  • "vanguard sync"
  • "401k update"
  • "IRA sync"
  • "retirement quantities"

スキルタイプ: ドメイン (ワークフローガイダンス) 適用: 提案 優先度: 中 行数: < 200

📜 原文 SKILL.md(Claudeが読む英語/中国語)を展開

Retirement Account Syncing

Purpose

Safely import Vanguard and Fidelity retirement account CSV exports into the Google Sheets DataHub retirement section, updating only quantities (Column B).

When to Use

Use this skill when:

  • Syncing retirement account positions from notebooks/retirement-accounts/
  • User mentions: "sync retirement", "update retirement", "vanguard sync", "401k update", "IRA sync"
  • Working with files in notebooks/retirement-accounts/ directory

Source Files

Location: notebooks/retirement-accounts/

File Source Contents
OfxDownload.csv Vanguard IRAs Account 39321600 & 35407271 holdings
OfxDownload (1).csv Vanguard Brokerage Account 53527429 & 50580939 holdings
Portfolio_Positions_*.csv Fidelity 401(k) {employer_name} 401(k) Plan holdings

CSV Formats

Vanguard OFX Format (OfxDownload.csv)

Account Number,Investment Name,Symbol,Shares,Share Price,Total Value,
39321600,VANGUARD S&P 500 INDEX ETF,VOO,18.1817,629.3,11441.74,

Key Fields:

  • Column 3: Symbol
  • Column 4: Shares (quantity)

Fidelity 401k Format (PortfolioPositions*.csv)

Account Number,Account Name,Symbol,Description,Quantity,Last Price,...
86689,{employer_name} 401(K) PLAN,FGCKX,FID GROWTH CO K,4.447,$50.04,...

Key Fields:

  • Column 3: Symbol
  • Column 5: Quantity

DataHub Target Location

Spreadsheet ID: Read from fin-guru/data/user-profile.yaml

Retirement Section: Rows 46-62 (after the "RETIREMENT ACCOUNTS (VANGUARD)" header at row 45)

Row Ticker Description
46 VOO Vanguard S&P 500 ETF
47 VUG Vanguard Growth ETF
48 VTSAX Vanguard Total Stock Market
49 SCHG Schwab US Large-Cap Growth
50 PLTR Palantir
51 NVDA NVIDIA
52 TSLA Tesla
53 VB Vanguard Small-Cap ETF
54 ARKK ARK Innovation
55 VMFXX Vanguard Money Market
56 FGCKX Fidelity Growth Company K
57 FXAIX Fidelity 500 Index
58-62 Reserved Future holdings

Core Workflow

1. Read All CSV Files

# Read Vanguard files
vanguard_1 = read_csv("notebooks/retirement-accounts/OfxDownload.csv")
vanguard_2 = read_csv("notebooks/retirement-accounts/OfxDownload (1).csv")

# Read latest Fidelity file (by date in filename)
fidelity = read_csv("notebooks/retirement-accounts/Portfolio_Positions_*.csv")

2. Aggregate Holdings by Ticker

Since the same ticker can appear in multiple accounts, SUM all quantities:

holdings = {}
for file in [vanguard_1, vanguard_2, fidelity]:
    for row in file:
        ticker = row['Symbol']
        shares = float(row['Shares'] or row['Quantity'])
        holdings[ticker] = holdings.get(ticker, 0) + shares

Expected Aggregations:

  • VOO: Sum across accounts (IRA + Brokerage)
  • VUG: Sum across accounts
  • PLTR: Sum across accounts (53527429 + 50580939)
  • SCHG: Sum across accounts
  • VMFXX: Sum across accounts (all money market)
  • VTSAX: Sum across accounts

3. Update DataHub Column B Only

WRITABLE: Column B (Quantity) only

DO NOT TOUCH:

  • Column A (Ticker) - already set
  • Column C onwards - formulas
// Update VOO quantity (Row 46)
mcp__gdrive__sheets(operation: "updateCells", params: {
    spreadsheetId: SPREADSHEET_ID,
    range: "DataHub!B46:B46",
    values: [["214.7947"]]  // Aggregated quantity
})

4. Update Pattern

Loop through each retirement ticker and update Column B:

Ticker Range Aggregation
VOO B46 18.1817 + 196.613 = 214.7947
VUG B47 10.9488 + 2.1164 = 13.0652
VTSAX B48 126.336 + 102.126 = 228.462
SCHG B49 100 + 6 = 106
PLTR B50 25 + 42 = 67
NVDA B51 150
TSLA B52 58
VB B53 20
ARKK B54 16.13
VMFXX B55 2.94 + 0.57 + 179.92 + 428.42 = 611.85
FGCKX B56 4.447
FXAIX B57 3.705

Safety Checks

Before updating:

  • Verify all 3 CSV files exist in notebooks/retirement-accounts/
  • Confirm row mapping matches expected tickers
  • Log any new tickers not in current sheet

Large Change Warning (>20%):

  • If any quantity changes more than 20%, show diff and ask for confirmation

Example Execution

// Step 1: Read CSVs and aggregate
const holdings = aggregateFromCSVs();

// Step 2: Update each ticker's quantity
const updates = [
    { range: "DataHub!B46:B46", values: [[holdings.VOO.toFixed(4)]] },
    { range: "DataHub!B47:B47", values: [[holdings.VUG.toFixed(4)]] },
    { range: "DataHub!B48:B48", values: [[holdings.VTSAX.toFixed(3)]] },
    // ... etc
];

for (const update of updates) {
    mcp__gdrive__sheets(operation: "updateCells", params: {
        spreadsheetId: SPREADSHEET_ID,
        ...update
    });
}

// Step 3: Log summary
console.log("Updated 12 retirement positions");

Post-Update Validation

Verify:

  • [ ] All quantities updated correctly
  • [ ] Formulas in columns C+ still working
  • [ ] Total retirement value approximately matches sum of CSV totals
  • [ ] No formula errors introduced

Log Summary:

Updated 12 retirement positions:
- VOO: 214.7947 shares
- VUG: 13.0652 shares
- VTSAX: 228.462 shares
...
Total Retirement Value: ~$387,806

Critical Rules

WRITABLE Column

  • Column B: Quantity ONLY

DO NOT TOUCH

  • Column A: Tickers (pre-set)
  • Columns C-S: All formulas

Row Mapping

Retirement section starts at row 46 (after header at row 45). Rows 46-62 are reserved for retirement holdings.

Trigger Keywords

  • "sync retirement"
  • "update retirement"
  • "retirement accounts"
  • "vanguard sync"
  • "401k update"
  • "IRA sync"
  • "retirement quantities"

Skill Type: Domain (workflow guidance) Enforcement: SUGGEST Priority: Medium Line Count: < 200