cmc-27/pass-the-parcel/ui-inventory-scanner
Claude Code and agent skill by cmc-27/pass-the-parcel
- community
Checking that the SKILL.md file is still in the repository.
Make sure to use this skill whenever the user asks to audit, scan, inventory, or catalogue UI elements in the codebase (e.g., "scan all buttons", "audit all inputs", "list all modals"). It dynamically determines search patterns and extraction criteria based on the element type, produces a structured markdown inventory table, flags design-system anomalies, and saves the report to `.devops/audits/`.
Install
npx vskill@latest install cmc-27/pass-the-parcel/ui-inventory-scannerSKILL.md
UI Inventory Scanner
Context
You are a structured UI component inventory scanner. Given any UI element type (button, input, card, modal, dropdown, table row, tab, toast, etc.), you scan the codebase for all instances and produce a markdown inventory table the user can review to propose changes.
Usage
The user says scan all [element type]. You determine everything else dynamically.
Scan Pipeline
Phase 1: Determine Search Strategy
Given the element type, reason about:
- What HTML elements correspond to it? (e.g., button →
<button>,<a role="button">; checkbox →<input type="checkbox">) - What shared components might exist? (e.g.,
Button,PrimaryButton,HeaderButton, or none) - What CSS class patterns might indicate it? (e.g.,
btn-*,card-*,modal-*) - What naming conventions does the project use? Check
src/components/ui/for relevant component files.
Generate grep patterns accordingly — typically 2–3 patterns covering: shared component usage, raw HTML elements, and CSS class indicators.
Phase 2: Discover the Design System
- Read
.wiki/core/09-design-system.mdto understand the project's design tokens and component conventions. - Read any relevant component files in
src/components/ui/to understand the shared component's API (props, variants, sizes).
Phase 3: Infer Extraction Criteria
Based on the element type and the shared component's API, dynamically determine the criteria columns. Think about:
For any element, these columns always apply:
- ID / Name (descriptive label)
- File path + Line number
- Screen / feature (infer from file path)
For interactive elements (buttons, links, toggles):
- Shared component used or raw HTML
- onClick / action
- Hover / focus / active states
- Disabled / loading state
- Variant (if design system defines variants)
- Size
- Type attribute (button, submit, reset)
- Width behavior (fixed, full-width, auto)
For form elements (inputs, selects, textareas):
- Shared component or raw HTML
- Input type
- Label / placeholder
- Value binding
- Validation / error state
- Width
- Border radius, padding, coloring
For containers (cards, modals, sections):
- Shared component or raw div
- Padding, border-radius, shadow, background
- Interactive (onClick, hover)
- Width
- Close mechanism (for modals)
For all elements, also extract:
- Coloring / tokens (bg, text, border)
- Border radius
- Padding
- Font size / weight (if text is involved)
- Shadow
- Accessibility (aria-*, role, title)
Important: If an instance lacks a given attribute, the column value is—(none/default). Do not guess.
Phase 4: Search the Codebase
- Grep using the patterns from Phase 1. Exclude
node_modules/,dist/,.opencode/. - For each file found, read it to isolate every distinct instance. A single file may contain many — each gets its own row.
- Categorize: shared component usage vs raw HTML elements.
Phase 5: Extract Data
For each instance, walk through the JSX and extract every criterion column. Key techniques:
- Label: children text,
aria-label,placeholder, or infer from context - Action:
onClickprop — inline arrow, named handler,onClose,handleSubmit, navigation - States: look for
hover:,focus:,disabled,loadingprops - Tokens: extract CSS classes (bg-, text-, p-, rounded-, shadow-, font-, w-, h-)
- Accessibility:
aria-label,aria-describedby,title,role,htmlFor
Phase 6: Output the Table
Summary Statistics (top):
- Total instances
- Shared component vs raw element breakdown
- Unique variants/sizes used
Inventory Table: Output a markdown table. If 40+ rows, group by screen/feature with separate tables.
Anomalies Section (bottom): Flag anything unusual based on the design system:
- Raw HTML elements where a shared component exists
- Missing variant/size where design system expects one
- Hardcoded values that should be design tokens
- Missing accessibility attributes
- Inconsistent patterns across the same screen
- For buttons specifically: missing
type="button"on non-submit buttons
End with: "Review the table above and propose changes — I can then apply them. Full report saved to `.devops/audits/ui-inventory-<element>-YYYY-MM-DD.md`."
Phase 7: Persist the Report
Save the full report (summary statistics + inventory table(s) + anomalies) to .devops/audits/ui-inventory-<element>-YYYY-MM-DD.md so it survives the session and can be referenced by a later parcel plan:
- Create
.devops/audits/if it does not exist. - One file per scan — never append a new scan to an old report.
- If the user proposes changes from the review, hand them to the
@backlogskill or a parcel plan as Change Items; the audit file records findings only.
Security
- Security scanPassed, 90 of 100Pattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryChecking.devops/skills/ui-inventory-scanner/SKILL.md
Popularity
- 7-day trend score
- 0
Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/cmc-27/pass-the-parcel/ui-inventory-scanner)