create-vela-workflow 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +136 -0
- package/bin/cli.js +188 -0
- package/docs/ai-workflow-tutorial.md +462 -0
- package/docs/official-site-tutorial.md +391 -0
- package/package.json +34 -0
- package/templates/.github/HARNESS-ENGINEERING-GUIDE.md +407 -0
- package/templates/.github/agents/vela-knowledge.agent.md +45 -0
- package/templates/.github/agents/vela-s1-prd.agent.md +69 -0
- package/templates/.github/agents/vela-s2-tech.agent.md +66 -0
- package/templates/.github/agents/vela-s3-coding.agent.md +301 -0
- package/templates/.github/agents/vela-workflow.agent.md +110 -0
- package/templates/.github/copilot-instructions.md +64 -0
- package/templates/.github/prompts/vela-apis.prompt.md +98 -0
- package/templates/.github/prompts/vela-best-practices.prompt.md +93 -0
- package/templates/.github/prompts/vela-components.prompt.md +118 -0
- package/templates/.github/prompts/vela-dev-guide.prompt.md +622 -0
- package/templates/.github/rules/project-init.md +45 -0
- package/templates/.github/rules/vela-coding-convention.md +324 -0
- package/templates/.github/rules/vela-css.md +217 -0
- package/templates/.github/rules/vela-design-driven.md +306 -0
- package/templates/.github/rules/vela-figma-mcp.md +198 -0
- package/templates/.github/rules/vela-format.md +119 -0
- package/templates/.github/rules/vela-layout.md +67 -0
- package/templates/.github/rules/vela-platform.md +46 -0
- package/templates/.github/rules/vela-quality.md +109 -0
- package/templates/.kiro/hooks/figma-design-check.kiro.hook +14 -0
- package/templates/.kiro/hooks/post-coding-validation.kiro.hook +13 -0
- package/templates/.kiro/hooks/validate-ux-files.kiro.hook +16 -0
- package/templates/.kiro/settings/mcp.json +7 -0
- package/templates/.kiro/skills/vela-js-app/SKILL.md +1072 -0
- package/templates/.kiro/steering/workflow-conventions.md +110 -0
- package/templates/.workflow/resource-paths.json +62 -0
- package/templates/.workflow/scripts/.gitkeep +0 -0
- package/templates/.workflow/scripts/checkpoint_manager.js +284 -0
- package/templates/.workflow/scripts/context_loader.js +841 -0
- package/templates/.workflow/scripts/figma_export.js +346 -0
- package/templates/.workflow/scripts/session_manager.js +438 -0
- package/templates/.workflow/stages/.gitkeep +0 -0
- package/templates/.workflow/stages/commands.md +171 -0
- package/templates/.workflow/stages/s1_prd.md +286 -0
- package/templates/.workflow/stages/s2_tech_design.md +302 -0
- package/templates/.workflow/stages/s3_coding.md +699 -0
- package/templates/.workflow/stages/s4_simulator.md +259 -0
- package/templates/.workflow/workflow-config.json +46 -0
- package/templates/.workflow/workflow_starter.md +912 -0
package/README.md
ADDED
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
# create-vela-workflow
|
|
2
|
+
|
|
3
|
+
> Vela 快应用 AI 自动化开发工作流脚手架 — 一键初始化 AI 辅助开发环境
|
|
4
|
+
|
|
5
|
+
## 简介
|
|
6
|
+
|
|
7
|
+
让 AI 帮你写小米手表应用。本工具为你的项目注入 AI 工作流配置,支持两种 IDE 环境:
|
|
8
|
+
|
|
9
|
+
| 方式 | IDE | AI 引擎 | 安装模式 |
|
|
10
|
+
|------|-----|---------|---------|
|
|
11
|
+
| 方式一 | AIoT IDE / VS Code | GitHub Copilot | `--mode copilot` |
|
|
12
|
+
| 方式二 | Kiro | Kiro AI (Claude) | `--mode kiro` |
|
|
13
|
+
|
|
14
|
+
## 快速开始
|
|
15
|
+
|
|
16
|
+
```bash
|
|
17
|
+
# 在当前目录安装全部工作流配置
|
|
18
|
+
npx create-vela-workflow .
|
|
19
|
+
|
|
20
|
+
# 创建新目录并安装
|
|
21
|
+
npx create-vela-workflow my-app
|
|
22
|
+
|
|
23
|
+
# 仅安装 Copilot Agent 方式
|
|
24
|
+
npx create-vela-workflow my-app --mode copilot
|
|
25
|
+
|
|
26
|
+
# 仅安装 Kiro Workflow 方式
|
|
27
|
+
npx create-vela-workflow my-app --mode kiro
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## 安装后使用
|
|
31
|
+
|
|
32
|
+
### 方式一:AIoT IDE / VS Code + Copilot
|
|
33
|
+
|
|
34
|
+
1. 在 IDE 中打开项目
|
|
35
|
+
2. 打开 Copilot Chat
|
|
36
|
+
3. 选择 `Vela 快应用工作流` Agent
|
|
37
|
+
4. 输入需求描述,工作流自动启动
|
|
38
|
+
|
|
39
|
+
### 方式二:Kiro + Workflow
|
|
40
|
+
|
|
41
|
+
1. 在 Kiro 中打开项目
|
|
42
|
+
2. 对话框输入 `@.workflow/workflow_starter.md`
|
|
43
|
+
3. 按提示输入需求,工作流自动执行
|
|
44
|
+
|
|
45
|
+
## 安装的文件
|
|
46
|
+
|
|
47
|
+
### `--mode copilot` 安装内容
|
|
48
|
+
|
|
49
|
+
```
|
|
50
|
+
.github/
|
|
51
|
+
├── agents/ # 自定义 Agent
|
|
52
|
+
│ ├── vela-workflow.agent.md # 工作流协调器(入口)
|
|
53
|
+
│ ├── vela-s1-prd.agent.md # S1: PRD 生成
|
|
54
|
+
│ ├── vela-s2-tech.agent.md # S2: 技术方案
|
|
55
|
+
│ ├── vela-s3-coding.agent.md # S3: 代码生成
|
|
56
|
+
│ └── vela-knowledge.agent.md # 知识库查询
|
|
57
|
+
├── rules/ # 编码规则(自动注入)
|
|
58
|
+
├── prompts/ # 知识参考(按需加载)
|
|
59
|
+
└── copilot-instructions.md # 全局指令
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
### `--mode kiro` 安装内容
|
|
63
|
+
|
|
64
|
+
```
|
|
65
|
+
.kiro/
|
|
66
|
+
├── skills/vela-js-app/SKILL.md # 完整知识库
|
|
67
|
+
├── steering/ # 工作流规范(自动加载)
|
|
68
|
+
├── hooks/ # 自动化钩子
|
|
69
|
+
└── settings/mcp.json # MCP 配置
|
|
70
|
+
|
|
71
|
+
.workflow/
|
|
72
|
+
├── workflow_starter.md # 工作流入口
|
|
73
|
+
├── scripts/ # 引擎脚本
|
|
74
|
+
└── stages/ # 阶段编排
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
## 前置要求
|
|
78
|
+
|
|
79
|
+
- Node.js >= 16
|
|
80
|
+
- aiot-toolkit(`npm install -g aiot-toolkit`)
|
|
81
|
+
|
|
82
|
+
### 方式一额外要求
|
|
83
|
+
- VS Code 或 AIoT IDE
|
|
84
|
+
- GitHub Copilot 订阅
|
|
85
|
+
|
|
86
|
+
### 方式二额外要求
|
|
87
|
+
- Kiro IDE
|
|
88
|
+
|
|
89
|
+
## 支持的功能
|
|
90
|
+
|
|
91
|
+
- ✅ 三阶段工作流:PRD → 技术方案 → 代码生成
|
|
92
|
+
- ✅ 快速模式:跳过文档,直接生成代码
|
|
93
|
+
- ✅ Figma 设计稿导入与图片导出
|
|
94
|
+
- ✅ 飞书文档需求导入
|
|
95
|
+
- ✅ 圆屏/方屏多设备适配
|
|
96
|
+
- ✅ 代码质量自动校验
|
|
97
|
+
- ✅ 断点恢复(Kiro 方式)
|
|
98
|
+
|
|
99
|
+
## 更新
|
|
100
|
+
|
|
101
|
+
```bash
|
|
102
|
+
# 获取最新版本
|
|
103
|
+
npx create-vela-workflow@latest . --mode all
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
## 文档
|
|
107
|
+
|
|
108
|
+
- [AI 自动化生成应用教程](https://iot.mi.com/vela/quickapp/ai-workflow)
|
|
109
|
+
- [Vela 快应用官方文档](https://iot.mi.com/vela/quickapp/)
|
|
110
|
+
|
|
111
|
+
## 命令行参数
|
|
112
|
+
|
|
113
|
+
```
|
|
114
|
+
用法: npx create-vela-workflow [目标目录] [选项]
|
|
115
|
+
|
|
116
|
+
选项:
|
|
117
|
+
--mode <mode> 安装模式 (默认: all)
|
|
118
|
+
copilot — 仅安装 .github/
|
|
119
|
+
kiro — 仅安装 .kiro/ + .workflow/
|
|
120
|
+
all — 安装全部
|
|
121
|
+
--help, -h 显示帮助信息
|
|
122
|
+
--version, -v 显示版本号
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
## 维护者发布
|
|
126
|
+
|
|
127
|
+
```bash
|
|
128
|
+
# 修改代码后发布新版本
|
|
129
|
+
cd release/
|
|
130
|
+
npm version patch # 或 minor / major
|
|
131
|
+
npm publish
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
## License
|
|
135
|
+
|
|
136
|
+
MIT
|
package/bin/cli.js
ADDED
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
'use strict'
|
|
4
|
+
|
|
5
|
+
const fs = require('fs')
|
|
6
|
+
const path = require('path')
|
|
7
|
+
|
|
8
|
+
// ============================================================
|
|
9
|
+
// create-vela-workflow CLI
|
|
10
|
+
// 用法:
|
|
11
|
+
// npx create-vela-workflow [项目目录] [--mode copilot|kiro|all]
|
|
12
|
+
// npx create-vela-workflow --help
|
|
13
|
+
// npx create-vela-workflow --version
|
|
14
|
+
// ============================================================
|
|
15
|
+
|
|
16
|
+
const VERSION = require('../package.json').version
|
|
17
|
+
const TEMPLATES_DIR = path.join(__dirname, '..', 'templates')
|
|
18
|
+
|
|
19
|
+
// 颜色输出
|
|
20
|
+
const colors = {
|
|
21
|
+
green: (t) => `\x1b[32m${t}\x1b[0m`,
|
|
22
|
+
yellow: (t) => `\x1b[33m${t}\x1b[0m`,
|
|
23
|
+
red: (t) => `\x1b[31m${t}\x1b[0m`,
|
|
24
|
+
cyan: (t) => `\x1b[36m${t}\x1b[0m`,
|
|
25
|
+
bold: (t) => `\x1b[1m${t}\x1b[0m`,
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
function printHelp() {
|
|
29
|
+
console.log(`
|
|
30
|
+
${colors.bold('create-vela-workflow')} v${VERSION}
|
|
31
|
+
Vela 快应用 AI 自动化开发工作流脚手架
|
|
32
|
+
|
|
33
|
+
${colors.bold('用法:')}
|
|
34
|
+
npx create-vela-workflow [目标目录] [选项]
|
|
35
|
+
|
|
36
|
+
${colors.bold('选项:')}
|
|
37
|
+
--mode <mode> 安装模式 (默认: all)
|
|
38
|
+
copilot — 仅安装 .github/ (VS Code/AIoT IDE + Copilot)
|
|
39
|
+
kiro — 仅安装 .kiro/ + .workflow/ (Kiro IDE)
|
|
40
|
+
all — 安装全部
|
|
41
|
+
--help, -h 显示帮助信息
|
|
42
|
+
--version, -v 显示版本号
|
|
43
|
+
|
|
44
|
+
${colors.bold('示例:')}
|
|
45
|
+
npx create-vela-workflow my-app
|
|
46
|
+
npx create-vela-workflow my-app --mode copilot
|
|
47
|
+
npx create-vela-workflow . --mode kiro
|
|
48
|
+
npx create-vela-workflow --mode all
|
|
49
|
+
|
|
50
|
+
${colors.bold('文档:')}
|
|
51
|
+
https://iot.mi.com/vela/quickapp/
|
|
52
|
+
`)
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
function printVersion() {
|
|
56
|
+
console.log(VERSION)
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
// 递归复制目录
|
|
60
|
+
function copyDirSync(src, dest) {
|
|
61
|
+
if (!fs.existsSync(src)) {
|
|
62
|
+
console.log(colors.yellow(` ⚠️ 源目录不存在: ${src}`))
|
|
63
|
+
return 0
|
|
64
|
+
}
|
|
65
|
+
fs.mkdirSync(dest, { recursive: true })
|
|
66
|
+
let count = 0
|
|
67
|
+
const entries = fs.readdirSync(src, { withFileTypes: true })
|
|
68
|
+
for (const entry of entries) {
|
|
69
|
+
const srcPath = path.join(src, entry.name)
|
|
70
|
+
const destPath = path.join(dest, entry.name)
|
|
71
|
+
if (entry.isDirectory()) {
|
|
72
|
+
count += copyDirSync(srcPath, destPath)
|
|
73
|
+
} else {
|
|
74
|
+
fs.copyFileSync(srcPath, destPath)
|
|
75
|
+
count++
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
return count
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
function main() {
|
|
82
|
+
const args = process.argv.slice(2)
|
|
83
|
+
|
|
84
|
+
// 解析参数
|
|
85
|
+
let targetDir = '.'
|
|
86
|
+
let mode = 'all'
|
|
87
|
+
let i = 0
|
|
88
|
+
|
|
89
|
+
while (i < args.length) {
|
|
90
|
+
const arg = args[i]
|
|
91
|
+
if (arg === '--help' || arg === '-h') {
|
|
92
|
+
printHelp()
|
|
93
|
+
process.exit(0)
|
|
94
|
+
}
|
|
95
|
+
if (arg === '--version' || arg === '-v') {
|
|
96
|
+
printVersion()
|
|
97
|
+
process.exit(0)
|
|
98
|
+
}
|
|
99
|
+
if (arg === '--mode') {
|
|
100
|
+
i++
|
|
101
|
+
mode = args[i] || 'all'
|
|
102
|
+
if (!['copilot', 'kiro', 'all'].includes(mode)) {
|
|
103
|
+
console.error(colors.red(`❌ 未知模式: ${mode}`))
|
|
104
|
+
console.error(` 支持: copilot | kiro | all`)
|
|
105
|
+
process.exit(1)
|
|
106
|
+
}
|
|
107
|
+
} else if (!arg.startsWith('-')) {
|
|
108
|
+
targetDir = arg
|
|
109
|
+
}
|
|
110
|
+
i++
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
// 解析目标路径
|
|
114
|
+
const resolvedTarget = path.resolve(targetDir)
|
|
115
|
+
|
|
116
|
+
console.log('')
|
|
117
|
+
console.log(colors.bold('🚀 Vela 快应用 AI 工作流安装器'))
|
|
118
|
+
console.log('═══════════════════════════════════════')
|
|
119
|
+
console.log(`📂 目标目录: ${colors.cyan(resolvedTarget)}`)
|
|
120
|
+
console.log(`📦 安装模式: ${colors.cyan(mode)}`)
|
|
121
|
+
console.log('')
|
|
122
|
+
|
|
123
|
+
// 创建目标目录
|
|
124
|
+
fs.mkdirSync(resolvedTarget, { recursive: true })
|
|
125
|
+
|
|
126
|
+
let totalFiles = 0
|
|
127
|
+
|
|
128
|
+
// 安装 .github (copilot 模式)
|
|
129
|
+
if (mode === 'copilot' || mode === 'all') {
|
|
130
|
+
const src = path.join(TEMPLATES_DIR, '.github')
|
|
131
|
+
const dest = path.join(resolvedTarget, '.github')
|
|
132
|
+
if (fs.existsSync(dest)) {
|
|
133
|
+
console.log(colors.yellow(' ⚠️ .github/ 已存在,将合并覆盖'))
|
|
134
|
+
}
|
|
135
|
+
const count = copyDirSync(src, dest)
|
|
136
|
+
console.log(colors.green(` ✅ .github/ — ${count} 个文件`))
|
|
137
|
+
totalFiles += count
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
// 安装 .kiro (kiro 模式)
|
|
141
|
+
if (mode === 'kiro' || mode === 'all') {
|
|
142
|
+
const kiroSrc = path.join(TEMPLATES_DIR, '.kiro')
|
|
143
|
+
const kiroDest = path.join(resolvedTarget, '.kiro')
|
|
144
|
+
if (fs.existsSync(kiroDest)) {
|
|
145
|
+
console.log(colors.yellow(' ⚠️ .kiro/ 已存在,将合并覆盖'))
|
|
146
|
+
}
|
|
147
|
+
const kiroCount = copyDirSync(kiroSrc, kiroDest)
|
|
148
|
+
console.log(colors.green(` ✅ .kiro/ — ${kiroCount} 个文件`))
|
|
149
|
+
totalFiles += kiroCount
|
|
150
|
+
|
|
151
|
+
const wfSrc = path.join(TEMPLATES_DIR, '.workflow')
|
|
152
|
+
const wfDest = path.join(resolvedTarget, '.workflow')
|
|
153
|
+
if (fs.existsSync(wfDest)) {
|
|
154
|
+
console.log(colors.yellow(' ⚠️ .workflow/ 已存在,将合并覆盖'))
|
|
155
|
+
}
|
|
156
|
+
const wfCount = copyDirSync(wfSrc, wfDest)
|
|
157
|
+
console.log(colors.green(` ✅ .workflow/ — ${wfCount} 个文件`))
|
|
158
|
+
totalFiles += wfCount
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
console.log('')
|
|
162
|
+
console.log('═══════════════════════════════════════')
|
|
163
|
+
console.log(colors.green(colors.bold(`🎉 安装完成!共 ${totalFiles} 个文件`)))
|
|
164
|
+
console.log('')
|
|
165
|
+
|
|
166
|
+
// 使用提示
|
|
167
|
+
if (mode === 'copilot' || mode === 'all') {
|
|
168
|
+
console.log(colors.bold('📋 方式一: AIoT IDE / VS Code + Copilot'))
|
|
169
|
+
console.log(' 1. 在 IDE 中打开项目')
|
|
170
|
+
console.log(' 2. 打开 Copilot Chat')
|
|
171
|
+
console.log(' 3. 选择 "Vela 快应用工作流" Agent')
|
|
172
|
+
console.log(' 4. 输入需求描述,开始开发')
|
|
173
|
+
console.log('')
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
if (mode === 'kiro' || mode === 'all') {
|
|
177
|
+
console.log(colors.bold('📋 方式二: Kiro + Workflow'))
|
|
178
|
+
console.log(' 1. 在 Kiro 中打开项目')
|
|
179
|
+
console.log(' 2. 对话框输入: @.workflow/workflow_starter.md')
|
|
180
|
+
console.log(' 3. 按提示输入需求,工作流自动执行')
|
|
181
|
+
console.log('')
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
console.log(colors.cyan('📚 详细教程: https://iot.mi.com/vela/quickapp/ai-workflow'))
|
|
185
|
+
console.log('')
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
main()
|