
THE PROBLEM: Major dependency upgrades get put off. A bot can open the version bump, but a developer still has to find every place the package is used, work out which breaking changes actually apply, change the code, fix the tests, run lint, tests and build, and explain it all in a pull request. AI assistants can edit code quickly, but teams rarely trust an unsupervised change across dozens of files. So the upgrade waits until a security fix or a deadline forces it. WHAT IT IS: Codebase Doctor is an IBM Bob 2.0 skill (migration-doctor) and a local MCP server with 12 tools. It is for developers and engineering leads who maintain JavaScript and TypeScript codebases and want upgrades that are fast, supervised and provable. Today's golden path is React 17 to 18. HOW YOU USE IT: In IBM Bob you type one sentence: "Upgrade react to 18.3.1 in [your repo]". Codebase Doctor then: • scans the whole package family (react, react-dom and their subpaths) with an AST, listing every import and API call with file and line, and checks peer ranges before installing; • keeps only the breaking changes that apply to this code, and ranks files by risk from concrete API evidence; • writes an ordered plan in Bob's Plan mode, and stops; • after you type "approved", applies one commit per step: codemods where they are safe, judgement calls marked for you, failed steps rolled back; • runs your repository's own lint, test and build scripts, keeps every run, and loops on failures; • opens a pull request only when the checks pass on the pushed commit, with the full report as its description. Bob shows the report as an artifact throughout. WHAT MAKES IT DIFFERENT: • The human gate is enforced by the server, not requested in a prompt. The branch, patch and pull-request tools refuse to run until you approve, and the approval is bound to a hash of the plan's content: change the plan and it needs a new "approved". • Proof, not promises: success means your own checks passed on the new versions, not that the model says so. • Honest reporting. Every number is labelled measured, estimated or not measured, and session files are HMAC-sealed, so a hand-edited "passed" result is shown as untrusted. • It runs on your machine. Only the verified branch is pushed. DOES IT WORK? In a recorded end-to-end run on a React 17 app, with real npm install, ESLint, Jest and esbuild runs: 11 files used react, 9 needed attention and 4 were high-risk; a peer conflict was caught before install; the first verification failed on a deprecated call and a batching-sensitive test, and the second passed after the fixes; the pull request went to a local GitHub sandbox. 241 automated tests cover the server. Demo and step-by-step replay: codebase-doctor-bob2.vercel.app
27 Sep 2026

AMD Video Captioning turns a single short clip into four captions, each in a distinct voice: formal, sarcastic, humorous-tech, and humorous-non-tech. The guiding idea is "facts first, personality second." Rather than captioning blind, the app uses ffmpeg to sample keyframes evenly across the clip and sends them to a vision-capable model on the Fireworks AI API (kimi-k2p6), which returns a factual description of what actually happens on screen. That grounded understanding is then re-voiced into all four styles, so every caption stays accurate while sounding completely different. A built-in LLM judge scores each caption on accuracy and tone, the same rubric the contest uses, making quality visible before submission. The project ships as a FastAPI backend with a zero-build web UI for selecting styles, a batch runner that produces a submission file for the entire clip set, and a swappable provider that falls back to an offline mock when no API key is present. Fireworks model IDs live in a single config value, so swapping models or dropping in a fine-tuned captioner is a one-line change.
13 Jul 2026