{"slug": "the-workflow-ran-with-four-personas-instead-of-five-and-looked-fine", "title": "The Workflow Ran With Four Personas Instead of Five and Looked Fine", "summary": "A developer running Claude Code with five separate subagents — architect, coder, reviewer, conflict resolver, and UI designer — found that one persona silently stopped loading after an editor inserted content above the opening frontmatter delimiter, causing the file to be treated as documentation rather than an agent. Because the failure produces no session warning and only appears in the debug log, the remaining agents absorbed the work, making the degradation look like the model performing poorly rather than a missing configuration. The developer documented five frontmatter conditions that cause silent subagent skips, plus a `tools: *` entry that makes Claude Code refuse to launch a subagent, and released a checker tool, `npx @quintetkit/ccheck`, to detect them.", "body_md": "I run Claude Code as five separate subagents with different permissions —\n\narchitect, coder, reviewer, conflict resolver, UI designer. One of them stopped\n\nloading.\n\n**Nothing said so.** The work still got done, by whoever was left. It got\n\nslower, review got softer, declared scopes stopped being respected. Every one of\n\nthose looks like \"the model is having a bad day\".\n\nThe symptom has the shape of *not working well*. The cause was *not being there*.\n\n`.claude/agents/` is skipped silently\nFive conditions in the frontmatter, any one of which means the file is not\n\ntreated as a subagent:\n\n| Condition | What happens | \n|---|---|\n| No `name` | Treated as documentation — a note kept beside your agents | \n| The opening `---` is**not line 1** | Read as having no frontmatter, so documentation again | \n| A `name` starting with`-` , or containing`:` | The whole file is skipped | \n| A `name` but no`description` | Skipped | \n| YAML that does not parse | Nothing is read, file skipped | \n\n**None of these appear in the session.** The reason goes to the debug log, which\n\nyou see with `--debug`, which you are not running when things seem fine.\n\nThe second row is the one I hit. I had pasted content into a persona file and\n\nan editor put something above the opening `---`. From then on the file was\n\nprose sitting next to four agents, and Claude distributed its work to them.\n\n`:` is unavailable because it is reserved for plugin-scoped names like\n\n`my-plugin:reviewer`. A leading `-` is out for the same class of reason.\n\nAdding a persona by duplicating an existing one is the obvious move, and\n\nforgetting to change `name` is the obvious mistake.\n\n**Which of two files with the same name loads is not documented.** It is decided\n\nby filesystem read order.\n\nSo the same repository can run a **different persona on a different machine**,\n\nand both machines are \"working\". I do not have a story about being burned by\n\nthis one, and I am fairly sure that is luck rather than care.\n\n`claude plugin validate` gets you part of the way\n\n```\nclaude plugin validate .claude/agents\nclaude plugin validate ~/.claude/agents\n```\n\nIt finds frontmatter that **fails to parse.** Two limits worth knowing:\n\n`name`\nWhich is most of the list above. It is worth running and it is not sufficient.\n\nMy coder persona had this:\n\n```\ntools: *\n```\n\nmeaning \"this one gets everything\". `tools` accepts exact tool names or the\n\nserver patterns `mcp__<server>` / `mcp__<server>__*`. **A bare `*` is not among\nthem**, and an entry resolving to nothing makes Claude Code refuse to launch the\n\nsubagent.\n\nThe documented way to say \"everything\" is to **omit the field.**\n\n**Why my own linter could not see that** is written up separately.\n\n[https://quintetkit.github.io/en/articles/blind-spot-from-refusing-to-check.html](https://quintetkit.github.io/en/articles/blind-spot-from-refusing-to-check.html)\n\nThe short version is that the rule I wrote to avoid false positives was phrased\n\nas \"don't look at the `tools` field\".\n\nThat one is worse than a missing persona, because `coder` is the one that writes\n\nthe code. The other four keep working, so it presents as **the coder being unreliable today.**\n\nTwo checks, and I only run them twice: after setup, and after adding or copying\n\na persona.\n\n```\nnpx @quintetkit/ccheck        # the five conditions, duplicate names, tools: *\nclaude --debug                # once, to see what was skipped and why\n```\n\nAnd a habit that is cheaper than either: **count them.** If the configuration\n\nsays five personas, the thing you want to confirm is that five loaded — not that\n\nthe work is getting done. The work getting done was never the question.\n\nThe five conditions and every frontmatter field, in one table:\n\n[https://quintetkit.github.io/en/reference/claude-code-subagent-frontmatter.html](https://quintetkit.github.io/en/reference/claude-code-subagent-frontmatter.html)\n\nI publish the configuration for splitting Claude Code into separate personas —\n\nArchitect, Coder, Reviewer, Conflict Resolver — under MIT. Copy it, run\n\n`./setup.sh`, and it works. It does not depend on your tech stack.\n\n[https://github.com/quintetkit/quartet](https://github.com/quintetkit/quartet)\n\nI built one real tool using nothing but this workflow. Every Issue, PR, review\n\nand merge is still there. **The parts that went wrong were not deleted.**\n\n[https://github.com/quintetkit/mdlinkcheck](https://github.com/quintetkit/mdlinkcheck)\n\nThe version that adds a UI Designer persona, review criteria, a per-Issue\n\nparallel execution script and a 11-chapter guide is on the\n\n[product page](https://quintetkit.github.io/index.en.html).\n\nThe full kit — five personas, the scripts and the complete guide — is available here.", "url": "https://wpnews.pro/news/the-workflow-ran-with-four-personas-instead-of-five-and-looked-fine", "canonical_source": "https://dev.to/quintetkit/the-workflow-ran-with-four-personas-instead-of-five-and-looked-fine-2cd7", "published_at": "2026-09-14 01:14:16+00:00", "updated_at": "2026-09-14 01:25:30.702057+00:00", "lang": "en", "topics": ["ai-agents", "ai-tools", "developer-tools", "ai-products"], "entities": ["Claude Code", "Anthropic", "@quintetkit/ccheck"], "alternates": {"html": "https://wpnews.pro/news/the-workflow-ran-with-four-personas-instead-of-five-and-looked-fine", "markdown": "https://wpnews.pro/news/the-workflow-ran-with-four-personas-instead-of-five-and-looked-fine.md", "text": "https://wpnews.pro/news/the-workflow-ran-with-four-personas-instead-of-five-and-looked-fine.txt", "jsonld": "https://wpnews.pro/news/the-workflow-ran-with-four-personas-instead-of-five-and-looked-fine.jsonld"}}