with one click
sync-products
// 产品矩阵同步。当用户说"同步产品"、"添加产品"、"更新产品"、"产品引流"、"sync products"时使用此技能。管理所有产品信息并同步到各文档站点,实现互相引流。
// 产品矩阵同步。当用户说"同步产品"、"添加产品"、"更新产品"、"产品引流"、"sync products"时使用此技能。管理所有产品信息并同步到各文档站点,实现互相引流。
自动生成更新日志。当用户说"生成更新日志"、"changelog"、"版本记录"、"更新记录"时使用此技能。
WD UI 组件文档专用生成器。当用户说"写组件文档"、"WD组件"、"组件文档"时使用此技能。
文档质量审查,检查准确性、规范性、完整性。当用户说"审查文档"、"检查文档质量"、"review"时使用此技能。
跨模块文档内容搜索与引用分析。当用户说"搜索文档"、"哪些文档提到"、"查找文档"时使用此技能。
文档覆盖率统计与健康报告。当用户说"文档统计"、"覆盖率"、"文档状态"、"stats"时使用此技能。
按项目规范撰写新文档页。当用户说"写文档"、"新建文档"、"添加文档"、"写一篇文档"时使用此技能。
| name | sync-products |
| description | 产品矩阵同步。当用户说"同步产品"、"添加产品"、"更新产品"、"产品引流"、"sync products"时使用此技能。管理所有产品信息并同步到各文档站点,实现互相引流。 |
| argument-hint | [add|update|sync|list] [--product-id] [--dry-run] |
| allowed-tools | Bash, Read, Glob, Grep, Edit, Write, Agent, AskUserQuestion |
你是产品矩阵管理助手,负责维护所有产品信息并同步到各文档站点,实现产品间的互相引流。
产品数据存储在 products.json 文件中(与本 SKILL.md 同目录):
.claude/skills/sync-products/products.json$ARGUMENTS 支持以下命令:
list:列出当前所有产品信息add:交互式添加新产品update <product-id>:更新指定产品的信息sync:将产品数据同步到所有文档站点(默认行为)--dry-run:只预览变更,不实际修改文件listproducts.json| ID | 名称 | 主题色 | 官网 | 文档站路径 |
addproducts.jsonmy-new-product)products.jsonsync 命令同步到所有站点update <product-id>products.json,找到指定产品products.jsonsync 命令同步到所有站点sync(默认)这是核心同步逻辑。对每个产品的文档站点执行以下操作:
cat ".claude/skills/sync-products/products.json"
遍历 products.json 中的每个产品,以该产品的 site.docsPath 为目标站点:
规则:每个站点的产品页面排除自身,只展示其他产品。
对每个站点,执行以下操作:
检查 {docsPath}/{themePath}/components/AProductCard.vue 是否存在:
源:D:/desktop/my/framework/ruoyi-plus-uniapp/ruoyi-plus-uniapp-docs/docs/.vitepress/theme/components/AProductCard.vue
目标:{docsPath}/{themePath}/components/AProductCard.vue
检查 {docsPath}/{themePath}/index.ts:
检查 {docsPath}/{stylePath}:
.product-preview-card 样式的文件.product-preview-card 样式,没有则追加text-decoration: none !important 规则根据产品数据,为该站点生成 {docsPath}/products.md:
# 更多产品
**抓蛙师出品** — 覆盖 AI 效率、全栈开发、智能编程、桌面应用等场景
---
<div class="products-grid">
{对每个排除自身的产品,生成 AProductCard 组件调用}
</div>
---
<div class="products-footer">
<p>以上产品均由 <strong>抓蛙师</strong> 独立开发维护,如有合作意向或技术咨询,欢迎联系</p>
<p>微信/QQ:<strong>770492966</strong> | 官网:<a href="https://ruoyi.plus" target="_blank">ruoyi.plus</a></p>
</div>
<style>
.products-grid { display: flex; flex-direction: column; gap: 24px; margin: 32px 0; }
.products-footer { text-align: center; padding: 32px 0 16px; color: var(--vp-c-text-2); font-size: 14px; }
.products-footer p { margin: 4px 0; }
.products-footer a { color: var(--vp-c-brand-1); text-decoration: none; }
.products-footer a:hover { text-decoration: underline; }
</style>
每个 AProductCard 的生成格式:
<AProductCard
icon="{product.icon}"
name="{product.name}"
slogan="{product.slogan}"
description="{product.description}"
theme="{product.theme}"
{badge属性,仅在非空时添加}
:highlights="[
'{highlight1}',
'{highlight2}',
...
]"
:actions="[
{ text: '{action.text}', link: '{action.link}' },
...
]"
/>
在首页中查找 ## 🎯 更多产品 区块:
## 🎯 更多产品 到下一个 ## 之前)首页预览区块的生成格式:
## 🎯 更多产品
抓蛙师出品,覆盖 AI 效率、全栈开发、智能编程、桌面应用等场景
<div style="display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; margin: 30px 0;">
{对每个排除自身的产品,生成预览卡片}
</div>
每个预览卡片的格式:
<a href="{product.actions[0].link}" target="_blank" rel="noopener noreferrer" class="product-preview-card">
<div style="font-size: 40px; margin-bottom: 12px;">{product.icon}</div>
<h4 style="margin: 0 0 8px; font-size: 18px; color: var(--vp-c-text-1);">{product.name}</h4>
<p style="margin: 0 0 8px; font-size: 13px; color: {product.preview.color}; font-weight: 500;">{product.preview.tagline}</p>
<p style="margin: 0; font-size: 13px; color: var(--vp-c-text-2); line-height: 1.6;">{product.preview.summary}</p>
</a>
注意:如果排除自身后产品数量不是3的倍数,可以调整 grid 列数为 repeat(auto-fit, minmax(250px, 1fr))。
检查 {docsPath}/{configPath} 的 nav 数组:
更多产品 链接,跳过{ text: '更多产品', link: '/products' }## 🔄 产品矩阵同步完成
| 站点 | products.md | index.md | 导航栏 | 组件 |
|------|------------|----------|--------|------|
| {站点名} | ✅ 已更新 | ✅ 已更新 | ✅ 已有 | ✅ 已有 |
| ... | ... | ... | ... | ... |
**产品总数**: {N} 个
**同步站点**: {M} 个
**每个站点展示**: 排除自身的 {N-1} 个产品