Skills 系统
Skills 系统
Skills 是 Memo 的扩展机制,允许你为特定领域或任务类型添加专业知识和最佳实践。通过 Skills,Memo 可以在处理特定类型的任务时加载额外的指导和上下文。
什么是 Skill#
Skill 是一组存储在 SKILL.md 文件中的本地指令,包含:
- 名称和描述:用于识别和匹配 Skill
- 使用规则:何时以及如何应用该 Skill
- 最佳实践:领域特定的知识和模式
- 参考资源:相关的代码示例、模板和文档
Skill 文件结构
---
name: skill-name
description: 描述这个 Skill 的用途
metadata:
tags: tag1, tag2, tag3
---
# Skill 名称
何时使用#
描述在什么场景下应该使用这个 Skill。
如何使用#
- 链接到规则文件或参考文档
- 提供代码示例
- 说明最佳实践
Skills 发现机制#
Memo 在启动时自动扫描以下位置来发现 Skills:
项目级 Skills
.<agent>/skills目录(例如:.agents/skills、.claude/skills、.codex/skills)- 扫描深度:最多 6 层子目录
用户级 Skills
$MEMO_HOME/skills(默认为~/.memo/skills)
排除的目录
.git/和node_modules/- Memo 主目录外的
~/.xxx/skills隐藏目录
创建 Skill#
1. 选择位置
项目特定 Skill:放在项目根目录的 .codex/skills/<skill-name>/SKILL.md
全局 Skill:放在 ~/.memo/skills/<skill-name>/SKILL.md
2. 编写 SKILL.md
---
name: react-hooks
description: Best practices for React Hooks usage and custom hooks creation
---
# React Hooks Best Practices
When to use#
Use this skill when working with React Hooks, including:
- Built-in hooks (useState, useEffect, useContext, etc.)
- Custom hooks creation
- Hooks performance optimization
Rules#
- useEffect dependencies: Always specify the complete dependency array
- Custom hooks naming: Start with
useprefix - Cleanup side effects: Return cleanup functions in useEffect when needed
References#
### 3. 添加规则文件(可选)
```md
<!-- .codex/skills/react-hooks/rules/useEffect.md -->
# useEffect Best Practices
Dependency Array Rules#
- Include all values from the component scope used inside useEffect
- Use functional updates when current state is needed
- Consider using useCallback for function dependencies
Common Pitfalls#
- Missing dependencies causing stale closures
- Infinite loops from object/array dependencies
- Race conditions in async effects
使用 Skills#
显式调用
在提示中通过 $skill-name 语法显式调用:
请帮我优化这个组件的 hooks 使用 $react-hooks
使用最佳实践重构这段代码 $doc-writing
自动匹配
当任务描述与某个 Skill 的描述高度匹配时,Memo 会自动建议使用该 Skill。
查看可用 Skills
在会话中,Memo 会将所有发现的 Skills 列在系统提示中:
Skills#
A skill is a set of local instructions to follow that is stored in a SKILL.md file...
Available skills
- react-hooks: Best practices for React Hooks usage...
- doc-writing: Generate and update technical documentation...
配置默认激活 Skills#
在 config.toml 中设置默认激活的 Skills:
# 激活所有发现的 Skills(默认)
# active_skills 未设置时
# 不激活任何 Skill
active_skills = []
# 指定激活特定的 Skills
active_skills = [
"/absolute/path/to/.codex/skills/react-hooks/SKILL.md",
"/absolute/path/to/.memo/skills/doc-writing/SKILL.md"
]
注意:active_skills 存储的是 SKILL.md 文件的绝对路径。
在 Web UI 中管理 Skills#
启动 Web 控制台:
memo web --open
在侧边栏的 Skills 页面可以:
- 查看所有已发现的 Skills
- 创建新的 Skill(自动生成目录结构和模板)
- 删除 Skill
- 切换激活状态
- 查看 Skill 详情
Skills 的激活状态变更会自动保存到 config.toml 中。
Skills 使用规则#
Memo 内置以下 Skills 使用规则:
-
触发规则:
- 用户明确命名 Skill(使用
$SkillName或纯文本) - 任务描述与某个 Skill 的描述明显匹配
- 多个提及意味着全部使用
- 用户明确命名 Skill(使用
-
使用方法(渐进式披露):
- 首先读取 SKILL.md 了解工作流程
- 当 SKILL.md 引用相对路径时,优先相对于 Skill 目录解析
- 如果存在
scripts/目录,优先运行或修补脚本 - 如果存在
assets/或模板,优先复用而非从头创建
-
上下文管理:
- 保持上下文精简:总结长段落而不是粘贴全部
- 仅在需要时加载额外文件
- 避免深度引用追踪
-
安全与回退:
- 如果 Skill 无法干净地应用,说明问题并选择次优方案继续
实用技巧#
组织复杂的 Skills
.skills/
└── my-skill/
├── SKILL.md # 主入口
├── rules/ # 规则文档
│ ├── rule1.md
│ └── rule2.md
├── examples/ # 代码示例
│ ├── example1.ts
│ └── example2.ts
├── scripts/ # 可执行脚本
│ └── helper.js
└── assets/ # 模板和资源
└── template.tsx
Skill 命名建议
- 使用小写字母和连字符(kebab-case)
- 名称应清晰描述领域或用途
- 避免与内置工具名称冲突
- 长度限制:64 个字符
描述编写建议
- 简洁说明 Skill 的用途
- 包含关键词以便自动匹配
- 长度限制:1024 个字符
故障排除#
Skill 未被识别
- 确认 SKILL.md 存在且文件名为大写
- 检查 frontmatter 是否包含
name和description - 验证 Skill 目录在扫描路径内
- 重启 Memo 或创建新会话
Skill 内容过长
- 将详细内容拆分到 rules/ 子目录
- 在 SKILL.md 中只保留概述和链接
- 使用渐进式披露,按需加载具体内容
Skill 未生效
- 检查
config.toml中的active_skills配置 - 在 Web UI 中确认 Skill 处于激活状态
- 确保在提示中正确使用了
$skill-name语法