The problem
HubSpot's developer platform is built and extended through the command line. As AI coding agents took off, developers scattered across Claude Code, Cursor, Codex, Gemini, and Windsurf, and none of those agents could actually talk to HubSpot. The tooling also carried years of debt: an insecure config format, inconsistent logging, and an onboarding flow that quietly failed for roughly a third of new developers.
What I built
I joined as a co-op and converted to full-time on the Developer Experience team. My biggest win was a Model Context Protocol server that lets agents drive the HubSpot platform directly, then the integrations that shipped it across all five major editors and agents.
I also led the CLI's largest architectural project: a multi-repo overhaul of configuration
management (hs account link) that replaced the insecure hubspot.yml with a structured
.hs/settings.json model. I built the proof of concept, drove team buy-in, partnered with
design on the UX, and applied seven design patterns (SRP, IoC, CQS, SoC, OCP, DRY, ISP) in
the refactor, then broke a 3,800-line change into four cleanly reviewable pieces.
Alongside it I designed the core logging abstraction and migrated it across 161 files and
roughly 5,000 lines, modernized the CLI from yargs to React Ink (owning the Table and List
components in v8), and built the release-management command suite (hs project release create / list / info, plus a --preview flag on hs project upload) that replaced the
deprecated deploy path.
// one logging abstraction, adopted across 161 files
const logger = createLogger("project:upload");
logger.debug("starting upload", { account, projectName });
try {
await uploadProject(account, projectName);
logger.success("upload complete");
} catch (err) {
logger.error(err, { hint: "run hs project logs for details" });
}Going agent-first
I now drive the "Agent First CLI" direction: rethinking the hs CLI as a deterministic
surface that AI agents (not just humans) can call, and re-architecting the CLI and
local-dev-lib repos to be agent-agnostic across tools like Claude Code and Codex. I also
build internal developer-productivity automation, including a custom triage skill that
closed 36 long-stale GitHub issues in a single session, and proactively measured the
platform's agent-readiness by scoring our developer docs and surfacing the gaps.
Impact
The MCP server grew the developer community from 346 to 1,817 quarterly active developers, a 425% jump with 72% week-4 retention. The config overhaul moved first-run success from 65% to 97%. Tooling I own ships to more than 4,000 developers every week, across the CLI, local-dev-lib, and the VS Code extension. The work put me on a senior-engineer track, owning ambiguous, multi-repo projects end to end.