From 791a523101aade72e638084c3149c928f213c3ad Mon Sep 17 00:00:00 2001
From: sion123 <450702724@qq.com>
Date: Wed, 18 Mar 2026 02:56:05 +0800
Subject: [PATCH] feat: add Claude AI skills for shadcn theming and image
generation tools
This commit introduces comprehensive Claude AI skill configurations for:
- shadcn/ui theming with OKLCH color space support
- Gemini API integration for image generation and chat capabilities
- Batch processing and multi-turn conversation features
- File handling utilities for image processing workflows
---
.claude/skills/shadcn-theme/SKILL.md | 98 ++
.../references/templates/theme-setup.md | 109 +++
.../shadcn-theme/references/theming-guide.md | 90 ++
.../app/web-gold/src/layouts/MainLayout.vue | 2 +-
frontend/app/web-gold/src/theme.css | 22 +
.../components/BenchmarkForm.vue | 24 +-
.../components/BenchmarkTable.vue | 13 +-
.../app/web-gold/src/views/dh/VoiceCopy.vue | 361 +++----
.../web-gold/src/views/kling/IdentifyFace.vue | 13 +-
.../src/views/material/MaterialListNew.vue | 7 +-
.../components/TaskPageLayout.vue | 130 +++
.../digital-human-task/index.vue | 319 +++---
.../task-management/layout/TaskLayout.vue | 4 +-
.../system/task-management/mix-task/index.vue | 512 +++++-----
.../task-center/BenchmarkTaskList.vue | 153 +--
scripts/gemini-image-generator.js | 906 ++++++++++++++++++
16 files changed, 1967 insertions(+), 796 deletions(-)
create mode 100644 .claude/skills/shadcn-theme/SKILL.md
create mode 100644 .claude/skills/shadcn-theme/references/templates/theme-setup.md
create mode 100644 .claude/skills/shadcn-theme/references/theming-guide.md
create mode 100644 frontend/app/web-gold/src/views/system/task-management/components/TaskPageLayout.vue
rename frontend/app/web-gold/src/views/{ => system/task-management}/task-center/BenchmarkTaskList.vue (70%)
create mode 100644 scripts/gemini-image-generator.js
diff --git a/.claude/skills/shadcn-theme/SKILL.md b/.claude/skills/shadcn-theme/SKILL.md
new file mode 100644
index 0000000000..c6534a25a6
--- /dev/null
+++ b/.claude/skills/shadcn-theme/SKILL.md
@@ -0,0 +1,98 @@
+---
+name: shadcn-theming
+description: Design tokens and theming for shadcn/ui. Covers CSS variables, OKLCH colors, dark/light mode, and theme configuration for both Radix and Base UI primitives.
+versions:
+ shadcn-ui: "2.x"
+ tailwindcss: "4.1"
+user-invocable: true
+allowed-tools: Read, Write, Edit, Glob, Grep
+references: references/theming-guide.md, references/templates/theme-setup.md
+related-skills: shadcn-registries, shadcn-components
+---
+
+# shadcn Theming
+
+## Agent Workflow (MANDATORY)
+
+Before theming work, use `TeamCreate`:
+
+1. **fuse-ai-pilot:explore-codebase** - Find existing theme tokens
+2. **fuse-ai-pilot:research-expert** - Verify OKLCH patterns via Context7
+
+After: Run **fuse-ai-pilot:sniper** for validation.
+
+## Overview
+
+| Feature | Description |
+|---------|-------------|
+| **CSS Variables** | `--background`, `--foreground`, `--primary` |
+| **OKLCH Colors** | Wide-gamut P3 color space |
+| **Dark Mode** | `.dark` class or `prefers-color-scheme` |
+| **Tailwind v4** | `@theme` directive integration |
+
+## Critical Rules
+
+1. **ALWAYS use OKLCH** color space for all tokens
+2. **ALWAYS define dark mode** overrides for every token
+3. **NEVER hard-code** hex or rgb in components
+4. **USE @theme** directive for Tailwind v4 integration
+5. **MAP semantic tokens** to primitive OKLCH values
+
+## Architecture
+
+```
+app/
+├── globals.css # :root + .dark token definitions
+└── tailwind.config.ts # Optional (v3) or @theme (v4)
+```
+
+-> See [theme-setup.md](references/templates/theme-setup.md) for complete theme
+
+## Token Hierarchy
+
+```
+Component: --card, --card-foreground, --button-*
+ ↑
+Semantic: --primary, --secondary, --accent, --muted
+ ↑
+Primitive: oklch(55% 0.20 260), oklch(98% 0.01 260)
+```
+
+## Validation Checklist
+
+```
+[ ] CSS variables defined in :root
+[ ] Dark mode overrides in .dark
+[ ] OKLCH color space used
+[ ] Chart variables (--chart-1 to --chart-5)
+[ ] Sidebar variables if applicable
+[ ] No hard-coded hex in components
+```
+
+## Best Practices
+
+### DO
+- Use OKLCH for all colors
+- Define semantic tokens mapped to primitives
+- Provide dark mode overrides for all tokens
+- Use `@theme` for Tailwind v4 integration
+
+### DON'T
+- Hard-code hex or rgb values
+- Skip dark mode definitions
+- Mix color spaces (hex + oklch)
+- Define tokens only in Tailwind config
+
+## Reference Guide
+
+### Concepts
+
+| Topic | Reference | When to Consult |
+|-------|-----------|-----------------|
+| **Theming Guide** | [theming-guide.md](references/theming-guide.md) | CSS variables and OKLCH setup |
+
+### Templates
+
+| Template | When to Use |
+|----------|-------------|
+| [theme-setup.md](references/templates/theme-setup.md) | Complete theme configuration |
diff --git a/.claude/skills/shadcn-theme/references/templates/theme-setup.md b/.claude/skills/shadcn-theme/references/templates/theme-setup.md
new file mode 100644
index 0000000000..20ec0b734a
--- /dev/null
+++ b/.claude/skills/shadcn-theme/references/templates/theme-setup.md
@@ -0,0 +1,109 @@
+---
+name: theme-setup
+description: Complete shadcn/ui theme with CSS variables, dark mode, and Tailwind v4 integration
+keywords: theme, setup, css, oklch, dark-mode, tailwind
+---
+
+# Theme Setup
+
+## Complete Light + Dark Theme
+
+```css
+/* app/globals.css */
+@import "tailwindcss";
+
+:root {
+ --background: oklch(100% 0 0);
+ --foreground: oklch(14.1% 0.005 285.82);
+ --card: oklch(100% 0 0);
+ --card-foreground: oklch(14.1% 0.005 285.82);
+ --popover: oklch(100% 0 0);
+ --popover-foreground: oklch(14.1% 0.005 285.82);
+ --primary: oklch(20.5% 0.016 285.94);
+ --primary-foreground: oklch(98.5% 0 0);
+ --secondary: oklch(96.7% 0.001 286.38);
+ --secondary-foreground: oklch(20.5% 0.016 285.94);
+ --accent: oklch(96.7% 0.001 286.38);
+ --accent-foreground: oklch(20.5% 0.016 285.94);
+ --muted: oklch(96.7% 0.001 286.38);
+ --muted-foreground: oklch(55.6% 0.01 285.94);
+ --destructive: oklch(57.7% 0.245 27.33);
+ --destructive-foreground: oklch(98.5% 0 0);
+ --border: oklch(92.2% 0.004 286.32);
+ --input: oklch(92.2% 0.004 286.32);
+ --ring: oklch(87.1% 0.006 286.29);
+ --radius: 0.625rem;
+ --chart-1: oklch(64.6% 0.222 41.12);
+ --chart-2: oklch(60% 0.19 160);
+ --chart-3: oklch(55% 0.18 230);
+ --chart-4: oklch(70% 0.15 300);
+ --chart-5: oklch(75% 0.12 60);
+ --sidebar: oklch(98.5% 0 0);
+ --sidebar-foreground: oklch(14.1% 0.005 285.82);
+ --sidebar-primary: oklch(20.5% 0.016 285.94);
+ --sidebar-accent: oklch(96.7% 0.001 286.38);
+ --sidebar-border: oklch(92.2% 0.004 286.32);
+ --sidebar-ring: oklch(87.1% 0.006 286.29);
+}
+
+.dark {
+ --background: oklch(14.1% 0.005 285.82);
+ --foreground: oklch(98.5% 0 0);
+ --card: oklch(14.1% 0.005 285.82);
+ --card-foreground: oklch(98.5% 0 0);
+ --popover: oklch(14.1% 0.005 285.82);
+ --popover-foreground: oklch(98.5% 0 0);
+ --primary: oklch(92.2% 0 0);
+ --primary-foreground: oklch(20.5% 0.016 285.94);
+ --secondary: oklch(26.9% 0.006 286.03);
+ --secondary-foreground: oklch(98.5% 0 0);
+ --accent: oklch(26.9% 0.006 286.03);
+ --accent-foreground: oklch(98.5% 0 0);
+ --muted: oklch(26.9% 0.006 286.03);
+ --muted-foreground: oklch(71.1% 0.013 286.07);
+ --destructive: oklch(57.7% 0.245 27.33);
+ --border: oklch(26.9% 0.006 286.03);
+ --input: oklch(26.9% 0.006 286.03);
+ --ring: oklch(36.2% 0.014 285.88);
+ --sidebar: oklch(14.1% 0.005 285.82);
+ --sidebar-foreground: oklch(98.5% 0 0);
+ --sidebar-primary: oklch(48.8% 0.243 264.05);
+ --sidebar-accent: oklch(26.9% 0.006 286.03);
+ --sidebar-border: oklch(26.9% 0.006 286.03);
+}
+```
+
+## Tailwind v4 @theme Bridge
+
+```css
+@theme {
+ --color-background: var(--background);
+ --color-foreground: var(--foreground);
+ --color-primary: var(--primary);
+ --color-primary-foreground: var(--primary-foreground);
+ --color-secondary: var(--secondary);
+ --color-accent: var(--accent);
+ --color-muted: var(--muted);
+ --color-destructive: var(--destructive);
+ --color-border: var(--border);
+ --color-input: var(--input);
+ --color-ring: var(--ring);
+ --radius-lg: var(--radius);
+}
+```
+
+## Theme Switching (React)
+
+```tsx
+// components/theme-provider.tsx
+"use client"
+import { ThemeProvider as NextThemesProvider } from "next-themes"
+
+export function ThemeProvider({ children }: { children: React.ReactNode }) {
+ return (
+