bimverdi-design
Generate BIM Verdi UI components and pages following the established design system. Use when building templates, components, or any frontend for bimverdi.no. Enforces enterprise-calm aesthetics and avoids generic AI patterns.
Best use case
bimverdi-design is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
Generate BIM Verdi UI components and pages following the established design system. Use when building templates, components, or any frontend for bimverdi.no. Enforces enterprise-calm aesthetics and avoids generic AI patterns.
Teams using bimverdi-design 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/bimverdi-design/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How bimverdi-design Compares
| Feature / Agent | bimverdi-design | 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?
Generate BIM Verdi UI components and pages following the established design system. Use when building templates, components, or any frontend for bimverdi.no. Enforces enterprise-calm aesthetics and avoids generic AI patterns.
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
# BIM Verdi Design Skill
This skill generates frontend code for BIM Verdi (bimverdi.no) that follows the established design system and avoids generic "AI slop" aesthetics.
## Anti-Pattern Awareness
LLMs naturally converge toward high-probability outputs. In frontend design, this creates generic results. **Avoid these AI defaults:**
| AI Default | BIM Verdi Instead |
|------------|-------------------|
| Inter font everywhere | Moderat (fallback: Inter) |
| Purple/blue gradients | Warm orange #FF8B5E accent |
| Cards with shadows everywhere | Borderless sections + dividers |
| Rounded corners (16px+) | Subtle radius (8px buttons, 12px cards) |
| Heavy drop shadows | No shadows or very subtle |
| Hover on containers | Hover ONLY on interactive elements |
| Generic placeholder text | Real Norwegian content |
## Design Philosophy
**Variant B: Dividers & Whitespace** is the standard.
Core principles:
- **P1:** Whitespace + hairline dividers are primary structure (not boxes)
- **P2:** Only buttons, links, menu items are clickable
- **P3:** Information = borderless sections; Actions = buttons/links
- **P4:** Never show empty fields (hide or show "Ikke oppgitt")
- **P5:** Calm, consistent enterprise style (minimal visual noise)
## Color Palette
```css
/* Primary */
--color-primary: #FF8B5E; /* Warm orange - main accent */
--color-primary-dark: #E67A4E;
--color-primary-light: #FFBFA8;
/* Neutrals */
--color-black: #1A1A1A; /* Primary text */
--color-gray-dark: #383838;
--color-gray-medium: #888888;
--color-gray-light: #D1D1D1;
--color-white: #FFFFFF;
/* Backgrounds */
--color-beige: #F7F5EF; /* Warm off-white */
--color-beige-dark: #EFE9DE;
body background: #FAFAF8;
/* State */
--color-success: #B3DB87;
--color-error: #772015;
--color-alert: #FFC845;
--color-info: #005898;
```
**Usage rules:**
- Primary orange: CTA buttons, active states, important links
- Never introduce new accent colors without explicit decision
- Text is always #1A1A1A or #383838
- Backgrounds are warm (beige family), never pure white or gray
## Typography
**Font stack:** `'Moderat', 'Inter', system-ui, -apple-system, sans-serif`
| Element | Size | Weight | Line Height |
|---------|------|--------|-------------|
| H1 | 3rem (48px) | 700 | 1.2 |
| H2 | 2rem (32px) | 700 | 1.2 |
| H3 | 1.5rem (24px) | 600 | 1.2 |
| H4 | 1.25rem (20px) | 600 | 1.2 |
| Body | 1rem (16px) | 400 | 1.5-1.75 |
| Small | 0.875rem (14px) | 400 | 1.5 |
**Rules:**
- No ALL CAPS except sparingly for labels/overlines
- Semantic heading order (H1 -> H2 -> H3)
- Good line height for readability
## Spacing System
8px base scale: `4, 8, 12, 16, 24, 32, 40, 48, 64`
```css
--spacing-xs: 0.5rem; /* 8px */
--spacing-sm: 1rem; /* 16px */
--spacing-md: 1.5rem; /* 24px */
--spacing-lg: 2rem; /* 32px */
--spacing-xl: 3rem; /* 48px */
--spacing-2xl: 4rem; /* 64px */
```
**Use few, consistent spacing values per page.**
## Layout Widths
| Context | Max Width |
|---------|-----------|
| Standard content | 1200-1280px |
| Forms/flows | 960px |
| Side gutters | Consistent, responsive |
## Buttons
**Standard button:** 36px height, 8px radius, Inter Medium 14px
```html
<!-- Primary (filled black) -->
<a href="#" class="bv-btn bv-btn--primary">
<span class="bv-btn__text">Lagre</span>
</a>
<!-- Secondary (outline) -->
<a href="#" class="bv-btn bv-btn--secondary">
<span class="bv-btn__text">Avbryt</span>
</a>
<!-- Tertiary (ghost) -->
<a href="#" class="bv-btn bv-btn--tertiary">
<span class="bv-btn__text">Se mer</span>
</a>
<!-- With icon -->
<a href="#" class="bv-btn bv-btn--primary">
<span class="bv-btn__icon">[lucide-icon]</span>
<span class="bv-btn__text">Nytt verktoy</span>
</a>
```
**Sizes:** `--small` (28px), `--medium` (36px), `--large` (44px)
## Icons
**Framework:** Lucide Icons (https://lucide.dev)
| Icon | Usage |
|------|-------|
| `layout-dashboard` | Dashboard |
| `wrench` | Verktoy |
| `file-text` | Artikler |
| `lightbulb` | Prosjektideer |
| `calendar` | Arrangementer |
| `user` | Brukerprofil |
| `building-2` | Bedrift/Foretak |
| `chevron-right` | Navigate |
| `plus` | Add new |
| `pencil` | Edit |
| `trash-2` | Delete |
**Sizes:** 16px (small), 20px (medium), 24px (large)
## Containers & Sections
**Default:** Borderless sections with dividers
```html
<!-- Standard section -->
<section class="bv-section">
<h2 class="bv-section__title">Oversikt</h2>
<p class="bv-section__helper">Valgfri hjelpetekst</p>
<div class="bv-section__content">
<!-- Content here -->
</div>
</section>
<hr class="bv-divider">
```
**Soft panels** (rare, only for action groups):
- No shadow
- Subtle background (#F7F5EF) or hairline border
- Never hoverable
## Cards
**Cards are NOT clickable** unless explicitly designed with:
1. Explicit "Se detaljer" link + chevron
2. Defined hover/focus states
3. Documented as exception
```html
<!-- Non-clickable info card -->
<div class="bv-card">
<div class="bv-card__header">
<h3 class="bv-card__title">Tittel</h3>
</div>
<div class="bv-card__body">
<p>Innhold</p>
</div>
<div class="bv-card__footer">
<a href="#" class="bv-btn bv-btn--tertiary">
Se detaljer
<span class="bv-btn__icon">[chevron-right]</span>
</a>
</div>
</div>
```
## Dividers
Hairline divider: 1px, low contrast (#E5E5E5 or similar)
```html
<hr class="bv-divider">
```
## Forms
**Layout:** 960px max-width, centered
```html
<div class="bv-form-layout">
<div class="bv-form-section">
<h3>Seksjonstittel</h3>
<div class="bv-form-group">
<label for="field">Feltnavn</label>
<input type="text" id="field" name="field">
</div>
</div>
<hr class="bv-divider">
<!-- More sections -->
</div>
```
**Sticky actions bar:**
```html
<div class="bv-form-actions bv-form-actions--sticky">
<a href="#" class="bv-btn bv-btn--tertiary">Avbryt</a>
<a href="#" class="bv-btn bv-btn--secondary">Lagre som kladd</a>
<button type="submit" class="bv-btn bv-btn--primary">Lagre</button>
</div>
```
## Page Templates
### Archive page (e.g., /deltakere/)
```
PageHeader: Title + count + primary action button
|
Filter/search (if applicable)
|
Grid/List of items
|
Pagination
```
### Single page (e.g., /deltakere/firmanavn/)
```
Breadcrumb
|
PageHeader: Title + actions (Edit, etc.)
|
Two-column layout:
Left: Borderless sections (Oversikt, Detaljer)
Right: Aside blocks (Status, Snarveier)
```
### Form page (e.g., /min-side/nytt-verktoy/)
```
Breadcrumb
|
PageHeader: Title + helper text
|
960px form layout with sections + dividers
|
Sticky action bar
```
## Interaction Rules
**Clickable elements MUST be:**
- `<button>` or button component
- `<a>` or link component
- Menu item
- Explicit row action with icon + label
**Hover states:**
- ONLY on interactive elements
- Links: underline on hover
- Buttons: background change
- Containers: NEVER hover
**Focus states:**
- Always visible (outline/ring)
- WCAG AA compliant
## WordPress/PHP Context
This is a WordPress theme. Use:
- PHP for templates (`single-foretak.php`, `archive-foretak.php`)
- ACF fields for custom data
- Existing CSS classes from design-system.php
- Lucide icons as inline SVG
**Template structure:**
```php
<?php get_header(); ?>
<main class="bv-main">
<div class="bv-container">
<!-- Page content -->
</div>
</main>
<?php get_footer(); ?>
```
## Checklist Before Generating
When generating UI code, verify:
- [ ] Using existing CSS classes from design-system.php
- [ ] Following Variant B (dividers/whitespace, not boxes)
- [ ] Containers are NOT clickable
- [ ] Only interactive elements have hover/pointer
- [ ] Empty fields hidden or show "Ikke oppgitt"
- [ ] Layout widths: 1200-1280 standard, 960 for forms
- [ ] Spacing on 8px scale
- [ ] Colors from palette only
- [ ] Lucide icons only
- [ ] Norwegian text (not lorem ipsum)
- [ ] Semantic HTML (proper headings, buttons vs links)
- [ ] Accessible (labels, focus states, contrast)Related Skills
detect-design
Design system detection with drift findings and evidence blocks. Use when auditing design system consistency.
design_responsive
Breakpoints, fluid typography, container queries ve modern CSS features.
design
Design consistency and visual styling for the Svelte client UI. Use when creating or modifying visual elements, colors, typography, buttons, inputs, or cards.
Design Undo/Redo Systems
CREATE comprehensive undo/redo systems with Command Pattern. Design state management for complex applications with canvas interactions, multiple stores, and user actions. Use when building new undo/redo functionality from scratch.
design-system
design system with Tailwind v4.0, accessibility patterns, and project-specific UI/UX rules. Use for all KKOOKK frontend development.
design-system-starter
Create and evolve design systems with design tokens, component architecture, accessibility guidelines, and documentation templates. Ensures consistent, scalable, and accessible UI across products.
design-system-guard
Validate UI screens against Lucid Labs design system rules. Use after implementing UI components to verify adherence to brand colors, typography, layout patterns, and service board logic.
design-strategy
Strategic alignment of design initiatives with business goals using the TRACES framework. Use when (1) aligning design projects with corporate strategy, (2) identifying and mitigating external threats (Technical Debt, Regulatory, Audience, Competition, Economic, Substitute Technology), (3) assessing design maturity/capability, (4) structuring design teams for specific outcomes, (5) managing designer career growth, or (6) communicating design value (ROI, ESG, business outcomes) to senior leadership.
design-spec
[Project Management] Create UI/UX design specifications from requirements, PBIs, or user stories. Produces structured design spec documents with layout, typography, colors, interactions, and responsive breakpoints. Triggers on design spec, design specification, UI specification, component spec, layout spec, wireframe, mockup.
design-research
Research website design, styling, and frontend implementation using Playwright CLI to capture screenshots and analyze structure. Use when a software engineer wants to understand and implement a similar design. Keywords: design research, website design, frontend analysis, UI study, design system, screenshot, Playwright
design-request-en
Gather design change requests through interactive dialog and create a structured Issue.
design-patterns
BK-CI 项目设计模式实践指南,涵盖工厂模式、策略模式、观察者模式、装饰器模式、模板方法等在项目中的实际应用。当用户学习设计模式、重构代码、设计可扩展架构或理解项目设计时使用。