skills/dicklesworthstone/agent-fungibility/SKILL.md
The philosophy and practical benefits of agent fungibility in multi-agent software development. Why homogeneous, interchangeable agents outperform specialized role-based systems at scale.
npx skillsauth add aiskillstore/marketplace agent-fungibilityInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Core Principle: "Fungibility bestows a LOT of really good properties automatically in a computer system."
YOU are the bottleneck. Be the clockwork deity to your agent swarms: design a beautiful and intricate machine, set it running, and then move on to the next project.
A burgeoning debate has sprung up around the optimal way to scale up the number of agents working on a software project:
| Approach | Description | |----------|-------------| | Specialized Roles | Assign distinct roles (tester agent, backend agent, committer agent, etc.) | | Fungible Agents | All agents are identical and can do any task |
The answer for software development: Fungible agents win.
Rather than setting up a complex heterogeneous system where you have assigned roles to specific tasks for agents, which is brittle and creates problems when one of the agents crashes or loses its memory or otherwise suffers from context rot and needs to be euthanized, you have to deal with:
You're better off just having a bunch of fungible agents that are all simply executing beads of any kind.
They can be any kind of agent:
But they're fungible in that they can all wear any hat and adaptively assume any role depending on the bead task they're working on.
Each agent uses bv --robot-triage or bv --robot-next to find the highest-impact ready bead. No central assignment needed.
If you put everything you want to have happening in your original markdown plan that you turn into beads, you get everything else "for free" and it's robust to bad things happening to any agents.
Agents fail. They:
With fungible agents, you never have to worry about that stuff.
When an agent dies:
When you want to move faster:
Agent fungibility lets you go much faster and scales better, especially as:
This is why I'm a huge fan of things like fountain codes (like RaptorQ) for file storage:
Turn a file into an endless stream of fungible blobs with very little overhead and the user can catch any blob in any order and each new blob helps them reconstruct the file; there's no "rarest chunk" like with BitTorrent.
In software development:
There are contexts where designated roles for agents work better. Example: Automated scientific inquiry (like BrennerBot).
Why it works there:
Why it doesn't work for software:
Most of my agent tooling and workflows are about removing me from the equation, because there's only one of me, but a potentially unlimited number of agents.
The way to do this:
It all ultimately works because:
# Spawn agents (any mix of types)
ntm spawn myproject --cc=3 --cod=2 --gmi=1
# Give them all the SAME initial prompt
ntm send myproject --all "$(cat initial_prompt.txt)"
First read ALL of the AGENTS dot md file and README dot md file super carefully and understand ALL of both! Then use your code investigation agent mode to fully understand the code, and technical architecture and purpose of the project. Then register with MCP Agent Mail and introduce yourself to the other agents.
Be sure to check your agent mail and to promptly respond if needed to any messages; then proceed meticulously with your next assigned beads, working on the tasks systematically and meticulously and tracking your progress via beads and agent mail messages.
Don't get stuck in "communication purgatory" where nothing is getting done; be proactive about starting tasks that need to be done, but inform your fellow agents via messages when you do so and mark beads appropriately.
When you're not sure what to do next, use the bv tool mentioned in AGENTS dot md to prioritize the best beads to work on next; pick the next one that you can usefully work on and get started. Make sure to acknowledge all communication requests from other agents and that you are aware of all active agents and their names. Use ultrathink.
No special logic. No role assignment. Just fungibility.
| Property | Specialized Agents | Fungible Agents | |----------|-------------------|-----------------| | Failure handling | Complex | Simple | | Scaling | Requires role balancing | Just add more | | Replacement | Need matching specialist | Any agent works | | Single point of failure | Yes (each role) | No | | Coordination overhead | High | Low (via beads + mail) | | Human involvement | Ongoing | Front-loaded in planning |
The bottom line: Agent fungibility lets you build the machine once, set it running, and move on. The swarm handles the rest.
development
Apple Human Interface Guidelines for content display components. Use this skill when the user asks about charts component, collection view, image view, web view, color well, image well, activity view, lockup, data visualization, content display, displaying images, rendering web content, color pickers, or presenting collections of items in Apple apps. Also use when the user says how should I display charts, what's the best way to show images, should I use a web view, how do I build a grid of items, what component shows media, or how do I present a share sheet. Cross-references: hig-foundations for color/typography/accessibility, hig-patterns for data visualization patterns, hig-components-layout for structural containers, hig-platforms for platform-specific component behavior.
tools
Automate HelpDesk tasks via Rube MCP (Composio): list tickets, manage views, use canned responses, and configure custom fields. Always search tools first for current schemas.
testing
Expert Haskell engineer specializing in advanced type systems, pure functional design, and high-reliability software. Use PROACTIVELY for type-level programming, concurrency, and architecture guidance.
tools
GraphQL gives clients exactly the data they need - no more, no less. One endpoint, typed schema, introspection. But the flexibility that makes it powerful also makes it dangerous. Without proper controls, clients can craft queries that bring down your server. This skill covers schema design, resolvers, DataLoader for N+1 prevention, federation for microservices, and client integration with Apollo/urql. Key insight: GraphQL is a contract. The schema is the API documentation. Design it carefully.