Releases: CaseReed/flight-deck
Releases · CaseReed/flight-deck
Release list
1.13.0
Added
skills/workspace-discipline/SKILL.mdis a new skill covering five rules on confirming repository root, branch, and worktree state before a write, each tied to a real incident.hooks/workspace-guard.shis a new non-blockingPreToolUsehook nudging toward explicit-path staging on indiscriminategit add/git stage, and separately ongit commit -a/-am/--all, each with its own reminder. A plaingit commit,git commit -m, orgit commit --amendstays quiet, and it ships with no PowerShell counterpart, followingverify-reminder.sh's precedent since it gates nothing.tools/test-workspace-guard.shis a new 37-case test suite exercisingworkspace-guard.sh's staging and commit reminders across matching, non-matching, and off-topicBashcommands, plus a reduced-PATH run matchingtools/doctor.sh's own environment..gitignoregains adocs/rule keeping local design and planning notes untracked, since they quote incident material from private repositories rather than public ones.
Changed
skills/test-discipline/SKILL.mdextends its never-asserted-from-memory rule to claims about external systems: an API's behavior, a flag, a library version, or whether a practice is current.skills/mission-control/SKILL.mdandskills/design-fidelity/SKILL.mdreplace their own restated source-checking instructions with a pointer totest-discipline's rule, keeping only their local specifics.skills/mission-control/SKILL.md's concision section now also governs merge-request and pull-request descriptions, tickets, and messages written for a team, not only its own reports.skills/mission-control/SKILL.md's worktree explanation keeps its existing summary intact and adds a pointer to the newworkspace-disciplineskill for full lifecycle doctrine. Nothing was removed, so the file grows rather than shrinks, and the summary alone still suffices whenworkspace-disciplineis not installed.skills/mission-control/SKILL.md's PLAN step 3 now flags that a clean file split can still hide a shared invariant, a count, an enumeration, or a dependency one lot's file assumes. It must be named and assigned to a lot's done criteria or checked at VERIFY, and a corrective lot given only known occurrences must find every one itself.README.md,tools/doctor.sh, andRELEASING.mdnow enumerate the fifth skill and fourth hook everywhere the package lists its components by hand.RELEASING.md's doctor confirmation step now cites a count verified against a real full-install fixture rather than computed by hand.
Fixed
hooks/workspace-guard.sh's matching now fires when a flag abuts a closing quote, such asbash -c "git add -A", which previously slipped through undetected. The accepted trade is one narrow new false positive on a quoted string containing a control operator, documented in the script and inhooks/HOOKS.md.hooks/workspace-guard.shnow blanks quoted-m/-am/--messagecontent and tightens the flag group betweengitand the subcommand, closing the quoted-flag andgit checkout stage .false positives.tools/doctor.sh's hook-execution check and its jq-missing fallback had both omittedworkspace-guard.sh, so a registered but non-running hook still reported healthy. Two stale comments naming only twoPreToolUsehooks are corrected to name three.README.mdandtools/doctor.shtold users to run the deprecated/output-stylecommand in six places, including doctor's remediation text; all now point to/configor theoutputStylesetting. The command was deprecated in Claude Code v2.1.73 and removed in v2.1.91.tools/doctor.sh's hook-execution check now catches a registered hook that starts, fails mid-run on a missing dependency, and still exits 0, since every shipped hook is documented fail-open. A broken hook like this previously reported as healthy and left the exit code unaffected; it now reports BROKEN and fails the check.hooks/workspace-guard.shnow recognizes aVAR=valueprefix beforegitand a quoted flag argument likegit -C "dir"as valid segment starts, closing two missed reminders. It also blanks a-mmessage flag whose quote abuts it with no space, such as-m"docs: explain the -a flag".
1.12.0
Added
RELEASING.mddocuments the release sequence step by step, with the reason each step sits where it does, after 1.11.0 nearly shipped a staleVERSIONfile.tools/check-release.shverifies on every invocation that theVERSIONfile matches the CHANGELOG's top section, and the tag too when one is passed, exiting 1 with a per-failure fix. It needs only bash, grep and sed, so it behaves identically locally and on a runner..github/workflows/release-check.yml, the repo's first CI workflow, runs that script on pushes tomain, on pull requests, and onv*tags, plus on demand with a tag argument so the tag path can be exercised without creating a tag.maincarries no branch protection, so the check reports a mismatch rather than blocking it.tools/check-published.shverifies the tag is annotated and pushed, the GitHub release is published with a body matching CHANGELOG.md, and the badge carries the right version. Run it by hand as the last release step; it needsghauthenticated and skips itsgh-dependent checks visibly otherwise.- mission-control's VERIFY phase gains a rule that a correction is not done until every place stating the old truth is fixed, not only the one found first.
- mission-control's VERIFY phase gains a rule to verify a mechanism by triggering it for real rather than reimplementing its rules, unless the trigger is destructive, costly, or irreversible.
- test-discipline gains a fifth procedure step requiring a metric from an angle the work did not target: a count against a known total, or an independently drawn sample.
- code-craft's runtime-cost section gains a rule to measure a suspected cost center before launching an optimization effort on it, distinct from fixing one of the four named triggers by reading.
1.11.0
Added
skills/mission-control/SKILL.mdgains a routing-grid rule sending any lot that judges an image toopus, one tier above the same lot on text, and splitting a browser tour between mechanical capture and the read of the frames.
Changed
skills/design-fidelity/SKILL.mdstates in its composition contract that capturing frames and scoring them are separate lots at separate tiers, and that the scoring pass keeps a pinned model when mission-control is absent.README.mddocuments the visual-judgment tier bump under Usage, beside the routing paragraph, with the reason it exists: the tiers share one image pipeline and separate on reasoning, not on perception.CLAUDE-md-activation.mdcarries the same rule into its routing bullet, so a project pasting the activation block into its own CLAUDE.md gets the tier bump without installing anything further.
1.10.0
Added
skills/code-craft/is a new skill owning the shape and runtime cost of a code change, through four cuts on scope, documentation, defensive coding, and abstractions.- code-craft also carries the runtime-cost triggers, the idiom rules, and the trust boundary that keeps minimalism off untrusted input, auth, payments, and irreversible actions.
tools/make-badges.pymerges the README badges into a single svg, since GitHub renders README images as block elements and strips inline styles, which stacks separate badges one per line. Run it after each release, as the version badge is baked into the image.
Changed
README.mdis reorganised around a banner hero, a badge strip and tables, with the installer and uninstall prompts, the manual steps, the Windows detail and the ultracode discussion folded into details blocks. Both prompts are byte-identical to 1.9.1.- The install and uninstall steps and the "What it does" and "What's inside" tables in
README.mdnow cover the fourth skill, code-craft, alongside test-discipline and design-fidelity. - Over-engineering doctrine that lived redundantly across mission-control's SKILL.md, CLAUDE-md-activation.md, and the trailing line of test-discipline's Proportionality section is consolidated into code-craft, and several files now route to it by name.
skills/mission-control/references/rationale.mddrops "The pricing argument" section because its payoff-scales-with-the-tier-gap claim survives inREADME.md, not because the file restates it earlier.skills/mission-control/references/rationale.mdfolds "The opusplan lineage" into one sentence under History instead of keeping its own heading.skills/mission-control/SKILL.mddrops its frontier-model framing paragraph and its four-symptom over-delivery restatement in favor of invoking code-craft, landing at 237 lines, still over the file's own ~200-line target.- The same edit also deleted the routing-grid bullet stating "
opusstays the exception", now restored as a short clause inside the "torn between two tiers" bullet. skills/design-fidelity/SKILL.mdandREADME.mdadd code-craft to the build contract, the degradation clause, and the sibling-skill list, alongside mission-control and test-discipline.skills/mission-control/README.mdupdates its install step and code-lot paragraph to name code-craft alongside test-discipline as a mandatory companion skill.
Removed
- The completed
docs/plans/anddocs/specs/design-fidelity planning documents, superseded by the shipped skill.
Fixed
- The README hero pointed at
flight-deck-x-banner.png, a gitignored social-media asset, so it resolved to a 404 on GitHub; a resized copy now ships at.github/assets/banner.jpg. - The README's opening paragraph counted two skills where the package ships four, undercounting by two once code-craft and design-fidelity are included.
tools/doctor.sh's required skill-folder check omittedcode-craft, so an install missing only that folder still passed clean; the enumeration comment and loop now include it.- The installer prompt's step 6 hook registration JSON hardcoded
$HOME/.claude, ignoring theCLAUDE_CONFIG_DIRoverride from step 1; README andhooks/HOOKS.mdnow reference the resolved config directory.
1.9.1
Added
- A README section positions Flight Deck next to Claude Code's
ultracodesetting:ultracoderaises reasoning effort and grants standing orchestration permission, while Flight Deck governs what that orchestration may spend and how its output is checked.
Fixed
- Unquoted
$HOMEin the hook registration JSON (hooks/HOOKS.md,skills/mission-control/README.md) broke silently on any platform, in every release, when the home or config path contained a space: the hook died non-blocking, so the fanout guard could appear installed while enforcing nothing. The path is now quoted everywhere; the PowerShell guard'sargsarray was never affected. - The installer prompt in
README.mdnow states the quoting requirement for the hooks' registration JSON, with the one-line reason, so an assistant generating that JSON at install time cannot reintroduce the bug. tools/doctor.shnow invokes each registered hook with a harmless no-op payload in a sandboxedPATH, confirming no shell-level path error and naming the quoting fix on failure; it skips rather than false-passing an unparseable command.- Both guards' settings.json fallback now honors
CLAUDE_CONFIG_DIR, matchingtools/doctor.sh, so a relocated config directory reads consistently everywhere the fallback applies. - The PowerShell guard now decodes stdin as UTF-8 explicitly instead of the console input codepage, so a non-ASCII payload (an accented word, a non-Latin path) no longer risks mis-decoding under Windows PowerShell 5.1.
1.9.0
Added
fable5-fanout-guard.ps1, a PowerShell twin of the fanout guard, runs on native Windows without Git Bash, with nojqorcurldependency, and registers in exec form (interpreter ascommand).- The guard's decision table, JSON parsing, and fail-open behavior are proven by a 32-case suite on PowerShell 7 in a Linux container; Windows-specific path handling and registration have not been exercised on a real Windows machine.
- WSL needs nothing new, since it already behaves as ordinary Linux.
verify-reminder.shandflight-deck-update-check.shstay bash-only and are simply absent on native Windows without Git Bash; since neither gates a tool call, that costs a nudge rather than a safeguard.- Installer and uninstaller prompts are now platform-aware, with a Windows/WSL section in the README and a platform matrix in
hooks/HOOKS.md. Detecting the platform first resolves the config directory (honoringCLAUDE_CONFIG_DIR), copy-vs-symlink,chmod +x, and which hooks to offer. tools/doctor.shnow detects macOS, Linux, WSL, and native Windows under Git Bash, honorsCLAUDE_CONFIG_DIR, and accepts either fanout-guard variant (.shor.ps1) as a valid install. It flags a missingjqonly when a bash hook is installed, since a PowerShell-only install needs none.- design-fidelity gained a scout pass for the Claude Design import surface: run on a session's first handoff, or whenever the surface seems to have changed, it checks current capabilities and the exchange format against the real documentation and schema rather than memory.
- Phase-2 design-fidelity primitives are documented ahead of the work: the
DesignSynctool and the/design-syncskill drive it, using one HTML preview per component. - Two gotchas carry forward:
get_file's 256 KiB cap, exceeded by previews with embedded fonts (regenerate from code rather than editing in place), and design systems shaped like an app, which fall outside the converter's envelope (write previews directly).
Changed
- The routing grid and CLAUDE.md activation block are recalibrated for the current model lineup: Haiku for zero-judgment mechanics, Sonnet as the default for real code, Opus for complex agentic work, Fable for the hardest, longest-horizon reasoning.
- A hard ceiling caps parallel agents at 20; past that, the user must have asked for it explicitly, since current frontier models reach for subagents on their own.
- Verifier subagents are demoted from a default to an exception: checking another agent's deliverable is the orchestrator's own job, and a verifier subagent spins up only when the check itself is heavy or an independent adversarial read is deliberately wanted.
- The effort ladder is restated accurately:
highis already the default on the top tiers, so setting it no longer implies a change;lowandmediumare the real cost control on execution lots, andmaxis session-scope only, never a valid per-call value. - A scope-discipline line is added throughout: the plan now states where a lot stops and holds it there, since current models widen a task or lot on their own without saying so.
- Close-out is hardened from guidance into a hard rule: the knowledge pass fires as the first action on any close-out signal, before any mechanical teardown. A single file touched earlier, or a not-yet-merged state, no longer discharges or defers it.
1.8.0
Added
- design-fidelity now degrades gracefully when its sibling skills are absent or untriggered, running the build as an ordinary craft task with the repo's named check inline; it never hard-depends on mission-control or test-discipline.
Changed
- The fanout guard now arms on frontier sessions generally (Fable 5 and Opus), not Fable 5 alone: an unpinned
Agentcall or anyWorkflowon Opus is held to the same explicit-model and approval-token rules. The hook filename is unchanged for install compatibility. - The routing grid resolves the equal-tier case: equal-tier delegation is explicitly allowed (same token rate, fresh context and parallelism), while up-delegation to a model above the session requires the user's explicit approval. The ceiling rule now reads "at or below, never above".
- VERIFY now re-runs the named check for a code lot instead of trusting the executing agent's quoted output.
- Parallel-lot isolation now covers shared mutable state (the git index, lockfiles and installs, dev ports, test databases), not only shared files.
- The Workflow deny message now states the two real options (fall back to pinned parallel
Agentcalls, or pass the approval token) instead of the dead-end suggestion to pin the script.
Fixed
- A duplicated frontier-subagent-prompting section in mission-control's SKILL.md collapsed into a pointer. The file still runs over the ~200-line adherence target since this release's added doctrine outweighs the trim; a further slim is queued.
- Smaller coherence fixes: the inline-execution exception generalized beyond one-line edits, typography tolerance defined for pixel-only references, the up-delegation cutoff rephrased to an observable stop condition, and the guard's first-turn fail-open documented honestly in
HOOKS.md.
1.7.1
Added
- A capture protocol in the design-fidelity rubric takes every screenshot with animations frozen and reduced motion, after fonts load and the page is foregrounded and settled (not network idle), at 2x scale, full page and per breakpoint, with dynamic regions masked.
- A "read before you score" analysis protocol (rubric section 2.0) has the gate describe each region, run a breakage-signature checklist, cross-reference the accessibility snapshot against the screenshot for unpainted DOM elements, require cited evidence for a PASS, and zoom into suspicious regions.
- A recommended-session note in the README and mission-control's per-model section recommends running Flight Deck on Opus 4.8 at High reasoning effort by default, with xHigh reserved for the hardest lots.
Changed
- design-fidelity gate moves 2 and 3 now point at the new capture and reading protocols; the adversarial re-check re-runs the breakage checklist and the DOM-versus-pixel cross-check.
1.7.0
Added
- design-fidelity's close-out now purges Playwright MCP screenshots (transient gate evidence) once the user signs off on the frontend, and adds the capture directory to
.gitignorein a git project.
Changed
- design-fidelity's fidelity gate now renders visual comparisons through the Playwright MCP by default, in place of the claude-in-chrome extension, which becomes a documented fallback. The stable-primitives rule, README, and rubric are updated to match.
1.6.0
Added
tools/analyze-run.py, a read-only post-hoc transcript analyzer, prints an objective mission-control scorecard (orchestrator model, Agent-call inventory and model-pinning, per-tier token split, verification signal). Zero runtime cost; nothing added to the skill.tools/doctor.sh, a read-only install check, reports what is present vs missing (skills, activation block, hooks and their registration,jq/curl,VERSION, output style), required vs optional, with a remedy per gap.- A "What to expect per session model" section in the mission-control README, plus a one-time non-frontier nudge in the activation block, tells a Sonnet/Haiku user mission-control is installed and opt-in, silent by design until triggered.
- A
compatibilitydeclaration in the skill frontmatter states Claude Code only, subagents required, hooks optional.
Changed
- The fanout-guard's
FABLE_OKescape hatch now requires the token as the first non-empty line of prompt/string args, or a dedicated{"FABLE_OK": true}key/element for structured Workflow args; relaying it in prose no longer disarms the guard. - The recall and knowledge-pass steps no longer assume a specific
MEMORY.mdauto-memory feature.