/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.
$ npx -y skills add facebook/react --skill compiler-orchestrator --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
- You can call itInvoke it directly when you want it.
- Slash command
/compiler-orchestrator
Context preview
The summary Claude sees to decide when to auto-load this skill.
Orchestrate the Rust compiler port end-to-end. Discovers the current frontier, fixes failing passes, ports new passes, reviews, and commits in a loop.
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.
Repo: facebook/react
Other skills on react.
- /extract-errors
Use when adding new error messages to React, or seeing "unknown error code" warnings.
Open skill - /feature-flags
Use when feature flag tests fail, flags need updating, understanding @gate pragmas, debugging channel-specific test failures, or adding new flags to React.
Open skill - /fix
Use when you have lint errors, formatting issues, or before committing code to ensure it passes CI.
Open skill - /flags
Use when you need to check feature flag states, compare channels, or debug why a feature behaves differently across release channels.
Open skill - /flow
Use when you need to run Flow type checking, or when seeing Flow type errors in React code.
Open skill - /test
Use when you need to run tests for React core. Supports source, www, stable, and experimental channels.
Open skill

