关于 add-concept
用于向 `.plain` 文件添加概念定义的技能,涵盖命名、唯一性、引用顺序和循环检查,并提供插入格式与检查清单。
主要功能
- 01验证概念名称语法
- 02检查导入范围内的唯一性
- 03核对引用概念及其顺序
- 04防止循环定义
- 05将定义插入正确章节
适用场景
- 01向现有 `.plain` 文件添加概念
- 02插入前检查定义中的引用
- 03避免概念定义重复或循环
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ plainlang/ plain-forge --skill add-concept安装后在 Claude Code 中输入/add-concept确认已加载。
详细介绍
添加概念
先加载规则。 在读取、编辑或编写任何 .plain 文件之前,调用 load-plain-reference 技能,并阅读其指向的规则文件。仅当本次对话中已经运行过 load-plain-reference 时,才可跳过此步骤。
工作流程
- 确定目标
.plain文件。 如果目标不明确,请询问用户。 - 读取文件,了解现有定义、导入项和概念。
- 根据下方的语法规则验证概念名称。
- 检查唯一性——概念名称不得已存在于文件或其导入项中。
- 检查引用的概念——定义中使用的任何
:ConceptName:都必须已在其上方定义(在此文件中,或通过import/requires导入)。概念引用不得形成循环(例如,A 引用 B,B 又引用 A)。 - 检查循环引用——如果新概念引用了
:B:,那么:B:不得直接或间接引用新概念。应避免以下循环定义示例:
删除反向引用即可修复:- :Order: is placed by :Customer: and contains :OrderItem: entries. - :Customer: is a user who has placed at least one :Order:.- :Customer: is a user of the system. - :Order: is placed by :Customer: and contains :OrderItem: entries. - 将概念插入
***definitions***部分,置于其引用的所有概念之后。 - 再次读取文件,确认位置和语法正确。
概念语法规则
- 用冒号包裹:
:ConceptName: - 使用 CamelCase,且以大写字母开头
- 有效字符:字母、数字、
+、-、.、_ - 在规范及其所有导入项中必须全局唯一
- 从
requires模块导出的概念不会传递导出——若要引用祖先模块导出的概念,请在requires中列出该祖先模块;如果一个概念由多个分支共享,应在共同的导入模块中定义
定义格式
概念定义是 ***definitions*** 中以概念名称开头的项目符号:
***definitions***
- :ConceptName: is a description of what it represents.
属性和约束作为嵌套子项目符号:
***definitions***
- :Task: describes an activity that needs to be done by :User:. :Task: has:
- Name - a short description (required)
- Notes - additional details (optional)
- Due Date - completion deadline (optional)
验证清单
- 名称使用
:CamelCase:格式 - 名称全局唯一(文件或导入项中的其他位置均未定义)
- 定义以概念名称开头
- 所有引用的概念(
:OtherConcept:)都已在上方定义 - 概念之间没有循环引用
- 描述清晰、简洁且与语言无关
- 按
concise-specs.md的要求精简:使用一个普通句子,不重复概念名称,不提供理由 - 放置在
***definitions***部分中
评论
支持 Markdown