Extension Preflight: local checks before Extension Warehouse submission

I’m sharing a preview build of IDK Extension Preflight, a local static review assistant for SketchUp extension developers.

It is meant to help developers catch common first-pass Extension Warehouse review issues before submitting an extension. It does not approve extensions, replace manual testing, or run AI review. It scans selected folders or .rbz / .zip packages and produces findings plus a Markdown report.

It checks for things like:

  • package shape: root loader, extension folder, archive contents
  • SketchupExtension registration and metadata
  • risky Ruby patterns such as eval, shell execution, dynamic loading, unsafe deserialization
  • HtmlDialog safety issues such as unescaped HTML, callback validation, and unsafe execute_script payloads
  • platform compatibility signals for Windows/Mac
  • model mutation and undo-operation review signals
  • destructive side-effect review signals such as save, purge, delete, and bulk erase patterns
  • manual submission readiness notes for docs, support contact, dependencies, testing, and listing accuracy

A few important limitations:

  • It does not execute the extension being scanned.
  • It does not prove code is safe or correct.
  • It cannot replace testing in SketchUp on real models.
  • It may report false positives, especially in generated frontend bundles or advanced architecture.
  • It does not run RuboCop; it provides guidance for running external tools manually.

Privacy/security note:

  • The scan is local.
  • It does not upload extension code.
  • It only reads the selected folder/archive and exports a Markdown report when you choose to save one.

Because this is an encrypted preview build, I’d especially appreciate feedback on the usefulness and calibration of the findings: what feels actionable, what feels noisy, and what important Extension Warehouse preparation issues it misses.

If this extension helps you find and fix problems with your code, hit like!

idk_extension_preflight_v0.2.0.rbz (234.7 KB)

Nice plugin, thanks for sharing. One suggestion that might make it even more useful would be an export option. That way I could export the data to a text or notes file and feed it directly to AI agents instead of copying everything manually.

Thanks for trying it out, Bogdan.

Take a look at the bottom of the Readiness Summary on the Scan panel. There you will see, Export Markdown. It’s an md for the reason you mentioned.

However, my suggestion would be that you create something like a ‘Code Quality Review’ folder and save it there. This can serve as a location for a Code Quality & Safety knowledge base. Follow the links on the Resources panel. Scrap those sources with your AI and ask for ai-readable docs (markdown) for your Code Quality & Safety knowledge base. Follow the guides to install rubocop.

You can then query your Code Quality & Safety Knowledge Base and ask it about the report findings.

Oh, I see it now. I think attaching it directly to the results would reduce extra clicks and make the workflow much faster.

But simply adding a copy button to the results would make it even better.

I don’t necessarily disagree. However, I wouldn’t want to initiate a download without a user explicitly requesting it.

EDIT - looks like you added this suggestion too: A compromise might be a Copy button for the results.

So, agreed.

Added Copy Results button in Findings.

idk_extension_preflight_v0.2.0.rbz (234.7 KB)

That’s great! It makes things much easier. On the UI side, you could add a small copy icon next to the “Copy Results” text.

chrome_z5rmSJ35CR

Calling all developers to give this plugin a try! @joshua_studiojdb @KeithBrooks @medeek @Alan4 @Arcwalde

The UI is a somewhat generic version of what I’d call a Modus-like lite-template, based off the Modus v2.0 Application Shell. All that to say that if I used an icon there it would be a Modus 2.0 copy CSS Icons () · Modus Icons

Let me know if the extension helps you dial in your code. The goal would be to move beyond needing it. Ultimately, I made it to improve the quality of code floating around and to hopefully reduce the number of extensions submitted to the EW that will be rejected for things developers ought to have caught before submitting.

Updated icons.

Suppressed some findings that may have been too strict.

Edit:

idk_extension_preflight_v0.2.0.rbz (234.7 KB)

A version of the checks made in extension reviews at SketchUp is also available here now: sketchup-extension-vscode-project/.claude/skills/sketchup-review-extension/SKILL.md at main · SketchUp/sketchup-extension-vscode-project · GitHub

Nice! Thanks Christina.

I can’t wait to dig into that.

Updated the extension to link it:

This version is updated with what I could grab from the SKILL:

New Coverage
  1. Root-loader overreach: EW004
  2. Unconditional production console output: LOG001
  3. Runtime gem installation: GEM001
  4. Environment mutation: ENV001
  5. exit and exit!: PROC001
  6. SketchUp-author-like names and filenames: EW010EW012
  7. Copyright and root version-check guidance: META002, META003, COMPAT003
  8. Short namespaces: NS008
  9. Operation and command wording: UNDO007, UX001
  10. Direct model mutations during entrypoint loading: UNDO008
  11. Local HtmlDialogs using remote resources: JS005
  12. Hardcoded length conversions: UNIT001
  13. Licensing review: LIC001
  14. Extension-directory writes: FILE001
  15. PNG-only toolbar icons: ASSET004
Remaining Limits
  1. User intent around save and purge
  2. Indirect startup model mutations
  3. Cross-method data flow into shell, HTML, and updater sinks
  4. Complete undo ownership across call paths
  5. Licensing tamper resistance
  6. Solid icon-background inspection
  7. Actual installation and model testing

idk_extension_preflight_v0.2.0.rbz (234.7 KB)