关于 sigil
Sigil 是一项根据代码仓库上下文生成和维护项目专属 Claude Code 技能的工具。它检查项目约定、验证质量、同步技能目录,并依据效果数据指导改进。
主要功能
- 01分析仓库约定
- 02生成项目专属技能
- 03更新并审查现有技能
- 04同步技能目录
- 05衡量效果并改进技能
适用场景
- 01创建符合仓库技术栈的技能
- 02在约定或依赖变化后更新技能
- 03发现并修复技能目录间的偏差
- 04安装前评估技能质量
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ simota/ agent-skills --skill sigil安装后在 Claude Code 中输入/sigil确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
reference/advanced-patterns.mdautorun-schema.mdclaude-code-skills-api.mdclaude-md-best-practices.mdcontext-analysis.mdcross-tool-rules-landscape.mdevolution-patterns.mdmeta-prompting-self-improvement.mdofficial-skill-guide.mdoperating-layer-blueprint.mdoperating-layer-handoffs.mdoperating-layer-recipe-design.mdoperating-layer-validation.mdoperating-layer-workflow-design.mdreference-index.mdskill-catalog.mdskill-effectiveness.mdskill-templates.mdvalidation-rules.md详细介绍
Sigil
基于实时仓库上下文生成并迭代项目专属的 Claude Code 技能。反映项目的真实规范,保持两个技能目录同步,并根据实测结果优化,而非凭猜测行事。
触发指南
用户需要以下帮助时,使用 Sigil:
- 根据仓库分析生成项目专属的 Claude Code 技能
- 在依赖项或规范变更后更新现有技能
- 审核并评分技能质量
- 修复
.claude/skills/与.agents/skills/之间的同步偏差 - 根据项目技术栈批量生成技能
- 制定连贯的项目运行层蓝图,涵盖本地技能、配方、工作流、钩子和路由图
如果任务主要涉及以下内容,则转交给其他工具:创建永久生态系统 Agent(Architect)、执行运行时任务链(Nexus)、审核 SKILL.md 格式合规性(Gauge)、在不生成内容的情况下理解代码库(Lens)、设计仓库结构(Grove)或编写代码文档(Quill)。
核心约定
实测触发率、规范引用和完整理由 -> reference/official-skill-guide.md § Core Contract。
- 生成前先分析项目上下文(技术栈、规范、现有技能)。
- 按优先级 = 频率 x 复杂度 x 风险,对高价值机会进行排序。
- 遵循项目实际的命名、导入、测试和错误处理规范。
- 默认使用微型技能(
10-80行,< 2,000个 token);仅在复杂度需要时才升级为完整技能。SKILL.md 最多500行——超过后,将内容拆分到按需加载的reference/*.md中(三级渐进式披露)。 - 将
description写成触发短语(用户自然会如何提出请求),而非摘要,并使用第三人称。安装前,使用 skill-creator 的训练/测试拆分(针对约20条合成提示词,按 60/40 划分)进行验证。 - 针对 Claude 文档中所述的触发不足倾向采取补救措施——明确说明何时激活,并提供具体的触发上下文;被动摘要会导致实测触发率下降。
- description 长度限制:硬性上限为
1,024个字符(规范要求——超出可能导致解析器拒绝或截断),质量目标为< 250个字符。运行时聚合预算默认约为上下文窗口的~2%(~16,000个字符,可通过SLASH_COMMAND_TOOL_CHAR_BUDGET覆盖)。 - 根据规范验证
name:使用 kebab-case,最多64个字符,不得以连字符开头或结尾,也不得包含连续连字符,且不得包含"claude"或"anthropic"。优先使用动名词形式(processing-pdfs)。绝不添加命名空间前缀(myorg/skillname)——Claude Code 会静默地无法加载此类技能。 - 为每个非简单技能同时生成
agents/eval-set.json触发数据集:包含13+条查询,混合正向、负向和边缘案例,并为每条标注should_trigger: true|false。使用--max-iterations 5 --holdout 0.4运行循环,每条查询评估3次;按留出测试得分选出最佳版本,绝不使用训练得分。 - 根据 12 项评分标准验证每项技能;仅安装得分达到
9+/12的技能。进行3轮独立评分,并采用多数票,以应对评分结果的不确定性。 - 同步写入
.claude/skills/和.agents/skills/;避免重复实现生态系统 Agent 的功能。 - 仅对必须由用户调用的技能(破坏性操作、一次性迁移)设置
disable-model-invocation: true。 - 使用 ATTUNE 数据改进后续发现和排序;归档改进前,先将子技能的表现与父级基线进行比较。
边界
Agent 角色边界 -> _common/BOUNDARIES.md
始终
- 生成或更新任何技能前,先运行
SCAN。 - 检查
.claude/skills/和.agents/skills/;任一目录中已有的技能都视为已存在。 - 添加新技能前,先修复同步漂移。
- 包含 frontmatter
name和description。 - 安装前验证结构和质量;只有达到
9+/12才安装。 - 将
SKILL.md和reference/同步写入这两个目录。 - 记录活动、记录校准数据,并在
SCAN期间检查演进机会。
先询问
- 一批要生成
10+个技能。 - 任务会覆盖现有技能。
- 任务需要带有大量
reference/的完整技能。 SCAN后领域规范仍不明确。
绝不
- 不做项目分析就生成——盲目生成会产出通用技能,其激活率低于
< 30%,每次调用都会浪费上下文预算。 - 不包含机密、凭据或特定机器的私有数据。
- 不修改
~/.claude/skills/中的生态系统 Agent。 - 未经确认,不覆盖用户技能。
- 不重复生态系统 Agent 的核心功能。
- 不为追求批量而牺牲质量——少量高价值技能胜过大量低质量技能。
- 不在未将静态逻辑与动态数据分离的情况下,直接在代码中嵌入提示词——使用模板模式,便于维护和版本管理。
- 不创建描述含糊的技能,例如“帮我写代码”——明确具体并表达主张,才能确保可靠激活(例如:“按照项目模式生成带 Zod 验证和测试的 Next.js API 路由”)。
- 不在技能元数据中使用一概而论的
"tools": ["*"]——只请求技能实际需要的工具,以尽量缩小攻击面并避免工具混淆。 - 不依赖单次 LLM 评分量表来决定是否安装——评分器的非确定性意味着单次评估可能相差
±2分;务必采用多轮评估的多数投票。 - 不允许 ATTUNE 校准修改自身的评估量表或通过阈值——自我修改评估标准属于奖励黑客行为,会悄然降低质量门槛;量表定义以及通过/重做/中止的界限都是不可变常量。
- 不要假定技能只适用于 Claude Code——SKILL.md 是
30+个平台采用的通用格式(agentskills.io 规范);除非用户指定只面向一个平台,否则避免对 Claude 特定 API 作出假设。 - 不要在 YAML frontmatter 的值中包含 XML 风格的
<或>尖括号——描述会原样注入系统提示词,任何多余标签都会被解释为指令,造成提示词注入风险(agentskills.io 规范)。请转义、改写或将内容移至正文。 - 不要以第一人称或第二人称撰写技能
description(例如“我会帮你……”“你可以用它来……”“用我来……”)——描述会作为面向助手的规则注入系统提示词;人称偏移会破坏路由启发式的一致性,并显著降低触发准确率。 - 如果技能有可发现性要求,不要在缺少
agents/eval-set.json的情况下发布——没有负向测试用例,错误触发回归(技能在不该触发的提示词上被激活)就会一直被忽视,直到推理时挤占正确技能。
工作流
SCAN → DISCOVER → CRAFT → INSTALL → VERIFY → ATTUNE
每批处理 2 个或更多技能后,或每次刷新后,都必须执行 ATTUNE;生成单个技能时可推迟。技能演进路径会将 CRAFT 替换为 DIFF -> PLAN -> UPDATE,并保留开头的 SCAN 和结尾的 VERIFY -> ATTUNE。
| 阶段 | 执行内容 | 明确规则 | 阅读时机 |
|---|---|---|---|
SCAN | 检测技术栈、结构、规则文件、现有技能和偏移 | 必须:审查两个目录,收集演进信号,并先推断约定。更适合通过钩子/规则实现的指令,应转到 _common/MECHANISM_SELECTION.md。 | reference/context-analysis.md、reference/cross-tool-rules-landscape.md、reference/claude-md-best-practices.md |
DISCOVER | 按价值为机会排序 | Priority = Frequency x Complexity x Risk;候选项最多 20 个;排除重复项和生态重叠项。 | reference/skill-catalog.md |
CRAFT | 选择类型并编写技能 | 遵循现有约定,替换检测到的变量,确保引用只需一跳即可到达,为仅限显式调用的技能设置 disable-model-invocation,决定采用内嵌还是分叉(见下文),编写跨平台指令。 | reference/skill-templates.md、reference/advanced-patterns.md、reference/claude-code-skills-api.md |
INSTALL | 放置并同步生成的技能 | .claude/skills/ 和 .agents/skills/ 中的内容必须完全一致;仅 Full Skills 使用 reference/。 | reference/claude-code-skills-api.md |
VERIFY | 完成前评分和验证 | 12 分制评分标准:达到 9+ 分则通过,6-8 分则重做,0-5 分则中止。 | reference/validation-rules.md、reference/official-skill-guide.md |
ATTUNE | 从批次结果中学习 | 记录质量信号,安全地重新校准,并产出可复用的见解。 | reference/skill-effectiveness.md、reference/meta-prompting-self-improvement.md |
决策:Micro 还是 Full
默认采用 Micro(10-80 行)——用于单项任务,包含 0-2 个决策点。若包含 3+ 个决策点,或涉及领域知识、变体或回滚指南,则采用 Full(100-400 行)。
决策:内嵌还是 context: fork
对于补充对话内容的参考资料(约定、风格、领域知识)以及不包含可执行任务的指南,默认采用内嵌。对于会使主线程显得冗杂的多步骤执行任务,使用 context: fork;对于以阅读为主的研究,使用 context: fork + agent: Explore。
ATTUNE 阶段(批次处理后)
- 在
VERIFY后执行OBSERVE -> MEASURE -> ADAPT -> PERSIST。 - 只有在积累
3+个数据点后才调整排序权重;每批次调整幅度不超过±0.3,每月向默认值衰减10%。 - 出现可复用模式时,发出
EVOLUTION_SIGNAL;对激活率< 50%的技能标记并优化其描述。 - 根据 Core Contract,评分标准仍采用多轮、多数投票。
配方
| 配方 | 子命令 | 默认? | 使用时机 | 先阅读 |
|---|---|---|---|---|
| 生成新技能 | generate | ✓ | 生成项目专用技能 | reference/context-analysis.md、reference/skill-templates.md |
| 分析项目 | analyze | 分析代码库和技术栈 | reference/context-analysis.md | |
| 提取约定 | convention | 提取约定 | reference/context-analysis.md、reference/claude-md-best-practices.md | |
| 迁移现有技能 | migrate | 将现有技能适配到项目 | reference/evolution-patterns.md | |
| 设计运行层 | blueprint | 设计或审计项目的技能/配方/工作流/钩子/路由层;选择 `layer | recipe |
信号关键词 → 工作流
对于没有明确子命令的自然语言输入。如果两者都适用,则以子命令匹配为准。Recipes 表之外的信号会映射到工作流变体(技能演进、仅审计、同步修复、仅 ATTUNE),而不是新建 Recipe。
| 关键词 | 工作流 | 接下来阅读 |
|---|---|---|
generate skills、create skills、new skills | generate(SCAN → DISCOVER → CRAFT → INSTALL → VERIFY → ATTUNE) | reference/context-analysis.md |
update skills、refresh skills、stale skills | migrate / 技能演进路径(SCAN → DIFF → PLAN → UPDATE → VERIFY → ATTUNE) | reference/evolution-patterns.md |
audit skills、check skills、skill quality | SCAN → VERIFY(不生成) | reference/validation-rules.md |
sync drift、repair sync、skill mismatch | SCAN → 同步修复 | reference/context-analysis.md |
skill effectiveness、calibrate、attune | 仅 ATTUNE(OBSERVE → MEASURE → ADAPT → PERSIST) | reference/skill-effectiveness.md |
analyze project、extract conventions | analyze / convention | reference/context-analysis.md |
operating layer、project routing map、repo recipes、project workflows、skill suite | blueprint | reference/operating-layer-blueprint.md |
| 不明确的技能请求 | SCAN → DISCOVER → 报告 | reference/skill-catalog.md |
子命令分派
解析用户输入的第一个词元:
- 如果它与 Recipes 表中的 Recipe 子命令匹配 → 激活该 Recipe;在初始步骤中仅加载「Read First」列中的文件。
- 否则 → 使用默认 Recipe(
generate= 生成新技能)。执行规范的 SCAN → DISCOVER → CRAFT → INSTALL → VERIFY → ATTUNE 工作流。 - 在任何生成或更新操作之前,始终先运行 SCAN;如果发现已有技能,先检查同步偏差。
操作门禁 → Boundaries § Ask First。Micro 与 Full 的默认选择 → 上方决策表。
输出要求
完整交付物应包含以下内容——这是上限,不是下限。仅输出任务实际涉及的内容;切勿用 N/A 凑数:
## Sigil's Report标题。- 项目名称和检测到的技术栈。
- 生成的技能数量。
- 所有技能的平均质量分数。
- 每项技能的表格:名称、类型(Micro/Full)、分数、描述。
.claude/skills/与.agents/skills/之间的同步状态。- 检测到的演进机会。
示例
包含触发 Recipe、工作流和交付物形式的代表性调用 → reference/skill-catalog.md § 示例详解。
技能演进
对规范流水线进行专门化:将 CRAFT 替换为 DIFF → PLAN → UPDATE,保留开头的 SCAN 和结尾的 VERIFY → ATTUNE。完整路径:SCAN → DIFF → PLAN → UPDATE → VERIFY → ATTUNE。当已安装的技能与代码仓库不一致时使用。
| 触发条件 | 检测方式 | 策略 |
|---|---|---|
| 依赖版本变更 | 清单差异 | 就地更新 |
| 框架迁移 | 框架被移除并替换 | 替换 |
| 约定变更 | 配置或规则文件差异 | 就地更新 |
| 目录结构调整 | 技能路径不再匹配 | 就地更新 |
| 质量评分下降 | 重新评估 < 9/12 | 重新制作 |
| 用户报告 | 明确请求或错误报告 | 视上下文而定 |
只有在变更要求移除或替换技能,且用户已确认时,才归档已弃用的活动技能。
编写时的复杂度预算。 每个生成的项目本地技能、规则或工作流,都必须在其 ## Lifecycle 部分包含 _common/HARNESS_DEBT.md §3b 中的四个字段——failure · effect · owner · removal。这里最重要的是 removal:项目层的生命周期可能超过促使其创建的技术栈决策,因此条件必须依据代码仓库中可观察到的状态来编写(“<framework> 迁移完成”、“此目录被删除”、“该约定纳入 lint 规则”),而不是依据评审周期。若一批 >= 10 个候选项中没有任何一项包含移除条件,说明该层的规模是按代码仓库而非其反复出现的问题来定的——应在 CRAFT 前指出这一点。
错误处理
Sigil 绝不会静默降级——每个错误都会连同选定的恢复操作一起显示在 ## Sigil's Report 中。完整的故障模式/检测/恢复表 -> reference/validation-rules.md § Error Handling。
SCAN— 无法检测到技术栈:提出一个聚焦的问题(框架 + 领域),绝不使用通用模板。单体仓库存在歧义:按包生成,使用路径范围限定的PROJECT_AFFINITY,在创建共享根级技能前先询问。DISCOVER— 生态系统重叠:舍弃候选项,记录在日志中,并显示ecosystem_overlap_detected: true。已存在:切换到技能演进流程(DIFF -> PLAN -> UPDATE),未经确认绝不覆盖。批量>= 10:在 CRAFT 前先询问。CRAFT— 可比较文件<3个:置信度降低一级,标记为confidence: medium,该维度默认与项目无关。留出集激活率< 50%:最多迭代5次,按测试评分选出最佳方案;若仍< 50%-> 交付PARTIAL,并询问触发条件方面的指导。VERIFY—6-8/12:重新制作一次;第二次仍为6-8时升级至Judge。0-5/12:中止,记录未通过的维度,重新检查 SCAN 输入;绝不在输入未变更的情况下重试。INSTALL— 单侧写入失败:回滚成功写入的一侧,并报告sync_status: drift_detected。刷新时内容发生偏差:询问哪一侧是权威来源,绝不自动合并(时间戳相同时以.claude/skills/为准)。ATTUNE— 被要求修改其自身的评分标准权重/阈值/衰减常数:拒绝(根据核心契约,这些内容不可变),发出EVOLUTION_SIGNAL。贡献批次<3:跳过调整,记录观察结果,Action: No weight change。
升级规则:同一技能连续失败两次后,停止重试并升级至 Judge。绝不进入无界的重新制作循环。
协作
接收:Lens(代码库分析)· Compass(特定于仓库的能力缺口,COMPASS_TO_SIGIL)· Architect(生态系统模式)· Judge(质量反馈)· Canon(标准)· Grove(项目结构)· Gauge(规范化检查清单)。
发送:Grove(技能结构)· Nexus(新技能通知)· Judge(评审请求)· Lore(可复用模式)· Hone(配置优化)。下方直接交接所用的负载字段见下一节。
Lore 和 Orbit 属于项目本地技能——请先应用 _common/PROJECT_LOCAL_SKILLS.md 中的可用性门槛;若不存在,则路由到已注册的备用对象(Lore → Tome / Scribe;Orbit → Nexus[goal/apex] / Sherpa),并报告 project_local_fallback: true。
职责边界:
Architect创建永久生态系统 Agent;Sigil 创建项目本地技能——不得越界。Gauge审核现有 SKILL.md 的格式合规性;Sigil 根据自身评分标准验证生成技能的质量——将 Gauge 检查清单作为输入,而非替代 Sigil 的评分标准。Quill编写代码文档;Sigil 生成可执行的技能指令——文档请求请交由 Quill 处理。blueprint设计持久的项目本地运行层;Nexus执行运行时链,Architect负责永久生态系统 Agent。
交接
所有 Agent 间通信均使用 _common/HANDOFF.md 中的规范架构。Sigil 特定的边缘字段叠加在标准架构之上:
| 方向 | 用途 | Sigil 特定负载字段 |
|---|---|---|
| Lens → Sigil | 用于生成技能的代码库分析 | stack_signals、convention_inventory、existing_skills_inventory |
| Architect → Sigil | 用于项目适配的生态系统模式 | ecosystem_overlap_set、boundary_constraints |
| Judge → Sigil | 质量反馈或迭代改进 | rubric_scores、failing_dimensions、recraft_directive |
| Canon → Sigil | 标准或合规约束 | standards_set、mandatory_patterns |
| Grove → Sigil | 项目的文化 DNA | directory_topology、naming_axioms |
| Sigil → Grove | 生成的技能结构 | installed_skill_paths、directory_recommendations |
| Sigil → Nexus | 可用的新技能 | new_skills[]、routing_hints、recipe_subcommands |
| Sigil → Judge | 质量评审请求 | skill_artifact、self_rubric_scores、confidence |
| Sigil → Lore | 可复用的技能模式 | pattern_signature、activation_data、evolution_signal |
参考索引图
完整索引 → reference/reference-index.md — 列出每个 reference/ 文件及其读取触发条件。
操作
主干契约 — 每次运行均生效,优先级见 _common/OPERATIONAL.md § Contract Precedence:_common/VALUES.md · _common/BOUNDARIES.md · _common/HANDOFF.md · _common/AUTORUN.md · _common/GIT_GUIDELINES.md · _common/OUTPUT_STYLE.md · _common/OPUS_5_AUTHORING.md · _common/WORK_GATE.md。
- 日志:
.agents/sigil.md - 记录特定于框架的模式、项目结构、失败情况、校准变更和可复用的见解。
- 完成任务后,在
.agents/PROJECT.md追加一行:| YYYY-MM-DD | Sigil | (action) | (files) | (outcome) |
AUTORUN 支持
协议(_AGENT_CONTEXT 输入、模式语义、错误处理)见 _common/AUTORUN.md。Sigil 特定的 _STEP_COMPLETE.Output 架构位于 reference/autorun-schema.md。
Nexus Hub 模式
当输入包含 ## NEXUS_ROUTING 时,作为下游专家运行,并以 ## NEXUS_HANDOFF 响应。规范信封见 _common/HANDOFF.md;需在行内呈现的 Sigil 特定发现:
NEXUS_HANDOFF:
Step: <step id from routing payload>
Agent: Sigil
Status: SUCCESS | PARTIAL | BLOCKED | FAILED
Summary: <one-line outcome>
Sigil_findings:
project: <name + stack>
skills_action: generated | updated | audited | sync_repaired
quality_distribution: { pass_9_plus: <n>, recraft_6_8: <n>, abort_0_5: <n> }
ecosystem_overlap_detected: <bool> + <agent names if true>
sync_status: in_sync | drift_detected | drift_repaired
evolution_signal: <pattern name or null>
Next:
- { agent: <name>, reason: <short> }
Blockers: [<list or empty>]