NBL企业技能构造规范与开发指南。用于在 workspace 中创建符合NBL企业标准的 skill,提供标准化的目录结构、脚本复杂度决策树和最佳实践指导。不执行安装操作,仅在 workspace 创建供用户调试和开发的 skill 目录结构。
How this skill is triggered — by the user, by Claude, or both
Slash command
/nbl-skill-constructor:nbl-skill-constructorThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
此技能根据用户的初始需求,在指定目录中搭建完整的 skill 目录结构,并完成初步的功能实现,让用户可以在 workspace 中直接测试和开发新 skill。
此技能根据用户的初始需求,在指定目录中搭建完整的 skill 目录结构,并完成初步的功能实现,让用户可以在 workspace 中直接测试和开发新 skill。
这是开发工具,不是安装工具。 此技能仅在 workspace 创建 skill 目录结构,供用户进行开发和调试。不会执行任何安装操作。
安装流程是独立的: 当用户确认 skill 开发完成并准备安装时,需要主动发起安装请求(例如:"帮我打包并安装这个 skill")。此时 agent 才会执行打包和安装操作。
技能是模块化的、自包含的软件包,通过提供专业技能、工作流程和工具来扩展 Claude 的能力。可以将它们视为特定领域或任务的"入职指南"——它们将 Claude 从通用代理转变为配备程序性知识的专业化代理,这是任何模型都无法完全具备的。
上下文窗口是公共资源。技能与 Claude 需要的其他内容共享上下文窗口:系统提示词、对话历史、其他技能的元数据以及实际的用户请求。
默认假设:Claude 已经非常智能。 只添加 Claude 尚未具备的上下文。质疑每一条信息:"Claude 真的需要这个解释吗?"以及"这一段证明其 token 成本是合理的吗?"
优先使用简洁的示例而不是冗长的解释。
将特异性级别与任务的脆弱性和变异性相匹配:
高自由度(基于文本的说明):当多种方法都有效、决策取决于上下文或启发式方法指导时使用。
中等自由度(带参数的伪代码或脚本):当存在首选模式、允许某些变化或配置影响行为时使用。
低自由度(特定脚本,极少参数):当操作脆弱且容易出错、一致性至关重要或必须遵循特定序列时使用。
将 Claude 视为在探索路径:有悬崖的狭窄桥梁需要特定的护栏(低自由度),而旷野允许许多路线(高自由度)。
每个技能都包含一个必需的 SKILL.md 文件和可选的捆绑资源:
skill-name/
├── SKILL.md (必需)
│ ├── YAML frontmatter 元数据 (必需)
│ │ ├── name: (必需)
│ │ └── description: (必需)
│ └── Markdown 说明 (必需)
└── 捆绑资源 (可选)
├── scripts/ - 可执行代码 (Python/Bash/等)
├── references/ - 旨在按需加载到上下文中的文档
└── assets/ - 输出中使用的文件(模板、图标、字体等)
每个 SKILL.md 包含:
name 和 description 字段。这些是 Claude 读取以确定何时使用该技能的唯一字段,因此在描述技能是什么以及何时应使用它时,清晰和全面非常重要。scripts/)用于需要确定性可靠性或重复重写的任务的可执行代码(Python/Bash/等)。
脚本复杂度决策树:
选择适当的脚本方案取决于任务的复杂度:
简单任务 - 系统 Python3 或 Bash 即可满足
os, json, re, pathlib)scripts/ 目录#!/usr/bin/env python3 或 #!/bin/bashpython3 scripts/your_script.py中等复杂度 - 需要第三方依赖但工程规模小
pandas, requests, pillow)scripts/ 目录下使用 uv 创建 Python 项目scripts/pyproject.toml 中定义依赖scripts/ 目录下直接放置脚本文件uv run --project scripts/ python scripts/main.py 执行skill-name/
├── SKILL.md
└── scripts/
├── pyproject.toml # uv 项目配置
├── main.py # 主入口脚本
└── helper.py # 可选的其他脚本
uv run --project scripts/ python scripts/main.py高复杂度 - 大型项目或需要 CLI 接口
scripts/ 目录下使用 uv 创建完整的 Python 项目scripts/pyproject.toml 中定义入口点(entry points)uv tool install --editable scripts/ 安装为系统 CLI 工具skill-name/
├── SKILL.md
├── scripts/
│ ├── pyproject.toml # 包含 [project.scripts] 入口点
│ ├── skill_name/ # 包代码
│ │ ├── __init__.py
│ │ ├── __main__.py
│ │ ├── cli.py # CLI 入口
│ │ ├── commands/ # 子命令模块
│ │ ├── core/ # 核心逻辑
│ │ └── ... # 其他模块
│ └── ... 其他辅助脚本
├── assets/
└── references/
uv tool install --editable scripts/my-skill-command --help)或 python -m skill_namescripts/ 下,与 skill 的 assets/ 和 references/ 目录分离清晰通用原则:
references/)文档和参考资料,旨在按需加载到上下文中以告知 Claude 的过程和思考。
references/finance.md、用于公司 NDA 模板的 references/mnda.md、用于公司策略的 references/policies.md、用于 API 规范的 references/api_docs.mdassets/)不打算加载到上下文中的文件,而是在 Claude 产生的输出中使用。
assets/logo.png、用于 PowerPoint 模板的 assets/slides.pptx、用于 HTML/React 样板的 assets/frontend-template/、用于排版的 assets/font.ttf技能应仅包含直接支持其功能的基本文件。不要创建多余的文档或辅助文件,包括:
技能应仅包含 AI 代理完成手头工作所需的信息。它不应包含有关创建它的过程的辅助上下文、设置和测试程序、面向用户的文档等。创建额外的文档文件只会增加混乱和混淆。
技能使用三级加载系统来高效管理上下文:
保持 SKILL.md 正文为基本内容,并控制在 500 行以内,以最小化上下文膨胀。在接近此限制时,将内容拆分为单独的文件。将内容拆分到其他文件时,从 SKILL.md 引用它们并清楚地描述何时读取它们非常重要,以确保技能的读者知道它们的存在以及何时使用它们。
关键原则:当技能支持多个变体、框架或选项时,仅在 SKILL.md 中保留核心工作流程和选择指导。将变体特定的细节(模式、示例、配置)移动到单独的参考资料文件中。
模式 1:高级指南与参考资料
# PDF 处理
## 快速开始
使用 pdfplumber 提取文本:
[代码示例]
## 高级功能
- **表单填充**:有关完整指南,请参阅 [FORMS.md](FORMS.md)
- **API 参考**:有关所有方法,请参阅 [REFERENCE.md](REFERENCE.md)
- **示例**:有关常见模式,请参阅 [EXAMPLES.md](EXAMPLES.md)
Claude 仅在需要时加载 FORMS.md、REFERENCE.md 或 EXAMPLES.md。
模式 2:特定领域的组织
对于具有多个领域的技能,按领域组织内容以避免加载不相关的上下文:
bigquery-skill/
├── SKILL.md (概览和导航)
└── reference/
├── finance.md (收入、计费指标)
├── sales.md (机会、管道)
├── product.md (API 使用、功能)
└── marketing.md (活动、归因)
当用户询问销售指标时,Claude 仅读取 sales.md。
同样,对于支持多个框架或变体的技能,按变体组织:
cloud-deploy/
├── SKILL.md (工作流程 + 提供商选择)
└── references/
├── aws.md (AWS 部署模式)
├── gcp.md (GCP 部署模式)
└── azure.md (Azure 部署模式)
当用户选择 AWS 时,Claude 仅读取 aws.md。
模式 3:条件细节
显示基本内容,链接到高级内容:
# DOCX 处理
## 创建文档
使用 docx-js 创建新文档。请参阅 [DOCX-JS.md](DOCX-JS.md)。
## 编辑文档
对于简单的编辑,直接修改 XML。
**对于修订**:请参阅 [REDLINING.md](REDLINING.md)
**对于 OOXML 细节**:请参阅 [OOXML.md](OOXML.md)
Claude 仅在用户需要这些功能时读取 REDLINING.md 或 OOXML.md。
重要指南:
技能开发分为两个阶段:
当用户确认 skill 开发完成并准备安装时,需要主动发起安装请求。此时 agent 会执行:
重要: 步骤 3-5 由本技能支持。步骤 6-7 需要用户主动发起安装请求后执行。
按顺序遵循这些步骤,仅在有明显不适用理由时跳过。
仅当技能的使用模式已经清楚理解时才跳过此步骤。即使使用现有技能,它仍然有价值。
要创建有效的技能,清楚地了解如何使用该技能的具体示例。这种理解可以来自直接的用户示例或经过用户反馈验证的生成的示例。
例如,在构建 image-editor 技能时,相关问题包括:
为了避免让用户不知所措,不要在一条消息中问太多问题。从最重要的问题开始,根据需要跟进以提高效果。
当对技能应支持的功能有清晰认识时,结束此步骤。
要将具体示例转换为有效技能,通过以下方式分析每个示例:
示例:在构建 pdf-editor 技能来处理"帮我也旋转这个 PDF"等查询时,分析显示:
scripts/rotate_pdf.py 脚本会有帮助示例:在设计 frontend-webapp-builder 技能来处理"为我构建一个 todo 应用"或"为我构建一个仪表板来跟踪我的步骤"等查询时,分析显示:
assets/hello-world/ 模板会有帮助示例:在构建 big-query 技能来处理"今天有多少用户登录了?"等查询时,分析显示:
references/schema.md 文件会有帮助要建立技能的内容,分析每个具体示例以创建要包含的可重用资源列表:脚本、参考资料和资源。
此时,是时候在当前 workspace 中创建技能开发环境了。
仅当正在开发的技能已经存在并且需要迭代时才跳过此步骤。在这种情况下,继续下一步。
从头开始创建新技能时,始终运行 init_skill.py 脚本。该脚本会在当前 workspace 中创建一个新的技能目录结构,供开发和调试使用。
重要: 此脚本仅在 workspace 创建目录结构,不会执行任何安装操作。
用法:
scripts/init_skill.py <skill-name> --path <output-directory>
如果不指定 --path 参数,脚本会在当前目录下创建技能目录。
该脚本:
scripts/、references/ 和 assets/初始化后,根据需要自定义或删除生成的 SKILL.md 和示例文件。开发者可以在 workspace 中对技能进行调试和测试。
在编辑(新生成的或现有的)技能时,请记住该技能是为另一个 Claude 实例使用而创建的。包含对 Claude 有益且非显而易见的信息。考虑什么程序性知识、领域特定细节或可重用资产将帮助另一个 Claude 实例更有效地执行这些任务。
根据技能需求查阅这些有用的指南:
这些文件包含有效技能设计的既定最佳实践。
要开始实现,从上面确定的可重用资源开始:scripts/、references/ 和 assets/ 文件。请注意,此步骤可能需要用户输入。例如,在实现 brand-guidelines 技能时,用户可能需要提供品牌资源或模板以存储在 assets/ 中,或文档以存储在 references/ 中。
添加的脚本必须通过实际运行来测试,以确保没有错误并且输出符合预期。如果有许多类似的脚本,只需要测试代表性样本,以确保在平衡完成时间的同时有信心让它们都能工作。
技能不需要的任何示例文件和目录都应删除。初始化脚本在 scripts/、references/ 和 assets/ 中创建示例文件以演示结构,但大多数技能不需要所有这些文件。
写作指南:始终使用命令式/不定式形式。
使用 name 和 description 编写 YAML frontmatter:
name:技能名称description:这是您技能的主要触发机制,帮助 Claude 理解何时使用该技能。
docx 技能的描述示例:"全面的文档创建、编辑和分析,支持修订、注释、格式保留和文本提取。当 Claude 需要处理专业文档(.docx 文件)时使用:(1) 创建新文档,(2) 修改或编辑内容,(3) 处理修订,(4) 添加注释,或任何其他文档任务"不要在 YAML frontmatter 中包含任何其他字段。
编写使用该技能及其捆绑资源的说明。
当用户在 workspace 中完成 skill 开发并确认可以部署后,需要主动发起安装请求。用户应该明确说明:
此时,agent 才会执行打包操作。打包过程会自动验证技能以确保它满足所有要求:
scripts/package_skill.py <path/to/skill-folder>
可选的输出目录规范:
scripts/package_skill.py <path/to/skill-folder> ./dist
打包脚本将:
自动验证技能,检查:
如果验证通过,打包技能,创建名为技能的 .skill 文件(例如 my-skill.skill),该文件包含所有文件并保持适当的目录结构以进行分发。.skill 文件是一个带有 .skill 扩展名的 zip 文件。
如果验证失败,脚本将报告错误并退出而不创建包。修复任何验证错误并再次运行打包命令。
在测试或部署技能后,用户可能请求改进。这通常发生在使用该技能之后,对该技能如何执行有全新的上下文。
迭代工作流程:
| 方面 | nbl-skill-constructor | 安装工具 |
|---|---|---|
| 目的 | 在 workspace 创建开发环境 | 将 skill 打包并安装到系统 |
| 触发时机 | 用户请求创建新 skill 开发环境 | 用户主动发起安装请求 |
| 创建位置 | workspace 目录 | 系统技能目录 |
| 执行安装 | 不执行 | 执行验证和安装 |
| 调试能力 | 支持 workspace 调试 | 安装后不能直接调试 |
Provides behavioral guidelines to reduce common LLM coding mistakes, focusing on simplicity, surgical changes, assumption surfacing, and verifiable success criteria.
Searches, retrieves, and installs Agent Skills from prompts.chat registry using MCP tools like search_skills and get_skill. Activates for finding skills, browsing catalogs, or extending Claude.
Creates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.
npx claudepluginhub nebula-matrix/nebula-matrix-skills --plugin nbl-skill-constructor