3.4 KiB
title, category, date, module, component, tags, severity, description, related
| title | category | date | module | component | tags | severity | description | related | |||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Promoting review-beta to stable must update orchestration callers in the same change | skill-design | 2026-03-23 | plugins/compound-engineering/skills | SKILL.md |
|
medium | When ce:review-beta is promoted to stable, update lfg/slfg in the same PR so they pass the correct mode instead of inheriting the interactive default. |
|
Problem
ce:review-beta introduces an explicit mode contract:
- default
interactive mode:autonomousmode:report-only
That is correct for direct user invocation, but it creates a promotion hazard. If the beta skill is later promoted over stable ce:review without updating its orchestration callers, the surrounding workflows will silently inherit the interactive default.
For the current review workflow family, that would be wrong:
lfgshould run review inmode:autonomousslfgshould run review inmode:report-onlyduring its parallel review/browser phase
Without those caller changes, promotion would keep the skill name stable while changing its contract, which is exactly the kind of boundary drift that tends to escape manual review.
Solution
Treat promotion as an orchestration contract change, not a file rename.
When promoting ce:review-beta to stable:
- Replace stable
ce:reviewwith the promoted content - Update every workflow that invokes
ce:reviewin the same PR - Hardcode the intended mode at each callsite instead of relying on the default
- Add or update contract tests so the orchestration assumptions are executable
For the review workflow family, the expected caller contract is:
lfg->ce:review mode:autonomousslfgparallel phase ->ce:review mode:report-only- any mutating review step in
slfgmust happen later, sequentially, or in an isolated checkout/worktree
Why This Lives Here
This is not a good AGENTS.md note:
- it is specific to one beta-to-stable promotion
- it is easy for a temporary repo-global reminder to become stale
- future planning and review work is more likely to search
docs/solutions/skill-design/than to rediscover an old ad hoc note inAGENTS.md
The durable memory should live with the other skill-design rollout patterns.
Prevention
- When a beta skill changes invocation semantics, its promotion plan must include caller updates as a first-class implementation unit
- Promotion PRs should be atomic: promote the skill and update orchestrators in the same branch
- Add contract coverage for the promoted callsites so future refactors cannot silently drop required mode flags
- Do not rely on “remembering later” for orchestration mode changes; encode them in docs, plans, and tests
Lifecycle Note
This note is intentionally tied to the ce:review-beta -> ce:review promotion window.
Once that promotion is complete and the stable orchestrators/tests already encode the contract:
- update or archive this doc if it no longer adds distinct value
- do not leave it behind as a stale reminder for a promotion that already happened
If the final stable design differs from the current expectation, revise this doc during the promotion PR so the historical note matches what actually shipped.