.claude/skills/bimverdi-design/SKILL.md
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.
npx skillsauth add aharstad91/bimverdi-v2 bimverdi-designInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
This skill generates frontend code for BIM Verdi (bimverdi.no) that follows the established design system and avoids generic "AI slop" aesthetics.
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 |
Variant B: Dividers & Whitespace is the standard.
Core principles:
/* 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:
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:
8px base scale: 4, 8, 12, 16, 24, 32, 40, 48, 64
--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.
| Context | Max Width | |---------|-----------| | Standard content | 1200-1280px | | Forms/flows | 960px | | Side gutters | Consistent, responsive |
Standard button: 36px height, 8px radius, Inter Medium 14px
<!-- 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)
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)
Default: Borderless sections with dividers
<!-- 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):
Cards are NOT clickable unless explicitly designed with:
<!-- 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>
Hairline divider: 1px, low contrast (#E5E5E5 or similar)
<hr class="bv-divider">
Layout: 960px max-width, centered
<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:
<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>
PageHeader: Title + count + primary action button
|
Filter/search (if applicable)
|
Grid/List of items
|
Pagination
Breadcrumb
|
PageHeader: Title + actions (Edit, etc.)
|
Two-column layout:
Left: Borderless sections (Oversikt, Detaljer)
Right: Aside blocks (Status, Snarveier)
Breadcrumb
|
PageHeader: Title + helper text
|
960px form layout with sections + dividers
|
Sticky action bar
Clickable elements MUST be:
<button> or button component<a> or link componentHover states:
Focus states:
This is a WordPress theme. Use:
single-foretak.php, archive-foretak.php)Template structure:
<?php get_header(); ?>
<main class="bv-main">
<div class="bv-container">
<!-- Page content -->
</div>
</main>
<?php get_footer(); ?>
When generating UI code, verify:
tools
# Min Side Expert Context > Use this skill when working on `/min-side/` routes, user authentication, access control, or member portal features in BIM Verdi. --- ## 1. Architecture Overview ### Router System Min Side uses a single router template that maps URL paths to part files: ``` template-minside-router.php ↓ inc/minside-helpers.php (route definitions) ↓ parts/minside/{part-file}.php ``` **Key files:** - `template-minside-router.php` - Main router template - `inc/minside-helper
development
Maintainer-only workflow for handling GitHub Secret Scanning alerts on OpenClaw. Use when Codex needs to triage, redact, clean up, and resolve secret leakage found in issue comments, issue bodies, PR comments, or other GitHub content.
development
Maintainer workflow for OpenClaw releases, prereleases, changelog release notes, and publish validation. Use when Codex needs to prepare or verify stable or beta release steps, align version naming, assemble release notes, check release auth requirements, or validate publish-time commands and artifacts.
development
Run, watch, debug, and extend OpenClaw QA testing with qa-lab and qa-channel. Use when Codex needs to execute the repo-backed QA suite, inspect live QA artifacts, debug failing scenarios, add new QA scenarios, or explain the OpenClaw QA workflow. Prefer the live OpenAI lane with regular openai/gpt-5.4 in fast mode; do not use gpt-5.4-pro or gpt-5.4-mini unless the user explicitly overrides that policy.