@k0t0vich/meta-agents-template 0.1.4 → 0.1.6

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,20 @@
2
2
 
3
3
  All notable changes to this package are documented in this file.
4
4
 
5
+ ## 0.1.6 - 2026-03-20
6
+
7
+ ### Changed
8
+ - Switched governance/process docs to a single canonical task reference: GitHub `#issue`.
9
+ - Removed mixed prefixed task-id examples (`GOV-*`, `REL-*`, `DOC-*`, `DEV-*`) from workflow commands and policy text.
10
+ - Synchronized current project and template agent artifacts for canonical `#issue` usage (`agents.md`, `tracker-command-template.md`, prompts, branch-router warning, commit-link validation, release docs examples).
11
+
12
+ ## 0.1.5 - 2026-03-20
13
+
14
+ ### Changed
15
+ - Removed legacy `codex/*` branch aliases from Git Flow Lite policy, docs, scripts, and CI branch validation.
16
+ - Standardized branch task-ref naming for atomic work (`GOV-*`, `REL-*`, `DOC-*`, `DEV-*`) with `issue-<number>` fallback.
17
+ - Updated branch-routing and status/review parsing so issue-based refs are handled consistently in `feature/issue-<n>-*` flows.
18
+
5
19
  ## 0.1.4 - 2026-03-20
6
20
 
7
21
  ### Added
package/README.md CHANGED
@@ -133,7 +133,7 @@ npm run self:bootstrap
133
133
  10. Есть отдельное явное подтверждение пользователя на прохождение review (`Review Approved: yes`).
134
134
  11. Перед merge пройден MR review gate (`RUN_MR_REVIEW_GATE`) с финальным `PASS_CONFIRMED`.
135
135
  12. Есть отдельное явное подтверждение пользователя на MR review (`MR Review Approved: yes`).
136
- 13. Каждый коммит связан с issue/task (`TASK-ID` и/или `#issue` в commit message).
136
+ 13. Каждый коммит связан с issue (`#issue` в commit message).
137
137
 
138
138
  Если хотя бы один пункт не выполнен, задача не принимается.
139
139
 
@@ -143,14 +143,14 @@ npm run self:bootstrap
143
143
  ```bash
144
144
  npm run meta:verify
145
145
  npm run meta:branch
146
- npm run meta:task-start -- --task 12 --slug api-redirect
146
+ npm run meta:task-start -- --task #12 --slug api-redirect
147
147
  npm run meta:review
148
148
  npm run meta:review-approve
149
149
  npm run meta:mr-review
150
150
  npm run meta:mr-review-approve
151
151
  npm run meta:verify-link
152
- npm run meta:ops -- --command SET_STATUS --payload '{"task":"DEV-12","status":"IN_PROGRESS"}'
153
- npm run meta:ops -- --command PREPARE_TASK_BRANCH --payload '{"task":"12","slug":"api-redirect"}'
152
+ npm run meta:ops -- --command SET_STATUS --payload '{"task":"#12","status":"IN_PROGRESS"}'
153
+ npm run meta:ops -- --command PREPARE_TASK_BRANCH --payload '{"task":"#12","slug":"api-redirect"}'
154
154
  npm run meta:status
155
155
  ```
156
156
 
@@ -158,6 +158,7 @@ npm run meta:status
158
158
  `meta:branch` валидирует ветку по Git Flow Lite (`main`, `develop`, `feature/*`, `release/*`, `hotfix/*`).
159
159
  `meta:task-start` делает branch-routing preflight: сравнивает задачу с текущей веткой, показывает dirty/ahead блокеры и готовит маршрут (`stay_on_current_branch` или `create_new_branch`).
160
160
  `meta:task-start` также делает context-protection check для `agents.md` между текущей и базовой веткой и требует явного подтверждения при diff.
161
+ Именование branch task ref: использовать GitHub issue ref в формате `issue-<number>`.
161
162
  `meta:mr-review` формирует сводный pre-merge отчёт по MR/PR, `meta:mr-review-approve` фиксирует финальный PASS после подтверждения пользователя.
162
163
  `meta:status` отдаёт единый статус-срез: trackers used, current sprint, current task, current branch context, git uncommitted и summary.
163
164
  В `github` режиме локальные `tasks/*` по умолчанию считаются cache/legacy и не являются источником истины.
package/agents.md CHANGED
@@ -139,7 +139,6 @@ Name: <agent role>
139
139
  Обязательное правило:
140
140
  - для режима `git_flow_lite` статусный цикл задачи фиксируется как `TODO -> IN_PROGRESS -> REVIEW -> READY -> DONE` (для релизных задач дополнительно `-> PUBLISH`);
141
141
  - рабочие ветки: `feature/*`, `release/*`, `hotfix/*`; долгоживущие ветки: `develop`, `main`;
142
- - для агентных веток также допускаются `codex/feature/*`, `codex/release/*`, `codex/hotfix/*`;
143
142
  - интеграционные правила: `feature/* -> develop`, `release/* -> main` + back-merge в `develop`, `hotfix/* -> main` + back-merge в `develop`;
144
143
  - `RUN_REVIEW_GATE` сначала формирует отчёт ревьювера и рекомендацию (`PASS_CANDIDATE`/`FAIL`);
145
144
  - финальный `RUN_REVIEW_GATE: PASS_CONFIRMED` допускается только после явного подтверждения пользователя `Review Approved: yes`;
@@ -149,7 +148,7 @@ Name: <agent role>
149
148
  - без подтверждения пользователя максимум допустимого статуса: `REVIEW`.
150
149
  - `SET_STATUS -> READY` разрешён только после `RUN_REVIEW_GATE: PASS_CONFIRMED`.
151
150
  - для задач реализации по умолчанию используется отдельная ветка `feature/*`; прямой рабочий поток на `develop`/`main` не допускается.
152
- - сообщение коммита обязано содержать ссылку на задачу (`TASK-ID` и/или `#issue-number`).
151
+ - сообщение коммита обязано содержать ссылку на задачу (`#issue-number`).
153
152
  - `READY` означает: коммит сделан и отправлен (`push`) в `feature/*`, `release/*` или `hotfix/*` с открытым PR по правилам ветвления.
154
153
  - `DONE` означает: изменения интегрированы в `main`; для `release/*` и `hotfix/*` подтверждён back-merge в `develop`.
155
154
  - `PUBLISH` означает: релиз опубликован и доступен в последней версии пакета.
@@ -166,13 +165,14 @@ Name: <agent role>
166
165
  ## 10.2) Обязательная маршрутизация ветки для Agile Manager Agent
167
166
  Перед началом реализации агент обязан:
168
167
  1. Проверить веточный контекст через `meta:status`.
169
- 2. Запустить branch-routing preflight через `meta:task-start -- --task <TASK-ID|#issue> --slug <slug> --kind atomic|feature|release|hotfix`.
170
- 3. Если задача относится к текущей feature-ветке (атомарная подзадача), продолжить в этой ветке только после подтверждения пользователя.
171
- 4. Если задача не относится к текущей ветке, проверить незакоммиченные изменения и непушенные коммиты.
172
- 5. Согласовать с пользователем способ обработки (`commit/stash/discard/push`).
173
- 6. Переключиться на базовую ветку (`develop` или `main`) и обновить её.
174
- 7. Создать новую рабочую ветку по Git Flow Lite.
175
- 8. Перед переключением проверить консистентность `agents.md` между текущей и базовой веткой; при отличиях показать явное предупреждение и запросить подтверждение пользователя.
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
176
 
177
177
  Без этого preflight выполнение реализации запрещено.
178
178
 
@@ -199,7 +199,7 @@ 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/task (`TASK-ID` или `#issue`).
202
+ 22. Коммит содержит ссылку на issue (`#issue`).
203
203
  23. Для branch routing собран e2e evidence по двум сценариям: `same feature` и `different feature`.
204
204
  24. Перед `--apply` подтверждена консистентность контекста `agents.md` (или явно подтверждён осознанный switch при diff).
205
205
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@k0t0vich/meta-agents-template",
3
- "version": "0.1.4",
3
+ "version": "0.1.6",
4
4
  "description": "Template system for verification-first agentic development",
5
5
  "type": "module",
6
6
  "bin": {
@@ -8,9 +8,6 @@ on:
8
8
  - 'feature/**'
9
9
  - 'release/**'
10
10
  - 'hotfix/**'
11
- - 'codex/feature/**'
12
- - 'codex/release/**'
13
- - 'codex/hotfix/**'
14
11
  pull_request:
15
12
  branches:
16
13
  - main
@@ -34,7 +31,7 @@ jobs:
34
31
  run: |
35
32
  BRANCH="${GITHUB_HEAD_REF:-${GITHUB_REF_NAME}}"
36
33
  echo "Branch: $BRANCH"
37
- if [[ "$BRANCH" =~ ^(main|develop|feature/.+|release/.+|hotfix/.+|codex/feature/.+|codex/release/.+|codex/hotfix/.+)$ ]]; then
34
+ if [[ "$BRANCH" =~ ^(main|develop|feature/.+|release/.+|hotfix/.+)$ ]]; then
38
35
  echo "Branch naming PASS"
39
36
  else
40
37
  echo "Branch naming FAIL: '$BRANCH' is not Git Flow Lite compatible"
@@ -48,7 +45,9 @@ jobs:
48
45
  node --check .meta-agents/scripts/task-branch-router.mjs
49
46
  npm run meta:verify
50
47
  npm run meta:status -- --json
51
- npm run meta:task-start -- --task 101 --slug verify --json
48
+ npm run meta:task-start -- --task GOV-101 --slug verify --json
49
+ git config user.name "Meta Agents CI"
50
+ git config user.email "meta-agents@example.com"
52
51
 
53
52
  - name: Validate branch routing e2e scenarios
54
53
  shell: bash
@@ -56,8 +55,8 @@ jobs:
56
55
  git add -A
57
56
  git commit -m "ci: bootstrap routing check"
58
57
  git branch develop
59
- git checkout -b codex/feature/101-routing
60
- node .meta-agents/scripts/task-branch-router.mjs --task 101 --slug routing --json > /tmp/same-feature.json
58
+ git checkout -b feature/gov-101-routing
59
+ node .meta-agents/scripts/task-branch-router.mjs --task GOV-101 --slug routing --json > /tmp/same-feature.json
61
60
  node -e 'const fs=require("fs"); const d=JSON.parse(fs.readFileSync("/tmp/same-feature.json","utf8")); if (d.decision !== "stay_on_current_branch") { console.error("Expected stay_on_current_branch"); process.exit(1); }'
62
- node .meta-agents/scripts/task-branch-router.mjs --task 202 --slug routing --json > /tmp/cross-feature.json
61
+ node .meta-agents/scripts/task-branch-router.mjs --task GOV-202 --slug routing --json > /tmp/cross-feature.json
63
62
  node -e 'const fs=require("fs"); const d=JSON.parse(fs.readFileSync("/tmp/cross-feature.json","utf8")); if (d.decision !== "create_new_branch") { console.error("Expected create_new_branch"); process.exit(1); }'
@@ -83,18 +83,18 @@ system:
83
83
  - main
84
84
  - develop
85
85
  working_branches:
86
- feature: "feature/<task-or-issue-id>-<slug>"
86
+ feature: "feature/<task-ref>-<slug>"
87
87
  release: "release/vX.Y.Z"
88
- hotfix: "hotfix/<task-or-issue-id>-<slug>"
88
+ hotfix: "hotfix/<task-ref>-<slug>"
89
+ task_ref_policy:
90
+ canonical_format: "#<number>"
91
+ branch_format: "issue-<number>"
89
92
  allowed_branch_patterns:
90
93
  - "^main$"
91
94
  - "^develop$"
92
95
  - "^feature/.+"
93
96
  - "^release/.+"
94
97
  - "^hotfix/.+"
95
- - "^codex/feature/.+"
96
- - "^codex/release/.+"
97
- - "^codex/hotfix/.+"
98
98
  merge_rules:
99
99
  - "feature/* -> develop"
100
100
  - "release/* -> main and back-merge to develop"
@@ -208,7 +208,6 @@ system:
208
208
  commit_linkage:
209
209
  required: true
210
210
  accepted_patterns:
211
- - "TASK-ID"
212
211
  - "#issue"
213
212
  publish_flow:
214
213
  changelog_required: true
@@ -7,7 +7,7 @@ Rule: для большой фичи в GitHub tracker сначала предл
7
7
 
8
8
  Branch routing protocol (обязателен для задач реализации):
9
9
  1. Сначала снять контекст: `npm run meta:status -- --json`.
10
- 2. Проверить маршрут ветки: `npm run meta:task-start -- --task <TASK-ID|#issue> --slug <slug> --kind atomic`.
10
+ 2. Проверить маршрут ветки: `npm run meta:task-start -- --task <#issue> --slug <slug> --kind atomic`.
11
11
  3. Если `route=stay_on_current_branch`, задача считается атомарной внутри текущей feature-ветки.
12
12
  4. Если `route=create_new_branch`, перед началом реализации обязательно перейти на базовую ветку (`develop` для feature/release, `main` для hotfix), обновить её и создать новую рабочую ветку.
13
13
  5. Создание/переключение ветки выполнять только после явного подтверждения пользователя (`--apply`).
@@ -18,6 +18,10 @@ Mandatory user dialogue before branch switch:
18
18
  - подтвердить обработку непушенных коммитов (`ahead > 0`);
19
19
  - подтвердить финальный switch/create.
20
20
 
21
+ Task ref naming rule:
22
+ - использовать GitHub issue ref как единственный канонический идентификатор (`#<number>`);
23
+ - в имени ветки использовать формат `issue-<number>`.
24
+
21
25
  Pre-merge rule:
22
26
  - после commit+push и открытия PR обязательно выполнить `RUN_MR_REVIEW_GATE`;
23
27
  - merge допускается только после `RUN_MR_REVIEW_GATE: PASS_CONFIRMED` и явного `MR Review Approved: yes` от пользователя.
@@ -21,7 +21,7 @@ Output format (обязательный):
21
21
  Tooling:
22
22
  - Основной путь: `npm run meta:status`.
23
23
  - Для machine-readable вывода можно использовать `npm run meta:status -- --json`.
24
- - Для веточного preflight по конкретной задаче: `npm run meta:task-start -- --task <TASK-ID|#issue> --slug <slug>`.
24
+ - Для веточного preflight по конкретной задаче: `npm run meta:task-start -- --task <#issue> --slug <slug>`.
25
25
 
26
26
  Rule:
27
27
  - В `github` режиме локальные `tasks/*` не считать авторитетным источником по умолчанию; рассматривать только как cache/legacy artifacts.
@@ -77,13 +77,13 @@ function classifyBranch(branch) {
77
77
  if (/^develop$/.test(branch)) {
78
78
  return "develop";
79
79
  }
80
- if (/^feature\/.+/.test(branch) || /^codex\/feature\/.+/.test(branch)) {
80
+ if (/^feature\/.+/.test(branch)) {
81
81
  return "feature";
82
82
  }
83
- if (/^release\/.+/.test(branch) || /^codex\/release\/.+/.test(branch)) {
83
+ if (/^release\/.+/.test(branch)) {
84
84
  return "release";
85
85
  }
86
- if (/^hotfix\/.+/.test(branch) || /^codex\/hotfix\/.+/.test(branch)) {
86
+ if (/^hotfix\/.+/.test(branch)) {
87
87
  return "hotfix";
88
88
  }
89
89
  return "unknown";
@@ -105,7 +105,7 @@ function extractTaskRefs(text) {
105
105
  refs.add(ref);
106
106
  }
107
107
 
108
- const taskMatches = source.match(/\b[A-Z][A-Z0-9_]*-\d+\b/g) || [];
108
+ const taskMatches = source.match(/\b[A-Za-z][A-Za-z0-9_]*-\d+\b/g) || [];
109
109
  for (const ref of taskMatches) {
110
110
  refs.add(ref.toUpperCase());
111
111
  }
@@ -277,7 +277,13 @@ function gatherTaskRefs(context) {
277
277
  refs.add(`#${branchIssue[1]}`);
278
278
  }
279
279
 
280
- const branchTask = String(context.branch || "").match(/([A-Z][A-Z0-9_]*-\d+)/);
280
+ const branchIssueToken = String(context.branch || "").match(/(?:^|\/)issue-(\d+)(?:-|$)/i);
281
+ if (branchIssueToken) {
282
+ refs.add(`#${branchIssueToken[1]}`);
283
+ refs.add(`ISSUE-${branchIssueToken[1]}`);
284
+ }
285
+
286
+ const branchTask = String(context.branch || "").match(/([A-Za-z][A-Za-z0-9_]*-\d+)/);
281
287
  if (branchTask) {
282
288
  refs.add(branchTask[1].toUpperCase());
283
289
  }
@@ -62,13 +62,13 @@ function classifyBranch(branch) {
62
62
  if (/^develop$/.test(branch)) {
63
63
  return "develop";
64
64
  }
65
- if (/^feature\/.+/.test(branch) || /^codex\/feature\/.+/.test(branch)) {
65
+ if (/^feature\/.+/.test(branch)) {
66
66
  return "feature";
67
67
  }
68
- if (/^release\/.+/.test(branch) || /^codex\/release\/.+/.test(branch)) {
68
+ if (/^release\/.+/.test(branch)) {
69
69
  return "release";
70
70
  }
71
- if (/^hotfix\/.+/.test(branch) || /^codex\/hotfix\/.+/.test(branch)) {
71
+ if (/^hotfix\/.+/.test(branch)) {
72
72
  return "hotfix";
73
73
  }
74
74
  return "unknown";
@@ -12,9 +12,6 @@ const BRANCH_PATTERNS = [
12
12
  { type: "feature", regex: /^feature\/.+/ },
13
13
  { type: "release", regex: /^release\/.+/ },
14
14
  { type: "hotfix", regex: /^hotfix\/.+/ },
15
- { type: "feature", regex: /^codex\/feature\/.+/ },
16
- { type: "release", regex: /^codex\/release\/.+/ },
17
- { type: "hotfix", regex: /^codex\/hotfix\/.+/ },
18
15
  ];
19
16
 
20
17
  function parseArgs(argv) {
@@ -258,8 +255,9 @@ function detectTaskFromBranch(branch) {
258
255
  if (!taskRef) {
259
256
  return "";
260
257
  }
261
- if (/^\d+$/.test(taskRef)) {
262
- return `#${taskRef}`;
258
+ const issueMatch = taskRef.match(/^ISSUE-(\d+)$/);
259
+ if (issueMatch) {
260
+ return `#${issueMatch[1]}`;
263
261
  }
264
262
  return taskRef;
265
263
  }
@@ -280,21 +278,20 @@ function extractBranchTaskRef(branch) {
280
278
  return "";
281
279
  }
282
280
 
283
- const normalized = source.startsWith("codex/") ? source.slice("codex/".length) : source;
284
- const match = normalized.match(/^(feature|release|hotfix)\/(.+)$/);
281
+ const match = source.match(/^(feature|release|hotfix)\/(.+)$/);
285
282
  if (!match) {
286
283
  return "";
287
284
  }
288
285
 
289
286
  const tail = match[2];
290
- const uppercaseToken = tail.match(/^([A-Z][A-Z0-9_]*-\d+)/);
287
+ const uppercaseToken = tail.match(/^([A-Za-z][A-Za-z0-9_]*-\d+)/);
291
288
  if (uppercaseToken) {
292
289
  return uppercaseToken[1].toUpperCase();
293
290
  }
294
291
 
295
292
  const numericToken = tail.match(/^(\d+)(?:-|$)/);
296
293
  if (numericToken) {
297
- return numericToken[1];
294
+ return `ISSUE-${numericToken[1]}`;
298
295
  }
299
296
 
300
297
  return "";
@@ -308,7 +305,7 @@ function extractTaskRefFromCurrentTask(currentTask) {
308
305
 
309
306
  const issueMatch = source.match(/#(\d+)/);
310
307
  if (issueMatch) {
311
- return issueMatch[1];
308
+ return `ISSUE-${issueMatch[1]}`;
312
309
  }
313
310
 
314
311
  const taskMatch = source.match(/\b([A-Z][A-Z0-9_]*-\d+)\b/);
@@ -7,9 +7,6 @@ const BRANCH_PATTERNS = [
7
7
  { type: "feature", regex: /^feature\/.+/ },
8
8
  { type: "release", regex: /^release\/.+/ },
9
9
  { type: "hotfix", regex: /^hotfix\/.+/ },
10
- { type: "feature", regex: /^codex\/feature\/.+/ },
11
- { type: "release", regex: /^codex\/release\/.+/ },
12
- { type: "hotfix", regex: /^codex\/hotfix\/.+/ },
13
10
  ];
14
11
 
15
12
  const TASK_KIND_MAP = {
@@ -180,8 +177,7 @@ function extractBranchTaskRef(branch) {
180
177
  return "";
181
178
  }
182
179
 
183
- const normalized = source.startsWith("codex/") ? source.slice("codex/".length) : source;
184
- const match = normalized.match(/^(feature|release|hotfix)\/(.+)$/);
180
+ const match = source.match(/^(feature|release|hotfix)\/(.+)$/);
185
181
  if (!match) {
186
182
  return "";
187
183
  }
@@ -194,7 +190,7 @@ function extractBranchTaskRef(branch) {
194
190
 
195
191
  const issueMatch = tail.match(/^(\d+)(?:-|$)/);
196
192
  if (issueMatch) {
197
- return issueMatch[1];
193
+ return `ISSUE-${issueMatch[1]}`;
198
194
  }
199
195
 
200
196
  return "";
@@ -208,12 +204,12 @@ function normalizeTaskRef(task) {
208
204
 
209
205
  const issue = source.match(/^#?(\d+)$/);
210
206
  if (issue) {
211
- return issue[1];
207
+ return `ISSUE-${issue[1]}`;
212
208
  }
213
209
 
214
210
  const fromBodyIssue = source.match(/#(\d+)/);
215
211
  if (fromBodyIssue) {
216
- return fromBodyIssue[1];
212
+ return `ISSUE-${fromBodyIssue[1]}`;
217
213
  }
218
214
 
219
215
  const taskRef = source.match(/([A-Za-z][A-Za-z0-9_]*-\d+)/);
@@ -249,7 +245,7 @@ function defaultBaseBranch(kind) {
249
245
  }
250
246
 
251
247
  function buildTargetBranch({ kind, taskRef, slug }) {
252
- const prefix = `codex/${kind}`;
248
+ const prefix = kind;
253
249
  const taskPart = slugify(taskRef) || "task";
254
250
  const slugPart = slugify(slug) || "work";
255
251
  if (slugPart === taskPart) {
@@ -377,6 +373,7 @@ function buildPlan(options, gitContext) {
377
373
  });
378
374
 
379
375
  const blockers = [];
376
+ const namingWarnings = [];
380
377
  const requiresDialogue = [];
381
378
 
382
379
  if (!sameFeature && gitContext.dirty && !options.allowDirty) {
@@ -393,6 +390,12 @@ function buildPlan(options, gitContext) {
393
390
  );
394
391
  }
395
392
 
393
+ if (!/^ISSUE-\d+$/.test(taskRef)) {
394
+ namingWarnings.push(
395
+ "Canonical task ref should be GitHub issue number (#<number>) so branch naming stays issue-<number>.",
396
+ );
397
+ }
398
+
396
399
  if (sameFeature) {
397
400
  requiresDialogue.push(
398
401
  "Задача атомарная и относится к текущей feature-ветке. Подтвердите, что продолжаем работу в этой ветке.",
@@ -414,6 +417,7 @@ function buildPlan(options, gitContext) {
414
417
  current: gitContext,
415
418
  targetBranch,
416
419
  blockers,
420
+ namingWarnings,
417
421
  contextWarnings: getContextWarnings(baseBranch),
418
422
  requiresDialogue,
419
423
  suggestedCommands: sameFeature
@@ -466,6 +470,16 @@ function printPlan(plan, applyResult) {
466
470
  }
467
471
  }
468
472
 
473
+ console.log("");
474
+ console.log("## Naming Warnings");
475
+ if (plan.namingWarnings.length === 0) {
476
+ console.log("- none");
477
+ } else {
478
+ for (const warning of plan.namingWarnings) {
479
+ console.log(`- ${warning}`);
480
+ }
481
+ }
482
+
469
483
  console.log("");
470
484
  console.log("## Required User Dialogue");
471
485
  for (const line of plan.requiresDialogue) {
@@ -7,9 +7,6 @@ const BRANCH_PATTERNS = [
7
7
  { type: "feature", regex: /^feature\/.+/ },
8
8
  { type: "release", regex: /^release\/.+/ },
9
9
  { type: "hotfix", regex: /^hotfix\/.+/ },
10
- { type: "feature", regex: /^codex\/feature\/.+/ },
11
- { type: "release", regex: /^codex\/release\/.+/ },
12
- { type: "hotfix", regex: /^codex\/hotfix\/.+/ },
13
10
  ];
14
11
 
15
12
  function git(args, allowFailure = false) {
@@ -8,8 +8,7 @@ function readLastCommitSubject(ref = "HEAD") {
8
8
 
9
9
  function validateMessage(message) {
10
10
  const hasIssueNumber = /#\d+\b/.test(message);
11
- const hasTaskId = /\b[A-Z][A-Z0-9_]*-\d+\b/.test(message);
12
- return hasIssueNumber || hasTaskId;
11
+ return hasIssueNumber;
13
12
  }
14
13
 
15
14
  function parseArgs(argv) {
@@ -49,7 +48,7 @@ function main() {
49
48
  }
50
49
 
51
50
  if (!validateMessage(message)) {
52
- console.error("Commit link FAIL: message must contain TASK-ID or #issue.");
51
+ console.error("Commit link FAIL: message must contain #issue.");
53
52
  console.error(`Message: ${message}`);
54
53
  process.exit(1);
55
54
  }
@@ -50,14 +50,14 @@
50
50
  ```bash
51
51
  npm run meta:verify
52
52
  npm run meta:branch
53
- npm run meta:task-start -- --task 12 --slug api-redirect
53
+ npm run meta:task-start -- --task #12 --slug api-redirect
54
54
  npm run meta:review
55
55
  npm run meta:review-approve
56
56
  npm run meta:mr-review
57
57
  npm run meta:mr-review-approve
58
58
  npm run meta:verify-link
59
- npm run meta:ops -- --command SET_STATUS --payload '{"task":"DEV-12","status":"IN_PROGRESS"}'
60
- npm run meta:ops -- --command PREPARE_TASK_BRANCH --payload '{"task":"12","slug":"api-redirect"}'
59
+ npm run meta:ops -- --command SET_STATUS --payload '{"task":"#12","status":"IN_PROGRESS"}'
60
+ npm run meta:ops -- --command PREPARE_TASK_BRANCH --payload '{"task":"#12","slug":"api-redirect"}'
61
61
  npm run meta:status
62
62
  ```
63
63
 
@@ -66,6 +66,7 @@ npm run meta:status
66
66
  `meta:branch` валидирует ветку по Git Flow Lite (`main`, `develop`, `feature/*`, `release/*`, `hotfix/*`).
67
67
  `meta:task-start` делает branch-routing preflight: сравнивает задачу с текущей веткой, показывает dirty/ahead блокеры и готовит маршрут (`stay_on_current_branch` или `create_new_branch`).
68
68
  `meta:task-start` также делает context-protection check для `agents.md` между текущей и базовой веткой и требует явного подтверждения при diff.
69
+ Именование branch task ref: использовать GitHub issue ref в формате `issue-<number>`.
69
70
  `meta:mr-review` формирует сводный pre-merge отчёт по MR/PR, `meta:mr-review-approve` фиксирует финальный PASS после подтверждения пользователя.
70
71
 
71
72
  `meta:status` выдаёт сводный статус:
@@ -139,7 +139,6 @@ Name: <agent role>
139
139
  Обязательное правило:
140
140
  - для режима `git_flow_lite` статусный цикл задачи фиксируется как `TODO -> IN_PROGRESS -> REVIEW -> READY -> DONE` (для релизных задач дополнительно `-> PUBLISH`);
141
141
  - рабочие ветки: `feature/*`, `release/*`, `hotfix/*`; долгоживущие ветки: `develop`, `main`;
142
- - для агентных веток также допускаются `codex/feature/*`, `codex/release/*`, `codex/hotfix/*`;
143
142
  - интеграционные правила: `feature/* -> develop`, `release/* -> main` + back-merge в `develop`, `hotfix/* -> main` + back-merge в `develop`;
144
143
  - `RUN_REVIEW_GATE` сначала формирует отчёт ревьювера и рекомендацию (`PASS_CANDIDATE`/`FAIL`);
145
144
  - финальный `RUN_REVIEW_GATE: PASS_CONFIRMED` допускается только после явного подтверждения пользователя `Review Approved: yes`;
@@ -149,7 +148,7 @@ Name: <agent role>
149
148
  - без подтверждения пользователя максимум допустимого статуса: `REVIEW`.
150
149
  - `SET_STATUS -> READY` разрешён только после `RUN_REVIEW_GATE: PASS_CONFIRMED`.
151
150
  - для задач реализации по умолчанию используется отдельная ветка `feature/*`; прямой рабочий поток на `develop`/`main` не допускается.
152
- - сообщение коммита обязано содержать ссылку на задачу (`TASK-ID` и/или `#issue-number`).
151
+ - сообщение коммита обязано содержать ссылку на задачу (`#issue-number`).
153
152
  - `READY` означает: коммит сделан и отправлен (`push`) в `feature/*`, `release/*` или `hotfix/*` с открытым PR по правилам ветвления.
154
153
  - `DONE` означает: изменения интегрированы в `main`; для `release/*` и `hotfix/*` подтверждён back-merge в `develop`.
155
154
  - `PUBLISH` означает: релиз опубликован и доступен в последней версии пакета.
@@ -166,13 +165,14 @@ Name: <agent role>
166
165
  ## 10.2) Обязательная маршрутизация ветки для Agile Manager Agent
167
166
  Перед началом реализации агент обязан:
168
167
  1. Проверить веточный контекст через `meta:status`.
169
- 2. Запустить branch-routing preflight через `meta:task-start -- --task <TASK-ID|#issue> --slug <slug> --kind atomic|feature|release|hotfix`.
170
- 3. Если задача относится к текущей feature-ветке (атомарная подзадача), продолжить в этой ветке только после подтверждения пользователя.
171
- 4. Если задача не относится к текущей ветке, проверить незакоммиченные изменения и непушенные коммиты.
172
- 5. Согласовать с пользователем способ обработки (`commit/stash/discard/push`).
173
- 6. Переключиться на базовую ветку (`develop` или `main`) и обновить её.
174
- 7. Создать новую рабочую ветку по Git Flow Lite.
175
- 8. Перед переключением проверить консистентность `agents.md` между текущей и базовой веткой; при отличиях показать явное предупреждение и запросить подтверждение пользователя.
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
176
 
177
177
  Без этого preflight выполнение реализации запрещено.
178
178
 
@@ -199,7 +199,7 @@ 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/task (`TASK-ID` или `#issue`).
202
+ 22. Коммит содержит ссылку на issue (`#issue`).
203
203
  23. Для branch routing собран e2e evidence по двум сценариям: `same feature` и `different feature`.
204
204
  24. Перед `--apply` подтверждена консистентность контекста `agents.md` (или явно подтверждён осознанный switch при diff).
205
205
 
@@ -1,3 +1,3 @@
1
1
  # Task Status Log
2
2
 
3
- - Format: YYYY-MM-DD | TASK-ID | STATUS | short note
3
+ - Format: YYYY-MM-DD | #issue | STATUS | short note
@@ -26,7 +26,7 @@ Reason: Обязательная проверка соблюдения PRD и к
26
26
  Name: Governance Watchdog Agent
27
27
 
28
28
  Governance Watchdog Agent: verify governance gate,
29
- task <TASK-ID>,
29
+ task <#issue>,
30
30
  required checks "prd_sections_complete, acceptance_defined, user_confirmation_policy_respected",
31
31
  result PASS
32
32
  ```
@@ -53,7 +53,6 @@ result PASS
53
53
  Дополнительно для коммита:
54
54
  - для `git_flow_lite` используется цикл `TODO -> IN_PROGRESS -> REVIEW -> READY -> DONE` (для релизных задач дополнительно `-> PUBLISH`);
55
55
  - рабочие ветки: `feature/*`, `release/*`, `hotfix/*`; долгоживущие ветки: `develop`, `main`;
56
- - для агентных веток допускаются `codex/feature/*`, `codex/release/*`, `codex/hotfix/*`;
57
56
  - правила merge: `feature/* -> develop`, `release/* -> main` + back-merge в `develop`, `hotfix/* -> main` + back-merge в `develop`;
58
57
  - `RUN_REVIEW_GATE` работает в два этапа:
59
58
  - сначала отчёт и рекомендация (`PASS_CANDIDATE`/`FAIL`);
@@ -65,10 +64,11 @@ result PASS
65
64
  - merge разрешён только после `RUN_MR_REVIEW_GATE: PASS_CONFIRMED`;
66
65
  - для задач реализации по умолчанию используется отдельная ветка `feature/*`; прямой поток на `develop`/`main` запрещён;
67
66
  - перед началом реализации обязателен `PREPARE_TASK_BRANCH` (веточный preflight и user dialogue);
67
+ - branch naming policy: использовать только GitHub issue ref в формате `issue-<number>`;
68
68
  - если задача атомарная и относится к текущей feature-ветке, допускается выполнение в текущей ветке после явного подтверждения пользователя;
69
69
  - если задача не относится к текущей ветке, требуется: проверить dirty/ahead, согласовать действие с пользователем, перейти на `develop` (или `main` для hotfix), обновить и создать новую ветку;
70
70
  - перед `--apply` обязателен контекстный check: сравнить `agents.md` текущей и базовой ветки, при diff запросить явное подтверждение пользователя;
71
- - сообщение коммита обязательно содержит `TASK-ID` и/или `#issue-number`.
71
+ - сообщение коммита обязательно содержит `#issue-number`.
72
72
 
73
73
  Для GitHub трекера статус issue задаётся label-ом (одновременно только один статус из набора):
74
74
  - `TODO`
@@ -80,7 +80,7 @@ result PASS
80
80
  - `PUBLISH`
81
81
 
82
82
  Семантика статусов:
83
- - `READY`: коммит сделан и отправлен (`push`) в `feature/*|release/*|hotfix/*` (или `codex/*` эквиваленты); открыт PR в `develop` или `main` согласно правилам ветвления.
83
+ - `READY`: коммит сделан и отправлен (`push`) в `feature/*|release/*|hotfix/*`; открыт PR в `develop` или `main` согласно правилам ветвления.
84
84
  - `DONE`: изменения интегрированы в `main`; для `release/*` и `hotfix/*` подтверждён back-merge в `develop`.
85
85
  - `PUBLISH`: релиз опубликован и доступен в последней версии пакета.
86
86
 
@@ -100,7 +100,7 @@ Reason: Нужна обязательная preflight-проверка проц
100
100
  Name: Governance Watchdog Agent
101
101
 
102
102
  Governance Watchdog Agent: verify governance gate,
103
- task DEV-12,
103
+ task #12,
104
104
  checklist "PRD(Описание+Проверяемость), hard criteria, user confirmation policy",
105
105
  result PASS
106
106
  ```
@@ -115,7 +115,7 @@ Reason: Нужен обязательный pre-commit review.
115
115
  Name: Reviewer/Judge Agent
116
116
 
117
117
  Reviewer/Judge Agent: run review gate,
118
- task DEV-12,
118
+ task #12,
119
119
  checklist "what_done_summary, critical_findings, potential_risks, issue_link_presence",
120
120
  result PASS_CANDIDATE,
121
121
  report "posted to issue #12"
@@ -133,7 +133,7 @@ Reason: Подтверждение review пользователем получ
133
133
  Name: Reviewer/Judge Agent
134
134
 
135
135
  Reviewer/Judge Agent: run review gate,
136
- task DEV-12,
136
+ task #12,
137
137
  approve yes,
138
138
  result PASS_CONFIRMED
139
139
  ```
@@ -168,7 +168,7 @@ Name: Agile Manager Agent
168
168
 
169
169
  Agile Manager Agent: set status,
170
170
  tracker __DEFAULT_TRACKER__,
171
- task DEV-12,
171
+ task #12,
172
172
  status IN_PROGRESS,
173
173
  reason "начата реализация"
174
174
  ```
@@ -186,7 +186,7 @@ Agile Manager Agent: prepare task branch,
186
186
  tracker __DEFAULT_TRACKER__,
187
187
  task "#12",
188
188
  task kind "atomic",
189
- command "npm run meta:task-start -- --task 12 --slug api-redirect",
189
+ command "npm run meta:task-start -- --task #12 --slug api-redirect",
190
190
  user dialogue "confirm branch context + dirty/ahead handling + agents.md context warning + switch decision"
191
191
  ```
192
192
 
@@ -201,7 +201,7 @@ Name: Agile Manager Agent
201
201
 
202
202
  Agile Manager Agent: set status,
203
203
  tracker __DEFAULT_TRACKER__,
204
- task DEV-12,
204
+ task #12,
205
205
  status REVIEW,
206
206
  reason "готово к review gate"
207
207
  ```
@@ -257,9 +257,9 @@ Agile Manager Agent: commit by name,
257
257
  tracker __DEFAULT_TRACKER__,
258
258
  task "API редирект офферов",
259
259
  issue 12,
260
- commit message "DEV-12 | API редирект офферов (#12)",
260
+ commit message "#12 | API редирект офферов",
261
261
  push yes,
262
- branch "feature/DEV-12-api-redirect",
262
+ branch "feature/issue-12-api-redirect",
263
263
  open mr "optional",
264
264
  target status READY,
265
265
  what done "добавлен endpoint, тесты, обработка ошибок"
@@ -275,7 +275,7 @@ Reason: Нужен обязательный pre-merge review по MR/PR с пр
275
275
  Name: MR Review Agent
276
276
 
277
277
  MR Review Agent: run MR review gate,
278
- task DEV-12,
278
+ task #12,
279
279
  pr 34,
280
280
  checklist "mr_context, task_linkage, prd_evidence, critical_findings, potential_risks",
281
281
  result PASS_CANDIDATE
@@ -293,7 +293,7 @@ Reason: Подтверждение MR review пользователем полу
293
293
  Name: MR Review Agent
294
294
 
295
295
  MR Review Agent: run MR review gate,
296
- task DEV-12,
296
+ task #12,
297
297
  pr 34,
298
298
  approve yes,
299
299
  result PASS_CONFIRMED
@@ -310,7 +310,7 @@ Name: Agile Manager Agent
310
310
 
311
311
  Agile Manager Agent: set status,
312
312
  tracker __DEFAULT_TRACKER__,
313
- task DEV-12,
313
+ task #12,
314
314
  status PUBLISH,
315
315
  reason "релиз опубликован в latest"
316
316
  ```
@@ -329,7 +329,7 @@ Close Task Approved: yes
329
329
 
330
330
  Agile Manager Agent: set status,
331
331
  tracker __DEFAULT_TRACKER__,
332
- task DEV-12,
332
+ task #12,
333
333
  status DONE,
334
334
  reason "пользователь подтвердил закрытие"
335
335
  ```
@@ -345,7 +345,7 @@ Name: Agile Manager Agent
345
345
 
346
346
  Agile Manager Agent: assign sprint,
347
347
  tracker __DEFAULT_TRACKER__,
348
- task DEV-12,
348
+ task #12,
349
349
  sprint SPRINT-3
350
350
  ```
351
351
 
@@ -26,7 +26,7 @@ Reason: Обязательная проверка соблюдения PRD и к
26
26
  Name: Governance Watchdog Agent
27
27
 
28
28
  Governance Watchdog Agent: verify governance gate,
29
- task <TASK-ID>,
29
+ task <#issue>,
30
30
  required checks "prd_sections_complete, acceptance_defined, user_confirmation_policy_respected",
31
31
  result PASS
32
32
  ```
@@ -53,7 +53,6 @@ result PASS
53
53
  Дополнительно для коммита:
54
54
  - для `git_flow_lite` используется цикл `TODO -> IN_PROGRESS -> REVIEW -> READY -> DONE` (для релизных задач дополнительно `-> PUBLISH`);
55
55
  - рабочие ветки: `feature/*`, `release/*`, `hotfix/*`; долгоживущие ветки: `develop`, `main`;
56
- - для агентных веток допускаются `codex/feature/*`, `codex/release/*`, `codex/hotfix/*`;
57
56
  - правила merge: `feature/* -> develop`, `release/* -> main` + back-merge в `develop`, `hotfix/* -> main` + back-merge в `develop`;
58
57
  - `RUN_REVIEW_GATE` работает в два этапа:
59
58
  - сначала отчёт и рекомендация (`PASS_CANDIDATE`/`FAIL`);
@@ -65,10 +64,11 @@ result PASS
65
64
  - merge разрешён только после `RUN_MR_REVIEW_GATE: PASS_CONFIRMED`;
66
65
  - для задач реализации по умолчанию используется отдельная ветка `feature/*`; прямой поток на `develop`/`main` запрещён;
67
66
  - перед началом реализации обязателен `PREPARE_TASK_BRANCH` (веточный preflight и user dialogue);
67
+ - branch naming policy: использовать только GitHub issue ref в формате `issue-<number>`;
68
68
  - если задача атомарная и относится к текущей feature-ветке, допускается выполнение в текущей ветке после явного подтверждения пользователя;
69
69
  - если задача не относится к текущей ветке, требуется: проверить dirty/ahead, согласовать действие с пользователем, перейти на `develop` (или `main` для hotfix), обновить и создать новую ветку;
70
70
  - перед `--apply` обязателен контекстный check: сравнить `agents.md` текущей и базовой ветки, при diff запросить явное подтверждение пользователя;
71
- - сообщение коммита обязательно содержит `TASK-ID` и/или `#issue-number`.
71
+ - сообщение коммита обязательно содержит `#issue-number`.
72
72
 
73
73
  Для GitHub трекера статус issue задаётся label-ом (одновременно только один статус из набора):
74
74
  - `TODO`
@@ -80,7 +80,7 @@ result PASS
80
80
  - `PUBLISH`
81
81
 
82
82
  Семантика статусов:
83
- - `READY`: коммит сделан и отправлен (`push`) в `feature/*|release/*|hotfix/*` (или `codex/*` эквиваленты); открыт PR в `develop` или `main` согласно правилам ветвления.
83
+ - `READY`: коммит сделан и отправлен (`push`) в `feature/*|release/*|hotfix/*`; открыт PR в `develop` или `main` согласно правилам ветвления.
84
84
  - `DONE`: изменения интегрированы в `main`; для `release/*` и `hotfix/*` подтверждён back-merge в `develop`.
85
85
  - `PUBLISH`: релиз опубликован и доступен в последней версии пакета.
86
86
 
@@ -100,7 +100,7 @@ Reason: Нужна обязательная preflight-проверка проц
100
100
  Name: Governance Watchdog Agent
101
101
 
102
102
  Governance Watchdog Agent: verify governance gate,
103
- task DEV-12,
103
+ task #12,
104
104
  checklist "PRD(Описание+Проверяемость), hard criteria, user confirmation policy",
105
105
  result PASS
106
106
  ```
@@ -115,7 +115,7 @@ Reason: Нужен обязательный pre-commit review.
115
115
  Name: Reviewer/Judge Agent
116
116
 
117
117
  Reviewer/Judge Agent: run review gate,
118
- task DEV-12,
118
+ task #12,
119
119
  checklist "what_done_summary, critical_findings, potential_risks, issue_link_presence",
120
120
  result PASS_CANDIDATE,
121
121
  report "posted to issue #12"
@@ -133,7 +133,7 @@ Reason: Подтверждение review пользователем получ
133
133
  Name: Reviewer/Judge Agent
134
134
 
135
135
  Reviewer/Judge Agent: run review gate,
136
- task DEV-12,
136
+ task #12,
137
137
  approve yes,
138
138
  result PASS_CONFIRMED
139
139
  ```
@@ -168,7 +168,7 @@ Name: Agile Manager Agent
168
168
 
169
169
  Agile Manager Agent: set status,
170
170
  tracker github,
171
- task DEV-12,
171
+ task #12,
172
172
  status IN_PROGRESS,
173
173
  reason "начата реализация"
174
174
  ```
@@ -186,7 +186,7 @@ Agile Manager Agent: prepare task branch,
186
186
  tracker github,
187
187
  task "#12",
188
188
  task kind "atomic",
189
- command "npm run meta:task-start -- --task 12 --slug api-redirect",
189
+ command "npm run meta:task-start -- --task #12 --slug api-redirect",
190
190
  user dialogue "confirm branch context + dirty/ahead handling + agents.md context warning + switch decision"
191
191
  ```
192
192
 
@@ -201,7 +201,7 @@ Name: Agile Manager Agent
201
201
 
202
202
  Agile Manager Agent: set status,
203
203
  tracker github,
204
- task DEV-12,
204
+ task #12,
205
205
  status REVIEW,
206
206
  reason "готово к review gate"
207
207
  ```
@@ -257,9 +257,9 @@ Agile Manager Agent: commit by name,
257
257
  tracker github,
258
258
  task "API редирект офферов",
259
259
  issue 12,
260
- commit message "DEV-12 | API редирект офферов (#12)",
260
+ commit message "#12 | API редирект офферов",
261
261
  push yes,
262
- branch "feature/DEV-12-api-redirect",
262
+ branch "feature/issue-12-api-redirect",
263
263
  open mr "optional",
264
264
  target status READY,
265
265
  what done "добавлен endpoint, тесты, обработка ошибок"
@@ -275,7 +275,7 @@ Reason: Нужен обязательный pre-merge review по MR/PR с пр
275
275
  Name: MR Review Agent
276
276
 
277
277
  MR Review Agent: run MR review gate,
278
- task DEV-12,
278
+ task #12,
279
279
  pr 34,
280
280
  checklist "mr_context, task_linkage, prd_evidence, critical_findings, potential_risks",
281
281
  result PASS_CANDIDATE
@@ -293,7 +293,7 @@ Reason: Подтверждение MR review пользователем полу
293
293
  Name: MR Review Agent
294
294
 
295
295
  MR Review Agent: run MR review gate,
296
- task DEV-12,
296
+ task #12,
297
297
  pr 34,
298
298
  approve yes,
299
299
  result PASS_CONFIRMED
@@ -310,7 +310,7 @@ Name: Agile Manager Agent
310
310
 
311
311
  Agile Manager Agent: set status,
312
312
  tracker github,
313
- task DEV-12,
313
+ task #12,
314
314
  status PUBLISH,
315
315
  reason "релиз опубликован в latest"
316
316
  ```
@@ -329,7 +329,7 @@ Close Task Approved: yes
329
329
 
330
330
  Agile Manager Agent: set status,
331
331
  tracker github,
332
- task DEV-12,
332
+ task #12,
333
333
  status DONE,
334
334
  reason "пользователь подтвердил закрытие"
335
335
  ```
@@ -345,7 +345,7 @@ Name: Agile Manager Agent
345
345
 
346
346
  Agile Manager Agent: assign sprint,
347
347
  tracker github,
348
- task DEV-12,
348
+ task #12,
349
349
  sprint SPRINT-3
350
350
  ```
351
351
 
@@ -362,7 +362,7 @@ Status Agent: status snapshot,
362
362
  tracker github,
363
363
  source policy "github/mcp/custom -> external tracker first, local -> tasks first",
364
364
  include "trackers_used,current_sprint,current_task,current_branch_context,git_uncommitted,summary",
365
- command "node .meta-agents/scripts/sync-status.mjs"
365
+ command "npm run meta:status"
366
366
  ```
367
367
 
368
368
  ### PREPARE_RELEASE_NOTE