Repository navigation
feat(fx-dev)!: make team a wrapper around dev and fold coder into dev - #28
Merged
Merged
Conversation
dev and coder overlapped: coder was a thin implementer that also claimed the full lifecycle when invoked directly, which is exactly what dev does. Remove coder and give dev two explicit roles: - Lifecycle (default): run Steps 0-8 for one change and stop at the first PR boundary; dev never merges on its own. - Implementer: a sub-agent given one focused job implements, tests and commits, with no PR creation, reviewer or CI waits, or merging. coder's standards, commit-subject rule and scope discipline move here. Every spawn template that loaded coder now loads dev in its Implementer role (dev, fix, team, resolve-ci-failures, resolve-codecov-feedback, upstream-contrib, and the feedback resolvers). team now states up front that it wraps dev: it must load dev before writing the Scope Brief or spawning anyone, and lists what it adds (runs every step unattended, merges each PR itself once the gates pass, keeps going until everything in scope is merged). Because a lead that skipped loading dev never saw the implementer template or the pre-PR Codex step, team restates both inline and gates them at merge. Implementers no longer open their own PRs. Add a headless mode to the wait discipline: a session that cannot be woken after its turn ends must never end the turn with a teammate, reviewer or CI wait outstanding, and runs the bundled waiters in the foreground within the tool's timeout instead. BREAKING CHANGE: the fx-dev:coder skill is removed. Load fx-dev:dev and act in its Implementer role instead: "Load the dev skill (Skill tool: skill='fx-dev:dev') and act in its Implementer role, then: ...".
dev's CRITICAL RULES already say review is never delegated to a sub-agent and is driven from the coordinator session, but the new Implementer role carved out a pre-PR Codex pass, and team's implementer template told implementers to run it. Remove that carve-out: implementers do one focused job and run no reviewers. The lead (dev's Lifecycle coordinator, or team's lead) now runs dev Step 4.5 with the Scope Brief on the implementer's branch, from its worktree where it has one, records the findings in its ledger, hands blocking ones back as a fix list, and only then pushes and opens the PR. team's merge gate 7 verifies the lead's own converged run. The rule that every PR passes Step 4.5 before it is pushed or opened is unchanged.
There was a problem hiding this comment.
🟡 Changes recommended
The updated top-level README component summary is now demonstrably inaccurate relative to the repository’s fx-dev plugin contents and should be corrected before merge.
1 open finding
What changed in this PR
This PR removes the fx-dev:coder skill by folding its implementer responsibilities into fx-dev:dev as an explicit Implementer role, and makes fx-dev:team a strict wrapper around dev (Lifecycle role) that can run end-to-end through merges. It also adds explicit guidance for headless sessions so reviewer/CI waits don’t get silently skipped.
Changes:
- Delete
fx-dev:coderand update all delegations to loadfx-dev:devin its Implementer role instead. - Add role semantics to
fx-dev:dev(Lifecycle vs Implementer) and updatefx-dev:teamto require loadingdevas its first blocking action, with autonomous merge behavior. - Introduce/propagate “headless session” foreground-wait rules in
background-waits.mdand linked skills; bump versions for the breaking change.
| File | Description |
|---|---|
| README.md | Updates fx-dev component summary (but currently remains inconsistent with actual plugin contents). |
| plugins/fx-dev/skills/upstream-contrib/SKILL.md | Switches delegation from coder to dev (Implementer role) for upstream/consumer implementation steps. |
| plugins/fx-dev/skills/team/SKILL.md | Makes team explicitly load dev first; reframes team as a dev wrapper with autonomous merge + headless guidance. |
| plugins/fx-dev/skills/resolve-codecov-feedback/SKILL.md | Updates guidance to delegate test creation to dev (Implementer role). |
| plugins/fx-dev/skills/resolve-ci-failures/SKILL.md | Updates guidance to delegate CI fixes to dev (Implementer role). |
| plugins/fx-dev/skills/rabbit-feedback-resolver/SKILL.md | Updates delegation language to use dev (Implementer role) for blocking fixes. |
| plugins/fx-dev/skills/project-management/SKILL.md | Removes coder from the enumerated development skills and clarifies dev’s dual role. |
| plugins/fx-dev/skills/github/SKILL.md | Updates PR-delegation wording to align with team/dev roles (no coder mention). |
| plugins/fx-dev/skills/fix/SKILL.md | Updates fix workflow delegations to dev (Implementer role). |
| plugins/fx-dev/skills/dev/SKILL.md | Introduces Roles section; redefines implementation delegation as dev-in-Implementer-role and updates headless wait rules. |
| plugins/fx-dev/skills/dev/references/background-waits.md | Adds explicit “Headless sessions” section specifying foreground waiting and relaunch-on-pending behavior. |
| plugins/fx-dev/skills/copilot-feedback-resolver/SKILL.md | Updates blocking-fix delegation to dev (Implementer role). |
| plugins/fx-dev/skills/coder/SKILL.md | Removes the coder skill (breaking change). |
| plugins/fx-dev/README.md | Updates fx-dev documentation to reflect coder removal and dev/team behavior changes. |
| plugins/fx-dev/.claude-plugin/plugin.json | Bumps fx-dev version to 6.0.0 for the breaking change. |
| AGENTS.md | Updates internal delegation note to reflect dev’s Implementer role replacing coder. |
| .claude-plugin/marketplace.json | Bumps marketplace metadata version to 0.28.0. |
🧠 Review effort: Lite
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

Why
devandcoderoverlapped badly enough that agents could not tell them apart:coderwas a thin implementer that also claimed to "own the full lifecycle" when invoked directly, which is exactly whatdevdoes. Meanwhileteamdescribed itself as a separate workflow that merely pointed atdev, so nothing forced a lead to actually load it.Two failures were observed. A team lead skipped "Load the dev skill", so it never saw the implementer spawn template or the pre-PR Codex step: it hand-wrote implementer prompts with no skill load and opened PRs that no Codex review had seen. Separately, a headless agent (its process ends when its turn ends) followed "never wait in the foreground; end your turn and be woken by the notification", ended its turn, and so skipped every review and CI gate.
What changed
coderis removed. Every place that loaded it now loadsdevin its Implementer role:Load the dev skill (Skill tool: skill='fx-dev:dev') and act in its Implementer role, then:. That covers dev, fix, team, resolve-ci-failures, resolve-codecov-feedback, upstream-contrib, both feedback resolvers, project-management, the READMEs and AGENTS.md.devhas a Roles section right after the Invocation Boundary. Lifecycle (the default) runs Steps 0–8 for one change and stops at the first PR boundary, and never merges on its own. Implementer does one focused job (implement, test, commit) with no PR creation, reviewer or CI waits, or merging. coder's standards, commit-subject rule and scope discipline move into the Implementer role; the Test Policy and STOP rule are referenced, not duplicated.teamis now explicitly a wrapper arounddev. Its first action, a blocking one, is loadingdev. A short "What team adds to dev" list follows: it runs every step unattended, merges each PR itself once the gates pass (replacing dev's Step 8.4 hand-off), and keeps going until everything in scope is merged. Everything else stays dev's.team: the implementer spawn template, and the requirement that every PR passes dev Step 4.5 (converged local Codex review) before it is pushed or opened. Both are new merge-gate rows (7 and 8) and coordinator rules. The old "never tell an agent to load the dev skill" rule now says never hand a teammate the Lifecycle role. Implementers no longer open their own PRs. In team, "coder" as a role noun is now "implementer".background-waits.mdgains a § Headless sessions, which dev and team link to. A session that cannot be woken must never end its turn with a teammate, reviewer or CI wait outstanding. Instead it runs the bundled waiters in the foreground, with a budget inside the tool's timeout, and relaunches onSTATUS=PENDING.sleeppolling stays forbidden.Breaking change
fx-dev:coderno longer exists. Loadfx-dev:devand act in its Implementer role instead. fx-dev is bumped 5.2.2 → 6.0.0 and the marketplace 0.27.2 → 0.28.0.Test plan
grep -rn "skill='coder'\|fx-dev:coder\|coder skill\|skills/coder" .returns nothingjq empty) and every marketplace entry resolves