kiro-spec-engine 1.4.4 โ 1.5.2
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/CHANGELOG.md +62 -1
- package/README.md +16 -0
- package/README.zh.md +380 -0
- package/bin/kiro-spec-engine.js +102 -44
- package/docs/adoption-guide.md +53 -0
- package/docs/document-governance.md +864 -0
- package/docs/spec-numbering-guide.md +348 -0
- package/docs/spec-workflow.md +65 -0
- package/docs/troubleshooting.md +339 -0
- package/docs/zh/spec-numbering-guide.md +348 -0
- package/lib/adoption/adoption-strategy.js +22 -6
- package/lib/adoption/conflict-resolver.js +239 -0
- package/lib/adoption/diff-viewer.js +226 -0
- package/lib/backup/selective-backup.js +207 -0
- package/lib/commands/adopt.js +95 -10
- package/lib/commands/docs.js +717 -0
- package/lib/commands/doctor.js +141 -3
- package/lib/commands/status.js +77 -5
- package/lib/governance/archive-tool.js +231 -0
- package/lib/governance/cleanup-tool.js +237 -0
- package/lib/governance/config-manager.js +186 -0
- package/lib/governance/diagnostic-engine.js +271 -0
- package/lib/governance/execution-logger.js +243 -0
- package/lib/governance/file-scanner.js +285 -0
- package/lib/governance/hooks-manager.js +333 -0
- package/lib/governance/reporter.js +337 -0
- package/lib/governance/validation-engine.js +181 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -5,7 +5,68 @@ All notable changes to this project will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
-
## [
|
|
8
|
+
## [1.5.2] - 2026-01-24
|
|
9
|
+
|
|
10
|
+
### Fixed
|
|
11
|
+
- Context exporter test assertion to match actual error message format
|
|
12
|
+
|
|
13
|
+
## [1.5.1] - 2026-01-24
|
|
14
|
+
|
|
15
|
+
### Fixed
|
|
16
|
+
- Cross-platform path normalization test compatibility (Windows vs Linux path separators)
|
|
17
|
+
|
|
18
|
+
## [1.5.0] - 2026-01-24
|
|
19
|
+
|
|
20
|
+
### Added
|
|
21
|
+
- **Interactive conflict resolution for kse adopt** ๐ฏ - Choose how to handle conflicting files
|
|
22
|
+
- Three resolution strategies: skip all, overwrite all, or review each file
|
|
23
|
+
- Per-file review with diff viewing capability
|
|
24
|
+
- Selective backup system (only backs up files being overwritten)
|
|
25
|
+
- Full support for --force, --auto, and --dry-run modes
|
|
26
|
+
- Clear conflict categorization (steering, documentation, tools)
|
|
27
|
+
- Usage: `kse adopt` (interactive prompts when conflicts detected)
|
|
28
|
+
|
|
29
|
+
**Benefits**:
|
|
30
|
+
- Full control over which files to keep or overwrite
|
|
31
|
+
- View differences before making decisions
|
|
32
|
+
- Efficient backups (only affected files)
|
|
33
|
+
- Safe adoption with automatic rollback support
|
|
34
|
+
|
|
35
|
+
## [1.4.6] - 2026-01-24
|
|
36
|
+
|
|
37
|
+
### Added
|
|
38
|
+
- **--force option for kse adopt** ๐ฅ - Force overwrite conflicting files during adoption
|
|
39
|
+
- Automatically creates backup before overwriting
|
|
40
|
+
- Shows clear warning when enabled
|
|
41
|
+
- Useful for upgrading template files to latest version
|
|
42
|
+
- Usage: `kse adopt --force`
|
|
43
|
+
|
|
44
|
+
### Fixed
|
|
45
|
+
- Cross-platform path normalization test compatibility
|
|
46
|
+
- Restored missing Chinese README content
|
|
47
|
+
|
|
48
|
+
**Benefits**:
|
|
49
|
+
- Easy template upgrades without manual file management
|
|
50
|
+
- Safe overwriting with automatic backups
|
|
51
|
+
- Clear feedback about what will be changed
|
|
52
|
+
|
|
53
|
+
## [1.4.5] - 2026-01-24
|
|
54
|
+
|
|
55
|
+
### Added
|
|
56
|
+
- **Spec Numbering Strategy Guide** ๐ข - Comprehensive guide for choosing Spec numbering strategies
|
|
57
|
+
- English version: `docs/spec-numbering-guide.md`
|
|
58
|
+
- Chinese version: `docs/zh/spec-numbering-guide.md`
|
|
59
|
+
- Quick reference added to `docs/spec-workflow.md`
|
|
60
|
+
- Covers simple, complex, and hybrid numbering approaches
|
|
61
|
+
- Includes decision tree and practical examples
|
|
62
|
+
- Helps users choose between `XX-00` (simple) vs `XX-YY` (grouped) strategies
|
|
63
|
+
|
|
64
|
+
**Benefits**:
|
|
65
|
+
- Clear guidance on when to use major vs minor numbers
|
|
66
|
+
- Practical examples from real projects (kiro-spec-engine, e-commerce, SaaS)
|
|
67
|
+
- Decision tree for quick strategy selection
|
|
68
|
+
- Best practices and common pitfalls
|
|
69
|
+
- Supports both simple and complex project needs
|
|
9
70
|
|
|
10
71
|
## [1.4.4] - 2026-01-24
|
|
11
72
|
|
package/README.md
CHANGED
|
@@ -227,6 +227,8 @@ sequenceDiagram
|
|
|
227
227
|
|
|
228
228
|
### Core Guides
|
|
229
229
|
- ๐ **[Spec Workflow](docs/spec-workflow.md)** - Understanding Specs in depth
|
|
230
|
+
- ๐ข **[Spec Numbering Strategy](docs/spec-numbering-guide.md)** - How to number your Specs
|
|
231
|
+
- ๐ **[Document Governance](docs/document-governance.md)** - Automated document management
|
|
230
232
|
- ๐ **[Integration Modes](docs/integration-modes.md)** - Three ways to integrate kse
|
|
231
233
|
- ๐ **[Command Reference](docs/command-reference.md)** - All kse commands
|
|
232
234
|
|
|
@@ -259,6 +261,13 @@ sequenceDiagram
|
|
|
259
261
|
### Spec-Driven Development
|
|
260
262
|
Structure your work with Requirements โ Design โ Tasks workflow
|
|
261
263
|
|
|
264
|
+
### Document Governance
|
|
265
|
+
- Automated document lifecycle management
|
|
266
|
+
- Clean project structure enforcement
|
|
267
|
+
- Temporary file cleanup
|
|
268
|
+
- Artifact organization
|
|
269
|
+
- Git hooks for compliance
|
|
270
|
+
|
|
262
271
|
### Multi-User Collaboration
|
|
263
272
|
- Personal workspaces for team members
|
|
264
273
|
- Task claiming and tracking
|
|
@@ -295,6 +304,13 @@ kse prompt generate <spec> <task> # Generate task-specific prompt
|
|
|
295
304
|
kse task claim <spec> <task-id> # Claim a task
|
|
296
305
|
kse task list <spec> # List claimed tasks
|
|
297
306
|
|
|
307
|
+
# Document governance
|
|
308
|
+
kse docs diagnose # Check document compliance
|
|
309
|
+
kse docs cleanup # Remove temporary files
|
|
310
|
+
kse docs validate # Validate document structure
|
|
311
|
+
kse docs archive --spec <name> # Organize Spec artifacts
|
|
312
|
+
kse docs hooks install # Install Git pre-commit hooks
|
|
313
|
+
|
|
298
314
|
# Automation
|
|
299
315
|
kse watch start # Start watch mode
|
|
300
316
|
kse watch status # Check watch status
|
package/README.zh.md
CHANGED
|
@@ -0,0 +1,380 @@
|
|
|
1
|
+
# kse - Kiro Spec Engine
|
|
2
|
+
|
|
3
|
+
[](https://badge.fury.io/js/kiro-spec-engine)
|
|
4
|
+
[](https://opensource.org/licenses/MIT)
|
|
5
|
+
|
|
6
|
+
**AI ็ผ็ ๅทฅๅ
ท็ไธไธๆๆไพ่
** - ็ปๆๅไฝ ็้กน็ฎ้ๆฑใ่ฎพ่ฎกๅไปปๅก๏ผ่ฎฉ AI ๅฉๆๅธฎไฝ ๆๅปบๆดๅฅฝ็่ฝฏไปถใ
|
|
7
|
+
|
|
8
|
+
[English](README.md) | ็ฎไฝไธญๆ
|
|
9
|
+
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
## ไปไนๆฏ kse๏ผ
|
|
13
|
+
|
|
14
|
+
**kse (Kiro Spec Engine) ๆฏไธไธช AI ่พ
ๅฉๅผๅ็ไธไธๆ็ฎก็็ณป็ปใ** ๅฎๅธฎๅฉไฝ ๅฐ้กน็ฎไฟกๆฏ็ป็ปๆ็ปๆๅ็ "Spec"๏ผ้ๆฑ โ ่ฎพ่ฎก โ ไปปๅก๏ผ๏ผ่ฎฉ AI ๅทฅๅ
ท่ฝๅค็่งฃๅๆๆไฝฟ็จใ
|
|
15
|
+
|
|
16
|
+
ๆ kse ๆณ่ฑกๆ **AI ๅฉๆ็ๅพไนฆ็ฎก็ๅ** - ๅฎ็ป็ปๅๅ็ฐ้กน็ฎไธไธๆ๏ผ่ฎฉไฝ ็ AI ๅทฅๅ
ทๅ็กฎ็ฅ้ไฝ ๅจๆๅปบไปไนใไธบไปไนๆๅปบไปฅๅๅฆไฝๆๅปบใ
|
|
17
|
+
|
|
18
|
+
### ๅทฅไฝๅ็
|
|
19
|
+
|
|
20
|
+
```mermaid
|
|
21
|
+
graph LR
|
|
22
|
+
A[ไฝ ๅๅปบ Spec] --> B[kse ็ป็ปไธไธๆ]
|
|
23
|
+
B --> C[AI ๅทฅๅ
ท่ฏปๅไธไธๆ]
|
|
24
|
+
C --> D[AI ็ๆๆดๅฅฝ็ไปฃ็ ]
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
1. **ไฝ ๅๅปบ Spec** - ๅจ็ปๆๅ็ markdown ๆไปถไธญ็ผๅ้ๆฑใ่ฎพ่ฎกๅไปปๅก
|
|
28
|
+
2. **kse ็ป็ปไธไธๆ** - ๅฏผๅบไธบ AI ๅทฅๅ
ทไผๅ็ๆ ผๅผ
|
|
29
|
+
3. **AI ๅทฅๅ
ท่ฏปๅไธไธๆ** - ไฝ ็ AI ๅฉๆ็่งฃ้กน็ฎ็ปๆ
|
|
30
|
+
4. **AI ็ๆๆดๅฅฝ็ไปฃ็ ** - ็ฌฆๅไฝ ่ฎพ่ฎกๅ้ๆฑ็ไปฃ็
|
|
31
|
+
|
|
32
|
+
### kse ไธๆฏไปไน
|
|
33
|
+
|
|
34
|
+
- โ **ไธๆฏไปฃ็ ็ๆๅจ** - kse ไธๅไปฃ็ ๏ผไฝ ็ AI ๅทฅๅ
ทๅไปฃ็
|
|
35
|
+
- โ **ไธๆฏ IDE** - kse ไธไฝ ็ฐๆ็ๅผๅๅทฅๅ
ท้
ๅไฝฟ็จ
|
|
36
|
+
- โ **ไธๆฏ็นๅฎ AI ๅทฅๅ
ท** - ้็จไบ ClaudeใCursorใWindsurfใCopilot ็ญไปปไฝ AI ๅทฅๅ
ท
|
|
37
|
+
- โ **ไธๆฏๆๆกฃ็ๆฟไปฃๅ** - ๅฎๆฏ็ป็ป้กน็ฎไธไธๆ็็ปๆๅๆนๅผ
|
|
38
|
+
|
|
39
|
+
### ่ฐๅบ่ฏฅไฝฟ็จ kse๏ผ
|
|
40
|
+
|
|
41
|
+
- โ
ไฝฟ็จ AI ็ผ็ ๅฉๆ็ๅผๅ่
๏ผClaudeใCursorใCopilot ็ญ๏ผ
|
|
42
|
+
- โ
้่ฆ็ปๆๅ้กน็ฎๆๆกฃ็ๅข้
|
|
43
|
+
- โ
ๆๅปบ้่ฆๆธ
ๆฐ้ๆฑๅ่ฎพ่ฎก็ๅ่ฝ็ไปปไฝไบบ
|
|
44
|
+
- โ
ๅ็ไบ Spec ้ฉฑๅจๅผๅ็้กน็ฎ
|
|
45
|
+
|
|
46
|
+
---
|
|
47
|
+
|
|
48
|
+
## ๅฟซ้ๅผๅง๏ผ5 ๅ้๏ผ
|
|
49
|
+
|
|
50
|
+
### ๆญฅ้ชค 1๏ผๅฎ่ฃ
kse๏ผ30 ็ง๏ผ
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
npm install -g kiro-spec-engine
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
้ช่ฏๅฎ่ฃ
๏ผ
|
|
57
|
+
```bash
|
|
58
|
+
kse --version
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
### ๆญฅ้ชค 2๏ผๅจ้กน็ฎไธญ้็จ kse๏ผ1 ๅ้๏ผ
|
|
62
|
+
|
|
63
|
+
ๅฏผ่ชๅฐ้กน็ฎ็ฎๅฝๅนถ่ฟ่ก๏ผ
|
|
64
|
+
|
|
65
|
+
```bash
|
|
66
|
+
cd your-project
|
|
67
|
+
kse adopt
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
่ฟไผๅๅปบไธไธช `.kiro/` ็ฎๅฝ๏ผๅ
ๅซ๏ผ
|
|
71
|
+
- `specs/` - Spec ๅญๆพไฝ็ฝฎ
|
|
72
|
+
- `steering/` - AI ่กไธบ่งๅ๏ผๅฏ้๏ผ
|
|
73
|
+
|
|
74
|
+
### ๆญฅ้ชค 3๏ผๅๅปบ็ฌฌไธไธช Spec๏ผ2 ๅ้๏ผ
|
|
75
|
+
|
|
76
|
+
```bash
|
|
77
|
+
kse create-spec 01-00-user-login
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
่ฟไผๅจ `.kiro/specs/01-00-user-login/` ไธญๅๅปบไธไธชๆไปถ๏ผ
|
|
81
|
+
|
|
82
|
+
**requirements.md** - ไฝ ่ฆๆๅปบไปไน๏ผ
|
|
83
|
+
```markdown
|
|
84
|
+
# ็จๆท็ปๅฝๅ่ฝ
|
|
85
|
+
|
|
86
|
+
## ็จๆทๆ
ไบ
|
|
87
|
+
- ไฝไธบ็จๆท๏ผๆๆณ็จ้ฎ็ฎฑๅๅฏ็ ็ปๅฝ
|
|
88
|
+
- ไฝไธบ็จๆท๏ผๆๆณๅจๅญๆฎ้่ฏฏๆถ็ๅฐ้่ฏฏๆ็คบ
|
|
89
|
+
|
|
90
|
+
## ้ชๆถๆ ๅ
|
|
91
|
+
- ๅฝ็จๆท่พๅ
ฅๆๆๅญๆฎๆถ๏ผๅ็จๆท็ปๅฝๆๅ
|
|
92
|
+
- ๅฝ็จๆท่พๅ
ฅๆ ๆๅญๆฎๆถ๏ผๅๆพ็คบ้่ฏฏๆถๆฏ
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
**design.md** - ๅฆไฝๆๅปบ๏ผ
|
|
96
|
+
```markdown
|
|
97
|
+
# ่ฎพ่ฎก
|
|
98
|
+
|
|
99
|
+
## API ่ฎพ่ฎก
|
|
100
|
+
- POST /api/auth/login
|
|
101
|
+
- ่ฏทๆฑ๏ผ{ email: string, password: string }
|
|
102
|
+
- ๅๅบ๏ผ{ token: string } ๆ { error: string }
|
|
103
|
+
|
|
104
|
+
## ็ปไปถ
|
|
105
|
+
- AuthController - ๅค็็ปๅฝ้ป่พ
|
|
106
|
+
- validateEmail() - ้ช่ฏ้ฎ็ฎฑๆ ผๅผ
|
|
107
|
+
- validatePassword() - ๆฃๆฅๅฏ็ ่ฆๆฑ
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
**tasks.md** - ๅๆญฅๅฎ็ฐ๏ผ
|
|
111
|
+
```markdown
|
|
112
|
+
- [ ] 1.1 ๅๅปบ AuthController ็ฑป
|
|
113
|
+
- [ ] 1.2 ๅฎ็ฐ้ฎ็ฎฑ้ช่ฏ
|
|
114
|
+
- [ ] 1.3 ๅฎ็ฐๅฏ็ ้ช่ฏ
|
|
115
|
+
- [ ] 1.4 ๅฎ็ฐ็ปๅฝ็ซฏ็น
|
|
116
|
+
- [ ] 1.5 ็ผๅๅๅ
ๆต่ฏ
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
### ๆญฅ้ชค 4๏ผ่ฎฉ AI ๅทฅๅ
ทไฝฟ็จ Spec๏ผ1 ๅ้๏ผ
|
|
120
|
+
|
|
121
|
+
็ฐๅจไฝ ็ AI ๅทฅๅ
ทๅฏไปฅ่ฎฟ้ฎ Spec ๆฅ็ๆๆดๅฅฝ็ไปฃ็ ใ
|
|
122
|
+
|
|
123
|
+
**ๅฏนไบๆฏๆๅฝไปคๆง่ก็ AI ๅทฅๅ
ท๏ผCursorใWindsurfใClaude Desktop๏ผ๏ผ**
|
|
124
|
+
|
|
125
|
+
ๅช้ๅ่ฏไฝ ็ AI๏ผ
|
|
126
|
+
```
|
|
127
|
+
"ๆๆไธไธช 01-00-user-login ็ Specใ่ฏทๅฎ็ฐไปปๅก 1.1"
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
AI ไผ๏ผ
|
|
131
|
+
1. ๆง่ก `kse context export 01-00-user-login`
|
|
132
|
+
2. ่ฏปๅ Spec๏ผ้ๆฑใ่ฎพ่ฎกใไปปๅก๏ผ
|
|
133
|
+
3. ็ๆ้ตๅพชไฝ ่ฎพ่ฎก็ไปฃ็
|
|
134
|
+
4. ่ชๅจๆดๆฐไปปๅก็ถๆ
|
|
135
|
+
|
|
136
|
+
**ๅฏนไบๅบไบ Web ็ AI ๅทฅๅ
ท๏ผChatGPTใClaude web๏ผ๏ผ**
|
|
137
|
+
|
|
138
|
+
```bash
|
|
139
|
+
# ๅฏผๅบไธไธๆไธๆฌก
|
|
140
|
+
kse context export 01-00-user-login
|
|
141
|
+
|
|
142
|
+
# ๅคๅถๅฐๅช่ดดๆฟ
|
|
143
|
+
cat .kiro/specs/01-00-user-login/context-export.md | pbcopy # macOS
|
|
144
|
+
type .kiro\specs\01-00-user-login\context-export.md | clip # Windows
|
|
145
|
+
|
|
146
|
+
# ็ฒ่ดดๅฐ AI ๅทฅๅ
ทๅนถ่ฏด๏ผ
|
|
147
|
+
"่ฟๆฏๆ็ Specใ่ฏทๅฎ็ฐไปปๅก 1.1"
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
**ๅ
ณ้ฎๆดๅฏ๏ผ** ไฝ ็ๅจ AI ๅทฅๅ
ทไธญใAI ่ฏปๅ Spec ๅนถ็ๆ็ฌฆๅไฝ ่ฎพ่ฎก็ไปฃ็ ใ
|
|
151
|
+
|
|
152
|
+
### ๆญฅ้ชค 5๏ผไธไธๆญฅ๏ผ30 ็ง๏ผ
|
|
153
|
+
|
|
154
|
+
- ๐ ้
่ฏป[ๅฟซ้ๅผๅงๆๅ](docs/zh/quick-start.md)่ทๅ่ฏฆ็ป็คบไพ
|
|
155
|
+
- ๐ง ๆฅ็ไฝ ็ๅทฅๅ
ท้ๆๆๅ๏ผ[Cursor](docs/zh/tools/cursor-guide.md) | [Claude](docs/zh/tools/claude-guide.md) | [Windsurf](docs/zh/tools/windsurf-guide.md)
|
|
156
|
+
- ๐ก ไบ่งฃ[้ๆๆจกๅผ](docs/integration-modes.md)
|
|
157
|
+
|
|
158
|
+
---
|
|
159
|
+
|
|
160
|
+
## ๆ ธๅฟๆฆๅฟต
|
|
161
|
+
|
|
162
|
+
### Spec
|
|
163
|
+
|
|
164
|
+
**Spec** ๆฏๅ่ฝๆ้กน็ฎ็ปไปถ็็ปๆๅๆ่ฟฐใๆฏไธช Spec ๅ
ๅซ๏ผ
|
|
165
|
+
|
|
166
|
+
- **้ๆฑ** (`requirements.md`) - ไฝ ่ฆๆๅปบไปไนไปฅๅไธบไปไน
|
|
167
|
+
- **่ฎพ่ฎก** (`design.md`) - ๅฆไฝๆๅปบ๏ผๆถๆใAPIใ็ปไปถ๏ผ
|
|
168
|
+
- **ไปปๅก** (`tasks.md`) - ๅๆญฅๅฎ็ฐๆธ
ๅ
|
|
169
|
+
|
|
170
|
+
### ไธไธๆๅฏผๅบ
|
|
171
|
+
|
|
172
|
+
**ไธไธๆๅฏผๅบ**ๅฐไฝ ็ Spec ่ฝฌๆขไธบ AI ๅทฅๅ
ทไผๅ็ๆ ผๅผใๅฎๅ
ๆฌ๏ผ
|
|
173
|
+
- ๆๆ้ๆฑใ่ฎพ่ฎกๅณ็ญๅไปปๅก
|
|
174
|
+
- ้กน็ฎ็ปๆๅ็บฆๅฎ
|
|
175
|
+
- Steering ่งๅ๏ผๅฏ้๏ผ็จไบ AI ่กไธบ
|
|
176
|
+
|
|
177
|
+
### ้ๆๆจกๅผ
|
|
178
|
+
|
|
179
|
+
kse ๆฏๆไธ็งไธ AI ๅทฅๅ
ทๅไฝ็ๆนๅผ๏ผ
|
|
180
|
+
|
|
181
|
+
1. **ๅ็้ๆ** - AI ๅทฅๅ
ท็ดๆฅ่ฎฟ้ฎ kse๏ผKiro IDE๏ผ
|
|
182
|
+
2. **ๆๅจๅฏผๅบ** - ไฝ ๅฏผๅบๅนถ็ฒ่ดดไธไธๆ๏ผClaudeใChatGPTใCursor๏ผ
|
|
183
|
+
3. **Watch ๆจกๅผ** - ๆไปถๆดๆนๆถ่ชๅจๆดๆฐไธไธๆ๏ผๆๆๅทฅๅ
ท๏ผ
|
|
184
|
+
|
|
185
|
+
ไบ่งฃๆดๅค๏ผ[้ๆๆจกๅผๆๅ](docs/integration-modes.md)
|
|
186
|
+
|
|
187
|
+
---
|
|
188
|
+
|
|
189
|
+
## ไธ AI ๅทฅๅ
ท้ๆ
|
|
190
|
+
|
|
191
|
+
kse ้็จไบไปปไฝ AI ็ผ็ ๅฉๆใ้ๆฉไฝ ็ๅทฅๅ
ท่ทๅๅ
ทไฝๆๅฏผ๏ผ
|
|
192
|
+
|
|
193
|
+
### ๆต่ก็ AI ๅทฅๅ
ท
|
|
194
|
+
|
|
195
|
+
- **[Cursor](docs/zh/tools/cursor-guide.md)** - ๅธฆ AI ็ปๅฏน็ผ็จ็ IDE
|
|
196
|
+
- **[Claude Code](docs/zh/tools/claude-guide.md)** - Anthropic ็็ผ็ ๅฉๆ
|
|
197
|
+
- **[Windsurf](docs/zh/tools/windsurf-guide.md)** - ๆฏๆๅฝไปคๆง่ก็ AI ไปฃ็
|
|
198
|
+
- **[Kiro](docs/zh/tools/kiro-guide.md)** - ๅ็้ๆ๏ผๆ ้ๆๅจๅฏผๅบ
|
|
199
|
+
- **[VS Code + Copilot](docs/zh/tools/vscode-guide.md)** - GitHub Copilot ้ๆ
|
|
200
|
+
- **[้็จ AI ๅทฅๅ
ท](docs/zh/tools/generic-guide.md)** - ้็จไบไปปไฝ AI ๅฉๆ
|
|
201
|
+
|
|
202
|
+
### ้ๆๅทฅไฝๆต
|
|
203
|
+
|
|
204
|
+
```mermaid
|
|
205
|
+
sequenceDiagram
|
|
206
|
+
participant ไฝ
|
|
207
|
+
participant AIๅทฅๅ
ท
|
|
208
|
+
participant kse
|
|
209
|
+
ไฝ ->>AIๅทฅๅ
ท: "ๆๆไธไธช user-login ็ Spec๏ผๅฎ็ฐไปปๅก 1.1"
|
|
210
|
+
AIๅทฅๅ
ท->>kse: kse context export user-login
|
|
211
|
+
kse->>AIๅทฅๅ
ท: Spec ๅ
ๅฎน๏ผ้ๆฑใ่ฎพ่ฎกใไปปๅก๏ผ
|
|
212
|
+
AIๅทฅๅ
ท->>AIๅทฅๅ
ท: ๆ นๆฎ Spec ็ๆไปฃ็
|
|
213
|
+
AIๅทฅๅ
ท->>ไฝ : ่ฟๆฏๅฎ็ฐ
|
|
214
|
+
AIๅทฅๅ
ท->>kse: ๆดๆฐ tasks.md๏ผๆ ่ฎฐไปปๅกๅฎๆ๏ผ
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
**ๅ
ณ้ฎๆดๅฏ๏ผ** ไฝ ็ๅจ AI ๅทฅๅ
ทไธญใAI ่ฏปๅ Spec ๅนถ็ๆ็ฌฆๅไฝ ่ฎพ่ฎก็ไปฃ็ ใ
|
|
218
|
+
|
|
219
|
+
---
|
|
220
|
+
|
|
221
|
+
## ๆๆกฃ
|
|
222
|
+
|
|
223
|
+
### ๅ
ฅ้จๆๅ
|
|
224
|
+
- ๐ **[ๅฟซ้ๅผๅงๆๅ](docs/zh/quick-start.md)** - ่ฏฆ็ป็ 5 ๅ้ๆ็จ
|
|
225
|
+
- ๐ค **[ๅธธ่ง้ฎ้ข](docs/faq.md)** - ๅธธ่ง้ฎ้ข่งฃ็ญ
|
|
226
|
+
- ๐ง **[ๆ
้ๆ้ค](docs/troubleshooting.md)** - ๅธธ่ง้ฎ้ขๅ่งฃๅณๆนๆก
|
|
227
|
+
|
|
228
|
+
### ๆ ธๅฟๆๅ
|
|
229
|
+
- ๐ **[Spec ๅทฅไฝๆต](docs/spec-workflow.md)** - ๆทฑๅ
ฅ็่งฃ Spec
|
|
230
|
+
- ๐ข **[Spec ็ผๅท็ญ็ฅ](docs/zh/spec-numbering-guide.md)** - ๅฆไฝไธบ Spec ็ผๅท
|
|
231
|
+
- ๐ **[ๆๆกฃๆฒป็](docs/document-governance.md)** - ่ชๅจๅๆๆกฃ็ฎก็
|
|
232
|
+
- ๐ **[้ๆๆจกๅผ](docs/integration-modes.md)** - ไธ็ง้ๆ kse ็ๆนๅผ
|
|
233
|
+
- ๐ **[ๅฝไปคๅ่](docs/command-reference.md)** - ๆๆ kse ๅฝไปค
|
|
234
|
+
|
|
235
|
+
### ๅทฅๅ
ท็นๅฎๆๅ
|
|
236
|
+
- [Cursor ้ๆ](docs/zh/tools/cursor-guide.md)
|
|
237
|
+
- [Claude Code ้ๆ](docs/zh/tools/claude-guide.md)
|
|
238
|
+
- [Windsurf ้ๆ](docs/zh/tools/windsurf-guide.md)
|
|
239
|
+
- [Kiro ้ๆ](docs/zh/tools/kiro-guide.md)
|
|
240
|
+
- [VS Code + Copilot ้ๆ](docs/zh/tools/vscode-guide.md)
|
|
241
|
+
- [้็จ AI ๅทฅๅ
ท](docs/zh/tools/generic-guide.md)
|
|
242
|
+
|
|
243
|
+
### ็คบไพ
|
|
244
|
+
- [API ๅ่ฝ็คบไพ](docs/examples/add-rest-api/) - RESTful API Spec
|
|
245
|
+
- [UI ๅ่ฝ็คบไพ](docs/examples/add-user-dashboard/) - React ไปช่กจๆฟ Spec
|
|
246
|
+
- [CLI ๅ่ฝ็คบไพ](docs/examples/add-export-command/) - CLI ๅฝไปค Spec
|
|
247
|
+
|
|
248
|
+
### ้ซ็บงไธป้ข
|
|
249
|
+
- [้็จๆๅ](docs/adoption-guide.md) - ๅจ็ฐๆ้กน็ฎไธญ้็จ kse
|
|
250
|
+
- [ๅ็บงๆๅ](docs/upgrade-guide.md) - ็ๆฌๅ็บง่ฏดๆ
|
|
251
|
+
- [ๆๅจๅทฅไฝๆต](docs/manual-workflows-guide.md) - ๅๆญฅๅทฅไฝๆต
|
|
252
|
+
- [ๅผๅ่
ๆๅ](docs/developer-guide.md) - ่ดก็ฎๅๆฉๅฑ kse
|
|
253
|
+
|
|
254
|
+
### ๅฎๆดๆๆกฃ
|
|
255
|
+
- ๐ **[ๆๆกฃ็ดขๅผ](docs/zh/README.md)** - ๆๆๆๆกฃ้ไธญๅจไธๅค
|
|
256
|
+
|
|
257
|
+
---
|
|
258
|
+
|
|
259
|
+
## ไธป่ฆๅ่ฝ
|
|
260
|
+
|
|
261
|
+
### Spec ้ฉฑๅจๅผๅ
|
|
262
|
+
ไฝฟ็จ้ๆฑ โ ่ฎพ่ฎก โ ไปปๅกๅทฅไฝๆต็ปๆๅไฝ ็ๅทฅไฝ
|
|
263
|
+
|
|
264
|
+
### ๆๆกฃๆฒป็
|
|
265
|
+
- ่ชๅจๅๆๆกฃ็ๅฝๅจๆ็ฎก็
|
|
266
|
+
- ๅผบๅถๆง่กๆธ
ๆด้กน็ฎ็ปๆ
|
|
267
|
+
- ไธดๆถๆไปถๆธ
็
|
|
268
|
+
- ไบง็ฉ็ป็ป
|
|
269
|
+
- Git hooks ๅ่งๆงๆฃๆฅ
|
|
270
|
+
|
|
271
|
+
### ๅค็จๆทๅไฝ
|
|
272
|
+
- ๅข้ๆๅ็ไธชไบบๅทฅไฝ็ฉบ้ด
|
|
273
|
+
- ไปปๅก่ฎค้ขๅ่ท่ธช
|
|
274
|
+
- ๅทฅไฝ็ฉบ้ดๅๆญฅ
|
|
275
|
+
|
|
276
|
+
### ่ทจๅทฅๅ
ทๅ
ผๅฎนๆง
|
|
277
|
+
ไธบ Claude CodeใCursorใWindsurfใCopilot ็ญๅฏผๅบไธไธๆ
|
|
278
|
+
|
|
279
|
+
### Watch ๆจกๅผ่ชๅจๅ
|
|
280
|
+
่ชๅจๆไปถ็ๆงๅไธไธๆๆดๆฐ
|
|
281
|
+
|
|
282
|
+
### ่ดจ้ๅขๅผบ
|
|
283
|
+
- ๆๆกฃ่ดจ้่ฏๅ๏ผ0-10 ๅ๏ผ
|
|
284
|
+
- ๆบ่ฝๆน่ฟๅปบ่ฎฎ
|
|
285
|
+
- ไธไธๆ ๅๆง่ก
|
|
286
|
+
|
|
287
|
+
### ๅค่ฏญ่จๆฏๆ
|
|
288
|
+
่ฑๆๅไธญๆ็้ข
|
|
289
|
+
|
|
290
|
+
---
|
|
291
|
+
|
|
292
|
+
## ๅฝไปคๆฆ่ง
|
|
293
|
+
|
|
294
|
+
```bash
|
|
295
|
+
# ้กน็ฎ่ฎพ็ฝฎ
|
|
296
|
+
kse adopt # ๅจ็ฐๆ้กน็ฎไธญ้็จ kse
|
|
297
|
+
kse create-spec <name> # ๅๅปบๆฐ Spec
|
|
298
|
+
|
|
299
|
+
# ไธไธๆ็ฎก็
|
|
300
|
+
kse context export <spec-name> # ไธบ AI ๅทฅๅ
ทๅฏผๅบไธไธๆ
|
|
301
|
+
kse prompt generate <spec> <task> # ็ๆไปปๅก็นๅฎๆ็คบ
|
|
302
|
+
|
|
303
|
+
# ไปปๅก็ฎก็
|
|
304
|
+
kse task claim <spec> <task-id> # ่ฎค้ขไปปๅก
|
|
305
|
+
kse task list <spec> # ๅๅบๅทฒ่ฎค้ขไปปๅก
|
|
306
|
+
|
|
307
|
+
# ๆๆกฃๆฒป็
|
|
308
|
+
kse docs diagnose # ๆฃๆฅๆๆกฃๅ่งๆง
|
|
309
|
+
kse docs cleanup # ๅ ้คไธดๆถๆไปถ
|
|
310
|
+
kse docs validate # ้ช่ฏๆๆกฃ็ปๆ
|
|
311
|
+
kse docs archive --spec <name> # ็ป็ป Spec ไบง็ฉ
|
|
312
|
+
kse docs hooks install # ๅฎ่ฃ
Git pre-commit hooks
|
|
313
|
+
|
|
314
|
+
# ่ชๅจๅ
|
|
315
|
+
kse watch start # ๅฏๅจ watch ๆจกๅผ
|
|
316
|
+
kse watch status # ๆฃๆฅ watch ็ถๆ
|
|
317
|
+
|
|
318
|
+
# ้กน็ฎไฟกๆฏ
|
|
319
|
+
kse status # ้กน็ฎ็ถๆ
|
|
320
|
+
kse workflows # ๅๅบๅฏ็จๅทฅไฝๆต
|
|
321
|
+
```
|
|
322
|
+
|
|
323
|
+
ๆฅ็[ๅฝไปคๅ่](docs/command-reference.md)่ทๅๅฎๆดๆๆกฃใ
|
|
324
|
+
|
|
325
|
+
---
|
|
326
|
+
|
|
327
|
+
## ่ดก็ฎไธๆฏๆ
|
|
328
|
+
|
|
329
|
+
### ่ทๅๅธฎๅฉ
|
|
330
|
+
|
|
331
|
+
- ๐ **ๆๆกฃ**๏ผไป[ๅฟซ้ๅผๅงๆๅ](docs/zh/quick-start.md)ๅผๅง
|
|
332
|
+
- ๐ **Bug ๆฅๅ**๏ผ[GitHub Issues](https://github.com/heguangyong/kiro-spec-engine/issues)
|
|
333
|
+
- ๐ฌ **่ฎจ่ฎบ**๏ผ[GitHub Discussions](https://github.com/heguangyong/kiro-spec-engine/discussions)
|
|
334
|
+
|
|
335
|
+
### ่ดก็ฎ
|
|
336
|
+
|
|
337
|
+
ๆไปฌๆฌข่ฟ่ดก็ฎ๏ผๆฅ็ๆไปฌ็[่ดก็ฎๆๅ](CONTRIBUTING.md)ไบ่งฃ๏ผ
|
|
338
|
+
- ไปฃ็ ่ดก็ฎ
|
|
339
|
+
- ๆๆกฃๆน่ฟ
|
|
340
|
+
- Bug ๆฅๅๅๅ่ฝ่ฏทๆฑ
|
|
341
|
+
- ็ฟป่ฏๅธฎๅฉ
|
|
342
|
+
|
|
343
|
+
### ๅผๅ่ฎพ็ฝฎ
|
|
344
|
+
|
|
345
|
+
```bash
|
|
346
|
+
git clone https://github.com/heguangyong/kiro-spec-engine.git
|
|
347
|
+
cd kiro-spec-engine
|
|
348
|
+
npm install
|
|
349
|
+
npm link # ็จไบๆฌๅฐๅผๅ
|
|
350
|
+
npm test # ่ฟ่กๆต่ฏ
|
|
351
|
+
```
|
|
352
|
+
|
|
353
|
+
---
|
|
354
|
+
|
|
355
|
+
## ่ฎธๅฏ่ฏ
|
|
356
|
+
|
|
357
|
+
MIT ่ฎธๅฏ่ฏ - ่ฏฆ่ง [LICENSE](LICENSE) ๆไปถใ
|
|
358
|
+
|
|
359
|
+
---
|
|
360
|
+
|
|
361
|
+
## ่ด่ฐข
|
|
362
|
+
|
|
363
|
+
- ๅ **่ฅฟ่ฅฟๅผๆฏ** ็ฅ่ฏๅ้ซ่ดตๅฅๆๆฆๅฟต็ๅฏๅ
|
|
364
|
+
- ๅปบ็ซๅจ **Kiro** Spec ้ฉฑๅจๅผๅ็ๅบ็กไธ
|
|
365
|
+
- ๅ **oh-my-opencode** ๅ Ultrawork ๅฎฃ่จ็ๅฝฑๅ
|
|
366
|
+
|
|
367
|
+
---
|
|
368
|
+
|
|
369
|
+
**ๅๅคๅฅฝๅขๅผบไฝ ็ AI ่พ
ๅฉๅผๅไบๅ๏ผ** ๐
|
|
370
|
+
|
|
371
|
+
```bash
|
|
372
|
+
npm install -g kiro-spec-engine
|
|
373
|
+
kse adopt
|
|
374
|
+
kse create-spec 01-00-my-first-feature
|
|
375
|
+
```
|
|
376
|
+
|
|
377
|
+
---
|
|
378
|
+
|
|
379
|
+
**็ๆฌ**๏ผ1.4.5
|
|
380
|
+
**ๆๅๆดๆฐ**๏ผ2026-01-24
|
package/bin/kiro-spec-engine.js
CHANGED
|
@@ -173,8 +173,9 @@ program
|
|
|
173
173
|
program
|
|
174
174
|
.command('doctor')
|
|
175
175
|
.description(t('cli.commands.doctor.description'))
|
|
176
|
-
.
|
|
177
|
-
|
|
176
|
+
.option('--docs', 'Show detailed document governance diagnostics')
|
|
177
|
+
.action((options) => {
|
|
178
|
+
doctorCommand(options);
|
|
178
179
|
});
|
|
179
180
|
|
|
180
181
|
// ้กน็ฎๆฅ็ฎกๅฝไปค
|
|
@@ -184,6 +185,7 @@ program
|
|
|
184
185
|
.option('--auto', 'Skip confirmations (use with caution)')
|
|
185
186
|
.option('--dry-run', 'Show what would change without making changes')
|
|
186
187
|
.option('--mode <mode>', 'Force specific adoption mode (fresh/partial/full)')
|
|
188
|
+
.option('--force', 'Force overwrite conflicting files (creates backup first)')
|
|
187
189
|
.action((options) => {
|
|
188
190
|
adoptCommand(options);
|
|
189
191
|
});
|
|
@@ -210,51 +212,15 @@ program
|
|
|
210
212
|
});
|
|
211
213
|
|
|
212
214
|
// ็ถๆๆฃๆฅๅฝไปค
|
|
215
|
+
const statusCommand = require('../lib/commands/status');
|
|
216
|
+
|
|
213
217
|
program
|
|
214
218
|
.command('status')
|
|
215
219
|
.description('Check project status and available specs')
|
|
216
|
-
.
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
console.log(chalk.yellow('โ ๏ธ No Kiro Spec Engine project found in current directory'));
|
|
221
|
-
console.log('Run: ' + chalk.cyan('kiro-spec-engine init') + ' to initialize');
|
|
222
|
-
return;
|
|
223
|
-
}
|
|
224
|
-
|
|
225
|
-
console.log(chalk.red('๐ฅ') + ' Kiro Spec Engine Project Status');
|
|
226
|
-
console.log();
|
|
227
|
-
|
|
228
|
-
// ๆฃๆฅๅทฅๅ
ท็ถๆ
|
|
229
|
-
const toolPath = path.join(kiroDir, 'tools/ultrawork_enhancer.py');
|
|
230
|
-
const toolStatus = fs.existsSync(toolPath) ? chalk.green('โ
Available') : chalk.red('โ Missing');
|
|
231
|
-
console.log('Ultrawork Tool:', toolStatus);
|
|
232
|
-
|
|
233
|
-
// ๅๅบ Specs
|
|
234
|
-
const specsDir = path.join(kiroDir, 'specs');
|
|
235
|
-
if (fs.existsSync(specsDir)) {
|
|
236
|
-
const specs = fs.readdirSync(specsDir).filter(item =>
|
|
237
|
-
fs.statSync(path.join(specsDir, item)).isDirectory()
|
|
238
|
-
);
|
|
239
|
-
|
|
240
|
-
console.log();
|
|
241
|
-
console.log(chalk.blue('๐ Available Specs:'));
|
|
242
|
-
if (specs.length === 0) {
|
|
243
|
-
console.log(' No specs found');
|
|
244
|
-
} else {
|
|
245
|
-
specs.forEach(spec => {
|
|
246
|
-
const specPath = path.join(specsDir, spec);
|
|
247
|
-
const hasReq = fs.existsSync(path.join(specPath, 'requirements.md'));
|
|
248
|
-
const hasDesign = fs.existsSync(path.join(specPath, 'design.md'));
|
|
249
|
-
const hasTasks = fs.existsSync(path.join(specPath, 'tasks.md'));
|
|
250
|
-
|
|
251
|
-
console.log(` ${spec}:`);
|
|
252
|
-
console.log(` Requirements: ${hasReq ? chalk.green('โ
') : chalk.gray('โช')}`);
|
|
253
|
-
console.log(` Design: ${hasDesign ? chalk.green('โ
') : chalk.gray('โช')}`);
|
|
254
|
-
console.log(` Tasks: ${hasTasks ? chalk.green('โ
') : chalk.gray('โช')}`);
|
|
255
|
-
});
|
|
256
|
-
}
|
|
257
|
-
}
|
|
220
|
+
.option('--verbose', 'Show detailed information')
|
|
221
|
+
.option('--team', 'Show team activity')
|
|
222
|
+
.action(async (options) => {
|
|
223
|
+
await statusCommand(options);
|
|
258
224
|
});
|
|
259
225
|
|
|
260
226
|
// ็ๆฌไฟกๆฏๅฝไปค
|
|
@@ -326,6 +292,98 @@ const workflowsCmd = program
|
|
|
326
292
|
await workflowsCommand(action, workflowId);
|
|
327
293
|
});
|
|
328
294
|
|
|
295
|
+
// Document governance commands
|
|
296
|
+
const docsCommand = require('../lib/commands/docs');
|
|
297
|
+
|
|
298
|
+
const docsCmd = program
|
|
299
|
+
.command('docs')
|
|
300
|
+
.description('Document governance and lifecycle management');
|
|
301
|
+
|
|
302
|
+
docsCmd
|
|
303
|
+
.command('diagnose')
|
|
304
|
+
.alias('diagnostic')
|
|
305
|
+
.description('Scan project for document violations')
|
|
306
|
+
.action(async () => {
|
|
307
|
+
const exitCode = await docsCommand('diagnose');
|
|
308
|
+
process.exit(exitCode);
|
|
309
|
+
});
|
|
310
|
+
|
|
311
|
+
docsCmd
|
|
312
|
+
.command('cleanup')
|
|
313
|
+
.description('Remove temporary documents')
|
|
314
|
+
.option('--dry-run, --dry', 'Preview changes without applying them')
|
|
315
|
+
.option('-i, --interactive', 'Prompt for confirmation before each deletion')
|
|
316
|
+
.option('--spec <name>', 'Target specific Spec directory')
|
|
317
|
+
.action(async (options) => {
|
|
318
|
+
const exitCode = await docsCommand('cleanup', options);
|
|
319
|
+
process.exit(exitCode);
|
|
320
|
+
});
|
|
321
|
+
|
|
322
|
+
docsCmd
|
|
323
|
+
.command('validate')
|
|
324
|
+
.description('Validate document structure')
|
|
325
|
+
.option('--spec <name>', 'Validate specific Spec directory')
|
|
326
|
+
.option('--all', 'Validate all Spec directories')
|
|
327
|
+
.action(async (options) => {
|
|
328
|
+
const exitCode = await docsCommand('validate', options);
|
|
329
|
+
process.exit(exitCode);
|
|
330
|
+
});
|
|
331
|
+
|
|
332
|
+
docsCmd
|
|
333
|
+
.command('archive')
|
|
334
|
+
.description('Organize Spec artifacts into subdirectories')
|
|
335
|
+
.option('--spec <name>', 'Target Spec directory (required)')
|
|
336
|
+
.option('--dry-run, --dry', 'Preview changes without applying them')
|
|
337
|
+
.action(async (options) => {
|
|
338
|
+
const exitCode = await docsCommand('archive', options);
|
|
339
|
+
process.exit(exitCode);
|
|
340
|
+
});
|
|
341
|
+
|
|
342
|
+
docsCmd
|
|
343
|
+
.command('hooks <action>')
|
|
344
|
+
.description('Manage Git hooks (install, uninstall, status)')
|
|
345
|
+
.action(async (action) => {
|
|
346
|
+
const exitCode = await docsCommand('hooks', { _: [action] });
|
|
347
|
+
process.exit(exitCode);
|
|
348
|
+
});
|
|
349
|
+
|
|
350
|
+
docsCmd
|
|
351
|
+
.command('config [key] [value]')
|
|
352
|
+
.description('Display or modify configuration')
|
|
353
|
+
.option('--set', 'Set configuration value (use with key and value arguments)')
|
|
354
|
+
.option('--reset', 'Reset configuration to defaults')
|
|
355
|
+
.action(async (key, value, options) => {
|
|
356
|
+
// Build options object for the docs command
|
|
357
|
+
const cmdOptions = {
|
|
358
|
+
set: options.set,
|
|
359
|
+
reset: options.reset,
|
|
360
|
+
_: ['config']
|
|
361
|
+
};
|
|
362
|
+
|
|
363
|
+
// Add key and value if provided
|
|
364
|
+
if (key) cmdOptions._.push(key);
|
|
365
|
+
if (value) cmdOptions._.push(value);
|
|
366
|
+
|
|
367
|
+
const exitCode = await docsCommand('config', cmdOptions);
|
|
368
|
+
process.exit(exitCode);
|
|
369
|
+
});
|
|
370
|
+
|
|
371
|
+
docsCmd
|
|
372
|
+
.command('stats')
|
|
373
|
+
.description('Display compliance statistics')
|
|
374
|
+
.action(async () => {
|
|
375
|
+
const exitCode = await docsCommand('stats');
|
|
376
|
+
process.exit(exitCode);
|
|
377
|
+
});
|
|
378
|
+
|
|
379
|
+
docsCmd
|
|
380
|
+
.command('report')
|
|
381
|
+
.description('Generate compliance report')
|
|
382
|
+
.action(async () => {
|
|
383
|
+
const exitCode = await docsCommand('report');
|
|
384
|
+
process.exit(exitCode);
|
|
385
|
+
});
|
|
386
|
+
|
|
329
387
|
// ๆดๆฐ้กน็ฎ้
็ฝฎ็่พ
ๅฉๅฝๆฐ
|
|
330
388
|
async function updateProjectConfig(projectName) {
|
|
331
389
|
const envPath = path.join(process.cwd(), '.kiro/steering/ENVIRONMENT.md');
|