بنقرة واحدة
meridian
Meridian 项目集成助手。当用户提到 Meridian、导航面板、看板配置、分析模块时触发。帮助用户通过 Claude Code 为 Meridian 仪表盘生成左侧导航、自定义面板和可视化模块。
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
Meridian 项目集成助手。当用户提到 Meridian、导航面板、看板配置、分析模块时触发。帮助用户通过 Claude Code 为 Meridian 仪表盘生成左侧导航、自定义面板和可视化模块。
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
分析 Skill 使用日志,输出频率排行、满意度趋势、低频 Skill 清单。每周运行一次。 触发词:"分析 Skill 使用情况"、"Skill 周报"、"哪些 Skill 用得多"、"看看 Skill 数据"。 依赖 skill-logger 写入的 skill_usage_log.jsonl 日志文件。
记录一次 Skill 使用情况到日志文件。每次用完某个 Skill 后调用,追加一条使用记录。 触发词:"记录这次使用"、"记录用了 xxx"、"log skill"、"记录一下"(在使用完某个 Skill 之后)。 用于追踪 Skill 使用频率和满意度,为 skill-analyzer 提供数据。
飞书知识库文档管理工具。支持查看知识库目录结构、创建和保存文档、读取多维表格内容。当用户说"保存到飞书"、"写入飞书知识库"、"发布到飞书"、"查看飞书目录"、"读取飞书表格"时触发。适用于将 Obsidian 文档同步到飞书知识库,或读取飞书多维表格数据。
Analyzes article structure, identifies positions requiring visual aids, generates illustrations with Type × Style two-dimension approach. Use when user asks to "illustrate article", "add images", "generate images for article", or "为文章配图".
Knowledge comic creator supporting multiple art styles and tones. Creates original educational comics with detailed panel layouts and sequential image generation. Use when user asks to create "知识漫画", "教育漫画", "biography comic", "tutorial comic", or "Logicomix-style comic".
Compresses images to WebP (default) or PNG with automatic tool selection. Use when user asks to "compress image", "optimize image", "convert to webp", or reduce image file size.
| name | meridian |
| description | Meridian 项目集成助手。当用户提到 Meridian、导航面板、看板配置、分析模块时触发。帮助用户通过 Claude Code 为 Meridian 仪表盘生成左侧导航、自定义面板和可视化模块。 |
一次只创建一个面板。 用户的每条指令只请求创建一个导航面板。绝对不要一次性为所有文件夹批量生成导航。每次只创建一个组件 + 注册到 page.tsx。
Meridian 是一个基于 Next.js 的本地 Web 应用,作为 Obsidian 知识库的可视化驾驶舱。
如果用户的 Obsidian Vault 中还没有 Meridian 项目代码(即找不到 05 工具箱/vault-pilot/ 目录),你需要从 GitHub 获取官方代码为你完成初次安装部署:
# 进入工具箱目录拉取代码
cd "05 工具箱"
git clone https://github.com/zephyrwang6/VaultPilot.git vault-pilot
cd vault-pilot
npm install
项目位置:05 工具箱/vault-pilot/(目录名为 vault-pilot,产品名为 Meridian)
启动方式:cd "05 工具箱/vault-pilot" && npm run dev -- --port 3001
访问地址:http://localhost:3001
vault-pilot/
├── app/
│ ├── page.tsx # 主页面(侧边栏 + 内容区)
│ ├── layout.tsx # 布局 + Inter 字体
│ ├── globals.css # 暗/浅双主题 + 玻璃态
│ ├── components/
│ │ ├── AgentPanel.tsx # Agent 面板(CLI + .claude.md + Skills)
│ │ ├── FoldersPanel.tsx # 文件夹面板(文件夹树 + 快捷指令)
│ │ ├── FolderAnalysisModal.tsx # 文件夹分析弹窗(4种视图)
│ │ ├── UsagePanel.tsx # Claude Code 用量统计
│ │ ├── DynamicPanel.tsx # 动态面板渲染器
│ │ └── Onboarding.tsx # 首次引导绑定
│ └── api/
│ ├── config/route.ts # 配置读写 + .claude.md
│ ├── vault/route.ts # 文件夹结构扫描
│ ├── skills/route.ts # Skills 库扫描
│ ├── claude/route.ts # 打开终端执行
│ ├── pick-folder/route.ts # 原生文件夹选择器
│ ├── folder-analysis/route.ts # 文件夹深度分析
│ └── usage/route.ts # Claude Code 用量数据
└── lib/types.ts # 核心类型定义
面板设计参考 05 工具箱/obsidian-dashboard/my-app/app/components/desktop/ 下的组件:
| 面板 | 参考文件 | 功能 |
|---|---|---|
| 总览 | OverviewPanel.tsx | 数据概况、最近文档、日程、任务 |
| 创作 | ContentPanel.tsx | 独立文章列表、专栏章节列表 |
| 计划 | GoalsPanel.tsx | 年度目标、周计划进度 |
| 复盘 | ReviewPanel.tsx | 本周产出统计进度条、完成任务 |
注意: 参考的是设计风格和功能布局。Meridian 使用自己的 CSS 类(glass-card 等),不用 shadcn/ui。数据必须从本地文件系统动态读取,不要硬编码。
| 类名 | 用途 |
|---|---|
glass-card | 玻璃态卡片容器 |
rounded-2xl p-5 | 标准卡片内边距 |
stat-value | 大号数字 |
text-violet-400 | 主色调图标 |
text-muted-foreground | 次要文字 |
bg-secondary/30 | 悬停/背景 |
stagger-children | 子元素交错动画 |
gradient-text | 渐变文字 |
| 端点 | 方法 | 说明 |
|---|---|---|
/api/config | GET | 读取配置 + .claude.md |
/api/vault | GET | 扫描 Vault 文件夹结构 |
/api/folder-analysis?path=... | GET | 深度分析指定文件夹 |
/api/skills | GET | 读取 Skills 列表 |
/api/usage | GET | Claude Code 用量统计 |
每次创建一个面板,按以下步骤:
# 读取 obsidian-dashboard 对应面板的设计
cat "05 工具箱/obsidian-dashboard/my-app/app/components/desktop/OverviewPanel.tsx"
在 05 工具箱/vault-pilot/app/components/ 下创建 XxxPanel.tsx:
/api/folder-analysis)或读文件获取组件模板:
'use client';
import { useState, useEffect } from 'react';
import { Loader2, SomeIcon } from 'lucide-react';
interface PanelProps {
vaultPath: string;
}
export function XxxPanel({ vaultPath }: PanelProps) {
const [data, setData] = useState<any>(null);
const [loading, setLoading] = useState(true);
useEffect(() => {
fetch(`/api/folder-analysis?path=${encodeURIComponent(vaultPath + '/目标文件夹')}`)
.then(r => r.json())
.then(d => { setData(d); setLoading(false); })
.catch(() => setLoading(false));
}, [vaultPath]);
if (loading) return <div className="flex justify-center py-16"><Loader2 className="h-6 w-6 animate-spin text-muted-foreground" /></div>;
return (
<div className="space-y-5 stagger-children">
<div className="grid grid-cols-3 gap-3">
<div className="glass-card rounded-xl p-4">
<div className="stat-value text-2xl">数值</div>
<div className="text-[10px] text-muted-foreground">标签</div>
</div>
</div>
<div className="glass-card rounded-2xl p-5">
<div className="text-sm font-medium mb-3">标题</div>
<div className="space-y-1.5">{/* 列表项 */}</div>
</div>
</div>
);
}
修改 05 工具箱/vault-pilot/app/page.tsx,需要改 3 处:
// 1. 导入(在文件顶部 import 区域)
import { XxxPanel } from './components/XxxPanel';
// 2. 在 defaultNavItems 数组添加(约第 22 行)
{ id: 'xxx', label: '面板名', icon: SomeIcon },
// 3. 在 renderPanel() 的 switch 中添加 case(约第 107 行)
case 'xxx':
return <XxxPanel vaultPath={config.vaultPath} />;
完成后告知用户:已创建「XXX」面板,请刷新 http://localhost:3001 查看。