/compiler-orchestrator
Orchestrate the Rust compiler port end-to-end. Discovers the current frontier, fixes failing passes, ports new passes, reviews, and commits in a loop.
Claude Code
$ npx -y skills add react/react --skill compiler-orchestrator --agent claude-code
Codex
$ npx skills add react/react --skill compiler-orchestrator -a codex -y
Cursor
$ npx skills add react/react --skill compiler-orchestrator -a cursor -y
Gemini CLI
$ npx skills add react/react --skill compiler-orchestrator -a gemini-cli -y
GitHub Copilot
$ npx skills add react/react --skill compiler-orchestrator -a github-copilot -y
OpenCode
$ npx skills add react/react --skill compiler-orchestrator -a opencode -y
Windsurf
$ npx skills add react/react --skill compiler-orchestrator -a windsurf -y
SKILL.md
compiler-orchestrator.SKILL.mdname: compiler-orchestrator
description: Orchestrate the Rust compiler port end-to-end. Discovers the current frontier, fixes failing passes, ports new passes, reviews, and commits in a loop.
Compiler Orchestrator
Automatically drive the Rust compiler port forward by discovering the current state, fixing failures, porting new passes, reviewing, and committing — in a continuous loop.
Arguments:
- $ARGUMENTS: Optional. A pass name to start from, or `status` to just report current state without acting.
Pass Order Reference
These are the passes in Pipeline.ts order, with their exact log names:
| # | Log Name | Kind | Notes | |---|----------|------|-------| | 1 | HIR | hir | | | 2 | PruneMaybeThrows | hir | Validation: validateContextVariableLValues, validateUseMemo after | | 3 | DropManualMemoization | hir | Conditional | | 4 | InlineImmediatelyInvokedFunctionExpressions | hir | | | 5 | MergeConsecutiveBlocks | hir | | | 6 | SSA | hir | | | 7 | EliminateRedundantPhi | hir | | | 8 | ConstantPropagation | hir | | | 9 | InferTypes | hir | Validation: validateHooksUsage, validateNoCapitalizedCalls after (conditional) | | 10 | OptimizePropsMethodCalls | hir | | | 11 | AnalyseFunctions | hir | | | 12 | InferMutationAliasingEffects | hir | | | 13 | OptimizeForSSR | hir | Conditional: outputMode === 'ssr' | | 14 | DeadCodeElimination | hir | | | 15 | PruneMaybeThrows (2nd) | hir | Reuses existing fn, just needs 2nd call + log in pipeline.rs | | 16 | InferMutationAliasingRanges | hir | Validation block (8 validators) after (conditional) | | 17 | InferReactivePlaces | hir | Validation: validateExhaustiveDependencies after (conditional) | | 18 | RewriteInstructionKindsBasedOnReassignment | hir | Validation: validateStaticComponents after (conditional) | | 19 | InferReactiveScopeVariables | hir | Conditional: enableMemoization | | 20 | MemoizeFbtAndMacroOperandsInSameScope | hir | | | -- | outlineJSX | hir | Between #20 and #21, conditional: enableJsxOutlining, no log entry | | 21 | NameAnonymousFunctions | hir | Conditional | | 22 | OutlineFunctions | hir | Conditional | | 23 | AlignMethodCallScopes | hir | | | 24 | AlignObjectMethodScopes | hir | | | 25 | PruneUnusedLabelsHIR | hir | | | 26 | AlignReactiveScopesToBlockScopesHIR | hir | | | 27 | MergeOverlappingReactiveScopesHIR | hir | | | 28 | BuildReactiveScopeTerminalsHIR | hir | | | 29 | FlattenReactiveLoopsHIR | hir | | | 30 | FlattenScopesWithHooksOrUseHIR | hir | | | 31 | PropagateScopeDependenciesHIR | hir | | | 32 | BuildReactiveFunction | reactive | | | 33 | AssertWellFormedBreakTargets | debug | Validation | | 34 | PruneUnusedLabels | reactive | | | 35 | AssertScopeInstructionsWithinScopes | debug | Validation | | 36 | PruneNonEscapingScopes | reactive | | | 37 | PruneNonReactiveDependencies | reactive | | | 38 | PruneUnusedScopes | reactive | | | 39 | MergeReactiveScopesThatInvalidateTogether | reactive | | | 40 | PruneAlwaysInvalidatingScopes | reactive | | | 41 | PropagateEarlyReturns | reactive | | | 42 | PruneUnusedLValues | reactive | | | 43 | PromoteUsedTemporaries | reactive | | | 44 | ExtractScopeDeclarationsFromDestructuring | reactive | | | 45 | StabilizeBlockIds | reactive | | | 46 | RenameVariables | reactive | | | 47 | PruneHoistedContexts | reactive | | | 48 | ValidatePreservedManualMemoization | debug | Conditional | | 49 | Codegen | ast | |
Validation passes (no log entries, tested via CompileError/CompileSkip events):
- After PruneMaybeThrows (#2): validateContextVariableLValues, validateUseMemo
- After InferTypes (#9): validateHooksUsage, validateNoCapitalizedCalls (conditional)
- After InferMutationAliasingRanges (#16): 8 validators (conditional)
- After InferReactivePlaces (#17): validateExhaustiveDependencies (conditional)
- After RewriteInstructionKindsBasedOnReassignment (#18): validateStaticComponents (conditional)
- After PruneHoistedContexts (#45): validatePreservedManualMemoization (conditional)
- After Codegen (#46): validateSourceLocations (conditional)
Orchestrator Log
Maintain a log file at `compiler/docs/rust-port/rust-port-orchestrator-log.md` that tracks all progress.
Log file format
# Status
HIR: complete (1717/1717)
PruneMaybeThrows: complete (1717/1717)
DropManualMemoization: complete (1717/1717)
...
AnalyseFunctions: partial (1700/1717)
InferMutationAliasingEffects: todo
...
# Logs
## 20260318-143022 Port AnalyseFunctions pass
Ported AnalyseFunctions from TypeScript to Rust. Added new crate react_compiler_analyse_functions.
1700/1717 tests passing, 17 failures in edge cases with nested functions.
## 20260318-141500 Fix SSA phi node ordering
Fixed phi node operand ordering in SSA pass that caused 3 test failures.
All 1717 tests now passing through OptimizePropsMethodCalls.
Status section
The `# Status` section lists every pass from #1 to #49 with one of:
- `complete (N/N)` — all tests passing through this pass
- `partial (passed/total)` — some test failures remain
- `todo` — not yet ported
Update the Status section after every test run to reflect the latest results.
Log entries
Add a new log entry (below the most recent one, so newest entries are at the bottom) whenever:
- A pass is newly ported
- Test failures are fixed
- A commit is made
Entry format: `## YYYYMMDD-HHMMSS <short-summary>` followed by 1-3 lines describing what changed.
Use the current timestamp when creating entries. Get it via `date '+%Y%m%d-%H%M%S'`.
Initialization
On first run, if the log file doesn't exist, create it with the Status section populated from the current state (read pipeline.rs and run tests to determine pass statuses).
Core Loop
**Main context role**: The main context is ONLY an orchestration loop. It parses subagent results, updates the orchestrator log, prints status, and launches the next subagent. The main context MUST NOT read source code, investigate failures, debug issues, or make edits directly. ALL implementation work — fixing, port
Read more
name: compiler-orchestrator description: Orchestrate the Rust compiler port end-to-end. Discovers the current frontier, fixes failing passes, ports new passes, reviews, and commits in a loop.
Compiler Orchestrator
Automatically drive the Rust compiler port forward by discovering the current state, fixing failures, porting new passes, reviewing, and committing — in a continuous loop.
Arguments:
- $ARGUMENTS: Optional. A pass name to start from, or `status` to just report current state without acting.
Pass Order Reference
These are the passes in Pipeline.ts order, with their exact log names:
| # | Log Name | Kind | Notes | |---|----------|------|-------| | 1 | HIR | hir | | | 2 | PruneMaybeThrows | hir | Validation: validateContextVariableLValues, validateUseMemo after | | 3 | DropManualMemoization | hir | Conditional | | 4 | InlineImmediatelyInvokedFunctionExpressions | hir | | | 5 | MergeConsecutiveBlocks | hir | | | 6 | SSA | hir | | | 7 | EliminateRedundantPhi | hir | | | 8 | ConstantPropagation | hir | | | 9 | InferTypes | hir | Validation: validateHooksUsage, validateNoCapitalizedCalls after (conditional) | | 10 | OptimizePropsMethodCalls | hir | | | 11 | AnalyseFunctions | hir | | | 12 | InferMutationAliasingEffects | hir | | | 13 | OptimizeForSSR | hir | Conditional: outputMode === 'ssr' | | 14 | DeadCodeElimination | hir | | | 15 | PruneMaybeThrows (2nd) | hir | Reuses existing fn, just needs 2nd call + log in pipeline.rs | | 16 | InferMutationAliasingRanges | hir | Validation block (8 validators) after (conditional) | | 17 | InferReactivePlaces | hir | Validation: validateExhaustiveDependencies after (conditional) | | 18 | RewriteInstructionKindsBasedOnReassignment | hir | Validation: validateStaticComponents after (conditional) | | 19 | InferReactiveScopeVariables | hir | Conditional: enableMemoization | | 20 | MemoizeFbtAndMacroOperandsInSameScope | hir | | | -- | outlineJSX | hir | Between #20 and #21, conditional: enableJsxOutlining, no log entry | | 21 | NameAnonymousFunctions | hir | Conditional | | 22 | OutlineFunctions | hir | Conditional | | 23 | AlignMethodCallScopes | hir | | | 24 | AlignObjectMethodScopes | hir | | | 25 | PruneUnusedLabelsHIR | hir | | | 26 | AlignReactiveScopesToBlockScopesHIR | hir | | | 27 | MergeOverlappingReactiveScopesHIR | hir | | | 28 | BuildReactiveScopeTerminalsHIR | hir | | | 29 | FlattenReactiveLoopsHIR | hir | | | 30 | FlattenScopesWithHooksOrUseHIR | hir | | | 31 | PropagateScopeDependenciesHIR | hir | | | 32 | BuildReactiveFunction | reactive | | | 33 | AssertWellFormedBreakTargets | debug | Validation | | 34 | PruneUnusedLabels | reactive | | | 35 | AssertScopeInstructionsWithinScopes | debug | Validation | | 36 | PruneNonEscapingScopes | reactive | | | 37 | PruneNonReactiveDependencies | reactive | | | 38 | PruneUnusedScopes | reactive | | | 39 | MergeReactiveScopesThatInvalidateTogether | reactive | | | 40 | PruneAlwaysInvalidatingScopes | reactive | | | 41 | PropagateEarlyReturns | reactive | | | 42 | PruneUnusedLValues | reactive | | | 43 | PromoteUsedTemporaries | reactive | | | 44 | ExtractScopeDeclarationsFromDestructuring | reactive | | | 45 | StabilizeBlockIds | reactive | | | 46 | RenameVariables | reactive | | | 47 | PruneHoistedContexts | reactive | | | 48 | ValidatePreservedManualMemoization | debug | Conditional | | 49 | Codegen | ast | |
Validation passes (no log entries, tested via CompileError/CompileSkip events):
- After PruneMaybeThrows (#2): validateContextVariableLValues, validateUseMemo
- After InferTypes (#9): validateHooksUsage, validateNoCapitalizedCalls (conditional)
- After InferMutationAliasingRanges (#16): 8 validators (conditional)
- After InferReactivePlaces (#17): validateExhaustiveDependencies (conditional)
- After RewriteInstructionKindsBasedOnReassignment (#18): validateStaticComponents (conditional)
- After PruneHoistedContexts (#45): validatePreservedManualMemoization (conditional)
- After Codegen (#46): validateSourceLocations (conditional)
Orchestrator Log
Maintain a log file at `compiler/docs/rust-port/rust-port-orchestrator-log.md` that tracks all progress.
Log file format
# Status HIR: complete (1717/1717) PruneMaybeThrows: complete (1717/1717) DropManualMemoization: complete (1717/1717) ... AnalyseFunctions: partial (1700/1717) InferMutationAliasingEffects: todo ... # Logs ## 20260318-143022 Port AnalyseFunctions pass Ported AnalyseFunctions from TypeScript to Rust. Added new crate react_compiler_analyse_functions. 1700/1717 tests passing, 17 failures in edge cases with nested functions. ## 20260318-141500 Fix SSA phi node ordering Fixed phi node operand ordering in SSA pass that caused 3 test failures. All 1717 tests now passing through OptimizePropsMethodCalls.
Status section
The `# Status` section lists every pass from #1 to #49 with one of:
- `complete (N/N)` — all tests passing through this pass
- `partial (passed/total)` — some test failures remain
- `todo` — not yet ported
Update the Status section after every test run to reflect the latest results.
Log entries
Add a new log entry (below the most recent one, so newest entries are at the bottom) whenever:
- A pass is newly ported
- Test failures are fixed
- A commit is made
Entry format: `## YYYYMMDD-HHMMSS <short-summary>` followed by 1-3 lines describing what changed.
Use the current timestamp when creating entries. Get it via `date '+%Y%m%d-%H%M%S'`.
Initialization
On first run, if the log file doesn't exist, create it with the Status section populated from the current state (read pipeline.rs and run tests to determine pass statuses).
Core Loop
**Main context role**: The main context is ONLY an orchestration loop. It parses subagent results, updates the orchestrator log, prints status, and launches the next subagent. The main context MUST NOT read source code, investigate failures, debug issues, or make edits directly. ALL implementation work — fixing, port
React is a JavaScript library for building user interfaces. Declarative: React makes it painless to create interactive UIs.
Other skills on react.
More skills from other plugins.
brainstorming
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…
ask-matt
Ask which skill or flow fits your situation. A router over the skills in this repo.
act-on-feedback
Act on user feedback attached to the current session. Use when the user submits feedback on the session's changes via the Submit…
Questions about compiler-orchestrator.
- Which coding agents can use compiler-orchestrator?
- compiler-orchestrator installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.

