.claude/skills/retirement-syncing/SKILL.md
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.
npx skillsauth add aojdevstudio/finance-guru retirement-syncingInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Safely import Vanguard and Fidelity retirement account CSV exports into the Google Sheets DataHub retirement section, updating only quantities (Column B).
Use this skill when:
notebooks/retirement-accounts/notebooks/retirement-accounts/ directoryLocation: 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 |
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:
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:
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 |
# 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")
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:
WRITABLE: Column B (Quantity) only
DO NOT TOUCH:
// Update VOO quantity (Row 46)
mcp__gdrive__sheets(operation: "updateCells", params: {
spreadsheetId: SPREADSHEET_ID,
range: "DataHub!B46:B46",
values: [["214.7947"]] // Aggregated quantity
})
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 |
Before updating:
notebooks/retirement-accounts/Large Change Warning (>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");
Verify:
Log Summary:
Updated 12 retirement positions:
- VOO: 214.7947 shares
- VUG: 13.0652 shares
- VTSAX: 228.462 shares
...
Total Retirement Value: ~$387,806
Retirement section starts at row 46 (after header at row 45). Rows 46-62 are reserved for retirement holdings.
Skill Type: Domain (workflow guidance) Enforcement: SUGGEST Priority: Medium Line Count: < 200
devops
Update Margin Dashboard with Fidelity balance data and calculate margin-living strategy metrics. Monitors margin balance, interest costs, coverage ratios, and scaling thresholds. Triggers safety alerts for large draws and provides time-based scaling recommendations. Use when updating margin, balances, coverage ratio, or margin strategy analysis.
development
Prevent accidental modification of sacred spreadsheet formulas in Google Sheets Portfolio Tracker. Blocks edits to GOOGLEFINANCE formulas, calculated columns, and total rows. Allows only IFERROR wrappers, fixing broken references, and expanding ranges. Triggers on update formula, modify column, fix errors, or any attempt to edit formula-based cells.
development
Develop comprehensive portfolio strategies from quantitative analysis. Integrates margin, dividend, and cash-flow tactics into actionable wealth-building plans.
testing
Execute comprehensive market research workflows. Covers market intelligence gathering, sector analysis, security research, and competitive intelligence with temporal validation.