findash-doctor — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited findash-doctor (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
You audit setup, fix what's safe, print a short scannable report. Diagnose → auto-fix → report. Anything needing the user goes into the report, not into a shell call.
CLAUDE.md, scripts/, templates/, docs/). Paths below are relative.root_folder_id=… in .secrets/findash under [drive] (chmod 600, gitignored).scripts/init-db.sql. Vendor script: scripts/bundle-assets.py. npm manifest: scripts/package.json.| # | Category | What | Auto-fix? |
|---|---|---|---|
| 1 | Binaries | qpdf, rclone, node ≥22.13.0, python3, sqlite3 on PATH | No |
| 2 | Dirs | data/, inbox/, output/, .secrets/ exist | mkdir -p |
| 3 | rclone.conf | ./rclone.conf exists + mode 600 | Perms; OR move ~/.config/rclone/rclone.conf → ./rclone.conf if local is absent |
| 4 | Drive root ID | .secrets/findash [drive] has a non-placeholder root_folder_id= | Perms only |
| 5 | Secrets | .secrets/findash exists + mode 600; note which [sections] are filled | Perms only |
| 6 | npm deps | scripts/node_modules/ populated | cd scripts && npm install |
| 7 | Vendor | 3 files under templates/vendor/ | python3 scripts/bundle-assets.py |
| 8 | DB | data/finance.db + has tables (incl. positions) | sqlite3 data/finance.db < scripts/init-db.sql (fresh DB only) |
| 9 | Chromium profiles | ~/.cache/findash/chromium-profile/{hapoalim,visaCal}/ (only when matching secrets exist) | No |
| 10 | Drive live | rclone lsf against vault root succeeds in 5 s | No |
| 11 | IBKR connector | optional — the official Interactive Brokers connector is added in Claude (claude.ai), not findash config; interactive-only | No |
Node: parse node --version; major ≥ 23, or major = 22 with patch ≥ 22.13.0. Perms: anything with non-zero group/others digit is wrong → chmod 600. For Drive live: read root_folder_id=… from .secrets/findash [drive]; if it's missing or the value is empty/placeholder/<20 chars, skip the live call and let check #4 own it.
Positions table (#8): if data/finance.db exists but lacks the positions table (an older install), don't re-run init-db.sql against a populated DB — its plain CREATE TABLEs will error. The table is added idempotently on the next /findash:fetch-investments (or apply scripts/init-db.sql's positions block by hand); note it under ⚠️ Optional, not a blocker. IBKR connector (#11): purely informational and optional — the official Interactive Brokers connector is added by the user via Claude's connector directory, not by findash, and is interactive-only, so never treat its absence as an install error. If it's visible in this session (/mcp shows Interactive Brokers (IBKR) · connected), note ✓ OK; otherwise a one-line ⚠️ Optional pointer ("add it via Claude → Connectors if you want portfolio snapshots"). Never print balances, account ids, or positions (principle #1).
mkdir -p data inbox output .secrets./rclone.conf is missing but ~/.config/rclone/rclone.conf exists (rclone's default XDG path — what plain rclone config writes to), move it: mv ~/.config/rclone/rclone.conf ./rclone.conf. Then re-check perms in step 3. (Not a symlink — the project owns this file.)chmod 600 rclone.conf and .secrets/findash if either exists and is looser than 600sqlite3)(cd scripts && npm install) if node_modules/ empty (needs valid node; stream stderr)python3 scripts/bundle-assets.py if any vendor file missing (needs python3). On macOS, if it fails with SSL: CERTIFICATE_VERIFY_FAILED, fix and retry once: pip3 install --upgrade certifi then run the Python.org cert installer for the active version (/Applications/Python\ <MAJOR.MINOR>/Install\ Certificates.command). If the retry succeeds, list the cert fix and the asset bundle as two separate ✅ Fixed bullets. If it still fails, that's a 🚫 Blocker.Re-check after each fix so the report shows post-fix state. Don't auto-install OS-level binaries (Homebrew / apt), touch nvm, generate creds, run rclone config, or run anything --setup. (Pip / npm / vendored asset downloads are fine — they're local, idempotent, and the whole point of auto-fix.)
If the Drive live check's preconditions don't hold (rclone or rclone.conf missing), report skipped — <reason>, not a fake OAuth error.
rclone, rclone.conf, Drive root ID, python3, vendor assets, qpdf when unsure.)[telegram], [pdf-passwords], [hapoalim], [cal] sections of .secrets/findash individually, chromium profile when its source's secrets are absent, the IBKR connector when not added/connected — gates the interactive investments snapshot.)[<source>] section in .secrets/findash) — creds without a trusted cookie → SMS challenge.Emojis, compact, sections only when non-empty. Today's date.
🩺 findash — <YYYY-MM-DD>
✅ Fixed
<comma-separated short phrases on one or two wrapped lines>
🚫 Blockers
• <thing> — <one-line fix>
⚠️ Optional (skip if you don't use that feature)
• <thing> — <what it gates>
✓ OK
<comma-separated inline list, wrap ~80 cols>Drop the ✅ block if nothing was fixed. If zero blockers AND zero optional gaps, the whole report collapses to:
🩺 findash — all systems go.Remediation = exact shell command when possible. Detect OS (uname -s → Darwin / Linux) and match install hints (brew install … vs sudo apt install -y …). For OAuth / --setup, name the exact command.
Example on a partially-set-up macOS box:
🩺 findash — 2026-05-27
✅ Fixed
inbox/, output/ created • .secrets/findash chmod 600 (was 644)
🚫 Blockers
• rclone — `brew install rclone`
• Drive vault — connect failed (5s); `rclone --config ./rclone.conf config reconnect gdrive:`
⚠️ Optional
• .secrets/findash [cal] — only for fetching credit-card data
• chromium-profile/visaCal — not blocking yet (no [cal] creds)
• IBKR connector — not connected; add it via Claude → Connectors for portfolio snapshots
✓ OK
qpdf, python3 3.13, node 22.14.0, sqlite3, rclone.conf, Drive root ID,
.secrets/findash ([hapoalim] [pdf-passwords]), finance.db (12 MB), node_modules/, vendor/rclone is missing, the Drive-live line says "skipped — rclone missing", not "OAuth expired".scripts/package.json is missing, flag the missing manifest.🔍 Note line, not into the matrix.~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.