Kullanıcının marka kimliğini 10 soruluk onboarding sihirbazıyla bir kez yakalar (primary/accent HEX + heading + body Google Fonts + tasarım stili editorial/technical/minimal/playful + varsayılan output dizini + syntax theme + TOC davranışı + opsiyonel logo/şirket), body-text ve link kontrastını WCAG 2.2 AA'ya karşı doğrular, HSL alanında 12 CSS custom property türetir ve sonucu her projede saklar.
cd ~/.claude/skills
git clone https://github.com/alirezarezvani/claude-skills.git claude-skills mkdir -p ~/.claude/skills/design-system
curl -fsSL https://raw.githubusercontent.com/alirezarezvani/claude-skills/HEAD/.gemini/skills/design-system/SKILL.md \
-o ~/.claude/skills/design-system/SKILL.md design-system skill'i, markdown-html plugin için shared brand owner görevidir. Onboarding'i bir kez çalıştırın. Her converter (md-document, md-review, md-slides) sonuç konfigürasyonunu config_loader.py üzerinden okur ve aynı 12 CSS custom property'sini çıktısına uygular. Bunu yapmadan, dönüştürmeler placeholder varsayılanlarla render edilir — teknik olarak işlevsel ama markalı değildir.
Bu skill tam olarak üç Python aracından oluşur:
onboard.py — interaktif (veya --defaults / --set / --show / --reset) sihirbazı.config_loader.py — project > global > defaults önceliği ve MARKDOWN_HTML_NO_CONFIG=1 bypass'ı olan içe aktarılabilir özelleştirme yükleyicisi.brand_palette_validator.py — WCAG-AA contrast checker + HSL palette türetici.Üçü de stdlib-only'dir ve LLM çağrısı içermez (Path-B disiplinine göre belirleyici).
| Belirti | İşlem |
|---|---|
| Kullanıcı ilk kez bu workspace'te "bu markdown'ı HTML'ye çevir" diyor | python3 markdown-html/skills/design-system/scripts/onboard.py çalıştırın |
~/.config/markdown-html/design-system.json mevcut değil VEYA setup_completed_at null |
Dönüştürmeyi reddedin, onboarding'i gösterin |
| Kullanıcı repo başına brand override isteyebiliyor | python3 .../onboard.py --scope project |
| Kullanıcı tek bir alanı etkileşimsiz değiştirmek istiyor | python3 .../onboard.py --set brand.primary=#FF6B35 |
| Kullanıcı sıfırlamak ve yeniden onboard yapmak istiyor | python3 .../onboard.py --reset sonra yeniden çalıştırın |
| Kullanıcı sıfır-dokunuş varsayılanlarını istiyor (CI, geçici oturum) | python3 .../onboard.py --defaults |
| Başsız / konteynerize çalışma kaydedilen config'i yoksaymalıdır | MARKDOWN_HTML_NO_CONFIG=1 ... |
| # | Anahtar | Seçimler / Validator | Varsayılan |
|---|---|---|---|
| 1 | default_output_dir |
yol; os.access(parent, os.W_OK) |
./markdown-html-out/ |
| 2 | brand.primary |
HEX ^#?[0-9a-fA-F]{6}$ |
#0A1628 |
| 3 | brand.accent |
HEX veya boş (otomatik-türet) | primary'den türet |
| 4 | typography.heading_font |
Google Font adı (12 güvenli varsayılan) | Inter |
| 5 | typography.body_font |
Google Font adı | Inter |
| 6 | design_style |
editorial / technical / minimal / playful |
technical |
| 7 | code_theme |
light / dark / auto |
auto |
| 8 | toc.behavior |
sticky-sidebar / collapsible-top / inline / none |
sticky-sidebar |
| 9 | company_name |
string (boş olabilir) | "" |
| 10 | logo_url |
URL veya boş (render'da base64-embedded) | "" |
brand_palette_validator.validate() her değişiklikten sonra çalışır. Body text'in arka plandan 4.5:1 contrast'ı sağlaması; link'in arka plandan 4.5:1 contrast'ı sağlaması gerekir. İkisi de başarısız olursa, onboard.py kaydetmeyi reddeder (exit code 4) ve kullanıcıya daha koyu bir primary seçmesini, brand.bg/brand.text'i boş bırakarak derivation'ın güvenli bir çift seçmesine izin vermesini veya brand.text'i doğrudan override etmesini söyler. Canon: WCAG 2.2 §1.4.3.onboard.py yolun yukarısını yürüyerek mevcut bir atasını bulur ve os.W_OK kontrol eder. Boş veya yazılamaz yol → exit code 3. Orkestratörün output_path_resolver.py aynı kuralı dönüştürme başına onurlandırır.design_style, brand.primary, code_theme veya toc.behavior'u değiştirdiğinde farklı render etmelidir. Dekoratif-sadece alanlar design disiplinini başarısız kılar.brand.primary'yi override edebilirsiniz ve global'den typography.heading_font'u kaybetmezsiniz).MARKDOWN_HTML_NO_CONFIG=1, headless CI, geçici test konteynerleri ve autoresearch-tarzı değerlendirici döngüleri içindir. Hiçbir zaman interaktif bir kullanıcı için sessizce ayarlamayın.Kullanıcının brand'ı yakalandıktan sonra, brand_palette_validator.derive_palette() aynı config dosyasında derived_palette altında depolanan 12 CSS custom property'si üretir. Her converter bunları <style> bloğuna dahil eder.
| Token | Amaç | Türetim |
|---|---|---|
--md-bg |
Doküman arka planı | Primary koyu ise, vibrant ise nötr-yakın |
--md-surface |
Kart / callout / blockquote arka planı | Bg ± 4-6% luminance |
--md-border |
İnce hatlar, tablo sınırları | Bg ± 8-12% luminance |
--md-text |
Body text | Koyu bg'de off-white, açık bg'de near-black |
--md-text-muted |
Başlıklar, metadata, footer'lar | rgba(text, 0.68) |
--md-accent |
Primary CTA, callout header'ları, link emphasis | Primary vibrant ise, koyu ise hue-shifted lighter |
--md-accent-soft |
Accent arka planları, hover state'leri | rgba(accent, 0.14) |
--md-code-bg |
Inline code, fenced block bg | Bg ± 4-5% luminance |
--md-link |
Hyperlink'ler | bg'de 4.5:1 contrast'a ulaşmak için iteratif yürüyüş |
--md-link-hover |
Hover state | Link ± 6-8% luminance |
--md-success |
Tamam / onaylı / geçti | Yeşil sabitlenmiş, luminance-matched |
--md-warn |
Uyarı / nit / TODO | Amber sabitlenmiş, luminance-matched |
Tur başına bir soru, önerilen cevap, canon citation.
technical, uzun-okuma anlatıları için editorial, seyrek referans dokümanlar için minimal, marketing/landing içeriği için playful. Canon: Ellen Lupton, Thinking with Type (stil retorik amacı hizmet eder).sticky-sidebar, kısa okumalar için inline. Canon: Nielsen-Norman, Table of Contents Best Practices (2023).--scope project'i sadece bu repo'nun farklı bir brand'ı varsa kullanın. Canon: research-ops onboarding pattern, research-ops/CLAUDE.md §8.# Ilk-çalıştırma onboarding (interaktif, tüm 10 soruyu yürütür)
python3 markdown-html/skills/design-system/scripts/onboard.py
# CI için sıfır-dokunuş varsayılanları / ilk-test
python3 .../onboard.py --defaults
# Sadece primary rengi ve design style'ı değiştir
python3 .../onboard.py --set brand.primary=#FF6B35 --set design_style=editorial
# Per-repo override
python3 .../onboard.py --scope project --set design_style=minimal
# Sıfırla ve yeniden onboard et
python3 .../onboard.py --reset
python3 .../onboard.py
# Etkili config'i incele (project > global > defaults)
python3 .../config_loader.py --show
python3 .../config_loader.py --status
# Kaydedilen config'i bypass et (sadece DEFAULTS döner)
MARKDOWN_HTML_NO_CONFIG=1 python3 .../config_loader.py --show
# Brand'e bağlanmadan önce WCAG contrast'ı spot-kontrol et
python3 .../brand_palette_validator.py --primary "#FF6B35" --accent "#00D4AA"
code_theme: auto syntax highlighting için prefers-color-scheme durumunu işler; layout palet onboarding başına single-mode'dir.marketing/landing/skills/landing/scripts/brand_palette_validator.py — o script'in derive_palette() hero-page rendering için şekillendirilmiş 8 token üretir (--navy, --teal, --card-bg, --card-border). Bu script doküman rendering için şekillendirilmiş 12 token üretir (sticky surface, hairline border, code bg, link, link-hover, success, warn). Aynı WCAG + HSL math, farklı token taxonomy.research-ops/skills/clinical-research/scripts/onboard.py — aynı pattern (interactive + --defaults/--set/--show/--reset/--scope), farklı soru seti (clinical alpha/power/dropout vs. brand palette/typography/layout).~/.config/markdown-html/design-system.json (global) veya ./.markdown-html/design-system.json (project). JSON schema assets/design_system_schema.json konumunda yaşar.
brand.bg olarak seç (düşük text contrast). Bunun yerine accent olarak kullan.MARKDOWN_HTML_NO_CONFIG=1'i sessizce ayarla — token'larınızın neden kaybolduğunu merak edecekler.derived_palette'te encode et. Sadece kasıtlı bir ad + amaç + derivation kuralıyla yeni bir token ekle.research-ops/CLAUDE.md §8marketing/landing/skills/landing/scripts/brand_palette_validator.pyHerhangi bir yaratıcı çalışmaya başlamadan önce bunu mutlaka kullanın - feature oluştururken, component inşa ederken, functionality eklerken veya davranış değiştirirken. Kullanıcı niyetini, gereksinimleri ve tasarımı implementation öncesinde araştırır.
Uygulama tamamlandığında, tüm testler geçtiğinde ve çalışmanızı nasıl entegre edeceğinize karar vermeniz gerektiğinde kullanın - merge, PR veya cleanup seçeneklerini sunarak geliştirme sürecinin tamamlanmasını rehberlik eder.
Kod incelemesi geri bildirimi alırken, önerileri uygulamadan önce kullanın; özellikle geri bildirim belirsiz veya teknik olarak şüpheli görünüyorsa - performatif anlaşmadan veya körü körüne uygulamadan ziyade teknik titizlik ve doğrulama gerekir.
Görevleri tamamlarken, büyük özellikleri hayata geçirirken veya merge etmeden önce çalışmanın gereksinimleri karşıladığını doğrulamak için kullanın.
Yeni bir feature üzerinde çalışmaya başlarken veya implementasyon planını yürütmeden önce kullanın - native araçlar veya git worktree fallback aracılığıyla izole edilmiş bir workspace sağlar.
Herhangi bir konuşma başlatırken kullanın - skill'lerin nasıl bulunacağını ve kullanılacağını belirler, clarification soruları da dahil olmak üzere HERHANGİ bir yanıt vermeden önce skill invocation gerektirir.