@damphuquy/agent-init 1.4.0 → 1.4.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/README.md +8 -2
- package/README.vi.md +8 -2
- package/dist/cli.d.ts +4 -2
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +49 -5
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts +4 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +67 -1
- package/dist/config.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/scaffolder.d.ts +2 -1
- package/dist/scaffolder.d.ts.map +1 -1
- package/dist/scaffolder.js +64 -12
- package/dist/scaffolder.js.map +1 -1
- package/dist/types.d.ts +5 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/ui.d.ts +3 -1
- package/dist/ui.d.ts.map +1 -1
- package/dist/ui.js +71 -6
- package/dist/ui.js.map +1 -1
- package/package.json +2 -2
- package/templates/vi/.agents/README.md +29 -0
- package/templates/vi/.agents/behavior.md +72 -0
- package/templates/vi/.agents/conventions/naming.md +55 -0
- package/templates/vi/.agents/guardrails.md +113 -0
- package/templates/vi/AGENTS.md +133 -0
- package/templates/vi/process/.editorconfig +15 -0
- package/templates/vi/process/README.md +150 -0
- package/templates/vi/process/_seeds/_GUIDE.md +170 -0
- package/templates/vi/process/_seeds/cancellation-template.md.seed +79 -0
- package/templates/vi/process/_seeds/context-group.md.seed +154 -0
- package/templates/vi/process/_seeds/decision-template.md.seed +143 -0
- package/templates/vi/process/_seeds/handoff-template.md.seed +79 -0
- package/templates/vi/process/_seeds/plan-template.md.seed +135 -0
- package/templates/vi/process/_seeds/program-template.md.seed +56 -0
- package/templates/vi/process/_seeds/results-template.tsv.seed +5 -0
- package/templates/vi/process/_seeds/review-template.md.seed +149 -0
- package/templates/vi/process/_seeds/state-template.md.seed +149 -0
- package/templates/vi/process/_seeds/task-template.md.seed +196 -0
- package/templates/vi/process/context/all-context.md +53 -0
- package/templates/vi/process/context/planning/all-planning.md +31 -0
- package/templates/vi/process/context/tests/all-tests.md +56 -0
- package/templates/vi/process/development-protocols/all-development-protocols.md +27 -0
- package/templates/vi/process/development-protocols/implementation-standards.md +28 -0
- package/templates/vi/process/development-protocols/orchestration.md +24 -0
- package/templates/vi/process/features/active/.gitkeep +0 -0
- package/templates/vi/process/features/backlog/.gitkeep +0 -0
- package/templates/vi/process/features/completed/.gitkeep +0 -0
- package/templates/vi/process/general-plans/active/.gitkeep +0 -0
- package/templates/vi/process/general-plans/backlog/.gitkeep +0 -0
- package/templates/vi/process/general-plans/completed/.gitkeep +0 -0
- /package/templates/{.agents → en/.agents}/README.md +0 -0
- /package/templates/{.agents → en/.agents}/behavior.md +0 -0
- /package/templates/{.agents → en/.agents}/conventions/naming.md +0 -0
- /package/templates/{.agents → en/.agents}/guardrails.md +0 -0
- /package/templates/{AGENTS.md → en/AGENTS.md} +0 -0
- /package/templates/{process → en/process}/.editorconfig +0 -0
- /package/templates/{process → en/process}/README.md +0 -0
- /package/templates/{process → en/process}/_seeds/_GUIDE.md +0 -0
- /package/templates/{process → en/process}/_seeds/cancellation-template.md.seed +0 -0
- /package/templates/{process → en/process}/_seeds/context-group.md.seed +0 -0
- /package/templates/{process → en/process}/_seeds/decision-template.md.seed +0 -0
- /package/templates/{process → en/process}/_seeds/handoff-template.md.seed +0 -0
- /package/templates/{process → en/process}/_seeds/plan-template.md.seed +0 -0
- /package/templates/{process → en/process}/_seeds/program-template.md.seed +0 -0
- /package/templates/{process → en/process}/_seeds/results-template.tsv.seed +0 -0
- /package/templates/{process → en/process}/_seeds/review-template.md.seed +0 -0
- /package/templates/{process → en/process}/_seeds/state-template.md.seed +0 -0
- /package/templates/{process → en/process}/_seeds/task-template.md.seed +0 -0
- /package/templates/{process → en/process}/context/all-context.md +0 -0
- /package/templates/{process → en/process}/context/planning/all-planning.md +0 -0
- /package/templates/{process → en/process}/context/tests/all-tests.md +0 -0
- /package/templates/{process → en/process}/development-protocols/all-development-protocols.md +0 -0
- /package/templates/{process → en/process}/development-protocols/implementation-standards.md +0 -0
- /package/templates/{process → en/process}/development-protocols/orchestration.md +0 -0
- /package/templates/{process → en/process}/features/active/.gitkeep +0 -0
- /package/templates/{process → en/process}/features/backlog/.gitkeep +0 -0
- /package/templates/{process → en/process}/features/completed/.gitkeep +0 -0
- /package/templates/{process → en/process}/general-plans/active/.gitkeep +0 -0
- /package/templates/{process → en/process}/general-plans/backlog/.gitkeep +0 -0
- /package/templates/{process → en/process}/general-plans/completed/.gitkeep +0 -0
package/dist/ui.js
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import readline from 'node:readline';
|
|
2
|
+
import process from 'node:process';
|
|
1
3
|
export function stripAnsi(str) {
|
|
2
4
|
return String(str).replace(/\x1b\[[0-9;]*m/g, '');
|
|
3
5
|
}
|
|
@@ -58,6 +60,62 @@ export function renderBanner(pkgInfo, colors) {
|
|
|
58
60
|
console.log(renderBox(bannerLines, colors));
|
|
59
61
|
console.log();
|
|
60
62
|
}
|
|
63
|
+
export function askQuestion(query) {
|
|
64
|
+
if (process.stdin.destroyed || !process.stdin.readable) {
|
|
65
|
+
return Promise.resolve('');
|
|
66
|
+
}
|
|
67
|
+
const rl = readline.createInterface({
|
|
68
|
+
input: process.stdin,
|
|
69
|
+
output: process.stdout,
|
|
70
|
+
});
|
|
71
|
+
return new Promise((resolve) => {
|
|
72
|
+
let resolved = false;
|
|
73
|
+
const onDone = (val) => {
|
|
74
|
+
if (!resolved) {
|
|
75
|
+
resolved = true;
|
|
76
|
+
rl.close();
|
|
77
|
+
resolve(val);
|
|
78
|
+
}
|
|
79
|
+
};
|
|
80
|
+
rl.question(query, (answer) => {
|
|
81
|
+
onDone(answer);
|
|
82
|
+
});
|
|
83
|
+
rl.on('close', () => {
|
|
84
|
+
onDone('');
|
|
85
|
+
});
|
|
86
|
+
rl.on('error', () => {
|
|
87
|
+
onDone('');
|
|
88
|
+
});
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
export async function promptLanguage(colors) {
|
|
92
|
+
if (process.env.CI || process.stdin.destroyed || !process.stdin.readable) {
|
|
93
|
+
return 'en';
|
|
94
|
+
}
|
|
95
|
+
const promptLines = [
|
|
96
|
+
colors.purple(colors.bold('SELECT TEMPLATE LANGUAGE / CHỌN NGÔN NGỮ TEMPLATE')),
|
|
97
|
+
'',
|
|
98
|
+
` ${colors.cyan(colors.bold('1) English (eng / en)'))} ${colors.green('[Default]')}`,
|
|
99
|
+
` ${colors.comment('Standard template set in English for international teams')}`,
|
|
100
|
+
'',
|
|
101
|
+
` ${colors.teal(colors.bold('2) Tiếng Việt (vi)'))}`,
|
|
102
|
+
` ${colors.comment('Bộ mẫu chuẩn hóa hoàn toàn bằng Tiếng Việt cho kỹ sư Việt Nam')}`,
|
|
103
|
+
];
|
|
104
|
+
console.log(renderBox(promptLines, colors, { minWidth: 74 }));
|
|
105
|
+
console.log();
|
|
106
|
+
const answer = await askQuestion(` ${colors.purple('?')} ${colors.bold('Choice / Lựa chọn')} ${colors.yellow('[1: English, 2: Tiếng Việt]')}${colors.dim(', default: 1')}: `);
|
|
107
|
+
console.log();
|
|
108
|
+
const trimmed = answer.trim().toLowerCase();
|
|
109
|
+
if (trimmed === '2' ||
|
|
110
|
+
trimmed === 'vi' ||
|
|
111
|
+
trimmed === 'vie' ||
|
|
112
|
+
trimmed === 'vietnamese' ||
|
|
113
|
+
trimmed === 'tieng viet' ||
|
|
114
|
+
trimmed === 'tiếng việt') {
|
|
115
|
+
return 'vi';
|
|
116
|
+
}
|
|
117
|
+
return 'en';
|
|
118
|
+
}
|
|
61
119
|
export function showHelp(pkgInfo, colors) {
|
|
62
120
|
renderBanner(pkgInfo, colors);
|
|
63
121
|
console.log(colors.purple(colors.bold(' USAGE')));
|
|
@@ -68,16 +126,23 @@ export function showHelp(pkgInfo, colors) {
|
|
|
68
126
|
console.log(` ${colors.cyan('target_directory')} Destination path for workspace ${colors.comment('(default: .)')}`);
|
|
69
127
|
console.log();
|
|
70
128
|
console.log(colors.purple(colors.bold(' OPTIONS')));
|
|
71
|
-
console.log(` ${colors.yellow('-
|
|
72
|
-
console.log(` ${colors.yellow('-
|
|
73
|
-
console.log(` ${colors.yellow('-
|
|
129
|
+
console.log(` ${colors.yellow('-l, --lang <en|vi>')} Template language: 'en' / 'eng' (English) or 'vi' (Tiếng Việt)`);
|
|
130
|
+
console.log(` ${colors.yellow('-f, --force')} Overwrite existing files if already present`);
|
|
131
|
+
console.log(` ${colors.yellow('-h, --help')} Display this help documentation`);
|
|
132
|
+
console.log(` ${colors.yellow('-v, --version')} Display version number`);
|
|
74
133
|
console.log();
|
|
75
134
|
console.log(colors.purple(colors.bold(' EXAMPLES')));
|
|
76
|
-
console.log(` ${colors.comment('#
|
|
135
|
+
console.log(` ${colors.comment('# Interactive mode (prompts for English / Vietnamese):')}`);
|
|
77
136
|
console.log(` ${colors.cyan('$')} npx @damphuquy/agent-init .`);
|
|
78
137
|
console.log();
|
|
79
|
-
console.log(` ${colors.comment('#
|
|
80
|
-
console.log(` ${colors.cyan('$')} npx @damphuquy/agent-init
|
|
138
|
+
console.log(` ${colors.comment('# Bootstrap directly with Vietnamese templates:')}`);
|
|
139
|
+
console.log(` ${colors.cyan('$')} npx @damphuquy/agent-init . --lang vi`);
|
|
140
|
+
console.log();
|
|
141
|
+
console.log(` ${colors.comment('# Bootstrap directly with English templates:')}`);
|
|
142
|
+
console.log(` ${colors.cyan('$')} npx @damphuquy/agent-init . --lang en`);
|
|
143
|
+
console.log();
|
|
144
|
+
console.log(` ${colors.comment('# Scaffold into a specific project:')}`);
|
|
145
|
+
console.log(` ${colors.cyan('$')} npx @damphuquy/agent-init ./services/ai-agent --lang vi`);
|
|
81
146
|
console.log();
|
|
82
147
|
console.log(` ${colors.comment('# Force overwrite existing files:')}`);
|
|
83
148
|
console.log(` ${colors.cyan('$')} npx @damphuquy/agent-init . --force`);
|
package/dist/ui.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ui.js","sourceRoot":"","sources":["../src/ui.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ui.js","sourceRoot":"","sources":["../src/ui.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@damphuquy/agent-init",
|
|
3
|
-
"version": "1.4.
|
|
3
|
+
"version": "1.4.2",
|
|
4
4
|
"description": "Scaffolding CLI to bootstrap RIPER-5 Coding Agents & Operational Workspace",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
"prepublishOnly": "npm run build",
|
|
24
24
|
"start": "node ./dist/cli.js",
|
|
25
25
|
"scaffold": "node ./dist/cli.js",
|
|
26
|
-
"test": "node
|
|
26
|
+
"test": "node --test test/test-runner.js"
|
|
27
27
|
},
|
|
28
28
|
"keywords": [
|
|
29
29
|
"ai-agent",
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# Tầng Điều Khiển Agent (`.agents/`)
|
|
2
|
+
|
|
3
|
+
<agent_control_layer version="1.0">
|
|
4
|
+
|
|
5
|
+
<purpose>
|
|
6
|
+
Quy chuẩn điều khiển Agent dùng chung, độc lập với dự án. Các tệp này định nghĩa
|
|
7
|
+
CÁCH Agent tư duy và hành xử — không quyết định những gì Agent xây dựng hay cách theo dõi task.
|
|
8
|
+
|
|
9
|
+
Sao chép nguyên vẹn thư mục này vào bất kỳ repository nào. Không cần chỉnh sửa riêng theo dự án.
|
|
10
|
+
</purpose>
|
|
11
|
+
|
|
12
|
+
<boundary>
|
|
13
|
+
`.agents/` quản lý: khai báo chế độ hoạt động (mode), giao thức khởi động session, ngân sách thử lại (retry budget),
|
|
14
|
+
điều kiện dừng khẩn cấp (escalation triggers), cổng hoàn thành (completion gate), và quy ước đặt tên / mã nguồn.
|
|
15
|
+
|
|
16
|
+
`.agents/` TUYỆT ĐỐI KHÔNG quản lý: quy trình task (→ `process/`), chuỗi artifact
|
|
17
|
+
(→ `process/_seeds/`), lệnh kiểm thử/build của dự án (→ `AGENTS.md`), hay ngữ cảnh nghiệp vụ
|
|
18
|
+
(→ `process/context/`).
|
|
19
|
+
</boundary>
|
|
20
|
+
|
|
21
|
+
## Danh Mục Tệp
|
|
22
|
+
|
|
23
|
+
| Tệp | Mục đích |
|
|
24
|
+
|-----|---------|
|
|
25
|
+
| [`behavior.md`](behavior.md) | Khai báo mode, khởi động session, nạp lại trạng thái bền vững từ file |
|
|
26
|
+
| [`guardrails.md`](guardrails.md) | Ngân sách thử lại, điều kiện kích hoạt dừng, điều kiện dừng, cổng hoàn thành |
|
|
27
|
+
| [`conventions/naming.md`](conventions/naming.md) | Quy chuẩn đặt tên biến/hàm và vệ sinh mã nguồn phổ quát |
|
|
28
|
+
|
|
29
|
+
</agent_control_layer>
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
# Giao Thức Hành Vi Của Agent (Behavior Protocol)
|
|
2
|
+
|
|
3
|
+
<behavior_protocol version="1.0">
|
|
4
|
+
|
|
5
|
+
<description>
|
|
6
|
+
Quy tắc phổ quát quy định CÁCH Agent khai báo chế độ hoạt động (mode),
|
|
7
|
+
nạp lại trạng thái khi khởi động session và điều hướng ngữ cảnh. Dùng chung cho mọi dự án.
|
|
8
|
+
</description>
|
|
9
|
+
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
## 1. Khai Báo Chế Độ Hoạt Động (Mode Declaration)
|
|
13
|
+
|
|
14
|
+
Mọi phản hồi thúc đẩy tiến độ task BẮT BUỘC phải mở đầu bằng dòng khai báo mode
|
|
15
|
+
ở ngay dòng đầu tiên. Chế độ khai báo phải khớp với giai đoạn hiện tại được ghi trong `task.md`.
|
|
16
|
+
|
|
17
|
+
```
|
|
18
|
+
[MODE: RESEARCH] — chỉ đọc, không chỉnh sửa mã nguồn
|
|
19
|
+
[MODE: INNOVATE] — tạo phương án đề xuất, không chỉnh sửa mã nguồn
|
|
20
|
+
[MODE: PLAN] — lập kế hoạch lát cắt, không chỉnh sửa mã nguồn
|
|
21
|
+
[MODE: EXECUTE] — thực thi thay đổi mã nguồn trong phạm vi cho phép
|
|
22
|
+
[MODE: REVIEW] — nghiệm thu, không sửa mã nguồn trong lúc review
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
Chỉ lược bỏ khai báo mode đối với các trao đổi mang tính đàm thoại thuần túy không
|
|
26
|
+
làm thay đổi tiến độ task (ví dụ: giải đáp câu hỏi kỹ thuật, làm rõ phạm vi yêu cầu).
|
|
27
|
+
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
## 2. Giao Thức Khởi Động Session (Session Startup Protocol)
|
|
31
|
+
|
|
32
|
+
Trước khi tiếp tục bất kỳ task đang dang dở nào, nạp lại trạng thái bền vững theo đúng thứ tự sau:
|
|
33
|
+
|
|
34
|
+
<startup_sequence>
|
|
35
|
+
1. Đọc `task.md` — xác nhận giai đoạn hiện tại và các cổng đang mở.
|
|
36
|
+
2. Đọc `research.md` nếu giai đoạn Research đã hoàn thành.
|
|
37
|
+
3. Đọc `decision.md` nếu giai đoạn Innovate đã hoàn thành — xác nhận các quyết định đã được duyệt.
|
|
38
|
+
4. Đọc `plan.md` — xác nhận chỉ số lát cắt (slice) hiện tại và hợp đồng phạm vi file.
|
|
39
|
+
5. Đọc `state.md` — xác nhận các slice đã xong, bộ nhớ lỗi (failure memory), ngân sách thử lại và hành động tiếp theo.
|
|
40
|
+
6. Đọc lại bất kỳ tệp mã nguồn nào đã thay đổi kể từ lần nạp ngữ cảnh gần nhất.
|
|
41
|
+
</startup_sequence>
|
|
42
|
+
|
|
43
|
+
**KHÔNG phụ thuộc vào bộ nhớ cửa sổ chat.** Luôn đối chiếu và xác thực
|
|
44
|
+
dựa trên các tệp artifact được liệt kê ở trên.
|
|
45
|
+
|
|
46
|
+
---
|
|
47
|
+
|
|
48
|
+
## 3. Quy Tắc Điều Hướng Ngữ Cảnh (Context Navigation Rules)
|
|
49
|
+
|
|
50
|
+
<context_rules>
|
|
51
|
+
<rule id="minimum_context">
|
|
52
|
+
Chỉ thu thập ngữ cảnh tối thiểu đủ dùng (Minimum Sufficient Context). Không quét toàn bộ repository
|
|
53
|
+
hay tự ý refactor ngoài phạm vi task đang thực thi.
|
|
54
|
+
</rule>
|
|
55
|
+
|
|
56
|
+
<rule id="information_priority">
|
|
57
|
+
Nạp ngữ cảnh theo đúng thứ tự ưu tiên sau:
|
|
58
|
+
1. Đặc tả task và tiêu chí nghiệm thu (`task.md`)
|
|
59
|
+
2. Artifact khảo sát và quyết định (`research.md`, `decision.md`)
|
|
60
|
+
3. Bộ kiểm thử liên quan (test suites)
|
|
61
|
+
4. Domain models và giao diện cổng (port interfaces)
|
|
62
|
+
5. Cấu hình và thiết lập dependency injection
|
|
63
|
+
6. Triển khai cụ thể hạ tầng (infrastructure implementations)
|
|
64
|
+
</rule>
|
|
65
|
+
|
|
66
|
+
<rule id="no_stale_context">
|
|
67
|
+
Đọc lại các tệp liên quan sau bất kỳ thay đổi nào trong repository. Tuyệt đối không
|
|
68
|
+
hành động dựa trên dữ liệu tạm đã lỗi thời trong bộ nhớ.
|
|
69
|
+
</rule>
|
|
70
|
+
</context_rules>
|
|
71
|
+
|
|
72
|
+
</behavior_protocol>
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
# Quy Chuẩn Đặt Tên & Vệ Sinh Mã Nguồn (Naming & Code Conventions)
|
|
2
|
+
|
|
3
|
+
<naming_conventions version="1.0">
|
|
4
|
+
|
|
5
|
+
<description>
|
|
6
|
+
Quy tắc vệ sinh mã nguồn phổ quát áp dụng cho mọi ngôn ngữ và dự án.
|
|
7
|
+
Quy tắc linting/formatting riêng của dự án nằm trong `AGENTS.md` và
|
|
8
|
+
`process/development-protocols/implementation-standards.md`.
|
|
9
|
+
</description>
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## 1. Quy Tắc Đặt Tên (Naming Rules)
|
|
14
|
+
|
|
15
|
+
<naming_rules>
|
|
16
|
+
<rule id="no_leading_underscore">
|
|
17
|
+
Không dùng dấu gạch dưới mở đầu `_` cho tên hàm hoặc phương thức để ám chỉ
|
|
18
|
+
"private". Viết các hàm public rõ ràng, phẳng với tên tự giải thích mục đích.
|
|
19
|
+
Ngoại lệ: các dunder/magic methods bắt buộc của ngôn ngữ (ví dụ: `__init__` trong Python).
|
|
20
|
+
</rule>
|
|
21
|
+
|
|
22
|
+
<rule id="self_explanatory">
|
|
23
|
+
Tên gọi phải bộc lộ rõ ý định mà không cần comment giải thích thêm.
|
|
24
|
+
Ưu tiên `calculate_retry_delay()` thay vì `calc()` hay `do_thing()`.
|
|
25
|
+
</rule>
|
|
26
|
+
|
|
27
|
+
<rule id="no_abbreviations">
|
|
28
|
+
Tránh viết tắt khó hiểu. Viết `connection_timeout` thay vì `conn_to`,
|
|
29
|
+
`maximum_retry_count` thay vì `max_rtry_cnt`.
|
|
30
|
+
Ngoại lệ: các từ viết tắt phổ quát được hiểu chung (ví dụ: `url`, `id`, `api`).
|
|
31
|
+
</rule>
|
|
32
|
+
</naming_rules>
|
|
33
|
+
|
|
34
|
+
---
|
|
35
|
+
|
|
36
|
+
## 2. Vệ Sinh Cấu Trúc (Structural Hygiene)
|
|
37
|
+
|
|
38
|
+
<structural_rules>
|
|
39
|
+
<rule id="single_responsibility">
|
|
40
|
+
Mỗi hàm hoặc class chỉ có duy nhất một trách nhiệm được nêu rõ ràng.
|
|
41
|
+
Tách nhỏ khi một đơn vị làm nhiều hơn một việc.
|
|
42
|
+
</rule>
|
|
43
|
+
|
|
44
|
+
<rule id="no_magic_values">
|
|
45
|
+
Trích xuất toàn bộ giá trị số/chuỗi trực tiếp (magic literals) thành hằng số có tên hoặc file cấu hình.
|
|
46
|
+
</rule>
|
|
47
|
+
|
|
48
|
+
<rule id="no_suppression">
|
|
49
|
+
Tuyệt đối không tắt cảnh báo linter hoặc type checker bằng comment bỏ qua nội dòng
|
|
50
|
+
(`# type: ignore`, `# noqa`, `eslint-disable`, `@SuppressWarnings`, v.v.)
|
|
51
|
+
trừ khi chính việc bỏ qua đó được review rõ ràng và chú thích lý do cụ thể.
|
|
52
|
+
</rule>
|
|
53
|
+
</structural_rules>
|
|
54
|
+
|
|
55
|
+
</naming_conventions>
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
# Ranh Giới An Toàn Của Agent (Guardrails)
|
|
2
|
+
|
|
3
|
+
<agent_guardrails version="1.0">
|
|
4
|
+
|
|
5
|
+
<description>
|
|
6
|
+
Ranh giới an toàn phổ quát cho quá trình thực thi của Agent: ngân sách thử lại (retry budget),
|
|
7
|
+
điều kiện kích hoạt dừng khẩn cấp (escalation triggers), điều kiện dừng (stop conditions) và cổng hoàn thành.
|
|
8
|
+
Độc lập với dự án — áp dụng cho mọi ngôn ngữ, framework hoặc toolchain.
|
|
9
|
+
</description>
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## 1. Ngân Sách Thử Lại (Retry Budget)
|
|
14
|
+
|
|
15
|
+
<retry_budget max_attempts="3">
|
|
16
|
+
Tối đa 3 lần thử lại liên tiếp cho cùng một triệu chứng lỗi.
|
|
17
|
+
|
|
18
|
+
Quy tắc:
|
|
19
|
+
- Tuyệt đối không giấu lỗi bằng các cờ bỏ qua kiểm tra (ví dụ: `# type: ignore`, `eslint-disable`,
|
|
20
|
+
`@SuppressWarnings`) để vượt qua cổng một cách giả tạo.
|
|
21
|
+
- Ghi nhận mọi lần thất bại vào `state.md > <failure_memory>` với:
|
|
22
|
+
- failure signature (mô tả triệu chứng lỗi duy nhất)
|
|
23
|
+
- hypothesis tested (giả thuyết nguyên nhân đã đặt ra)
|
|
24
|
+
- experiment run (thử nghiệm đã thực hiện)
|
|
25
|
+
- result observed (kết quả quan sát thực tế)
|
|
26
|
+
- Nếu hết ngân sách thử lại: DỪNG LẠI (HALT), ghi vào `<open_decisions>` trong `task.md`,
|
|
27
|
+
và yêu cầu con người hướng dẫn xử lý.
|
|
28
|
+
</retry_budget>
|
|
29
|
+
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
## 2. Điều Kiện Kích Hoạt Dừng Khẩn Cấp (Escalation & Stop Conditions)
|
|
33
|
+
|
|
34
|
+
<escalation_triggers>
|
|
35
|
+
Dừng lại ngay lập tức và yêu cầu con người hướng dẫn nếu BẤT KỲ điều nào sau đây xảy ra:
|
|
36
|
+
|
|
37
|
+
1. Ngân sách thử lại đã cạn kiệt cho một lỗi lặp đi lặp lại.
|
|
38
|
+
2. Thay đổi cần thiết chạm vào Public API, database schema, hoặc chính sách bảo mật
|
|
39
|
+
chưa được khai báo trong kế hoạch đã duyệt.
|
|
40
|
+
3. Thay đổi cần thiết chạm vào tệp nằm ngoài phạm vi được định nghĩa trong `plan.md`.
|
|
41
|
+
4. Cần một quyết định nghiệp vụ hoặc chính sách chưa có trong `<approved_decisions>`.
|
|
42
|
+
5. Cần mở rộng phạm vi ra ngoài mục `<out_of_scope>` trong `task.md`.
|
|
43
|
+
|
|
44
|
+
Ngoại lệ: KHÔNG dừng nếu thay đổi đã được người dùng ủy quyền rõ ràng
|
|
45
|
+
trong prompt/spec, hoặc nếu đó là tệp test đi kèm bắt buộc hay cập nhật import.
|
|
46
|
+
</escalation_triggers>
|
|
47
|
+
|
|
48
|
+
---
|
|
49
|
+
|
|
50
|
+
## 3. Cổng Hoàn Thành (Completion Gate)
|
|
51
|
+
|
|
52
|
+
<completion_gate>
|
|
53
|
+
Một task CHỈ ĐƯỢC COI LÀ HOÀN THÀNH khi TẤT CẢ các điều sau đồng thời thỏa mãn:
|
|
54
|
+
|
|
55
|
+
1. Mọi Tiêu chí nghiệm thu (AC) trong `task.md` đều được kiểm chứng (`- [x]`) kèm
|
|
56
|
+
bằng chứng được ghi lại trong `review.md`.
|
|
57
|
+
2. Mọi lệnh kiểm tra tự động (như định nghĩa trong `AGENTS.md`) thực thi với
|
|
58
|
+
0 lỗi (zero errors) và 0 cảnh báo (zero warnings).
|
|
59
|
+
3. Gate 3 trong `review.md` được đánh dấu đạt và quyết định review là PASS.
|
|
60
|
+
4. Lệnh `git diff` cuối cùng không chứa bất kỳ sửa đổi ngoài luồng hay chưa được review nào,
|
|
61
|
+
đồng thời mọi mã debug tạm thời / artifact scratch đã được dọn sạch 100%.
|
|
62
|
+
5. Thư mục task được di chuyển sang `completed/` và tệp `handoff.md` đã được tạo.
|
|
63
|
+
</completion_gate>
|
|
64
|
+
|
|
65
|
+
---
|
|
66
|
+
|
|
67
|
+
## 4. Bảo Toàn Tính Bất Biến (Invariant Preservation)
|
|
68
|
+
|
|
69
|
+
<invariants>
|
|
70
|
+
- Tuyệt đối không ghi đè hoặc xóa nội dung đặc tả do con người viết trong `task.md`.
|
|
71
|
+
- Chỉ đánh dấu `- [x]` sau khi lệnh kiểm chứng tương ứng thực sự pass —
|
|
72
|
+
không bao giờ tích trước.
|
|
73
|
+
- Giữ các chỉnh sửa trong phạm vi subsystem đã khai báo trừ khi có yêu cầu
|
|
74
|
+
phối hợp liên hệ thống rõ ràng và đã được phê duyệt.
|
|
75
|
+
</invariants>
|
|
76
|
+
|
|
77
|
+
---
|
|
78
|
+
|
|
79
|
+
## 5. Ranh Giới An Toàn Lệnh & Danh Sách Cấm Phá Hủy (Command Safety & Blacklist)
|
|
80
|
+
|
|
81
|
+
<command_safety>
|
|
82
|
+
Agent TUYỆT ĐỐI KHÔNG BAO GIỜ thực thi các lệnh có tính phá hủy, không thể hoàn nguyên hoặc làm rò rỉ thông tin xác thực:
|
|
83
|
+
|
|
84
|
+
- **Thao tác Git:** Không bao giờ chạy `git push --force`, `git push -f`, `git reset --hard`,
|
|
85
|
+
hoặc `git clean -fdx` trừ khi được kỹ sư con người ủy quyền rõ ràng trong session hiện tại.
|
|
86
|
+
- **Xóa File Hệ Thống:** Không bao giờ chạy lệnh xóa đệ quy không giới hạn (ví dụ: `rm -rf /`,
|
|
87
|
+
`rm -rf ~`, `rm -rf .`) hoặc xóa các tệp nằm ngoài phạm vi task đang hoạt động.
|
|
88
|
+
- **DDL/DML Cơ Sở Dữ Liệu:** Không bao giờ chạy các thao tác phá hủy dữ liệu khi chưa có sự chấp thuận rõ ràng
|
|
89
|
+
(`DROP DATABASE`, `DROP TABLE`, `TRUNCATE`, hoặc câu lệnh `DELETE` thiếu mệnh đề `WHERE` cụ thể).
|
|
90
|
+
- **Bí Mật & Chứng Thư (Secrets):** Không bao giờ đọc, in ra màn hình, ghi log hoặc export nội dung
|
|
91
|
+
`.env*`, `*.pem`, `*.key`, SSH keys hoặc credential cloud vào artifact task hoặc cửa sổ chat.
|
|
92
|
+
- **Cô Lập Môi Trường:** Chỉ thực thi lệnh thông qua khung kiểm thử chỉ định
|
|
93
|
+
`<validation_commands>` hoặc trình quản lý gói chuẩn. Không bao giờ tải và chạy các script
|
|
94
|
+
nhị phân từ xa tùy tiện (`curl ... | bash`).
|
|
95
|
+
</command_safety>
|
|
96
|
+
|
|
97
|
+
---
|
|
98
|
+
|
|
99
|
+
## 6. Giao Thức Dọn Dẹp & Giải Phóng Phiên (Housekeeping & Teardown)
|
|
100
|
+
|
|
101
|
+
<housekeeping_protocol>
|
|
102
|
+
Trước khi đề nghị ký duyệt Gate 3 hoặc đánh dấu task là COMPLETE, Agent phải dọn dẹp toàn diện:
|
|
103
|
+
|
|
104
|
+
1. **Xóa Debug Tạm Thời:** Gỡ bỏ toàn bộ các dòng log tạm (`console.log`, `print()`,
|
|
105
|
+
`debugger`, `dump()`, `pprint()`, hoặc các đoạn code thử nghiệm bị comment lại) sinh ra trong lúc làm việc.
|
|
106
|
+
2. **Dọn Dẹp Scratch:** Xóa các tệp mock tạm, script test nháp và tệp SQLite / dump dữ liệu tạm sinh ra
|
|
107
|
+
trong vòng lặp thực thi.
|
|
108
|
+
3. **Làm Sạch Git Diff:** Chạy `git status` và `git diff` để đảm bảo chỉ có các tệp
|
|
109
|
+
có chủ đích nằm trong phạm vi đã thống nhất ở `plan.md` bị thay đổi.
|
|
110
|
+
4. **Chốt Trạng Thái:** Đảm bảo `state.md` được đồng bộ sạch sẽ và tạo tệp `handoff.md`.
|
|
111
|
+
</housekeeping_protocol>
|
|
112
|
+
|
|
113
|
+
</agent_guardrails>
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
# Hướng dẫn Điều phối Agent trong Repository (RIPER-5 Framework)
|
|
2
|
+
|
|
3
|
+
<agent_guidelines version="4.0">
|
|
4
|
+
|
|
5
|
+
<overview>
|
|
6
|
+
Cấu hình điểm khởi đầu (Entry-point) cho các AI Agent trong subsystem/project này.
|
|
7
|
+
Thiết lập các cài đặt riêng của dự án và kết nối 2 tầng quy chuẩn dùng chung:
|
|
8
|
+
- **`.agents/`** — quy tắc điều khiển hành vi của Agent (behavior, guardrails, conventions)
|
|
9
|
+
- **`process/`** — quy trình thực thi task, chuỗi artifact và cơ sở tri thức dài hạn
|
|
10
|
+
|
|
11
|
+
Tệp này CHỈ chứa những gì đặc thù của dự án: lệnh kiểm thử/build,
|
|
12
|
+
hiệu chỉnh ranh giới kiến trúc và tham chiếu đường dẫn.
|
|
13
|
+
</overview>
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## 1. Tham chiếu Tầng Điều khiển Agent (.agents/)
|
|
18
|
+
|
|
19
|
+
<agent_control_ref>
|
|
20
|
+
Các quy tắc điều khiển Agent dùng chung nằm trong [`.agents/`](.agents/README.md):
|
|
21
|
+
|
|
22
|
+
| Tệp | Phạm vi quản lý |
|
|
23
|
+
|-----|----------------|
|
|
24
|
+
| [`.agents/behavior.md`](.agents/behavior.md) | Khai báo chế độ (Mode), khởi động session, thứ tự ưu tiên ngữ cảnh |
|
|
25
|
+
| [`.agents/guardrails.md`](.agents/guardrails.md) | Ngân sách thử lại (Retry budget), điều kiện kích hoạt dừng khẩn cấp, cổng hoàn thành |
|
|
26
|
+
| [`.agents/conventions/naming.md`](.agents/conventions/naming.md) | Quy chuẩn đặt tên và vệ sinh cấu trúc mã nguồn |
|
|
27
|
+
|
|
28
|
+
Đọc các tệp này khi bắt đầu session. Chúng không yêu cầu chỉnh sửa riêng cho từng dự án.
|
|
29
|
+
</agent_control_ref>
|
|
30
|
+
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
## 2. 4 Trụ cột Cốt lõi (Core Pillars)
|
|
34
|
+
|
|
35
|
+
<foundations>
|
|
36
|
+
<!-- Trụ cột 1: Task & Specification -->
|
|
37
|
+
<pillar id="task_spec" title="Task & Đặc tả (Specification)">
|
|
38
|
+
<rule>Nguồn sự thật duy nhất (Single Source of Truth): Tệp task đang thực thi trong [`process/features/active/{feature}/task.md`](process/features/) hoặc [`process/general-plans/active/{task}/task.md`](process/general-plans/) (khởi tạo từ [`process/_seeds/task-template.md.seed`](process/_seeds/task-template.md.seed)).</rule>
|
|
39
|
+
<rule>Định nghĩa thay đổi thông qua Mục tiêu (Goal), Hành vi hiện tại (Current Behavior), Hành vi kỳ vọng (Expected Behavior), Bất biến (Invariants) và Ngoài phạm vi (`<out_of_scope>`).</rule>
|
|
40
|
+
<rule>Tiêu chí nghiệm thu (Acceptance Criteria - AC) phải rõ ràng, kiểm chứng được dưới dạng checkbox markdown (`- [ ]`).</rule>
|
|
41
|
+
<rule>Mỗi task đều có bản hợp đồng master (`task.md`) và chuỗi artifact hoàn chỉnh: `research.md → decision.md → plan.md → state.md → review.md → handoff.md`.</rule>
|
|
42
|
+
</pillar>
|
|
43
|
+
|
|
44
|
+
<!-- Trụ cột 2: Context Navigation -->
|
|
45
|
+
<pillar id="context" title="Điều hướng & Nạp ngữ cảnh (Context Navigation)">
|
|
46
|
+
<rule>Chỉ thu thập ngữ cảnh tối thiểu đủ dùng (Minimum Sufficient Context). Tuyệt đối không quét toàn bộ repo hay tự ý refactor ngoài phạm vi.</rule>
|
|
47
|
+
<rule>Tuân thủ thứ tự ưu tiên thông tin được định nghĩa trong [`.agents/behavior.md`](.agents/behavior.md).</rule>
|
|
48
|
+
<rule>Định tuyến ngữ cảnh dự án thông qua [`process/context/all-context.md`](process/context/all-context.md).</rule>
|
|
49
|
+
</pillar>
|
|
50
|
+
|
|
51
|
+
<!-- Trụ cột 3: Engineering Harness & Guardrails -->
|
|
52
|
+
<pillar id="harness" title="Khung kiểm thử & Ranh giới an toàn (Harness & Guardrails)">
|
|
53
|
+
<validation_commands>
|
|
54
|
+
# ── Tùy chỉnh theo dự án: điều chỉnh các lệnh sau phù hợp với toolchain của bạn ──
|
|
55
|
+
# Python: uv run pytest && uv run mypy --strict . && uv run ruff check . && uv run ruff format --check .
|
|
56
|
+
# Node/TS: npm run test && npm run typecheck && npm run lint
|
|
57
|
+
# Go: go test ./... && go vet ./...
|
|
58
|
+
</validation_commands>
|
|
59
|
+
<architecture_guardrail>
|
|
60
|
+
Clean Architecture & Dependency Injection cung cấp định hướng cấu trúc, KHÔNG PHẢI
|
|
61
|
+
chỉ thị để làm phức tạp hóa quá mức các hàm tiện ích đơn giản.
|
|
62
|
+
</architecture_guardrail>
|
|
63
|
+
</pillar>
|
|
64
|
+
</foundations>
|
|
65
|
+
|
|
66
|
+
---
|
|
67
|
+
|
|
68
|
+
## 3. Giao thức Vận hành RIPER-5 (Trụ cột 4: Vòng lặp)
|
|
69
|
+
|
|
70
|
+
<riper5_protocol>
|
|
71
|
+
|
|
72
|
+
<!-- ─────────────────── RÀNG BUỘC TỪNG GIAI ĐOẠN ─────────────────── -->
|
|
73
|
+
|
|
74
|
+
<phase name="RESEARCH" order="1">
|
|
75
|
+
<constraint>CHỈ ĐỌC (READ-ONLY). Không chỉnh sửa mã nguồn.</constraint>
|
|
76
|
+
<constraint>Không tự ý ra quyết định triển khai.</constraint>
|
|
77
|
+
<constraint>Không tự ý chọn lựa kiến trúc.</constraint>
|
|
78
|
+
<output>Tạo/cập nhật `research.md`. Phân loại bằng chứng thành Đã xác nhận (Confirmed) / Quan sát thấy (Observed) / Giả thuyết (Hypothesized).</output>
|
|
79
|
+
<gate id="G0">Đánh dấu đạt tất cả Tiêu chí rời khỏi Khảo sát (Research Exit Criteria) trong `research.md` trước khi chuyển tiếp.</gate>
|
|
80
|
+
</phase>
|
|
81
|
+
|
|
82
|
+
<phase name="INNOVATE" order="2">
|
|
83
|
+
<constraint>CHỈ ĐỌC (READ-ONLY). Không chỉnh sửa mã nguồn.</constraint>
|
|
84
|
+
<constraint>Đề xuất 2–3 phương án khả thi kèm ma trận đánh đổi (Trade-off). KHÔNG tự ý đơn phương quyết định.</constraint>
|
|
85
|
+
<constraint>Tuyệt đối không tự ý quyết định Public API / DB schema / chính sách bảo mật / quy tắc nghiệp vụ khi chưa có sự phê duyệt của con người.</constraint>
|
|
86
|
+
<output>Tạo `decision.md`. Để trống phần `<engineer_decision>` — kỹ sư sẽ điền phần này.</output>
|
|
87
|
+
<gate id="G1">Gate 1 trong `decision.md` phải được kỹ sư kiểm tra và ký duyệt trước khi chuyển sang Plan.</gate>
|
|
88
|
+
</phase>
|
|
89
|
+
|
|
90
|
+
<phase name="PLAN" order="3">
|
|
91
|
+
<constraint>Chỉ tạo/sửa artifact lập kế hoạch. Không chỉnh sửa mã nguồn.</constraint>
|
|
92
|
+
<constraint>Mỗi lát cắt (slice) phải có công cụ kiểm chứng (verifier), bằng chứng kỳ vọng và điểm hoàn nguyên (rollback point).</constraint>
|
|
93
|
+
<constraint>Hợp đồng phạm vi (danh sách file được phép / cấm sửa) phải tường minh.</constraint>
|
|
94
|
+
<output>Tạo `plan.md`. Điền sẵn các tiêu đề của Ma trận Kiểm chứng (Verification Matrix).</output>
|
|
95
|
+
<gate id="G2">Gate 2 trong `plan.md` phải được kỹ sư kiểm tra và ký duyệt trước khi chuyển sang Execute.</gate>
|
|
96
|
+
</phase>
|
|
97
|
+
|
|
98
|
+
<phase name="EXECUTE" order="4">
|
|
99
|
+
<constraint>Chỉ đọc/ghi trong phạm vi file đã được phê duyệt trong `plan.md`.</constraint>
|
|
100
|
+
<constraint>Thực hiện từng lát cắt một. Chạy verifier sau mỗi slice. Kiểm tra diff sau mỗi slice.</constraint>
|
|
101
|
+
<constraint>Không refactor lan man. Không sửa các file bị cấm.</constraint>
|
|
102
|
+
<constraint>Cập nhật `state.md` ngay sau mỗi slice hoàn thành.</constraint>
|
|
103
|
+
<output>Mã nguồn + kiểm thử + cập nhật `state.md` kèm bằng chứng kiểm chứng.</output>
|
|
104
|
+
</phase>
|
|
105
|
+
|
|
106
|
+
<phase name="REVIEW" order="5">
|
|
107
|
+
<constraint>CHỈ ĐỌC (READ-ONLY). Có thể chạy các lệnh kiểm thử tự động.</constraint>
|
|
108
|
+
<constraint>Không sửa mã nguồn trong lúc review. Ghi nhận các phát hiện vào `review.md`.</constraint>
|
|
109
|
+
<constraint>Bao quát: hành vi (behavior), kiến trúc (architecture), dữ liệu (data), bảo mật (security), hồi quy (regression).</constraint>
|
|
110
|
+
<output>Tạo `review.md` với các phát hiện được phân loại theo danh mục/mức độ/loại và checklist Gate 3.</output>
|
|
111
|
+
<gate id="G3">Gate 3 trong `review.md` phải được ký duyệt trước khi bàn giao. Quyết định review phải là PASS.</gate>
|
|
112
|
+
</phase>
|
|
113
|
+
|
|
114
|
+
<!-- Quy tắc hành vi (khai báo mode, retry, escalation, cổng hoàn thành) →
|
|
115
|
+
xem .agents/behavior.md và .agents/guardrails.md -->
|
|
116
|
+
|
|
117
|
+
</riper5_protocol>
|
|
118
|
+
|
|
119
|
+
---
|
|
120
|
+
|
|
121
|
+
## 4. Quy tắc Không gian Làm việc (Workspace Protocols)
|
|
122
|
+
|
|
123
|
+
<workspace_rules>
|
|
124
|
+
<rule id="env">Thực thi mọi lệnh bên trong môi trường ảo / khung runtime được chỉ định.</rule>
|
|
125
|
+
<rule id="sync">Chỉ đánh dấu `- [x]` sau khi lệnh kiểm chứng tương ứng thực sự pass. Tuyệt đối không ghi đè đặc tả do con người viết.</rule>
|
|
126
|
+
<rule id="isolation">Giữ các chỉnh sửa trong phạm vi subsystem này trừ khi có yêu cầu phối hợp liên hệ thống rõ ràng.</rule>
|
|
127
|
+
<rule id="subagents">Việc phân công subagent phải tuân thủ [`process/development-protocols/orchestration.md`](process/development-protocols/orchestration.md).</rule>
|
|
128
|
+
<rule id="no_stale_context">Đọc lại các tệp liên quan sau khi mã nguồn trong repository thay đổi. Không dựa vào ngữ cảnh hội thoại đã cũ.</rule>
|
|
129
|
+
<rule id="command_safety">Không bao giờ chạy các lệnh phá hủy (force push, hard reset, rm -rf bừa bãi, DDL drop DB, đọc secrets). Xem .agents/guardrails.md.</rule>
|
|
130
|
+
<rule id="housekeeping">Dọn dẹp sạch sẽ toàn bộ debug log, artifact tạm (scratch) và kiểm tra git diff tinh gọn trước khi đề nghị Gate G3.</rule>
|
|
131
|
+
</workspace_rules>
|
|
132
|
+
|
|
133
|
+
</agent_guidelines>
|