Navigate FreeTaxUSA to verify entered tax data against source documents (W-2s, 1099s, spreadsheets), resolve Tax Return Alerts, enter or correct values in the browser, and run planning tools like estimated tax and extension calculations. Use when the user wants to check, fix, complete, or plan around their FreeTaxUSA return.
The skill supports the following explicit commands. Detect the command from the user's message:
| Command | What it does |
|---|---|
/freetaxusa | Interactive — ask check vs file if ambiguous |
/freetaxusa check | Read-only audit. Compare every document to FreeTaxUSA. No changes made. Output audit report. |
/freetaxusa file | Full run — verify, correct mismatches, resolve alerts, proceed toward filing |
/freetaxusa alerts | Jump directly to Tax Return Alerts and resolve them |
/freetaxusa status | Show what's been verified, what's pending, current balance due or refund |
/freetaxusa w2 | Verify W-2 entries only |
/freetaxusa schedule-e |
| Verify Schedule E rental properties only |
/freetaxusa schedule-c | Verify Schedule C business income only |
/freetaxusa investments | Verify 1099-DIV, 1099-B, capital gains, and carryovers |
/freetaxusa k1 | Walk through K-1 partnership entries one by one |
/freetaxusa compare | Generate year-over-year comparison from CLAUDE.md data |
/freetaxusa estimate | Calculate Q1–Q4 estimated tax payments for next year |
/freetaxusa extension | File Form 4868 extension and calculate how much to pay with it |
/freetaxusa whatif | Run what-if scenarios (401k contribution, property sale, income change) |
Perform these steps in order before doing anything else.
Parse the user's invocation to identify the command (see table above).
For /freetaxusa with no argument, detect mode:
check mode — Read-only verification. Compare source documents to FreeTaxUSA. Report mismatches. Make NO changes to FreeTaxUSA. Output an audit report.file mode — Full correction + submit. Verify, correct mismatches, resolve alerts, and proceed toward filing.If ambiguous, ask: "Should I check and report only, or also make corrections and proceed toward filing?"
Section-specific commands (w2, schedule-e, etc.) skip to that section directly — do not run the full workflow.
Planning commands (estimate, extension, whatif, compare) do not open FreeTaxUSA — they work from documents and CLAUDE.md data only.
Look for a checkpoint file in the tax documents folder:
ls "$(pwd)/.freetaxusa-checkpoint.json" 2>/dev/null
If found, read it and ask: "A previous session was in progress (last run: DATE, mode: MODE, completed: SECTIONS). Resume from where it left off, or restart from the beginning?"
Checkpoint file structure:
{
"completed": ["w2", "schedule_e", "investments"],
"lastRun": "2026-03-18",
"mode": "file",
"taxYear": "2025",
"taxpayer": "Your Name"
}
Write checkpoint updates after each major section completes.
mcp__claude-in-chrome__tabs_context_mcp, then get the current tab. (Skip for planning commands.)CLAUDE.md in the current directory if present.⚠️ No prior year Form 1040 found. This is needed for Form 2210 safe harbor (prior AGI + total tax), capital loss carryovers, and year-over-year comparison. Add it to your tax folder or paste the key figures into CLAUDE.md.
If no CLAUDE.md exists, run the questionnaire before proceeding:
1. What is your name and filing status? (Single / MFJ / MFS / HOH)
2. What tax year are you filing?
3. Do you have your prior year Form 1040 available? (PDF or printed copy)
→ If yes: where is the file, or paste the key figures: Line 11 (AGI) and Line 24 (Total Tax).
→ This is needed for Form 2210 safe harbor, estimated payment calculations, and year-over-year comparison.
→ If no: we'll proceed but some checks will be skipped.
4. List all W-2 employers (person, employer name, EIN if known).
5. Do you have rental properties? If yes, list addresses and ownership %.
6. Are you a Real Estate Professional (>750 hrs/year in real estate)?
7. Do you have investment accounts with 1099-INT, 1099-DIV, or 1099-B?
→ If yes: do you have capital loss carryovers from last year? (Prior Schedule D, Line 6 and Line 14)
8. Do you have a Schedule C business?
9. Any K-1s from partnerships or S-corps?
10. Where are your tax documents stored (local folder path)?
Use answers to create a minimal CLAUDE.md. Refer to workspace-template.md.
FreeTaxUSA is a React SPA. Standard click-and-type does not work. You must use the React native input setter:
function setReactField(id, value) {
const el = document.getElementById(id);
if (!el) return `NOT FOUND: ${id}`;
const setter = Object.getOwnPropertyDescriptor(
window.HTMLInputElement.prototype, 'value'
).set;
setter.call(el, String(value));
el.dispatchEvent(new Event('input', { bubbles: true }));
el.dispatchEvent(new Event('change', { bubbles: true }));
return `OK: ${id} = ${value}`;
}
Always use javascript_tool to run this. Never use type action on FreeTaxUSA inputs directly.
To find field IDs: use javascript_tool to query document.querySelectorAll('input') and inspect id, name, and value attributes.
FreeTaxUSA's nav menu items are buttons, not links. Use JavaScript to click them by exact text:
const buttons = Array.from(document.querySelectorAll('a, button'));
const target = buttons.find(b => b.textContent.trim() === 'EXACT TEXT HERE');
target ? (target.click(), 'clicked') : 'not found'
Never use buttons[index] — index-based clicking risks hitting Sign Out or other destructive buttons.
Safe navigation targets (exact text):
Personal, Income, Deductions / Credits, Misc, Summary, State, Final StepsFederal Payment, State Refund, Refund / Payment Method Summary, Driver's License, Tax Return AlertsW-2 Income, Interest Income, Dividend Income, Your Rental Income (Schedule E), Partnership Income (Schedule E), Business Income (Schedule C)Estimated Tax PaymentsField IDs in FreeTaxUSA may change between tax years. If a hardcoded ID returns NOT FOUND, use label-proximity discovery:
function findFieldByLabel(labelText) {
const labels = Array.from(document.querySelectorAll('label'));
const label = labels.find(l => l.textContent.includes(labelText));
if (label?.htmlFor) return document.getElementById(label.htmlFor);
const parent = label?.closest('div, tr, li, fieldset');
return parent?.querySelector('input, select, textarea');
}
const el = findFieldByLabel('Box 14');
console.log(el?.id, el?.value);
Always verify the discovered element matches the expected field before writing. Log new IDs to common-field-ids.md.
To enumerate all inputs on the current page:
Array.from(document.querySelectorAll('input, select')).map(el => ({
id: el.id, name: el.name, type: el.type, value: el.value,
label: document.querySelector(`label[for="${el.id}"]`)?.textContent?.trim()
}))
pdftotext -layout "/path/to/W2.pdf" -
Read tool: file_path = "/path/to/document.pdf"
| Form | Key Boxes |
|---|---|
| W-2 | Box 1 (wages), Box 2 (fed withheld), Box 12 (codes), Box 14 (other), Box 15-17 (state) |
| 1099-INT | Box 1 (interest), Box 4 (fed withheld), Box 8 (tax-exempt), Box 11 (bond premium) |
| 1099-DIV | Box 1a (ordinary divs), Box 1b (qualified), Box 2a (cap gain dist), Box 7 (foreign tax) |
| 1099-B | Proceeds, Cost basis, Short/Long term, Wash sale disallowed |
| 1098 | Box 1 (mortgage interest), Box 5 (mortgage insurance), Box 10 (real estate taxes) |
| SSA-1099 | Box 3 (gross benefits), Box 4 (repaid), Box 5 (net = Box3 - Box4) |
| K-1 (1065) | Box 1 (ordinary income/loss), Boxes 2-12 (separately stated items) |
/freetaxusa checkRead-only. Make zero changes to FreeTaxUSA.
javascript_tool/freetaxusa fileFull end-to-end run.
/freetaxusa statusWithout opening FreeTaxUSA, read the checkpoint file and CLAUDE.md and report:
/freetaxusa w2javascript_tool to read current valuescheck mode: log mismatches. In file mode: correct using React setter.Box 14 special handling:
Multi-state: If W-2 has multiple Box 15-17 rows, enter each state separately.
/freetaxusa schedule-eFor each rental property:
Standard residential (27.5yr GDS):
Real Estate → Residential Rental PropertyADS / non-standard (e.g., 40yr):
Partial ownership: FreeTaxUSA has no ownership % field. Enter only the taxpayer's proportional share pre-divided.
/freetaxusa schedule-c/freetaxusa investmentsNotes:
/freetaxusa k1Navigate to: Income → Partnership Income (Schedule E)
For each K-1:
/freetaxusa extension/freetaxusa alertsNavigate directly to: Final Steps → Tax Return Alerts
Red alerts must be fixed. Yellow alerts can be continued past.
| Alert | Resolution |
|---|---|
| Rental Missing Depreciable Rental Property | Harmless if using ADS "Other" workaround — continue |
| You might owe an underpayment penalty | Misc → Underpayment Penalty → Form 2210; enter prior year AGI and tax |
| Federal Payment Less/More than Tax Owed | Final Steps → Federal Payment → update direct debit amount |
| Tax Penalty Date Paid | Informational — defaults to April 15, acceptable |
| NYC IRC 125 addition | State → NY → Miscellaneous Additions; update field amount_472 |
/freetaxusa compareDoes not open FreeTaxUSA.
Data sources (in priority order):
Steps:
| Item | Prior Year | Current Year | Change | Driver |
|---|---|---|---|---|
| Wages | ||||
| Other income | ||||
| AGI | ||||
| Deduction | ||||
| Total Tax | ||||
| Federal Outcome | ||||
| State Outcome | ||||
| CPA / prep cost | ||||
| Errors found |
/freetaxusa estimateCalculates Q1–Q4 estimated tax payments for the next tax year. Does not open FreeTaxUSA.
Inputs needed (read from CLAUDE.md or ask user):
Safe harbor calculation:
Output:
Estimated Tax Payments — [Next Tax Year]
Safe Harbor (based on [current year] tax of $XX,XXX):
Q1 due April 15: $X,XXX
Q2 due June 15: $X,XXX
Q3 due September 15: $X,XXX
Q4 due January 15: $X,XXX
Total: $XX,XXX
Withholding check: If your employer withholds $XX,XXX/year, you owe
$X,XXX in additional estimated payments.
Recommendation: [adjusted amounts if income is expected to change significantly]
Offer to save these figures to CLAUDE.md under an "Estimated Payments" section.
/freetaxusa extensionFiles Form 4868 and calculates the payment due. Does not require FreeTaxUSA to be open.
Extension facts:
Steps:
Output:
Extension Calculation
Projected tax: $XX,XXX
Withholding paid: -$XX,XXX
Amount due with Form 4868: $X,XXX
New filing deadline: October 15, [year]
Payment still due: April 15, [year]
[If amount > 0]: Pay via IRS Direct Pay at directpay.irs.gov to avoid penalties.
/freetaxusa whatifRuns what-if tax scenarios without opening FreeTaxUSA. Uses current year figures from CLAUDE.md as the baseline.
Supported scenarios (detect from user's message or offer a menu):
For each scenario:
check and file modes)After all sections are verified, run these flags before generating the audit report:
If taxable income exceeds ~$220K (single) or ~$267K (MFJ), flag for potential Alternative Minimum Tax. FreeTaxUSA calculates Form 6251 automatically, but confirm it's not showing unexpected AMT on the Summary page.
If AGI exceeds $200K (single) or $250K (MFJ) AND there is investment income (dividends, capital gains, rental income), confirm Net Investment Income Tax (3.8%) appears on Schedule 2, Line 12.
If there is Schedule C income or K-1 income from a pass-through entity, flag that the taxpayer may qualify for the Section 199A 20% deduction. Check if FreeTaxUSA is calculating it on Schedule 1.
Compare total withholding (W-2 Box 2 + any estimated payments) to total tax liability. If gap exceeds $1,000:
⚠️ Withholding shortfall of $X,XXX detected. You may owe an underpayment penalty. Run
/freetaxusa alertsto address Form 2210.
Cross-reference CLAUDE.md's list of expected documents against what has been verified. Report any gaps:
⚠️ The following expected documents were not verified: [list]
Also flag if no prior year Form 1040 was found:
⚠️ Prior year Form 1040 not found. Add it to your tax folder to enable year-over-year comparison, Form 2210 safe harbor calculation, and carryover verification.
Inputs needed (from CLAUDE.md or user):
Field IDs on the prior year info screen:
prior_agiprior_tax_after_creditsprior_additional_medicare_taxprior_net_investment_income_taxRequired in file mode before proceeding to filing.
const fields = Array.from(document.querySelectorAll('input[type="text"], input[type="number"]'));
fields.map(el => ({ id: el.id, value: el.value }))
Re-navigate to each completed section and spot-check at least 3 key fields. Document all re-reads in the audit report as "Verified" or "Re-corrected." Do not proceed to Final Steps until all values confirm.
File path: {tax-docs-folder}/audit-YYYY-MM-DD.md
# FreeTaxUSA Audit Report
**Date:** YYYY-MM-DD
**Command:** /freetaxusa [command]
**Mode:** check | file
**Tax Year:** 20XX
**Taxpayer:** [Name]
**Return:** Federal + [State]
## Documents Read
- [list all source documents]
## Field Verification Table
| Field | Section | Source Value | FreeTaxUSA Value | Status |
|-------|---------|-------------|-----------------|--------|
## Smart Check Results
| Check | Result | Notes |
|-------|--------|-------|
| AMT | Clear / ⚠️ Review | |
| NIIT | Clear / ⚠️ Applies | |
| QBI | Clear / ⚠️ May apply | |
| Withholding gap | Clear / ⚠️ $X shortfall | |
| Missing documents | Clear / ⚠️ [list] | |
## Alerts
| Alert | Type | Resolution |
|-------|------|-----------|
## Pre-Submit Validation
All written fields re-verified: YES / PARTIAL / NO
## Year-Over-Year Comparison
| Item | Prior Year | Current Year | Change |
|------|-----------|-------------|--------|
## Notes
See workspace-template.md for the full template. Lives at the root of the user's tax folder and is loaded automatically each session.