I build iPhone apps and the small tools that make shipping them less painful, and I fix bugs in the open-source projects I depend on.
limitbar (v2.1.0). A Windows 11 taskbar widget that shows how much of your AI plan limits you have used: Claude Code, Codex, Grok and Cursor out of the box, plus any HTTP endpoint, script or file you point it at. One 0.6 MB native Rust exe, read-only with your existing sign-ins.
heavy-gate (v1.0.1). heavy run -- cargo build waits for a free slot and enough free RAM before it starts, so builds from parallel AI agent sessions on one machine start a few at a time instead of all at once. Windows, Linux and macOS, one small Rust binary, no service; it includes a Claude Code hook that blocks unwrapped builds.
mcp-standby (v1.0.0). Keeps stdio MCP servers on standby: it answers initialize and the tool, prompt and resource lists from a cached manifest and starts the real server on the first call that needs it, so an idle server costs under 1 MB instead of a full Node or Python runtime. Windows, Linux and macOS, one small Rust binary, for Claude Code or any stdio MCP client.
App Store submission preflight. Four separate CLIs that check a fastlane deliver tree, or the app sources behind it, before App Store Connect sees it. The three Node tools have no runtime dependencies, run offline and exit non-zero, so they can gate CI.
| Tool | What it checks | Install |
|---|---|---|
| metaproof | Localized metadata text: required files, field lengths, the ASO keyword field, URLs. Safe --fix for keyword separators and duplicates. |
npm metaproof@0.6.1, Action vsolano9/metaproof@v0.6.1 |
| screenproof | Screenshot and app-preview files: dimensions, format, counts, locale folders, video codec, duration and audio. | npm screenproof@0.7.0, Action vsolano9/screenproof@v0.7.0 |
| localeproof | Locales the app ships (*.xcstrings, knownRegions, *.lproj) against the locales the listing promises. |
npm localeproof@0.1.0, Action vsolano9/localeproof@v0.1.0 |
| claimproof | What the screenshots say: Vision OCR read back and compared with String Catalogs, .strings, Swift literals and your real price. macOS only. |
Clone and build with swiftc (v0.1.1) |
Also public: agent-grid (v1.4.0, a macOS app with Codex, Claude, Grok and Cursor Agent terminals in one grid that remembers your folder), splat-walk (a three.js WebGPU Gaussian splat explorer) and voice-rewriter (voice-rewriter@0.1.1, a fail-closed Gemini rewriter that rejects drafts whose facts or meaning drift).
99 merged pull requests in 38 repositories so far (October 2026). Mostly bug fixes and the tests that pin them. A few I like:
- open-policy-agent/opa #8946:
opa test --format jsonresults can be read back into structured errors. - goss-org/goss #1099: fixed a nil-pointer panic in
AndMatcherthat had been open for 23 months, plus four follow-ups (#1096, #1097, #1098, #1107). - carvel-dev/ytt #1000: files saved with a UTF-8 BOM now parse in YAML, Starlark and text templates.
- ClickHouse/clickhouse-connect #995: a failed Cython build now stops instead of silently installing the slow pure-Python fallback.
- dynamodb-toolbox #1260:
castAs<T>()types surviveupdateLinkcallbacks. - nodejs/doc-kit #933, SUSE/connect-ng #429, getsentry/MobileBuildMCP #456, and three fixes each to sqlfmt, MyIP and MacSai.
- jocosocial/swiftarr: 11 merged, including CI that now runs the 59 database-backed tests that had never executed.
I use AI coding agents (Claude Code and Codex) for much of this work.
Site: thechosenvictor.com

