How Claude Code Streamlined Development at MacCoss Lab
MacCoss Lab, based at the University of Washington, has spent 17 years maintaining Skyline, an open-source software tool used for protein analysis. With over 700,000 lines of C# code and over 200,000 automated nightly tests, the codebase is a behemoth that has challenged generations of developers. But Brendan MacLean, principal developer and Claude Developer Ambassador, found a novel way to manage this legacy: treating Claude Code, an AI-powered coding tool, as he would a new developer.
Skyline's longevity means its codebase carries decades of accumulated technical debt. Developers rotating in and out often left partially completed projects or untouched code areas. According to MacLean, onboarding new developers was critical to keep the project functional—and now that same methodology is being applied to AI tools.
AI as a "Trainee Developer"
Initially skeptical about whether Claude Code could handle the nuances of Skyline’s complex codebase, MacLean tested it by isolating small problems. The results were underwhelming. Every interaction with Claude felt like starting from scratch due to the lack of project context. But this sparked an idea: What if he onboarded Claude as if it were a new developer?
To achieve this, MacLean created a separate repository, pwiz-ai, to house all AI-related context. A carefully maintained CLAUDE.md file provides an overview of the project environment, while individual "skills"—task-specific capabilities—help Claude tackle issues systematically. For example, a debugging skill prompts Claude to focus on root cause analysis instead of trial-and-error fixes.
With this structure, Claude started contributing meaningfully. A long-abandoned project to create a Files View panel in Skyline was completed in just two weeks, with final commits co-authored by Claude. MacLean noted similar success in updating Skyline’s nightly test management module, which had sat untouched for three years after the original developer left.
Transforming Development Workflows
Claude Code’s impact at MacCoss Lab goes beyond completing unfinished features. The lab now uses the tool to automate tedious tasks like regenerating Skyline’s 2,000+ tutorial images and creating daily error summaries. MacLean even credits Claude with writing an MCP (Message Control Protocol) server in Python to unify data streams from various sources, enabling a centralized summary of test failures and support issues each morning.
One of the lab’s developers, initially skeptical of AI tools, successfully built a mobilogram pane for visualizing ion mobility data. MacLean says the tool has allowed developers to take on projects they previously avoided due to time constraints or complexity.
Advice for Managing Legacy Codebases
MacLean’s experience offers valuable lessons for developers grappling with aging codebases:
- Context is key: Maintain a detailed context repository, separate from the main codebase if needed, to ensure continuity across branches and developer turnover.
- Build a skill library: Use AI skills to encode domain knowledge and task-specific instructions. Keep these lightweight and easy to maintain by linking to central documentation.
- Leverage MCP integrations: When AI tools need real-time access to data, build integrations to unify various data streams. This approach allowed MacLean’s lab to automate workflows and improve developer efficiency.
A Model for Open Source Projects
MacLean’s approach has broader implications, especially for open-source projects where institutional memory is scarce. By investing in a structured context layer, projects can ensure continuity and scalability, even as contributors come and go. The pwiz-ai repository itself is open source, designed to benefit the project and its contributors over the long term.
MacLean’s key takeaway? Treating AI as a trainee developer—with proper onboarding and context—can unlock its potential in ways that go far beyond simple code generation. For teams managing sprawling legacy codebases, this methodology could be a game-changer.