ワンクリックで
mapcn-vue-design
Project-level design skill for apps/mapcn-vue. Pins Tech Utility direction. Use BEFORE any visual work in this app.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
Project-level design skill for apps/mapcn-vue. Pins Tech Utility direction. Use BEFORE any visual work in this app.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
Nuxt 3/4 performance optimization and architecture guidelines for building fast, maintainable full-stack applications. This skill should be used when writing, reviewing, or refactoring Nuxt code to ensure optimal patterns. Triggers on tasks involving data fetching, server routes, auto-imports, rendering modes, or Nuxt-specific features.
Nuxt GEO (Generative Engine Optimization) guidelines for getting cited by ChatGPT, Perplexity, Claude, Google AI Overviews, and Gemini. Covers AI crawler access (llms.txt, GPTBot/ClaudeBot/PerplexityBot allowlisting), content extractability for RAG retrieval, entity clarity via JSON-LD, and the evidence-backed +40% visibility levers (statistics, citations, quotations) from the GEO arxiv paper. Triggers on tasks involving GEO, AEO, AI search, LLM visibility, llms.txt, AI crawlers, ChatGPT citations, Perplexity, AI Overviews, generative engines, or AI mentions.
Nuxt SEO optimization guidelines for Cloudflare-deployed applications. Covers dynamic OG image generation on CF Workers, page SEO composables, JSON-LD structured data, SSR externals, and Nitro configuration. Triggers on tasks involving SEO, meta tags, OG images, Open Graph, Satori, social sharing, or Cloudflare Workers deployment.
Vue.js performance optimization guidelines for building fast, maintainable applications. This skill should be used when writing, reviewing, or refactoring Vue.js code to ensure optimal performance patterns. Triggers on tasks involving Vue components, reactivity, Composition API, state management, or performance improvements.
| name | mapcn-vue-design |
| description | Project-level design skill for apps/mapcn-vue. Pins Tech Utility direction. Use BEFORE any visual work in this app. |
Pinned direction: Tech Utility (Linear / Vercel / Stripe reference set).
This skill overrides design-discipline's references/directions.md defaults for everything inside apps/mapcn-vue/. The library (packages/v-maplibre) and the docs site (apps/docs) are out of scope.
mapcn-vue is the showcase site for @geoql/v-maplibre — a Vue 3 map component library installed via npx shadcn-vue add .... The audience is developers shipping production maps for defense, logistics, geospatial, and operations products. The visual league we want to share is Linear, Vercel, Stripe Docs, Cloudflare dashboards — restrained, content-first, mono-flavored, density without clutter. Editorial / warm-soft / brutalist directions all fail at trust-signaling to this audience.
@themeAll tokens MUST be referenced via Tailwind's semantic names (bg-background, text-foreground, bg-primary, border-border). NEVER hardcode oklch(...) in components. NEVER use raw Tailwind color utilities (bg-blue-500, text-emerald-500, etc).
@theme {
--color-background: oklch(0.16 0.015 254);
--color-foreground: oklch(0.96 0.006 254);
--color-card: oklch(0.2 0.015 254);
--color-card-foreground: oklch(0.96 0.006 254);
--color-popover: oklch(0.2 0.015 254);
--color-popover-foreground: oklch(0.96 0.006 254);
--color-primary: oklch(0.7 0.16 254);
--color-primary-foreground: oklch(0.16 0.015 254);
--color-secondary: oklch(0.24 0.018 254);
--color-secondary-foreground: oklch(0.96 0.006 254);
--color-muted: oklch(0.24 0.018 254);
--color-muted-foreground: oklch(0.68 0.012 254);
--color-accent: oklch(0.24 0.018 254);
--color-accent-foreground: oklch(0.96 0.006 254);
--color-border: oklch(0.3 0.012 254);
--color-input: oklch(0.3 0.012 254);
--color-ring: oklch(0.7 0.16 254);
--color-destructive: oklch(0.62 0.22 27);
--color-success: oklch(0.72 0.16 165);
--color-warning: oklch(0.78 0.16 75);
--radius: 0.5rem; /* 8px max — sharp */
}
@theme {
--color-background: oklch(0.99 0.003 254);
--color-foreground: oklch(0.18 0.012 254);
--color-card: oklch(0.97 0.005 254);
--color-popover: oklch(0.97 0.005 254);
--color-primary: oklch(0.55 0.18 254);
--color-secondary: oklch(0.94 0.006 254);
--color-muted: oklch(0.94 0.006 254);
--color-muted-foreground: oklch(0.42 0.012 254);
--color-accent: oklch(0.94 0.006 254);
--color-border: oklch(0.88 0.008 254);
--color-input: oklch(0.88 0.008 254);
}
ONE family. No serif. Mono for code/IDs/keyboard hints only.
--font-sans: 'Geist', ui-sans-serif, system-ui, sans-serif;
--font-mono: 'Geist Mono', 'JetBrains Mono', ui-monospace, monospace;
--font-display: var(--font-sans);
Loaded via @nuxt/fonts module (already in nuxt.config.ts). No manual <link> to Google Fonts needed.
font-weight: 800, letter-spacing: -0.045em, line-height: 0.92font-weight: 700, letter-spacing: -0.03em, line-height: 1.05font-weight: 400font-weight: 500, letter-spacing: 0.18em, text-transform: uppercase, font-size: 11px, family = monofont-variant-numeric: tabular-nums.gradient-text class. It is removed from main.css. Don't reintroduce.bg-clip-text headlines with bg-gradient-to-*. Solid color + weight contrast only.font-display, font-serif classes in Vue templates — there's only one family.bg-blue-*, text-emerald-*, bg-red-*, bg-green-*, bg-yellow-*, etc. Use semantic tokens (bg-primary, text-destructive, text-success, text-warning).rounded-2xl or larger anywhere. Tech Utility caps at rounded-lg (8px). Sharp > soft.A compliant surface MUST satisfy at least 4 of these 6:
font-variant-numeric: tabular-nums or class tabular-nums) on any dataEvery surface needs ONE memorable, non-default visual decision. For mapcn-vue specifically, pick from:
37.7749° N, 122.4194° W set in mono at 12px, sitting in a right-side hero panel with a terrain/grid SVG. (Used on homepage hero.)npx shadcn-vue add ... line set at 40px+ as the typographic event of the surface.If a surface lacks ONE of these (or an equivalent), it's anonymous output. Rebuild.
Homepage hero MUST:
min-height: 100dvh on the hero <section>If a future request asks for any of:
…respond per design-discipline Hard Rule #8 — refuse + offer a compliant alternative. Direct the user to override this skill via apps/mapcn-vue/CLAUDE.md if they really want to bypass.
| File | Owns |
|---|---|
app/assets/css/main.css | All tokens, weight rules, base typography |
app/pages/index.vue | Homepage hero — the canonical surface |
app/components/AppSidebar.vue | Sidebar shell |
app/components/FloatingToolbar.vue | Persistent top-left toolbar (sidebar trigger, GitHub, theme) |
app/components/HomeFeatureCard.vue | Feature card primitive |
app/components/ComponentDemo.vue | Per-example demo header |
app/components/examples/index/Header.vue | Examples gallery header |
app/components/examples/index/FooterCta.vue | Examples gallery footer CTA |
nuxt.config.ts | @nuxt/fonts config |
Original design exploration: .design-explorations/a-tech-utility.html (in the repo root, served on localhost:8888 during the design session). That HTML mockup is the visual ground truth — any implementation that diverges from its posture should be questioned.