Free and open source · FTC DECODE 2025-26

Built so Claude never guesses.

Refract is a Claude Code plugin for FTC teams. Every rule verdict, hardware spec, and generated line traces to a cited source, or it abstains.

CLAUDE CODE
/plugin marketplace add N0v4ont0p/Refract /plugin install refract-suite@refract
Why this is grounded
Claude CodeClaude Code
VS CodeVS Code / Copilot
GitHub CopilotCopilot CLI
CursorCursor
OpenCodeOpenCode
CodexCodex
AntigravityAntigravity
Gemini CLIGemini CLI

Every tool checked so far reaches Refract's grounded data, every one, with no exceptions. Some read the skills directly with zero setup; the rest get full access through a plain MCP connection. Full per-tool detail on the compatibility page.

cited, not recalled

Every rule verdict and hardware spec traces to a file actually read that turn, with a URL and a retrieval date you can go re-check yourself.

abstains, not guesses

When a part isn't in the seeded catalog, you get the gap named and the unblocking step, not a confident number that happens to be wrong.

every tool checked

All 8 tools checked so far reach the same grounded data. Five read the skills with zero setup; the rest connect over plain MCP.

0
corpus patterns
0
source teams
0
tagged rules
0
library-doc files
0
standing requirements
0
tools verified

Same request. Opposite outcome.

Not a staged demo. This is real output from Refract's own eval suite (TRACEABILITY.md R92/R93): the identical prompt, "write a teleop OpMode for our shooter," run once without Refract and once with ftc-construct.

WITHOUT REFRACT
// baseline run, no skill, same prompt double shooterVelocity = 1500; // ticks/sec // zero catalog lookup. // reported to the user as if considered.
WITH FTC-CONSTRUCT
// FlywheelShooter.java, generated double shooterVelocity = Double.NaN; // fail-fast init() guard. // doc comment names the real abstain // reason (motor_math.py exit 3, // unseeded SKU 5203-2402-0001) and the // unblocking step: seed the datasheet, // re-run the script, wire in the result.

The failure mode this is built against

Confidence, not question difficulty, is what predicts whether a check gets skipped.

A capable model answers from memory exactly when it feels sure, and that's exactly when a wrong recall does the most damage. Refract puts a deterministic check in front of the confident answer. See the three real incidents that shaped it.

Five skills, one router.

Start with ftc-team-config for anything code-related. Everything else routes from there. Full depth on the skills page.

01ftc-team-config
start here

Confirms your robot's config before any code generation. Doesn't write code itself, hands off to ftc-construct once confirmed.

02ftc-construct
generate

Writes new OpModes, subsystems, and mechanism features, grounded in real library docs and the hardware catalog. Runs a mandatory rules-and-review check before calling anything done.

03ftc-hardware-lookup
verify

Motor specs, gear ratios, part compatibility, encoder ticks. Abstains rather than guesses on a part outside the seeded catalog.

04ftc-rule-check
verify

"Is X legal," rule citations, Team Update questions. Every verdict runs a freshness check first and cites verified rule text.

05ftc-code-review
verify

Reviews code that already exists in your repo. Deterministic anti-pattern linting plus structural review grounded in the pattern corpus.

Install

Fastest path, Claude Code:

TERMINAL
/plugin marketplace add N0v4ont0p/Refract /plugin install refract-suite@refract

For VS Code, Copilot CLI, Cursor, Gemini CLI, OpenCode, Codex, or Antigravity, see the compatibility page for exactly what each one needs.

Update

All three steps below are needed. marketplace update alone refreshes the catalog but not what's already installed, a real gap found by an actual reinstall test, not assumed.

/plugin marketplace update refract
/plugin uninstall refract-suite@refract
/plugin install refract-suite@refract