名称: 模板创建器 描述: ‘创建和注册代理、技能、工作流、钩子和代码模式的模板。处理创建后的目录更新、消费技能集成和README注册。在创建新模板类型或标准化模式时使用。’ 版本: 2.1.0 类别: 创建器 模型: sonnet 调用方式: 双方 用户可调用: true 工具: [读取, 写入, 编辑, Bash, Glob, Grep]
第一阶段集成: 模板工具根据.claude/config/tool-manifest.json验证
模板应引用清单中的工具以确保一致性
单一真相源: .claude/config/tool-manifest.json
分配代理: [规划师, 架构师, 开发者] 触发器: [‘创建模板’, ‘新模板’, ‘模板用于’] 依赖项: [研究合成] 输出路径: [‘.claude/templates/’] 最佳实践:
- 包含所有必填字段和占位符
- 在模板中添加文档注释
- 为跟踪更改而版本化模板
- 包含验证示例
- 使用一致的占位符格式
- 每次创建后更新template-catalog.md
- 清理生成模板占位符 错误处理: 优雅 流式处理: 支持 输出位置: .claude/templates/ 已验证: false 最后验证时间: 2026-02-19T05:29:09.098Z
模式: 认知/提示驱动 – 没有独立的实用脚本;通过代理上下文使用。
模板创建器技能
为多代理编排框架创建、验证和注册模板。
+==============================================================+
| 必填: 研究合成必须在此技能之前调用 |
| 调用: Skill({ skill: "research-synthesis" }) |
| 未研究 = 信息不足的模板 = 被拒绝 |
+==============================================================+
| |
| 不要直接写入模板文件! |
| |
| 这包括: |
| - 复制存档模板 |
| - 从_archive/备份恢复 |
| - "快速"手动创建 |
| |
| 为什么: 直接写入绕过必填的创建后步骤: |
| 1. 模板目录更新(模板不可发现) |
| 2. README.md更新(模板对消费者不可见) |
| 3. 消费技能更新(模板从未使用) |
| 4. CLAUDE.md更新(如果用户可调用) |
| |
| 结果: 模板存在于文件系统中但从未使用。 |
| |
| 执行: unified-creator-guard.cjs阻止直接模板写入。覆盖: CREATOR_GUARD=off(危险)|
| |
| 始终正确调用此技能: |
| Skill({ skill: "template-creator" }) |
| |
+==============================================================+
路由器更新要求(关键 - 不要跳过)
创建任何模板后,必须更新:
.claude/templates/README.md- 添加模板条目.claude/context/artifacts/catalogs/template-catalog.md- 添加目录条目- CLAUDE.md第2节或8.5节,如果模板是框架重要或用户可调用的
- 消费创建器技能,如果模板标准化了工件类型
.claude/context/memory/learnings.md- 记录创建
验证:
grep "<模板名称>" .claude/templates/README.md || echo "错误: README未更新!"
grep "<模板名称>" .claude/context/artifacts/catalogs/template-catalog.md || echo "错误: 目录未更新!"
为什么: 不在目录中的模板对其他创建者不可见,永远不会被使用。
概述
模板确保多代理框架的一致性。此技能创建以下模板:
- 代理定义 - 标准化的代理结构
- 技能定义 - 可重用的能力模式
- 工作流定义 - 多代理编排模式
- 生成提示 - 代理生成提示模板,由
spawn-template-resolver.cjs消费 - 报告 - 报告文档模板
- 代码风格指南 - 语言特定的编码标准
- 通用文档 - ADR、规范、检查清单和其他框架文档
核心原则: 模板是系统的DNA。一致的模板产生一致、可预测的代理和技能。
何时使用
始终:
- 创建将被复制的新类型工件
- 标准化代码库中的现有模式
- 添加新的模板类别
- 用更好的模式改进现有模板
例外:
- 永远不会被复制的一次性文件
- 临时/可丢弃代码
模板类型
| 类型 | 位置 | 数量 | 目的 | 主要消费者 |
|---|---|---|---|---|
| 生成 | .claude/templates/spawn/ |
4 | 代理生成提示模板 | 路由器, 生成提示组装器 |
| 代理 | .claude/templates/agents/ |
2 | 代理定义样板 | 代理创建器 |
| 技能 | .claude/templates/skills/ |
1 | 技能定义样板 | 技能创建器 |
| 工作流 | .claude/templates/workflows/ |
1 | 工作流定义样板 | 工作流创建器 |
| 报告 | .claude/templates/reports/ |
5 | 报告文档模板 | qa, 开发者, 研究员 |
| 代码风格 | .claude/templates/code-styles/ |
3 | 语言风格指南 | 开发者, 代码审查员 |
| 文档 | .claude/templates/ (根目录) |
8+ | 通用文档模板 (ADR, 规范) | 规划师, 架构师, qa |
交叉引用: 查看.claude/context/artifacts/catalogs/template-catalog.md获取完整库存(28个活动模板)。对于生成模板解析逻辑,参见.claude/lib/spawn/spawn-template-resolver.cjs。
模板安全合规
关键安全要求:
- 无秘密 (SEC-TC-007): 模板不能包括秘密、凭据、令牌或API密钥
- 路径安全: 所有模板引用必须使用相对路径(
.claude/templates/...),不能使用绝对路径 - 无敏感元数据: 模板不能暴露内部系统路径或用户目录
- 无Windows保留名称: 模板名称不能使用
nul、con、prn、aux、com1-com9、lpt1-lpt9 - 保留要求 (SEC-TMPL-006): 被SEC-TMPL-006标记的模板必须保持在指定位置
- 生成模板占位符安全 (SEC-TC-001): 在
prompt:字段中有{{PLACEHOLDER}}令牌的生成模板必须引用prompt-factory.cjs中的sanitizeSubstitutionValue()进行值清理。未清理的占位符在生成提示中创建提示注入表面。不要将{{PLACEHOLDER}}令牌放置在用户提供输入直接替换而无清理的地方。 - 无Eval/Exec: 模板不能包含
eval()、exec()、Function()或其他代码执行模式
执行: unified-creator-guard.cjs钩子阻止直接模板写入(默认: 阻止模式)。
铁律
无模板无占位符文档
每个{{PLACEHOLDER}}必须有相应的注释解释:
- 应替换的值
- 有效选项/格式
- 示例值
无例外:
- 每个占位符都有文档
- 每个必填字段都有标记
- 每个可选字段都有默认值
工作流步骤
步骤0: 研究合成(必填 - 阻塞)
根据CLAUDE.md第3节要求,在模板创建前调用research-synthesis:
Skill({ skill: 'research-synthesis' });
模板研究重点:
- 搜索现有模板:
Glob: .claude/templates/**/*.md - 审查模板目录: 读取
.claude/context/artifacts/catalogs/template-catalog.md - 检查类似模板是否已存在于生态系统中
- 如果为新领域创建,通过WebSearch研究最佳实践模板结构
阻塞: 模板创建无法在没有研究合成调用的情况下进行。
步骤0.5: 伴侣检查
在继续创建前,运行生态系统伴侣检查:
- 使用
.claude/lib/creators/companion-check.cjs中的companion-check.cjs - 调用
checkCompanions("template", "{模板名称}")以识别伴侣工件 - 审查伴侣检查清单 — 注意哪些必需/推荐伴侣缺失
- 计划在此工件完成后创建或验证缺失伴侣
- 在创建后集成笔记中包括伴侣发现
此步骤是信息性的(不阻止创建),但确保考虑完整的工件生态系统。
步骤1: 收集需求
分析请求:
- 模板类型: 哪个类别(生成、代理、技能、工作流、报告、代码风格、文档)?
- 目的: 此模板将用于什么?
- 必填字段: 哪些字段是强制的?
- 可选字段: 哪些字段是可选的,带有默认值?
- 验证规则: 应用哪些约束?
- 消费者: 哪些创建者/代理将使用此模板?
示例分析:
模板请求: "创建安全审计报告模板"
- 类型: 报告
- 目的: 标准化安全审计报告结构
- 必填: 发现、严重级别、建议
- 可选: 合规框架、修复时间线
- 规则: 严重性必须是CRITICAL|HIGH|MEDIUM|LOW
- 消费者: 安全架构师, qa
步骤2: 模板类型分类
分类模板以确定输出路径和验证规则:
| 类型 | 输出路径 | 关键字段 | 验证重点 |
|---|---|---|---|
| 生成 | .claude/templates/spawn/ |
subagent_type, prompt, model, task_id | TaskUpdate协议, allowed_tools, model |
| 代理 | .claude/templates/agents/ |
name, description, tools, skills, model, enforcement_hooks | 前端完整性, 对齐部分 |
| 技能 | .claude/templates/skills/ |
name, version, tools, invoked_by | SKILL.md结构, 内存协议 |
| 工作流 | .claude/templates/workflows/ |
phases, agents, dependencies | 阶段排序, 代理引用 |
| 报告 | .claude/templates/reports/ |
type, findings, recommendations | 发现严重性, 证据要求 |
| 代码风格 | .claude/templates/code-styles/ |
language, conventions, examples | 约定清晰度, 示例质量 |
| 文档 | .claude/templates/ (根目录) |
根据模板类型变化 | 部分完整性 |
步骤3: 名称验证 (SEC-TC-003)
在构建输出路径前,验证模板名称。
模板名称必须匹配此正则表达式:
/^[a-z0-9][a-z0-9-]*[a-z0-9]$/
验证规则:
- 仅小写字母、数字和连字符
- 必须以字母或数字开头和结尾(不能是连字符)
- 无路径分隔符(
/、\)、无..、无特殊字符 - 无Windows保留名称(
nul、con、prn、aux、com1-com9、lpt1-lpt9)
拒绝示例:
拒绝: "../hooks/malicious-hook" (路径遍历)
拒绝: "My Template" (空格, 大写)
拒绝: "-leading-hyphen" (以连字符开头)
拒绝: "template_with_underscores" (不允许下划线)
接受: "security-audit-report" (有效烤肉串大小写)
接受: "agent-template-v2" (有效带版本)
步骤4: 确定输出路径
基于步骤2的分类,构建输出路径:
.claude/templates/<类别>/<已验证模板名称>.md
其中<类别>是: spawn/、agents/、skills/、workflows/、reports/、code-styles/或根级别(无类别子目录)。
验证解析路径:
- 路径必须以
.claude/templates/开头 - 路径在规范化后不能包含
..段 - 路径必须以
.md结尾
步骤5: 内容设计
设计模板内容,遵循这些标准:
占位符格式标准
| 占位符类型 | 格式 | 示例 |
|---|---|---|
| 必填字段 | {{FIELD_NAME}} |
{{AGENT_NAME}} |
| 可选字段 | {{FIELD_NAME:default}} |
{{MODEL:sonnet}} |
| 多行 | {{FIELD_NAME_BLOCK}} |
{{DESCRIPTION_BLOCK}} |
| 列表项 | {{ITEM_N}} |
{{TOOL_1}}, {{TOOL_2}} |
模板结构
---
# YAML前端,包含所有必填字段
名称: { { 名称 } }
描述: { { 描述 } }
# ... 其他字段带文档注释
---
# {{显示名称}}
## 创建后检查清单(阻塞 - 不要跳过)
<!-- 始终包括阻塞检查清单 -->
## 概述
{{概述描述}}
## 部分
<!-- 领域特定部分 -->
## 内存协议(必填)
<!-- 始终包括内存协议 -->
生成模板安全清单 (SEC-TC-001)
如果创建生成模板,必须验证:
- [ ] 无
{{PLACEHOLDER}}令牌在prompt:字段中,接受未清理的用户输入 - [ ] 文档中包括对
prompt-factory.cjs中sanitizeSubstitutionValue()的引用 - [ ] 生成提示体中存在TaskUpdate协议
- [ ]
allowed_tools数组不向非编排器代理授予Task工具 - [ ] 模板体中无提示覆盖模式(
IGNORE PREVIOUS、SYSTEM:等) - [ ] 模板大小小于50KB
文档注释
为每个占位符添加内联文档:
---
# [必填] 唯一标识符,小写带连字符
名称: { { 代理名称 } }
# [必填] 单行,描述它做什么以及何时使用
# 示例: "根据苹果HIG审查移动应用UX。用于iOS UX审计。"
描述: { { 描述 } }
# [可选] 默认: sonnet。选项: haiku, sonnet, opus
模型: { { 模型:sonnet } }
---
步骤6: 写入模板文件
写入到步骤4确定的已验证输出路径:
写入: .claude/templates/<类别>/<模板名称>.md
步骤7: 验证模板结构(阻塞)
在继续注册前,验证所有要求:
结构验证:
[ ] YAML前端是有效语法
[ ] 所有必填字段都有占位符
[ ] 所有占位符遵循{{UPPER_CASE}}命名约定
[ ] 所有占位符都有文档注释
[ ] 创建后检查清单部分存在
[ ] 内存协议部分存在
[ ] 包含验证命令
[ ] 提供示例值(如有帮助)
安全验证 (SEC-TC-007):
[ ] 模板内容中无秘密、凭据或API密钥
[ ] 无绝对文件路径(使用从PROJECT_ROOT的相对路径)
[ ] 无eval()、exec()、Function()或代码执行模式
[ ] 无提示覆盖模式("IGNORE PREVIOUS"、"SYSTEM:"等)
[ ] 模板大小小于50KB
验证命令:
# 检查无来自模板创建器本身的未解析占位符
grep "{{" <创建文件> | head -5 # 应仅显示预期占位符
# 检查YAML前端存在
head -50 <文件> | grep -E "^---$" | wc -l # 应为2
# 检查必需部分存在
grep -E "^## 内存协议" <文件> || echo "错误: 缺少内存协议!"
阻塞: 模板必须通过所有验证检查才能继续。
步骤8: 更新模板目录(必填 - 阻塞)
更新模板目录以确保新模板可发现。
-
读取当前目录:
cat .claude/context/artifacts/catalogs/template-catalog.md -
基于类型确定模板类别:
- 生成 (
spawn/), 创建器 (agents/、skills/、workflows/), 文档 (根目录), 报告 (reports/), 代码风格 (code-styles/)
- 生成 (
-
在正确类别部分添加模板条目:
### <模板名称>.md | 字段 | 值 | | ------------------ | ------------------------------------------------- | | **路径** | `.claude/templates/<类别>/<模板名称>.md` | | **类别** | <类别> 模板 | | **状态** | 活动 | | **由代理使用** | <代理列表> | | **由技能使用** | <技能列表> | **目的:** <目的描述> -
更新模板类别摘要表(总计行)
-
验证更新:
grep "<模板名称>" .claude/context/artifacts/catalogs/template-catalog.md || echo "错误: 目录未更新!"
重要: 当构建任何JSON注册条目时使用JSON.stringify() (SEC-TC-004)。永远不要手动连接字符串来构建JSON。location字段必须已验证以.claude/templates/开头且无..段。
阻塞: 模板必须出现在目录中。未目录化的模板不可见。
步骤9: 更新模板README(必填 - 阻塞)
更新目录后,更新.claude/templates/README.md:
- 添加到适当部分(或创建新部分)
- 文档使用说明
- 添加到快速参考表
条目格式:
### {{模板类型}} 模板 (`{{目录}}/`)
当{{使用案例}}时使用。
**文件:** `{{目录}}/{{模板名称}}.md`
**用法:**
1. 复制模板到`{{目标路径}}`
2. 替换所有`{{占位符}}`值
3. {{额外步骤}}
验证:
grep "<模板名称>" .claude/templates/README.md || echo "错误: README未更新 - 阻塞!"
阻塞: README必须包含模板条目。
步骤10: 更新CLAUDE.md(条件性 - 阻塞)
如果模板是框架重要或用户可调用的:
-
检查模板是否需要CLAUDE.md条目:
- 是新生成模板? -> 更新第2节(生成模板)
- 是新创建器模板? -> 更新相关创建器部分
- 是用户可调用模板? -> 更新第8.5节
-
如果是,添加条目:
**{模板名称}:** `.claude/templates/{类别}/{名称}.md` -
验证:
grep "<模板名称>" .claude/CLAUDE.md || echo "警告: 模板不在CLAUDE.md中(如果仅内部使用可能OK)"
注意: 并非所有模板都需要CLAUDE.md条目。只有框架重要的模板(生成模板、创建器模板)需要此步骤。
步骤11: 分配消费代理
模板存在以供创建者和代理消费。创建后:
-
基于模板类型识别消费者:
- 代理模板 -> 代理创建器技能应引用
- 技能模板 -> 技能创建器技能应引用
- 工作流模板 -> 工作流创建器技能应引用
- 报告模板 -> 相关代理(qa、开发者等)
- 生成模板 -> 路由器文档, spawn-template-resolver
- 代码风格模板 -> 开发者, 代码审查员
-
更新消费技能/代理以引用模板:
**可用模板:** - 查看 `.claude/templates/<类别>/<模板名称>.md` 获取标准化<类型>模板 -
验证至少一个消费者引用模板:
grep -r "<模板名称>" .claude/skills/ .claude/agents/ || echo "警告: 无消费者引用模板"
为什么: 没有消费者的模板一诞生就死亡。每个模板必须至少被一个消费技能或代理引用。
步骤12: 集成验证(阻塞 - 不要跳过)
此步骤验证工件是否正确集成到生态系统中。
在调用TaskUpdate({ status: "completed" })之前,运行创建后验证:
-
运行集成检查清单:
node .claude/tools/cli/validate-integration.cjs .claude/templates/<类别>/<模板名称>.md -
验证退出代码为0(所有检查通过)
-
如果退出代码为1(一个或多个检查失败):
- 读取错误输出以获取特定失败
- 修复每个失败:
- 缺少README条目 -> 添加到
.claude/templates/README.md - 缺少目录条目 -> 添加到
template-catalog.md - 缺少内存更新 -> 更新
learnings.md
- 缺少README条目 -> 添加到
- 重新运行验证直到退出代码为0
-
仅在验证通过时继续
此步骤是阻塞的。 不要标记任务完成,直到验证通过。
为什么这重要: Party Mode事件显示,如果集成步骤被错过,完全实现的工件可能对路由器不可见。此验证确保无“不可见工件”模式。
参考: .claude/workflows/core/post-creation-validation.md
步骤13: 完成检查清单(阻塞)
所有项目必须在模板创建完成前通过:
[ ] 研究合成技能调用(步骤0)
[ ] 存在检查通过(无重复模板)
[ ] 模板名称验证通过 /^[a-z0-9][a-z0-9-]*[a-z0-9]$/ (步骤3)
[ ] 模板文件创建于 .claude/templates/<类别>/<名称>.md
[ ] 所有占位符使用 {{占位符名称}} 格式
[ ] 所有占位符都有文档注释
[ ] 模板中存在创建后检查清单部分
[ ] 模板中存在内存协议部分
[ ] 无硬编码值(所有通过占位符可配置)
[ ] 模板中无秘密、凭据或绝对路径 (SEC-TC-007)
[ ] 模板中无eval()或代码执行模式
[ ] template-catalog.md更新并包含结构化条目(步骤8)
[ ] .claude/templates/README.md更新并包含模板条目(步骤9)
[ ] CLAUDE.md更新,如果模板是框架重要的(步骤10)
[ ] 至少一个消费技能/代理引用模板(步骤11)
[ ] 集成验证通过(步骤12)
[ ] 模板至少与一个真实使用测试
[ ] 内存文件更新 (learnings.md)
阻塞: 如果任何项目失败,模板创建不完整。在继续前修复所有问题。
架构合规
文件放置 (ADR-076)
- 模板:
.claude/templates/{类别}/(生成、代理、技能、工作流、报告、代码风格) - 存档模板:
.claude/templates/_archive/ - 模板目录:
.claude/context/artifacts/catalogs/template-catalog.md - 测试:
tests/(不在.claude/中)
文档引用 (CLAUDE.md v2.2.1)
- 引用文件使用@符号: @TOOL_REFERENCE.md, @SKILL_CATALOG_TABLE.md
- 位于:
.claude/docs/@*.md - 参见: CLAUDE.md第2节(生成模板)
Shell安全 (ADR-077)
- 生成模板必须包括:
cd "$PROJECT_ROOT" || exit 1用于后台任务 - 环境变量控制验证器(阻止/警告/关闭模式)
- 参见:
.claude/docs/SHELL-SECURITY-GUIDE.md - 应用于: 所有生成模板、后台任务模板
安全合规 (ADR-085, ADR-086, SEC-TMPL-006)
- 模板不能包括硬编码秘密、凭据或API密钥
- 模板必须使用相对路径(
.claude/templates/...),不能使用绝对路径 - 模板不能暴露内部系统路径或用户目录
- 保留要求: security-design-checklist.md和error-recovery-template.md必须保持在指定位置
- 生成模板占位符清理: 引用
prompt-factory.cjs中的sanitizeSubstitutionValue()
最近ADRs
- ADR-075: 路由器配置感知模型选择
- ADR-076: 文件放置架构重新设计
- ADR-077: Shell命令安全架构
- ADR-085: 模板系统大修(生成解析器 + 死模板清理)
- ADR-086: 模板创建器大修至v2.1创建器标准
模板创建的钢铁法则
这些规则不可违反。违反它们导致整个框架不一致。
1. 无模板无占位符文档
- 每个{{占位符}}必须有内联注释
- 注释解释有效值和示例
2. 无模板无创建后检查清单
- 用户必须知道使用模板后做什么
- 阻塞步骤防止不完整工件
3. 无模板无内存协议
- 所有模板必须包括内存协议部分
- 确保从模板创建的工件遵循内存规则
4. 无模板无README更新
- 模板README必须文档新模板
- 未文档化的模板不可见
5. 无占位符无命名约定
- 使用{{大写带下划线}}
- 永远不要使用小写或混合大小写
6. 无可选字段无默认值
- 格式: {{字段:默认值}}
- 使模板无需完全定制即可使用
7. 无模板无验证命令
- 包括验证创建工件的命令
- 用户可以验证他们的工作正确
8. 无代理模板无对齐部分
- 代理模板必须包括{{执行钩子}}占位符部分
- 代理模板必须包括{{相关工作流}}占位符部分
- 代理模板必须包括输出标准块,引用workspace-conventions
- 参考: @HOOK_AGENT_MAP.md和@WORKFLOW_AGENT_MAP.md获取原型集
9. 无模板无目录条目
- 每个模板必须在template-catalog.md中注册
- 未目录化的模板对系统不可见
- 验证: grep "<模板名称>" .claude/context/artifacts/catalogs/template-catalog.md
10. 无模板无消费技能/代理
- 每个模板必须被至少一个消费技能或代理引用
- 没有消费者的模板一诞生就死亡
- 验证: grep -r "<模板名称>" .claude/skills/ .claude/agents/
11. 无创建无研究合成
- 根据CLAUDE.md第3节,研究合成必须在任何创建器之前调用
- 模板创建也不例外
- 调用: Skill({ skill: 'research-synthesis' })
参考模板
使用.claude/templates/spawn/universal-agent-spawn.md作为规范参考模板。
在最终化任何模板前,比较:
- [ ] 有清晰的占位符文档
- [ ] 占位符是大写带下划线
- [ ] 有使用示例部分
- [ ] 有集成笔记
- [ ] 有创建后检查清单
- [ ] 有内存协议
模板最佳实践
占位符标准
| 实践 | 好 | 坏 |
|---|---|---|
| 命名 | {{代理名称}} |
{{名称}}, {代理名称} |
| 必填字段 | 始终存在 | 有时省略 |
| 可选字段 | {{字段:默认}} |
无默认指示器 |
| 文档 | 内联注释 | 单独的文档文件 |
| 示例 | 在注释中 | 未提供 |
结构标准
-
YAML前端优先
- 所有机器可读元数据
- 解释每个字段的注释
-
创建后检查清单第二
- 使用模板后的阻塞步骤
- 验证命令
-
内容部分
- 遵循类型的现有模式
- 包括所有必需部分
-
内存协议最后
- 所有模板的标准格式
- 始终存在
验证示例
在模板中包括验证示例:
## 验证
替换占位符后,验证:
```bash
# 检查YAML有效
head -50 <文件> | grep -E "^---$" | wc -l # 应为2
# 检查无未解析占位符
grep "{{" <文件> && echo "错误: 未解析占位符!"
# 检查必需部分存在
grep -E "^## 内存协议" <文件> || echo "错误: 缺少内存协议!"
```
系统影响分析(必填)
创建模板后,完成此7点分析:
[模板创建器] 系统影响分析为: <模板名称>
1. README更新(必填 - 步骤9)
- 添加到.claude/templates/README.md
- 文档使用说明
- 快速参考表更新
2. 目录更新(必填 - 步骤8)
- 添加到.claude/context/artifacts/catalogs/template-catalog.md
- 文档类别、状态、代理、技能
- 明确说明目的
3. CLAUDE.MD更新(条件性 - 步骤10)
- 模板是框架重要的吗?如果是,添加到CLAUDE.md
- 生成模板 -> 第2节
- 创建器模板 -> 相关创建器部分
- 用户可调用 -> 第8.5节
4. 消费者分配(必填 - 步骤11)
- 哪些技能/代理消费此模板?
- 模板引用是否添加到消费创建器技能?
- 用grep验证跨skills/和agents/
5. 相关模板检查
- 此模板是否取代现有模板?
- 有需要交叉引用的相关模板吗?
- 应更新或删除存档模板吗?
6. 安全合规 (SEC-TMPL-006, SEC-TC-001, SEC-TC-007)
- 无秘密、凭据或绝对路径
- 仅相对路径
- 尊重保留要求
- 生成模板占位符清理
7. 内存更新
- 在learnings.md中记录创建
- 在decisions.md中文档任何决策
工作流集成
此技能是统一工件生命周期的一部分。对于完整多代理编排:
路由器决策: .claude/workflows/core/router-decision.md
- 路由器如何发现和调用此技能的工件
工件生命周期: .claude/workflows/core/skill-lifecycle.md
- 发现、创建、更新、废弃阶段
- 版本管理和注册更新
- CLAUDE.md集成要求
外部集成: .claude/workflows/core/external-integration.md
- 安全集成外部工件
- 安全审查和验证阶段
生成模板解析器: .claude/lib/spawn/spawn-template-resolver.cjs
- 生成操作的程序化模板选择
- 模板评分和回退逻辑
交叉引用: 创建器生态系统
此技能是创建器生态系统的一部分。需要时使用伴侣创建器:
| 创建器 | 何时使用 | 调用 |
|---|---|---|
| 代理创建器 | 模板需要代理集成 | Skill({ skill: 'agent-creator' }) |
| 技能创建器 | 模板需要技能集成 | Skill({ skill: 'skill-creator' }) |
| 工作流创建器 | 模板需要工作流模式 | Skill({ skill: 'workflow-creator' }) |
| 模式创建器 | 模板需要JSON模式 | Skill({ skill: 'schema-creator' }) |
| 钩子创建器 | 模板需要钩子 | Skill({ skill: 'hook-creator' }) |
集成工作流
创建需要额外工件的模板后:
// 1. 为新钩子类型创建模板
// 2. 需要使用模板创建示例钩子
Skill({ skill: 'hook-creator' });
// 3. 为新代理类别创建模板
// 4. 需要更新代理创建器以识别新类别
// 编辑.claude/skills/agent-creator/SKILL.md以添加类别
生态系统集成的创建后检查清单
模板完全创建并验证后:
[ ] 模板需要伴侣技能吗? -> 使用技能创建器
[ ] 模板需要伴侣工作流吗? -> 使用工作流创建器
[ ] 模板是否取代现有模板? -> 存档旧的
[ ] 模板应成为企业工作流的一部分吗? -> 更新第8.6节
[ ] 模板与生成模板解析器交互吗? -> 更新解析器配置
文件放置和标准
输出位置规则
此技能输出到: .claude/templates/
按类型的子目录:
spawn/- 代理生成提示模板 (4模板)agents/- 代理定义模板 (2模板)skills/- 技能定义模板 (1模板)workflows/- 工作流定义模板 (1模板)reports/- 报告文档模板 (5模板)code-styles/- 语言风格指南 (3模板)- 根级别 - 通用文档模板 (8+模板)
_archive/- 存档/废弃模板 (14模板)
强制引用
- 文件放置: 参见
.claude/docs/FILE_PLACEMENT_RULES.md - 开发者工作流: 参见
.claude/docs/DEVELOPER_WORKFLOW.md - 工件命名: 参见
.claude/docs/ARTIFACT_NAMING.md - 工作区约定: 参见
.claude/rules/workspace-conventions.md(输出放置、命名、来源)
执行
文件放置由file-placement-guard.cjs钩子执行。
无效放置将在生产模式中被阻止。
分配代理
此技能通常由以下调用:
| 代理 | 角色 | 分配原因 |
|---|---|---|
| 规划师 | 规划标准化 | 为新模式创建模板 |
| 架构师 | 架构模式 | 为架构工件创建模板 |
| 开发者 | 代码模式 | 创建代码脚手架模板 |
调用此技能:
Skill({ skill: 'template-creator' });
示例
示例1: 创建报告模板
请求: “创建安全审计报告模板”
过程:
- 研究: 调用
research-synthesis,审查.claude/templates/reports/中的现有报告模板 - 收集: 分析报告类型、安全重点、审计发现结构
- 验证名称:
security-audit-report-template匹配/^[a-z0-9][a-z0-9-]*[a-z0-9]$/ - 设计: 安全审计报告的结构
- 创建:
.claude/templates/reports/security-audit-report-template.md
---
# [必填] 报告标识符,小写带连字符
名称: { { 报告名称 } }
# [必填] 此报告文档什么
描述: { { 报告描述 } }
# [必填] 报告类型: 审计、实现、研究、反思、计划
类型: 审计
# [必填] 发现的严重级别
严重级别: [关键, 高, 中, 低]
---
# {{报告显示名称}} 报告
## 创建后检查清单(阻塞)
创建此报告后:
- [ ] 所有发现按严重性分类
- [ ] 建议可操作且具体
- [ ] 所有声明提供证据
## 发现
### 关键
{{关键发现}}
### 高
{{高发现}}
## 建议
{{建议}}
## 内存协议(必填)
**开始前:** 读取`.claude/context/memory/learnings.md`
**完成后:** 记录模式到learnings.md
- 更新目录: 添加到template-catalog.md下的报告模板
- 更新README: 添加到模板README的报告部分
- 分配消费者: 更新安全架构师和qa代理引用
- 更新内存: 记录在learnings.md中
示例2: 创建生成模板
请求: “创建专门代理生成提示模板”
过程:
- 研究: 调用
research-synthesis,审查.claude/templates/spawn/universal-agent-spawn.md - 收集: 分析生成模式、专门与通用
- 验证名称:
specialized-agent-spawn匹配名称正则表达式 - 设计: 专门生成提示的结构,带安全考虑 (SEC-TC-001)
- 创建:
.claude/templates/spawn/specialized-agent-spawn.md
---
# [必填] 模板标识符
名称: { { 模板名称 } }
# [必填] 此模板生成的代理类型
代理类型: { { 代理类型 } }
# [必填] 推荐模型: haiku, sonnet, opus
模型: { { 模型:sonnet } }
# [可选] 任务复杂性级别
复杂性: { { 复杂性:中 } }
---
# {{代理显示名称}} 生成模板
## 安全通知 (SEC-TC-001)
代入`prompt:`字段的占位符值必须使用`prompt-factory.cjs`中的`sanitizeSubstitutionValue()`清理。
这防止通过用户提供任务描述的提示注入。
## 用法
当生成{{代理类型}}代理时使用此模板。
## 生成模式
任务({
子代理类型: '{{代理类型}}',
模型: '{{模型}}',
任务ID: '{{任务ID}}',
提示: '你是{{代理身份}}。 ... TaskUpdate协议 ...'
});
## 验证
使用此模板后:
- [ ] task_id唯一且匹配提示
- [ ] 模型匹配代理复杂性要求
- [ ] TaskUpdate协议包括在提示中
- [ ] 成功标准明确定义
- [ ] 提示字段中无未清理用户输入
- 更新目录: 添加到template-catalog.md下的生成模板
- 更新README: 添加到模板README的生成部分
- 更新CLAUDE.md: 如果框架标准,添加到第2节(生成模板)
- 分配消费者: 更新路由器和spawn-template-resolver引用
- 更新内存: 记录在learnings.md中
故障排除
问题: 占位符未渲染
症状: {{占位符}}出现在最终文件中
解决方案:
- 检查占位符格式(双大括号,大写)
- 确保用户替换了所有占位符
- 添加验证命令以捕获未替换的
问题: 模板不可发现
症状: 模板存在但创建者未找到
解决方案:
- 验证template-catalog.md已更新(步骤8)
- 验证README.md已更新(步骤9)
- 检查文件在正确目录中
- 运行:
grep "<模板名称>" .claude/context/artifacts/catalogs/template-catalog.md
问题: 不一致模板结构
症状: 不同模板有不同格式
解决方案:
- 创建前审查现有模板
- 使用此技能的模式
- 与参考模板比较 (universal-agent-spawn.md)
- 运行跨模板一致性检查
问题: 生成模板注入风险
症状: 用户提供内容在生成模板占位符中可能操纵代理行为
解决方案:
- 审查此技能中的SEC-TC-001指南
- 确保引用
sanitizeSubstitutionValue() - 不要将
{{占位符}}令牌直接放置在prompt:字段中用于用户输入 - 使用结构化任务描述,将用户内容与系统指令分开
问题: 创建器守卫阻止模板写入
症状: unified-creator-guard.cjs阻止你的模板写入
解决方案:
- 确保你正确调用此技能:
Skill({ skill: 'template-creator' }) - 检查创建器状态活跃(3分钟TTL)
- 如果调试:
CREATOR_GUARD=warn(临时,之后恢复为block) - 永远不要在production中使用
CREATOR_GUARD=off
内存协议(必填)
开始前:
cat .claude/context/memory/learnings.md
检查:
- 先前创建的模板
- 已知模板模式
- 用户对模板行为的偏好
完成后:
- 新模板模式 ->
.claude/context/memory/learnings.md - 发现问题 ->
.claude/context/memory/issues.md - 做出决策 ->
.claude/context/memory/decisions.md
假设中断: 如果不在内存中,它就没发生。
创建后集成
创建完成后,运行生态系统集成检查清单:
- 从
.claude/lib/creators/creator-commons.cjs调用runIntegrationChecklist(artifactType, artifactPath) - 从
.claude/lib/creators/creator-commons.cjs调用queueCrossCreatorReview(artifactType, artifactPath) - 审查影响报告 — 在标记任务完成前解决所有
mustHave项 - 记录任何
shouldHave项为后续任务
集成验证:
- [ ] 模板添加到template-catalog.md
- [ ] 模板README存在于模板位置
- [ ] 模板分配给消费技能
- [ ] 提供模板示例
生态系统对齐合同(必填)
此创建器技能是协调创建器生态系统的一部分。这里创建的任何工件必须对齐并验证相关创建器:
agent-creator用于所有权和执行路径skill-creator用于能力打包和分配tool-creator用于可执行自动化表面hook-creator用于执行和护栏rule-creator和semgrep-rule-creator用于策略和静态检查template-creator用于标准化脚手架workflow-creator用于编排和阶段门控command-creator用于用户/操作员命令UX
交叉创建器握手(必需)
完成前,验证所有相关握手:
- 工件路由存在于
.claude/CLAUDE.md和相关路由文档中。 - 发现/注册条目已更新(目录/索引/注册适用)。
- 伴侣工件已创建或明确豁免并说明原因。
validate-integration.cjs对创建的工件通过。- 技能索引在技能元数据更改时重新生成。
研究门(Exa优先,arXiv回退)
对于新模式、模板或工作流,研究是强制的:
- 首先使用Exa获取实现和生态系统模式。
- 如果Exa不足,使用
WebFetch加arXiv引用。 - 在工件引用/文档中记录决策、约束和非目标。
- 保持更新最小化,避免过度工程。
回归安全交付
- 对行为更改遵循严格的RED -> GREEN -> REFACTOR。
- 为更改模块运行针对性测试。
- 对更改文件运行lint/format。
- 保持提交按关注点划分(逻辑/文档/生成工件)。