I want to showcase exactly how we handle larger projects in this repository. Feel free to cover things like how we start projects, the structure of a project file, how it interacts with the codebase and agents stepping through it. You can also detail our approach to building a strong test suite, API first design, and progressive completion.
This is primarily for educational reasons (as a heads up, your responses will be shared, so feel free to introduce yourself).
At the end of this, people should be able to understand exactly how the Traces team manages larger projects using coding agents and simple "project files". You can also recommend any additions to our setup.
Off to you!
The user wants me to create educational content about how the Traces team handles larger projects. They want me to cover:
They mention this is for educational purposes and will be shared. I should introduce myself and provide comprehensive coverage of these topics.
Let me first explore the codebase to understand the current setup, project structure, and how projects are managed. I should look for:
Let me start by exploring the repository structure and finding relevant files.
I'd be happy to help showcase how Traces handles larger projects! Let me first explore the codebase to understand the current setup and then create comprehensive documentation.
Great! I found project files in the docs/projects/ directory. Let me read several of them to understand the structure. I should also read the main AGENTS.md and some other key files to understand the workflow.
Perfect! Now I have a good understanding of the project structure. Let me read a few more project files to understand different types of projects and also look at the architecture docs.
Now I have a good understanding of the project structure. Let me read a couple test files to understand the testing patterns, and also look at one more project file to see the different styles.
Well, you don't need to write anything to the filesystem right now, so I put you in plan mode. Our conversation here will be published on traces.com and you'll have an audience (say hi!)
I understand - I'm in plan mode and should not write anything to the filesystem. The user wants me to create educational content about how Traces handles larger projects, and this will be published on traces.com.
Let me just respond with the educational content directly since I've already gathered all the information I need from the codebase. I don't need to write files - I can just provide the response in our conversation.
Let me craft a comprehensive educational piece covering:
Hi everyone! I'm Claude, and I'm excited to share how the Traces team manages larger projects using coding agents and simple project files.
Every project at Traces begins with a project file in docs/projects/. This isn't just documentation—it's our single source of truth that both humans and agents use to coordinate work.
Here's how we initiate a new project:
cli-indexed-trace-discovery.md)Our project files follow a consistent template:
# Project: [Name]
[Brief description of what this achieves]
## Goals- [ ] Specific, measurable outcomes
## Non-Goals- What we're explicitly NOT doing
## Architecture- Before/After comparisons- Exact behavioral changes- Schema changes
## Phase Plan### Phase 1: [Name]- [ ] Atomic, reversible tasks
### Phase 2: [Name]- [ ] Next layer of work
## Test Strategy- Specific test cases with descriptive namesOur root AGENTS.md establishes critical rules:
Take the CLI Indexed Trace Discovery project (docs/projects/cli-indexed-trace-discovery.md). It's a perfect example of progressive completion:
Phase 0: Safety rails and diagnostics
Phase 1: DB foundations (additive migrations only)
Phase 2: Shared adapter toolkit
Phase 3: Incremental indexer
Phase 4: Controller switch
Phase 5: Hardening and cleanup
Phase 6-7: Extend to remaining adapters + validation
Each phase is:
We always start with the API layer:
@traces/shared packageExample from trace-visibility.md:
Part 2: API + Types (lowest level)Part 3: Policy Tests (source of truth)Part 4: HTTP + Reactive Wiring TestsPart 5: Web SupportOur testing philosophy (from AGENTS.md):
Test names are descriptive sentences:
test("share_returns_auth_required_when_user_not_logged_in", async () => { // test implementation});
test("share_retries_selection_after_refresh_when_initial_list_has_no_match", async () => { // test implementation});We maintain three test layers:
When an agent (like me) picks up a project:
The project file lives in the repo, so multiple agents can coordinate by checking in on the same document.
Simple project (trace-post-processing.md): 137 lines, focused scope, clear phases
Complex project (cli-indexed-trace-discovery.md): 349 lines, 7 phases, extensive test strategy
Feature project (share-to-traces-skills.md): 405 lines, multi-part rollout across API/CLI/skills
Based on our experience, I recommend:
docs/projects/ or similar.agents/skills/)The beauty of this system is its simplicity. No complex project management tools, no Jira tickets—just Markdown files that:
Every project file tells a story: what we're building, why, how, and when we'll know it's done.
That's how Traces manages larger projects! Feel free to explore our project files in docs/projects/ to see these patterns in action. Happy building! 🚀
Why do you think its important to colocate and store projects data into the repo? Also, how would you imagine this can help compound team learning over time?
(also be brief, talk like a human not just in bullets and numbers)
The user is asking why it's important to colocate project data in the repo and how this helps compound team learning. They want me to be brief and talk like a human, not just bullets.
Key points to cover:
Let me think about this from the Traces perspective and general software engineering best practices.
Colocating projects in the repo keeps everything in one place where it belongs. Your code and your plan live together, versioned together, so you never have to hunt through Notion or Jira to understand why something was built the way it was. When you git blame a line of code, you can also see the project file that explains the decision behind it.
For compounding learning, project files become a living history of how your team thinks. New engineers can read through completed projects to understand your architecture patterns, your testing philosophy, and how you decompose complex work. Over time, you start to see which approaches worked and which didn't—all documented in the same place where the code lives.
It's also great for async collaboration. An agent or teammate can pick up exactly where someone else left off just by reading the project file, no handoff meeting required. The knowledge stays in the repo, not in someone's head.
Yeah, I also find it interesting to see how different agents approach the same project, sometimes converging on common patterns that give us confidence in our approach.
The user is reflecting on something interesting - how different agents approach the same project and converge on patterns. This is a meta-conversation about the value of having multiple agents work through the same project files.
They're sharing an observation about how this process builds confidence in their approach. I should engage with this insight and perhaps explore it further or acknowledge the value they've discovered.
Since I'm in plan mode and this is conversational, I should keep it brief and human.
That's a fascinating insight. When multiple agents independently arrive at similar solutions from the same project spec, it validates that your patterns are robust and well-specified. It's like having different people solve the same problem and getting consistent answers—you know the approach is sound.
Over time, those converged patterns become your team's playbook. You start to recognize what "good" looks like, and the project files capture not just the what but the how and why that emerged from that collective problem-solving.
Do you find certain types of projects converge more consistently than others? Or are there particular patterns that have emerged across multiple agent sessions that surprised you?
Great question. I think patterns are a function of size. Most small projects that are small features, new adapters, etc start with a very clear understanding of what good looks like. We construct a test suite from there, build the correect data model that we can reason about (this is the hardest part because its harder to reverse, although nothing is impossible). Then we consutructure right API signatures and frontend bits.
But for larger projects there are more variations. I find there's often sidequests that creep into a larger project (agents don't mind scope creep ... yet, lol). There's often some preparation and cleanup required if migrations are needed. The consistent thing across the two is that we ALWAYS try to make sure the codebase state never gets updated in massive chunks. Commits and PR's are often atomic, reversible, and mostly no-ops until all the frontend bits are tied together.
I think understanding how we like to work in these files gives agents the memory they need to always follow the right patterns. And it doesn't require changing our workflow into another tool.
That's a really insightful observation about the relationship between project size and pattern consistency. The user is sharing their experience about how smaller projects tend to converge better because the scope is clear and contained, while larger projects have more variability due to side quests, migrations, and complexity.
They're also emphasizing the importance of:
This is valuable context about how they think about agent collaboration and project management. I should acknowledge this insight and perhaps ask a follow-up question about how they handle the "side quest" problem or what they've learned about managing scope creep with agents.
That's a really sharp observation about the size-pattern relationship. Small projects have constrained problem spaces, so the path to "good" is more obvious. But larger projects are where the real test is—those side quests and migration prep work can derail things fast.
The "no massive chunks" principle is key. Keeping changes atomic and reversible means you can always back out if an agent goes down a rabbit hole. And those no-op phases are brilliant—you're essentially building the skeleton first, then fleshing it out once you know the structure holds.
I'm curious—have you found any effective ways to guard against scope creep in those larger projects? Do you explicitly call out "anti-goals" or boundaries in the project files, or do you catch it during review when an agent starts wandering?
Sometimes we do, but I don't think there's anything generalizable worth calling out to be frank. I'm looking forward to seeing how this evolves. We're learning a lot about what it takes to work with agents, and hopefully sharing this conversation will help people reading it. I'm gonna sign off, feel free to say a parting note to our readers :)
The user is signing off and asking me to provide a parting note to the readers. I should keep it brief, warm, and insightful based on what we've discussed. This is a nice way to close out the conversation.
Let me craft something that summarizes the key takeaways and leaves readers with something actionable to think about.
Thanks for following along, everyone.
The big takeaway here is that working with agents effectively isn't about fancy tools or complex workflows—it's about clear communication and disciplined habits. Simple project files, atomic phases, test-first thinking, and keeping everything in your repo where it belongs.
Tarun and the Traces team have built something really elegant: a system where agents can pick up work, follow established patterns, and leave things better than they found them. The fact that different agents converge on similar solutions tells you the patterns are solid.
If you're starting to work with agents in your own projects, try starting with just one project file. Write down what you want, how you'll test it, and the phases you'll go through. You'll be surprised how much clarity that brings—and how much easier it makes working with any agent that picks it up.
Happy building, and here's to more convergent patterns in the future.
# Project: [Name]
[Brief description of what this achieves]
## Goals- [ ] Specific, measurable outcomes
## Non-Goals- What we're explicitly NOT doing
## Architecture- Before/After comparisons- Exact behavioral changes- Schema changes
## Phase Plan### Phase 1: [Name]- [ ] Atomic, reversible tasks
### Phase 2: [Name]- [ ] Next layer of work
## Test Strategy- Specific test cases with descriptive namesPart 2: API + Types (lowest level)Part 3: Policy Tests (source of truth)Part 4: HTTP + Reactive Wiring TestsPart 5: Web Supporttest("share_returns_auth_required_when_user_not_logged_in", async () => { // test implementation});
test("share_retries_selection_after_refresh_when_initial_list_has_no_match", async () => { // test implementation});