@k0t0vich/meta-agents-template 0.1.7 → 0.1.9
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 +18 -0
- package/README.md +12 -14
- package/package.json +12 -4
- package/src/cli.mjs +20 -6
- package/src/init.mjs +45 -7
- package/template/.meta-agents/config/project-context.yaml +2 -0
- package/template/.meta-agents/config/system.yaml +1 -1
- package/template/.meta-agents/prompts/status-agent.md +3 -0
- package/template/.meta-agents/scripts/task-branch-router.mjs +16 -5
- package/template/.meta-agents/scripts/verify-commit-link.mjs +5 -3
- package/template/README.md +6 -7
- package/template/agents.md +4 -4
- package/template/package.json +10 -10
- package/template/tracker-command-template.md +4 -4
- package/agents.md +0 -226
- package/tracker-command-template.md +0 -439
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,24 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this package are documented in this file.
|
|
4
4
|
|
|
5
|
+
## 0.1.9 - 2026-03-20
|
|
6
|
+
|
|
7
|
+
### Fixed
|
|
8
|
+
- `meta-agents init` now creates `AGENTS.md` by default for new projects, so agent runtimes that expect uppercase bootstrap filename can load rules reliably.
|
|
9
|
+
- Existing projects with pre-created `agents.md` remain non-destructive: init still updates only managed links block instead of replacing full file.
|
|
10
|
+
- Bootstrap block now includes explicit required instruction to read canonical rules from npm-linked template files.
|
|
11
|
+
- Branch context protection for `meta:task-start` now checks `AGENTS.md` with fallback to `agents.md`.
|
|
12
|
+
- Local smoke now validates `AGENTS.md` presence and required bootstrap instruction in empty-folder install scenario.
|
|
13
|
+
|
|
14
|
+
## 0.1.8 - 2026-03-20
|
|
15
|
+
|
|
16
|
+
### Changed
|
|
17
|
+
- Finalized npm-linked rules model: generated projects keep root configs only (`project-context.yaml`, `trackers.yaml`) and execute meta scripts directly from `node_modules/@k0t0vich/meta-agents-template/template/.meta-agents/scripts/*`.
|
|
18
|
+
- Reworked root bootstrap docs and `agents.md` so project context stays local while operational rules are consumed from template-linked sources.
|
|
19
|
+
- Restored reliable status flow for both source repo and generated projects (`meta:status` fallback paths documented and runnable).
|
|
20
|
+
- Tightened commit-message validation to canonical format `#<issue-number> <summary>` and synchronized policy text with that format.
|
|
21
|
+
- Expanded local release smoke to validate two required scenarios: linked execution from current code and installation flow from an empty folder.
|
|
22
|
+
|
|
5
23
|
## 0.1.7 - 2026-03-20
|
|
6
24
|
|
|
7
25
|
### Changed
|
package/README.md
CHANGED
|
@@ -31,8 +31,8 @@ npx -y @k0t0vich/meta-agents-template init . --yes --tracker github
|
|
|
31
31
|
Важно:
|
|
32
32
|
- если пользователь дал URL `https://www.npmjs.com/package/@k0t0vich/meta-agents-template`, извлекай имя пакета `@k0t0vich/meta-agents-template` и ставь именно его;
|
|
33
33
|
- не запускай `npm i -D ...` в папке без `package.json`, иначе npm может установить пакет в родительский проект.
|
|
34
|
-
- `meta-agents init` по умолчанию работает non-destructive: в корне создаёт/обновляет только `.meta-agents/config
|
|
35
|
-
- `--force` нужен только если надо перезаписать уже существующие
|
|
34
|
+
- `meta-agents init` по умолчанию работает non-destructive: в корне создаёт/обновляет только project-specific конфиги `.meta-agents/config/project-context.yaml` (имя проекта + tracker) и `.meta-agents/config/trackers.yaml`, аккуратно merge-ит `meta:*` scripts в `package.json` и добавляет/обновляет bootstrap-блок в `AGENTS.md` (или в уже существующий `agents.md`) вместо полной перезаписи.
|
|
35
|
+
- `--force` нужен только если надо перезаписать уже существующие project-specific конфиги (`project-context.yaml`, `trackers.yaml`) и мигрировать legacy `meta:*` scripts.
|
|
36
36
|
|
|
37
37
|
## One-line для агентного запуска
|
|
38
38
|
Если пользователь пишет только:
|
|
@@ -48,7 +48,7 @@ mkdir -p my-project && cd my-project && npm init -y && npm i -D @k0t0vich/meta-a
|
|
|
48
48
|
Проверка, что шаблон и правила действительно развернуты:
|
|
49
49
|
|
|
50
50
|
```bash
|
|
51
|
-
test -f agents.md && test -f .meta-agents/config/project-context.yaml && test -f node_modules/@k0t0vich/meta-agents-template/agents.md && echo "meta-agents template ready"
|
|
51
|
+
(test -f AGENTS.md || test -f agents.md) && test -f .meta-agents/config/project-context.yaml && test -f node_modules/@k0t0vich/meta-agents-template/template/agents.md && echo "meta-agents template ready"
|
|
52
52
|
```
|
|
53
53
|
|
|
54
54
|
## Диалог при `init`
|
|
@@ -64,21 +64,19 @@ test -f agents.md && test -f .meta-agents/config/project-context.yaml && test -f
|
|
|
64
64
|
my-project/
|
|
65
65
|
package.json
|
|
66
66
|
package-lock.json
|
|
67
|
-
agents.md
|
|
67
|
+
AGENTS.md # или agents.md, если файл уже существовал
|
|
68
68
|
.meta-agents/
|
|
69
69
|
config/
|
|
70
|
-
system.yaml
|
|
71
|
-
roles.yaml
|
|
72
|
-
trackers.yaml
|
|
73
70
|
project-context.yaml
|
|
71
|
+
trackers.yaml
|
|
74
72
|
node_modules/
|
|
75
73
|
@k0t0vich/meta-agents-template/
|
|
76
|
-
agents.md
|
|
77
|
-
tracker-command-template.md
|
|
74
|
+
template/agents.md
|
|
75
|
+
template/tracker-command-template.md
|
|
78
76
|
template/.meta-agents/scripts/*.mjs
|
|
79
77
|
```
|
|
80
78
|
|
|
81
|
-
`
|
|
79
|
+
Файл `AGENTS.md` (или уже существующий `agents.md`) не перезаписывается целиком: `init` добавляет/обновляет в нём только managed bootstrap-блок со ссылками на canonical rules из npm-пакета.
|
|
82
80
|
|
|
83
81
|
## Канонические команды
|
|
84
82
|
0. `VERIFY_GOVERNANCE_GATE`
|
|
@@ -131,7 +129,7 @@ npm run self:bootstrap
|
|
|
131
129
|
10. Есть отдельное явное подтверждение пользователя на прохождение review (`Review Approved: yes`).
|
|
132
130
|
11. Перед merge пройден MR review gate (`RUN_MR_REVIEW_GATE`) с финальным `PASS_CONFIRMED`.
|
|
133
131
|
12. Есть отдельное явное подтверждение пользователя на MR review (`MR Review Approved: yes`).
|
|
134
|
-
13. Каждый коммит
|
|
132
|
+
13. Каждый коммит следует формату `#issue-number <summary>` (issue ref в начале commit message).
|
|
135
133
|
|
|
136
134
|
Если хотя бы один пункт не выполнен, задача не принимается.
|
|
137
135
|
|
|
@@ -155,7 +153,7 @@ npm run meta:status
|
|
|
155
153
|
`meta:ops` принудительно проверяет tracker provider lock и блокирует выполнение, если переданный `--tracker` не совпадает с зафиксированным provider проекта.
|
|
156
154
|
`meta:branch` валидирует ветку по Git Flow Lite (`main`, `develop`, `feature/*`, `release/*`, `hotfix/*`).
|
|
157
155
|
`meta:task-start` делает branch-routing preflight: сравнивает задачу с текущей веткой, показывает dirty/ahead блокеры и готовит маршрут (`stay_on_current_branch` или `create_new_branch`).
|
|
158
|
-
`meta:task-start` также делает context-protection check для `agents.md` между текущей и базовой веткой и требует явного подтверждения при diff.
|
|
156
|
+
`meta:task-start` также делает context-protection check для `AGENTS.md` (fallback: `agents.md`) между текущей и базовой веткой и требует явного подтверждения при diff.
|
|
159
157
|
Именование branch task ref: использовать GitHub issue ref в формате `issue-<number>`.
|
|
160
158
|
`meta:mr-review` формирует сводный pre-merge отчёт по MR/PR, `meta:mr-review-approve` фиксирует финальный PASS после подтверждения пользователя.
|
|
161
159
|
`meta:status` отдаёт единый статус-срез: trackers used, current sprint, current task, current branch context, git uncommitted и summary.
|
|
@@ -180,7 +178,7 @@ npm run meta:status
|
|
|
180
178
|
- для большой фичи (в режиме GitHub tracker) агент обязан предложить `feature issue` + `epic issue` и отдельную ветку.
|
|
181
179
|
|
|
182
180
|
## Основные документы шаблона
|
|
183
|
-
- [agents.md](./agents.md)
|
|
184
|
-
- [tracker-command-template.md](./tracker-command-template.md)
|
|
181
|
+
- [template/agents.md](./template/agents.md)
|
|
182
|
+
- [template/tracker-command-template.md](./template/tracker-command-template.md)
|
|
185
183
|
- [CHANGELOG.md](./CHANGELOG.md)
|
|
186
184
|
- [GitHub Releases](https://github.com/k0t0vich/meta-agents-template/releases)
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@k0t0vich/meta-agents-template",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.9",
|
|
4
4
|
"description": "Template system for verification-first agentic development",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -10,13 +10,21 @@
|
|
|
10
10
|
"start": "node bin/meta-agents.js --help",
|
|
11
11
|
"self:sync": "node bin/meta-agents.js sync . --force",
|
|
12
12
|
"self:bootstrap": "npm run self:sync && node scripts/self-bootstrap.mjs",
|
|
13
|
-
"release:smoke-local": "node scripts/post-publish-local-smoke.mjs"
|
|
13
|
+
"release:smoke-local": "node scripts/post-publish-local-smoke.mjs",
|
|
14
|
+
"meta:status": "node template/.meta-agents/scripts/sync-status.mjs",
|
|
15
|
+
"meta:branch": "node template/.meta-agents/scripts/verify-branch-strategy.mjs",
|
|
16
|
+
"meta:task-start": "node template/.meta-agents/scripts/task-branch-router.mjs",
|
|
17
|
+
"meta:verify": "node template/.meta-agents/scripts/verify-governance.mjs",
|
|
18
|
+
"meta:review": "node template/.meta-agents/scripts/run-review-gate.mjs",
|
|
19
|
+
"meta:review-approve": "node template/.meta-agents/scripts/run-review-gate.mjs --approve yes",
|
|
20
|
+
"meta:mr-review": "node template/.meta-agents/scripts/run-mr-review-gate.mjs",
|
|
21
|
+
"meta:mr-review-approve": "node template/.meta-agents/scripts/run-mr-review-gate.mjs --approve yes",
|
|
22
|
+
"meta:verify-link": "node template/.meta-agents/scripts/verify-commit-link.mjs",
|
|
23
|
+
"meta:ops": "node template/.meta-agents/scripts/tracker-gateway.mjs"
|
|
14
24
|
},
|
|
15
25
|
"files": [
|
|
16
26
|
"README.md",
|
|
17
27
|
"CHANGELOG.md",
|
|
18
|
-
"agents.md",
|
|
19
|
-
"tracker-command-template.md",
|
|
20
28
|
"bin",
|
|
21
29
|
"src",
|
|
22
30
|
"template"
|
package/src/cli.mjs
CHANGED
|
@@ -279,12 +279,26 @@ export async function main(argv) {
|
|
|
279
279
|
if (result.config.skipped.length > 0) {
|
|
280
280
|
console.log(`Config files kept: ${result.config.skipped.join(", ")}`);
|
|
281
281
|
}
|
|
282
|
-
if (result.agents.created) {
|
|
283
|
-
console.log(
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
282
|
+
if (result.agents.created.length > 0) {
|
|
283
|
+
console.log(
|
|
284
|
+
`Agent bootstrap created: ${result.agents.created
|
|
285
|
+
.map((item) => path.basename(item))
|
|
286
|
+
.join(", ")}`,
|
|
287
|
+
);
|
|
288
|
+
}
|
|
289
|
+
if (result.agents.updated.length > 0) {
|
|
290
|
+
console.log(
|
|
291
|
+
`Agent bootstrap updated: ${result.agents.updated
|
|
292
|
+
.map((item) => path.basename(item))
|
|
293
|
+
.join(", ")}`,
|
|
294
|
+
);
|
|
295
|
+
}
|
|
296
|
+
if (result.agents.created.length === 0 && result.agents.updated.length === 0) {
|
|
297
|
+
console.log(
|
|
298
|
+
`Agent bootstrap already up to date: ${result.agents.unchanged
|
|
299
|
+
.map((item) => path.basename(item))
|
|
300
|
+
.join(", ")}`,
|
|
301
|
+
);
|
|
288
302
|
}
|
|
289
303
|
if (result.git.actions.length > 0) {
|
|
290
304
|
console.log(`Git actions: ${result.git.actions.join("; ")}`);
|
package/src/init.mjs
CHANGED
|
@@ -12,6 +12,8 @@ const TEXT_EXTENSIONS = new Set([
|
|
|
12
12
|
".mjs",
|
|
13
13
|
".js",
|
|
14
14
|
]);
|
|
15
|
+
const ROOT_CONFIG_FILES = ["project-context.yaml", "trackers.yaml"];
|
|
16
|
+
const DEFAULT_AGENTS_FILENAME = "AGENTS.md";
|
|
15
17
|
|
|
16
18
|
const AGENTS_LINK_BLOCK_START = "<!-- meta-agents-template:links:start -->";
|
|
17
19
|
const AGENTS_LINK_BLOCK_END = "<!-- meta-agents-template:links:end -->";
|
|
@@ -218,24 +220,35 @@ function buildAgentsLinkBlock(packageName) {
|
|
|
218
220
|
const lines = [
|
|
219
221
|
AGENTS_LINK_BLOCK_START,
|
|
220
222
|
"## Meta Agents Template (npm-linked)",
|
|
223
|
+
"ОБЯЗАТЕЛЬНО: перед выполнением любой команды сначала прочитай canonical rules по ссылкам ниже.",
|
|
224
|
+
"При конфликте локального текста и шаблона приоритет у canonical files из node_modules.",
|
|
221
225
|
"Базовые правила шаблона:",
|
|
222
|
-
`- [Template agents.md](${packageRoot}/agents.md)`,
|
|
223
|
-
`- [Template tracker-command-template.md](${packageRoot}/tracker-command-template.md)`,
|
|
226
|
+
`- [Template agents.md](${packageRoot}/template/agents.md)`,
|
|
227
|
+
`- [Template tracker-command-template.md](${packageRoot}/template/tracker-command-template.md)`,
|
|
224
228
|
"Локальные конфиги проекта:",
|
|
225
229
|
"- [.meta-agents/config/project-context.yaml](./.meta-agents/config/project-context.yaml)",
|
|
226
230
|
"- [.meta-agents/config/trackers.yaml](./.meta-agents/config/trackers.yaml)",
|
|
227
|
-
"- [.meta-agents/config/system.yaml](./.meta-agents/config/system.yaml)",
|
|
228
231
|
AGENTS_LINK_BLOCK_END,
|
|
229
232
|
];
|
|
230
233
|
return `${lines.join("\n")}\n`;
|
|
231
234
|
}
|
|
232
235
|
|
|
233
|
-
|
|
234
|
-
|
|
236
|
+
function buildAgentsBootstrapContent(fileName, block) {
|
|
237
|
+
return [
|
|
238
|
+
`# ${fileName}`,
|
|
239
|
+
"",
|
|
240
|
+
"Bootstrap file for agent runtime.",
|
|
241
|
+
"Before any task, read canonical rules from the npm-linked files in the block below.",
|
|
242
|
+
"",
|
|
243
|
+
block,
|
|
244
|
+
].join("\n");
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
async function upsertAgentsLinksInFile(agentsPath, packageName) {
|
|
235
248
|
const block = buildAgentsLinkBlock(packageName);
|
|
236
249
|
|
|
237
250
|
if (!(await pathExists(agentsPath))) {
|
|
238
|
-
const content =
|
|
251
|
+
const content = buildAgentsBootstrapContent(path.basename(agentsPath), block);
|
|
239
252
|
await fs.writeFile(agentsPath, content, "utf8");
|
|
240
253
|
return { created: true, updated: false, path: agentsPath };
|
|
241
254
|
}
|
|
@@ -265,10 +278,35 @@ async function upsertAgentsLinks(targetDir, packageName) {
|
|
|
265
278
|
return { created: false, updated, path: agentsPath };
|
|
266
279
|
}
|
|
267
280
|
|
|
281
|
+
async function detectAgentsFilePath(targetDir) {
|
|
282
|
+
try {
|
|
283
|
+
const entries = await fs.readdir(targetDir, { withFileTypes: true });
|
|
284
|
+
const match = entries.find(
|
|
285
|
+
(entry) => entry.isFile() && entry.name.toLowerCase() === "agents.md",
|
|
286
|
+
);
|
|
287
|
+
if (match) {
|
|
288
|
+
return path.join(targetDir, match.name);
|
|
289
|
+
}
|
|
290
|
+
} catch {
|
|
291
|
+
// target directory may not exist yet
|
|
292
|
+
}
|
|
293
|
+
return path.join(targetDir, DEFAULT_AGENTS_FILENAME);
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
async function upsertAgentsLinks(targetDir, packageName) {
|
|
297
|
+
const agentsPath = await detectAgentsFilePath(targetDir);
|
|
298
|
+
const result = await upsertAgentsLinksInFile(agentsPath, packageName);
|
|
299
|
+
return {
|
|
300
|
+
created: result.created ? [result.path] : [],
|
|
301
|
+
updated: result.updated ? [result.path] : [],
|
|
302
|
+
unchanged: !result.created && !result.updated ? [result.path] : [],
|
|
303
|
+
};
|
|
304
|
+
}
|
|
305
|
+
|
|
268
306
|
async function syncConfigFiles({ templateRoot, targetDir, values, force }) {
|
|
269
307
|
const sourceConfigRoot = path.join(templateRoot, ".meta-agents", "config");
|
|
270
308
|
const targetConfigRoot = path.join(targetDir, ".meta-agents", "config");
|
|
271
|
-
const sourceFiles =
|
|
309
|
+
const sourceFiles = ROOT_CONFIG_FILES.map((file) => path.join(sourceConfigRoot, file));
|
|
272
310
|
|
|
273
311
|
const updated = [];
|
|
274
312
|
const skipped = [];
|
|
@@ -22,6 +22,9 @@ Tooling:
|
|
|
22
22
|
- Основной путь: `npm run meta:status`.
|
|
23
23
|
- Для machine-readable вывода можно использовать `npm run meta:status -- --json`.
|
|
24
24
|
- Для веточного preflight по конкретной задаче: `npm run meta:task-start -- --task <#issue> --slug <slug>`.
|
|
25
|
+
- Fallback (если `meta:status` отсутствует в npm scripts):
|
|
26
|
+
- source repo: `node template/.meta-agents/scripts/sync-status.mjs --json`
|
|
27
|
+
- generated project: `node ./node_modules/@k0t0vich/meta-agents-template/template/.meta-agents/scripts/sync-status.mjs --json`
|
|
25
28
|
|
|
26
29
|
Rule:
|
|
27
30
|
- В `github` режиме локальные `tasks/*` не считать авторитетным источником по умолчанию; рассматривать только как cache/legacy artifacts.
|
|
@@ -15,6 +15,7 @@ const TASK_KIND_MAP = {
|
|
|
15
15
|
release: "release",
|
|
16
16
|
hotfix: "hotfix",
|
|
17
17
|
};
|
|
18
|
+
const GOVERNANCE_CONTEXT_FILES = ["AGENTS.md", "agents.md"];
|
|
18
19
|
|
|
19
20
|
function git(args, allowFailure = false) {
|
|
20
21
|
try {
|
|
@@ -266,6 +267,16 @@ function readFileAtRef(ref, filePath) {
|
|
|
266
267
|
return git(["show", `${ref}:${filePath}`], true);
|
|
267
268
|
}
|
|
268
269
|
|
|
270
|
+
function readGovernanceContextAtRef(ref) {
|
|
271
|
+
for (const filePath of GOVERNANCE_CONTEXT_FILES) {
|
|
272
|
+
const content = readFileAtRef(ref, filePath);
|
|
273
|
+
if (content) {
|
|
274
|
+
return { filePath, content };
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
return null;
|
|
278
|
+
}
|
|
279
|
+
|
|
269
280
|
function getContextWarnings(baseBranch) {
|
|
270
281
|
const warnings = [];
|
|
271
282
|
if (!baseBranch) {
|
|
@@ -280,19 +291,19 @@ function getContextWarnings(baseBranch) {
|
|
|
280
291
|
return warnings;
|
|
281
292
|
}
|
|
282
293
|
|
|
283
|
-
const currentAgents =
|
|
284
|
-
const baseAgents =
|
|
294
|
+
const currentAgents = readGovernanceContextAtRef("HEAD");
|
|
295
|
+
const baseAgents = readGovernanceContextAtRef(baseBranch);
|
|
285
296
|
|
|
286
297
|
if (!currentAgents || !baseAgents) {
|
|
287
298
|
warnings.push(
|
|
288
|
-
"Cannot compare governance context file 'agents.md' between current and base branch (missing in one of refs).",
|
|
299
|
+
"Cannot compare governance context file 'AGENTS.md/agents.md' between current and base branch (missing in one of refs).",
|
|
289
300
|
);
|
|
290
301
|
return warnings;
|
|
291
302
|
}
|
|
292
303
|
|
|
293
|
-
if (currentAgents !== baseAgents) {
|
|
304
|
+
if (currentAgents.content !== baseAgents.content) {
|
|
294
305
|
warnings.push(
|
|
295
|
-
`Governance context differs: '
|
|
306
|
+
`Governance context differs: '${currentAgents.filePath}' in current branch is not equal to '${baseBranch}:${baseAgents.filePath}'. Confirm switch before apply.`,
|
|
296
307
|
);
|
|
297
308
|
}
|
|
298
309
|
|
|
@@ -7,8 +7,8 @@ function readLastCommitSubject(ref = "HEAD") {
|
|
|
7
7
|
}
|
|
8
8
|
|
|
9
9
|
function validateMessage(message) {
|
|
10
|
-
const
|
|
11
|
-
return
|
|
10
|
+
const normalized = String(message || "").trim();
|
|
11
|
+
return /^#\d+\s+\S.*$/.test(normalized);
|
|
12
12
|
}
|
|
13
13
|
|
|
14
14
|
function parseArgs(argv) {
|
|
@@ -48,7 +48,9 @@ function main() {
|
|
|
48
48
|
}
|
|
49
49
|
|
|
50
50
|
if (!validateMessage(message)) {
|
|
51
|
-
console.error(
|
|
51
|
+
console.error(
|
|
52
|
+
"Commit link FAIL: message must match '#<issue-number> <summary>' and start with issue ref.",
|
|
53
|
+
);
|
|
52
54
|
console.error(`Message: ${message}`);
|
|
53
55
|
process.exit(1);
|
|
54
56
|
}
|
package/template/README.md
CHANGED
|
@@ -3,11 +3,10 @@
|
|
|
3
3
|
Проект инициализирован шаблоном `meta-agents-template`.
|
|
4
4
|
|
|
5
5
|
## Что уже подключено
|
|
6
|
-
- `agents.md
|
|
7
|
-
-
|
|
8
|
-
- `.meta-agents
|
|
9
|
-
-
|
|
10
|
-
- `tasks/`: backlog/sprint/status-log.
|
|
6
|
+
- `AGENTS.md` (или существующий `agents.md`): локальный bootstrap-файл с ссылками на canonical правила в npm-пакете;
|
|
7
|
+
- `.meta-agents/config/project-context.yaml`: project name + выбранный tracker provider;
|
|
8
|
+
- `.meta-agents/config/trackers.yaml`: lock tracker provider и доступные providers;
|
|
9
|
+
- `meta:*` npm scripts, которые запускают canonical tooling из `node_modules/@k0t0vich/meta-agents-template/template/.meta-agents/scripts/*`.
|
|
11
10
|
|
|
12
11
|
## Source of truth по tracker provider
|
|
13
12
|
- Выбранный при `init` provider фиксируется в `.meta-agents/config/project-context.yaml`.
|
|
@@ -44,7 +43,7 @@
|
|
|
44
43
|
12. Перед релизом `Publishing Agent` обязан обновить публичный `CHANGELOG.md`.
|
|
45
44
|
|
|
46
45
|
## Команды
|
|
47
|
-
Смотри `tracker-command-template.md`.
|
|
46
|
+
Смотри `node_modules/@k0t0vich/meta-agents-template/template/tracker-command-template.md`.
|
|
48
47
|
|
|
49
48
|
Дополнительно:
|
|
50
49
|
```bash
|
|
@@ -65,7 +64,7 @@ npm run meta:status
|
|
|
65
64
|
Если передать `--tracker`, он обязан совпадать с зафиксированным provider проекта, иначе команда блокируется.
|
|
66
65
|
`meta:branch` валидирует ветку по Git Flow Lite (`main`, `develop`, `feature/*`, `release/*`, `hotfix/*`).
|
|
67
66
|
`meta:task-start` делает branch-routing preflight: сравнивает задачу с текущей веткой, показывает dirty/ahead блокеры и готовит маршрут (`stay_on_current_branch` или `create_new_branch`).
|
|
68
|
-
`meta:task-start` также делает context-protection check для `agents.md` между текущей и базовой веткой и требует явного подтверждения при diff.
|
|
67
|
+
`meta:task-start` также делает context-protection check для `AGENTS.md` (fallback: `agents.md`) между текущей и базовой веткой и требует явного подтверждения при diff.
|
|
69
68
|
Именование branch task ref: использовать GitHub issue ref в формате `issue-<number>`.
|
|
70
69
|
`meta:mr-review` формирует сводный pre-merge отчёт по MR/PR, `meta:mr-review-approve` фиксирует финальный PASS после подтверждения пользователя.
|
|
71
70
|
|
package/template/agents.md
CHANGED
|
@@ -148,7 +148,7 @@ Name: <agent role>
|
|
|
148
148
|
- без подтверждения пользователя максимум допустимого статуса: `REVIEW`.
|
|
149
149
|
- `SET_STATUS -> READY` разрешён только после `RUN_REVIEW_GATE: PASS_CONFIRMED`.
|
|
150
150
|
- для задач реализации по умолчанию используется отдельная ветка `feature/*`; прямой рабочий поток на `develop`/`main` не допускается.
|
|
151
|
-
- сообщение коммита обязано
|
|
151
|
+
- сообщение коммита обязано начинаться с ссылки на задачу и summary в формате `#issue-number <summary>`.
|
|
152
152
|
- `READY` означает: коммит сделан и отправлен (`push`) в `feature/*`, `release/*` или `hotfix/*` с открытым PR по правилам ветвления.
|
|
153
153
|
- `DONE` означает: изменения интегрированы в `main`; для `release/*` и `hotfix/*` подтверждён back-merge в `develop`.
|
|
154
154
|
- `PUBLISH` означает: релиз опубликован и доступен в последней версии пакета.
|
|
@@ -172,7 +172,7 @@ Name: <agent role>
|
|
|
172
172
|
6. Согласовать с пользователем способ обработки (`commit/stash/discard/push`).
|
|
173
173
|
7. Переключиться на базовую ветку (`develop` или `main`) и обновить её.
|
|
174
174
|
8. Создать новую рабочую ветку по Git Flow Lite.
|
|
175
|
-
9. Перед переключением проверить консистентность `agents.md` между текущей и базовой веткой; при отличиях показать явное предупреждение и запросить подтверждение пользователя.
|
|
175
|
+
9. Перед переключением проверить консистентность `AGENTS.md` (fallback: `agents.md`) между текущей и базовой веткой; при отличиях показать явное предупреждение и запросить подтверждение пользователя.
|
|
176
176
|
|
|
177
177
|
Без этого preflight выполнение реализации запрещено.
|
|
178
178
|
|
|
@@ -199,9 +199,9 @@ Name: <agent role>
|
|
|
199
199
|
19. Для статуса `DONE` подтверждена интеграция в `main`; для `release/*` и `hotfix/*` подтверждён back-merge в `develop`.
|
|
200
200
|
20. Для статуса `PUBLISH` подтверждена публикация в последней версии.
|
|
201
201
|
21. Для релиза обновлён публичный `CHANGELOG.md`.
|
|
202
|
-
22. Коммит
|
|
202
|
+
22. Коммит следует формату `#issue-number <summary>` (issue ref в начале сообщения).
|
|
203
203
|
23. Для branch routing собран e2e evidence по двум сценариям: `same feature` и `different feature`.
|
|
204
|
-
24. Перед `--apply` подтверждена консистентность контекста `agents.md`
|
|
204
|
+
24. Перед `--apply` подтверждена консистентность контекста `AGENTS.md` (fallback: `agents.md`) или явно подтверждён осознанный switch при diff.
|
|
205
205
|
|
|
206
206
|
Если хотя бы один критерий не выполнен, задача не принимается.
|
|
207
207
|
|
package/template/package.json
CHANGED
|
@@ -3,15 +3,15 @@
|
|
|
3
3
|
"version": "0.1.0",
|
|
4
4
|
"private": true,
|
|
5
5
|
"scripts": {
|
|
6
|
-
"meta:status": "node
|
|
7
|
-
"meta:branch": "node
|
|
8
|
-
"meta:task-start": "node
|
|
9
|
-
"meta:verify": "node
|
|
10
|
-
"meta:review": "node
|
|
11
|
-
"meta:review-approve": "node
|
|
12
|
-
"meta:mr-review": "node
|
|
13
|
-
"meta:mr-review-approve": "node
|
|
14
|
-
"meta:verify-link": "node
|
|
15
|
-
"meta:ops": "node
|
|
6
|
+
"meta:status": "node ./node_modules/@k0t0vich/meta-agents-template/template/.meta-agents/scripts/sync-status.mjs",
|
|
7
|
+
"meta:branch": "node ./node_modules/@k0t0vich/meta-agents-template/template/.meta-agents/scripts/verify-branch-strategy.mjs",
|
|
8
|
+
"meta:task-start": "node ./node_modules/@k0t0vich/meta-agents-template/template/.meta-agents/scripts/task-branch-router.mjs",
|
|
9
|
+
"meta:verify": "node ./node_modules/@k0t0vich/meta-agents-template/template/.meta-agents/scripts/verify-governance.mjs",
|
|
10
|
+
"meta:review": "node ./node_modules/@k0t0vich/meta-agents-template/template/.meta-agents/scripts/run-review-gate.mjs",
|
|
11
|
+
"meta:review-approve": "node ./node_modules/@k0t0vich/meta-agents-template/template/.meta-agents/scripts/run-review-gate.mjs --approve yes",
|
|
12
|
+
"meta:mr-review": "node ./node_modules/@k0t0vich/meta-agents-template/template/.meta-agents/scripts/run-mr-review-gate.mjs",
|
|
13
|
+
"meta:mr-review-approve": "node ./node_modules/@k0t0vich/meta-agents-template/template/.meta-agents/scripts/run-mr-review-gate.mjs --approve yes",
|
|
14
|
+
"meta:verify-link": "node ./node_modules/@k0t0vich/meta-agents-template/template/.meta-agents/scripts/verify-commit-link.mjs",
|
|
15
|
+
"meta:ops": "node ./node_modules/@k0t0vich/meta-agents-template/template/.meta-agents/scripts/tracker-gateway.mjs"
|
|
16
16
|
}
|
|
17
17
|
}
|
|
@@ -67,8 +67,8 @@ result PASS
|
|
|
67
67
|
- branch naming policy: использовать только GitHub issue ref в формате `issue-<number>`;
|
|
68
68
|
- если задача атомарная и относится к текущей feature-ветке, допускается выполнение в текущей ветке после явного подтверждения пользователя;
|
|
69
69
|
- если задача не относится к текущей ветке, требуется: проверить dirty/ahead, согласовать действие с пользователем, перейти на `develop` (или `main` для hotfix), обновить и создать новую ветку;
|
|
70
|
-
- перед `--apply` обязателен контекстный check: сравнить `agents.md` текущей и базовой ветки, при diff запросить явное подтверждение пользователя;
|
|
71
|
-
- сообщение коммита обязательно
|
|
70
|
+
- перед `--apply` обязателен контекстный check: сравнить `AGENTS.md` (fallback: `agents.md`) текущей и базовой ветки, при diff запросить явное подтверждение пользователя;
|
|
71
|
+
- сообщение коммита обязательно следует формату `#issue-number <summary>` (issue ref в начале).
|
|
72
72
|
|
|
73
73
|
Для GitHub трекера статус issue задаётся label-ом (одновременно только один статус из набора):
|
|
74
74
|
- `TODO`
|
|
@@ -187,7 +187,7 @@ tracker __DEFAULT_TRACKER__,
|
|
|
187
187
|
task "#12",
|
|
188
188
|
task kind "atomic",
|
|
189
189
|
command "npm run meta:task-start -- --task #12 --slug api-redirect",
|
|
190
|
-
user dialogue "confirm branch context + dirty/ahead handling +
|
|
190
|
+
user dialogue "confirm branch context + dirty/ahead handling + AGENTS.md context warning + switch decision"
|
|
191
191
|
```
|
|
192
192
|
|
|
193
193
|
### SET_STATUS -> REVIEW (обязателен перед review gate)
|
|
@@ -257,7 +257,7 @@ Agile Manager Agent: commit by name,
|
|
|
257
257
|
tracker __DEFAULT_TRACKER__,
|
|
258
258
|
task "API редирект офферов",
|
|
259
259
|
issue 12,
|
|
260
|
-
commit message "#12
|
|
260
|
+
commit message "#12 API редирект офферов",
|
|
261
261
|
push yes,
|
|
262
262
|
branch "feature/issue-12-api-redirect",
|
|
263
263
|
open mr "optional",
|
package/agents.md
DELETED
|
@@ -1,226 +0,0 @@
|
|
|
1
|
-
# agents.md
|
|
2
|
-
|
|
3
|
-
## 0) Профиль развернутого проекта (source of truth)
|
|
4
|
-
- Project: `meta-agents-template`
|
|
5
|
-
- Tracker provider (обязательный): `github`
|
|
6
|
-
- Файл-источник: `.meta-agents/config/project-context.yaml`
|
|
7
|
-
- Консистентность: значение обязано совпадать с `.meta-agents/config/trackers.yaml -> tracker_gateway.default`.
|
|
8
|
-
- Операционное правило: если пользователь явно не изменил конфиг, все команды (`CREATE_TASK`, `SET_STATUS`, `ASSIGN_SPRINT`, `COMMIT_BY_NAME`, `PREPARE_RELEASE_NOTE`, `MARK_TASKS_PUBLISH`) выполняются только через выбранный tracker provider.
|
|
9
|
-
|
|
10
|
-
## 1) Назначение системы
|
|
11
|
-
Система работает как мета-оркестрация разработки: сначала формализуем задачу и проверяемость, потом делаем реализацию.
|
|
12
|
-
|
|
13
|
-
Базовый поток:
|
|
14
|
-
`clarify -> PRD step -> verification design -> decomposition -> execution -> evidence -> acceptance`
|
|
15
|
-
|
|
16
|
-
Главный принцип:
|
|
17
|
-
`acceptance-first` и `verification-first`.
|
|
18
|
-
|
|
19
|
-
## 2) Обязательный PRD на каждом шаге
|
|
20
|
-
Каждый этап (уточнение, архитектура, декомпозиция, реализация, ревью) обязан иметь PRD-запись в строгом порядке:
|
|
21
|
-
|
|
22
|
-
1. `Описание`.
|
|
23
|
-
2. `Проверяемость`.
|
|
24
|
-
3. `Что сделано`.
|
|
25
|
-
|
|
26
|
-
Правило запуска этапа:
|
|
27
|
-
- если не заполнены `Описание` и `Проверяемость`, этап не стартует.
|
|
28
|
-
|
|
29
|
-
## 3) Роли агентов
|
|
30
|
-
- `Chief of Staff Agent`: оркестрация цепочки, приоритеты, блокеры, эскалации.
|
|
31
|
-
- `Status Agent`: сводный статус проекта (`tracker/sprint/task/git`) по запросам состояния.
|
|
32
|
-
- `Agile Manager Agent`: операции по задачам/спринтам/статусам/коммитам через трекер.
|
|
33
|
-
- `Governance Watchdog Agent`: обязательный контроль PRD/критериев/разрешений перед каждой командой.
|
|
34
|
-
- `Product Manager Agent`: формулирует PRD и критерии приёмки.
|
|
35
|
-
- `Solution Architect Agent`: проектирует архитектуру и контракты компонентов.
|
|
36
|
-
- `Verifier Designer Agent`: проектирует модель валидации и evidence-план.
|
|
37
|
-
- `Decomposer Agent`: режет систему на проверяемые компоненты.
|
|
38
|
-
- `Engineering Agent`: реализация по контракту.
|
|
39
|
-
- `QA Agent`: проверка выполнения критериев и качество тестового покрытия.
|
|
40
|
-
- `Reviewer/Judge Agent`: независимая приёмка по заранее согласованным правилам.
|
|
41
|
-
- `MR Review Agent`: обязательный pre-merge review для MR/PR (task linkage + PRD evidence + Git Flow target).
|
|
42
|
-
- `Publishing Agent`: готовит release notes, фиксирует вошедшие задачи и переводит их в `PUBLISH`.
|
|
43
|
-
- `Publishing Agent`: обновляет публичный `CHANGELOG.md`, готовит release notes, фиксирует вошедшие задачи и переводит их в `PUBLISH`.
|
|
44
|
-
- `Documentation Agent`: поддержка и синхронизация артефактов.
|
|
45
|
-
|
|
46
|
-
## 3.1) Маршрутизация статус-запросов
|
|
47
|
-
Если пользовательский запрос содержит intent `статус`, `что в процессе`, `процесс`, `где мы`, по умолчанию выбирается `Status Agent`.
|
|
48
|
-
|
|
49
|
-
Формат ответа `Status Agent` (обязательный):
|
|
50
|
-
1. Какие трекеры используются (locked provider + доступные providers).
|
|
51
|
-
2. Какой текущий спринт.
|
|
52
|
-
3. Какая задача сейчас в работе.
|
|
53
|
-
4. Текущий веточный контекст (branch, branch type, branch task ref, alignment с текущей задачей).
|
|
54
|
-
5. Что не закоммичено (modified/staged + untracked + ahead/behind).
|
|
55
|
-
6. Короткая сводка.
|
|
56
|
-
|
|
57
|
-
Приоритет источника данных:
|
|
58
|
-
- `github`: GitHub tracker — источник истины; локальные `tasks/*` только cache/legacy.
|
|
59
|
-
- `local`: локальные `tasks/*` — источник истины.
|
|
60
|
-
- `mcp/custom`: внешний трекер — источник истины; локальные `tasks/*` только cache.
|
|
61
|
-
|
|
62
|
-
## 4) Жёсткий Auto-Select и показ имени агента
|
|
63
|
-
Автовыбор агента обязателен перед каждой задачей и перед каждой командой (`CREATE_TASK`, `SET_STATUS`, `COMMIT_BY_NAME`, `ASSIGN_SPRINT`).
|
|
64
|
-
|
|
65
|
-
Обязательный префикс:
|
|
66
|
-
```text
|
|
67
|
-
[Agent Auto-Select]
|
|
68
|
-
Selected: <agent role>
|
|
69
|
-
Reason: <short reason>
|
|
70
|
-
|
|
71
|
-
[Task Agent]
|
|
72
|
-
Name: <agent role>
|
|
73
|
-
```
|
|
74
|
-
|
|
75
|
-
Правило исполнения:
|
|
76
|
-
- если префикс не выведен, задача/команда не выполняется;
|
|
77
|
-
- если пользователь явно указал роль, она используется, но блок `Task Agent` обязателен.
|
|
78
|
-
|
|
79
|
-
## 5) Единица работы: Verified Component
|
|
80
|
-
Каждый компонент обязан иметь:
|
|
81
|
-
- цель;
|
|
82
|
-
- входы/выходы;
|
|
83
|
-
- ограничения и инварианты;
|
|
84
|
-
- критерии приёмки;
|
|
85
|
-
- стратегию проверки;
|
|
86
|
-
- required evidence;
|
|
87
|
-
- владельца компонента;
|
|
88
|
-
- ссылку на PRD-этап.
|
|
89
|
-
|
|
90
|
-
## 6) Типы валидации
|
|
91
|
-
- `strict`: схемы, типы, правила, инварианты, policy, state transitions.
|
|
92
|
-
- `statistical`: benchmark/метрики/judge score/пороговые значения.
|
|
93
|
-
- `human`: review/approval в рискованных и неоднозначных точках.
|
|
94
|
-
|
|
95
|
-
## 7) AgentWorkContract
|
|
96
|
-
Перед передачей задачи Executor-агенту фиксируется контракт:
|
|
97
|
-
- scope;
|
|
98
|
-
- допустимая свобода решений;
|
|
99
|
-
- required outputs;
|
|
100
|
-
- required evidence;
|
|
101
|
-
- acceptance criteria;
|
|
102
|
-
- failure/escalation правила;
|
|
103
|
-
- трекерная привязка (`task_id`, `tracker_provider`, `sprint`).
|
|
104
|
-
|
|
105
|
-
Без контракта делегирование запрещено.
|
|
106
|
-
|
|
107
|
-
## 8) TrackerGateway
|
|
108
|
-
Трекер выделяется в отдельный адаптерный слой, независимый от ролей агентов.
|
|
109
|
-
|
|
110
|
-
`TrackerGateway` поддерживает провайдеры:
|
|
111
|
-
- `local`;
|
|
112
|
-
- `github`;
|
|
113
|
-
- `mcp` (alias `mpc`);
|
|
114
|
-
- `custom`.
|
|
115
|
-
|
|
116
|
-
Режим по умолчанию для командной работы: `github` (или другой внешний трекер). `local` используется как fallback.
|
|
117
|
-
|
|
118
|
-
## 9) Канонические команды
|
|
119
|
-
Все рабочие операции проходят через `Agile Manager Agent` + `TrackerGateway`.
|
|
120
|
-
Операционные шаблоны команд: [tracker-command-template.md](./tracker-command-template.md).
|
|
121
|
-
|
|
122
|
-
0. `VERIFY_GOVERNANCE_GATE`
|
|
123
|
-
1. `CREATE_TASK`
|
|
124
|
-
2. `PREPARE_TASK_BRANCH`
|
|
125
|
-
3. `SET_STATUS`
|
|
126
|
-
4. `RUN_REVIEW_GATE`
|
|
127
|
-
5. `COMMIT_BY_NAME`
|
|
128
|
-
6. `RUN_MR_REVIEW_GATE`
|
|
129
|
-
7. `ASSIGN_SPRINT`
|
|
130
|
-
8. `PREPARE_RELEASE_NOTE`
|
|
131
|
-
9. `MARK_TASKS_PUBLISH`
|
|
132
|
-
10. `STATUS_SNAPSHOT`
|
|
133
|
-
|
|
134
|
-
## 10) Коммиты и закрытие задач: только по подтверждению пользователя
|
|
135
|
-
Запрещено выполнять автоматически:
|
|
136
|
-
- `COMMIT_BY_NAME`;
|
|
137
|
-
- перевод задачи в `DONE`.
|
|
138
|
-
|
|
139
|
-
Обязательное правило:
|
|
140
|
-
- для режима `git_flow_lite` статусный цикл задачи фиксируется как `TODO -> IN_PROGRESS -> REVIEW -> READY -> DONE` (для релизных задач дополнительно `-> PUBLISH`);
|
|
141
|
-
- рабочие ветки: `feature/*`, `release/*`, `hotfix/*`; долгоживущие ветки: `develop`, `main`;
|
|
142
|
-
- интеграционные правила: `feature/* -> develop`, `release/* -> main` + back-merge в `develop`, `hotfix/* -> main` + back-merge в `develop`;
|
|
143
|
-
- `RUN_REVIEW_GATE` сначала формирует отчёт ревьювера и рекомендацию (`PASS_CANDIDATE`/`FAIL`);
|
|
144
|
-
- финальный `RUN_REVIEW_GATE: PASS_CONFIRMED` допускается только после явного подтверждения пользователя `Review Approved: yes`;
|
|
145
|
-
- `COMMIT_BY_NAME` выполняется только после `RUN_REVIEW_GATE: PASS_CONFIRMED` и отдельного явного подтверждения пользователя в текущем диалоге;
|
|
146
|
-
- merge в целевую ветку выполняется только после `RUN_MR_REVIEW_GATE: PASS_CONFIRMED` и явного подтверждения пользователя `MR Review Approved: yes`;
|
|
147
|
-
- `SET_STATUS -> DONE` выполняется только после явного подтверждения пользователя в текущем диалоге;
|
|
148
|
-
- без подтверждения пользователя максимум допустимого статуса: `REVIEW`.
|
|
149
|
-
- `SET_STATUS -> READY` разрешён только после `RUN_REVIEW_GATE: PASS_CONFIRMED`.
|
|
150
|
-
- для задач реализации по умолчанию используется отдельная ветка `feature/*`; прямой рабочий поток на `develop`/`main` не допускается.
|
|
151
|
-
- сообщение коммита обязано содержать ссылку на задачу (`#issue-number`).
|
|
152
|
-
- `READY` означает: коммит сделан и отправлен (`push`) в `feature/*`, `release/*` или `hotfix/*` с открытым PR по правилам ветвления.
|
|
153
|
-
- `DONE` означает: изменения интегрированы в `main`; для `release/*` и `hotfix/*` подтверждён back-merge в `develop`.
|
|
154
|
-
- `PUBLISH` означает: релиз опубликован и доступен в последней версии пакета.
|
|
155
|
-
|
|
156
|
-
## 10.1) Правило для больших фич (GitHub tracker)
|
|
157
|
-
Если задача классифицирована как большая фича, система обязана предложить:
|
|
158
|
-
- создать `feature issue` (`type:feature`);
|
|
159
|
-
- создать `epic issue` (`type:epic`);
|
|
160
|
-
- выделить отдельную ветку разработки;
|
|
161
|
-
- связать feature с epic в GitHub issue (ссылка в body/comment/task list).
|
|
162
|
-
|
|
163
|
-
Для текущего этапа (только GitHub tracker) epic реализуется как обычный issue с label `type:epic`.
|
|
164
|
-
|
|
165
|
-
## 10.2) Обязательная маршрутизация ветки для Agile Manager Agent
|
|
166
|
-
Перед началом реализации агент обязан:
|
|
167
|
-
1. Проверить веточный контекст через `meta:status`.
|
|
168
|
-
2. Запустить branch-routing preflight через `meta:task-start -- --task <#issue> --slug <slug> --kind atomic|feature|release|hotfix`.
|
|
169
|
-
3. В названии рабочей ветки использовать GitHub issue ref в формате `issue-<number>` (например, `feature/issue-21-canonical-github-issue-id`).
|
|
170
|
-
4. Если задача относится к текущей feature-ветке (атомарная подзадача), продолжить в этой ветке только после подтверждения пользователя.
|
|
171
|
-
5. Если задача не относится к текущей ветке, проверить незакоммиченные изменения и непушенные коммиты.
|
|
172
|
-
6. Согласовать с пользователем способ обработки (`commit/stash/discard/push`).
|
|
173
|
-
7. Переключиться на базовую ветку (`develop` или `main`) и обновить её.
|
|
174
|
-
8. Создать новую рабочую ветку по Git Flow Lite.
|
|
175
|
-
9. Перед переключением проверить консистентность `agents.md` между текущей и базовой веткой; при отличиях показать явное предупреждение и запросить подтверждение пользователя.
|
|
176
|
-
|
|
177
|
-
Без этого preflight выполнение реализации запрещено.
|
|
178
|
-
|
|
179
|
-
## 11) Жёсткие критерии приёмки (все обязательны)
|
|
180
|
-
Задача принимается только если одновременно выполнены все условия:
|
|
181
|
-
1. Заполнены все PRD-блоки этапа: `Описание`, `Проверяемость`, `Что сделано`.
|
|
182
|
-
2. Выполнен обязательный префикс `Agent Auto-Select` + `Task Agent`.
|
|
183
|
-
3. Пройдены все обязательные `strict` проверки.
|
|
184
|
-
4. `statistical` метрики не ниже зафиксированных порогов.
|
|
185
|
-
5. Пройдены обязательные `human` approvals.
|
|
186
|
-
6. Собран полный evidence-пакет (артефакты, логи, ссылки на проверки).
|
|
187
|
-
7. Синхронизированы `task/status/sprint` в трекере.
|
|
188
|
-
8. Если был коммит, есть явное подтверждение пользователя на коммит.
|
|
189
|
-
9. Если задача закрыта в `DONE`, есть явное подтверждение пользователя на закрытие.
|
|
190
|
-
10. Перед каждой командой пройден `VERIFY_GOVERNANCE_GATE` от `Governance Watchdog Agent`.
|
|
191
|
-
11. Перед коммитом пройден `RUN_REVIEW_GATE` от `Reviewer/Judge Agent`.
|
|
192
|
-
12. Есть явное подтверждение пользователя на прохождение review (`Review Approved: yes`).
|
|
193
|
-
13. Перед merge пройден `RUN_MR_REVIEW_GATE` от `MR Review Agent`.
|
|
194
|
-
14. Есть явное подтверждение пользователя на MR review (`MR Review Approved: yes`).
|
|
195
|
-
15. До review gate задача переведена в статус `REVIEW`.
|
|
196
|
-
16. Статус `READY` выставлен только после `RUN_REVIEW_GATE: PASS_CONFIRMED`.
|
|
197
|
-
17. Для статуса `READY` подтверждены `commit + push` в `feature/*|release/*|hotfix/*` и открытый PR в целевую ветку (`develop` или `main`).
|
|
198
|
-
18. Для merge подтверждён `RUN_MR_REVIEW_GATE: PASS_CONFIRMED`.
|
|
199
|
-
19. Для статуса `DONE` подтверждена интеграция в `main`; для `release/*` и `hotfix/*` подтверждён back-merge в `develop`.
|
|
200
|
-
20. Для статуса `PUBLISH` подтверждена публикация в последней версии.
|
|
201
|
-
21. Для релиза обновлён публичный `CHANGELOG.md`.
|
|
202
|
-
22. Коммит содержит ссылку на issue (`#issue`).
|
|
203
|
-
23. Для branch routing собран e2e evidence по двум сценариям: `same feature` и `different feature`.
|
|
204
|
-
24. Перед `--apply` подтверждена консистентность контекста `agents.md` (или явно подтверждён осознанный switch при diff).
|
|
205
|
-
|
|
206
|
-
Если хотя бы один критерий не выполнен, задача не принимается.
|
|
207
|
-
|
|
208
|
-
## 12) Verification-first gate
|
|
209
|
-
Реализация не начинается, пока не определены:
|
|
210
|
-
- acceptance criteria;
|
|
211
|
-
- метрики и пороги;
|
|
212
|
-
- инварианты и ограничения;
|
|
213
|
-
- процедуры проверки;
|
|
214
|
-
- зоны неопределённости и правила эскалации;
|
|
215
|
-
- способ фиксации в трекере.
|
|
216
|
-
|
|
217
|
-
## 13) Реакция на провал проверки
|
|
218
|
-
Допустимые сценарии:
|
|
219
|
-
- `retry` с корректировками;
|
|
220
|
-
- пересмотр архитектуры;
|
|
221
|
-
- уточнение критериев;
|
|
222
|
-
- эскалация пользователю/founder;
|
|
223
|
-
- возврат статуса задачи в `IN_PROGRESS` или `BLOCKED`.
|
|
224
|
-
|
|
225
|
-
## 14) Главный инвариант
|
|
226
|
-
Нельзя делегировать работу и нельзя закрывать задачу без формализованных критериев приёмки, PRD-блока `Проверяемость` и требуемых доказательств в трекере.
|
|
@@ -1,439 +0,0 @@
|
|
|
1
|
-
# Tracker Command Template
|
|
2
|
-
|
|
3
|
-
## 0) Обязательный префикс перед каждой задачей
|
|
4
|
-
Перед любой командой сначала выводится:
|
|
5
|
-
|
|
6
|
-
```text
|
|
7
|
-
[Agent Auto-Select]
|
|
8
|
-
Selected: <agent role>
|
|
9
|
-
Reason: <short reason>
|
|
10
|
-
|
|
11
|
-
[Task Agent]
|
|
12
|
-
Name: <agent role>
|
|
13
|
-
```
|
|
14
|
-
|
|
15
|
-
Без этого префикса выполнение команды запрещено.
|
|
16
|
-
|
|
17
|
-
## 0.1) Обязательный governance gate
|
|
18
|
-
Перед любой командой сначала выполняется проверка:
|
|
19
|
-
|
|
20
|
-
```text
|
|
21
|
-
[Agent Auto-Select]
|
|
22
|
-
Selected: Governance Watchdog Agent
|
|
23
|
-
Reason: Обязательная проверка соблюдения PRD и критериев приёмки перед операцией.
|
|
24
|
-
|
|
25
|
-
[Task Agent]
|
|
26
|
-
Name: Governance Watchdog Agent
|
|
27
|
-
|
|
28
|
-
Governance Watchdog Agent: verify governance gate,
|
|
29
|
-
task <#issue>,
|
|
30
|
-
required checks "prd_sections_complete, acceptance_defined, user_confirmation_policy_respected",
|
|
31
|
-
result PASS
|
|
32
|
-
```
|
|
33
|
-
|
|
34
|
-
Если `result != PASS`, команда не выполняется.
|
|
35
|
-
|
|
36
|
-
## 0.2) Зафиксированный tracker provider проекта
|
|
37
|
-
- Текущий provider: `github`.
|
|
38
|
-
- Source of truth:
|
|
39
|
-
- `.meta-agents/config/project-context.yaml -> project_context.tracker_provider.selected`
|
|
40
|
-
- `.meta-agents/config/trackers.yaml -> tracker_gateway.default`
|
|
41
|
-
- Если пользователь явно не запросил смену provider и конфиг не обновлён, команды выполняются только через `github`.
|
|
42
|
-
- CLI enforcement: `npm run meta:ops -- --command <COMMAND> [--tracker ...]` блокирует выполнение при mismatch provider.
|
|
43
|
-
|
|
44
|
-
## 1) Ключевое правило подтверждения пользователя
|
|
45
|
-
Только по явному подтверждению пользователя в текущем диалоге разрешены:
|
|
46
|
-
- `COMMIT_BY_NAME`;
|
|
47
|
-
- merge после `RUN_MR_REVIEW_GATE`;
|
|
48
|
-
- перевод задачи в `DONE`.
|
|
49
|
-
|
|
50
|
-
Без подтверждения пользователя можно переводить задачу максимум в `REVIEW`.
|
|
51
|
-
`SET_STATUS -> READY` разрешён только после `RUN_REVIEW_GATE: PASS_CONFIRMED`.
|
|
52
|
-
|
|
53
|
-
Дополнительно для коммита:
|
|
54
|
-
- для `git_flow_lite` используется цикл `TODO -> IN_PROGRESS -> REVIEW -> READY -> DONE` (для релизных задач дополнительно `-> PUBLISH`);
|
|
55
|
-
- рабочие ветки: `feature/*`, `release/*`, `hotfix/*`; долгоживущие ветки: `develop`, `main`;
|
|
56
|
-
- правила merge: `feature/* -> develop`, `release/* -> main` + back-merge в `develop`, `hotfix/* -> main` + back-merge в `develop`;
|
|
57
|
-
- `RUN_REVIEW_GATE` работает в два этапа:
|
|
58
|
-
- сначала отчёт и рекомендация (`PASS_CANDIDATE`/`FAIL`);
|
|
59
|
-
- после явного подтверждения пользователя (`Review Approved: yes`) — финальный `PASS_CONFIRMED`;
|
|
60
|
-
- `RUN_MR_REVIEW_GATE` работает в два этапа:
|
|
61
|
-
- сначала сводный MR-отчёт и рекомендация (`PASS_CANDIDATE`/`FAIL`);
|
|
62
|
-
- после явного подтверждения пользователя (`MR Review Approved: yes`) — финальный `PASS_CONFIRMED`;
|
|
63
|
-
- `COMMIT_BY_NAME` разрешён только после `RUN_REVIEW_GATE: PASS_CONFIRMED`;
|
|
64
|
-
- merge разрешён только после `RUN_MR_REVIEW_GATE: PASS_CONFIRMED`;
|
|
65
|
-
- для задач реализации по умолчанию используется отдельная ветка `feature/*`; прямой поток на `develop`/`main` запрещён;
|
|
66
|
-
- перед началом реализации обязателен `PREPARE_TASK_BRANCH` (веточный preflight и user dialogue);
|
|
67
|
-
- branch naming policy: использовать только GitHub issue ref в формате `issue-<number>`;
|
|
68
|
-
- если задача атомарная и относится к текущей feature-ветке, допускается выполнение в текущей ветке после явного подтверждения пользователя;
|
|
69
|
-
- если задача не относится к текущей ветке, требуется: проверить dirty/ahead, согласовать действие с пользователем, перейти на `develop` (или `main` для hotfix), обновить и создать новую ветку;
|
|
70
|
-
- перед `--apply` обязателен контекстный check: сравнить `agents.md` текущей и базовой ветки, при diff запросить явное подтверждение пользователя;
|
|
71
|
-
- сообщение коммита обязательно содержит `#issue-number`.
|
|
72
|
-
|
|
73
|
-
Для GitHub трекера статус issue задаётся label-ом (одновременно только один статус из набора):
|
|
74
|
-
- `TODO`
|
|
75
|
-
- `IN_PROGRESS`
|
|
76
|
-
- `REVIEW`
|
|
77
|
-
- `READY`
|
|
78
|
-
- `BLOCKED`
|
|
79
|
-
- `DONE`
|
|
80
|
-
- `PUBLISH`
|
|
81
|
-
|
|
82
|
-
Семантика статусов:
|
|
83
|
-
- `READY`: коммит сделан и отправлен (`push`) в `feature/*|release/*|hotfix/*`; открыт PR в `develop` или `main` согласно правилам ветвления.
|
|
84
|
-
- `DONE`: изменения интегрированы в `main`; для `release/*` и `hotfix/*` подтверждён back-merge в `develop`.
|
|
85
|
-
- `PUBLISH`: релиз опубликован и доступен в последней версии пакета.
|
|
86
|
-
|
|
87
|
-
Правило больших фич (GitHub tracker):
|
|
88
|
-
- если фича крупная, агент обязан предложить `feature issue` + `epic issue` и отдельную ветку;
|
|
89
|
-
- epic в GitHub оформляется как issue с label `type:epic`;
|
|
90
|
-
- feature оформляется как issue с label `type:feature` и ссылкой на epic.
|
|
91
|
-
|
|
92
|
-
## 2) Канонические команды (через Agile Manager Agent / Reviewer/Judge Agent / MR Review Agent / Publishing Agent / Status Agent)
|
|
93
|
-
### VERIFY_GOVERNANCE_GATE
|
|
94
|
-
```text
|
|
95
|
-
[Agent Auto-Select]
|
|
96
|
-
Selected: Governance Watchdog Agent
|
|
97
|
-
Reason: Нужна обязательная preflight-проверка процесса.
|
|
98
|
-
|
|
99
|
-
[Task Agent]
|
|
100
|
-
Name: Governance Watchdog Agent
|
|
101
|
-
|
|
102
|
-
Governance Watchdog Agent: verify governance gate,
|
|
103
|
-
task #12,
|
|
104
|
-
checklist "PRD(Описание+Проверяемость), hard criteria, user confirmation policy",
|
|
105
|
-
result PASS
|
|
106
|
-
```
|
|
107
|
-
|
|
108
|
-
### RUN_REVIEW_GATE (обязателен перед коммитом)
|
|
109
|
-
```text
|
|
110
|
-
[Agent Auto-Select]
|
|
111
|
-
Selected: Reviewer/Judge Agent
|
|
112
|
-
Reason: Нужен обязательный pre-commit review.
|
|
113
|
-
|
|
114
|
-
[Task Agent]
|
|
115
|
-
Name: Reviewer/Judge Agent
|
|
116
|
-
|
|
117
|
-
Reviewer/Judge Agent: run review gate,
|
|
118
|
-
task #12,
|
|
119
|
-
checklist "what_done_summary, critical_findings, potential_risks, issue_link_presence",
|
|
120
|
-
result PASS_CANDIDATE,
|
|
121
|
-
report "posted to issue #12"
|
|
122
|
-
```
|
|
123
|
-
|
|
124
|
-
```text
|
|
125
|
-
[User Confirmation]
|
|
126
|
-
Review Approved: yes
|
|
127
|
-
|
|
128
|
-
[Agent Auto-Select]
|
|
129
|
-
Selected: Reviewer/Judge Agent
|
|
130
|
-
Reason: Подтверждение review пользователем получено, фиксируем финальный результат.
|
|
131
|
-
|
|
132
|
-
[Task Agent]
|
|
133
|
-
Name: Reviewer/Judge Agent
|
|
134
|
-
|
|
135
|
-
Reviewer/Judge Agent: run review gate,
|
|
136
|
-
task #12,
|
|
137
|
-
approve yes,
|
|
138
|
-
result PASS_CONFIRMED
|
|
139
|
-
```
|
|
140
|
-
|
|
141
|
-
### CREATE_TASK
|
|
142
|
-
```text
|
|
143
|
-
[Agent Auto-Select]
|
|
144
|
-
Selected: Agile Manager Agent
|
|
145
|
-
Reason: Нужна операция создания задачи в трекере.
|
|
146
|
-
|
|
147
|
-
[Task Agent]
|
|
148
|
-
Name: Agile Manager Agent
|
|
149
|
-
|
|
150
|
-
Agile Manager Agent: create task,
|
|
151
|
-
tracker github,
|
|
152
|
-
repo your-org/your-repo,
|
|
153
|
-
short name "API редирект офферов",
|
|
154
|
-
owner "Engineering Agent",
|
|
155
|
-
description "Добавить API редиректа на офферы",
|
|
156
|
-
verifiability "strict: schema+contracts; statistical: p95 latency < 200ms",
|
|
157
|
-
sprint "SPRINT-3"
|
|
158
|
-
```
|
|
159
|
-
|
|
160
|
-
### SET_STATUS
|
|
161
|
-
```text
|
|
162
|
-
[Agent Auto-Select]
|
|
163
|
-
Selected: Agile Manager Agent
|
|
164
|
-
Reason: Нужна операция смены статуса задачи.
|
|
165
|
-
|
|
166
|
-
[Task Agent]
|
|
167
|
-
Name: Agile Manager Agent
|
|
168
|
-
|
|
169
|
-
Agile Manager Agent: set status,
|
|
170
|
-
tracker github,
|
|
171
|
-
task #12,
|
|
172
|
-
status IN_PROGRESS,
|
|
173
|
-
reason "начата реализация"
|
|
174
|
-
```
|
|
175
|
-
|
|
176
|
-
### PREPARE_TASK_BRANCH (обязателен перед реализацией)
|
|
177
|
-
```text
|
|
178
|
-
[Agent Auto-Select]
|
|
179
|
-
Selected: Agile Manager Agent
|
|
180
|
-
Reason: Нужно проверить соответствие задачи текущей ветке и выбрать корректный Git Flow маршрут.
|
|
181
|
-
|
|
182
|
-
[Task Agent]
|
|
183
|
-
Name: Agile Manager Agent
|
|
184
|
-
|
|
185
|
-
Agile Manager Agent: prepare task branch,
|
|
186
|
-
tracker github,
|
|
187
|
-
task "#12",
|
|
188
|
-
task kind "atomic",
|
|
189
|
-
command "npm run meta:task-start -- --task #12 --slug api-redirect",
|
|
190
|
-
user dialogue "confirm branch context + dirty/ahead handling + agents.md context warning + switch decision"
|
|
191
|
-
```
|
|
192
|
-
|
|
193
|
-
### SET_STATUS -> REVIEW (обязателен перед review gate)
|
|
194
|
-
```text
|
|
195
|
-
[Agent Auto-Select]
|
|
196
|
-
Selected: Agile Manager Agent
|
|
197
|
-
Reason: Реализация завершена, задача передаётся в review.
|
|
198
|
-
|
|
199
|
-
[Task Agent]
|
|
200
|
-
Name: Agile Manager Agent
|
|
201
|
-
|
|
202
|
-
Agile Manager Agent: set status,
|
|
203
|
-
tracker github,
|
|
204
|
-
task #12,
|
|
205
|
-
status REVIEW,
|
|
206
|
-
reason "готово к review gate"
|
|
207
|
-
```
|
|
208
|
-
|
|
209
|
-
### CREATE_EPIC (для большой фичи)
|
|
210
|
-
```text
|
|
211
|
-
[Agent Auto-Select]
|
|
212
|
-
Selected: Agile Manager Agent
|
|
213
|
-
Reason: Большая фича требует эпик в GitHub-трекере.
|
|
214
|
-
|
|
215
|
-
[Task Agent]
|
|
216
|
-
Name: Agile Manager Agent
|
|
217
|
-
|
|
218
|
-
Agile Manager Agent: create task,
|
|
219
|
-
tracker github,
|
|
220
|
-
type epic,
|
|
221
|
-
labels "type:epic,tracker:github,sprint:SPRINT-3",
|
|
222
|
-
short name "EPIC: новый подбор офферов",
|
|
223
|
-
description "Родительская задача для крупной фичи"
|
|
224
|
-
```
|
|
225
|
-
|
|
226
|
-
### CREATE_FEATURE_AND_LINK_TO_EPIC
|
|
227
|
-
```text
|
|
228
|
-
[Agent Auto-Select]
|
|
229
|
-
Selected: Agile Manager Agent
|
|
230
|
-
Reason: Нужна отдельная feature-задача, связанная с epic.
|
|
231
|
-
|
|
232
|
-
[Task Agent]
|
|
233
|
-
Name: Agile Manager Agent
|
|
234
|
-
|
|
235
|
-
Agile Manager Agent: create task,
|
|
236
|
-
tracker github,
|
|
237
|
-
type feature,
|
|
238
|
-
labels "type:feature,tracker:github,sprint:SPRINT-3",
|
|
239
|
-
short name "FEATURE: scoring pipeline v2",
|
|
240
|
-
description "Дочерняя feature в рамках epic #42",
|
|
241
|
-
link to epic "#42"
|
|
242
|
-
```
|
|
243
|
-
|
|
244
|
-
### COMMIT_BY_NAME (только после подтверждения пользователя)
|
|
245
|
-
```text
|
|
246
|
-
[Agent Auto-Select]
|
|
247
|
-
Selected: Agile Manager Agent
|
|
248
|
-
Reason: Нужна операция фиксации результата по задаче.
|
|
249
|
-
|
|
250
|
-
[Task Agent]
|
|
251
|
-
Name: Agile Manager Agent
|
|
252
|
-
|
|
253
|
-
[User Confirmation]
|
|
254
|
-
Commit Approved: yes
|
|
255
|
-
|
|
256
|
-
Agile Manager Agent: commit by name,
|
|
257
|
-
tracker github,
|
|
258
|
-
task "API редирект офферов",
|
|
259
|
-
issue 12,
|
|
260
|
-
commit message "#12 | API редирект офферов",
|
|
261
|
-
push yes,
|
|
262
|
-
branch "feature/issue-12-api-redirect",
|
|
263
|
-
open mr "optional",
|
|
264
|
-
target status READY,
|
|
265
|
-
what done "добавлен endpoint, тесты, обработка ошибок"
|
|
266
|
-
```
|
|
267
|
-
|
|
268
|
-
### RUN_MR_REVIEW_GATE (обязателен перед merge)
|
|
269
|
-
```text
|
|
270
|
-
[Agent Auto-Select]
|
|
271
|
-
Selected: MR Review Agent
|
|
272
|
-
Reason: Нужен обязательный pre-merge review по MR/PR с проверкой task linkage и PRD evidence.
|
|
273
|
-
|
|
274
|
-
[Task Agent]
|
|
275
|
-
Name: MR Review Agent
|
|
276
|
-
|
|
277
|
-
MR Review Agent: run MR review gate,
|
|
278
|
-
task #12,
|
|
279
|
-
pr 34,
|
|
280
|
-
checklist "mr_context, task_linkage, prd_evidence, critical_findings, potential_risks",
|
|
281
|
-
result PASS_CANDIDATE
|
|
282
|
-
```
|
|
283
|
-
|
|
284
|
-
```text
|
|
285
|
-
[User Confirmation]
|
|
286
|
-
MR Review Approved: yes
|
|
287
|
-
|
|
288
|
-
[Agent Auto-Select]
|
|
289
|
-
Selected: MR Review Agent
|
|
290
|
-
Reason: Подтверждение MR review пользователем получено, фиксируем финальный результат.
|
|
291
|
-
|
|
292
|
-
[Task Agent]
|
|
293
|
-
Name: MR Review Agent
|
|
294
|
-
|
|
295
|
-
MR Review Agent: run MR review gate,
|
|
296
|
-
task #12,
|
|
297
|
-
pr 34,
|
|
298
|
-
approve yes,
|
|
299
|
-
result PASS_CONFIRMED
|
|
300
|
-
```
|
|
301
|
-
|
|
302
|
-
### SET_STATUS -> PUBLISH (после фактической публикации)
|
|
303
|
-
```text
|
|
304
|
-
[Agent Auto-Select]
|
|
305
|
-
Selected: Agile Manager Agent
|
|
306
|
-
Reason: Публикация релиза завершена, фиксируем статус поставки.
|
|
307
|
-
|
|
308
|
-
[Task Agent]
|
|
309
|
-
Name: Agile Manager Agent
|
|
310
|
-
|
|
311
|
-
Agile Manager Agent: set status,
|
|
312
|
-
tracker github,
|
|
313
|
-
task #12,
|
|
314
|
-
status PUBLISH,
|
|
315
|
-
reason "релиз опубликован в latest"
|
|
316
|
-
```
|
|
317
|
-
|
|
318
|
-
### SET_STATUS -> DONE (только после подтверждения пользователя)
|
|
319
|
-
```text
|
|
320
|
-
[Agent Auto-Select]
|
|
321
|
-
Selected: Agile Manager Agent
|
|
322
|
-
Reason: Нужна операция закрытия задачи.
|
|
323
|
-
|
|
324
|
-
[Task Agent]
|
|
325
|
-
Name: Agile Manager Agent
|
|
326
|
-
|
|
327
|
-
[User Confirmation]
|
|
328
|
-
Close Task Approved: yes
|
|
329
|
-
|
|
330
|
-
Agile Manager Agent: set status,
|
|
331
|
-
tracker github,
|
|
332
|
-
task #12,
|
|
333
|
-
status DONE,
|
|
334
|
-
reason "пользователь подтвердил закрытие"
|
|
335
|
-
```
|
|
336
|
-
|
|
337
|
-
### ASSIGN_SPRINT
|
|
338
|
-
```text
|
|
339
|
-
[Agent Auto-Select]
|
|
340
|
-
Selected: Agile Manager Agent
|
|
341
|
-
Reason: Нужна операция назначения задачи в спринт.
|
|
342
|
-
|
|
343
|
-
[Task Agent]
|
|
344
|
-
Name: Agile Manager Agent
|
|
345
|
-
|
|
346
|
-
Agile Manager Agent: assign sprint,
|
|
347
|
-
tracker github,
|
|
348
|
-
task #12,
|
|
349
|
-
sprint SPRINT-3
|
|
350
|
-
```
|
|
351
|
-
|
|
352
|
-
### STATUS_SNAPSHOT
|
|
353
|
-
```text
|
|
354
|
-
[Agent Auto-Select]
|
|
355
|
-
Selected: Status Agent
|
|
356
|
-
Reason: Пользователь запросил текущий статус проекта/процесса.
|
|
357
|
-
|
|
358
|
-
[Task Agent]
|
|
359
|
-
Name: Status Agent
|
|
360
|
-
|
|
361
|
-
Status Agent: status snapshot,
|
|
362
|
-
tracker github,
|
|
363
|
-
source policy "github/mcp/custom -> external tracker first, local -> tasks first",
|
|
364
|
-
include "trackers_used,current_sprint,current_task,current_branch_context,git_uncommitted,summary",
|
|
365
|
-
command "npm run meta:status"
|
|
366
|
-
```
|
|
367
|
-
|
|
368
|
-
### PREPARE_RELEASE_NOTE
|
|
369
|
-
```text
|
|
370
|
-
[Agent Auto-Select]
|
|
371
|
-
Selected: Publishing Agent
|
|
372
|
-
Reason: Нужно зафиксировать состав релиза и задачи, вошедшие в поставку.
|
|
373
|
-
|
|
374
|
-
[Task Agent]
|
|
375
|
-
Name: Publishing Agent
|
|
376
|
-
|
|
377
|
-
Publishing Agent: prepare release note,
|
|
378
|
-
tracker github,
|
|
379
|
-
version v0.1.2,
|
|
380
|
-
included tasks "#2,#3,#4,#5,#6,#7,#8",
|
|
381
|
-
changelog "CHANGELOG.md updated for v0.1.2",
|
|
382
|
-
output "docs/internal/release-notes/v0.1.2.md"
|
|
383
|
-
```
|
|
384
|
-
|
|
385
|
-
### MARK_TASKS_PUBLISH
|
|
386
|
-
```text
|
|
387
|
-
[Agent Auto-Select]
|
|
388
|
-
Selected: Publishing Agent
|
|
389
|
-
Reason: После релиза нужно перевести вошедшие задачи в статус PUBLISH.
|
|
390
|
-
|
|
391
|
-
[Task Agent]
|
|
392
|
-
Name: Publishing Agent
|
|
393
|
-
|
|
394
|
-
Publishing Agent: mark tasks publish,
|
|
395
|
-
tracker github,
|
|
396
|
-
tasks "#2,#3,#4,#5,#6,#7,#8",
|
|
397
|
-
status PUBLISH,
|
|
398
|
-
reason "вошло в релиз v0.1.2"
|
|
399
|
-
```
|
|
400
|
-
|
|
401
|
-
## 3) PRD-блок для каждого шага (обязателен)
|
|
402
|
-
```markdown
|
|
403
|
-
## PRD Step: <stage-name>
|
|
404
|
-
|
|
405
|
-
### Описание
|
|
406
|
-
- Что и зачем делаем на этом шаге.
|
|
407
|
-
|
|
408
|
-
### Проверяемость
|
|
409
|
-
- strict:
|
|
410
|
-
- statistical:
|
|
411
|
-
- human:
|
|
412
|
-
- evidence:
|
|
413
|
-
|
|
414
|
-
### Что сделано
|
|
415
|
-
- [ ] Не начато
|
|
416
|
-
- Ссылки на артефакты:
|
|
417
|
-
- Ссылки на проверки:
|
|
418
|
-
```
|
|
419
|
-
|
|
420
|
-
## 4) Минимальный операционный цикл
|
|
421
|
-
1. `VERIFY_GOVERNANCE_GATE`.
|
|
422
|
-
2. `CREATE_TASK`.
|
|
423
|
-
3. `PREPARE_TASK_BRANCH`.
|
|
424
|
-
4. `SET_STATUS -> IN_PROGRESS`.
|
|
425
|
-
5. Реализация + evidence.
|
|
426
|
-
6. `SET_STATUS -> REVIEW`.
|
|
427
|
-
7. `RUN_REVIEW_GATE` (получить report + `PASS_CANDIDATE`/`FAIL`).
|
|
428
|
-
8. Пользователь подтверждает review (`Review Approved: yes`).
|
|
429
|
-
9. `RUN_REVIEW_GATE` -> `PASS_CONFIRMED`.
|
|
430
|
-
10. `COMMIT_BY_NAME` только после review PASS_CONFIRMED и отдельного подтверждения пользователя на коммит.
|
|
431
|
-
11. Push + open PR в целевую ветку по Git Flow Lite.
|
|
432
|
-
12. `RUN_MR_REVIEW_GATE` (получить report + `PASS_CANDIDATE`/`FAIL`).
|
|
433
|
-
13. Пользователь подтверждает MR review (`MR Review Approved: yes`).
|
|
434
|
-
14. `RUN_MR_REVIEW_GATE` -> `PASS_CONFIRMED`.
|
|
435
|
-
15. Merge PR по Git Flow Lite.
|
|
436
|
-
16. `SET_STATUS -> READY`.
|
|
437
|
-
17. `SET_STATUS -> DONE` только после подтверждения пользователя.
|
|
438
|
-
18. `PREPARE_RELEASE_NOTE` (какие задачи вошли в релиз).
|
|
439
|
-
19. Для релизных задач после публикации: `MARK_TASKS_PUBLISH` (`SET_STATUS -> PUBLISH` для всех вошедших задач).
|