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.

6 stars

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

$curl -o ~/.claude/skills/add-rokt-icons/SKILL.md --create-dirs "https://raw.githubusercontent.com/mParticle/aquarium/main/.claude/skills/add-rokt-icons/skill.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/add-rokt-icons/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How add-rokt-icons Compares

Feature / Agentadd-rokt-iconsStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/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

6
from mParticle/aquarium

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

6
from mParticle/aquarium

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

6
from mParticle/aquarium

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

6
from mParticle/aquarium

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

6
from mParticle/aquarium

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

6
from mParticle/aquarium

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

6
from mParticle/aquarium

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

6
from mParticle/aquarium

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

6
from mParticle/aquarium

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

6
from mParticle/aquarium

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

6
from mParticle/aquarium

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

6
from mParticle/aquarium

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.