@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 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/*`, аккуратно merge-ит `meta:*` scripts в `package.json` и добавляет ссылочный блок в `agents.md` вместо полной перезаписи.
35
- - `--force` нужен только если надо перезаписать уже существующие `.meta-agents/config/*` и мигрировать legacy `meta:*` scripts.
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
- `agents.md` в проекте не перезаписывается целиком: `init` добавляет/обновляет в нём только ссылочный блок на правила из npm-пакета.
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. Каждый коммит связан с issue (`#issue` в commit message).
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.7",
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("agents.md: created with npm links to template rules");
284
- } else if (result.agents.updated) {
285
- console.log("agents.md: appended/updated npm links block");
286
- } else {
287
- console.log("agents.md: npm links block already up to date");
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
- async function upsertAgentsLinks(targetDir, packageName) {
234
- const agentsPath = path.join(targetDir, "agents.md");
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 = ["# agents.md", "", block].join("\n");
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 = await walkFiles(sourceConfigRoot);
309
+ const sourceFiles = ROOT_CONFIG_FILES.map((file) => path.join(sourceConfigRoot, file));
272
310
 
273
311
  const updated = [];
274
312
  const skipped = [];
@@ -1,4 +1,6 @@
1
1
  project_context:
2
+ project:
3
+ name: "__PROJECT_NAME__"
2
4
  tracker_provider:
3
5
  selected: "__DEFAULT_TRACKER__"
4
6
  locked: true
@@ -208,7 +208,7 @@ system:
208
208
  commit_linkage:
209
209
  required: true
210
210
  accepted_patterns:
211
- - "#issue"
211
+ - "#<issue-number> <summary>"
212
212
  publish_flow:
213
213
  changelog_required: true
214
214
  release_note_required: true
@@ -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 = readFileAtRef("HEAD", "agents.md");
284
- const baseAgents = readFileAtRef(baseBranch, "agents.md");
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: 'agents.md' in current branch is not equal to '${baseBranch}:agents.md'. Confirm switch before apply.`,
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 hasIssueNumber = /#\d+\b/.test(message);
11
- return hasIssueNumber;
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("Commit link FAIL: message must contain #issue.");
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
  }
@@ -3,11 +3,10 @@
3
3
  Проект инициализирован шаблоном `meta-agents-template`.
4
4
 
5
5
  ## Что уже подключено
6
- - `agents.md`: роли, правила и жёсткие критерии приёмки;
7
- - `tracker-command-template.md`: команды управления задачами и спринтами;
8
- - `.meta-agents/`: конфигурация системы и шаблоны PRD/verification;
9
- - `.github/workflows/gitflow-lite-verify.yml`: branch-aware CI-проверки для Git Flow Lite;
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
 
@@ -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
- - сообщение коммита обязано содержать ссылку на задачу (`#issue-number`).
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. Коммит содержит ссылку на issue (`#issue`).
202
+ 22. Коммит следует формату `#issue-number <summary>` (issue ref в начале сообщения).
203
203
  23. Для branch routing собран e2e evidence по двум сценариям: `same feature` и `different feature`.
204
- 24. Перед `--apply` подтверждена консистентность контекста `agents.md` (или явно подтверждён осознанный switch при diff).
204
+ 24. Перед `--apply` подтверждена консистентность контекста `AGENTS.md` (fallback: `agents.md`) или явно подтверждён осознанный switch при diff.
205
205
 
206
206
  Если хотя бы один критерий не выполнен, задача не принимается.
207
207
 
@@ -3,15 +3,15 @@
3
3
  "version": "0.1.0",
4
4
  "private": true,
5
5
  "scripts": {
6
- "meta:status": "node .meta-agents/scripts/sync-status.mjs",
7
- "meta:branch": "node .meta-agents/scripts/verify-branch-strategy.mjs",
8
- "meta:task-start": "node .meta-agents/scripts/task-branch-router.mjs",
9
- "meta:verify": "node .meta-agents/scripts/verify-governance.mjs",
10
- "meta:review": "node .meta-agents/scripts/run-review-gate.mjs",
11
- "meta:review-approve": "node .meta-agents/scripts/run-review-gate.mjs --approve yes",
12
- "meta:mr-review": "node .meta-agents/scripts/run-mr-review-gate.mjs",
13
- "meta:mr-review-approve": "node .meta-agents/scripts/run-mr-review-gate.mjs --approve yes",
14
- "meta:verify-link": "node .meta-agents/scripts/verify-commit-link.mjs",
15
- "meta:ops": "node .meta-agents/scripts/tracker-gateway.mjs"
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
- - сообщение коммита обязательно содержит `#issue-number`.
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 + agents.md context warning + switch decision"
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 | API редирект офферов",
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` для всех вошедших задач).