mcpField
S
skill-system-creator

skill-system-creator

github.com/arthur0824haoAgent 工作流45 次安装
代码仓库

关于 skill-system-creator

skill-system-creator 为 Claude 提供结合记忆与图谱上下文的技能构思流程,也保留技能初始化和打包工具说明。

主要功能

  1. 01先构思再设计技能
  2. 02利用记忆与图谱上下文
  3. 03按规范、测试、开发推进
  4. 04提供技能初始化与打包指引

适用场景

  1. 01从具体示例设计技能
  2. 02定义并验证技能行为规范
  3. 03准备技能包并持续迭代

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/arthur0824hao/skills --skill skill-system-creator

安装后在 Claude Code 中输入/skill-system-creator确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

LICENSE.txt
SKILL.behavior.yaml
SKILL.spec.yaml
references/
gate_rules.creator.yaml
output-patterns.md
workflows.md
scripts/
creator_tool.py
init_skill.py
package_skill.py
quick_validate.py
test_creator_tool.py

详细介绍

技能创建器

此技能提供一个以头脑风暴为先的探索界面,结合记忆和图谱上下文,同时仍将旧版技能初始化/打包工具保留为子命令。

关于技能

技能是模块化的独立软件包,通过提供专业知识、工作流和工具来扩展 Claude 的能力。可以把它们看作特定领域或任务的“入门指南”——它们能将 Claude 从通用 Agent 转变为具备流程知识的专业 Agent,而这些知识并非任何模型都能完全掌握。

技能提供的内容
  1. 专业工作流 —— 特定领域的多步骤流程
  2. 工具集成 —— 使用特定文件格式或 API 的说明
  3. 领域专业知识 —— 公司特定的知识、架构、业务逻辑
  4. 捆绑资源 —— 用于复杂重复任务的脚本、参考资料和资源文件

核心原则

简洁至关重要

上下文窗口是公共资源。技能与 Claude 需要处理的其他所有内容共享上下文窗口:系统提示词、对话历史、其他技能的元数据,以及用户的实际请求。

默认假设:Claude 已经非常聪明。 只添加 Claude 尚不具备的上下文。审视每条信息:“Claude 真的需要这个解释吗?”以及“这一段值得占用这些 token 吗?”

相比冗长的解释,优先使用简洁的示例。

设定适当的自由度

根据任务的脆弱性和可变性来调整具体程度:

高自由度(基于文本的指令):适用于存在多种有效方法、决策取决于上下文,或需要通过启发式方法指导操作的情况。

中自由度(带参数的伪代码或脚本):适用于存在首选模式、允许一定变化,或配置会影响行为的情况。

低自由度(具体脚本,参数少):适用于操作脆弱且容易出错、一致性至关重要,或必须遵循特定顺序的情况。

把 Claude 想象成在探索一条路径:悬崖边的窄桥需要明确的护栏(低自由度),而开阔的田野则允许多种路线(高自由度)。

技能的组成

每项技能都包含一个必需的 SKILL.md 文件,以及可选的捆绑资源:

skill-name/
├── SKILL.md (required)
│   ├── YAML frontmatter metadata (required)
│   │   ├── name: (required)
│   │   └── description: (required)
│   └── Markdown instructions (required)
└── Bundled Resources (optional)
    ├── scripts/          - Executable code (Python/Bash/etc.)
    ├── references/       - Documentation intended to be loaded into context as needed
    └── assets/           - Files used in output (templates, icons, fonts, etc.)
SKILL.md(必需)

每个 SKILL.md 都包含:

  • Frontmatter(YAML):包含 name 和 description 字段。这是 Claude 用于判断何时使用该技能的唯一字段,因此清晰、全面地描述技能是什么以及何时应使用它非常重要。
  • 正文(Markdown):使用该技能的说明和指南。只有在技能触发后(如果触发),才会加载。
捆绑资源(可选)
脚本(scripts/)

用于需要确定性可靠性或会反复重写的任务的可执行代码(Python/Bash 等)。

  • 何时纳入:同一代码会被反复重写,或需要确定性可靠性时
  • 示例:用于 PDF 旋转任务的 scripts/rotate_pdf.py
  • 优点:节省 token、结果确定,无需加载到上下文中即可执行
  • 注意:Claude 可能仍需读取脚本,以便进行修补或针对特定环境作出调整
参考资料(references/)

按需加载到上下文中的文档和参考资料,用于为 Claude 的处理和思考提供信息。

  • 何时包含:当 Claude 在工作期间需要参考某些文档时
  • 示例:references/finance.md 用于财务 schema,references/mnda.md 用于公司 NDA 模板,references/policies.md 用于公司政策,references/api_docs.md 用于 API 规范
  • 使用场景:数据库 schema、API 文档、领域知识、公司政策、详细工作流指南
  • 优势:让 SKILL.md 保持精简,仅在 Claude 判断需要时加载
  • 最佳实践:如果文件较大(>10k 词),在 SKILL.md 中包含 grep 搜索模式
  • 避免重复:信息应只存在于 SKILL.md 或 references 文件中,而不是两者都有。除非信息确实是该 skill 的核心,否则优先放在 references 文件中以承载详细信息——这样既能保持 SKILL.md 精简,又能在不占用上下文窗口的情况下让信息可被发现。SKILL.md 中只保留必要的流程说明和工作流指导;将详细的参考材料、schema 和示例移到 references 文件中。
资产(assets/)

不打算加载到上下文中,而是在 Claude 生成的输出中使用的文件。

  • 何时包含:当 skill 需要用于最终输出的文件时
  • 示例:assets/logo.png 用于品牌资产,assets/slides.pptx 用于 PowerPoint 模板,assets/frontend/ 用于 HTML/React 样板代码,assets/font.ttf 用于字体排版
  • 使用场景:会被复制或修改的模板、图片、图标、样板代码、字体、示例文档
  • 优势:将输出资源与文档分离,使 Claude 无需将文件加载到上下文中即可使用它们
不应包含在 Skill 中的内容

一个 skill 只应包含直接支持其功能的文件。不要创建多余的文档或辅助文件,包括:

  • README
  • INSTALLATION_GUIDE.md
  • QUICK_REFERENCE.md
  • CHANGELOG.md
  • 等等。

skill 只应包含 AI Agent 完成手头工作所需的信息。它不应包含关于其创建过程、设置和测试步骤、面向用户的文档等辅助上下文。创建额外的文档文件只会增加杂乱和困惑。

渐进式披露设计原则

Skills 使用三级加载系统来高效管理上下文:

  1. 元数据(name + description) - 位于上下文中(约 100 词)
  2. SKILL.md 正文 - 当 skill 触发时(<5k 词)
  3. 捆绑资源 - 按 Claude 需要(不受限制,因为脚本可以在不读入上下文窗口的情况下执行)
渐进式披露模式

将 SKILL.md 正文控制在必要内容范围内,并保持在 500 行以内,以尽量减少上下文膨胀。接近此限制时,将内容拆分到单独的文件中。将内容拆分到其他文件时,务必在 SKILL.md 中引用这些文件,并清楚说明何时阅读,确保阅读该技能的人知道这些文件的存在及其用途。

核心原则: 当技能支持多个变体、框架或选项时,只在 SKILL.md 中保留核心工作流和选择指南。将特定变体的详细信息(模式、示例、配置)移至单独的参考文件中。

模式 1:高层指南与参考文件

# PDF Processing

## Quick start

Extract text with pdfplumber:
[code example]

## Advanced features

- **Form filling**: See [FORMS.md](FORMS.md) for complete guide
- **API reference**: See [REFERENCE.md](REFERENCE.md) for all methods
- **Examples**: See [EXAMPLES.md](EXAMPLES.md) for common patterns

Claude 仅在需要时加载 FORMS.md、REFERENCE.md 或 EXAMPLES.md。

模式 2:按领域组织

对于包含多个领域的技能,按领域组织内容,避免加载无关上下文:

bigquery-skill/
├── SKILL.md (overview and navigation)
└── reference/
    ├── finance.md (revenue, billing metrics)
    ├── sales.md (opportunities, pipeline)
    ├── product.md (API usage, features)
    └── marketing.md (campaigns, attribution)

用户询问销售指标时,Claude 只会读取 sales.md。

同样,对于支持多个框架或变体的技能,也应按变体组织:

cloud-deploy/
├── SKILL.md (workflow + provider selection)
└── references/
    ├── aws.md (AWS deployment patterns)
    ├── gcp.md (GCP deployment patterns)
    └── azure.md (Azure deployment patterns)

用户选择 AWS 时,Claude 只会读取 aws.md。

模式 3:条件式详细内容

展示基础内容,并链接到高级内容:

# DOCX Processing

## Creating documents

Use docx-js for new documents. See [DOCX-JS.md](DOCX-JS.md).

## Editing documents

For simple edits, modify the XML directly.

**For tracked changes**: See [REDLINING.md](REDLINING.md)
**For OOXML details**: See [OOXML.md](OOXML.md)

只有在用户需要相关功能时,Claude 才会读取 REDLINING.md 或 OOXML.md。

重要指南:

  • 避免多层嵌套引用——引用文件应与 SKILL.md 保持一层深度。所有引用文件都应由 SKILL.md 直接链接。
  • 组织较长的参考文件——对于超过 100 行的文件,在顶部加入目录,让 Claude 预览时能了解完整内容范围。

技能创建流程

技能创建遵循 Spec → Test → Develop 工作流:

  1. 通过具体示例了解技能
  2. 创建行为规范(通过 skill-system-behavior:create-spec 创建 SKILL.spec.yaml)
  3. 验证规范(skill-system-behavior:validate-spec)
  4. 定义验收测试(根据规范编写结构和行为测试)
  5. 初始化技能(运行 init_skill.py)
  6. 实现技能(资源 + SKILL.md——使测试通过)
  7. 验证结构测试(skill-system-behavior:verify-structural)
  8. 生成行为契约(skill-system-behavior:generate-contract)
  9. 打包技能(运行 package_skill.py)
  10. 根据实际使用情况进行迭代

请按顺序执行这些步骤;只有在有明确理由认为某一步不适用时,才可跳过。

为什么先写规范?
  • 契约优先:在编码前明确操作边界
  • 可测试:验收标准可以执行,而非只是一种期望
  • 防止范围蔓延:规范定义了包含哪些内容,其他内容一概不纳入
  • 自动生成文档:行为契约(Mermaid DAG)由规范生成,而非手动编写
步骤 1:通过具体示例了解技能

只有当技能的使用模式已经明确时,才跳过此步骤。即使处理现有技能,这一步仍然很有价值。

要创建有效的技能,必须清楚了解该技能的具体使用方式。这种理解可以来自用户提供的直接示例,也可以来自经用户反馈验证的生成示例。

例如,构建图像编辑器技能时,相关问题包括:

  • “图像编辑器技能应支持哪些功能?编辑、旋转,还有其他功能吗?”
  • “你能举一些使用此技能的例子吗?”
  • “我能想到用户可能会提出‘去除这张图片中的红眼’或‘旋转这张图片’之类的要求。你还能想到其他用法吗?”
  • “用户说什么时应该触发此技能?”

为避免让用户应接不暇,不要在一条消息中提出太多问题。先问最重要的问题,再根据需要追问,以便更好地了解需求。

当你清楚了解该技能应支持哪些功能时,即可结束此步骤。

第 2 步:规划可复用的技能内容

要将具体示例转化为有效的技能,请逐一分析每个示例:

  1. 思考如何从头开始完成该示例
  2. 找出在反复执行这些工作流时会用到哪些脚本、参考资料和资源

示例:创建 pdf-editor 技能来处理“帮我旋转这个 PDF”之类的请求时,分析表明:

  1. 每次旋转 PDF 都需要重新编写相同的代码
  2. 将 scripts/rotate_pdf.py 脚本存放在技能中会很有帮助

示例:为“帮我构建一个待办事项应用”或“帮我构建一个跟踪步数的仪表板”之类的请求设计 frontend-webapp-builder 技能时,分析表明:

  1. 编写前端 Web 应用每次都需要相同的 HTML/React 样板代码
  2. 将包含 HTML/React 样板项目文件的 assets/hello-world/ 模板存放在技能中会很有帮助

示例:创建 big-query 技能来处理“今天有多少用户登录了?”之类的请求时,分析表明:

  1. 每次查询 BigQuery 都需要重新查找表架构和关联关系
  2. 将记录表架构的 references/schema.md 文件存放在技能中会很有帮助

为确定技能的内容,请分析每个具体示例,并整理出要纳入的可复用资源清单:脚本、参考资料和资源。

第 3 步:初始化技能

此时,就可以实际创建技能了。

如果正在开发的技能已经存在,且需要进行迭代或打包,则跳过此步骤,继续下一步。

从头创建新技能时,务必运行 init_skill.py 脚本。该脚本会方便地生成新的技能模板目录,并自动包含技能所需的一切,使技能创建过程更加高效可靠。

用法:

scripts/init_skill.py <skill-name> --path <output-directory>

该脚本会:

  • 在指定路径创建技能目录
  • 生成包含正确 frontmatter 和 TODO 占位符的 SKILL.md 模板
  • 创建示例资源目录:scripts/、references/ 和 assets/
  • 在各目录中添加示例文件,可按需自定义或删除

初始化后,根据需要自定义或删除生成的 SKILL.md 和示例文件。

第 4 步:编辑技能

编辑(新生成或现有的)技能时,请记住,该技能是为另一个 Claude 实例而创建的。请纳入对 Claude 有帮助且不那么显而易见的信息。考虑哪些流程知识、特定领域的细节或可复用资源,能帮助另一个 Claude 实例更高效地完成这些任务。

PostgreSQL 数据库定位标准(使用 PostgreSQL 存储时必须遵循)
  • 优先通过 SKILL_PGDATABASE 确定数据库目标。
  • 如果未设置 SKILL_PGDATABASE,则拒绝使用环境中的 PGDATABASE。
  • 否则,根据项目名称自动检测,使用 <project>-memory。
  • 避免在运行时脚本中硬编码数据库名称。
学习经过验证的设计模式

根据技能需求,参阅以下实用指南:

  • 多步骤流程:参阅 references/workflows.md,了解顺序工作流和条件逻辑
  • 特定输出格式或质量标准:参阅 references/output-patterns.md,了解模板和示例模式

这些文件包含经过实践验证的最佳做法,有助于设计有效的技能。

从可复用的技能内容入手

开始实现时,先使用上文确定的可复用资源:scripts/、references/ 和 assets/ 文件。请注意,此步骤可能需要用户提供输入。例如,实现 brand-guidelines 技能时,用户可能需要提供品牌素材或模板,以便存入 assets/,也可能需要提供文档,以便存入 references/。

添加的脚本必须通过实际运行进行测试,以确保没有错误,且输出符合预期。如果有许多相似的脚本,只需测试其中有代表性的一部分,确保它们都能正常工作,同时兼顾完成时间。

删除技能不需要的所有示例文件和目录。初始化脚本会在 scripts/、references/ 和 assets/ 中创建示例文件以演示结构,但大多数技能并不需要全部这些文件。

更新 SKILL.md

**写作指南:**始终使用祈使式或不定式形式。

Frontmatter

使用 name 和 description 编写 YAML frontmatter:

  • name:技能名称
  • description:这是技能的主要触发机制,可帮助 Claude 了解何时使用该技能。
    • 同时说明技能的功能,以及应在什么特定情况下使用。
    • 将所有“何时使用”信息都写在这里,而不是正文中。只有触发技能后才会加载正文,因此在正文中添加“何时使用此技能”章节对 Claude 没有帮助。
    • docx 技能的描述示例:“全面的文档创建、编辑和分析,支持修订、批注、格式保留和文本提取。Claude 需要处理专业文档(.docx 文件)时使用,适用于:(1) 创建新文档;(2) 修改或编辑内容;(3) 处理修订;(4) 添加批注,或其他文档任务。”

不要在 YAML frontmatter 中包含任何其他字段。

正文

编写有关如何使用该技能及其捆绑资源的说明。

步骤 5:打包技能

技能开发完成后,必须将其打包为可分发的 .skill 文件并分享给用户。打包过程会先自动验证技能,确保其符合所有要求:

scripts/package_skill.py <path/to/skill-folder>

可选的输出目录指定方式:

scripts/package_skill.py <path/to/skill-folder> ./dist

打包脚本将:

  1. 自动验证技能,检查以下内容:

    • YAML frontmatter 格式和必需字段
    • 技能命名规范和目录结构
    • 描述的完整性和质量
    • 文件组织和资源引用
  2. 如果验证通过,则打包技能,创建一个以技能命名的 .skill 文件(例如 my-skill.skill),其中包含所有文件,并保留适用于分发的正确目录结构。.skill 文件是扩展名为 .skill 的 zip 文件。

如果验证失败,脚本会报告错误并退出,不会创建软件包。请修复所有验证错误,然后再次运行打包命令。

步骤 6:迭代

测试技能后,用户可能会要求改进。通常,这种情况会在刚使用完技能后发生,此时用户对技能表现的印象还很新鲜。

迭代工作流:

  1. 在实际任务中使用技能
  2. 留意遇到的困难或效率低下之处
  3. 确定应如何更新 SKILL.md 或捆绑资源
  4. 实施更改并再次测试
{
  "schema_version": "2.0",
  "id": "skill-system-creator",
  "version": "1.0.0",
  "capabilities": ["skill-create", "skill-validate", "skill-package", "artifact-gap-analysis", "artifact-generate", "artifact-brainstorm", "artifact-grill", "artifact-eval"],
  "effects": ["fs.read", "fs.write", "proc.exec"],
  "operations": {
    "init": {
      "description": "Initialize a new skill directory with SKILL.md template and resource folders.",
      "input": {
        "skill_name": { "type": "string", "required": true, "description": "Name for the new skill" },
        "output_dir": { "type": "string", "required": false, "description": "Directory to create skill in" }
      },
      "output": {
        "description": "Path to created skill directory",
        "fields": { "path": "string" }
      },
      "entrypoints": {
        "unix": ["python3", "scripts/init_skill.py", "{skill_name}", "--path", "{output_dir}"],
        "windows": ["python", "scripts/init_skill.py", "{skill_name}", "--path", "{output_dir}"]
      }
    },
    "package": {
      "description": "Validate and package a skill into a distributable .skill file.",
      "input": {
        "skill_path": { "type": "string", "required": true, "description": "Path to skill folder" }
      },
      "output": {
        "description": "Path to .skill package file",
        "fields": { "package_path": "string" }
      },
      "entrypoints": {
        "unix": ["python3", "scripts/package_skill.py", "{skill_path}"],
        "windows": ["python", "scripts/package_skill.py", "{skill_path}"]
      }
    },
    "suggest-artifacts": {
      "description": "Detect creator artifact gaps by reading behavior graph plus skills-index.json and returning ranked suggestions.",
      "input": {
        "repo_root": { "type": "string", "required": false, "description": "Repository root" }
      },
      "output": {
        "description": "Ranked artifact suggestions",
        "fields": { "suggestions": "array" }
      },
      "entrypoints": {
        "unix": ["python3", "scripts/creator_tool.py", "suggest-artifacts"],
        "windows": ["python", "scripts/creator_tool.py", "suggest-artifacts"]
      }
    },
    "generate": {
      "description": "Generate creator artifacts with deterministic template + validation (currently supports --type script).",
      "input": {
        "artifact_type": { "type": "string", "required": true, "description": "Artifact type; script supported" },
        "name": { "type": "string", "required": true, "description": "Artifact file name" },
        "output_dir": { "type": "string", "required": true, "description": "Output directory" },
        "force": { "type": "boolean", "required": false, "description": "Overwrite when target exists" }
      },
      "output": {
        "description": "Generation and validation result",
        "fields": { "artifact": "object", "validation": "object", "structural_validation": "object" }
      },
      "entrypoints": {
        "unix": ["python3", "scripts/creator_tool.py", "generate", "--type", "{artifact_type}", "--name", "{name}", "--output-dir", "{output_dir}"],
        "windows": ["python", "scripts/creator_tool.py", "generate", "--type", "{artifact_type}", "--name", "{name}", "--output-dir", "{output_dir}"]
      }
    },
    "brainstorm": {
      "description": "Run a context-aware brainstorm and write a decision doc.",
      "input": {
        "limit": { "type": "number", "required": false, "description": "Suggestion limit" },
        "memory_limit": { "type": "number", "required": false, "description": "Memory sample limit" },
        "mode": { "type": "string", "required": false, "description": "brainstorm or grill-me" },
        "topic": { "type": "string", "required": false, "description": "Optional brainstorm topic" }
      },
      "output": {
        "description": "Ranked brainstorm suggestions, Socratic prompts, summaries, and a decision doc",
        "fields": { "suggestions": "array", "prompts": "array", "decision_doc": "string" }
      },
      "entrypoints": {
        "unix": ["python3", "scripts/creator_tool.py", "brainstorm"],
        "windows": ["python", "scripts/creator_tool.py", "brainstorm"]
      }
    },
    "grill-me": {
      "description": "Run challenge-oriented Socratic stress-test and write a decision doc.",
      "input": {
        "limit": { "type": "number", "required": false, "description": "Suggestion limit" },
        "memory_limit": { "type": "number", "required": false, "description": "Memory sample limit" },
        "topic": { "type": "string", "required": false, "description": "Optional stress-test topic" }
      },
      "output": {
        "description": "Challenge-oriented prompts and a decision doc",
        "fields": { "suggestions": "array", "prompts": "array", "decision_doc": "string" }
      },
      "entrypoints": {
        "unix": ["python3", "scripts/creator_tool.py", "grill-me"],
        "windows": ["python", "scripts/creator_tool.py", "grill-me"]
      }
    },
    "eval": {
      "description": "Route artifact evaluation through skill-system-gate and emit pass/fail with improvement suggestions.",
      "input": {
        "artifact_path": { "type": "string", "required": true, "description": "Artifact path" },
        "rules_template": { "type": "string", "required": false, "description": "Optional rules template" }
      },
      "output": {
        "description": "Gate evaluation report",
        "fields": { "passed": "boolean", "gate_summary": "object", "improvement_suggestions": "array" }
      },
      "entrypoints": {
        "unix": ["python3", "scripts/creator_tool.py", "eval", "--artifact", "{artifact_path}"],
        "windows": ["python", "scripts/creator_tool.py", "eval", "--artifact", "{artifact_path}"]
      }
    }
  },
  "stdout_contract": {
    "last_line_json": true
  }
}

评论

支持 Markdown