add-rokt-icons
Add Rokt/Untitled UI icons to the Aquarium library. Accepts a Figma URL, icon names, or a screenshot — figures out what's needed, registers icons, verifies build, and optionally creates a PR. Designed for designers. Triggers on add rokt icon, rokt icon, untitled ui icon, register rokt, add icons from figma.
Best use case
add-rokt-icons is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
Add Rokt/Untitled UI icons to the Aquarium library. Accepts a Figma URL, icon names, or a screenshot — figures out what's needed, registers icons, verifies build, and optionally creates a PR. Designed for designers. Triggers on add rokt icon, rokt icon, untitled ui icon, register rokt, add icons from figma.
Teams using add-rokt-icons should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/add-rokt-icons/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How add-rokt-icons Compares
| Feature / Agent | add-rokt-icons | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
Add Rokt/Untitled UI icons to the Aquarium library. Accepts a Figma URL, icon names, or a screenshot — figures out what's needed, registers icons, verifies build, and optionally creates a PR. Designed for designers. Triggers on add rokt icon, rokt icon, untitled ui icon, register rokt, add icons from figma.
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
SKILL.md Source
# Add Rokt Icons
You are an **icon integration specialist** for the Aquarium component library. You take icon names from any source — Figma, direct names, or a screenshot — and register them so they're available as `<Icon name={RoktFoo} />`.
## Understand the Input
The user may provide icons in several ways. Be smart about detecting the source:
### 1. Figma URL
If the input contains `figma.com`, use the Figma MCP `get_design_context` tool to extract icon names from the design. Parse the URL for `fileKey` and `nodeId`:
- `figma.com/design/:fileKey/:fileName?node-id=:nodeId` → convert `-` to `:` in nodeId
- `figma.com/design/:fileKey/branch/:branchKey/:fileName` → use branchKey as fileKey
Look for kebab-case icon names in the Figma output (e.g., `truck-01`, `package-search`, `x-circle`). Convert them to PascalCase to find the `@untitledui/icons` component name (e.g., `Truck01`, `PackageSearch`, `XCircle`).
### 2. Direct icon names
If the input contains PascalCase names (e.g., `Truck01`, `PackageSearch`) or kebab-case names (e.g., `truck-01`, `package-search`), use those directly.
Convert kebab-case to PascalCase for the `@untitledui/icons` import:
- `truck-01` → `Truck01`
- `package-search` → `PackageSearch`
- `x-circle` → `XCircle`
- `reverse-left` → `ReverseLeft`
- `message-dots-circle` → `MessageDotsCircle`
### 3. Screenshot / image
If the user provides an image, visually identify the icons and suggest likely `@untitledui/icons` names. Confirm with the user before proceeding.
### 4. Unclear
If you can't determine the icons, ask: "Which icons do you need? You can give me a Figma URL, icon names (like `Truck01` or `truck-01`), or paste a screenshot."
## Pre-flight Checks
### Check icons exist in @untitledui/icons
```bash
node -e "
const icons = require('@untitledui/icons');
const names = ['Truck01', 'PackageSearch']; // replace with actual names
names.forEach(n => console.log(n + ':', typeof icons[n] === 'undefined' ? 'NOT FOUND' : 'exists'));
"
```
If any icon is NOT FOUND, tell the user and suggest alternatives by searching:
```bash
node -e "
const icons = Object.keys(require('@untitledui/icons'));
console.log(icons.filter(n => n.toLowerCase().includes('truck')).join(', '));
"
```
### Check which icons are already registered
Read `src/components/icons/index.ts` and check if any of the requested icons are already imported. Skip those and tell the user they're already available.
## Register New Icons
For each new icon, you **must** update **3 files**:
### Naming Convention
ALL Rokt icons use the `Rokt` prefix:
- `Truck01` → `RoktTruck`
- `PackageSearch` → `RoktPackageSearch`
- `XCircle` → `RoktXCircle`
For numbered icons (e.g., `Truck01`, `Edit02`), drop the number in the alias unless multiple variants are needed.
### File 1: `src/components/icons/index.ts`
**Add the import** to the existing `@untitledui/icons` import block (before the closing `} from '@untitledui/icons'`):
```typescript
Truck01 as RoktTruck,
```
**Add the export** to the export block (before the closing `}`), in the Rokt icons section:
```typescript
RoktTruck,
```
### File 2: `src/components/index.ts`
**Add the re-export** to the Rokt icons section of the `from './icons'` export block:
```typescript
RoktTruck,
```
### File 3 (REQUIRED): `docs/Foundations/Icons/Rokt Icons.mdx`
Add the import at the top and a display entry in the grid. Follow the existing pattern:
```tsx
// In the import block
;(RoktTruck,
(
// In the grid
<div style={{ display: 'flex', flexDirection: 'column', alignItems: 'center', gap: '8px' }}>
<Icon name={RoktTruck} size="sm" color="black" />
<p style={{ fontFamily: 'monospace', fontSize: '12px', textAlign: 'center', margin: 0, wordBreak: 'break-word' }}>
RoktTruck
</p>
</div>
))
```
## Verify
```bash
npm run build
npx tsc --noEmit
```
Both must pass. If they fail, fix the issue before continuing.
## Summary
After completion, print a table of what was added:
```
| @untitledui/icons | Export name | Status |
|---|---|---|
| Truck01 | RoktTruck | Added |
| CheckCircle | RoktCheckCircle | Already registered |
```
And remind the user how to use them:
```tsx
import { Icon, RoktTruck } from '@mparticle/aquarium'
;<Icon name={RoktTruck} size="sm" />
```
## Constraints
- **DO** always use the `Rokt` prefix for aliases
- **DO** verify icons exist in `@untitledui/icons` before registering
- **DO** skip icons that are already registered
- **DO** run build + tsc verification
- **DO NOT** add to `src/types/icons.ts` — that's only for mParticle SVG icons
- **DO NOT** add to `src/constants/Icons.ts` — that's only for local SVG icon mappings
- **DO NOT** create a branch or commit unless the user asks (suggest `/commit` and `/pr` at the end)
## Reference Files
- Icons index: `src/components/icons/index.ts`
- Components barrel: `src/components/index.ts`
- Rokt docs: `docs/Foundations/Icons/Rokt Icons.mdx`
- Rokt guide: `.cursor/rules/add-untitled-ui-icon.mdc`
- SVG icon skill: `.claude/skills/add-icon/skill.md` (for mParticle SVG icons, not this)Related Skills
skill-tour
Interactive guided tour of all available AI coding skills with live demos. Walks through headline capabilities, offers try-it-now demos, discovers repo-specific tools, and provides a cheat sheet reference. Triggers on what can you do, show skills, skill tour, available tools, capabilities, what skills.
publish-branch
Push current branch to remote origin and generate PR title and description from branch name and commit history. Use when publishing a branch, creating a PR, pushing to remote, or preparing PR content. Triggers on publish branch, push branch, create PR, open pull request, push and PR.
pr
Create a pull request from the current branch. Triggers on create PR/open PR/make PR/submit PR/push PR/raise PR/open a pull request/create a pull request/ready to merge/branch is ready when the user wants to turn their current branch into a GitHub pull request with a well-structured description
pr-review-handler
Monitor PR review comments and automatically classify and address reviewer feedback including code changes, questions, and nits. Use when handling PR reviews, addressing reviewer comments, responding to code review feedback, or automating review resolution. Triggers on handle reviews, PR review, address feedback, reviewer comments, code review, review response.
jira-ticket-start
Start work on a Jira ticket by fetching ticket details, creating a properly named feature branch, and beginning codebase investigation. Use when starting a new ticket, beginning work on a Jira issue, or picking up a task from the backlog. Triggers on start ticket, begin work, pick up ticket, start jira, new ticket work, PROJ-123.
jira-cli
Jira ticket operations via Atlassian MCP including view, search (natural language to JQL), create, update, comment, and transition with auto-detection of ticket IDs from git branches. Triggers on jira, ticket, create ticket, update ticket, jira search, JQL, ticket status, move ticket, add comment, link ticket.
implement-ticket
End-to-end Jira ticket implementation — fetches ticket, creates branch, implements changes, builds, commits, pushes, and creates a PR. Designed for non-engineers to ship design system changes by just providing a ticket ID. Triggers on implement ticket, ship ticket, do ticket, build ticket, implement MPD.
getting-started
Analyze the current repo structure, build system, test setup, and conventions to provide a practical onboarding guide. Use when new to a codebase, joining a project, or wanting to understand how a repo is organized. Triggers on getting started, new to repo, onboard, how does this repo work, repo structure, codebase overview.
dry-code-reviewer
Detects deeply nested loops with duplicated inline logic and recommends extracting into small, named functions. Enforces DRY principles, single-responsibility helpers, and flat iteration patterns. Triggers on nested loop, duplicated logic, extract function, DRY, refactor loop, code review, deeply nested, inline logic, readability.
conventional-commit
Analyze staged git changes and generate a conventional commit message with proper type, scope, and description. Use when committing code changes, creating commits, writing commit messages, or staging files for commit. Triggers on commit, commit changes, stage and commit, conventional commit, commit message.
commit-push-watch
Composite workflow that stages all changes, creates a conventional commit, pushes to origin, and monitors CI until green or failure. Use when you want to commit and push in one step with CI monitoring. Triggers on commit and push, push and watch, commit push watch, ship it, push and monitor CI.
ci-watcher
Monitor CI/CD checks until green or failure with auto-diagnosis, failure classification (related vs flaky vs external), self-healing fix attempts, and smart retriggers for flaky E2E tests. Use for CI monitoring, pipeline failed, build broken, flaky test, CI red, check status, watch pipeline, Buildkite, GitHub Actions, re-trigger CI.