Skip to content

feat(fx-dev)!: make team a wrapper around dev and fold coder into dev - #28

Merged
fx merged 3 commits into
mainfrom
feat/dev-team-roles-drop-coder
Oct 9, 2026
Merged

fx merged 3 commits into
mainfrom
feat/dev-team-roles-drop-coder

Conversation

@fx

@fx fx commented Oct 9, 2026

Copy link
Copy Markdown
Owner

Why

dev and coder overlapped badly enough that agents could not tell them apart: coder was a thin implementer that also claimed to "own the full lifecycle" when invoked directly, which is exactly what dev does. Meanwhile team described itself as a separate workflow that merely pointed at dev, 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

  • coder is removed. Every place that loaded it now loads dev in 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.
  • dev has 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.
  • team is now explicitly a wrapper around dev. Its first action, a blocking one, is loading dev. 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.
  • The two rules that did not survive by reference are restated inline in 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".
  • Headless mode for waits. background-waits.md gains 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 on STATUS=PENDING. sleep polling stays forbidden.

Breaking change

fx-dev:coder no longer exists. Load fx-dev:dev and 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 nothing
  • JSON manifests validate (jq empty) and every marketplace entry resolves
  • The duvet requirements-traceability job passes; no cited requirement sentence changed

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: ...".
Copilot AI lite review requested due to automatic review settings October 9, 2026 01:39
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.

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 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:coder and update all delegations to load fx-dev:dev in its Implementer role instead.
  • Add role semantics to fx-dev:dev (Lifecycle vs Implementer) and update fx-dev:team to require loading dev as its first blocking action, with autonomous merge behavior.
  • Introduce/propagate “headless session” foreground-wait rules in background-waits.md and 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.

Comment thread README.md Outdated
@fx
fx requested a lite review from Copilot October 9, 2026 01:56

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟢 Approval recommended

The removal of fx-dev:coder is consistently applied across docs/templates, and the required version bumps for the breaking change are present.

0 open findings

1 resolved since last review

🧠 Review effort: Lite

@fx
fx merged commit 6670f07 into main Oct 9, 2026
3 checks passed
@fx
fx deleted the feat/dev-team-roles-drop-coder branch October 9, 2026 02:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants