@mmerterden/multi-agent-pipeline 11.4.0 → 12.0.0

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.
Files changed (117) hide show
  1. package/CHANGELOG.md +172 -0
  2. package/README.md +1 -0
  3. package/docs/adr/0007-multi-tool-adapter-framework.md +2 -2
  4. package/index.js +9 -2
  5. package/install/_common.mjs +107 -5
  6. package/install/_telemetry.mjs +5 -23
  7. package/install/claude.mjs +95 -11
  8. package/install/copilot.mjs +75 -6
  9. package/install/index.mjs +34 -1
  10. package/package.json +4 -10
  11. package/pipeline/commands/multi-agent/SKILL.md +1 -0
  12. package/pipeline/commands/multi-agent/analysis/SKILL.md +1 -0
  13. package/pipeline/commands/multi-agent/analysis-resolve/SKILL.md +1 -0
  14. package/pipeline/commands/multi-agent/autopilot/SKILL.md +1 -0
  15. package/pipeline/commands/multi-agent/build-optimize/SKILL.md +1 -0
  16. package/pipeline/commands/multi-agent/channels/SKILL.md +1 -0
  17. package/pipeline/commands/multi-agent/create-jira/SKILL.md +1 -0
  18. package/pipeline/commands/multi-agent/dev/SKILL.md +1 -0
  19. package/pipeline/commands/multi-agent/dev-autopilot/SKILL.md +1 -0
  20. package/pipeline/commands/multi-agent/dev-local/SKILL.md +2 -1
  21. package/pipeline/commands/multi-agent/dev-local-autopilot/SKILL.md +1 -0
  22. package/pipeline/commands/multi-agent/diff-explain/SKILL.md +1 -0
  23. package/pipeline/commands/multi-agent/finish/SKILL.md +1 -0
  24. package/pipeline/commands/multi-agent/garbage-collect/SKILL.md +29 -3
  25. package/pipeline/commands/multi-agent/help/SKILL.md +3 -2
  26. package/pipeline/commands/multi-agent/issue/SKILL.md +1 -0
  27. package/pipeline/commands/multi-agent/jira/SKILL.md +1 -0
  28. package/pipeline/commands/multi-agent/kill/SKILL.md +1 -0
  29. package/pipeline/commands/multi-agent/language/SKILL.md +20 -1
  30. package/pipeline/commands/multi-agent/local/SKILL.md +1 -0
  31. package/pipeline/commands/multi-agent/local-autopilot/SKILL.md +1 -0
  32. package/pipeline/commands/multi-agent/log/SKILL.md +1 -0
  33. package/pipeline/commands/multi-agent/manual-test/SKILL.md +1 -0
  34. package/pipeline/commands/multi-agent/prune-logs/SKILL.md +1 -0
  35. package/pipeline/commands/multi-agent/purge/SKILL.md +27 -24
  36. package/pipeline/commands/multi-agent/refactor/SKILL.md +1 -0
  37. package/pipeline/commands/multi-agent/resume/SKILL.md +1 -0
  38. package/pipeline/commands/multi-agent/review/SKILL.md +1 -0
  39. package/pipeline/commands/multi-agent/review-issue/SKILL.md +1 -0
  40. package/pipeline/commands/multi-agent/review-jira/SKILL.md +1 -0
  41. package/pipeline/commands/multi-agent/scan/SKILL.md +1 -0
  42. package/pipeline/commands/multi-agent/search/SKILL.md +1 -0
  43. package/pipeline/commands/multi-agent/setup/SKILL.md +1 -0
  44. package/pipeline/commands/multi-agent/stack/SKILL.md +1 -0
  45. package/pipeline/commands/multi-agent/status/SKILL.md +1 -0
  46. package/pipeline/commands/multi-agent/sync/SKILL.md +20 -2
  47. package/pipeline/commands/multi-agent/test/SKILL.md +1 -0
  48. package/pipeline/commands/multi-agent/uninstall/SKILL.md +87 -0
  49. package/pipeline/commands/multi-agent/update/SKILL.md +1 -0
  50. package/pipeline/lib/account-resolver.sh +61 -23
  51. package/pipeline/lib/channels-multi-repo.sh +7 -2
  52. package/pipeline/lib/count-lib.sh +27 -0
  53. package/pipeline/lib/credential-store.sh +23 -6
  54. package/pipeline/lib/extract-conventions.sh +27 -21
  55. package/pipeline/lib/fetch-confluence.sh +25 -13
  56. package/pipeline/lib/fetch-crashlytics.sh +30 -8
  57. package/pipeline/lib/fetch-fortify.sh +11 -2
  58. package/pipeline/lib/fetch-swagger.sh +18 -7
  59. package/pipeline/lib/figma-mcp-refresh.sh +26 -11
  60. package/pipeline/lib/figma-screenshot.sh +11 -2
  61. package/pipeline/lib/issue-fetcher.sh +31 -6
  62. package/pipeline/lib/multi-repo-pipeline.sh +84 -20
  63. package/pipeline/lib/plan-todos.sh +12 -3
  64. package/pipeline/lib/post-pr-review.sh +5 -3
  65. package/pipeline/lib/repo-cache.sh +53 -9
  66. package/pipeline/lib/review-watch.sh +26 -6
  67. package/pipeline/lib/shadow-git.sh +45 -4
  68. package/pipeline/lib/vercel-deploy.sh +10 -1
  69. package/pipeline/multi-agent-refs/cross-cli-contract.md +5 -5
  70. package/pipeline/multi-agent-refs/phases/phase-0-init.md +12 -1
  71. package/pipeline/scripts/audit-log-rotate.sh +38 -10
  72. package/pipeline/scripts/check-md-links.mjs +34 -9
  73. package/pipeline/scripts/diff-risk-score.mjs +4 -1
  74. package/pipeline/scripts/evidence-gate.mjs +10 -1
  75. package/pipeline/scripts/fixtures/install-layout.tsv +6 -4
  76. package/pipeline/scripts/fixtures/pack-expected-count.txt +1 -0
  77. package/pipeline/scripts/gc-tmp.sh +67 -8
  78. package/pipeline/scripts/gc-worktrees.sh +140 -0
  79. package/pipeline/scripts/keychain-save.sh +13 -9
  80. package/pipeline/scripts/lint-skills.mjs +40 -2
  81. package/pipeline/scripts/localize-commands.mjs +130 -0
  82. package/pipeline/scripts/migrate-prefs.mjs +26 -7
  83. package/pipeline/scripts/phase-tracker.sh +71 -0
  84. package/pipeline/scripts/pre-commit-check.sh +39 -0
  85. package/pipeline/scripts/prune-logs.sh +100 -15
  86. package/pipeline/scripts/purge.sh +235 -0
  87. package/pipeline/scripts/scan-skills.sh +217 -127
  88. package/pipeline/scripts/smoke-bitbucket-contract.sh +21 -5
  89. package/pipeline/scripts/smoke-description-tr.sh +82 -0
  90. package/pipeline/scripts/smoke-fetchers-offline.sh +382 -0
  91. package/pipeline/scripts/smoke-gc-tmp.sh +50 -4
  92. package/pipeline/scripts/smoke-gc-worktrees.sh +125 -0
  93. package/pipeline/scripts/smoke-install-layout.sh +11 -3
  94. package/pipeline/scripts/smoke-lib-scripts.sh +54 -1
  95. package/pipeline/scripts/smoke-pack-contents.sh +140 -0
  96. package/pipeline/scripts/smoke-plugin-validate.sh +64 -0
  97. package/pipeline/scripts/smoke-prune-logs.sh +57 -7
  98. package/pipeline/scripts/smoke-purge.sh +138 -0
  99. package/pipeline/scripts/smoke-shadow-git.sh +48 -1
  100. package/pipeline/scripts/smoke-skill-authoring.sh +1 -1
  101. package/pipeline/scripts/smoke-update-check.sh +13 -0
  102. package/pipeline/scripts/smoke-workflow-audit.sh +69 -0
  103. package/pipeline/scripts/test-gap-scan.mjs +12 -1
  104. package/pipeline/scripts/triage-memory.mjs +10 -1
  105. package/pipeline/scripts/uninstall.mjs +146 -42
  106. package/pipeline/scripts/update-check.sh +9 -0
  107. package/pipeline/scripts/update-issue-progress.sh +60 -41
  108. package/pipeline/scripts/write-state.mjs +14 -4
  109. package/pipeline/skills/.skill-manifest.json +7 -7
  110. package/pipeline/skills/.skills-index.json +9 -9
  111. package/pipeline/skills/shared/README.md +19 -10
  112. package/pipeline/skills/shared/core/multi-agent/SKILL.md +1 -0
  113. package/pipeline/skills/shared/core/multi-agent-sync/SKILL.md +2 -2
  114. package/pipeline/skills/shared/core/multi-agent-uninstall/SKILL.md +74 -0
  115. package/pipeline/skills/skills-index.md +1 -1
  116. package/pipeline/commands/multi-agent/delete/SKILL.md +0 -67
  117. package/pipeline/skills/shared/core/multi-agent-delete/SKILL.md +0 -66
@@ -22,7 +22,9 @@ import {
22
22
  copyFile,
23
23
  countFiles,
24
24
  ensureDir,
25
+ ensureRealDir,
25
26
  isDryRun,
27
+ removePipelineAgentFiles,
26
28
  wipeDir,
27
29
  writeFile,
28
30
  } from "./_common.mjs";
@@ -61,17 +63,55 @@ export function installCopilot(ctx) {
61
63
  installSkills({ pipelineSrc, dest: COPILOT_SKILLS, indexOnly, useSymlinks, platformFlag });
62
64
  }
63
65
 
66
+ /** Start of the pipeline-managed span in copilot-instructions.md. */
67
+ export const INSTRUCTIONS_START_MARKER = "# Multi-Agent Development Pipeline";
68
+
69
+ /**
70
+ * Explicit end marker written after the pipeline section (v11.4.1+). Updates
71
+ * replace only the start..end span, so anything the user appends AFTER the
72
+ * pipeline section survives. Pre-marker files fall back to
73
+ * `legacyTrailingContent` bounding.
74
+ */
75
+ export const INSTRUCTIONS_END_MARKER =
76
+ "<!-- multi-agent-pipeline:copilot-instructions:end -->";
77
+
78
+ /**
79
+ * Legacy files (written before the end marker existed) have no explicit
80
+ * terminator. Bound the pipeline span at the next top-level "# " heading
81
+ * after the start marker when one exists OUTSIDE fenced code blocks (the
82
+ * pipeline body carries bash comments like "# Bootstrap once ..." inside
83
+ * fences that must not be mistaken for headings); otherwise the span runs
84
+ * to EOF, which matches the pre-marker behavior.
85
+ *
86
+ * @param {string} section - file content from the start marker onward
87
+ * @returns {string} user content trailing the pipeline span ("" if none)
88
+ */
89
+ export function legacyTrailingContent(section) {
90
+ const lines = section.split("\n");
91
+ let inFence = false;
92
+ for (let i = 1; i < lines.length; i++) {
93
+ if (/^\s*(```|~~~)/.test(lines[i])) {
94
+ inFence = !inFence;
95
+ continue;
96
+ }
97
+ if (!inFence && /^# /.test(lines[i])) return lines.slice(i).join("\n");
98
+ }
99
+ return "";
100
+ }
101
+
64
102
  function writeInstructionsFile(path) {
65
103
  const pipelineSection = generateCopilotInstructions();
104
+ const managedBlock =
105
+ pipelineSection.trimEnd() + "\n\n" + INSTRUCTIONS_END_MARKER + "\n";
66
106
 
67
107
  if (!existsSync(path)) {
68
- writeFile(path, pipelineSection + "\n");
108
+ writeFile(path, managedBlock);
69
109
  console.log(" -> Created copilot-instructions.md with pipeline");
70
110
  return;
71
111
  }
72
112
 
73
113
  let existing = readFileSync(path, "utf-8");
74
- const marker = "# Multi-Agent Development Pipeline";
114
+ const marker = INSTRUCTIONS_START_MARKER;
75
115
 
76
116
  // Drift cleanup (v5.6.2): detect pre-v5.0 pipeline sections that predate
77
117
  // the stable marker and strip them. These blocks ("## Multi-Agent Task
@@ -103,12 +143,26 @@ function writeInstructionsFile(path) {
103
143
  }
104
144
 
105
145
  if (existing.includes(marker)) {
106
- const before = existing.split(marker)[0].trimEnd();
107
- writeFile(path, before + "\n\n" + pipelineSection + "\n");
146
+ const startIdx = existing.indexOf(marker);
147
+ const before = existing.slice(0, startIdx).trimEnd();
148
+ const fromStart = existing.slice(startIdx);
149
+ // Replace only the start..end span. User content appended AFTER the
150
+ // pipeline section (below the end marker, or below the next top-level
151
+ // heading in legacy files) is preserved.
152
+ const endIdx = fromStart.indexOf(INSTRUCTIONS_END_MARKER);
153
+ const trailing =
154
+ endIdx >= 0
155
+ ? fromStart.slice(endIdx + INSTRUCTIONS_END_MARKER.length)
156
+ : legacyTrailingContent(fromStart);
157
+ let out = before.length > 0 ? before + "\n\n" : "";
158
+ out += managedBlock;
159
+ const trailingClean = trailing.replace(/^[\r\n]+/, "").trimEnd();
160
+ if (trailingClean.length > 0) out += "\n" + trailingClean + "\n";
161
+ writeFile(path, out);
108
162
  const suffix = cleaned ? " (also scrubbed pre-v5.0 drift section)" : "";
109
163
  console.log(` -> Updated existing pipeline section in copilot-instructions.md${suffix}`);
110
164
  } else {
111
- writeFile(path, existing.trimEnd() + "\n\n" + pipelineSection + "\n");
165
+ writeFile(path, existing.trimEnd() + "\n\n" + managedBlock);
112
166
  console.log(" -> Appended pipeline section to copilot-instructions.md");
113
167
  }
114
168
  }
@@ -117,6 +171,9 @@ function installScripts(pipelineSrc, dest, useSymlinks) {
117
171
  console.log(" [Copilot CLI] Installing scripts...");
118
172
  const scriptsSrc = join(pipelineSrc, "scripts");
119
173
  if (!existsSync(scriptsSrc)) return;
174
+ // Replace a --link-era symlink with a real dir before wiping/copying so the
175
+ // install can never land inside the developer's repo checkout.
176
+ if (!useSymlinks) ensureRealDir(dest);
120
177
  wipeDir(dest);
121
178
  copyDir(scriptsSrc, dest, { exclude: DEV_ONLY_SCRIPTS, useSymlinks });
122
179
  // Count files actually excluded, not the array length: DEV_ONLY_SCRIPTS mixes
@@ -133,7 +190,13 @@ function installAgents(pipelineSrc, dest, useSymlinks) {
133
190
  console.log(" [Copilot CLI] Installing agent definitions...");
134
191
  const agentsSrc = join(pipelineSrc, "agents");
135
192
  if (!existsSync(agentsSrc)) return;
136
- wipeDir(dest);
193
+ // ~/.copilot/agents also holds user-authored agent files. Never wipe the
194
+ // whole dir; remove only the pipeline-shipped agent files (name set derived
195
+ // from the source tree so it cannot go stale), then copy the fresh set in.
196
+ if (!useSymlinks) {
197
+ ensureRealDir(dest);
198
+ removePipelineAgentFiles(dest, agentsSrc);
199
+ }
137
200
  copyDir(agentsSrc, dest, { useSymlinks });
138
201
  console.log(` -> ${countFiles(agentsSrc)} files copied to ${dest}`);
139
202
  }
@@ -142,6 +205,7 @@ function installSchemas(pipelineSrc, dest, useSymlinks) {
142
205
  console.log(" [Copilot CLI] Installing JSON schemas...");
143
206
  const schemasSrc = join(pipelineSrc, "schemas");
144
207
  if (!existsSync(schemasSrc)) return;
208
+ if (!useSymlinks) ensureRealDir(dest);
145
209
  wipeDir(dest);
146
210
  copyDir(schemasSrc, dest, { useSymlinks });
147
211
  console.log(` -> ${countFiles(schemasSrc)} files copied to ${dest}`);
@@ -151,6 +215,7 @@ function installLib(pipelineSrc, dest, useSymlinks) {
151
215
  console.log(" [Copilot CLI] Installing shell libraries...");
152
216
  const libSrc = join(pipelineSrc, "lib");
153
217
  if (!existsSync(libSrc)) return;
218
+ if (!useSymlinks) ensureRealDir(dest);
154
219
  wipeDir(dest);
155
220
  copyDir(libSrc, dest, { useSymlinks });
156
221
  console.log(` -> ${countFiles(libSrc)} files copied to ${dest}`);
@@ -160,6 +225,10 @@ function installSkills(opts) {
160
225
  const { pipelineSrc, dest, indexOnly, useSymlinks, platformFlag } = opts;
161
226
  console.log(" [Copilot CLI] Installing skills...");
162
227
 
228
+ // Same symlink guard as the other owned trees: never prune or copy through
229
+ // a --link-era symlink into the repo checkout.
230
+ if (!useSymlinks) ensureRealDir(dest);
231
+
163
232
  if (indexOnly) {
164
233
  try {
165
234
  mkdirSync(dest, { recursive: true });
package/install/index.mjs CHANGED
@@ -11,9 +11,12 @@
11
11
  import { dirname } from "path";
12
12
  import { fileURLToPath } from "url";
13
13
 
14
+ import { readFileSync } from "fs";
15
+ import { join } from "path";
16
+
14
17
  import { installClaude } from "./claude.mjs";
15
18
  import { installCopilot } from "./copilot.mjs";
16
- import { setDryRun } from "./_common.mjs";
19
+ import { setDryRun, writeFile } from "./_common.mjs";
17
20
  import { sendInstallTelemetry } from "./_telemetry.mjs";
18
21
 
19
22
  const __dirname = dirname(fileURLToPath(import.meta.url));
@@ -95,6 +98,10 @@ export async function runInstall(argv) {
95
98
  if (forClaude) installClaude(installerCtx);
96
99
  if (forCopilot) installCopilot(installerCtx);
97
100
 
101
+ // Version marker: update-check.sh falls back to this for npx-only installs
102
+ // that have no pipeline repo clone to read a version from.
103
+ writeVersionMarkers({ home: HOME, forClaude, forCopilot });
104
+
98
105
  if (dryRun) {
99
106
  console.log("");
100
107
  console.log(" Dry-run complete — nothing was written. Re-run without --dry-run to install.");
@@ -108,6 +115,32 @@ export async function runInstall(argv) {
108
115
  sendInstallTelemetry({ packageRoot: PIPELINE_ROOT, flags });
109
116
  }
110
117
 
118
+ /**
119
+ * Stamp the installed package version into each target so the advisory
120
+ * update check works without a repo clone. Failure is non-fatal.
121
+ *
122
+ * @param {{home: string, forClaude: boolean, forCopilot: boolean}} opts
123
+ */
124
+ export function writeVersionMarkers({ home, forClaude, forCopilot }) {
125
+ let version;
126
+ try {
127
+ version = JSON.parse(readFileSync(join(PIPELINE_ROOT, "package.json"), "utf-8")).version;
128
+ } catch {
129
+ return;
130
+ }
131
+ if (!version) return;
132
+ const targets = [];
133
+ if (forClaude) targets.push(join(home, ".claude", ".pipeline-version"));
134
+ if (forCopilot) targets.push(join(home, ".copilot", ".pipeline-version"));
135
+ for (const target of targets) {
136
+ try {
137
+ writeFile(target, `${version}\n`);
138
+ } catch {
139
+ // advisory only - never fail the install over the marker
140
+ }
141
+ }
142
+ }
143
+
111
144
  /**
112
145
  * @param {string[]} flags
113
146
  * @returns {"ios"|"android"|"all"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mmerterden/multi-agent-pipeline",
3
- "version": "11.4.0",
3
+ "version": "12.0.0",
4
4
  "description": "8-phase AI development pipeline with full orchestration on Claude Code and Copilot CLI. Analysis, planning, TDD, CLI-aware parallel review with consensus surfacing + Fable triage, default-FAIL evidence gates, secret + intent guards, per-phase cost ledger, persistent learnings memory, wiki generation, commit automation. Token-preserving uninstall.",
5
5
  "type": "module",
6
6
  "main": "index.js",
@@ -18,7 +18,8 @@
18
18
  "test:unit": "node --test test/*.test.mjs",
19
19
  "test:smoke": "node pipeline/scripts/run-smokes.mjs",
20
20
  "lint:skills": "node pipeline/scripts/lint-skills.mjs",
21
- "test:coverage": "c8 --reporter=text --reporter=lcov node --test test/*.test.mjs && c8 report",
21
+ "test:quick": "node --test test/*.test.mjs && node pipeline/scripts/lint-skills.mjs",
22
+ "test:coverage": "c8 --check-coverage --reporter=text --reporter=lcov node --test test/*.test.mjs && c8 report",
22
23
  "lint": "eslint .",
23
24
  "lint:fix": "eslint . --fix",
24
25
  "format": "prettier --write \"**/*.{js,mjs,json,md,yml}\" --ignore-path .gitignore",
@@ -69,17 +70,10 @@
69
70
  "README.md",
70
71
  "CHANGELOG.md",
71
72
  "LICENSE",
72
- "!pipeline/scripts/figma-placeholder-map.json",
73
- "!pipeline/scripts/sync-figma-source.sh",
74
- "!pipeline/scripts/import-figma-skills.sh",
75
- "!pipeline/scripts/smoke-figma-skill-import.sh",
76
73
  "!pipeline/scripts/smoke-figma-config-schema.sh",
77
74
  "!pipeline/scripts/smoke-personal-data.sh",
78
75
  "!pipeline/scripts/smoke-install-leak-gate.sh",
79
- "!pipeline/scripts/README-figma-smokes.md",
80
- "!pipeline/scripts/.last-figma-sync-plan.json",
81
- "!docs/GENERICITY-REVIEW.md",
82
- "!docs/STABILITY-FIX-PLAN.md"
76
+ "!docs/internal/**"
83
77
  ],
84
78
  "devDependencies": {
85
79
  "@eslint/js": "^10.0.1",
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  description: "Task orchestrator - full pipeline via Jira ID + branch or GitHub Issue URL: analysis, plan, TDD development, parallel review + Fable triage (CLI-aware: 2-model on Claude Code, 3-model on Copilot CLI), commit, log"
3
+ description-tr: "Görev orkestratörü - Jira ID + branch veya GitHub Issue URL ile tam pipeline: analiz, plan, TDD geliştirme, paralel review + Fable triyajı (CLI'ya göre: Claude Code'da 2, Copilot CLI'da 3 model), commit, log"
3
4
  allowed-tools: Agent, Bash, Read, Write, Edit, Glob, Grep, TaskCreate, TaskUpdate, TaskList, TaskGet, AskUserQuestion, WebFetch, WebSearch, NotebookEdit, Skill
4
5
  ---
5
6
 
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  description: "Standalone feature-spec analysis. Platform-agnostic concept layer with repo-driven convention extraction (Phase 1c) and per-platform Pass B render. 23 main sections + 3 footer in Full mode; 7 sections in Lite mode (auto for small features). Collects Figma / Swagger / Confluence / Jira / Standards (Confluence + Wiki + local file) / Firebase / repo inputs. Stops after emit - does not chain into /multi-agent:dev."
3
+ description-tr: "Bağımsız özellik-spesifikasyonu analizi. Repo'dan konvansiyon çıkarımıyla (Faz 1c) platform-bağımsız kavram katmanı ve platform başına Pass B render. Full modda 23 ana + 3 dipnot bölümü; Lite modda 7 bölüm (küçük işlerde otomatik). Figma / Swagger / Confluence / Jira / Standartlar (Confluence + Wiki + yerel dosya) / Firebase / repo girdilerini toplar. Çıktıyı üretince durur - /multi-agent:dev'e zincirlenmez."
3
4
  argument-hint: "[\"<analysis-name>\"] [--lite | --full] [--no-cache] [--preview-conventions]"
4
5
  ---
5
6
 
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  description: "Resolve the Section 20 Risks and Open Questions of an analysis v3 document one row at a time. Proposes up to 3 source-labeled answer candidates per row (from evidence / from repo / AI reasoned), merges the chosen answer into the target body section, and updates the doc in place with a Section 23 changelog bump. Companion to /multi-agent:analysis - same Locked decisions apply (citation discipline, humanizer punctuation, no MCP, no auto-commit). Optional sibling propagation for per-platform file sets."
3
+ description-tr: "Analiz v3 dokümanının Bölüm 20 Riskler ve Açık Sorular satırlarını tek tek çözer. Satır başına en fazla 3 kaynak-etiketli cevap adayı önerir (kanıttan / repodan / AI çıkarımı), seçilen cevabı ilgili gövde bölümüne işler ve dokümanı Bölüm 23 changelog artışıyla yerinde günceller. /multi-agent:analysis'in eşlikçisi - aynı Kilitli kararlar geçerli (alıntı disiplini, humanizer noktalama, MCP yok, otomatik commit yok). Platform bazlı dosya setleri için isteğe bağlı kardeş yayılımı."
3
4
  argument-hint: "[path/to/analysis/<feature>-<platform>.md] [--autonomous]"
4
5
  ---
5
6
 
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  description: "Launch any task in autopilot mode: skips every confirmation, runs end-to-end autonomously."
3
+ description-tr: "Herhangi bir görevi autopilot modunda başlatır: tüm onayları atlar, uçtan uca otonom çalışır."
3
4
  argument-hint: '"task" - issue URL, Jira ID, free-text, or #id (for resume)'
4
5
  ---
5
6
 
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  description: "Thin wrapper that dispatches to xcode-build-orchestrator on iOS projects. Benchmarks current Xcode build, runs compilation / project / SPM analyzers, produces a recommend-first optimization plan, and re-benchmarks after the developer approves changes."
3
+ description-tr: "iOS projelerinde xcode-build-orchestrator'a delege eden ince sarmalayıcı. Mevcut Xcode build'ini ölçer, derleme / proje / SPM analizlerini koşar, önce-öneri yaklaşımlı bir optimizasyon planı üretir ve geliştirici onayından sonra yeniden ölçer."
3
4
  argument-hint: "(none - operates on current repo)"
4
5
  ---
5
6
 
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  description: "Multi-channel reporter - Jira/Confluence/Wiki/PR description/Board status. Multi-select channels + content, humanizer pass, reviewer-preserving Bitbucket PR PUT, GitHub Projects v2 board status move. Phase 7 delegates to this skill; users can invoke post-hoc by Jira ID / PR URL / branch."
3
+ description-tr: "Çok kanallı raporlayıcı - Jira/Confluence/Wiki/PR açıklaması/Board durumu. Çoklu kanal + içerik seçimi, humanizer geçişi, reviewer'ı koruyan Bitbucket PR PUT, GitHub Projects v2 board durum taşıma. Faz 7 bu skill'e delege eder; Jira ID / PR URL / branch ile sonradan da çağrılabilir."
3
4
  argument-hint: '<Jira-id | PR-url | #N | Jira-url> [--channels pr,jira,confluence,wiki,board] [--content normal,technical,test,auto-diff,note] [--message "..."] [--message-file path] [--board-status <key>] [--dry-run] [--append] [--ready]'
4
5
  allowed-tools: Read, Write, Edit, Bash, Grep, WebFetch, AskUserQuestion
5
6
  ---
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  description: "Create a standards-compliant Jira issue (Task / Bug / Story): asks the type, mines project conventions, drafts from a standard template with auto-sizing sections, full preview + explicit approval before create."
3
+ description-tr: "Standartlara uygun Jira issue oluşturur (Task / Bug / Story): türü sorar, proje konvansiyonlarını çıkarır, otomatik boyutlanan bölümlerle standart şablondan taslak hazırlar, oluşturmadan önce tam önizleme + açık onay alır."
3
4
  argument-hint: "[\"<free-text description>\"] [figma-url] [swagger-url] - all optional, asked interactively when missing"
4
5
  ---
5
6
 
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  description: "Fast development mode: Init → Dev (Opus) → Test → Commit → Report. Analysis, planning, and review phases are skipped."
3
+ description-tr: "Hızlı geliştirme modu: Init → Dev (Opus) → Test → Commit → Report. Analiz, planlama ve review fazları atlanır."
3
4
  ---
4
5
 
5
6
  # multi-agent dev - Fast Development Mode (--dev)
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  description: "Fastest mode: Dev (Opus) plus Autopilot. Init → Dev → Commit → Report with zero confirmations."
3
+ description-tr: "En hızlı mod: Dev (Opus) + Autopilot. Init → Dev → Commit → Report, sıfır onay."
3
4
  ---
4
5
 
5
6
  # multi-agent dev autopilot - Fastest Path
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  description: "Fast mode + local - Init → Dev(Opus) → Commit → Report, no worktree."
3
+ description-tr: "Hızlı mod + lokal - Init → Dev(Opus) → Commit → Report, worktree yok."
3
4
  allowed-tools: Agent, Bash, Read, Write, Edit, Glob, Grep, TaskCreate, TaskUpdate, TaskList, TaskGet, AskUserQuestion, WebFetch, Skill
4
5
  ---
5
6
 
@@ -20,7 +21,7 @@ Phase 7: Report → Jira / Wiki + log + knowledge/memory
20
21
 
21
22
  `--dev local` skips Phase 1 (Analysis), Phase 2 (Planning + Approval Gate), Phase 4 (Review), and Phase 5 (User Test - local/autopilot variants skip the interactive test gate). It differs from `--dev` on two axes: no git worktree is created (development happens directly on the current branch in `$PROJECT_ROOT`), and the interactive User Test phase is skipped.
22
23
 
23
- > **Want the quality tail afterwards?** Since this mode skips Review + Test, run [`/multi-agent:finish`](./finish.md) on the same branch when you're done to add parallel review, a build+test success gate, PR, and a Jira technical-analysis + test-scenario comment - without re-developing.
24
+ > **Want the quality tail afterwards?** Since this mode skips Review + Test, run [`/multi-agent:finish`](../finish/SKILL.md) on the same branch when you're done to add parallel review, a build+test success gate, PR, and a Jira technical-analysis + test-scenario comment - without re-developing.
24
25
 
25
26
  ## When to use it
26
27
 
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  description: "Fastest + local - Dev(Opus) + autopilot, no worktree, zero interaction."
3
+ description-tr: "En hızlı + lokal - Dev(Opus) + autopilot, worktree yok, sıfır etkileşim."
3
4
  allowed-tools: Agent, Bash, Read, Write, Edit, Glob, Grep, TaskCreate, TaskUpdate, TaskList, TaskGet, WebFetch, Skill
4
5
  ---
5
6
 
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  description: "Map Phase 4 triage findings to branch diff lines. Read-only post-hoc command, used after review to answer 'which finding lines up with which code change'."
3
+ description-tr: "Faz 4 triyaj bulgularını branch diff satırlarına eşler. Review sonrası kullanılan salt-okunur komut: hangi bulgu hangi kod değişikliğine denk geliyor sorusunu cevaplar."
3
4
  argument-hint: "[#task-id | --triage <path> | --state <path>] [--branch <name>] [--base <name>]"
4
5
  ---
5
6
 
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  description: "Continue already-done LOCAL work through the pipeline tail: Review → Build+Test → Commit/PR → Report (technical analysis + Jira test-scenario comment). No dev phase."
3
+ description-tr: "Halihazırda bitmiş LOKAL işi pipeline kuyruğundan geçirir: Review → Build+Test → Commit/PR → Report (teknik analiz + Jira test-senaryosu yorumu). Dev fazı yok."
3
4
  allowed-tools: Agent, Bash, Read, Write, Edit, Glob, Grep, TaskCreate, TaskUpdate, TaskList, TaskGet, AskUserQuestion, WebFetch, WebSearch, Skill
4
5
  ---
5
6
 
@@ -1,5 +1,6 @@
1
1
  ---
2
- description: "Sweep leftover /tmp scratch (picker state, review diffs, channel payloads, analysis drafts) from past runs. Dry-run first; confirms before deleting."
2
+ description: "Sweep leftover /tmp scratch (picker state, review diffs, channel payloads, analysis drafts) and worktree residue (orphan .worktrees dirs, gitlink index entries) from past runs. Dry-run first; confirms before deleting."
3
+ description-tr: "Geçmiş çalışmalardan kalan /tmp scratch'ini (picker durumu, review diff'leri, kanal payload'ları, analiz taslakları) ve worktree kalıntılarını (sahipsiz .worktrees klasörleri, gitlink index kayıtları) süpürür. Önce dry-run; silmeden önce onay alır."
3
4
  argument-hint: "[--older-than=<minutes>] [--yes] - dry-run unless confirmed"
4
5
  ---
5
6
 
@@ -48,11 +49,36 @@ deletes nothing until you confirm.
48
49
  5. **Report** - echo the `══ garbage-collect: removed N item(s), freed ~X ══`
49
50
  summary line.
50
51
 
52
+ 6. **Worktree residue sweep (second phase)** - when the current directory is
53
+ a git repo, also preview worktree leftovers:
54
+
55
+ ```bash
56
+ bash $HOME/.claude/scripts/gc-worktrees.sh ${ARGUMENTS}
57
+ ```
58
+
59
+ This covers: stale worktree admin entries (`git worktree prune`, applied
60
+ immediately - it only drops bookkeeping for dirs that are already gone),
61
+ orphan `.worktrees/*` dirs no longer registered as worktrees, gitlink
62
+ residue in the index (`.worktrees/{id}` recorded as a "Subproject commit"
63
+ entry by a pre-guard `git add -A`), and a missing `.worktrees/` line in
64
+ `.git/info/exclude`. Registered, healthy worktrees are NEVER touched -
65
+ those belong to `/multi-agent:finish` / `/multi-agent:kill`.
66
+
67
+ - Output says `nothing to do` -> skip silently, no question.
68
+ - Otherwise surface a second `AskUserQuestion` (in `outputLanguage`):
69
+ `question`: "Apply the listed worktree cleanups?" (include the dry-run
70
+ lines), `header`: "Worktrees", options `{ label: "Apply cleanups" }` /
71
+ `{ label: "Cancel", description: "Keep everything, change nothing" }`.
72
+ - On confirm, re-run with `--yes` and echo its summary line. If a gitlink
73
+ was unstaged, remind the user the removal still needs a commit.
74
+
51
75
  ## Notes
52
76
 
53
77
  - An in-flight analysis keeps its drafts in `/tmp/analysis-<slug>-<timestamp>/`
54
78
  and `/multi-agent:resume` re-uses them. If a run is paused at
55
79
  `awaiting_output_decision`, pass `--older-than=<minutes>` so fresh drafts are
56
80
  spared, or finish the run first.
57
- - This only touches `/tmp` scratch. Persistent per-task logs live under
58
- `~/.claude/logs/multi-agent/` and are cleaned by `/multi-agent:prune-logs`.
81
+ - The /tmp phase only touches `/tmp` scratch; the worktree phase only touches
82
+ the current repo's `.worktrees/` residue and index. Persistent per-task logs
83
+ live under `~/.claude/logs/multi-agent/` and are cleaned by
84
+ `/multi-agent:prune-logs`.
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  description: "Multi-agent pipeline usage guide - renders in EN or TR per prefs.global.outputLanguage (falls back to promptLanguage for backward compatibility)."
3
+ description-tr: "Multi-agent pipeline kullanım kılavuzu - prefs.global.outputLanguage'e göre EN veya TR render edilir (geriye uyumluluk için promptLanguage'e düşer)."
3
4
  ---
4
5
 
5
6
  # multi-agent help
@@ -126,7 +127,7 @@ Setup & Maintenance:
126
127
  /multi-agent:stack <id> Select stack by enabling the matching marketplace plugin(s) (ios / android / mobile / backend / frontend / fullstack / all)
127
128
  /multi-agent:sync Sync ecosystem (Claude Code + Copilot CLI + pipeline + website)
128
129
  /multi-agent:update Pull latest pipeline + reinstall + run migrations
129
- /multi-agent:delete Uninstall pipeline from every CLI (Keychain tokens left intact, double confirm)
130
+ /multi-agent:uninstall Uninstall pipeline from every CLI (--all-data also clears settings + logs; Keychain tokens always intact, double confirm)
130
131
 
131
132
  ------------------------------------------------------------
132
133
 
@@ -340,7 +341,7 @@ Setup & Maintenance:
340
341
  /multi-agent:stack <id> Stack'i eşleşen marketplace plugin'i etkinleştirerek seç (ios / android / mobile / backend / frontend / fullstack / all)
341
342
  /multi-agent:sync Ekosistemi senkronize et (Claude Code + Copilot CLI + pipeline + website)
342
343
  /multi-agent:update En son pipeline'ı çek + reinstall + migration çalıştır
343
- /multi-agent:delete Pipeline'ı tüm CLI'lerden kaldır (Keychain token dokunulmaz, çift onay)
344
+ /multi-agent:uninstall Pipeline'ı tüm CLI'lerden kaldır (--all-data ayar + logları da siler; Keychain token her zaman dokunulmaz, çift onay)
344
345
 
345
346
  ------------------------------------------------------------
346
347
 
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  description: "List unassigned GitHub issues, pick one, auto-assign, and launch the multi-agent pipeline."
3
+ description-tr: "Atanmamış GitHub issue'larını listeler, birini seçtirir, otomatik atar ve multi-agent pipeline'ı başlatır."
3
4
  argument-hint: "[autopilot] - optional: run the pipeline without confirmations"
4
5
  ---
5
6
 
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  description: "List open Jira issues, pick one, and launch the multi-agent pipeline."
3
+ description-tr: "Açık Jira issue'larını listeler, birini seçtirir ve multi-agent pipeline'ı başlatır."
3
4
  argument-hint: "[autopilot] - optional: run the pipeline without confirmations"
4
5
  ---
5
6
 
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  description: "Stop the given task, then remove its worktree and branch. Asks for confirmation."
3
+ description-tr: "Verilen görevi durdurur, ardından worktree'sini ve branch'ini kaldırır. Onay ister."
3
4
  argument-hint: "#id - task ID to delete (e.g. #2)"
4
5
  ---
5
6
 
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  description: "Toggle outputLanguage (assistant explanations). promptLanguage is fixed to English. External payloads stay English."
3
+ description-tr: "outputLanguage'i değiştirir (asistan açıklamaları). promptLanguage İngilizce sabittir. Dış payload'lar İngilizce kalır."
3
4
  argument-hint: "[en|tr] - sets outputLanguage; omit for interactive picker; use 'output en|tr' for explicit form"
4
5
  ---
5
6
 
@@ -16,7 +17,9 @@ Two-axis language preference for the pipeline:
16
17
 
17
18
  **Why promptLanguage is fixed:** Pipeline picker UI, confirmation prompts, and error messages are authored in English to keep tooling consistent across CLIs. Mixing Turkish prompts into otherwise-English skill output looks inconsistent. Only the assistant's free-form replies follow `outputLanguage`.
18
19
 
19
- **Always English regardless of either field**: commit messages, PR titles/bodies, Jira comments, wiki pages, reviewer/triage system prompts, agent-log.md payloads, skill-picker / confirmation / error UI exposed by the CLI host.
20
+ **Always English regardless of either field**: commit messages, PR titles/bodies, Jira comments, wiki pages, reviewer/triage system prompts, agent-log.md payloads, confirmation / error UI exposed by the CLI host.
21
+
22
+ **Follows outputLanguage (localized at install/toggle time)**: the slash-command picker `description` shown by the CLI host autocomplete. Repo and npm files always keep the English `description:`; files shipping a `description-tr:` line get swapped in the INSTALLED `~/.claude/commands/multi-agent/` tree by `localize-commands.mjs` (reversible via a `description-en:` sidecar). `/multi-agent:sync` restores English before mirroring back to the repo.
20
23
 
21
24
  ## Invocations
22
25
 
@@ -73,6 +76,22 @@ jq --arg ol "$NEW_OUTPUT" '
73
76
  ' "$PREFS" > "$TMP" && mv "$TMP" "$PREFS"
74
77
  ```
75
78
 
79
+ ### Localize picker descriptions
80
+
81
+ After a successful write, swap the installed command descriptions to match the
82
+ new outputLanguage (repo files are never touched; the swap is reversible):
83
+
84
+ ```bash
85
+ if [ "$NEW_OUTPUT" = "tr" ]; then
86
+ node "$HOME/.claude/scripts/localize-commands.mjs" apply
87
+ else
88
+ node "$HOME/.claude/scripts/localize-commands.mjs" restore
89
+ fi
90
+ ```
91
+
92
+ Note: the CLI host caches the picker list per session; descriptions refresh on
93
+ the next session start.
94
+
76
95
  ### Confirmation echo
77
96
 
78
97
  Render in the **new** outputLanguage:
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  description: "Full pipeline in local mode - no worktree, runs directly on the current branch."
3
+ description-tr: "Tam pipeline lokal modda - worktree yok, doğrudan mevcut branch üzerinde çalışır."
3
4
  allowed-tools: Agent, Bash, Read, Write, Edit, Glob, Grep, TaskCreate, TaskUpdate, TaskList, TaskGet, AskUserQuestion, WebFetch, WebSearch, Skill
4
5
  ---
5
6
 
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  description: "Full pipeline + local + autopilot - no worktree, no confirmations; runs 7 phases (User Test skipped) end-to-end on the current branch."
3
+ description-tr: "Tam pipeline + lokal + autopilot - worktree yok, onay yok; 7 fazı (Kullanıcı Testi atlanır) mevcut branch üzerinde uçtan uca koşar."
3
4
  argument-hint: '"task" - issue URL, Jira ID, free-text, or #id (for resume)'
4
5
  allowed-tools: Agent, Bash, Read, Write, Edit, Glob, Grep, TaskCreate, TaskUpdate, TaskList, TaskGet, AskUserQuestion, WebFetch, WebSearch, Skill
5
6
  ---
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  description: "Show the agent-log.md for the given task. With no ID, shows the most recent task."
3
+ description-tr: "Verilen görevin agent-log.md dosyasını gösterir. ID verilmezse en son görevi gösterir."
3
4
  argument-hint: "[#id] - optional: task ID (e.g. #3). If omitted, the most recent task is used."
4
5
  ---
5
6
 
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  description: "Switch to the active task's branch and prepare it for manual testing in Xcode. Phase 5 standalone (the UI Bug Hunter lives at /multi-agent:test)."
3
+ description-tr: "Aktif görevin branch'ine geçer ve Xcode'da manuel test için hazırlar. Faz 5'in bağımsız hali (UI Bug Hunter /multi-agent:test'te)."
3
4
  ---
4
5
 
5
6
  # multi-agent manual-test - Phase 5 Manual Test Mode
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  description: "Delete per-task project logs under ~/.claude/logs/multi-agent (filter by age/project/task). Audit trail + metrics are preserved. Dry-run first; confirms before deleting."
3
+ description-tr: "~/.claude/logs/multi-agent altındaki görev bazlı proje loglarını siler (yaş/proje/görev filtresi). Denetim izi + metrikler korunur. Önce dry-run; silmeden önce onay alır."
3
4
  argument-hint: "[--older-than=<days>] [--project=<name>] [--task=<id>] [--yes]"
4
5
  ---
5
6
 
@@ -1,42 +1,45 @@
1
1
  ---
2
2
  description: "⚠️ Wipes every worktree, branch, log, and state file. Irreversible; asks for double confirmation."
3
+ description-tr: "⚠️ Tüm worktree, branch, log ve state dosyalarını siler. Geri alınamaz; çift onay ister."
3
4
  ---
4
5
 
5
6
  # multi-agent purge - Full Reset
6
7
 
7
- Reset every multi-agent state. Nuclear option - requires double confirmation.
8
+ Reset every multi-agent worktree, its local branch, and the project task
9
+ counter. Nuclear option - requires double confirmation. Backed by
10
+ `$HOME/.claude/scripts/purge.sh`, which is safe by default (dry-run, deletes
11
+ nothing until `--yes`), resolves every `rm` target strictly inside
12
+ `<repo>/.worktrees/`, and never touches the main worktree or main/master/develop.
13
+
14
+ Task log dirs are NOT purge territory - use `/multi-agent:prune-logs`. The
15
+ audit trail and metrics corpus at the log root are always preserved.
8
16
 
9
17
  ## Steps
10
18
 
11
- 1. **Scan** - find every worktree:
19
+ 1. **Preview (dry-run)** - list every worktree, branch, and the counter that
20
+ would be removed in the current repo:
12
21
  ```bash
13
- find {repo}/.worktrees/ -name "agent-state.json" -maxdepth 2
14
- ```
15
-
16
- 2. **Show the list**:
17
- ```
18
- ⚠️ WARNING - these will be deleted:
19
- - .worktrees/{JIRA-KEY}-12345/ (branch: feature/{JIRA-KEY}-12345-...)
20
- - .worktrees/{JIRA-KEY}-12345/ (branch: feature/{JIRA-KEY}-12345-...)
21
- - $HOME/.claude/logs/multi-agent/{project}/.counter
22
- Total: N worktrees, N branches
22
+ bash $HOME/.claude/scripts/purge.sh
23
23
  ```
24
+ Nothing to remove -> report "nothing to purge" and stop.
24
25
 
25
- 3. **First confirmation**: "This is irreversible. Are you sure?"
26
+ 2. **First confirmation** - native `AskUserQuestion` picker (no typed keyword),
27
+ in `outputLanguage`, including the dry-run counts:
28
+ - `question`: "Wipe the listed worktrees, branches, and counter?"
29
+ - `header`: "Purge" · `options`: `{ label: "Continue", description: "Proceed to the final confirmation" }`, `{ label: "Cancel", description: "Abort, change nothing" }`
30
+ - **Cancel** → exit.
26
31
 
27
- 4. **Second confirmation** (paranoia gate) - a native `AskUserQuestion` picker (no typed keyword):
28
- - `question`: "This is irreversible. Permanently wipe every worktree, branch, log, and state file now?" (`outputLanguage`)
29
- - `header`: "Purge" (English, <=12 chars) · `options`: `{ label: "Purge permanently", description: "Delete all worktrees, branches, logs, and state" }`, `{ label: "Cancel", description: "Abort, change nothing" }`
32
+ 3. **Second confirmation** (paranoia gate) - a second `AskUserQuestion` picker:
33
+ - `question`: "This is irreversible. Permanently wipe every worktree, branch, and state now?" (`outputLanguage`)
34
+ - `header`: "Confirm" · `options`: `{ label: "Purge permanently", description: "Delete all worktrees, branches, and the counter" }`, `{ label: "Cancel", description: "Abort, change nothing" }`
30
35
  - Anything other than **Purge permanently** → cancel.
31
36
 
32
- 5. **Delete** (per worktree):
37
+ 4. **Remote branches** - ask once whether to delete the remote branches too;
38
+ on yes, add `--delete-remote` to the apply command.
39
+
40
+ 5. **Purge** - re-run with `--yes` (plus `--delete-remote` if chosen):
33
41
  ```bash
34
- git worktree remove .worktrees/{JIRA-KEY}-{id} --force
35
- git branch -D {branch-name}
42
+ bash $HOME/.claude/scripts/purge.sh --yes
36
43
  ```
37
44
 
38
- 6. **Remote branches** - ask: "Delete the remote branches too?"
39
-
40
- 7. **Reset the counter** - remove `$HOME/.claude/logs/multi-agent/{project}/.counter`
41
-
42
- 8. **Confirm**: `🔥 Purge complete`
45
+ 6. **Report** - echo the script's summary line.
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  description: "Analyse the project: extract adapted best-practices, hunt real bugs + improvement areas, check upstream drift of derived skills, draft one plan, take approval, develop, then ask whether to sync."
3
+ description-tr: "Projeyi analiz eder: uyarlanmış best-practice'leri çıkarır, gerçek bug + iyileştirme alanlarını avlar, türetilmiş skill'lerin upstream drift'ini kontrol eder, tek plan taslağı çıkarır, onay alır, geliştirir, sonra sync isteyip istemediğini sorar."
3
4
  allowed-tools: Read, Write, Edit, Bash, Glob, Grep, Agent, AskUserQuestion, WebFetch
4
5
  ---
5
6
 
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  description: "Resume a stopped or failed task from the phase where it left off."
3
+ description-tr: "Durmuş veya hata almış bir görevi kaldığı fazdan devam ettirir."
3
4
  argument-hint: "[#id] - optional: task ID (e.g. #2). If omitted, the most recent paused task is used."
4
5
  ---
5
6