← all publishers

Impertio-Studio

@impertio-studio source repo

797 published skills · page 4 of 8

  1. Speckle Impl Versioning · impertio-studio bundle
    Use when managing Speckle versions (commits), comparing model changes, implementing rollback strategies, or organizing models with branches. Prevents version history corruption, incorrect diff interpretation, and orphaned model branches. Covers version management (create/compare/rollback), sync strategies, version history traversal, DiffExtension in viewer, branch/model management, and multi-model coordination patterns. Keywords: speckle version, commit, branch, model, diff, compare, rollback, history, version management, model management, undo changes, see what changed, go back to previous.
    0 installs
  2. Speckle Syntax GRAPHQL · impertio-studio bundle
    Use when writing GraphQL queries, mutations, or subscriptions against the Speckle Server API. Prevents incorrect pagination patterns, missing variable declarations, and deprecated query usage. Covers all major queries (activeUser, project, workspace, serverInfo), mutations (CRUD for projects/models/versions/webhooks/tokens), subscriptions, cursor-based pagination, and nested query patterns. Keywords: speckle graphql, query, mutation, subscription, pagination, activeUser, project, model, version, cursor, fetch data, list projects, get versions, API query.
    0 installs
  3. Speckle Core Object Model · impertio-studio bundle
    Use when creating Speckle objects, understanding Base class inheritance, or working with object decomposition. Prevents incorrect detachment syntax, broken content hashing, and misuse of dynamic vs typed properties. Covers Base class hierarchy, id/applicationId, speckle_type, detaching (@), chunking, decomposition, DataObject, Collection, Proxy types, displayValue, and units. Keywords: speckle base object, object model, detach, chunkable, decomposition, speckle_type, displayValue, collection, proxy, what is Base, how objects work, data structure, custom object.
    0 installs
  4. Speckle Syntax Automate · impertio-studio bundle
    Use when writing Speckle Automate functions, defining function inputs, or using the AutomationContext API. Prevents incorrect input schema definition, missing error reporting, and broken function registration. Covers Automate function structure, FunctionInputs (Pydantic/DataAnnotations), AutomationContext API (receive_version, attach_error_to_objects, mark_run_failed/success, store_file_result, set_context_view), and execute_automate_function. Keywords: speckle automate, automation context, function inputs, automate function, mark_run_failed, attach_error, store_file_result, write automate function, handle errors.
    0 installs
  5. Speckle Syntax Webhooks · impertio-studio bundle
    Use when setting up Speckle webhooks, handling webhook payloads, or automating reactions to Speckle events. Prevents incorrect event trigger strings, missing webhook security validation, and exceeded webhook limits. Covers webhook lifecycle (create/update/delete), all 14 event types with trigger strings, payload structure, configuration limits, security, and retry behavior. Keywords: speckle webhook, event, trigger, payload, webhookCreate, commit_create, stream_update, branch_create, automation, notify, trigger on change, real-time update.
    0 installs
  6. Speckle Errors Transport · impertio-studio bundle
    Use when debugging Speckle send/receive failures, transport timeout errors, SQLite lock issues, or authentication expiry during transfers. Prevents unhandled transport exceptions, SQLite database locks from concurrent access, and silent auth token expiry during long uploads. Covers transport failures (network errors, timeout, auth expiry), SQLite lock errors, memory limits, multi-transport errors, batch upload failures, progress reporting errors, and retry strategies. Keywords: speckle error, transport error, sqlite lock, timeout, auth expiry, upload failed, receive failed, network error, retry, send failed, download stuck, connection timeout.
    0 installs
  7. Pdfium Impl Wasm · impertio-studio bundle
    Use when compiling a Rust application that uses pdfium-render to WebAssembly to run PDF rendering or inspection in a browser, when loading a PDF without a filesystem, or when diagnosing a WASM-only failure such as an out-of-memory crash, "Unable to locate wasmTable", or corrupted bitmap output. Prevents shipping the non-growable bblanchon WASM heap, calling filesystem loaders that do not exist in the browser, and using the memory-unsafe raw WASM bitmap buffer accessor. Covers the two-WASM-module architecture, bind_to_system_library in the browser, load_pdf_from_fetch and load_pdf_from_blob, the console_log feature, and safe bitmap buffer reads across pdfium-render 0.8.x and 0.9.x. Keywords: pdfium-render, WASM, WebAssembly, browser, wasm-pack, wasm-bindgen, load_pdf_from_fetch, load_pdf_from_blob, console_log, bind_to_system_library, paulocoutinhox, bblanchon, non-growable heap, out of memory, OOM, Unable to locate wasmTable, Module._malloc not defined, FPDFBitmap_GetBuffer, corrupted image, blank canvas in b
    0 installs
  8. Pdfium Impl Fonts · impertio-studio bundle
    Use when embedding a custom TrueType or Type1 font into a PDF with pdfium-render, selecting one of the 14 built-in PDF fonts, inspecting font metadata, working with glyphs, or extracting an embedded font from a document. Prevents the removed-PdfFont-constructor compile error, garbled or unselectable text from a wrong is_cid_font flag, and the assumption that built-in fonts can render emoji. Covers PdfFonts loading constructors, PdfFontToken, PdfFontBuiltin, PdfFont inspection, PdfFontGlyphs, and embedded-font extraction across pdfium-render 0.8.x and 0.9.x. Keywords: pdfium-render, PdfFonts, PdfFont, PdfFontToken, PdfFontGlyphs, PdfFontBuiltin, load_true_type_from_bytes, load_type1_from_file, helvetica, embed font, custom font, is_cid_font, is_embedded, extract font, garbled text, unselectable text, text shows as boxes, copied text is wrong, emoji not rendering, how do I embed a font in a PDF, how to use a custom font.
    0 installs
  9. Pdfium Core Memory · impertio-studio bundle
    Use when storing pdfium-render handles in a struct, fighting borrow-checker lifetime errors, deciding drop order, or seeing "borrowed value does not live long enough" or "cannot return value referencing local variable" around Pdfium, PdfDocument, or PdfPage. Prevents the self-referential-struct trap and dropping a parent handle while child handles are still alive. Covers the Pdfium to PdfDocument to PdfPage ownership tree, lifetime-bound handles, the 'static bound on save_to_writer, byte-slice versus byte-vec loader lifetimes, and what pdfium-render 0.9.0 simplified. Keywords: pdfium-render lifetimes, PdfDocument lifetime parameter, drop order, self-referential struct, borrow checker error, borrowed value does not live long enough, save_to_writer 'static bound, cannot return value referencing local variable, RAII handle, how do I store a PDF document in a struct, why won't my pdfium code compile, Send Sync thread_safe, OnceLock global Pdfium
    0 installs
  10. Pdfium Impl Saving · impertio-studio bundle
    Use when persisting a pdfium-render PdfDocument to disk, to bytes, to a writer, or to a browser Blob, and when edits like form fills or object changes are not appearing in the output file. Prevents the save_to_writer 'static borrow-checker error, confusing PDF saving with image export, losing in-memory edits by never calling save, and calling the WASM-only save_to_blob on a native target. Covers save_to_file, save_to_writer, save_to_bytes, save_to_blob, the 'static writer bound, and saving after create_new_pdf or after edits. Keywords: pdfium-render save PDF, save_to_file, save_to_writer, save_to_bytes, save_to_blob, persist PdfDocument, write PDF to disk, PDF to Vec u8, export PDF, 'static bound writer, writer may not live long enough, borrowed value does not live long enough, edits not saved, changes lost, form fill not saved, save document after create_new_pdf, how do I save a PDF in Rust
    0 installs
  11. Pdfium Core Raw Ffi · impertio-studio bundle
    Use when reaching past the high-level pdfium-render API into the raw FPDF_* C functions: porting existing C or C++ PDFium code, or calling a PDFium function that pdfium-render does not yet wrap. Prevents the unsafe-contract mistakes that crash a process, a double free of a raw handle a high-level object already owns, a use-after-free of a raw handle whose bindings dropped, and the 0.8.x assumption that FPDF_* calls are safe. Covers the PdfiumLibraryBindings trait, the bindings() accessor, the unsafe marking added in 0.9.0, the PdfiumLibraryBindingsAccessor visibility change in 0.9.2, and how to mix raw calls with RAII handles across pdfium-render 0.8.x and 0.9.x. Keywords: pdfium-render raw FFI, PdfiumLibraryBindings, FPDF_ functions, bindings(), get_bindings, unsafe fn, FPDF_LoadDocument, FPDF_GetPageCount, FPDF_DOCUMENT, FPDF_PAGE, PdfiumLibraryBindingsAccessor, porting C++ PDFium code, calling an unwrapped function, segfault calling FPDF, double free, use after free, how do I call a raw pdfium function, un
    0 installs
  12. Pdfium Syntax Text · impertio-studio bundle
    Use when extracting text from a PDF page with pdfium-render, reading text character by character, getting the text inside a rectangle, or searching a page for a string. Prevents missing text held inside XObject form containers and trusting chars_for_object on an outdated PDFium build. Covers PdfPage::text, PdfPageText::all, the chars and segments collections, PdfPageTextChar, region extraction, and PdfPageText::search with PdfSearchOptions. Keywords: pdfium-render extract text, PdfPageText, page text all, PdfPageTextChar, PdfPageTextSegment, text search, PdfSearchOptions, PdfSearchDirection, chars_for_object, is_generated, is_hyphen, how do I extract text from a PDF, text extraction misses words, garbled text from PDF, search text in PDF, unicode_char
    0 installs
  13. Pdfium Syntax Pages · impertio-studio bundle
    Use when accessing, counting, indexing, or iterating the pages of a PDF with pdfium-render, or reading a page's size or paper format. Prevents the page-access mistakes: storing a page index as u16 after the 0.9.0 c_int change, loading every page just to read its dimensions, calling pages() when a mutable collection is required, and assuming get() cannot fail. Covers PdfDocument::pages and pages_mut, the PdfPages collection (len, is_empty, first, last, get, iter), page_size and page_sizes for load-free dimensions, PdfPage::width, height and paper_size, the PdfPageIndex type, and iterating with enumerate. Keywords: pdfium-render, pages, PdfPages, PdfPage, page count, page index, PdfPageIndex, iter, enumerate, first, last, get, page_size, page_sizes, paper_size, PdfPagePaperSize, pages_mut, "how many pages", "loop over pages", "get page by number", "page out of bounds", "PageIndexOutOfBounds", "expected u16 found c_int", "how big is each page", "iterate PDF pages".
    0 installs
  14. Pdfium Impl Multi Page · impertio-studio bundle
    Use when merging, concatenating, splitting, extracting, or reordering pages across PDF documents with pdfium-render: combining several PDFs into one, pulling a page subset into a new file, or rearranging page order. Prevents the wrong-method-name mistake (the import_page_from_document family does not exist; the real names are the copy_*_from_document family), the index-base confusion (copy_pages_from_document takes a 1-indexed string while the numeric functions are 0-indexed), and the wrong-receiver mistake (append lives on PdfPages, not PdfDocument). Covers append, copy_page_from_document, copy_page_range_from_document, copy_pages_from_document, pages_mut, and the PdfPageIndex type change. Keywords: pdfium-render merge PDFs, concatenate PDF, combine PDF files, split PDF, extract pages, reorder pages, copy_pages_from_document, copy_page_from_document, copy_page_range_from_document, append, pages_mut, import_page_from_document not found, how do I merge two PDFs, join PDF pages, page index out of bounds, 1-inde
    0 installs
  15. Pdfium Impl Navigation · impertio-studio bundle
    Use when reading the navigation structure of a PDF with pdfium-render: the bookmark outline tree, the clickable links on a page, the destinations links and bookmarks point at, and the action objects behind them. Prevents the wrong-method mistakes link.bounds() (the real name is link.rect()) and destination.view() (renamed to view_settings()), the missing-method assumption (PdfBookmarks has no len() or is_empty()), and the non-exhaustive match on the PdfAction and PdfActionType enums. Covers PdfBookmarks, PdfBookmark, PdfPageLinks, PdfLink, PdfDestination, PdfDestinationViewSettings, PdfAction, PdfActionType, and PdfActionUri. Keywords: pdfium-render bookmarks, PDF outline tree, PdfBookmarks, PdfBookmark, PdfPageLinks, PdfLink, PdfDestination, PdfAction, PdfActionUri, link.rect, view_settings, find_first_by_title, link_at_point, read PDF links, extract PDF table of contents, where does this link go, traverse bookmark tree, get URL from PDF link
    0 installs
  16. Pdfium Core Coordinates · impertio-studio bundle
    Use when working with page sizes, object positions, rendering dimensions, or click-to-document mapping in pdfium-render, and you need to know which unit a value is in and how to convert it. Prevents the unit-confusion bugs: treating PdfPoints as pixels, converting points to pixels without a render config, forgetting the bottom-left to top-left y-axis flip when overlaying PDF coordinates on a raster image, and the 0.8.28 bounds() return-type change. Covers PdfPoints (the 1/72 inch document unit), Pixels (the raster unit, i32), PdfPage::points_to_pixels and pixels_to_points, PdfRect versus PdfQuadPoints, and the PDF coordinate origin. Keywords: pdfium-render, coordinates, units, PdfPoints, Pixels, points_to_pixels, pixels_to_points, PdfRect, PdfQuadPoints, bounds, page size, DPI, scale, origin, y-axis flip, bounding box, "wrong size", "object in wrong place", "coordinates upside down", "image is too small", "bounds does not compile", "expected PdfRect found PdfQuadPoints", "how big is a PDF page", "convert poin
    0 installs
  17. Pdfium Errors Binding · impertio-studio bundle
    Use when pdfium-render fails to load or bind to the Pdfium library: a LoadLibraryError, a panic from Pdfium::default, missing FPDF_* symbols at the first call, or undefined references when statically linking. Prevents shipping a wrong-named or wrong-architecture library, a pdfium_* feature that does not match the binary, and static links missing the C++ runtime or CoreGraphics. Covers PdfiumError::LoadLibraryError, the binding-failure diagnosis matrix, the ordered fix path, and dynamic versus static linking setup. Keywords: pdfium-render LoadLibraryError, library not found, failed to bind Pdfium, Pdfium::default panic, libpdfium.so not found, pdfium.dll missing, missing FPDF symbol, unresolved external symbol, undefined reference libpdfium, FPDFPage_TransformAnnots, pdfium_7763 feature mismatch, static link C++ runtime, libstdc++ libc++, core_graphics macOS, glibc musl mismatch, x64 arm64 mismatch, why does pdfium-render crash on startup
    0 installs
  18. Pdfium Errors Runtime · impertio-studio bundle
    Use when handling a PdfiumError returned at run time by pdfium-render: a wrong password, a corrupt or unreadable PDF, an index out of bounds, a flatten failure, or when rendered or extracted image colors look wrong with no error raised. Prevents unwrap-panics on recoverable errors, treating a wrong-password error as fatal, comparing errors with == when the enum has no PartialEq, and the silent BGRA-versus-RGBA channel swap. Covers the PdfiumError enum (82 variants in 0.9.1), the PdfiumInternalError codes wrapping FPDF_GetLastError, recoverable-versus-fatal classification, and the byte-order runtime bug across pdfium-render 0.8.x and 0.9.x. Keywords: pdfium-render, PdfiumError, PdfiumInternalError, PdfiumLibraryInternalError, PageIndexOutOfBounds, PageObjectIndexOutOfBounds, PasswordError, FormatError, FileError, PageFlattenFailure, FPDF_GetLastError, wrong password, corrupt PDF, index out of bounds, panic on unwrap, colors look wrong, blue and red swapped, image channels swapped, BGRA, RGBA, how do I handle p
    0 installs
  19. Pdfium Impl Annotations · impertio-studio bundle
    Use when reading, modifying, or creating PDF annotations with pdfium-render: text notes, highlights, links, stamps, ink strokes, squares, and free text. Prevents the read-only-collection mistake (calling a create method on annotations() instead of annotations_mut()), the annotation-type confusion (assuming every PdfPageAnnotationType has a matching PdfPageAnnotation enum variant), and the bounds-type mix-up (annotation bounds are PdfRect, not PdfQuadPoints). Covers PdfPageAnnotations, the PdfPageAnnotation enum, the PdfPageAnnotationCommon trait, PdfPageAnnotationType, annotation flags, and the version gates at 0.8.20 and 0.8.34. Keywords: pdfium-render annotations, PdfPageAnnotations, PdfPageAnnotation, PdfPageAnnotationCommon, PdfPageAnnotationType, create_highlight_annotation, create_text_annotation, create_link_annotation, create_stamp_annotation, annotation flags, is_hidden, set_bounds, annotation contents, add a comment to a PDF, highlight text in a PDF, annotation not showing, annotations is immutable,
    0 installs
  20. Pdfium Impl Form Fields · impertio-studio bundle
    Use when reading or filling PDF form fields with pdfium-render: detecting an embedded form, listing field values, setting a text field, checking a checkbox, or selecting a radio button. Prevents the Adobe-Acrobat-blank-field trap, the wrong PdfFormFieldText type name, passing a bool to a radio button, and rendering filled forms without render_form_data. Covers PdfDocument::form, PdfForm, PdfFormField and its eight variants, as_form_field / as_form_field_mut, set_value, set_checked, field_values, and the 0.7.34 to 0.9.x version differences. Keywords: pdfium-render form fields, fill PDF form, fill out a PDF, read PDF form values, PdfForm, PdfFormField, PdfFormTextField, PdfFormCheckboxField, PdfFormRadioButtonField, as_form_field, as_form_field_mut, set_value, set_checked, field_values, render_form_data, AcroForm, XFA, Widget annotation, filled form blank in Acrobat, form field empty after flatten, form fields not showing, PdfFormFieldText not found, how do I fill a PDF form
    0 installs
  21. Pdfium Impl Performance · impertio-studio bundle
    Use when a pdfium-render program is slow, uses too much memory, or must process many PDFs or pages: web servers rendering PDFs per request, batch jobs, multi-page rendering loops. Prevents the rebind-per-request mistake (binding PDFium on every call instead of once), the false-parallelism mistake (expecting the thread_safe feature to speed work up when it only serializes calls behind a mutex), the segfault-from-unsynchronized-threads mistake, and the per-page allocation waste of rebuilding PdfRenderConfig inside the loop. Covers the bind-once pattern with OnceCell/OnceLock, the thread_safe feature trade-off, process-level parallelism, render-config reuse, and render cost knobs. Keywords: pdfium-render performance, pdfium slow, render PDF fast, bind once, OnceCell, OnceLock, axum_once_cell, thread_safe feature, multi-threading pdfium, parallel PDF processing, pdfium segfault threads, PdfRenderConfig reuse, large PDF memory, pdfium web server, why is pdfium slow, render many pages fast
    0 installs
  22. Pdfium Core Architecture · impertio-studio bundle
    Use when starting a pdfium-render project, choosing an integration approach, or debugging confusing lifetime and threading errors, and you need the conceptual map of how the crate is built. Prevents the four wrong-mental-model mistakes: treating pdfium-render as a pure-Rust PDF parser, expecting compile-time linking of PDFium, storing a parent handle and a child handle together in one struct, and expecting multi-threading to speed up rendering. Covers the PDFium-to-pdfium-render wrapper relationship, the late run-time binding model, the lifetime-bound ownership tree (Pdfium to PdfDocument to PdfPages to PdfPage), the thread-safety stance, the 0.8.x to 0.9.x changes, and when to drop to raw FFI. Keywords: pdfium-render, PDFium, architecture, ownership tree, late binding, run-time binding, RAII wrapper, lifetime error, Send Sync, thread safety, thread_safe feature, raw FFI, FPDF_, PdfiumLibraryBindings, Pdfium, PdfDocument, PdfPage, "library not found", "cannot return value referencing local variable", "borrowe
    0 installs
  23. Pdfium Agents Validator · impertio-studio bundle
    Use when reviewing or validating generated pdfium-render code before accepting it: checking for removed 0.8.x API names, binding mistakes, byte-order bugs, lifetime errors, and version inconsistency. Prevents shipping code that uses PdfBitmapConfig, get_bitmap, as_bytes or other removed names, binds the library per request, swaps red and blue channels, or mixes 0.8.x and 0.9.x names in one file. Covers the removed-name scan, binding correctness, API-usage correctness, cross-skill consistency, and a deterministic review output format. Keywords: pdfium-render code review, validate pdfium code, check pdfium-render code, PdfBitmapConfig removed, get_bitmap removed, as_bytes removed, load_pdf_from_bytes removed, 0.8 0.9 version trap, deprecated pdfium API, review checklist, BGRA RGBA swap, bind once, Pdfium::default panic, lifetime error pdfium, is this pdfium code correct, audit generated pdfium code
    0 installs
  24. Pdfium Syntax Rendering · impertio-studio bundle
    Use when rendering a PDF page to a raster image with pdfium-render: building a PdfRenderConfig, calling render_with_config or the lower-level render, sizing the output, controlling rotation, or turning a PdfBitmap into an image crate DynamicImage or a raw byte buffer. Prevents the top rendering mistakes: reaching for the PdfBitmapConfig and PdfPage::get_bitmap names that were removed in 0.9.0, and reading as_raw_bytes as if it were RGBA when PDFium bitmaps are stored in BGRA order, which swaps the red and blue channels. Covers PdfRenderConfig, render_with_config, render, PdfBitmap, PdfBitmapFormat, PdfPageRenderRotation, byte order, and the 0.8.x to 0.9.x upgrade traps. Keywords: pdfium-render rendering, PdfRenderConfig, render_with_config, render, PdfBitmap, as_image, as_rgba_bytes, as_raw_bytes, PdfBitmapFormat, BGRA, RGBA, set_reverse_byte_order, PdfPageRenderRotation, PdfBitmapConfig removed, get_bitmap removed, page to image, render PDF page to PNG, blank rendered image, colors look wrong, red and blue s
    0 installs
  25. Pdfium Core Bindings Setup · impertio-studio bundle
    Use when setting up the link between a Rust program and the PDFium library: choosing a binding strategy (dynamic, system, or static), wiring Cargo feature flags, sourcing prebuilt PDFium binaries, or fixing a binding that will not load. Prevents the most common pdfium-render startup failure, a PdfiumError::LoadLibraryError caused by a missing, misnamed, wrong-architecture, or API-version-mismatched library. Covers Pdfium::bind_to_library, bind_to_system_library, bind_to_statically_linked_library, Pdfium::default, the pdfium_* and image_* feature flags, per-platform library file names, and the PDFIUM_STATIC_LIB_PATH / PDFIUM_DYNAMIC_LIB_PATH build variables across pdfium-render 0.8.x and 0.9.x. Keywords: pdfium-render bindings, bind_to_library, bind_to_system_library, bind_to_statically_linked_library, Pdfium::default, LoadLibraryError, libpdfium.so, pdfium.dll, libpdfium.dylib, pdfium_latest feature flag, PDFIUM_STATIC_LIB_PATH, static linking, library not found, pdfium fails to load, missing symbols, how do
    0 installs
  26. Pdfium Impl Output Formats · impertio-studio bundle
    Use when turning a rendered pdfium-render PdfBitmap into a PNG or JPEG file, into an image crate DynamicImage, or into raw pixel bytes, and when the exported colors look wrong with red and blue swapped. Prevents the BGRA-versus-RGBA channel-swap bug and the removed as_bytes method, and prevents image-crate version mismatches. Covers as_image, as_rgba_bytes, as_raw_bytes, bytes_required_for_size, saving via DynamicImage with ImageFormat, and the image_025 feature coupling. Keywords: pdfium-render save PDF as PNG, export PDF page to JPEG, PdfBitmap as_image, as_rgba_bytes, as_raw_bytes, DynamicImage, image crate, ImageFormat, save_with_format, BGRA RGBA channel swap, red and blue swapped, colors wrong, image looks blue, as_bytes removed, how do I export a PDF page as an image
    0 installs
  27. Pdfium Agents Orchestrator · impertio-studio bundle
    Use when starting any pdfium-render task and a PDF goal must be routed to the right skills in the right order: this is the entry-point routing skill that lays out the canonical pipeline (bind, load, reach pages, process, save or export). Prevents the wrong-skill mistake (reaching for a low-level skill when a goal skill exists), the wrong-order mistake (processing before binding or saving before processing), and the version-drift mistake (mixing 0.8.x and 0.9.x API names in one program). Covers the full 26-skill map, goal-to-skill decision trees, the pipeline stages, and the cross-skill consistency rules. Keywords: pdfium-render where do I start, which pdfium skill, PDF pipeline, render PDF, extract text from PDF, fill PDF form, merge PDFs, annotate PDF, create PDF, pdfium routing, pdfium workflow, how do I process a PDF in Rust, pdfium getting started, pdfium task plan
    0 installs
  28. Pdfium Syntax Page Objects · impertio-studio bundle
    Use when reading or inspecting the content objects on a PDF page with pdfium-render: counting them, iterating them, telling text from images from paths, reading an object's bounding box, or reaching objects nested inside an XObject form. Prevents the inspection mistakes: reading bounds() as a PdfRect after the 0.8.28 type change, indexing objects with the wrong integer type, missing objects nested inside XObject form containers, and unwrapping a narrowing call that returned None. Covers PdfPage::objects, the PdfPageObjects collection, the six-variant PdfPageObject enum, the as_text_object family of narrowing methods, the PdfPageObjectCommon trait, and recursing into PdfPageXObjectFormObject. This skill is read and inspect only; creating and editing objects is a separate skill. Keywords: pdfium-render, page objects, PdfPageObject, PdfPageObjects, objects, iter, as_text_object, as_image_object, as_path_object, bounds, PdfQuadPoints, XObjectForm, nested objects, object type, PdfPageObjectCommon, has_transparency
    0 installs
  29. Pdfium Impl Document Features · impertio-studio bundle
    Use when reading PDF document metadata (title, author, dates), extracting or creating embedded file attachments, inspecting permission flags, or reading digital signatures with pdfium-render. Prevents guessing wrong permission method names, expecting metadata or signature write APIs that do not exist, deleting attachments by ascending index, and treating permission flags as enforcement. Covers PdfMetadata, PdfAttachments, PdfPermissions, PdfSignatures, the read-only-versus-writable asymmetry, and the 0.5.1 to 0.9.x version history. Keywords: pdfium-render metadata, PDF title author, PdfMetadata, get PdfDocumentMetadataTagType, PDF attachments, embedded files, PdfAttachments, create_attachment_from_bytes, delete_at_index, extract attachment, PDF permissions, PdfPermissions, can_print_high_quality, can_modify_document_content, digital signature, PdfSignatures, PdfSignature, signing_date, read PDF metadata in Rust, how do I get the PDF author, is this PDF signed
    0 installs
  30. Pdfium Impl Page Manipulation · impertio-studio bundle
    Use when rotating, deleting, flattening, cropping, or watermarking the pages of a PDF with pdfium-render, or when reading and setting MediaBox, CropBox, BleedBox, TrimBox, or ArtBox page geometry. Prevents the borrow-checker failure from calling delete() on a borrowed page, the index-shift bug when deleting multiple pages, the flatten() form-fields trap, and lost edits when the content-regeneration strategy is Manual. Covers PdfPage::rotation/set_rotation/delete/flatten, PdfPageBoundaries box geometry, PdfPages::watermark, and content regeneration across pdfium-render 0.8.x and 0.9.x. Keywords: pdfium-render, page rotation, set_rotation, PdfPageRenderRotation, delete page, flatten, PdfPageBoundaries, PdfPageBoundaryBox, MediaBox, CropBox, BleedBox, TrimBox, ArtBox, crop PDF, watermark, regenerate_content, content_regeneration_strategy, rotated page looks wrong, page not deleted, form fields disappeared after flatten, edits lost after save, blank page, how do I rotate a PDF page, how to crop a PDF, how to add
    0 installs
  31. Pdfium Impl Page Objects Edit · impertio-studio bundle
    Use when adding, removing, transforming, or relocating page objects on a PDF page with pdfium-render: stamping an image, drawing a path, scaling or rotating an object with a PdfMatrix, or moving an object to another page. Prevents the borrow-checker fight that naive remove-then-insert object moving causes, the double-add bug from calling both a create_ and an add_ method, and reaching for the set_matrix and copy_onto_new_page names that were removed in 0.9.0. Covers PdfPageObjects create_ and add_ and remove_ methods, PdfPageImageObject constructors, PdfMatrix transforms, apply_matrix, PdfPageGroupObject, and copy_to_page / move_to_page across pdfium-render 0.8.x and 0.9.x. Keywords: pdfium-render page objects, PdfPageObjects, add_image_object, create_image_object, create_path_object_bezier, remove_object, PdfPageImageObject, new_from_jpeg_file, apply_matrix, PdfMatrix, transform, PdfPageGroupObject, copy_to_page, move_to_page, set_matrix removed, copy_onto_new_page removed, objects_mut, stamp image on PDF, d
    0 installs
  32. Pdfium Syntax Document Loading · impertio-studio bundle
    Use when opening a PDF with pdfium-render, choosing between load_pdf_from_file, load_pdf_from_byte_slice, load_pdf_from_byte_vec or load_pdf_from_reader, opening a password-protected PDF, creating a blank PDF, or loading a PDF in a browser WASM build. Prevents using the removed load_pdf_from_bytes and searching for a non-existent load_pdf_with_password function. Covers the four native loaders, the uniform password Option argument, create_new_pdf, byte-slice versus byte-vec ownership, and the WASM-only load_pdf_from_fetch and load_pdf_from_blob loaders. Keywords: pdfium-render load PDF, load_pdf_from_file, load_pdf_from_byte_slice, load_pdf_from_byte_vec, load_pdf_from_reader, load_pdf_from_bytes removed, password protected PDF, load_pdf_with_password does not exist, create_new_pdf, how do I open a PDF in Rust, my PDF will not open, encrypted PDF, WASM load PDF, load_pdf_from_fetch, load_pdf_from_blob
    0 installs
  33. Tauri Core Config · impertio-studio bundle
    Use when editing tauri.conf.json, configuring build options, or setting up platform-specific bundle configuration. Prevents invalid configuration keys and v1 config patterns that silently fail in Tauri 2. Covers build settings, app settings, window configuration, bundle options, plugin configuration, and security settings. Keywords: tauri.conf.json, configuration, build settings, bundle options, window config, security settings, tauri.conf.json, change settings, window size, app title, bundle config, icon..
    0 installs
  34. Tauri Impl Mobile · impertio-studio bundle
    Use when targeting Android or iOS, writing platform-specific code, or setting up mobile development environment. Prevents missing crate-type configuration and incorrect lib.rs entry point that breaks mobile builds. Covers Android and iOS target setup, tauri android/ios commands, cfg attributes, lib.rs restructuring, and Cargo.toml config. Keywords: tauri mobile, android, ios, cfg(mobile), crate-type, mobile entry point, platform-specific code, Android app, iOS app, mobile build, phone app, tablet app, cross-platform mobile..
    0 installs
  35. Tauri Core Runtime · impertio-studio bundle
    Use when configuring app initialization, using setup hooks, spawning background tasks, or managing app lifecycle. Prevents misconfigured Builder chains and missing plugin registration that cause silent runtime failures. Covers Builder configuration, setup hook, AppHandle usage, Manager trait, tokio async runtime, and app exit/restart. Keywords: tauri builder, setup hook, AppHandle, Manager trait, tokio runtime, app lifecycle, window events, app startup, initialization, background task, app lifecycle, setup hook, async Rust..
    0 installs
  36. Tauri Errors Ipc · impertio-studio bundle
    Use when encountering invoke errors, serialization failures, or IPC-related panics in Tauri 2. Prevents silent type mismatches between Rust and JavaScript and missing Serialize on error types. Covers serialization failures, command not found, argument type mismatches, permission denied, async panics, and thiserror patterns. Keywords: tauri IPC error, invoke error, serialization failure, command not found, type mismatch, thiserror, Serialize, invoke fails, command not found, type mismatch, serialization error, Rust panic on invoke..
    0 installs
  37. Tauri Impl Testing · impertio-studio bundle
    Use when writing tests for Tauri 2 commands, mocking IPC calls, or setting up E2E test suites. Prevents untestable command handlers and stale mock state from missing clearMocks() between tests. Covers Rust unit testing, frontend IPC mocking with mockIPC/mockWindows, WebDriver E2E testing, and integration testing. Keywords: tauri testing, mockIPC, mockWindows, clearMocks, cargo test, E2E testing, WebDriver, Vitest, test commands, mock IPC, E2E test, unit test Rust, frontend test, Vitest..
    2 installs
  38. Tauri Impl Database · impertio-studio bundle
    Use when adding database storage, implementing key-value persistence, or integrating SQL databases in Tauri 2 apps. Prevents data loss from missing store auto-save configuration and SQL injection from unparameterized queries. Covers SQLite via tauri-plugin-sql, key-value storage via tauri-plugin-store, and custom DB integration with sqlx/diesel/rusqlite. Keywords: tauri database, SQLite, tauri-plugin-sql, tauri-plugin-store, key-value storage, sqlx, diesel, rusqlite, save data locally, SQLite, persistent storage, key-value store, offline data..
    0 installs
  39. Tauri Impl Security · impertio-studio bundle
    Use when hardening Tauri 2 app security, configuring CSP, reviewing permissions, or implementing isolation patterns. Prevents overly permissive CSP, disabled prototype freeze, and unscoped file/shell/http permissions in production. Covers CSP configuration, Tauri protocols, freezePrototype, isolation pattern, scope-based access control, and dangerous permissions. Keywords: tauri security, CSP, Content Security Policy, freezePrototype, isolation pattern, scope, permissions audit, harden app, CSP policy, secure permissions, production security, lock down access..
    0 installs
  40. Tauri Syntax Menu · impertio-studio bundle
    Use when creating application menus, system tray icons, context menus, or handling menu events in Tauri 2. Prevents using deprecated v1 menu patterns and missing menu event handler registration on the Builder. Covers MenuBuilder, menu item types, PredefinedMenuItem, context menus, TrayIconBuilder, and JavaScript Menu/TrayIcon APIs. Keywords: tauri menu, MenuBuilder, TrayIcon, system tray, context menu, PredefinedMenuItem, menu events, app menu, system tray, context menu, right-click menu, tray icon, menu bar..
    0 installs
  41. Tauri Errors Build · impertio-studio bundle
    Use when encountering Tauri 2 build errors, bundler failures, or platform-specific compilation issues. Prevents chasing phantom failures from stale build artifacts and misidentifying the failing build pipeline phase. Covers Cargo compilation failures, bundler errors, code signing failures, Linux dependencies, mobile builds, and CI/CD failures. Keywords: tauri build error, cargo compile, bundler error, code signing, linker error, NSIS, WiX, CI/CD failure, build fails, cargo error, linker error, NSIS error, installer broken, CI build fails..
    0 installs
  42. Tauri Impl Migration · impertio-studio bundle
    Use when migrating from Tauri 1 to Tauri 2, updating legacy Tauri code, or comparing v1 vs v2 APIs. Prevents retaining v1 allowlist config, deprecated API calls, and outdated import paths that break at compile time. Covers config restructuring, allowlist to permissions conversion, Rust and JS API renames, event and menu system changes. Keywords: tauri migration, v1 to v2, allowlist, permissions conversion, API rename, import path, upgrade, upgrade from Tauri 1, v1 to v2, breaking changes, migration guide, update API calls..
    0 installs
  43. Tauri Syntax State · impertio-studio bundle
    Use when managing application state, sharing data between commands, or debugging state-related panics. Prevents unmanaged state panics, Mutex deadlocks, and unnecessary Arc wrapping around managed state. Covers app.manage(), State<T> injection, AppHandle.state(), thread-safe state with Mutex/RwLock, and initialization patterns. Keywords: tauri state, manage, State<T>, Mutex, RwLock, AppHandle, thread safety, state injection, shared state, global data, state between commands, Mutex, manage state, app state..
    0 installs
  44. Tauri Agents Review · impertio-studio bundle
    Use when reviewing Tauri 2 code, auditing permissions, or validating a Tauri project before deployment. Prevents shipping apps with missing permissions, unhandled IPC errors, insecure CSP, and unregistered commands. Covers command signature review, permission coverage, state management, error handling, security audit, and anti-pattern detection. Keywords: tauri code review, validation checklist, security audit, permissions audit, anti-pattern scan, deployment readiness, check my Tauri code, security review, permission audit, before release..
    0 installs
  45. Tauri Syntax Events · impertio-studio bundle
    Use when implementing event-driven communication between Rust and JavaScript or between windows. Prevents event listener memory leaks from missing unlisten cleanup and payload serialization failures. Covers emit/listen/once patterns, Emitter and Listener traits, global vs window-scoped events, and frontend event API. Keywords: tauri events, emit, listen, unlisten, event payload, Emitter trait, Listener trait, window events, send event, listen for event, frontend backend communication, event payload, event cleanup..
    1 install
  46. Tauri Syntax Window · impertio-studio bundle
    Use when creating windows, handling window events, or managing multi-window layouts in Tauri 2. Prevents window label collisions and incorrect WebviewWindowBuilder usage that causes runtime panics. Covers WebviewWindowBuilder, window labels, window configuration, WindowEvent handling, and JavaScript Window class. Keywords: tauri window, WebviewWindowBuilder, window events, window label, Window class, monitor, multi-window, window settings, create window, window events, minimize, maximize, fullscreen, window size..
    0 installs
  47. Tauri Errors Runtime · impertio-studio bundle
    Use when encountering runtime panics, state errors, or unexpected app crashes in Tauri 2. Prevents unhandled unwrap() panics in production and unmanaged state type mismatches that crash the app. Covers window not found, state not managed panics, plugin not initialized, asset resolution, event name validation, and panic handling. Keywords: tauri runtime error, panic, state not managed, window not found, plugin not initialized, unwrap, crash, app crashes, panic, state error, window not found, plugin not registered, unwrap failed..
    0 installs
  48. Tauri Syntax Webview · impertio-studio bundle
    Use when working with multiple webviews, embedding web content, or managing webview lifecycle in Tauri 2. Prevents confusing Window and Webview APIs and incorrect multi-webview positioning within a single window. Covers multi-webview per window, getCurrentWebview(), webview sizing, reparenting, zoom control, and webview events. Keywords: tauri webview, getCurrentWebview, multi-webview, webview events, zoom, reparent, embedded webview, multiple webviews, embed web content, webview configuration, zoom level..
    0 installs
  49. Tauri Core Architecture · impertio-studio bundle
    Use when creating new Tauri 2 apps, understanding project structure, or reasoning about the component model. Prevents mixing Tauri 1.x architecture assumptions with the v2 multi-webview and capability-based model. Covers Rust backend structure, webview layer, IPC bridge model, process model, project layout, and type hierarchy. Keywords: tauri architecture, project structure, IPC bridge, webview layer, process model, Rust backend, how Tauri works, project layout, frontend backend split, getting started, what is IPC..
    0 installs
  50. Tauri Impl Build Deploy · impertio-studio bundle
    Use when building for production, configuring installers, setting up code signing, or creating CI/CD pipelines. Prevents unsigned builds being rejected by OS gatekeepers and missing resource files in bundled installers. Covers tauri build command, platform bundlers (NSIS/MSI/DMG/AppImage/deb), sidecars, code signing, updater, and GitHub Actions CI/CD. Keywords: tauri build, deploy, NSIS, MSI, DMG, AppImage, code signing, auto-updater, CI/CD, GitHub Actions, sidecar, create installer, sign app, auto-update, GitHub release, distribute app, CI/CD pipeline..
    0 installs
  51. Tauri Impl Multi Window · impertio-studio bundle
    Use when creating secondary windows, implementing splashscreen flows, or communicating between windows in Tauri 2. Prevents duplicate window label panics and orphaned window handles from missing lifecycle cleanup. Covers creating windows from Rust and JavaScript, inter-window events, show/hide patterns, splashscreen, and parent-child relationships. Keywords: tauri multi-window, secondary window, splashscreen, inter-window communication, window lifecycle, parent-child, open new window, splashscreen, popup window, window communication, child window..
    0 installs
  52. Tauri Syntax Commands · impertio-studio bundle
    Use when writing Tauri commands, calling invoke(), handling IPC errors, or streaming data from Rust to JavaScript. Prevents command registration omissions, argument type mismatches between Rust and JS, and missing error serialization. Covers #[tauri::command] macro, sync/async commands, argument types, return types, thiserror, invoke() API, and Channel streaming. Keywords: tauri command, invoke, IPC, async command, thiserror, Channel, generate_handler, command registration, invoke example, call Rust from JS, return data from Rust, command handler, async command..
    0 installs
  53. Tauri Impl Project Setup · impertio-studio bundle
    Use when starting a new Tauri 2 project, choosing a frontend framework, or understanding project structure. Prevents incorrect lib.rs/main.rs split and missing build configuration that breaks dev and production builds. Covers create-tauri-app scaffolding, project structure, frontend framework integration, src-tauri layout, and source control. Keywords: tauri project setup, create-tauri-app, scaffolding, lib.rs, main.rs, frontend framework, project structure, create Tauri app, getting started, new project, choose frontend framework, initial setup..
    0 installs
  54. Tauri Errors Permissions · impertio-studio bundle
    Use when encountering permission denied errors, CSP violations, or capability configuration issues in Tauri 2. Prevents confusing core permissions with plugin permissions and missing scope restrictions on sensitive plugins. Covers capability misconfiguration, missing plugin permissions, scope violations, CSP violations, and debugging workflows. Keywords: tauri permission error, permission denied, CSP violation, capability, scope violation, plugin permissions, permission denied, blocked by CSP, capability missing, plugin access denied..
    0 installs
  55. Tauri Impl Design Patterns · impertio-studio bundle
    Use when designing Tauri 2 app architecture, choosing between IPC approaches, or planning application structure. Prevents using commands for streaming data, events for request/response, and putting business logic in the frontend. Covers commands vs events vs channels, state architecture, frontend-backend split, offline-first, and application archetypes. Keywords: tauri design patterns, architecture, commands vs events, Channel, offline-first, error boundary, IPC design, when to use commands vs events, app architecture, offline-first, best practices..
    0 installs
  56. Tauri Syntax Permissions · impertio-studio bundle
    Use when configuring permissions, creating capability files, setting up plugin access control, or debugging permission denied errors. Prevents using v1 allowlist patterns and overly permissive wildcard capabilities that compromise security. Covers capability file structure, permission definitions in TOML, scope configuration, plugin and custom command permissions. Keywords: tauri permissions, capabilities, allow, deny, scope, TOML, plugin permissions, access control, ACL, capability file, allow plugin, restrict access, permission TOML, scope config..
    0 installs
  57. Tauri Syntax Plugins API · impertio-studio bundle
    Use when using any official Tauri 2 plugin, accessing the file system, making HTTP requests, showing dialogs, or resolving app directories. Prevents missing plugin initialization in Builder, missing npm packages, and absent permission entries. Covers fs, dialog, http, notification, shell, clipboard, os, process, updater, store, opener, path API, and isTauri(). Keywords: tauri plugin, fs, dialog, http, notification, shell, clipboard, store, updater, BaseDirectory, convertFileSrc, file system access, show dialog, HTTP request, clipboard, notifications, open URL..
    0 installs
  58. Tauri Impl Plugin Development · impertio-studio bundle
    Use when building custom Tauri 2 plugins, adding lifecycle hooks, or defining plugin permissions. Prevents incorrect plugin Builder chain ordering and missing build.rs permission generation. Covers plugin::Builder API, plugin commands and state, lifecycle hooks, mobile plugin development, and permission patterns. Keywords: tauri plugin development, plugin Builder, lifecycle hooks, on_event, on_navigation, build.rs, custom plugin, create Tauri plugin, custom plugin, plugin hooks, extend Tauri..
    0 installs
  59. Tauri Agents Project Scaffolder · impertio-studio bundle
    Use when scaffolding a new Tauri 2 project, setting up initial project structure, or generating boilerplate code. Prevents incomplete scaffolding with missing permission files, unregistered commands, or broken IPC bridges. Covers configured plugins, capability files, Rust commands with TypeScript invoke calls, build pipeline, and frontend integration. Keywords: tauri scaffolder, project generator, boilerplate, scaffold, new project, project structure, code generation, new desktop app, start Tauri project, generate boilerplate, getting started..
    0 installs
  60. Tailwind Core V3 Vs V4 · impertio-studio bundle
    Use when picking a Tailwind CSS version for a new project, deciding whether to upgrade an existing v3 codebase to v4, or debugging visual regressions and build errors that appear right after a v3 to v4 bump. Prevents the silent visual breakages (border-color, ring-width, shadow scale rename) and the removed-option traps (corePlugins, safelist, separator) that bite every v3 to v4 migration. Covers the JIT vs Oxide engine model, JS config vs CSS-first @theme configuration, default behaviour shifts, removed APIs, browser baseline requirements, and the upgrade-or-stay decision tree. Keywords: tailwind v3, tailwind v4, tailwindcss v4, oxide engine, JIT, tailwind upgrade, tailwind migration, @theme, @tailwind directive removed, corePlugins removed, safelist removed, separator removed, ring-width changed, border-color changed, shadow-sm changed, should I upgrade tailwind, tailwind 4 vs 3, breaking changes tailwind, lightning css, @import tailwindcss
    0 installs
  61. Tailwind Impl Config V3 · impertio-studio bundle
    Use when configuring a Tailwind CSS v3.4 project: writing the `tailwind.config.js` / `.mjs` / `.ts` file, setting up content scanning globs, extending or replacing the default theme, registering plugins, picking a dark-mode strategy, disabling core utilities, safelisting classes that string-concatenation produces, or applying a project-wide prefix. Use also when reading an existing v3 config and needing to know the precise semantics of `theme` vs `theme.extend`, what `corePlugins`, `safelist`, and `separator` do, and which options are REMOVED in v4 so a v3 to v4 migration plan can flag them in advance. Prevents (a) accidentally REPLACING the default theme by writing `theme: { colors: {...} }` when `theme.extend.colors` was intended, (b) leaking content scanning into `node_modules` via `./**/*.{js,html}` and tanking build times, (c) configuring `darkMode: 'class'` and forgetting to toggle the class on `<html>` (no dark styles ever fire), (d) using `corePlugins: { float: false }`, `safelist: [...]`, or `separat
    0 installs
  62. Tailwind Impl Config V4 · impertio-studio bundle
    Use when setting up or editing a Tailwind CSS v4 configuration via the CSS-first model: writing the entry stylesheet, defining design tokens in @theme, scoping content detection with @source, adding custom utilities with @utility, declaring custom variants with @custom-variant, wiring legacy JS plugins via @plugin, or fixing the Vue/Svelte/CSS-modules @apply trap with @reference. Prevents the silent-token-drop trap (defining @theme tokens without correct namespace prefix yields nothing), the lost-overrides trap (forgetting --color-*: initial before custom palette leaves old defaults active), the scoped-style breakage (@apply in Vue <style scoped> fails without @reference), the safelist miss (forgetting @source inline brace expansion for dynamic class names), and the @theme inline confusion (resolves var refs at build vs runtime). Covers every v4 directive (@import, @theme, @theme inline, @theme static, @source, @source not, @source inline, @source none, @plugin, @utility with --value/--modifier/--alpha/--spac
    0 installs
  63. Tailwind Impl Build Vite · impertio-studio bundle
    Use when wiring Tailwind CSS into a Vite project: choosing between the v4 dedicated Vite plugin and the v3 PostCSS pipeline, picking the right packages and configs, importing the stylesheet, enabling HMR, and scoping template-scan paths in monorepos. Prevents the wrong-plugin trap (using postcss-plugin with v4 instead of @tailwindcss/vite gives much slower builds and broken at-rules), the broken-classnames trap (writing @import "tailwindcss" in v3 yields no utilities), the missing-content trap (v3 without content paths produces an empty stylesheet), the missing-source trap (v4 in a monorepo where workspace templates live outside the Vite root never get scanned), the upgrade trap (v4-0-8 Astro break, issue 16733), and the wrong-tool trap (chasing Turbopack issue 19825 in a Vite project). Covers v4 with @tailwindcss/vite (install, vite-config-ts plugin entry, @import "tailwindcss" in the entry CSS, automatic content detection, @source for monorepo/external paths, HMR), v3 with postcss-plugin (npm install -D tai
    0 installs
  64. Tailwind Core Architecture · impertio-studio bundle
    Use when starting a new Tailwind CSS project, evaluating whether Tailwind fits a codebase, debating utility-first vs BEM / CSS Modules / CSS-in-JS, or reviewing a PR that mixes architectural styles. Prevents the "ad-hoc CSS leaking into utility-first markup" failure mode, premature `@apply` extraction, and dynamic-class anti-patterns that break the content scanner. Covers utility-first philosophy, atomic CSS tradeoffs, the design-system constraint model, how Tailwind scans source files for classes, when utility-first wins, when it loses, and a decision tree for adoption. Both Tailwind v3.4 and v4 share this architecture; engine details (JIT vs Oxide) live in tailwind-core-v3-vs-v4. Keywords: utility-first, atomic CSS, design tokens, content scanning, source detection, constraint-based design, when to use Tailwind, should I use Tailwind, Tailwind vs BEM, Tailwind vs CSS Modules, Tailwind vs CSS-in-JS, utility soup, premature extraction, no styles showing up, classes not generated, blank page after build, dynam
    0 installs
  65. Tailwind Impl Build Nextjs · impertio-studio bundle
    Use when installing or wiring Tailwind CSS into a Next.js project, for either the App Router or the Pages Router, on Tailwind v3 or v4, and when hooking next/font/google families into the Tailwind theme so utilities like font-sans resolve to the loaded family. Prevents the four most common Next-js install traps: importing globals.css in the wrong file for the active router, forgetting the @tailwindcss/postcss plugin under v4, breaking the v3 content glob on catch-all route folders named [...slug], and pasting font CSS variables into next/font/local without declaring them inside @theme inline so they never become utilities. Covers v4 App Router with @import tailwindcss, v4 Pages Router, v3 App Router with @tailwind directives, v3 Pages Router, next/font wiring via className on html plus @theme inline { --font-sans: var(--font-inter) }, why React Server Components have zero runtime cost from Tailwind, and the Turbopack arbitrary-value miss workaround for Next 16 plus v4 from tailwindlabs/tailwindcss issue 19825
    0 installs
  66. Tailwind Syntax Variants · impertio-studio bundle
    Use when applying conditional styles in Tailwind: hover, focus, active, dark mode, responsive breakpoints, group-* and peer-* combinators, aria-* and data-* attribute variants, has-* and not-* selectors, position-in-parent variants (first, last, *, nth-*), or arbitrary [&...] variants. Use also when stacking multiple variants (`md:hover:dark:bg-blue-500`) and the resulting selector does not match the intended element. Use also when migrating variant chains from Tailwind v3 to v4: the stacking order flipped from right-to-left to left-to-right and is the #1 silent breakage during upgrade. Prevents the common mistakes of (a) reading a v3 stack like `first:*:pt-0` and expecting the same compiled selector in v4 (it is now `*:first:pt-0`), (b) writing hover variants that mysteriously stop working on touch devices in v4 (hover is now gated on `@media (hover: hover)`), (c) writing `!flex` important syntax that fails silently in v4 (the bang moved to the trailing position: `flex!`), (d) using unscoped `group-hover:` w
    2 installs
  67. Tailwind Agents Validator · impertio-studio bundle
    Use when reviewing a Tailwind CSS codebase for cross-rule violations, performing a pre-PR audit of changes that touch styling, validating a v3-to-v4 migration result, or running a periodic codebase health check across utility classes, plugin authoring, and configuration files. The agent acts as a Tailwind-specific code reviewer that enforces every rule documented in the sibling skills of this package, producing an actionable report that cites the authoritative sibling skill for each finding. Prevents the four highest-impact Tailwind code-review misses: dynamic template-literal class strings that compile cleanly but emit no CSS in production, scoped @apply blocks in Vue/Svelte/CSS-modules without @reference under v4, v3-only config keys (corePlugins, safelist, separator) silently ignored after a v4 upgrade, and bare border/ring/placeholder usage inheriting the wrong default colour post-migration. Covers the full rule catalogue (no dynamic class strings, no scoped @apply without @reference, no v3 keys in v4 con
    0 installs
  68. Tailwind Core Design System · impertio-studio bundle
    Use when designing or picking values for a Tailwind CSS project: choosing spacing units, color tokens, font sizes, breakpoints, or opacity. Use also when reading existing utility classes and needing to know whether a value comes from the default theme or a custom override. Prevents hardcoded colors, ad-hoc spacing arithmetic, mismatched type scales, and the common v3 to v4 color-format mistake (rgb/hsl vs oklch). Covers the default spacing scale (single base unit in v4, 32-step scale in v3), the default 22 color families (slate / gray / zinc / neutral / stone plus 17 chromatic families), the v4 oklch P3 wide-gamut color format vs the v3 rgb/hsl format, the text-xs through text-9xl type scale, the default breakpoint scale (sm 640, md 768, lg 1024, xl 1280, 2xl 1536), the v4 CSS-variable token model (--color-*, --spacing, --font-*, --text-*, --breakpoint-*, --radius-*, --shadow-*), the v3 tailwind.config.js theme object, and opacity modifier syntax (bg-red-500/50, text-white/[0.85], bg-cyan-400/(--my-alpha)). K
    0 installs
  69. Tailwind Syntax Dark Mode · impertio-studio bundle
    Use when adding, debugging, or migrating dark-mode support in a Tailwind project: choosing between the default `prefers-color-scheme` strategy and user-toggleable class or attribute strategies, wiring the JavaScript toggle, swapping CSS-variable token values for light vs dark, or porting v3 `darkMode` configuration to the v4 `@custom-variant dark` directive. Prevents the four canonical dark-mode failures: assuming `dark:` utilities need configuration before they work, leaving v3's `darkMode: 'class'` config in a v4 project (silently ignored), forgetting the v4 `@custom-variant dark` directive when migrating from v3 `darkMode: 'class'`, and shipping a toggle that flashes the wrong theme on first paint because the script runs after CSS. Covers: default `media` strategy, class-based toggling (v3 `darkMode: 'class'` and 'selector', v4 `@custom-variant dark (&:where(.dark, .dark *))`), attribute-based toggling (`[data-theme="dark"]`), custom variant strategies, theme-token swap via CSS variables, and the canonical
    0 installs
  70. Tailwind Syntax Gradients · impertio-studio bundle
    Use when building linear, conic, or radial gradient backgrounds, picking an interpolation colour space (oklab default, oklch, srgb, hsl, longer-hue, shorter-hue), placing color stops at specific positions, or migrating a v3 `bg-gradient-to-r from-X to-Y` markup to v4's expanded gradient API with `bg-linear-*`, `bg-radial-*`, and `bg-conic-*`. Prevents the rename-trap (every v3 `bg-gradient-*` class is renamed to `bg-linear-*` in v4), the muddy-middle trap (sRGB interpolation produces a gray midpoint between saturated complementary colours where oklch keeps it vivid), the conic-without-from trap (`bg-conic` without a `from-{color}` produces an invisible gradient), and the v3-radial-by-arbitrary trap (v3 has no native bg-radial-* and forces `bg-[radial-gradient(...)]`). Covers every linear direction utility, the angle-based form (bg-linear-45), the conic and radial families, every from-/via-/to- color and position stop, and the seven interpolation modifiers. Keywords: tailwind gradient, bg-linear, bg-linear-to-
    0 installs
  71. Tailwind Impl Plugins Custom · impertio-studio bundle
    Use when authoring a custom Tailwind CSS plugin to add utilities, components, base styles, or variants, regardless of whether the host project runs Tailwind v3 (JS plugin in tailwind-config-js) or v4 (JS plugin loaded via @plugin or the CSS-native @utility directive). Prevents the four most common plugin-authorship traps: registering utilities through addBase (where variants do not apply), forgetting the second-argument default theme so theme('tabSize') returns undefined, omitting the values map on matchUtilities causing zero classes to compile, and importing tailwindcss/plugin in a v4-only project where the package no longer exists at runtime. Covers the full plugin() signature (addUtilities, addComponents, addBase, addVariant, matchUtilities, matchComponents, matchVariant, theme, config, corePlugins, e), plugin-withOptions for parameterised plugins, shipping default theme values through the configFn, the v4-native @utility name-* with --value() and --modifier(), the v4 @custom-variant directive, the v4 @plu
    0 installs
  72. Tailwind Impl Tailwind Merge · impertio-studio bundle
    Use when composing Tailwind class strings dynamically across React, Vue, Svelte, Solid, or any framework where a parent component passes override classes to a child via a className prop, and the child combines them with its own defaults. Solves the duplicate-utility problem (twMerge('p-2 p-4') -> 'p-4') so the LAST value wins deterministically instead of the cascade emitting both and the outcome depending on stylesheet ordering. Prevents the ineffective-override trap (passing 'p-4' to a child whose default is 'p-2 text-blue-500' leaves BOTH padding classes in the markup, and whichever the bundler ships later wins), the stale-cache trap (calling extendTailwindMerge inside a render path on every render rebuilds the big data structure), the wrong-package-version trap (tailwind-merge v2.x is for Tailwind v3, v3.x is for Tailwind v4), and the prefix-mismatch trap (custom Tailwind prefix tw- requires configuring tailwind-merge with that prefix or merges silently return wrong output). Covers twMerge / twJoin / exten
    0 installs
  73. Tailwind Syntax Responsive · impertio-studio bundle
    Use when building responsive layouts with Tailwind CSS, picking between viewport breakpoints (sm/md/lg/xl/2xl) and container queries (@sm, @md, named @container/name), targeting a breakpoint range with max-* variants, using arbitrary breakpoints (min-[400px], max-[800px]), customising the default breakpoint set, or migrating a v3 codebase that installed @tailwindcss/container-queries to v4 where container queries are built-in. Prevents the mobile-first mistake (sm:text-center hiding text on mobile), the v3-to-v4 plugin trap (forgetting to remove the container-queries plugin in v4 still works but emits warnings), and the named-container scoping mistake (@sm:flex bleeding across nested @container parents). Covers viewport breakpoints, max-* range targeting, arbitrary breakpoints, custom breakpoint registration (v3 theme.screens vs v4 @theme --breakpoint-*), container queries (built-in v4 vs plugin v3), named containers, the full @3xs through @7xl scale, and container-query length units (cqw, cqh, cqi, cqb). Key
    0 installs
  74. Tailwind Errors Specificity · impertio-studio bundle
    Use when a Tailwind utility class is in the compiled CSS but does NOT visually override a component class or a third-party rule, when @apply produces output that does not behave like the utility applied to a real element, when a custom utility you authored inside CSS does not respect responsive or hover variants, when plugin-emitted classes get overridden by your own classes in unexpected ways, or when you reach for !important and want to know the right syntax for v3 vs v4. Prevents the unlayered-CSS trap (custom CSS written outside @layer wins over any utility because unlayered styles defeat the cascade), the @apply !important-strip trap (v3 silently removes !important from utilities pulled in via @apply), the v3-vs-v4-important syntax flip (v3 prefix !bg-red-500, v4 suffix bg-red-500!), the wrong-layer trap (custom CSS in @layer base when you wanted utility-level priority), the plugin-order trap (v3 plugins array : LAST entry wins when two plugins emit the same class), and the same-property in @apply trap (
    2 installs
  75. Tailwind Impl Apply Directive · impertio-studio bundle
    Use when writing custom CSS that needs to share design tokens with Tailwind utilities via @apply, organizing component / base / utility CSS via @layer, or fixing the "Cannot apply unknown utility class" error in Vue, Svelte, or CSS-module scoped styles by adding @reference. Prevents the utility-extraction anti-pattern (wrapping every utility in @apply destroys utility-first benefits like JIT pruning, in-context readability, and consistent design tokens), the scoped-style trap in v4 (Vue SFC, Svelte SFC, and CSS modules evaluate @apply against an empty token registry without @reference, failing with "Cannot apply unknown utility class"), the layer-order trap (custom CSS outside @layer leaks above utilities and gets overridden), the important-modifier syntax flip between v3 (leading bang, !font-bold) and v4 (trailing bang, font-bold!), and the @apply !important keyword vs modifier confusion. Covers @apply semantics (copies utility declarations into the current rule), @layer base / components / utilities (specif
    0 installs
  76. Tailwind Impl Migration V3 V4 · impertio-studio bundle
    Use when migrating a project from Tailwind CSS v3.4 to v4.0+, deciding between the automated upgrade tool and manual conversion, planning a dual-version monorepo transition, auditing a codebase before the upgrade, or verifying behaviour after the upgrade. Prevents the five most damaging migration mistakes: assuming the automated tool covers 100 percent (it does not handle runtime opacity classes built from strings, scoped @apply blocks, or visual regressions from default border-color changes), running the tool without first auditing corePlugins/safelist/separator usage (all three removed or relocated in v4), missing the shadow/blur/rounded scale shift (shadow-sm in v3 is shadow-xs in v4, an entire visual layer jumps), ignoring the variant stacking-order flip (first:*:pt-0 becomes *:first:pt-0), and forgetting that @apply in Vue/Svelte/CSS-modules requires @reference in v4. Covers the npx @tailwindcss/upgrade tool (Node 20+, branch workflow, what it converts), the complete breaking-changes catalogue (renamed u
    0 installs
  77. Tailwind Errors Utility Soup · impertio-studio bundle
    Use when a Tailwind element has 20+ utility classes on one line, when reviewers complain about "utility soup", or when deciding between leaving utilities inline, extracting a component, or pulling utilities into @apply. Prevents the premature-extraction trap (extracting after one duplicate destroys readability and adds indirection), the never-extract trap (copy-pasting 30 utilities across 8 files), the @apply-everywhere trap (rebuilding the CSS framework you opted out of), the unsorted-class trap (random order produces noisy diffs and merge conflicts), and the whitelist-blocks-arbitrary trap (eslint-plugin-tailwindcss no-custom-classname rejects valid arbitrary-value classes without `whitelist`). Covers the 3-use rule (extract on the third copy, not the first), component vs @apply vs template partial decision, prettier-plugin-tailwindcss install + config (tailwindConfig for v3, tailwindStylesheet for v4, tailwindFunctions for clsx/cva/tw, tailwindAttributes for custom props), eslint-plugin-tailwindcss rules (
    0 installs
  78. Tailwind Errors V4 Migration · impertio-studio bundle
    Use when upgrading a Tailwind CSS v3 codebase to v4 and hitting silent visual regressions, build errors after switching imports, or unexpected behavior changes that the codemod did not catch. Catalogs every default-behavior change between v3 and v4 with symptoms, root causes, and surgical fixes. Prevents the variant-order trap (v3 right-to-left first:*:pt-0 silently becomes wrong in v4 left-to-right where the correct form is *:first:pt-0), the invisible-borders trap (v4 default border-color flipped from gray-200 to currentColor so every border now renders in the parent text color), the thin-ring trap (default ring width dropped from 3px to 1px so focus rings disappear under existing UI), the shadow-shift trap (shadow-sm in v3 became shadow-xs in v4, shadow in v3 became shadow-sm in v4, same shift applies to blur, drop-shadow, backdrop-blur, rounded), the removed-config trap (corePlugins / safelist / separator no longer exist in JS config), the bg-opacity-removed trap (bg-opacity-50 no longer works, use bg-bla
    0 installs
  79. Tailwind Impl Build Frameworks · impertio-studio bundle
    Use when wiring Tailwind CSS into Astro, SvelteKit, Nuxt, or Remix: choosing the right install path per framework + Tailwind version, picking the correct config file (astro.config.mjs, svelte.config.js, nuxt.config.ts, vite.config.ts), placing the global CSS in the framework-specific location, importing it from the right entry (layout, root, app.vue), and handling SSR/CSR specifics. Prevents the wrong-integration trap (using @astrojs/tailwind with v4 instead of @tailwindcss/vite, using @nuxtjs/tailwindcss module with v4 instead of the Vite plugin), the missing-import trap (global CSS file exists but never imported in layout/root, so utilities silently miss), the SSR-flash trap (CSS not in critical path because imported in client-only branch), the v3-v4 mix-up (npx astro add tailwind installs the v3 integration even in a v4 project), and the wrong-CSS-path trap (Nuxt expects ./app/assets/css/main.css, Remix expects ./app/tailwind.css with ?url query). Covers Astro 4+/5+ (v4 via Vite plugin in astro.config, v3
    0 installs
  80. Tailwind Impl Plugins Official · impertio-studio bundle
    Use when installing, configuring, or customising any of the four official Tailwind plugins: @tailwindcss/typography (prose classes for rendered Markdown), @tailwindcss/forms (form-input/select/checkbox base reset), @tailwindcss/container-queries (@container variants), @tailwindcss/aspect-ratio (legacy aspect-w-*/aspect-h-* syntax). Prevents the v3-syntax-in-v4 trap (require() arrays do not work in v4, you need @plugin), the missing-plugin trap (forgetting to add container-queries to v3 silently emits zero @-variant classes), the unneeded-plugin-in-v4 trap (installing container-queries or aspect-ratio in v4 wastes bundle size and ships duplicated utilities), the forms-strategy mismatch (strategy base auto-styles every form element globally, strategy class only adds form-* classes), the not-prose escape miss (Markdown rendered inside a button or card inherits prose typography unintentionally), and the typography theme-customisation confusion (v3 uses theme.typography in JS, v4 uses @plugin block syntax). Covers
    0 installs
  81. Tailwind Impl Build Postcss CLI · impertio-studio bundle
    Use when wiring Tailwind CSS into a non-Vite build : the PostCSS plugin (Next.js, Remix, Astro pre-Vite, Nuxt v3, Webpack, Rollup, esbuild, Parcel, Laravel Mix, Symfony Encore, any postcss.config.js consumer), or the standalone CLI binary for Rails, Laravel Blade, Django, PHP, Go, Rust, Elixir, .NET, or any non-Node project that has no JS bundler. Prevents the wrong-plugin-name trap (v4 ships @tailwindcss/postcss as a separate package, NOT tailwindcss directly), the autoprefixer-duplication trap (v4 includes Lightning CSS so adding autoprefixer in postcss.config breaks the cascade), the forgot-init trap (v3 requires npx tailwindcss init to create tailwind.config.js before content scanning works), the CLI-binary-vs-npx trap (CLI runs as npx @tailwindcss/cli in v4 but npx tailwindcss in v3), and the @tailwind-vs-@import trap (v3 uses three @tailwind directives, v4 uses one @import "tailwindcss"). Covers postcss.config.mjs/cjs/js for both versions, every CLI flag (--input/-i, --output/-o, --watch, --minify, --co
    0 installs
  82. Tailwind Syntax 3d Transforms · impertio-studio bundle
    Use when building 3D effects in Tailwind v4: card-flip animations, 3D carousels, product showcases, hover-reveal effects, parallax-like depth, or any layout that requires elements to rotate or translate along the Z axis. Use also when an existing v3 project is migrating to v4 and adopting depth effects for the first time, or when reading v4 markup that contains `transform-3d`, `perspective-*`, `rotate-x-*`, `rotate-y-*`, `rotate-z-*`, `translate-z-*`, or `backface-hidden` and needing to know what each utility does and what its parent must declare. Prevents (a) applying 3D rotations without declaring `perspective-*` on the parent, which renders flat with no depth, (b) forgetting `transform-3d` on the parent of a 3D scene, which collapses children into 2D space, (c) leaving the back of a card-flip element visible during the flip because `backface-hidden` was omitted, (d) reaching for these utilities in a Tailwind v3.4 project where NONE of the 3D-axis utilities exist (they compile to nothing and the layout sile
    0 installs
  83. Tailwind Errors Build Failures · impertio-studio bundle
    Use when a Tailwind build completes successfully but the compiled CSS is empty, partial, or stale, when classes appear in markup but styles never render in the browser, when a freshly added utility refuses to take effect, when an HMR update leaves the page styled with the previous build, or when a monorepo package's components ship un-styled because the scanner does not look at their files. Prevents the dynamic-class-name trap (string interpolation breaks detection in BOTH v3 content scanner and v4 Oxide scanner, the most common reason for "Tailwind is broken"), the too-narrow content glob (v3 content array misses new directories), the cached-build trap (Vite's node_modules/.vite cache + Next.js .next cache hold stale class output), the Turbopack arbitrary-value miss (Next.js 16.x + Turbopack incremental build misses aspect-[12/5], z-[100]), the Astro v4.0.8 regression (pin to v4.0.7), the monorepo-import trap (importing a UI lib from node_modules whose classes the scanner never sees), and the v3-v4 directive
    0 installs
  84. Tailwind Errors Dynamic Classes · impertio-studio bundle
    Use when Tailwind classes work in development but disappear in production builds, or when class names assembled at runtime (template literals like bg-${color}-500, server-injected JSON, CMS-driven attributes, i18n strings, user-configured colours) render in the DOM but produce no visible style. This is the most-reported Tailwind issue (tailwindlabs/tailwindcss issue 18136). Prevents the four most common wrong fixes: turning off purge/JIT entirely (no longer possible in v4 and wastes bundle weight in v3), pasting a massive hand-written safelist that drifts out of sync with the design system, listing every possible class as plain strings somewhere in source then deleting them (the cache survives only one build), and monkey-patching the build to ship the full unminified Tailwind output to production. Covers the four supported fixes ranked by preference: (1) map prop to complete static class string via lookup object, (2) inline style for truly arbitrary user values, (3) v3 safelist array and regex pattern with va
    0 installs
  85. Tailwind Syntax State Modifiers · impertio-studio bundle
    Use when styling element states (form input validity, checked, disabled, required, placeholder visibility), structural positions (first, last, even, odd, nth-child), pseudo-elements (before, after, placeholder, file, marker, selection, first-letter), or motion-preference (motion-safe, motion-reduce), or when wiring a Tailwind class to a CSS pseudo-element with the content utility. Prevents the empty-before-pseudo trap (the ::before disappears when Preflight is disabled), the structural-variant scope mistake (first: applied to grandchildren when it should be on direct children), the placeholder-styling mistake (placeholder: on the wrapper instead of the input), the form-state target mistake (invalid: triggers before user input via :user-invalid in v4), and the dialog/details open-state confusion (open: works for both via the :is() compound). Covers structural pseudo-class variants, all pseudo-element variants, the content-[...] utility for ::before and ::after, motion-preference media query variants, the full
    0 installs
  86. Tailwind Syntax Utility Classes · impertio-studio bundle
    Use when writing Tailwind markup and you need to recall or verify the vocabulary of base utility families (spacing, color, typography, layout, flexbox, grid, sizing, border, background, effects). Also use when diagnosing why a class name does not produce expected styling, or when porting from a different framework and looking up the Tailwind equivalent. Prevents incorrect class names that the content scanner silently ignores, the v4 shadow-scale shift confusion where `shadow-sm` is smaller than v3's `shadow-sm` because `shadow-xs` was inserted, and the "I thought sm: meant small screens only" responsive trap (see [tailwind-syntax-responsive] for the full responsive treatment). Covers : the canonical class vocabulary for the ten base utility families with v3 and v4 differences flagged inline; the value scales (spacing 0..96, type xs..9xl, shadow 2xs..2xl, color 50..950, etc.); v4 dynamic spacing utilities that accept any integer; v4 opacity modifier syntax (`bg-red-500/50`); the official 22-family color palett
    0 installs
  87. Tailwind Syntax Arbitrary Values · impertio-studio bundle
    Use when needing a one-off value that is not in the theme: specific hex colors, arbitrary pixel sizes, calc() expressions, custom grid templates, unusual font sizes, specific transforms, custom selectors, runtime CSS-variable values. Use also when reading existing Tailwind markup and encountering `bg-[#1da1f2]`, `w-[calc(100%-2rem)]`, `data-[state=open]:`, `[mask-type:luminance]`, `bg-(--brand)`, `[&_p]:`, or any other square-bracket / parens-bracket utility, and needing to know what it compiles to. Use also when an arbitrary value is being misinterpreted (background-size vs background-position, font-size vs color) and a type hint is required. Prevents (a) reaching for arbitrary syntax when a theme token already exists (lazy arbitrary values fragment design systems), (b) dynamic class-string concatenation like `bg-[${color}]` that never appears as a literal token and silently generates no CSS, (c) using v4 parens CSS-var syntax `bg-(--brand)` in a v3 project where it is parsed incorrectly, (d) using literal s
    0 installs
  88. Tailwind Syntax Modern Utilities · impertio-studio bundle
    Use when reaching for v4-only modern CSS utilities that were unavailable or required heavy custom code in v3: CSS-only enter and exit animations on dialogs and popovers via `@starting-style` plus the `starting:` variant and `transition-discrete`, auto-resizing textareas via `field-sizing-content`, native form-control colour scheme via `scheme-*`, variable-font width axes via `font-stretch-*`, and layered inset shadows and inset rings via `inset-shadow-*` and `inset-ring-*`. Prevents the canonical v3-mental-model traps: trying to animate `display: none` to `display: block` without `transition-discrete` (the property never transitions in v3), using a JS resize hook instead of `field-sizing-content` (verbose and laggy compared to the native CSS property), setting `color-scheme` via inline style when the `scheme-*` utility exists, and stacking multiple `box-shadow` declarations in custom CSS when `inset-shadow-*` plus outer `shadow-*` plus `ring-*` plus `inset-ring-*` compose four layers natively. Covers: `transi
    0 installs
  89. Tailwind Syntax Functional Utilities · impertio-studio bundle
    Use when authoring custom Tailwind utilities in v4 with the `@utility` directive that need to accept parameters: a theme-namespace key (like `tab-github`, `tab-2`, `tab-4`), a bare integer/number/ratio/percentage, a literal keyword, an arbitrary bracketed value, or a slash-modifier (like `text-base/relaxed`). Prevents the common v3-to-v4 plugin-authoring mistakes: writing a `matchUtilities()` JS plugin where a native `@utility name-* { ... }` block would do, attempting to use `--value()` / `--modifier()` / `--alpha()` / `--spacing()` inside v3 (silently ignored as unrecognised CSS functions), and forgetting that `--value()` accepts multiple type forms simultaneously so users can pick theme key OR bare integer OR arbitrary bracket on the same utility. Covers: the four v4-only CSS functions `--value()`, `--modifier()`, `--alpha()`, `--spacing()`; type-hint syntax (`integer`, `[length]`, `--namespace-*`, literal strings, `[*]`); default-value syntax via `--default(<value>)`; combining theme keys with bare and ar
    0 installs
  90. Axum Impl Authorization · impertio-studio bundle
    Use when an Axum app must decide whether an already-authenticated user is allowed to reach a route: protecting an /admin section, gating an endpoint behind a role, or enforcing a fine-grained permission like users:write. Prevents applying the guard with .layer() instead of .route_layer() (which turns a genuine 404 into a 401 and leaks which routes exist), prevents returning 401 on a failed authorization check when the answer is 403, prevents hardcoding a role hierarchy into every endpoint, prevents re-verifying the token inside a guard extractor, and prevents the wrong middleware argument order. Covers role-based and permission-based access control as from_fn and from_fn_with_state middleware applied with route_layer, the 401-versus-403 status rule, the layer-versus-route_layer decision, and the newtype guard extractor pattern (AdminClaims) with its FromRequestParts impl in both Axum 0.7 and 0.8 form. Keywords: axum authorization, RBAC, role-based access control, permission check, from_fn, from_fn_with_state,
    0 installs
  91. Axum Syntax Responses · impertio-studio bundle
    Use when a handler must return a status code, headers, JSON, HTML, raw bytes, a redirect, or a cookie in Axum, or when a handler return value fails the Handler trait bound because the returned type does not implement IntoResponse. Prevents returning a bare domain struct or a bare integer that does not implement IntoResponse, prevents the wrong tuple order where the body is not the final element, prevents using 301 for a permanent redirect when Axum emits 308, and prevents a CookieJar silently dropping changes when the jar is not returned from the handler. Covers IntoResponse and IntoResponseParts, status and header and body tuple combining, Json and Html and raw byte bodies, Redirect (303, 307, 308), AppendHeaders, raw Set-Cookie headers, the axum-extra CookieJar family, and the Axum 0.8 axum::body::Body requirement. Keywords: axum IntoResponse, IntoResponseParts, ResponseParts, Json, Html, Form, Redirect, Redirect::to, Redirect::permanent, Redirect::temporary, AppendHeaders, NoContent, StatusCode, HeaderMap,
    0 installs
  92. Axum Agents API Review · impertio-studio bundle
    Use when auditing or reviewing existing Axum code, a diff, or a single file for correctness, reliability, and security defects, when a code review must flag Axum-specific mistakes, or when checking an Axum service against the package best practices before a merge or a deploy. Prevents shipping the 16 known Axum anti-patterns: 0.7 path syntax on 0.8, body extractor not last, non-IntoResponse handler returns, blocking calls in async handlers, per-request database pools, hardcoded secrets, missing graceful shutdown, and more. Covers a 10-category review checklist, a three-level severity model (blocker, warning, suggestion), the structured findings output format, and cross-references to all 28 other Axum skills that own each fix. Keywords: axum code review, audit axum, review checklist, anti-pattern, severity, blocker warning suggestion, structured findings, is my axum code correct, what is wrong with this handler, find bugs in axum code, check an axum service before deploy, how do I review axum code.
    0 installs
  93. Axum Syntax Extractors · impertio-studio bundle
    Use when a handler must read data from a request in Axum: path parameters, query strings, JSON or form bodies, headers, the method, or shared state. Prevents the "Handler is not satisfied" trait-bound error caused by a body extractor placed before another argument or by two body extractors in one handler, and prevents the 0.7-era assumption that Option<Path<T>> swallows every error. Covers the built-in extractor set, the FromRequestParts vs FromRequest classification, the body-extractor ordering rule, Path deserialization (single, tuple, struct, map), Json and Query behavior, and the 0.8 Option and Result wrapper semantics. Keywords: axum extractor, FromRequest, FromRequestParts, Path, Query, Json, Form, State, Extension, HeaderMap, Multipart, body extractor must be last, Handler is not satisfied, cannot consume body twice, 400 Bad Request path param, missing content-type json, Option Path swallows errors, how do I read a path parameter, parse the query string, get the request body, which extractor do I use.
    0 installs
  94. Axum Core Async Performance · impertio-studio bundle
    Use when an Axum service is slow under concurrent load, has high tail latency, freezes, or stops responding, and when a handler must run CPU-bound work, a blocking library call, or long-running background work. Prevents blocking the Tokio runtime, the !Send future trap that breaks the Handler trait bound, creating a database pool per request, and pool exhaustion that hangs requests instead of failing fast. Covers tokio::spawn versus tokio::task::spawn_blocking, the async I/O substitution table, !Send values held across .await, the tokio worker and blocking thread pools, runtime tuning, and connection pool sizing. Keywords: tokio::spawn, spawn_blocking, blocking the runtime, async performance, tokio::sync::Mutex, std::sync::MutexGuard not Send, JoinHandle, worker threads, max_blocking_threads, acquire_timeout, connection pool sizing, server slow under load, high tail latency, requests hang, app freezes, handler future is not Send, Handler is not satisfied, why is my axum server slow, how do I run blocking code
    0 installs
  95. Axum Core Version Migration · impertio-studio bundle
    Use when upgrading an Axum project from 0.7 to 0.8, when an app that compiled on 0.7 now panics at startup or fails to compile after the version bump, or when deciding which path and extractor syntax a piece of Axum code targets. Prevents leaving 0.7 path syntax in place (a startup panic), keeping #[async_trait] on custom extractors (a compile error), relying on the old Option<Path<T>> swallow-all behavior, and calling APIs removed in 0.8. Covers the complete 0.7 to 0.8 breaking-change matrix, the path-syntax change, #[async_trait] removal and RPITIT, the WebSocket Message type change, the Option extractor change, the Sync bound, tuple Path arity, the removed-API checklist, and an ordered step-by-step migration checklist. Keywords: axum 0.7 to 0.8, axum upgrade, axum migration, breaking changes, matchit 0.8, path syntax panic, async_trait removed, RPITIT, OptionalFromRequest, Utf8Bytes, axum::Server removed, RawBody removed, TypedHeader moved, MSRV 1.75, app panics on startup after upgrade, code stopped compi
    0 installs
  96. Axum Errors Handler Trait · impertio-studio bundle
    Use when the compiler rejects an Axum handler with "the trait bound ... Handler<_, _> is not satisfied", when a function will not register on a route, when the error block names Handler with inference placeholders and lists unrelated impls as help, or when a handler argument or return type silently breaks compilation. Prevents passing a non-extractor argument, placing a body extractor before a parts extractor, returning a type that is not IntoResponse, writing a plain synchronous fn, and producing a !Send future by holding a guard across await. Covers the opaque E0277 trait-bound error, the five root causes, the axum-macros #[debug_handler] diagnostic macro and its macros feature, the state= override, and a symptom-to-cause-to-fix decision tree. Keywords: Handler is not satisfied, trait bound is not satisfied, E0277, debug_handler, axum-macros, macros feature, FromRequestParts, FromRequest, IntoResponse, blanket impl, !Send future, MutexGuard across await, handlers must be async functions, cannot find __axum_
    0 installs
  97. Axum Syntax Custom Extractors · impertio-studio bundle
    Use when implementing a custom extractor in Axum: a type that builds itself from the request by implementing FromRequestParts or FromRequest, a wrapper that runs an inner extractor and remaps its rejection, or a struct derived with axum-macros #[derive(FromRequest)]. Prevents the stale 0.7 habit of keeping #[async_trait] on a 0.8 extractor impl, prevents the ambiguous-extractor bug from implementing both FromRequest and FromRequestParts for one concrete type, and prevents the "Handler is not satisfied" error from a body extractor that is not last. Covers the two extractor traits and the Rejection associated type, the FromRequestParts vs FromRequest choice, native async fn in trait versus #[async_trait], wrapping and remapping an inner extractor, FromRef substate access, and the axum-macros derive attributes. Keywords: axum custom extractor, FromRequestParts, FromRequest, impl FromRequestParts, type Rejection, IntoResponse, async_trait removal, RPITIT, derive FromRequest, from_request via, from_request rejecti
    0 installs
  98. Axum Errors Extractor Rejections · impertio-studio bundle
    Use when an Axum extractor fails and you need control over the HTTP error: customizing a Json/Path/Query rejection, returning a JSON error body instead of Axum's plain text, building a unified API error type, or upgrading 0.7 to 0.8 and Option extractors suddenly return 4xx. Prevents the non-exhaustive match compile error on rejection enums, inventing a wrong status code instead of reusing the rejection's own, and the silent 0.8 behavior change where Option no longer swallows malformed input. Covers the Rejection associated type, the axum::extract::rejection module, Result handler arguments, axum-extra WithRejection, derive(FromRequest) with rejection(...), hand-written custom extractors, and OptionalFromRequest. Keywords: axum rejection, extractor rejection, JsonRejection, PathRejection, QueryRejection, FormRejection, WithRejection, from_request rejection, derive FromRequest, OptionalFromRequest, non_exhaustive match error, body_text, status, customize extractor error, 400 instead of JSON, plain text error b
    0 installs
  99. Axum Impl Sse · impertio-studio bundle
    Use when an Axum handler must push a one-way server-to-client stream over plain HTTP: live notifications, log tailing, progress updates, an LLM token feed, or any "the browser only ever receives" channel consumed by an EventSource. Prevents the compile error from returning a bare Stream of Event instead of the required Result<Event, E> item type, prevents the dropped-connection bug from omitting KeepAlive on a quiet long-lived stream, prevents the runtime panic from calling a single-use Event builder method twice, and prevents reaching for WebSockets when the client never sends anything back. Covers axum::response::sse::Sse, Event, KeepAlive, the TryStream<Ok = Event> bound on Sse::new, the .map(Ok) infallible lift, the Event builder methods (.data, .json_data, .event, .id, .retry, .comment) with their documented panics, the json and tokio feature flags, and the SSE versus WebSocket decision. Keywords: axum SSE, server-sent events, axum::response::sse, Sse::new, Event, KeepAlive, EventSource, text/event-strea
    0 installs
  100. Axum Core State · impertio-studio bundle
    Use when wiring shared application state into an Axum service: database pools, configuration, caches, or any value handlers must reach through the State extractor. Prevents the runtime-500 Extension trap, the cryptic "Handler is not satisfied" error caused by a missing with_state call, and the non-Send handler future caused by holding a std::sync::Mutex guard across an .await point. Covers Router::with_state, the State extractor, the Router<S> typing model, FromRef substate composition, the derive(FromRef) macro, State vs Extension, the missing-state compile error, and std vs tokio Mutex for mutable shared state. Keywords: axum state, with_state, State extractor, FromRef, derive FromRef, substate composition, Router type parameter, Extension vs State, shared application state, AppState, Arc, tokio Mutex, std Mutex, trait bound Handler is not satisfied, missing state, expected Router unit type, 500 missing extension, how do I share a database pool, global config, app-wide cache, mutable shared state.
    0 installs