RULE
Use the local UI component library (`@/ui/*`) consistently (Angular standalone + Tailwind/DaisyUI).
Install / Use
npx skills add WilliamChelman/sheathInstalls into whichever agent you are using.
Cursor Rules
Cursor IDE rules (v2)
Quality Score
Category
Development & EngineeringSupported Platforms
Skill content
View source on GitHubdescription: Use the local UI component library (@/ui/*) consistently (Angular standalone + Tailwind/DaisyUI).
globs:
- apps/web-app/src/**/*.ts
- apps/web-app/src/**/*.html alwaysApply: false
UI components: import + usage rules
Import rules (mandatory)
- Always import UI building blocks from the barrel exports:
@/ui/badge@/ui/card@/ui/forms@/ui/menu
- Do not deep-import from
apps/web-app/src/app/ui/**(keeps refactors easy and prevents circular deps).
Example:
import { BadgeComponent } from '@/ui/badge';
import { CardComponent } from '@/ui/card';
import { TextInputComponent, SelectComponent, type SelectOption } from '@/ui/forms';
import {
DropdownContainerDirective,
MenuTriggerDirective,
MenuPanelComponent,
MenuItemDirective,
} from '@/ui/menu';
Component conventions (follow existing repo patterns)
- Standalone components only: add used UI components/directives to
imports: []. - Signals-first: use
input(),model(),computed()and built-in control flow (@if,@for). - Styling: use Tailwind utilities + DaisyUI classes in templates; avoid component CSS files.
app-badge
- Use for status tags, counts, and category labels.
- Prefer the typed inputs (
color,variant,size) over hand-rolled class strings.
<app-badge color="success" variant="outline" size="sm" label="Available" />
<app-badge color="warning" variant="solid">Coming Soon</app-badge>
app-card
- Prefer
app-cardfor consistent card padding/typography. - Use inputs instead of duplicating markup (
title,subtitle,variant,fullHeight).
<app-card title="Token Generator" subtitle="Create printable monster tokens" variant="soft">
<div class="flex gap-2">
<app-badge color="primary" variant="outline">PNG</app-badge>
<app-badge color="secondary" variant="outline">PDF</app-badge>
</div>
</app-card>
Forms (@/ui/forms)
General:
- Use the provided form controls instead of raw
<input class="input ...">when possible. - Bind using signals (
model()), not mutable component fields.
app-text-input:
<app-text-input
label="Name"
placeholder="e.g. Goblin Boss"
[maxLength]="32"
[helperText]="'Shown on the token'"
[(value)]="name"
/>
app-select:
options: SelectOption[] = [
{ value: 'small', label: 'Small' },
{ value: 'medium', label: 'Medium' },
];
size = model<'small' | 'medium'>('medium');
<app-select label="Size" [options]="options" [(value)]="size" />
Menus (@/ui/menu)
Use the wrapper directives/components so menus look and behave consistently:
appDropdownContainerappMenuTrigger+[appMenuTriggerFor]app-menu-panelappMenuItem
<div appDropdownContainer align="end">
<button appMenuTrigger [appMenuTriggerFor]="menu" class="btn btn-ghost btn-circle">
Menu
</button>
<ng-template #menu>
<app-menu-panel width="12rem">
<li class="menu-title">Actions</li>
<li><button appMenuItem (click)="doThing()">Do thing</button></li>
<li><a appMenuItem routerLink="/tools">Go to tools</a></li>
</app-menu-panel>
</ng-template>
</div>
Related Skills
career-ops
72.3kOpen-source AI job search: scan job portals, evaluate listings into a structured A-H report with a global 1-5 score, tailor your CV, track applications — runs locally in your AI coding CLI (Claude Code, Codex, OpenCode, Antigravity…)
ai-job-search
43.5kThe job search that runs on your machine. AI job application framework built on Claude Code: evaluate postings, tailor CVs, write cover letters, prep interviews. Fork it and own it.
claude-howto
41.6kA visual, example-driven guide to Claude Code — from basic concepts to advanced agents, with copy-paste templates that bring immediate value.
guizang-ppt-skill
26.7kAI-agent Skill for generating polished HTML slide decks: editorial magazine and Swiss layouts, image prompts, social covers, and a WebGL/low-power presentation runtime.
Security Score
Audited on Invalid Date
