STEP 1: VISIT GEMINI
Go to gemini.google.com in your browser.

STEP 2: DESCRIBE YOUR PLUGIN
Tell Gemini what kind of visual effect you want (e.g., matrix rain, starfield warp, laser grid).

STEP 3: USE THE STRICT SYNTAX PROMPT
Copy and paste the prompt below into Gemini to guarantee 100% correct Vala syntax, memory safety, and correct global C-export hooks:

==================================================
PROMPT FOR GEMINI:
==================================================
Write a standalone Vala plugin for my Tech-HUD artwork application.
Visual Effect Concept: [DESCRIBE YOUR EFFECT HERE]

Strict Constraints to Follow:
1. Use GLib, Cairo, and TechHud namespaces.
2. Export hooks globally at the root scope using [CCode (cname = "...")] for:
   - plugin_init ()
   - plugin_update (double dt, double audio_low, double audio_mid, double audio_high)
   - plugin_render (Cairo.Context cr, int width, int height)
   - plugin_set_param (string id, double val)
   - plugin_get_param (string id)
   - create_artwork_plugin () returning TechHud.ArtworkPluginWrapper
3. Do NOT call '.length' on class-field native arrays; track array lengths explicitly with an integer field (e.g. history_len) to prevent SIGSEGV segmentation faults.
4. Make the code self-contained in a single .vala file so it can be dropped into the /plugins/ directory and compiled independently.
5. Use correct Vala bindings for Cairo (e.g., cr.new_path() for resetting paths, and cr.select_font_face() for text). Avoid invalid method lookups.
6. Handle primitive type comparisons correctly: NEVER use GLib.Math.min() or Math.max() on integer types (`int width, height`). Instead, use explicit floating-point ternary casting like `(width < height) ? (double)width : (double)height` to avoid type mismatch compilation errors.
7. In create_artwork_plugin(), instantiate and return a fully configured TechHud.ArtworkPluginWrapper populated with id, name, description, author, version, and interactive sliders added via the exact parameter constructor signature: wrapper.parameters.add (new TechHud.PluginParameter ("id", "Label", TechHud.ParameterType.DOUBLE, min_val, max_val, default_val)).
8. Maintain a global singleton instance variable (e.g., private TechHud.MyPlugin? global_plugin = null;) initialized in plugin_init() so that the global C-export hooks (plugin_render, plugin_update, etc.) correctly forward calls to your plugin instance for preview rendering.

