Building tools that run on your own machine, hold their own data, and explain what they did.
◆ Sift — a local-first AI intelligence workstation
Following AI properly turned into a part-time job: six timelines, three languages, the same launch reported twenty times, and a bookmarks folder nothing could search. Sift is the whole loop in one place.
It collects from X, 小红书, Hacker News, arXiv, GitHub, Hugging Face, Reddit and RSS; scores every item on six explainable axes and shows the full breakdown for any score; folds duplicates — including the same story retold in different words; and searches in English and Chinese with equal competence.
Everything lives in one SQLite file on your machine. No account, no telemetry, no API key required.
Zero native dependencies — SQLite is Node 24's built-in node:sqlite, so pnpm install cannot fail on node-gyp · under 10s clean-clone install · 79 tests · <15ms hybrid search, exact rather than approximate
Website · Showcase · Architecture · Scoring model
◆ canslim — CANSLIM scoring for A-shares, as an agent skill
npx skills add micaho26/canslimO'Neil's CANSLIM, calibrated letter by letter, turned into a runnable engine for Chinese A-shares. Six-digit codes in; a seven-factor scorecard and Excel report out, from public endpoints with no API key.
Three deliberate choices, because they are what keep the output honest:
- N is excluded from automatic scoring. "New" is the fuel in CANSLIM and often the source of C and A — but it is irreducibly qualitative. A script that scored it would be inventing a number.
- M is a gate, not a component. Roughly three quarters of stocks follow the index, so a 6/6 name still falls in a red market. M does not add to the score; it says whether to act on it at all.
- Missing is not zero. A throttled field renders as a dash, never as 0% growth. Conflating the two is how a screening tool starts lying.
Decision support, not a trading signal. 32 offline tests, deliberately not touching the network so no data-provider outage can turn CI red.
Both MIT. Built to be read, forked and disagreed with.