|
| 1 | +--- |
| 2 | +name: thermo-nuclear-code-quality-review |
| 3 | +description: Run an extremely strict maintainability review for abstraction quality, giant files, and spaghetti-condition growth. Use for a thermo-nuclear code quality review, thermonuclear review, deep code quality audit, or especially harsh maintainability review. |
| 4 | +--- |
| 5 | + |
| 6 | +<!-- Ported from Cursor's "Thermos" plugin (cursor/plugins, MIT license): |
| 7 | + https://github.com/cursor/plugins/tree/main/thermos |
| 8 | + Rubric content kept verbatim; only frontmatter was adapted for Codex. --> |
| 9 | + |
| 10 | +# Thermo-Nuclear Code Quality Review |
| 11 | + |
| 12 | +Codex skill frontmatter has no confirmed "explicit-invocation-only" flag, so: |
| 13 | +if this skill was matched implicitly rather than explicitly mentioned, |
| 14 | +confirm with the user before running it — it is deliberately harsh and can |
| 15 | +produce a lot of restructuring pressure for a task that only loosely |
| 16 | +resembled this description. |
| 17 | + |
| 18 | +Use this skill for an unusually strict review focused on implementation quality, maintainability, abstraction quality, and codebase health. |
| 19 | + |
| 20 | +Above all, this skill should push the reviewer to be **ambitious** about code structure. Do not merely identify local cleanup opportunities. Actively search for "code judo" moves: restructurings that preserve behavior while making the implementation dramatically simpler, smaller, more direct, and more elegant. |
| 21 | + |
| 22 | +## Core Prompt |
| 23 | + |
| 24 | +Start from this baseline: |
| 25 | + |
| 26 | +> Perform a deep code quality audit of the current branch's changes. |
| 27 | +> Rethink how to structure / implement the changes to meaningfully improve code quality without impacting behavior. |
| 28 | +> Work to improve abstractions, modularity, reduce Spaghetti code, improve succinctness and legibility. |
| 29 | +> Be ambitious, if there is a clear path to improving the implementation that involves restructuring some of the codebase, go for it. |
| 30 | +> Be extremely thorough and rigorous. Measure twice, cut once. |
| 31 | +
|
| 32 | +## Non-Negotiable Additional Standards |
| 33 | + |
| 34 | +Apply the baseline prompt above, plus these explicit review rules: |
| 35 | + |
| 36 | +0. **Be ambitious about structural simplification.** |
| 37 | + - Do not stop at "this could be a bit cleaner." |
| 38 | + - Look for opportunities to reframe the change so that whole branches, helpers, modes, conditionals, or layers disappear entirely. |
| 39 | + - Prefer the solution that makes the code feel inevitable in hindsight. |
| 40 | + - Assume there is often a "code judo" move available: a re-organization that uses the existing architecture more effectively and makes the change dramatically simpler and more elegant. |
| 41 | + - If you see a path to delete complexity rather than rearrange it, push hard for that path. |
| 42 | + |
| 43 | +1. **Do not let a PR push a file from under 1k lines to over 1k lines without a very strong reason.** |
| 44 | + - Treat this as a strong code-quality smell by default. |
| 45 | + - Prefer extracting helpers, subcomponents, modules, or local abstractions instead of letting a file sprawl past 1000 lines. |
| 46 | + - If the diff crosses that threshold, explicitly ask whether the code should be decomposed first. |
| 47 | + - Only waive this if there is a compelling structural reason and the resulting file is still clearly organized. |
| 48 | + |
| 49 | +2. **Do not allow random spaghetti growth in existing code.** |
| 50 | + - Be highly suspicious of new ad-hoc conditionals, scattered special cases, or one-off branches inserted into unrelated flows. |
| 51 | + - If a change adds "weird if statements in random places", treat that as a design problem, not a stylistic nit. |
| 52 | + - Prefer pushing the logic into a dedicated abstraction, helper, state machine, policy object, or separate module instead of tangling an existing path. |
| 53 | + - Call out changes that make the surrounding code harder to reason about, even if they technically work. |
| 54 | + |
| 55 | +3. **Bias toward cleaning the design, not just accepting working code.** |
| 56 | + - If behavior can stay the same while the structure becomes meaningfully cleaner, push for the cleaner version. |
| 57 | + - Do not rubber-stamp "it works" implementations that leave the codebase messier. |
| 58 | + - Strongly prefer simplifications that remove moving pieces altogether over refactors that merely spread the same complexity around. |
| 59 | + |
| 60 | +4. **Prefer direct, boring, maintainable code over hacky or magical code.** |
| 61 | + - Treat brittle, ad-hoc, or "magic" behavior as a code-quality problem. |
| 62 | + - Be skeptical of generic mechanisms that hide simple data-shape assumptions. |
| 63 | + - Flag thin abstractions, identity wrappers, or pass-through helpers that add indirection without buying clarity. |
| 64 | + |
| 65 | +5. **Push hard on type and boundary cleanliness when they affect maintainability.** |
| 66 | + - Question unnecessary optionality, `unknown`, `any`, or cast-heavy code when a clearer type boundary could exist. |
| 67 | + - Prefer explicit typed models or shared contracts over loosely-shaped ad-hoc objects. |
| 68 | + - If a branch relies on silent fallback to paper over an unclear invariant, ask whether the boundary should be made explicit instead. |
| 69 | + |
| 70 | +6. **Keep logic in the canonical layer and reuse existing helpers.** |
| 71 | + - Call out feature logic leaking into shared paths or implementation details leaking through APIs. |
| 72 | + - Prefer existing canonical utilities/helpers over bespoke one-offs. |
| 73 | + - Push code toward the right package, service, or module instead of normalizing architectural drift. |
| 74 | + |
| 75 | +7. **Treat unnecessary sequential orchestration and non-atomic updates as design smells when the cleaner structure is obvious.** |
| 76 | + - If independent work is serialized for no good reason, ask whether the flow should run in parallel instead. |
| 77 | + - If related updates can leave state half-applied, push for a more atomic structure. |
| 78 | + - Do not over-index on micro-optimizations, but do flag avoidable orchestration complexity that makes the implementation more brittle. |
| 79 | + |
| 80 | +## Primary Review Questions |
| 81 | + |
| 82 | +For every meaningful change, ask: |
| 83 | + |
| 84 | +- Is there a "code judo" move that would make this dramatically simpler? |
| 85 | +- Can this change be reframed so fewer concepts, branches, or helper layers are needed? |
| 86 | +- Does this improve or worsen the local architecture? |
| 87 | +- Did the diff add branching complexity where a better abstraction should exist? |
| 88 | +- Did a previously cohesive module become more coupled, more stateful, or harder to scan? |
| 89 | +- Is this logic living in the right file and layer? |
| 90 | +- Did this change enlarge a file or component past a healthy size boundary? |
| 91 | +- Are there repeated conditionals that signal a missing model or missing helper? |
| 92 | +- Is the implementation direct and legible, or does it rely on special cases and incidental control flow? |
| 93 | +- Is this abstraction actually earning its keep, or is it just a wrapper? |
| 94 | +- Did the diff introduce casts, optionality, or ad-hoc object shapes that obscure the real invariant? |
| 95 | +- Is this logic living in the canonical layer, or did the diff leak details across a boundary? |
| 96 | +- Is this orchestration more sequential or less atomic than it needs to be? |
| 97 | + |
| 98 | +## What to Flag Aggressively |
| 99 | + |
| 100 | +Escalate findings when you see: |
| 101 | + |
| 102 | +- A complicated implementation where a cleaner reframing could delete whole categories of complexity. |
| 103 | +- Refactors that move code around but fail to reduce the number of concepts a reader must hold in their head. |
| 104 | +- A file crossing 1000 lines due to the PR, especially if the new code could be split out. |
| 105 | +- New conditionals bolted onto unrelated code paths. |
| 106 | +- One-off booleans, nullable modes, or flags that complicate existing control flow. |
| 107 | +- Feature-specific logic leaking into general-purpose modules. |
| 108 | +- Generic "magic" handling that hides simple structure and makes the code harder to reason about. |
| 109 | +- Thin wrappers or identity abstractions that add indirection without simplifying anything. |
| 110 | +- Unnecessary casts, `any`, `unknown`, or optional params that muddy the real contract. |
| 111 | +- Copy-pasted logic instead of extracted helpers. |
| 112 | +- Narrow edge-case handling implemented in the middle of an already busy function. |
| 113 | +- Refactors that technically pass tests but make the code less modular or less readable. |
| 114 | +- "Temporary" branching that is likely to become permanent debt. |
| 115 | +- Bespoke helpers where the codebase already has a canonical utility for the job. |
| 116 | +- Logic added in the wrong layer/package when it should live somewhere more central. |
| 117 | +- Sequential async flow where obviously independent work could stay simpler and clearer with parallel execution. |
| 118 | +- Partial-update logic that leaves state less atomic than necessary. |
| 119 | + |
| 120 | +## Preferred Remedies |
| 121 | + |
| 122 | +When you identify a code-quality problem, prefer suggestions like: |
| 123 | + |
| 124 | +- Delete a whole layer of indirection rather than polishing it. |
| 125 | +- Reframe the state model so conditionals disappear instead of getting centralized. |
| 126 | +- Change the ownership boundary so the feature becomes a natural extension of an existing abstraction. |
| 127 | +- Turn special-case logic into a simpler default flow with fewer exceptions. |
| 128 | +- Extract a helper or pure function. |
| 129 | +- Split a large file into smaller focused modules. |
| 130 | +- Move feature-specific logic behind a dedicated abstraction. |
| 131 | +- Replace condition chains with a typed model or explicit dispatcher. |
| 132 | +- Separate orchestration from business logic. |
| 133 | +- Collapse duplicate branches into a single clearer flow. |
| 134 | +- Delete wrappers that do not meaningfully clarify the API. |
| 135 | +- Reuse the existing canonical helper instead of introducing a near-duplicate. |
| 136 | +- Make type boundaries more explicit so the control flow gets simpler. |
| 137 | +- Move the logic to the package/module/layer that already owns the concept. |
| 138 | +- Parallelize independent work when that also simplifies the orchestration. |
| 139 | +- Restructure related updates into a more atomic flow when partial state would be harder to reason about. |
| 140 | + |
| 141 | +Do not be satisfied with "maybe rename this" feedback when the real issue is structural. |
| 142 | +Do not be satisfied with a merely cleaner version of the same messy idea if there is a plausible path to a much simpler idea. |
| 143 | + |
| 144 | +## Review Tone |
| 145 | + |
| 146 | +Be direct, serious, and demanding about quality. |
| 147 | +Do not be rude, but do not soften major maintainability issues into mild suggestions. |
| 148 | +If the code is making the codebase messier, say so clearly. |
| 149 | +If the implementation missed an opportunity for a dramatic simplification, say that clearly too. |
| 150 | + |
| 151 | +Good phrases: |
| 152 | + |
| 153 | +- `this pushes the file past 1k lines. can we decompose this first?` |
| 154 | +- `this adds another special-case branch into an already busy flow. can we move this behind its own abstraction?` |
| 155 | +- `this works, but it makes the surrounding code more spaghetti. let's keep the behavior and restructure the implementation.` |
| 156 | +- `this feels like feature logic leaking into a shared path. can we isolate it?` |
| 157 | +- `this abstraction seems unnecessary. can we just keep the direct flow?` |
| 158 | +- `why does this need a cast / optional here? can we make the boundary more explicit instead?` |
| 159 | +- `this looks like a bespoke helper for something we already have elsewhere. can we reuse the canonical one?` |
| 160 | +- `i think there's a code-judo move here that makes this much simpler. can we reframe this so these branches disappear?` |
| 161 | +- `this refactor moves complexity around, but doesn't really delete it. is there a way to make the model itself simpler?` |
| 162 | + |
| 163 | +## Output Expectations |
| 164 | + |
| 165 | +Prioritize findings in this order: |
| 166 | + |
| 167 | +1. Structural code-quality regressions |
| 168 | +2. Missed opportunities for dramatic simplification / code-judo restructuring |
| 169 | +3. Spaghetti / branching complexity increases |
| 170 | +4. Boundary / abstraction / type-contract problems that make the code harder to reason about |
| 171 | +5. File-size and decomposition concerns |
| 172 | +6. Modularity and abstraction issues |
| 173 | +7. Legibility and maintainability concerns |
| 174 | + |
| 175 | +Do not flood the review with low-value nits if there are larger structural issues. |
| 176 | +Prefer a smaller number of high-conviction comments over a long list of cosmetic notes. |
| 177 | + |
| 178 | +## Approval Bar |
| 179 | + |
| 180 | +Do not approve merely because behavior seems correct. |
| 181 | +The bar for approval is: |
| 182 | + |
| 183 | +- no clear structural regression |
| 184 | +- no obvious missed opportunity to make the implementation dramatically simpler when such a path is visible |
| 185 | +- no unjustified file-size explosion |
| 186 | +- no obvious spaghetti-growth from special-case branching |
| 187 | +- no obviously hacky or magical abstraction that makes the code harder to reason about |
| 188 | +- no unnecessary wrapper/cast/optionality churn obscuring the real design |
| 189 | +- no clear architecture-boundary leak or avoidable canonical-helper duplication |
| 190 | +- no missed opportunity for an obvious decomposition that would materially improve maintainability |
| 191 | + |
| 192 | +Treat these as presumptive blockers unless the author can justify them clearly: |
| 193 | + |
| 194 | +- the PR preserves a lot of incidental complexity when there is a plausible code-judo move that would delete it |
| 195 | +- the PR pushes a file from below 1000 lines to above 1000 lines |
| 196 | +- the PR adds ad-hoc branching that makes an existing flow more tangled |
| 197 | +- the PR solves a local problem by scattering feature checks across shared code |
| 198 | +- the PR adds an unnecessary abstraction, wrapper, or cast-heavy contract that makes the design more indirect |
| 199 | +- the PR duplicates an existing helper or puts logic in the wrong layer when there is a clear canonical home |
| 200 | + |
| 201 | +If those conditions are not met, leave explicit, actionable feedback and push for a cleaner decomposition. |
0 commit comments