Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add companion-inc/introspect --skill ui-component-polishgit clone --depth 1 https://github.com/companion-inc/introspectWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/companion-inc/introspect/ui-component-polish)<a href="https://agentmods.dev/skills/companion-inc/introspect/ui-component-polish"><img src="https://agentmods.dev/badge/skills/companion-inc/introspect/ui-component-polish/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/companion-inc/introspect/ui-component-polish"><img src="https://agentmods.dev/badge/skills/companion-inc/introspect/ui-component-polish.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00108 | $0.01378 |
| Opus 5 | $0.00054 | $0.00689 |
| Sonnet 5 | $0.00022 | $0.00276 |
| Haiku 4.5 | $0.00011 | $0.00138 |
Grade A, and why
ui-component-polish scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 10d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 52 lines — stays where its author put it; the contents beside it link to each section on GitHub.
UI Component Polish
Use When
- The user calls an in-app component ugly, awkward, broken, or "not like X," or asks to restyle one to feel like a real app or library.
- You are building or restyling a functional component: text/tags input, chips, tabs, combobox, select, card, dialog, list row.
- A component "looks wrong" in a specific way: detached boxes, lingering placeholder, wrong chip proportions, force-wrapping, bad spacing, an oversized input ringed by dead space, or message bubbles that don't grow with their content.
Near miss — do not load this for:
- Pricing cards, paywalls, App Store/onboarding/marketing copy and visuals →
product-surface-polish. - A component throwing or behaving wrong logically (empty-options crash, bad state) → that is a logic bug, not visual polish.
Procedure
- Scope the change to exactly what was asked. If the user names one dimension ("make it bigger", "more padding", "move it left"), change only that and keep the element's existing archetype, structure, and design tokens — its tabs, highlight/accent color, border, radius. "Make it bigger" is not license to restyle: do not swap a bordered tabs toggle for a circular rounded-pill, drop the highlight color, or re-vibe the control. When the target is an already-built element, its own current implementation is the first reference you read — match those tokens before any external library. Only do a full restyle when the user actually asks the component to look different.
- Identify the archetype before styling. Match the use case to its canonical real-world pattern, not the user's loose word:
- free-text, multiple arbitrary values → tags input (Gmail "To" field is canonical).
- pick one from a known list → combobox / select.
- switch between mutually-exclusive views → tabs.
- back-and-forth conversation → chat/message UI (iMessage, ChatGPT, Claude are canonical): a compact input that grows with its content, the message and any thinking rendered inside the bubble, longer history behind an expand affordance — not a fixed oversized input box surrounded by empty space. Reason about the interaction (where the message goes, how the bubble grows, what the default state shows) before placing elements; shipping a default layout without that thinking is what reads as "why are you not thinking." If the user says "tabs" or "combobox" but the data doesn't fit, say so and name the right archetype with its reference.
- Read real reference implementations before writing any styles — never from memory. Read at least two or three:
- First the component library the repo already uses — open the installed component source (e.g.
src/components/ui/*.tsxfor shadcn), not just the docs. This includes the repo's existing motion/animation primitives and its font/typography tokens — they are part of the design system. For an animated surface (a streaming or "thinking" indicator), the repo's own animation files and font are the salient references: render thinking as the app's existing animated component, not as plain text in a different font. - Then polished public examples for that archetype (shadcn, diceui, emblor, originui, or the actual app the user named). Pull the GitHub source when docs are thin. Extract concrete values: chip height/radius/padding, container layout, where the input sits, edge-state behavior, the font/type scale, and animation timing/easing.
- First the component library the repo already uses — open the installed component source (e.g.
- Match the concrete details, including edge states. Common real-component behaviors the user notices when missing: placeholder hides once values exist; chips do not force-wrap to a second line; a locked/pinned value renders as a chip inside the field, not a detached gray box above it; remove targets are tappable.
- Verify by viewing the rendered component, not by lint/typecheck. Run the app or the screen and look at it empty, with one value, with many, and overflowing. Lint and typecheck are necessary but prove nothing about how it looks. State that you actually viewed the render.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 10d ago First seen · 52 lines · 108 tokens per session scan A 366cee275fda
ui-component-polish is a skill published in the GitHub repository companion-inc/introspect (10 stars, last pushed 21d ago), licensed MIT. It adds 108 tokens to every session and 1,378 once invoked, about $0.0005 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other skills, from other repositories
chakra-ui-builder
Build responsive, accessible UI components and layouts using Chakra UI v3, install or configure Chakra UI in new and existing projects, and design scalable themes using tokens, semantic tokens, recipes, and slot recipes. Use this skill whenever a user asks to build, create, or generate any UI component, page, form…
visual-ralph
Visual Ralph orchestration for frontend UI from generated references, static references, or live URL targets, using $ralph with built-in visual verdict and pixel-diff evidence until the implementation matches and leaves a reproducible design system.
frontend-ui-dark-ts
Build dark-themed React applications using Tailwind CSS with custom theming, glassmorphism effects, and Framer Motion animations. Use when creating dashboards, admin panels, or data-rich interfaces with a refined dark aesthetic.
reveal-hover-effect
Build cursor-following spotlight reveals that expose a second aligned image through a soft radial mask. Use for hover-to-color, before-and-after, x-ray, material, texture, product-detail, and illustrated hero effects where a desaturated or embossed base image should remain visible while another treatment follows an…
frontend-visual-qa
Audits already-rendered web, landing-page, HTML deck/slide, browser tool/game, dashboard/admin, design-system, and desktop UIs using real-browser or native-app journeys, inspected screenshots, DOM geometry, responsive or projection viewports, and a bundled Playwright sweep. Use after UI implementation to find…
prototype-web
A clickable, high-fidelity web product prototype with navigation, a hero section, feature cards, steps, social proof, and optional pricing. It is designed to resemble a finished landing page while remaining a prototype.