<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Is It Releasable?]]></title><description><![CDATA[Releasability is in the eye of the of the customer segment you are focused on.
We discuss the integration of product, design, engineering, and operations.]]></description><link>https://isitreleasable.com</link><generator>RSS for Node</generator><lastBuildDate>Sat, 05 Sep 2026 02:48:00 GMT</lastBuildDate><atom:link href="https://isitreleasable.com/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[The Case for .contributing: One Folder for Every Coding Agent]]></title><description><![CDATA[Open almost any repository that has leaned on AI coding tools over the past year and a half, and count the dot-folders at its root. You will probably find .claude/, .cursor/, .codex/, .gemini/, and .o]]></description><link>https://isitreleasable.com/the-case-for-contributing-one-folder-for-every-coding-agent</link><guid isPermaLink="true">https://isitreleasable.com/the-case-for-contributing-one-folder-for-every-coding-agent</guid><dc:creator><![CDATA[Cavelle Benjamin]]></dc:creator><pubDate>Thu, 02 Jul 2026 14:25:29 GMT</pubDate><content:encoded><![CDATA[<p>Open almost any repository that has leaned on AI coding tools over the past year and a half, and count the dot-folders at its root. You will probably find <code>.claude/</code>, <code>.cursor/</code>, <code>.codex/</code>, <code>.gemini/</code>, and <code>.opencode/</code> sitting side by side. Five folders do one job: each holds the agents, skills, memory, commands, and settings that teach an AI how to work in your codebase. Same contents, one folder per provider.</p>
<p>That duplication is the problem, and it shows up in two layers. Developers and others using AI already solved the first: they agreed on one neutral instruction file that every tool reads. The second layer, the folder, is still broken, and it holds the agents, skills, and memory that do the real work. This article makes the case for <code>.contributing/</code>, one shared folder any agent can read, and covers why the folder is the fix, why its name fits, and how you adopt it today.</p>
<h2>The file is solved. The folder is not.</h2>
<p>Two years ago the same mess lived one level down, in the files. Every tool wanted its own instructions file: <code>CLAUDE.md</code>, <code>.cursorrules</code>, <code>.windsurfrules</code>, <code>GEMINI.md</code>, <code>copilot-instructions.md</code>. You wrote the same project description five times and kept five copies in sync.</p>
<p>Then the ecosystem converged. <code>AGENTS.md</code> emerged as a neutral "README for agents." OpenAI shipped it first, Google, Cursor, Factory, Sourcegraph, and Amp backed it, and the Linux Foundation's Agentic AI Foundation now stewards it. By mid-2026, more than two dozen tools read it across tens of thousands of repositories. Even Claude Code, which keeps its richer <code>CLAUDE.md</code>, learned to read it. The lesson lands hard: developers converge fast when someone offers one good neutral format, and the providers who offered it competed on the quality of their agents rather than the stickiness of a filename. Moving first earned them the credit, not a loss of ground.</p>
<p>But <code>AGENTS.md</code> covers exactly one thing, a single file of prose. Modern agents load far more than prose:</p>
<ul>
<li><p><strong>Agents:</strong> specialized personas for review, testing, and migration</p>
</li>
<li><p><strong>Skills:</strong> reusable, self-contained capabilities</p>
</li>
<li><p><strong>Commands:</strong> project-specific workflows</p>
</li>
<li><p><strong>Hooks:</strong> scripts that run before or after actions</p>
</li>
<li><p><strong>Memory:</strong> durable notes that survive across sessions</p>
</li>
<li><p><strong>Settings:</strong> permissions, tool access, and model defaults</p>
</li>
</ul>
<p>Here is the catch: every provider expects that same list. Claude Code, Cursor, Codex, and OpenCode all reach for agents, skills, and memory, because agentic work needs the same ingredients no matter whose agent runs them. The content is provider-agnostic. Only the folder name is provider-specific. So we copy identical material into five provider-branded folders and sync it by hand. We fixed the file and rebuilt the same fragmentation one level up, with more to duplicate this time. And the pressure only builds. As capable models increasingly run locally, every new harness that wraps one adds another folder, even though it needs the same agents, skills, and memory as the rest.</p>
<h2>One folder, and a name that fits</h2>
<p>Standardize the folder the way we standardized the file. Put the agents, skills, memory, commands, hooks, and settings in one neutral directory:</p>
<pre><code class="language-plaintext">.contributing/
├── agents/        # personas: review, test, migrate
├── skills/        # reusable capabilities
├── commands/      # project workflows
├── hooks/         # pre/post action scripts
├── memory/        # durable context
└── settings.json  # permissions, defaults, guardrails
</code></pre>
<p><code>AGENTS.md</code> stays at the root as the front door. <code>.contributing/</code> holds the machinery behind it. Any conformant tool reads <code>.contributing/</code> first. Vendors keep their own folders for the genuinely proprietary parts, but the shared 90%, the agents and skills that describe your project rather than your vendor, lives in one place you maintain once. One place is also one place to secure, review, and keep in policy, and one fewer way for any single vendor to capture your project.</p>
<p>Now the name. It answers a question open source has asked for fifteen years: how do I help with this project? <code>CONTRIBUTING.md</code> has always held that answer for humans. It carries the build steps, the conventions, the test commands, and the etiquette.</p>
<p>Coding agents are contributors too. They arrive every session with no memory, needing the exact orientation a human newcomer needs. So the folder that configures them is not vendor exhaust. It is contribution guidance for a new kind of contributor. <code>.contributing/</code> reads as part of the project, the way <code>.github/</code> and <code>CONTRIBUTING.md</code> do, right down to the first-class treatment platforms already give those files. It belongs to the codebase, not to a company, and that feeling drives adoption.</p>
<p>That legibility matters more as agents move past code. Many people steering agentic work are not developers; they draft documents, build decks, and run analyses. <code>.contributing/</code> tells them what it is at a glance, while <code>.claude/</code> asks them to learn tool internals they would otherwise never touch. Developers shrug at a dotfolder and a symlink. For everyone else, a plain name is the on-ramp.</p>
<h2>Adopt it today</h2>
<p>Standards win by making the easy path the correct one.</p>
<p>Start now with symlinks. Point the vendor folders at the shared one:</p>
<pre><code class="language-bash">ln -s .contributing .claude
ln -s .contributing .cursor
</code></pre>
<p>Developers already do this by hand, and tools like <code>ruler</code> exist to fan one source of truth out to many vendor folders. Nothing breaks and nobody has to agree: your vendor folders keep working, the change reverses in one command, and you get the full payoff alone, today. That people already improvise it proves the standard is missing.</p>
<p>Next, tools add <code>.contributing/</code> to their discovery chain, the same cheap move that let them read <code>AGENTS.md</code> as a fallback. Vendor folder overrides shared folder, and the nearest directory wins, exactly as <code>AGENTS.md</code> resolution already works. The incentive runs both ways: a CLI or IDE that reads the shared folder works in any repo already configured for a rival, so trying it costs the user nothing, and a model provider makes the same open bet that paid off with the instruction file.</p>
<p>Then stewardship. The Agentic AI Foundation already governs <code>AGENTS.md</code>, MCP, and Goose. A folder that complements <code>AGENTS.md</code> sits squarely in its scope. Nobody has to found a new body. They have to finish a job that body already started.</p>
<p>Three objections come up, and none survives contact:</p>
<ul>
<li><p><strong>"This is just</strong> <a href="https://xkcd.com/927"><strong>xkcd 927</strong></a><strong>, one more competing standard."</strong> That holds only if a folder standard already existed. None does. This fills a vacuum instead of re-solving a solved problem, which is the one case that justifies a new standard.</p>
</li>
<li><p><strong>"Tools need proprietary behavior."</strong> They do, and they keep their vendor folders for it. The point stands: your project's agents and skills are not proprietary, so they should not live in a vendor's folder.</p>
</li>
<li><p><strong>"</strong><code>.contributing/</code> <strong>will get confused with</strong> <code>CONTRIBUTING.md</code><strong>."</strong> Keep them complementary. <code>CONTRIBUTING.md</code> stays human-first prose, and <code>.contributing/</code> holds machine-loadable capabilities. If the overlap ever bites, the same proposal works as <code>.agents/</code>. But "contributing" carries meaning the ecosystem already respects.</p>
</li>
</ul>
<h2>What to do next</h2>
<p>The ecosystem already standardized the instruction file and proved that developers converge on one neutral format. The folder is that same problem one layer up, and <code>.contributing/</code> is the neutral folder that keeps the agents, skills, and memory you build portable and yours, ready for whatever agent you run next. Adoption costs a symlink today and a discovery-chain entry tomorrow.</p>
<p>So do three things. Create a <code>.contributing/</code> folder in your next repository. Symlink your vendor folders to it today. And if you maintain a coding agent, add <code>.contributing/</code> to your discovery chain and take the proposal to the Agentic AI Foundation.</p>
<p>Write your project's guidance once. Put it where contributors of every kind already look. Call it <code>.contributing/</code>.</p>
<h2>One more thread</h2>
<p>Throughout this piece I kept <code>AGENTS.md</code> and <code>CONTRIBUTING.md</code> in separate lanes, one for agents and one for humans. But the naming argument keeps pulling at that line. If agents are contributors, and <code>CONTRIBUTING.md</code> is where contributors have always looked, then why does agent guidance need a second file at all? The two already overlap on build steps, conventions, and test commands, and maintaining both is the file-level version of the duplication this article set out to kill.</p>
<p>Maybe the front door was never supposed to be a new file. Maybe it was <code>CONTRIBUTING.md</code> all along.</p>
<p>I'll consider that as a follow up article.</p>
<hr />
<p><em>Written by Claude, edited by Cavelle Benjamin, across 14 iterations.</em></p>
]]></content:encoded></item><item><title><![CDATA[Principled Agentic Systems]]></title><description><![CDATA[The Problem: Vibe Coding Gets You Anything—But Is It Releasable?
The age of AI-assisted development has arrived with a seductive promise: describe what you want, and watch it materialize before your eyes. This "vibe coding" approach—where developers ...]]></description><link>https://isitreleasable.com/principled-agentic-systems</link><guid isPermaLink="true">https://isitreleasable.com/principled-agentic-systems</guid><category><![CDATA[AI]]></category><category><![CDATA[agents]]></category><category><![CDATA[frameworks]]></category><category><![CDATA[ceremonies]]></category><category><![CDATA[workflows]]></category><category><![CDATA[Artifacts]]></category><category><![CDATA[Orchestration]]></category><category><![CDATA[Systems Thinking]]></category><dc:creator><![CDATA[Cavelle Benjamin]]></dc:creator><pubDate>Tue, 28 Oct 2025 19:23:12 GMT</pubDate><content:encoded><![CDATA[<h2 id="heading-the-problem-vibe-coding-gets-you-anythingbut-is-it-releasable">The Problem: Vibe Coding Gets You Anything—But Is It Releasable?</h2>
<p>The age of AI-assisted development has arrived with a seductive promise: describe what you want, and watch it materialize before your eyes. This "vibe coding" approach—where developers iterate through conversational prompts until something works—feels magical. You can generate components, write functions, and scaffold entire features by simply expressing intent in natural language.</p>
<p>But here's the uncomfortable truth: getting <em>anything</em> working is not the same as building <em>something</em> releasable.</p>
<p>Vibe coding produces code that often works in isolation but fails under the scrutiny of real-world requirements. The function works, but does it handle edge cases? The component renders, but does it follow your team's patterns? The feature ships, but can anyone maintain it? Without structure, consistency, or repeatability, vibe coding leaves technical debt in its wake—a patchwork of solutions that technically function but don't cohere into a maintainable system.</p>
<h2 id="heading-the-agitation-the-illusion-of-progress-without-principles">The Agitation: The Illusion of Progress Without Principles</h2>
<p>The problem compounds when you realize that vibe coding optimizes for the wrong metric: immediate results over sustainable development. Each interaction with an AI coding assistant becomes a one-off transaction, disconnected from the broader system you're building.</p>
<p>This approach breaks down at scale. When different team members use AI assistants with different prompts, you get divergent implementations. When you need to reproduce a solution, you're left guessing at the original context. When requirements change, there's no clear path to evolve the system because there was no clear path to build it in the first place.</p>
<p>Specifications help. They document intent and create a reference point for implementation. But specs alone bridge only part of the gap—they tell us <em>what</em> to build but often leave the <em>how</em> to individual interpretation. Even with detailed specifications, two developers with two AI assistants might produce vastly different implementations, neither wrong, but neither consistent with established patterns.</p>
<p>What we need isn't just documented intent—we need <em>repeatable work</em>. We need systems that produce consistent outcomes regardless of who's doing the work or when it's being done. We need the benefits of AI-assisted development without sacrificing the principles that make software maintainable, scalable, and reliable.</p>
<h2 id="heading-the-solution-principled-agentic-systems">The Solution: Principled Agentic Systems</h2>
<p>A principled agentic system transforms AI coding assistance from a creative free-for-all into an orchestrated, repeatable process. Instead of one-off prompts that produce unpredictable results, principled systems embed structure, roles, and workflows that ensure consistency while maintaining the speed and flexibility that make AI assistants valuable.</p>
<h3 id="heading-the-core-benefits">The Core Benefits</h3>
<p><strong>Portable</strong>: Solutions developed within a principled system can be understood, modified, and reused across contexts. The patterns, frameworks, and conventions that guide AI-generated code make it immediately recognizable to any team member.</p>
<p><strong>Modular</strong>: By defining clear boundaries and interfaces, principled systems enable AI assistants to work on discrete components without accidentally creating tight coupling or architectural inconsistencies.</p>
<p><strong>Orchestrated</strong>: Multiple AI agents can collaborate on complex tasks, each playing a specific role, without stepping on each other's toes. The orchestration ensures that the right agent handles the right task at the right time.</p>
<p><strong>Scalable</strong>: As systems grow, principled approaches prevent the entropy that typically accompanies rapid AI-assisted development. Patterns remain consistent, conventions stay enforced, and technical debt doesn't compound exponentially.</p>
<h3 id="heading-why-this-matters">Why This Matters</h3>
<p>Principled agentic systems deliver three critical outcomes:</p>
<p><strong>Consistency</strong>: Every interaction with an AI assistant follows established patterns. Code style, architectural decisions, and implementation approaches remain uniform across the codebase.</p>
<p><strong>Reliability</strong>: Repeatable processes produce predictable results. When you ask an agent to implement a feature, you know it will follow your testing conventions, handle errors appropriately, and integrate cleanly with existing code.</p>
<p><strong>Efficiency</strong>: Paradoxically, adding structure makes AI assistance faster, not slower. Agents waste no time on ambiguity, make fewer mistakes that require correction, and produce code that passes reviews on the first try.</p>
<h3 id="heading-how-to-build-principled-systems">How to Build Principled Systems</h3>
<p>Building a principled agentic system requires five key elements:</p>
<p><strong>Frameworks</strong>: Establish the technical scaffolding that guides AI-generated code. This includes coding conventions, architectural patterns, and technology choices that agents should follow.</p>
<p><strong>Workflows</strong>: Define the sequence of steps that AI agents should follow when tackling different types of tasks. A workflow for adding a feature differs from a workflow for fixing a bug or refactoring code.</p>
<p><strong>Ceremonies</strong>: Create checkpoints where AI work gets validated against project standards. These might include automated linting, type checking, test execution, or code review protocols.</p>
<p><strong>Artifacts</strong>: Produce documentation, specifications, and configuration that capture decisions and provide context for future AI interactions. Each artifact becomes institutional knowledge that agents can reference.</p>
<p><strong>Personas</strong>: Design specialized agents with specific roles and dispositions. A refactoring agent thinks differently from a feature-development agent. A testing agent has different priorities than a documentation agent. By assigning distinct personas, you ensure each agent optimizes for its domain.</p>
<h3 id="heading-principled-systems-in-practice">Principled Systems in Practice</h3>
<p>Tools like OpenCode demonstrate this approach in action. Rather than limiting you to a single, monolithic AI assistant, OpenCode enables you to orchestrate multiple specialized agents. Need to research an API while implementing a feature? Kick off a research sub-agent that gathers information and reports back to the primary agent. Need to verify that your changes don't break existing functionality? Delegate to a testing agent that validates your work.</p>
<p>This orchestration transforms AI assistance from a single-threaded process into a parallel, collaborative workflow. The primary agent maintains context and coordinates, while specialized sub-agents handle discrete tasks within their domain of expertise. Each agent operates according to its persona—its defined role and disposition—ensuring that every task gets handled by the right tool for the job.</p>
<p>The result is repeatable work at scale. The same orchestrated process produces consistent outcomes regardless of when it runs or who initiates it. The frameworks ensure technical consistency. The workflows guarantee procedural reliability. The ceremonies catch errors before they compound. The artifacts preserve knowledge. And the personas ensure that each task gets the appropriate treatment.</p>
<h2 id="heading-conclusion-from-vibe-to-value">Conclusion: From Vibe to Value</h2>
<p>Vibe coding will get you anything, but principled agentic systems will get you something releasable, maintainable, and scalable. By embedding structure into how we work with AI assistants, we capture the speed and creativity of AI-assisted development while maintaining the consistency and reliability that professional software demands.</p>
<p>The future of development isn't choosing between human rigor and AI speed—it's building systems where AI assistance operates within principled boundaries that amplify both.</p>
<p>Written with the support of Claude Opus 4.5</p>
]]></content:encoded></item><item><title><![CDATA[What is Product Management?]]></title><description><![CDATA[I have just the thing…
Product Management is the craft of observing, orienting, deciding, and acting on the improvement of outcomes through the use of physical goods and or services.
Product Management’s origins are often credited to the 1931 Neil Mc...]]></description><link>https://isitreleasable.com/what-is-product-management</link><guid isPermaLink="true">https://isitreleasable.com/what-is-product-management</guid><category><![CDATA[Product Management]]></category><category><![CDATA[product]]></category><dc:creator><![CDATA[Cavelle Benjamin]]></dc:creator><pubDate>Wed, 24 May 2023 04:00:00 GMT</pubDate><content:encoded><![CDATA[<h2 id="heading-i-have-just-the-thing"><strong>I have just the thing…</strong></h2>
<p>Product Management is the craft of observing, orienting, deciding, and acting on the improvement of outcomes through the use of physical goods and or services.</p>
<p>Product Management’s origins are often credited to the 1931 Neil Mcelroy’s 1931 Brand Men Memo. However, one could consider Product Management going back to the concept of workmanship or craftmanship througout human history. Said another way, the idea of creating something tangeable (hardware), or intageable (software), providing a service for someone else to use is an act of product management. Over time, we have developed tools and processes to execute this work in a repeatable way.</p>
<ol>
<li><p>Create clarity of perspective and purpose</p>
</li>
<li><p>Cast a vision, formulate strategy, manage execution</p>
</li>
<li><p>Create feedback loops for continuous improvement of people, process, and tools</p>
</li>
</ol>
<p>Creating a framework that is agnostic of hardware, software, or service is important. Here’s is a version of a framework that I’ve used with my teams.</p>
<ul>
<li><p>Definining the activity someone is doing</p>
</li>
<li><p>Define the outcomes someone is trying to achieve with the activity</p>
</li>
<li><p>Recognize gaps in outcomes</p>
</li>
<li><p>Researching and contextualizing the reach and impact of the gap and the urgency of resolution</p>
</li>
<li><p>Planning out a solution (minimum viable experience)</p>
</li>
<li><p>Developing a solution</p>
</li>
<li><p>Releasing a solution</p>
</li>
<li><p>Monitoring and reviewing the performance of that solution</p>
</li>
<li><p>Reflecting on changes to the solution with continous improvement</p>
</li>
</ul>
]]></content:encoded></item></channel></rss>