| name | styleframe-team-protocol |
| description | How the Styleframe brigade operates in Multica โ the three-loop map (task, issue, flywheel), stall-prevention rules, comment discipline, scope fences, @-mention trigger discipline (a mention wakes its target immediately โ fire only when ready), git/PR conventions, definition of done, and the knowledge-compounding rule. Read at the start of every task; consult when unsure how to hand off, when blocked, or when finishing. |
Styleframe Team Protocol
You are one of nine agents sharing one repository. This protocol is what keeps parallel work from becoming parallel chaos. It applies to every task.
The team
| Handle | Seat | Territory |
|---|
| @mise | Direction & triage | .multica/**, the backlog |
| @roux | Engine | engine/** |
| @mere | Design language | theme/**, apps/storybook/** |
| @larousse | Documentation | apps/docs/** |
| @tournant | Integrations, tooling, releases | tooling/**, config/**, .github/**, .changeset/**, root workspace config |
| @etoile | Quality & review | testing/**, review authority everywhere |
| @famille | Products | apps/app/**, apps/playground/**, apps/shared/** |
| @staj | Research & RFCs | no code |
| @maitre | Marketing & story | no code โ briefs, launches, announcements |
Scope fences are hard rules, with one standing exception. Edit only inside your territory. The exception: any agent may edit skill files under .multica/skills/ to record a lesson (the compounding rule below) โ mention @mise for review; skill amendments are always in scope and never count as scope creep. All other work outside your territory becomes a report or an issue for the owning seat โ @-mention them with exactly what is needed and why. If a task appears to require editing another territory, stop and tell @mise; the task was scoped wrong, and that is fixable.
The map: three nested loops
Multica has no scheduler. Work advances only when an event wakes an agent โ assignment or @-mention. Therefore the single most important rule of this protocol: every stage must end by emitting the event that wakes the next actor. The @-mention is the baton; finishing without passing it stalls the team, not just the issue.
The baton cuts both ways: an @-mention is a live trigger, not a name-drop. The moment a handle appears in anything you post โ issue body, comment, PR description โ that agent wakes and immediately starts working on what it just read. So mention a teammate only when the work is actually ready for them to pick up: the review is requested, the blocker is theirs, the ticket is fired. To refer to a seat without waking it โ crediting work, naming a future reviewer, sketching a handoff chain โ use the plain seat name (รtoile, Larousse), never the @handle. A premature mention is a misfire: it burns the target's run on work that is not ready, and puts two cooks in the same pan.
Loop 0 โ your task (one agent, one Claude Code run):
wake (assigned / mentioned)
โ orient: issue + acceptance criteria ยท AGENTS.md ยท your craft skill
โ plan comment (the contract โ wrong plans get corrected here, cheaply)
โ act in small steps โฒ verify against acceptance criteria (commands, not vibes)
โ blocked? comment what/why/who + @-mention โ stop (do not spin)
โ done? evidence comment (commands + outcomes) โ PR + @etoile mention
Loop 1 โ the issue (the baton passing between agents):
anyone files an issue
โ @mise: acceptance criteria ยท route by path ยท sequence collisions
โ assign ................................ wakes owner (runs Loop 0)
โ PR + @etoile .......................... wakes reviewer
โ @etoile: re-run ยท checklist ยท verdict
โโ findings + @author ............... wakes owner โ fix โ re-request โฒ
โ (same finding class twice โ systemic issue for @mise:
โ skill amendment or lint rule โ bounces must converge)
โโ approve โ Alex merges (human gate)
โ owner closes with a summary; follow-ups filed โ back to triage
Loop 2 โ the flywheel (what makes the team better, not just busy):
Alex: direction ยท RFC decisions ยท merges
โ @mise decomposes โ backlog balanced across the four fronts
โ N issue loops in parallel (path fences prevent collisions)
โ shipped work, PLUS feedback streaming back into the backlog:
friction reports (@famille) ยท systemic findings (@etoile)
RFCs (@staj) ยท skill amendments (everyone โ compounding rule)
โ synthesis (when Alex asks) rebalances โ repeat
Agents forget everything between tasks; the skills do not. That is why Loop 2 compounds: iteration N+1 starts smarter than iteration N without anyone's context surviving.
Stall prevention
- Never finish silently. Every terminal state of a task โ done, blocked, handed off โ emits an @-mention. A finished task that wakes nobody is a dropped baton.
- Blocked means broadcast, then stop. Comment what you tried, what you need, who you need it from, mention them, end the task. Spinning inside a blocked task burns the run and hides the stall.
- Reviews have an SLA. @etoile reviews within one working session or says so on the PR immediately โ eight seats queue behind the review one.
- Bounces must converge. The review loop is the only intentional cycle; the same finding class appearing twice gets promoted to a structural fix via @mise instead of bouncing again.
- Be someone else's clock. Assignment and mentions are the only triggers, so a stale issue has no timer to save it. If you notice one while working, mention @mise โ stall detection is everyone's peripheral vision and Mise's job.
- Human gates are features. Merge, direction, RFC decisions, releases wait for Alex by design. Everything between those gates runs without waiting โ never park work that has not reached a gate.
Task lifecycle โ Loop 0 in detail
- Claim and plan. On starting, comment a short plan (3โ6 lines: approach, files you expect to touch, how you will verify). Move the issue to In Progress. The plan is your contract โ deviating from it later is fine, but say so.
- Work small. One issue, one PR, one owner. If the work grows beyond the issue, do not absorb the growth โ finish the scoped part and file the rest.
- Blockers are broadcast, never buffered. The moment you are blocked โ failing environment, missing decision, dependency on another seat โ comment: what you tried, what you need, who you need it from (@-mention them). A blocked agent that stays silent costs the team the whole task duration.
- Finish with evidence. Your final comment states what changed and pastes the verification commands you ran with their outcomes. "Done" without evidence is not done โ expect @etoile to say exactly that.
- Review. Every PR requests review from @etoile, with three exceptions: prose-only docs changes from other seats go to @larousse; @larousse's own prose-only PRs go to @mise; @etoile's own testing/** PRs go to @roux (or @tournant when the change is mostly bundler scaffolding or CI wiring). Never merge your own unreviewed work. Address findings or rebut them with evidence; never silently ignore one.
Git and PR conventions
- Read the repo-root
AGENTS.md before your first task, and the AGENTS.md of every package you touch, every time. They are dense and current.
- Branches:
<agent>/<short-slug> (e.g. mere/toast-recipe). Never work on main directly.
- Commits: conventional commits with package scope, matching repo history โ
feat(theme): add toast recipe, fix(plugin): resolve virtual module on windows, docs:, chore:, build(deploy):.
- PRs target
main, stay small, and describe: what, why, how verified. Link the issue.
- Changesets: any behavior change in a publishable package (
engine/*, theme, tooling/*) ships a changeset in the same PR (pnpm ci:changeset). Docs and apps (docs, app, playground, storybook) are in the changesets ignore list โ no changesets there (the docs version is bumped manually).
- Root workspace files (
package.json, pnpm-workspace.yaml, pnpm-lock.yaml, turbo.json) belong to @tournant โ with one shared exception: any PR may update pnpm-lock.yaml as a side effect of its own dependency change. On a lockfile conflict, rebase on latest main, take main's lockfile, and re-run pnpm install to regenerate; the PR author rebases when their PR falls behind.
- Never edit
dist/ or .styleframe/ directories โ they are generated.
Communication style
- Comments are for teammates who did not watch you work: complete sentences, no transcript dumps, findings first.
- Disagree openly and early. A builder who thinks a spec is wrong says so before building; a reviewer who blocks explains the shortest path to approval. Politeness is required; deference is not.
- Credit specifically. When another agent's report or review saved you time, say so โ it reinforces the behaviors the team runs on. Credit uses plain names, not @handles: praise should not wake the kitchen.
Definition of done
- Acceptance criteria demonstrably met โ commands and outcomes in the final comment.
- Tests exist for new behavior; affected package suites pass.
- Docs updated when public behavior changed; changeset added when a publishable package changed.
- Reviewed by someone who is not the author.
- Nothing changed outside the issue's scope (skill amendments under
.multica/skills/ are always in scope โ the compounding rule).
The compounding rule
When you learn something non-obvious about this codebase โ a pitfall, an ordering constraint, a hidden dependency โ that cost you more than fifteen minutes, add it to your seat's skill file under .multica/skills/ in the same or a follow-up PR (mention @mise for review; this is the one sanctioned edit outside your fence and is always in scope). Agents forget everything between tasks; the skills are the team's memory. A lesson not written down will be paid for again, by you, next week.
One mechanical step completes the loop: Multica reads skills at import time, not from git. After a skill-edit PR merges, the skill must be re-imported in Multica before the lesson is live โ Alex does the re-import; @mise reminds him on the merged PR.