OpenSpec 是一个面向 AI 辅助开发的“规范驱动开发(Spec-Driven Development, SDD)”项目框架。
它的核心思想是:先写清楚“要做什么”(需求和设计规格【Spec】),再让 AI 或开发者根据规范去实现代码。这样可以减少需求歧义、提升协作效率,并让 AI 生成的代码更稳定、可维护。
简单描述就是:OpenSpec 就是用结构化规范来驱动 AI 编码、文档生成和项目协作。
参考
注意:需要 Node.js 20.19.0+ 版本
npm 全局安装 OpenSpec:
1
|
npm install -g @fission-ai/openspec@latest
|
初始化使用:
1
2
|
cd your-project
openspec init
|
后面的执行命令不用死记,后面用 AI 工具可以直接让 AI 执行 OpenSpec 规范流程处理。
Claude Code 是由 Anthropic 推出的一个 AI 编程工具,它将 Claude 大语言模型直接集成到终端(CLI)中,让开发者能够通过自然语言完成代码开发、修改、调试、测试和项目维护工作。
Claude Code 的定位:AI 软件工程师 + 命令行工具
注意:中国区有地域限制,需要出国。
Linux:
1
|
curl -fsSL https://claude.ai/install.sh | bash
|
Windows CMD:
1
|
curl -fsSL https://claude.ai/install.cmd -o install.cmd && install.cmd && del install.cmd
|
npm:
1
|
npm install -g @anthropic-ai/claude-code
|
初始化执行:
1
2
|
cd your-project
claude
|
claude hud命令行插件:在输入框下展示上下文使用情况、活动工具、正在运行的代理和待办事项进度。
安装命令
1
2
3
4
5
6
7
8
9
|
# 1. Add the marketplace
/plugin marketplace add jarrodwatts/claude-hud
# 2. Install the plugin / reload plugins
/plugin install claude-hud
/reload-plugins
# 3. Configure the statusline
/claude-hud:setup
|
Anthropic 官方开源的 frontend-design skill
告诉模型在生成 UI 时应该遵循什么原则、避免什么陷阱。
Skill 装好之后,它会自动注入设计原则,但你的提示词越具体,输出质量越高。
1
|
/plugin install frontend-design@claude-plugins-official
|
使用示例
1
|
使用 frontend-design skill,创建一个4A管理的首页。
|
skill-creator 插件安装
1
2
3
4
5
|
/plugin install skill-creator@claude-plugins-official
/reload-plugins
# 列出插件列表
/plugin list
|
创建 skill,示例:创建 Java 编码规范(java-code-style)
1
2
3
4
5
6
7
8
9
|
/skill-creator 创建Java代码规范skill
1. 禁用tab缩进,使用4个空格缩进
2. if/else/when/while/case/方法换行前用大括号
3. 类、方法、字段属性需要添加注释说明,复杂代码需添加行注释说明
4. 方法、类字段属性使用小驼峰命名,静态变量使用大写带下划线命名
5. 行长度到140字符需换行
6. 方法参数多于2个需要换行
7. Java代码必须使用UTF-8编码格式
8. 项目中有.editorconfig文件优先以此文件编码规范执行
|
%USER_HOME%\.claude\skills\java-code-style\SKILL.md
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
|
---
name: java-code-style
description: 应用该开发者个人的 Java 代码风格规范——4 空格缩进(禁用 tab)、if/else/while/for/switch/方法采用 K&R 风格大括号、类/方法/字段必须有注释、方法与字段使用小驼峰命名、静态变量使用大写下划线命名、行宽换行、方法参数超过 2 个需换行、以及 UTF-8 源码编码。只要是在编写新的 Java(.java)代码、编辑/重构已有 Java 代码,或对 Java 代码做风格审查,都应使用本 skill——即使用户只是说"加个方法"或"写个类"而没有明确提到风格规范。如果目标项目存在 .editorconfig 文件,其设置优先于本 skill 中的默认规则。
---
# Java 代码风格规范
这是这位开发者对 Java 源码的一贯要求,整理在这里是为了让 Claude 不必每个文件都被重新提醒一遍。只要是你在编写或改动 `.java` 代码——新建类、加方法、重构,或做一次风格检查——都应遵循以下规则,不管用户是否明确提到"风格"或"格式化"。
## 0. 先检查是否存在 `.editorconfig`
在套用下面的默认规则之前,先查看项目根目录(或所编辑文件的任一上级目录)是否有 `.editorconfig`。凡是它定义了的项——`indent_style`、`indent_size`、`max_line_length`、`charset` 等——**都以它为准**。本 skill 中的规则只是项目自身没有明确约定时的兜底默认值,并不是要覆盖项目自己文档化的规范。
例如:如果 `.editorconfig` 设置了 `max_line_length = 120`,那么在该项目中就按 120 换行,即使下面第 5 条的默认值是 140。
## 1. 缩进:4 个空格,禁用 tab
Java 源码中不允许出现 `\t` 字符,每一级缩进都是 4 个实际的空格。这纯粹是为了在不同编辑器间保持一致的显示效果——tab 在不同配置下宽度不同,正是这一点导致代码评审时的 diff 错位、难以对齐。
## 2. 大括号风格(K&R / "埃及"风格)
左大括号跟在引出它的语句后面、写在同一行——绝不能另起一行——并且每一个 `if`、`else`、`while`、`for`、`switch` 以及方法体都必须使用大括号,哪怕内部只有一条语句也不能省略。省略单行语句的大括号,正是"给 if 加了第二条语句结果它却悄悄跑到块外面去了"这类经典 bug 的成因。
```java
// 推荐写法
if (user.isActive()) {
activate(user);
} else if (user.isPending()) {
queue(user);
} else {
reject(user);
}
for (Order order : orders) {
process(order);
}
switch (status) {
case ACTIVE: {
handleActive();
break;
}
default: {
handleUnknown();
break;
}
}
public void activate(User user) {
user.setActive(true);
}
```
```java
// 避免:大括号另起一行
if (user.isActive())
{
activate(user);
}
// 避免:单行语句省略大括号
if (user.isActive())
activate(user);
```
## 3. 类、方法、字段都要加注释
public 及包内可见的类、方法、字段都需要一句简短的说明性注释——不是把名字重复一遍,而是说明它的作用或存在的原因。琐碎的私有局部变量不需要注释,但方法体内任何不直观的逻辑(一个精妙的计算、一个临时绕过方案、一个必须保证的顺序约束)都应在关键处加上行内 `//` 注释说明。
```java
/**
* 负责协调订单履约流程:锁定库存、完成支付扣款,并在一个事务内安排发货。
*/
public class OrderFulfillmentService {
/** 订单被升级为人工review之前允许的最大重试次数。 */
private static final int MAX_RETRIES = 3;
/** 为订单锁定库存;若任一商品库存不足则抛出异常。 */
public void reserveStock(Order order) {
// 按价格从高到低排序,让高价值商品优先失败,
// 避免先锁定了低价值商品之后还要额外回滚。
order.getItems().sort(Comparator.comparing(Item::getPrice).reversed());
...
}
}
```
不需要把注释写成繁文缛节——大多数成员一行 `/** ... */` 就足够了。多行说明留给类本身,或者真正不直观的复杂逻辑。
## 4. 命名规范
- 方法、字段、参数、局部变量:使用小驼峰命名 `camelCase`(例如 `orderTotal`、`calculateShipping`)。
- 静态变量(无论是否为常量):使用大写下划线命名 `UPPER_SNAKE_CASE`(例如 `MAX_RETRIES`、`DEFAULT_TIMEOUT_MS`)。
- 类和接口沿用 Java 标准的大驼峰命名 `PascalCase`——这是默认约定,不在此开发者的自定义范围内。
## 5. 行长度达到 140 字符需换行
如果一行超过 140 字符,就需要换行——通常在运算符之后、链式调用的 `.` 之前,或参数之间断开——并将续行多缩进一级,使其在视觉上与下一条语句区分开来。(别忘了第 0 条:如果项目自己的 `.editorconfig` 定义了 `max_line_length`,以它为准,而不是这里的 140 默认值。)
## 6. 方法参数多于 2 个需要换行
方法参数为 0~2 个时保持在同一行。一旦方法参数达到 3 个或以上,每个参数单独占一行、缩进一级,这样长方法签名不会淹没在一大堆文字里,参数变更时的 diff 也能保持简洁。
```java
// 2 个参数:写在一行即可
public void transfer(Account from, Account to) { ... }
// 3 个及以上参数:每2个参数单独一行
public void transfer(
Account from, Account to,
BigDecimal amount, Currency currency) {
...
}
```
这条规则同样适用于方法/构造函数的声明,以及参数超过 2 个、换行有助于可读性的调用点。
## 7. 源码编码:UTF-8
Java 源文件必须以 UTF-8 编码保存,没有例外——Java 的默认平台编码因操作系统而异,依赖它正是中文、日文、emoji 等非 ASCII 字符串字面量和注释在生产环境中出现乱码的根本原因。新建 `.java` 文件时,要显式保存为 UTF-8,不要依赖编辑器的默认设置。
|
OpenSpec规范agent创建
1
|
创建子agent,当所有编码实现完成后更新OpenSpec规范propose.md/design.md/task.md文档,没有OpenSpec则创建一个新的
|
前后端子agent创建
1
2
3
|
创建2个子agent,agents文档使用中文编写
一个为Vue3前端编码:项目使用TypeScript,UI 组件库选Element Plus,状态管理用Pinia,前端目录frontend
一个为后端Java/Spring Boot项目编码:在项目backend后端目录下使用Java 21/Spring Boot 3.5实现编码
|
Claude Code 配置文件(可以支持国内阿里百炼等AI语言模型接入),也可以直接使用 Claude Code
- 全局配置:
~/.claude/settings.json
- 项目配置:
project/.claude/settings.json
阿里云百炼 Token Plan 团队版:
1
2
3
4
5
6
7
8
9
10
11
|
{
"env": {
"ANTHROPIC_AUTH_TOKEN": "YOUR_API_KEY",
"ANTHROPIC_BASE_URL": "https://token-plan.cn-beijing.maas.aliyuncs.com/apps/anthropic",
"ANTHROPIC_MODEL": "qwen3.7-max",
"ANTHROPIC_DEFAULT_HAIKU_MODEL": "qwen3.6-flash",
"ANTHROPIC_DEFAULT_SONNET_MODEL": "qwen3.7-max",
"ANTHROPIC_DEFAULT_OPUS_MODEL": "qwen3.7-max",
"CLAUDE_CODE_SUBAGENT_MODEL": "qwen3.7-max"
}
}
|
Codex 是 OpenAI 推出的 AI Agent(智能代理)产品,最初是一个专门用于代码生成的模型,如今已经发展成能够执行实际工作的智能助手。它不仅能写代码,还能操作文件、运行工作流、生成文档、处理数据等任务。