Skip to content
Development
Skill

/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.

From plugin
react
247k14 skills4 agents
Install
$ npx -y skills add facebook/react --skill compiler-orchestrator --agent claude-code

How 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.md
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

Read more
Ships withreact

React is a JavaScript library for building user interfaces. Declarative: React makes it painless to create interactive UIs.

Get the whole plugin