Skills inspirai-bp
最佳实践管理 - 记录验证通过的解决方案,跨项目复用,避免重复踩坑。Triggers: '最佳实践', 'best practice', '经验记录', '解决方案', '踩坑记录', 'bp capture', 'bp apply', 'bp search'.
install
source · Clone the upstream repo
git clone https://github.com/openclaw/skills
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/openclaw/skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/alexxxiong/inspirai-bp" ~/.claude/skills/clawdbot-skills-inspirai-bp && rm -rf "$T"
manifest:
skills/alexxxiong/inspirai-bp/SKILL.mdsource content
inspirai-bp - 最佳实践管理
记录验证通过的解决方案,跨项目复用,避免重复踩坑。
数据目录
所有最佳实践存储在
$HOME/.inspirai/best-practices/ 下:
$HOME/.inspirai/best-practices/ ├── index.json # 索引文件 ├── wechat/ │ ├── scan-login.md │ └── mini-auth.md ├── typescript/ │ └── strict-config.md └── k8s/ └── rolling-update.md
bp capture - 记录最佳实践
交互式引导记录新的最佳实践。
使用方式
bp capture # 开始交互式记录
执行步骤
Step 1: 初始化数据目录
BP_DIR="$HOME/.inspirai/best-practices" INDEX_FILE="$BP_DIR/index.json" mkdir -p "$BP_DIR" # 如果 index.json 不存在,创建初始结构 if [ ! -f "$INDEX_FILE" ]; then echo '{"version":1,"practices":{}}' > "$INDEX_FILE" fi
Step 2: 收集基本信息
使用 AskUserQuestion 依次询问:
问题 1:标题
请输入最佳实践的标题(简洁描述方案): 示例:微信扫码登录方案、K8s 滚动更新配置
问题 2:分类
先读取现有分类:
cat "$INDEX_FILE" | jq -r '.practices[].category' | sort -u
请选择分类: - wechat(已有 3 个实践) - typescript(已有 2 个实践) - k8s(已有 5 个实践) - 新建分类...
问题 3:标签
请输入标签(用逗号分隔,用于搜索匹配): 示例:登录, 扫码, OAuth, 微信
Step 3: 收集内容
依次引导填写:
问题描述:
请简述遇到的问题场景(1-3 句话):
解决方案:
请描述解决方案的关键步骤(可以是编号列表):
关键代码(可选):
请粘贴关键代码片段(可选,直接回车跳过):
注意事项(可选):
有什么需要特别注意的坑吗?(可选,直接回车跳过):
相关链接(可选):
有参考文档链接吗?(可选,直接回车跳过):
Step 4: 生成 ID 和文件
ID 生成规则:
{category}-{slug}
- slug 从标题生成,取关键词,用连字符连接
- 示例:标题 "微信扫码登录方案" -> ID "wechat-scan-login"
CATEGORY="wechat" SLUG="scan-login" ID="${CATEGORY}-${SLUG}" FILE_PATH="$BP_DIR/$CATEGORY/$SLUG.md" DATE=$(date +%Y-%m-%d) mkdir -p "$BP_DIR/$CATEGORY"
Step 5: 写入文档
生成 Markdown 文件:
--- id: {id} title: {title} category: {category} tags: [{tags}] created: {date} updated: {date} --- ## 问题 {problem} ## 解决方案 {solution} ## 关键代码 {code} ## 注意事项 {notes} ## 相关链接 {links}
Step 6: 更新索引
读取
index.json,添加新条目:
{ "practices": { "{id}": { "title": "{title}", "category": "{category}", "tags": ["{tag1}", "{tag2}"], "file": "{category}/{slug}.md", "created": "{date}", "updated": "{date}" } } }
写回
index.json。
Step 7: 确认完成
已记录最佳实践: ID: {id} 标题: {title} 分类: {category} 标签: {tags} 文件: {file_path} 使用 bp apply {id} 可随时查看和应用此实践
bp apply - 应用最佳实践
读取指定的最佳实践,提供查看或应用选项。
使用方式
bp apply <id> # 应用指定 ID 的实践
执行步骤
Step 1: 验证 ID 存在
BP_DIR="$HOME/.inspirai/best-practices" INDEX_FILE="$BP_DIR/index.json" # 读取 index.json,检查 practices[id] 是否存在 # 如果不存在,提示并退出
ID 不存在时:
未找到 ID 为 "xxx" 的最佳实践 使用 bp search <keyword> 搜索 或使用 bp list 浏览所有实践
Step 2: 读取实践文档
# 从 index.json 获取文件路径 FILE_PATH="$BP_DIR/{category}/{slug}.md" cat "$FILE_PATH"
Step 3: 展示内容并提供选项
展示文档完整内容后,使用 AskUserQuestion 询问:
已加载「{title}」 请选择操作: - 直接开始实现(根据方案步骤指导实现) - 复制到项目文档(生成到 docs/references/{id}.md) - 仅查看,稍后再说
Step 4: 执行用户选择
直接开始实现:
- 展示解决方案步骤
- 逐步引导用户实现
复制到项目文档:
mkdir -p docs/references cp "$FILE_PATH" "docs/references/{id}.md" echo "已复制到 docs/references/{id}.md"
仅查看:
- 结束,不做额外操作
bp search - 搜索最佳实践
根据关键词在标题和标签中搜索匹配的最佳实践。
使用方式
bp search <keyword> # 单关键词搜索 bp search <kw1> <kw2> # 多关键词搜索(AND 逻辑)
执行步骤
Step 1: 检查数据目录
BP_DIR="$HOME/.inspirai/best-practices" INDEX_FILE="$BP_DIR/index.json" if [ ! -f "$INDEX_FILE" ]; then echo "尚未记录任何最佳实践。使用 bp capture 开始记录。" exit 0 fi
Step 2: 读取索引并搜索
读取
index.json,对每个实践检查:
- 标题是否包含关键词
- 标签数组是否包含关键词
匹配规则:
- 不区分大小写
- 多关键词时,所有关键词都需匹配(AND 逻辑)
- 按匹配度排序(标题匹配 > 标签匹配)
Step 3: 格式化输出
找到匹配时:
搜索 "微信 登录" - 找到 2 个匹配: 1. [wechat-scan-login] 微信扫码登录方案 标签: 登录, 扫码, OAuth, 微信 分类: wechat | 更新: 2026-01-28 2. [wechat-mini-auth] 小程序静默登录 标签: 登录, 小程序, 微信 分类: wechat | 更新: 2026-01-25 使用 bp apply <id> 查看详情并应用
无匹配时:
搜索 "xyz" - 未找到匹配 建议: - 尝试更短或不同的关键词 - 使用 bp list 浏览所有分类
bp list - 列出最佳实践
列出已记录的最佳实践,支持按分类筛选。
使用方式
bp list # 显示分类统计 bp list <category> # 列出指定分类下的实践
执行步骤
Step 1: 检查数据目录
BP_DIR="$HOME/.inspirai/best-practices" INDEX_FILE="$BP_DIR/index.json" if [ ! -f "$INDEX_FILE" ]; then echo "尚未记录任何最佳实践。使用 bp capture 开始记录。" exit 0 fi
Step 2: 读取索引
cat "$INDEX_FILE"
Step 3: 格式化输出
无参数时 - 显示分类统计:
最佳实践统计: 分类 数量 ───────────────── wechat 3 typescript 2 k8s 5 ───────────────── 总计 10 使用 bp list <category> 查看具体分类
带参数时 - 列出该分类下的实践:
[wechat] 分类下的最佳实践: ID 标题 更新时间 ─────────────────────────────────────────────────────── wechat-scan-login 微信扫码登录方案 2026-01-28 wechat-mini-auth 小程序静默登录 2026-01-25 wechat-pay 微信支付集成 2026-01-20 使用 bp apply <id> 查看详情并应用
分类不存在时:
未找到分类 "xxx" 已有分类:wechat, typescript, k8s 使用 bp list 查看所有分类
bp update - 更新最佳实践
加载已有实践,引导更新内容。
使用方式
bp update <id> # 更新指定 ID 的实践
执行步骤
Step 1: 验证 ID 存在
BP_DIR="$HOME/.inspirai/best-practices" INDEX_FILE="$BP_DIR/index.json" # 读取 index.json,检查 practices[id] 是否存在
ID 不存在时:
未找到 ID 为 "xxx" 的最佳实践 使用 bp search <keyword> 搜索 或使用 bp list 浏览所有实践
Step 2: 读取现有内容
FILE_PATH="$BP_DIR/{category}/{slug}.md" cat "$FILE_PATH"
展示当前内容给用户。
Step 3: 询问更新内容
当前内容已加载。请描述需要更新的内容: 你可以: - 补充新的注意事项 - 更新解决方案步骤 - 添加代码片段 - 修正错误信息 请输入更新内容:
Step 4: 应用更新
根据用户描述,修改文档相应部分。
更新 frontmatter 中的
updated 字段:
updated: {today}
Step 5: 更新索引
更新
index.json 中对应条目的 updated 字段。
Step 6: 确认完成
已更新「{title}」 更新时间: {date} 文件: {file_path} 使用 bp apply {id} 查看更新后的内容
bp delete - 删除最佳实践
确认后删除指定的最佳实践。
使用方式
bp delete <id> # 删除指定 ID 的实践
执行步骤
Step 1: 验证 ID 存在
BP_DIR="$HOME/.inspirai/best-practices" INDEX_FILE="$BP_DIR/index.json" # 读取 index.json,检查 practices[id] 是否存在
ID 不存在时:
未找到 ID 为 "xxx" 的最佳实践 使用 bp list 浏览所有实践
Step 2: 显示实践信息并确认
即将删除: ID: {id} 标题: {title} 分类: {category} 创建时间: {created} 此操作不可恢复!确认删除吗? - 确认删除 - 取消
Step 3: 执行删除
用户确认后:
# 删除文档文件 rm "$BP_DIR/{category}/{slug}.md" # 检查分类目录是否为空,为空则删除 if [ -z "$(ls -A $BP_DIR/{category})" ]; then rmdir "$BP_DIR/{category}" fi
从
index.json 中移除对应条目,写回文件。
Step 4: 确认完成
已删除「{title}」
用户取消时:
已取消删除操作