feat: 增强 command-guide skill,新增 UI 设计工作流指南和自动同步功能

## 主要更新

### 1. 新增 UI 设计工作流完整指南
- 新增 `ui-design-workflow-guide.md` (12KB)
- 使用 Gemini 分析 11 个 UI 设计命令文件
- 提供 4 种工作流模式详细指导:
  - 探索式设计(新概念)
  - 设计复制(模仿现有网站)
  - 代码优先导入
  - 批量生成(高容量)
- 包含架构最佳实践、性能优化和故障排查

### 2. 更新工作流模式指南
- 在 `workflow-patterns.md` 中新增 Pattern 7: UI设计工作流
- 提供三种子模式的中文示例
- 添加 UI 设计指南的交叉引用

### 3. 增强索引构建脚本
- 更新 `analyze_commands.py` 支持自动同步 reference 目录
- 新增 `sync_reference_directory()` 函数:
  - 自动删除旧的 reference 文件
  - 从 `.claude/agents` 和 `.claude/commands` 复制最新文件
  - 确保索引构建前 reference 目录为最新
- 增强统计输出,显示 reference 目录同步状态

### 4. 更新索引文件
- 重建所有索引文件(all-commands.json, by-category.json 等)
- 优化命令元数据和分类
- 同步最新的 UI 设计命令(包括新增的 import-from-code.md)

## 技术细节

**命令分类体系**:
- Orchestrators: explore-auto, imitate-auto, batch-generate
- Core Extractors: style-extract, layout-extract, animation-extract
- Input & Capture: capture, explore-layers, import-from-code
- Assemblers: generate, update

**架构原则**:
- 关注点分离:Style、Structure、Motion 独立
- Token-First CSS:使用 CSS 变量而非硬编码
- 并行执行:支持最多 6 个并发任务

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
catlog22
2025-11-06 21:37:19 +08:00
parent 581b46b494
commit 1e67f5780d
11 changed files with 3003 additions and 1757 deletions

View File

@@ -6,13 +6,18 @@ Analyze all command files and generate index files for command-guide skill.
import os
import re
import json
import shutil
from pathlib import Path
from collections import defaultdict
from typing import Dict, List, Any
# Base paths
COMMANDS_DIR = Path("D:/Claude_dms3/.claude/commands")
INDEX_DIR = Path("D:/Claude_dms3/.claude/skills/command-guide/index")
BASE_DIR = Path("D:/Claude_dms3/.claude")
COMMANDS_DIR = BASE_DIR / "commands"
AGENTS_DIR = BASE_DIR / "agents"
SKILL_DIR = BASE_DIR / "skills" / "command-guide"
REFERENCE_DIR = SKILL_DIR / "reference"
INDEX_DIR = SKILL_DIR / "index"
def parse_frontmatter(content: str) -> Dict[str, Any]:
"""Extract YAML frontmatter from markdown content."""
@@ -279,6 +284,41 @@ def build_command_relationships() -> Dict[str, Any]:
return relationships
def sync_reference_directory():
"""Sync reference directory with source directories."""
print("\n=== Syncing Reference Directory ===")
# Step 1: Delete all files in reference directory
if REFERENCE_DIR.exists():
print(f"Deleting existing reference directory: {REFERENCE_DIR}")
shutil.rmtree(REFERENCE_DIR)
# Step 2: Create reference directory structure
REFERENCE_DIR.mkdir(parents=True, exist_ok=True)
print(f"Created reference directory: {REFERENCE_DIR}")
# Step 3: Copy agents directory
agents_target = REFERENCE_DIR / "agents"
if AGENTS_DIR.exists():
print(f"Copying {AGENTS_DIR} -> {agents_target}")
shutil.copytree(AGENTS_DIR, agents_target)
agent_files = list(agents_target.rglob("*.md"))
print(f" Copied {len(agent_files)} agent files")
else:
print(f" WARNING: Source directory not found: {AGENTS_DIR}")
# Step 4: Copy commands directory
commands_target = REFERENCE_DIR / "commands"
if COMMANDS_DIR.exists():
print(f"Copying {COMMANDS_DIR} -> {commands_target}")
shutil.copytree(COMMANDS_DIR, commands_target)
command_files = list(commands_target.rglob("*.md"))
print(f" Copied {len(command_files)} command files")
else:
print(f" WARNING: Source directory not found: {COMMANDS_DIR}")
print("Reference directory sync completed\n")
def identify_essential_commands(all_commands: List[Dict]) -> List[Dict]:
"""Identify the most essential commands for beginners."""
# Essential command names (14 most important) - use full command paths
@@ -320,7 +360,13 @@ def main():
if sys.platform == 'win32':
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')
print("Analyzing command files...")
print("=== Command Guide Index Rebuild ===\n")
# Step 1: Sync reference directory
sync_reference_directory()
# Step 2: Analyze command files
print("=== Analyzing Command Files ===")
# Find all command files
command_files = list(COMMANDS_DIR.rglob("*.md"))
@@ -385,7 +431,17 @@ def main():
# Print summary statistics
print("\n=== Summary Statistics ===")
print(f"Total commands: {len(all_commands)}")
# Reference directory statistics
if REFERENCE_DIR.exists():
ref_agents = list((REFERENCE_DIR / "agents").rglob("*.md")) if (REFERENCE_DIR / "agents").exists() else []
ref_commands = list((REFERENCE_DIR / "commands").rglob("*.md")) if (REFERENCE_DIR / "commands").exists() else []
print(f"\nReference directory:")
print(f" Agents: {len(ref_agents)} files")
print(f" Commands: {len(ref_commands)} files")
print(f" Total: {len(ref_agents) + len(ref_commands)} files")
print(f"\nTotal commands indexed: {len(all_commands)}")
print(f"\nBy category:")
for cat in sorted(by_category.keys()):
total = sum(len(cmds) for cmds in by_category[cat].values())
@@ -407,5 +463,9 @@ def main():
print(f"\nEssential commands: {len(essential)}")
print("\n=== Index Rebuild Complete ===")
print(f"Reference: {REFERENCE_DIR}")
print(f"Index: {INDEX_DIR}")
if __name__ == '__main__':
main()