@mmerterden/multi-agent-pipeline 14.2.1 → 14.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +42 -0
- package/README.md +10 -6
- package/README.tr.md +143 -0
- package/docs/architecture.md +23 -8
- package/docs/ecosystem.md +237 -0
- package/install/_plugin-skills.mjs +16 -2
- package/install/codex.mjs +9 -4
- package/install/templates/copilot-instructions.md +12 -9
- package/package.json +1 -1
- package/pipeline/commands/multi-agent/SKILL.md +2 -2
- package/pipeline/commands/multi-agent/analysis/SKILL.md +2 -2
- package/pipeline/commands/multi-agent/autopilot/SKILL.md +6 -2
- package/pipeline/commands/multi-agent/channels/SKILL.md +15 -4
- package/pipeline/commands/multi-agent/create-jira/SKILL.md +4 -4
- package/pipeline/commands/multi-agent/dev/SKILL.md +10 -23
- package/pipeline/commands/multi-agent/dev-autopilot/SKILL.md +10 -2
- package/pipeline/commands/multi-agent/dev-local/SKILL.md +10 -24
- package/pipeline/commands/multi-agent/dev-local-autopilot/SKILL.md +10 -3
- package/pipeline/commands/multi-agent/jira/SKILL.md +13 -2
- package/pipeline/commands/multi-agent/language/SKILL.md +1 -1
- package/pipeline/commands/multi-agent/local/SKILL.md +6 -2
- package/pipeline/commands/multi-agent/local-autopilot/SKILL.md +6 -2
- package/pipeline/commands/multi-agent/log/SKILL.md +7 -1
- package/pipeline/commands/multi-agent/ship/SKILL.md +5 -1
- package/pipeline/commands/multi-agent/sync/SKILL.md +3 -3
- package/pipeline/commands/multi-agent/update/SKILL.md +1 -1
- package/pipeline/lib/extract-conventions.sh +44 -15
- package/pipeline/lib/fetch-figma-annotations.sh +8 -1
- package/pipeline/lib/fetch-fortify.sh +23 -8
- package/pipeline/lib/figma-screenshot.sh +11 -1
- package/pipeline/lib/issue-fetcher.sh +76 -9
- package/pipeline/lib/md2confluence-v3.py +16 -2
- package/pipeline/lib/plan-todos.sh +5 -2
- package/pipeline/lib/post-pr-review.sh +8 -6
- package/pipeline/lib/shadow-git.sh +50 -9
- package/pipeline/lib/submodule-detector.sh +8 -1
- package/pipeline/multi-agent-refs/_input-parser.md +1 -1
- package/pipeline/multi-agent-refs/channels/confluence.md +3 -0
- package/pipeline/multi-agent-refs/channels/issue-comment.md +2 -2
- package/pipeline/multi-agent-refs/channels/jira.md +13 -2
- package/pipeline/multi-agent-refs/channels/pr-review-actions.md +1 -1
- package/pipeline/multi-agent-refs/channels/pr.md +20 -0
- package/pipeline/multi-agent-refs/channels/wiki.md +1 -1
- package/pipeline/multi-agent-refs/cross-cli-contract.md +3 -3
- package/pipeline/multi-agent-refs/features/worktree-finalize.md +1 -1
- package/pipeline/multi-agent-refs/generate-issue.md +2 -2
- package/pipeline/multi-agent-refs/issue-jira-triad.md +3 -3
- package/pipeline/multi-agent-refs/payload-contracts.md +67 -0
- package/pipeline/multi-agent-refs/phases/modes.md +20 -0
- package/pipeline/multi-agent-refs/phases/phase-0-init.md +1 -1
- package/pipeline/multi-agent-refs/phases/phase-6-commit.md +8 -40
- package/pipeline/multi-agent-refs/phases/phase-7-report.md +5 -3
- package/pipeline/multi-agent-refs/phases.md +6 -0
- package/pipeline/multi-agent-refs/rules.md +2 -0
- package/pipeline/schemas/prefs.schema.json +1 -1
- package/pipeline/scripts/audit-log-rotate.sh +10 -0
- package/pipeline/scripts/build-stack-plugins.mjs +8 -1
- package/pipeline/scripts/check-derived-drift.mjs +13 -1
- package/pipeline/scripts/diff-explain.mjs +41 -3
- package/pipeline/scripts/diff-risk-score.mjs +72 -8
- package/pipeline/scripts/gen-mode-dispatch.mjs +1 -1
- package/pipeline/scripts/learning-curve.mjs +8 -2
- package/pipeline/scripts/output-quality-check.sh +15 -4
- package/pipeline/scripts/phase-tracker.sh +21 -8
- package/pipeline/scripts/pre-commit-check.sh +69 -22
- package/pipeline/scripts/render-agent-log-cost.sh +8 -3
- package/pipeline/scripts/render-cost-summary.sh +42 -22
- package/pipeline/scripts/render-work-summary.sh +47 -13
- package/pipeline/scripts/review-scope.mjs +1 -1
- package/pipeline/scripts/run-aggregator.mjs +38 -14
- package/pipeline/scripts/smoke-schema-validation.sh +5 -1
- package/pipeline/scripts/test-gap-scan.mjs +45 -6
- package/pipeline/scripts/uninstall.mjs +39 -4
- package/pipeline/scripts/update-issue-progress.sh +12 -16
- package/pipeline/scripts/worktree-finalize.sh +23 -2
- package/pipeline/skills/.skills-index.json +11 -2
- package/pipeline/skills/shared/README.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-autopilot/SKILL.md +4 -0
- package/pipeline/skills/shared/core/multi-agent-create-jira/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-dev/SKILL.md +4 -17
- package/pipeline/skills/shared/core/multi-agent-dev-autopilot/SKILL.md +8 -0
- package/pipeline/skills/shared/core/multi-agent-dev-local/SKILL.md +5 -18
- package/pipeline/skills/shared/core/multi-agent-dev-local-autopilot/SKILL.md +8 -0
- package/pipeline/skills/shared/core/multi-agent-language/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-local/SKILL.md +4 -0
- package/pipeline/skills/shared/core/multi-agent-local-autopilot/SKILL.md +4 -0
- package/pipeline/skills/shared/core/multi-agent-ship/SKILL.md +4 -0
- package/pipeline/skills/shared/core/multi-agent-sync/SKILL.md +2 -2
- package/pipeline/skills/shared/external/localization-reuse-map/SKILL.md +302 -0
- package/pipeline/skills/shared/external/localization-reuse-map/example-mapping.json +144 -0
- package/pipeline/skills/shared/external/localization-reuse-map/reference/format-and-output.md +156 -0
- package/pipeline/skills/shared/external/localization-reuse-map/reference/publish-and-snapshot.md +108 -0
- package/pipeline/skills/shared/external/localization-reuse-map/reference/sources-and-recipes.md +175 -0
- package/pipeline/skills/shared/external/localization-reuse-map/scripts/build-artifact.py +865 -0
- package/pipeline/skills/shared/external/localization-reuse-map/scripts/build-spreadsheet.py +335 -0
- package/pipeline/skills/shared/external/localization-reuse-map/scripts/fetch-annotations.py +344 -0
- package/pipeline/skills/shared/external/localization-reuse-map/scripts/fetch-legacy-labels.py +130 -0
- package/pipeline/skills/shared/external/localization-reuse-map/scripts/publish-confluence.py +264 -0
- package/pipeline/skills/shared/external/localization-reuse-map/scripts/render-key-shots.py +298 -0
- package/pipeline/skills/shared/external/localization-reuse-map/scripts/render-overlay.py +529 -0
- package/pipeline/skills/shared/external/localization-reuse-map/scripts/resolve-legacy-values.py +187 -0
- package/pipeline/skills/shared/external/localization-reuse-map/scripts/resolve-new-values.py +171 -0
- package/pipeline/skills/shared/external/localization-reuse-map/scripts/scan-screen-keys.py +184 -0
- package/pipeline/skills/shared/external/localization-reuse-map/scripts/snapshot-resources.sh +26 -0
- package/pipeline/skills/shared/external/localization-reuse-map/scripts/verify-map.py +173 -0
- package/pipeline/skills/skills-index.md +3 -2
|
@@ -33,17 +33,20 @@
|
|
|
33
33
|
- **Fast + Local (multi-agent-dev-local)**: Dev on current branch - no worktree
|
|
34
34
|
- **Fastest + Local (multi-agent-dev-local-autopilot)**: Dev + autopilot, no worktree
|
|
35
35
|
|
|
36
|
-
##
|
|
36
|
+
## Language axes (en/tr)
|
|
37
37
|
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
only** - e.g. the Phase 6 pre-commit local-checkout test prompt, Plan Approval Gate
|
|
41
|
-
questions, multi-repo branch picker labels, and phase-banner.sh banners (when
|
|
42
|
-
PHASE_LANG env is unset, it auto-reads prefs).
|
|
38
|
+
Two prefs, two jobs - the full matrix lives in `multi-agent-refs/rules.md`
|
|
39
|
+
"Language Application" and that file wins on any disagreement:
|
|
43
40
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
41
|
+
- `prefs.global.promptLanguage` is **locked to `en`**: every LLM-facing prompt,
|
|
42
|
+
spec file and instruction stays English.
|
|
43
|
+
- `prefs.global.outputLanguage` (set via `/multi-agent:setup` or
|
|
44
|
+
`/multi-agent:language en|tr`) drives what humans read: interactive prompts,
|
|
45
|
+
phase banners, AND the external payload **bodies** - PR description, Jira
|
|
46
|
+
comment, Confluence/Wiki pages all render in it.
|
|
47
|
+
|
|
48
|
+
Always English regardless of either pref: commit messages, branch names, PR
|
|
49
|
+
titles, code identifiers, file paths, and `AskUserQuestion` label/header.
|
|
47
50
|
|
|
48
51
|
When writing TR prompts, use the same keyword/menu numbers as EN (e.g. `[1-4]`)
|
|
49
52
|
so the user's input pattern stays language-agnostic.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mmerterden/multi-agent-pipeline",
|
|
3
|
-
"version": "14.2.
|
|
3
|
+
"version": "14.2.2",
|
|
4
4
|
"description": "8-phase AI development pipeline with full orchestration on Claude Code, Copilot CLI and Codex 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",
|
|
@@ -12,7 +12,7 @@ Parse the user input and route to the correct sub-command.
|
|
|
12
12
|
|
|
13
13
|
**Input**: $ARGUMENTS
|
|
14
14
|
|
|
15
|
-
> **Language (read FIRST)**: Before any status output, read `prefs.global.outputLanguage` from `$HOME/.claude/multi-agent-preferences.json` and render every conversational line in it. `AskUserQuestion` and external
|
|
15
|
+
> **Language (read FIRST)**: Before any status output, read `prefs.global.outputLanguage` from `$HOME/.claude/multi-agent-preferences.json` and render every conversational line in it. `AskUserQuestion` `label`/`header` stay English, but its `question` and option `description`s render in `outputLanguage`; external payload bodies follow `outputLanguage` too (identifiers, commit messages, branch names stay English). Full contract: `$HOME/.claude/multi-agent-refs/rules.md` "Language Application".
|
|
16
16
|
|
|
17
17
|
## Canonical Invocation (per CLI)
|
|
18
18
|
|
|
@@ -207,7 +207,7 @@ When the user supplies an ID/URL/free-text:
|
|
|
207
207
|
2. **Pick account** - always asked (autopilot picks default)
|
|
208
208
|
3. **Fetch issue** - `lib/issue-fetcher.sh "$INPUT"` (Jira/GitHub fetch + maturity)
|
|
209
209
|
4. **Repo picker** - only for `gh-num` (e.g. `316`) when repo is ambiguous, multi-select
|
|
210
|
-
5. **Maturity check** - blocker halts (autopilot too), warning prompt/log
|
|
210
|
+
5. **Maturity check** - blocker halts (autopilot too), warning prompt/log. For a Jira input specifically, an empty own description with a non-empty parent surfaces as `description_empty_parent_available` (warning, not blocker) - ask the tailored parent-description question from `jira/SKILL.md`'s maturity section instead of the generic "Continue?" prompt.
|
|
211
211
|
6. **Dev context** - always runs, empty submit allowed
|
|
212
212
|
7. → Interactive Launcher → Phase 0
|
|
213
213
|
|
|
@@ -543,7 +543,7 @@ options:
|
|
|
543
543
|
|
|
544
544
|
Conditional follow-ups:
|
|
545
545
|
- If `Confluence` selected: ask `header="Parent page"`, free-text via Other for the parent page key or URL. One Confluence page per platform is created under this parent, each titled `<Feature> - <Platform>`.
|
|
546
|
-
- If `Jira` selected: if Step 5 Q4 produced Jira IDs, AskUserQuestion (single-select) to pick which one; otherwise ask via Other. Per Locked decision 9 + design choice "single description with platform separators", the chosen issue receives one combined description body holding all per-platform sections under
|
|
546
|
+
- If `Jira` selected: if Step 5 Q4 produced Jira IDs, AskUserQuestion (single-select) to pick which one; otherwise ask via Other. Per Locked decision 9 + design choice "single description with platform separators", the chosen issue receives one combined description body holding all per-platform sections under `h2. Platform: <X>` separators (wiki markup - the description field does not render Markdown; conversion happens at dispatch, see Phase 4).
|
|
547
547
|
|
|
548
548
|
Result: `state.analysisSpec.outputs.requested[]`.
|
|
549
549
|
|
|
@@ -565,7 +565,7 @@ Iterate `state.analysisSpec.outputs.requested`. For each target:
|
|
|
565
565
|
|--------|--------|
|
|
566
566
|
| Local | For each per-platform draft, `cp /tmp/analysis-<feature-slug>-<ts>/<feature>-<platform>.md` into `analysis/<feature>-<platform>.md` in the matching repo's working tree. When multiple repos exist for the same platform, the file is duplicated into each and the dispatch report lists every destination. **No commit.** |
|
|
567
567
|
| Confluence | Re-humanize each per-platform draft with `formal-stakeholder` tone. One Confluence page per platform under the chosen parent, titled `<Feature> - <Platform>`. Cross-link siblings inside each page via `<ac:link><ri:page ri:content-title="<Feature> - <OtherPlatform>"/></ac:link>`. Markdown -> storage XML via `$HOME/.claude/multi-agent-refs/channels/confluence.md`. Re-emit on existing pages uses PUT with version bump. |
|
|
568
|
-
| Jira | Re-humanize the combined body with `informal-technical` tone. Concatenate per-platform drafts under
|
|
568
|
+
| Jira | Re-humanize the combined body with `informal-technical` tone. Concatenate per-platform drafts under `h2. Platform: iOS`, `h2. Platform: Android`, `h2. Platform: Backend`, `h2. Platform: Frontend` separators (in the order platforms were selected), then run the whole body through the markdown → Jira wiki conversion table in `$HOME/.claude/multi-agent-refs/channels/jira.md` - the `description` field renders wiki markup, so raw `##`/`**`/backticks arrive as literal text. Write with `PUT /rest/api/2/issue/{key}` body `{"fields": {"description": <converted body>}}` (`channels/jira.md` documents only the comment POST; the description update is this PUT). Same rawfile + `--data-binary` transport rules. |
|
|
569
569
|
|
|
570
570
|
**Output capture**: fill `state.analysisSpec.outputs.localPaths[]` (one entry per per-platform-per-repo write), `outputs.confluencePageUrls[]` (one entry per platform), `outputs.jiraIssueKey` (single string).
|
|
571
571
|
|
|
@@ -8,7 +8,7 @@ argument-hint: '"task" - issue URL, Jira ID, free-text, or #id (for resume)'
|
|
|
8
8
|
|
|
9
9
|
**Input**: $ARGUMENTS
|
|
10
10
|
|
|
11
|
-
> **Language (read FIRST)**: Before any status output, read `prefs.global.outputLanguage` and render every conversational line in it. `AskUserQuestion` and external
|
|
11
|
+
> **Language (read FIRST)**: Before any status output, read `prefs.global.outputLanguage` and render every conversational line in it. `AskUserQuestion` `label`/`header` stay English, but its `question` and option `description`s render in `outputLanguage`; external payload bodies follow `outputLanguage` too (identifiers, commit messages, branch names stay English). Full contract: `$HOME/.claude/multi-agent-refs/rules.md` "Language Application".
|
|
12
12
|
|
|
13
13
|
Run the task end-to-end with no confirmations.
|
|
14
14
|
|
|
@@ -49,6 +49,10 @@ Run the task end-to-end with no confirmations.
|
|
|
49
49
|
2. **Set the autopilot flag** - write `"autopilot": true` to `agent-state.json`
|
|
50
50
|
3. **Launch the multi-agent pipeline** - every confirmation is skipped
|
|
51
51
|
4. **On error** - after 3 failed retries, pause and ask the user
|
|
52
|
+
## Required: outward-facing payload contracts
|
|
53
|
+
|
|
54
|
+
Before writing anything outward-facing - PR body, Jira comment, Confluence page, closing report - load `$HOME/.claude/multi-agent-refs/payload-contracts.md`. It names the canonical section set for each payload, the markup dialect per surface (PR body is Markdown, Jira is wiki markup - mixing them is a defect), and the token/duration numbers the closing report must carry. Improvising a payload shape from memory is the most common failure of the short modes.
|
|
55
|
+
|
|
52
56
|
## Required: Phase Tracker Contract
|
|
53
57
|
|
|
54
58
|
**The phase tracker is mandatory** - the agent cannot skip it. Full spec: [`$HOME/.claude/multi-agent-refs/tracker-contract.md`]($HOME/.claude/multi-agent-refs/tracker-contract.md).
|
|
@@ -72,7 +76,7 @@ bash $HOME/.claude/scripts/phase-tracker.sh update 0 in_progress
|
|
|
72
76
|
bash $HOME/.claude/scripts/phase-tracker.sh update <N> in_progress|completed|failed|skipped
|
|
73
77
|
|
|
74
78
|
# After every LLM call (every CLI):
|
|
75
|
-
bash $HOME/.claude/scripts/phase-tracker.sh tokens <N> <in> <out>
|
|
79
|
+
bash $HOME/.claude/scripts/phase-tracker.sh tokens <N> <in> <out> [cached]
|
|
76
80
|
```
|
|
77
81
|
|
|
78
82
|
### Visual channel - Claude Code (native TaskList widget, required)
|
|
@@ -138,7 +138,7 @@ Then 3b renders:
|
|
|
138
138
|
- "Teknik analiz" unselectable if no Phase 2 planning log AND no PR diff available. Reason: `"(no technical source - need Phase 2 plan or PR diff)"`.
|
|
139
139
|
- "Auto-diff" unselectable if no PR found. Reason: `"(no PR linked to this target)"`.
|
|
140
140
|
- "Manuel not" always available.
|
|
141
|
-
- "Cost özeti" unselectable if `phase-tracker.sh
|
|
141
|
+
- "Cost özeti" unselectable if `phase-tracker.sh cost total` prints `-` (no priced token tallies; there is no `status` action) AND no `otel-spans.jsonl` exists for the task. Reason: `"(no tracker data - set MULTI_AGENT_OTEL_SPANS=1 or enable token tracking)"`.
|
|
142
142
|
- "Yapılan iş özeti" unselectable if no `agent-state.json` exists for the task (post-hoc call with `--branch` + `--base-branch` flags restores partial availability). Reason: `"(no agent-state.json for {taskId})"`. **Auto-ticked** when Step 3a preview was shown - user can still uncheck before confirming the menu.
|
|
143
143
|
|
|
144
144
|
**Defaults (first run):** PR + Jira ticked, Confluence + Wiki unticked. Content: auto-diff if pipeline log missing; otherwise normal-analiz + test-senaryoları.
|
|
@@ -246,7 +246,7 @@ Emitted only when `reportContent.workSummary === true` and at least one of (`age
|
|
|
246
246
|
2. **Scope delivered** - Phase 2 `planTodos[]` / `tasks[]` rendered as `✅` (status=done) or `⏳` (anything else) rows. Task id + title shown; `(deferred - rationale)` appended if the task's `status` is `"deferred"`.
|
|
247
247
|
3. **Changed files** - `git -C $WORKTREE diff --numstat $baseBranch...HEAD`. Shows `` `path` (+add / -del) `` per row, capped at 20 with a `_... +N more files not shown_` footer when exceeded. Total adds/dels + file count in section header.
|
|
248
248
|
4. **Review outcome** - from `reviewConsensus` (pre-v6.1) or `phases["4"].triage`: `{accepted} accepted · {deferred} deferred · {rejected} rejected · approved={bool}`. Hidden entirely when all three buckets are empty (normal for `--dev` / `dev-autopilot` runs that skip Phase 4).
|
|
249
|
-
5. **Phase tick strip** - single line from `
|
|
249
|
+
5. **Phase tick strip** - single line from the tracker state (`render-work-summary.sh` resolves worktree/artifacts copies, then `$HOME/.claude/logs/multi-agent/{taskId}/tracker-state.json`): `0 Init ✅ · 1 Analysis ✅ · 2 Planning ✅ · 3 Dev ✅ · 4 Review ✅ · 5 Test ⏭ · 6 Commit ✅ · 7 Report ▶`. Marks: `✅` completed · `▶` in_progress · `❌` failed · `⏭` skipped · `·` pending.
|
|
250
250
|
|
|
251
251
|
**Output template:**
|
|
252
252
|
|
|
@@ -276,7 +276,7 @@ Emitted only when `reportContent.workSummary === true` and at least one of (`age
|
|
|
276
276
|
|
|
277
277
|
Emitted only when `reportContent.costSummary === true` and tracker data is available. Source of truth is `phase-tracker.sh`:
|
|
278
278
|
|
|
279
|
-
1. **Token tallies per phase** -
|
|
279
|
+
1. **Token tallies per phase** - `render-cost-summary.sh <taskId>` resolves the tracker JSON itself: worktree candidates (`.worktrees/{taskPath}/phase-tracker.json`) first, then the standard location `$HOME/.claude/logs/multi-agent/{taskId}/tracker-state.json` that `phase-tracker.sh` actually writes. Each phase row carries `{tokens_in, tokens_out}`.
|
|
280
280
|
2. **Fallback to OTel spans** - if tracker JSON has no token columns but `otel-spans.jsonl` exists (set `MULTI_AGENT_OTEL_SPANS=1` beforehand), aggregate `phase.tokens` spans by phase ID.
|
|
281
281
|
3. **USD estimate** - uses a static price table in `$HOME/.claude/scripts/cost-table.json` (model → $/Mtok_in, $/Mtok_out). Missing model → show ` - ` for USD, never block.
|
|
282
282
|
|
|
@@ -310,7 +310,18 @@ Skipped in exactly two cases:
|
|
|
310
310
|
| Autopilot (`state.autopilot === true` or `MULTI_AGENT_AUTOPILOT=1`) | Explicit consent for side-effect creation - posts directly with prefs/flag selections, zero interaction |
|
|
311
311
|
| `--dry-run` | Already prints without posting; a question would be redundant |
|
|
312
312
|
|
|
313
|
-
**Preview render** (one block per selected channel, final body after humanizer - shown in readable Markdown, channel-specific markup conversion happens after approval)
|
|
313
|
+
**Preview render** (one block per selected channel, final body after humanizer - shown in readable Markdown, channel-specific markup conversion happens after approval).
|
|
314
|
+
|
|
315
|
+
Conversion is per-channel and two of the four channels have none. Do not reach for "the" conversion table - there is no single one:
|
|
316
|
+
|
|
317
|
+
| Channel | Conversion after approval | Table |
|
|
318
|
+
|---|---|---|
|
|
319
|
+
| PR description | **none** - posted as Markdown, verbatim | GitHub / Bitbucket / GitLab all render Markdown; see `channels/pr.md` "Markup dialect" |
|
|
320
|
+
| GitHub issue comment | **none** - posted as Markdown, verbatim | - |
|
|
321
|
+
| Jira comment | markdown → Jira wiki markup | `channels/jira.md` "Wiki markup conversion" |
|
|
322
|
+
| Confluence page | markdown → storage format | `channels/confluence.md` "Body conversion" |
|
|
323
|
+
|
|
324
|
+
Applying the Jira table to the PR body is the recurring failure of this step: it is the only *text* markup table in the doc set, so it reads as the default. It is not. A PR body containing `h2.`, `{{code}}`, or `#`-numbered lists shipped raw wiki markup to a Markdown surface.
|
|
314
325
|
|
|
315
326
|
```
|
|
316
327
|
── PR description ({repoName} #{prNumber}, replace) ─────────
|
|
@@ -10,11 +10,11 @@ argument-hint: "[\"<free-text description>\"] [figma-url] [swagger-url] - all
|
|
|
10
10
|
|
|
11
11
|
Creates exactly one Jira issue, and only after explicit approval. The issue type (Task / Bug / Story) is asked at the start of every run. No branches, no commits, no worktrees, no pipeline chaining. The draft learns the target project's conventions from its recent same-type issues (summary format, labels, components, priority norms, test-scenario style) and offers active-sprint placement when a sprint is running.
|
|
12
12
|
|
|
13
|
-
> **Language**: instruction prose here is English. AskUserQuestion `question`/`description` and the issue content (summary + description) follow `prefs.global.outputLanguage
|
|
13
|
+
> **Language**: instruction prose here is English. AskUserQuestion `question`/`description` and the issue content (summary + description) follow `prefs.global.outputLanguage`, like every other user-facing payload body (`rules.md` matrix). `label`/`header` stay English.
|
|
14
14
|
|
|
15
15
|
## Issue types
|
|
16
16
|
|
|
17
|
-
Type is chosen at step [3/
|
|
17
|
+
Type is chosen at step [3/12] via AskUserQuestion (never inferred silently). Each type has a standard template baseline; sections auto-size (see `$HOME/.claude/multi-agent-refs/generate-issue.md` for the full A/C matrix and inclusion rules).
|
|
18
18
|
|
|
19
19
|
| Type | Always-present sections | Conditional sections (included only when their trigger is present) |
|
|
20
20
|
|---|---|---|
|
|
@@ -24,11 +24,11 @@ Type is chosen at step [3/11] via AskUserQuestion (never inferred silently). Eac
|
|
|
24
24
|
|
|
25
25
|
## Flow
|
|
26
26
|
|
|
27
|
-
Read `$HOME/.claude/multi-agent-refs/generate-issue.md` and execute the
|
|
27
|
+
Read `$HOME/.claude/multi-agent-refs/generate-issue.md` and execute the 12-step shared flow. Non-negotiables restated:
|
|
28
28
|
|
|
29
29
|
- Ask the user (AskUserQuestion) for the issue type first, then about every genuinely unknown field - component, epic, priority, labels, assignee, sprint vs backlog, required custom fields.
|
|
30
30
|
- A conditional section renders only when its trigger is present (Figma URL, pasted screenshot/log, Swagger URL/contract, real Notes content). No empty placeholder headings; content the user did not supply and mining could not derive is never invented.
|
|
31
|
-
- Step [
|
|
31
|
+
- Step [9/12] full preview + approval gate always runs. `Approve` / `Edit` (loop) / `Cancel`. No bypass exists.
|
|
32
32
|
|
|
33
33
|
## Error paths
|
|
34
34
|
|
|
@@ -13,7 +13,7 @@ description-tr: "Hızlı geliştirme modu: Init → Dev (Opus) → Review → Te
|
|
|
13
13
|
> 2. **`prefs.global.outputLanguage` is user-selectable** - applies to (a) every conversational line the agent writes back, and (b) every user-facing external payload: PR description body, Jira comment, Confluence body, Wiki body.
|
|
14
14
|
>
|
|
15
15
|
> Regardless of `outputLanguage`, these stay English (interop / convention):
|
|
16
|
-
> - `AskUserQuestion`
|
|
16
|
+
> - `AskUserQuestion` `label` + `header` only (UI contract) - the `question` and each option's `description` follow `outputLanguage`; a picker whose question is English on a Turkish run is a bug, not the contract
|
|
17
17
|
> - Commit message subject/body (git convention)
|
|
18
18
|
> - Branch names (`feature/`, `bugfix/`, ...)
|
|
19
19
|
> - Code identifiers, file paths, log lines
|
|
@@ -215,6 +215,14 @@ That is the whole list. Phase 0 (Init full picker), Phase 4 (Review), Phase 5 (U
|
|
|
215
215
|
| Phase 5 User Test | ✅ | ✅ (same) |
|
|
216
216
|
| Phase 7 channels (Jira / Confluence / PR / Wiki) | ✅ | ✅ (same) |
|
|
217
217
|
| Duration | ~10-15 min | ~7-10 min |
|
|
218
|
+
## Intake warnings (`--dev` family)
|
|
219
|
+
|
|
220
|
+
Two checks belong at the top of every `--dev` run and are specified once in `$HOME/.claude/multi-agent-refs/phases/modes.md` "Intake warnings shared by the whole `--dev` family": an analysis document supplied to a mode that skips Analysis and Planning, and a branch that already carries the work (which wants `/multi-agent:ship`, not a second Dev pass). Read that section rather than reasoning about it from scratch.
|
|
221
|
+
|
|
222
|
+
## Required: outward-facing payload contracts
|
|
223
|
+
|
|
224
|
+
Before writing anything outward-facing - PR body, Jira comment, Confluence page, closing report - load `$HOME/.claude/multi-agent-refs/payload-contracts.md`. It names the canonical section set for each payload, the markup dialect per surface (PR body is Markdown, Jira is wiki markup - mixing them is a defect), and the token/duration numbers the closing report must carry. Improvising a payload shape from memory is the most common failure of the short modes.
|
|
225
|
+
|
|
218
226
|
## Required: Phase Tracker Contract
|
|
219
227
|
|
|
220
228
|
**The phase tracker is mandatory** - the agent cannot skip it. Full spec: [`$HOME/.claude/multi-agent-refs/tracker-contract.md`]($HOME/.claude/multi-agent-refs/tracker-contract.md).
|
|
@@ -236,7 +244,7 @@ bash $HOME/.claude/scripts/phase-tracker.sh update 0 in_progress
|
|
|
236
244
|
bash $HOME/.claude/scripts/phase-tracker.sh update <N> in_progress|completed|failed|skipped
|
|
237
245
|
|
|
238
246
|
# After every LLM call (every CLI):
|
|
239
|
-
bash $HOME/.claude/scripts/phase-tracker.sh tokens <N> <in> <out>
|
|
247
|
+
bash $HOME/.claude/scripts/phase-tracker.sh tokens <N> <in> <out> [cached]
|
|
240
248
|
```
|
|
241
249
|
|
|
242
250
|
### Visual channel - Claude Code (native TaskList widget, required)
|
|
@@ -279,24 +287,3 @@ bash $HOME/.claude/scripts/phase-tracker.sh render
|
|
|
279
287
|
```
|
|
280
288
|
|
|
281
289
|
Do NOT call TaskCreate on these CLIs - the tool does not exist and the call fails.
|
|
282
|
-
|
|
283
|
-
## Analysis doc supplied to a fast mode (warn before starting)
|
|
284
|
-
|
|
285
|
-
The `--dev` family skips Phase 1 (Analysis) and Phase 2 (Planning) by design. So when
|
|
286
|
-
the input references an analysis document - a Confluence URL, a local analysis file,
|
|
287
|
-
or the user says "I ran analysis for this" - there is **no phase that turns it into a
|
|
288
|
-
plan**. The doc becomes raw context for one Dev pass, and work comes out ordered by
|
|
289
|
-
whatever the model read first: the bottom of the dependency chain lands, the screen
|
|
290
|
-
wiring does not.
|
|
291
|
-
|
|
292
|
-
Say so before starting, once, and offer the choice:
|
|
293
|
-
|
|
294
|
-
```
|
|
295
|
-
This mode skips Analysis and Planning, so the analysis document will not be turned
|
|
296
|
-
into a task breakdown. For analysis-driven screen work, /multi-agent or
|
|
297
|
-
/multi-agent:local run both phases.
|
|
298
|
-
1. Continue with --dev (doc as context only)
|
|
299
|
-
2. Switch to the full pipeline
|
|
300
|
-
```
|
|
301
|
-
|
|
302
|
-
Autopilot picks 1 and logs the warning rather than asking.
|
|
@@ -7,7 +7,7 @@ description-tr: "En hızlı mod: Dev (Opus) + Autopilot. Init → Dev → Review
|
|
|
7
7
|
|
|
8
8
|
**Input**: $ARGUMENTS
|
|
9
9
|
|
|
10
|
-
> **Language (read FIRST)**: Before any status output, read `prefs.global.outputLanguage` and render every conversational line in it. `AskUserQuestion` and external
|
|
10
|
+
> **Language (read FIRST)**: Before any status output, read `prefs.global.outputLanguage` and render every conversational line in it. `AskUserQuestion` `label`/`header` stay English, but its `question` and option `description`s render in `outputLanguage`; external payload bodies follow `outputLanguage` too (identifiers, commit messages, branch names stay English). Full contract: `$HOME/.claude/multi-agent-refs/rules.md` "Language Application".
|
|
11
11
|
|
|
12
12
|
Dev mode + Autopilot combined: a 4-phase pipeline with no confirmations, end-to-end autonomous.
|
|
13
13
|
|
|
@@ -59,6 +59,14 @@ Phase 7: Report → short terminal summary
|
|
|
59
59
|
| Review | Parallel + triage (CLI-aware) | Parallel + triage (CLI-aware) | Parallel + triage (CLI-aware) | **Parallel + triage, auto-fix** |
|
|
60
60
|
| Blocking finding | Fix loop, then ask | Fix loop, then ask | Auto-fix, breaker at 3 | **Auto-fix, breaker at 3** |
|
|
61
61
|
| Estimated duration | ~12 min | ~7 min | ~10 min | **~5 min** |
|
|
62
|
+
## Intake warnings (`--dev` family)
|
|
63
|
+
|
|
64
|
+
Two checks belong at the top of every `--dev` run and are specified once in `$HOME/.claude/multi-agent-refs/phases/modes.md` "Intake warnings shared by the whole `--dev` family": an analysis document supplied to a mode that skips Analysis and Planning, and a branch that already carries the work (which wants `/multi-agent:ship`, not a second Dev pass). Read that section rather than reasoning about it from scratch.
|
|
65
|
+
|
|
66
|
+
## Required: outward-facing payload contracts
|
|
67
|
+
|
|
68
|
+
Before writing anything outward-facing - PR body, Jira comment, Confluence page, closing report - load `$HOME/.claude/multi-agent-refs/payload-contracts.md`. It names the canonical section set for each payload, the markup dialect per surface (PR body is Markdown, Jira is wiki markup - mixing them is a defect), and the token/duration numbers the closing report must carry. Improvising a payload shape from memory is the most common failure of the short modes.
|
|
69
|
+
|
|
62
70
|
## Required: Phase Tracker Contract
|
|
63
71
|
|
|
64
72
|
**The phase tracker is mandatory** - the agent cannot skip it. Full spec: [`$HOME/.claude/multi-agent-refs/tracker-contract.md`]($HOME/.claude/multi-agent-refs/tracker-contract.md).
|
|
@@ -82,7 +90,7 @@ bash $HOME/.claude/scripts/phase-tracker.sh update 0 in_progress
|
|
|
82
90
|
bash $HOME/.claude/scripts/phase-tracker.sh update <N> in_progress|completed|failed|skipped
|
|
83
91
|
|
|
84
92
|
# After every LLM call (every CLI):
|
|
85
|
-
bash $HOME/.claude/scripts/phase-tracker.sh tokens <N> <in> <out>
|
|
93
|
+
bash $HOME/.claude/scripts/phase-tracker.sh tokens <N> <in> <out> [cached]
|
|
86
94
|
```
|
|
87
95
|
|
|
88
96
|
### Visual channel - Claude Code (native TaskList widget, required)
|
|
@@ -6,7 +6,7 @@ allowed-tools: Agent, Bash, Read, Write, Edit, Glob, Grep, TaskCreate, TaskUpdat
|
|
|
6
6
|
|
|
7
7
|
# multi-agent dev-local - Fast + Local
|
|
8
8
|
|
|
9
|
-
> **Language (read FIRST)**: Before any status output, read `prefs.global.outputLanguage` and render every conversational line in it. `AskUserQuestion` and external
|
|
9
|
+
> **Language (read FIRST)**: Before any status output, read `prefs.global.outputLanguage` and render every conversational line in it. `AskUserQuestion` `label`/`header` stay English, but its `question` and option `description`s render in `outputLanguage`; external payload bodies follow `outputLanguage` too (identifiers, commit messages, branch names stay English). Full contract: `$HOME/.claude/multi-agent-refs/rules.md` "Language Application".
|
|
10
10
|
|
|
11
11
|
Dedicated form of the `--dev` + `--local` combination. A 4-phase fast pipeline (no worktree).
|
|
12
12
|
|
|
@@ -22,7 +22,6 @@ Phase 7: Report → Jira / Wiki + log + knowledge/memory
|
|
|
22
22
|
|
|
23
23
|
`--dev local` skips Phase 1 (Analysis), Phase 2 (Planning + Approval Gate), 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. **Review is not skipped** - Phase 4 runs its gates, resolves the criteria the dev phase was supposed to honour, reviews in parallel and triages, and accepted blocking findings return to Phase 3 (3-iteration cap).
|
|
24
24
|
|
|
25
|
-
> **Already have work on the branch?** For changes developed outside the pipeline, or by hand, run [`/multi-agent:ship`](../ship/SKILL.md) on that branch: it puts the existing diff through the same review, adds a build+test success gate, opens the PR and posts the Jira technical-analysis + test-scenario comment - without re-developing.
|
|
26
25
|
|
|
27
26
|
## When to use it
|
|
28
27
|
|
|
@@ -52,7 +51,7 @@ bash $HOME/.claude/scripts/phase-tracker.sh update 0 in_progress
|
|
|
52
51
|
bash $HOME/.claude/scripts/phase-tracker.sh update <N> in_progress|completed|failed|skipped
|
|
53
52
|
|
|
54
53
|
# After every LLM call (every CLI):
|
|
55
|
-
bash $HOME/.claude/scripts/phase-tracker.sh tokens <N> <in> <out>
|
|
54
|
+
bash $HOME/.claude/scripts/phase-tracker.sh tokens <N> <in> <out> [cached]
|
|
56
55
|
```
|
|
57
56
|
|
|
58
57
|
### Visual channel - Claude Code (native TaskList widget, required)
|
|
@@ -105,30 +104,17 @@ Routes to the orchestrator with `--dev --local` flags. Apply the `$HOME/.claude/
|
|
|
105
104
|
- Phase 6: commit + push + PR (the local checkout prompt is natural in local mode - you're already there; no worktree removal needed, code is already in `$PROJECT_ROOT`)
|
|
106
105
|
- Phase 7: report + channels (same as `--dev`)
|
|
107
106
|
|
|
108
|
-
##
|
|
107
|
+
## Intake warnings (`--dev` family)
|
|
109
108
|
|
|
110
|
-
|
|
111
|
-
/multi-agent:dev-local "PROJ-12345" # Jira
|
|
112
|
-
/multi-agent:dev-local "Bug: LoginView dark mode" # Free-text
|
|
113
|
-
```
|
|
109
|
+
Two checks belong at the top of every `--dev` run and are specified once in `$HOME/.claude/multi-agent-refs/phases/modes.md` "Intake warnings shared by the whole `--dev` family": an analysis document supplied to a mode that skips Analysis and Planning, and a branch that already carries the work (which wants `/multi-agent:ship`, not a second Dev pass). Read that section rather than reasoning about it from scratch.
|
|
114
110
|
|
|
115
|
-
##
|
|
111
|
+
## Required: outward-facing payload contracts
|
|
116
112
|
|
|
117
|
-
|
|
118
|
-
the input references an analysis document - a Confluence URL, a local analysis file,
|
|
119
|
-
or the user says "I ran analysis for this" - there is **no phase that turns it into a
|
|
120
|
-
plan**. The doc becomes raw context for one Dev pass, and work comes out ordered by
|
|
121
|
-
whatever the model read first: the bottom of the dependency chain lands, the screen
|
|
122
|
-
wiring does not.
|
|
113
|
+
Skipping Analysis and Planning does not shorten the payload contracts. Before writing anything outward-facing, load `$HOME/.claude/multi-agent-refs/payload-contracts.md` - the canonical list of what to read for the PR body, the Jira comment, and the closing report, plus the markup dialect per surface. Improvising a payload shape from memory is the single most common failure of the fast modes.
|
|
123
114
|
|
|
124
|
-
|
|
115
|
+
## Examples
|
|
125
116
|
|
|
117
|
+
```bash
|
|
118
|
+
/multi-agent:dev-local "PROJ-12345" # Jira
|
|
119
|
+
/multi-agent:dev-local "Bug: LoginView dark mode" # Free-text
|
|
126
120
|
```
|
|
127
|
-
This mode skips Analysis and Planning, so the analysis document will not be turned
|
|
128
|
-
into a task breakdown. For analysis-driven screen work, /multi-agent or
|
|
129
|
-
/multi-agent:local run both phases.
|
|
130
|
-
1. Continue with --dev (doc as context only)
|
|
131
|
-
2. Switch to the full pipeline
|
|
132
|
-
```
|
|
133
|
-
|
|
134
|
-
Autopilot picks 1 and logs the warning rather than asking.
|
|
@@ -6,7 +6,7 @@ allowed-tools: Agent, Bash, Read, Write, Edit, Glob, Grep, TaskCreate, TaskUpdat
|
|
|
6
6
|
|
|
7
7
|
# multi-agent dev-local-autopilot - Fastest + Local
|
|
8
8
|
|
|
9
|
-
> **Language (read FIRST)**: Before any status output, read `prefs.global.outputLanguage` and render every conversational line in it. `AskUserQuestion` and external
|
|
9
|
+
> **Language (read FIRST)**: Before any status output, read `prefs.global.outputLanguage` and render every conversational line in it. `AskUserQuestion` `label`/`header` stay English, but its `question` and option `description`s render in `outputLanguage`; external payload bodies follow `outputLanguage` too (identifiers, commit messages, branch names stay English). Full contract: `$HOME/.claude/multi-agent-refs/rules.md` "Language Application".
|
|
10
10
|
|
|
11
11
|
The triple `--dev` + `--local` + `autopilot` - the fastest form available. Zero confirmations, NO worktree.
|
|
12
12
|
|
|
@@ -38,7 +38,6 @@ Phase 1 (Analysis), Phase 2 (Planning + Approval Gate) and Phase 5 (User Test) a
|
|
|
38
38
|
|
|
39
39
|
Routes to the orchestrator with `--dev --local autopilot` flags. The pipeline contract matches [`dev-autopilot/SKILL.md`](../dev-autopilot/SKILL.md) exactly, with Phase 0 Step 8 (worktree creation) skipped.
|
|
40
40
|
|
|
41
|
-
> **Already have work on the branch?** For a diff that exists without a pipeline run behind it, [`/multi-agent:ship`](../ship/SKILL.md) applies the same review plus a build+test gate before the PR.
|
|
42
41
|
|
|
43
42
|
## Examples
|
|
44
43
|
|
|
@@ -46,6 +45,14 @@ Routes to the orchestrator with `--dev --local autopilot` flags. The pipeline co
|
|
|
46
45
|
/multi-agent:dev-local-autopilot "PROJ-12345" # Jira
|
|
47
46
|
/multi-agent:dev-local-autopilot "Add retry to HomeNetworking" # Free-text
|
|
48
47
|
```
|
|
48
|
+
## Intake warnings (`--dev` family)
|
|
49
|
+
|
|
50
|
+
Two checks belong at the top of every `--dev` run and are specified once in `$HOME/.claude/multi-agent-refs/phases/modes.md` "Intake warnings shared by the whole `--dev` family": an analysis document supplied to a mode that skips Analysis and Planning, and a branch that already carries the work (which wants `/multi-agent:ship`, not a second Dev pass). Read that section rather than reasoning about it from scratch.
|
|
51
|
+
|
|
52
|
+
## Required: outward-facing payload contracts
|
|
53
|
+
|
|
54
|
+
Before writing anything outward-facing - PR body, Jira comment, Confluence page, closing report - load `$HOME/.claude/multi-agent-refs/payload-contracts.md`. It names the canonical section set for each payload, the markup dialect per surface (PR body is Markdown, Jira is wiki markup - mixing them is a defect), and the token/duration numbers the closing report must carry. Improvising a payload shape from memory is the most common failure of the short modes.
|
|
55
|
+
|
|
49
56
|
## Required: Phase Tracker Contract
|
|
50
57
|
|
|
51
58
|
**The phase tracker is mandatory** - the agent cannot skip it. Full spec: [`$HOME/.claude/multi-agent-refs/tracker-contract.md`]($HOME/.claude/multi-agent-refs/tracker-contract.md).
|
|
@@ -71,7 +78,7 @@ bash $HOME/.claude/scripts/phase-tracker.sh update 0 in_progress
|
|
|
71
78
|
bash $HOME/.claude/scripts/phase-tracker.sh update <N> in_progress|completed|failed|skipped
|
|
72
79
|
|
|
73
80
|
# After every LLM call (every CLI):
|
|
74
|
-
bash $HOME/.claude/scripts/phase-tracker.sh tokens <N> <in> <out>
|
|
81
|
+
bash $HOME/.claude/scripts/phase-tracker.sh tokens <N> <in> <out> [cached]
|
|
75
82
|
```
|
|
76
83
|
|
|
77
84
|
### Visual channel - Claude Code (native TaskList widget, required)
|
|
@@ -71,15 +71,26 @@ After issue selection, inspect `maturity` from `~/.claude/lib/issue-fetcher.sh`:
|
|
|
71
71
|
"maturity": {
|
|
72
72
|
"score": 0..100,
|
|
73
73
|
"blockers": ["status_closed", "already_resolved", "description_empty"],
|
|
74
|
-
"warnings": ["short_description", "no_repro_steps", "no_acceptance_criteria"],
|
|
74
|
+
"warnings": ["short_description", "no_repro_steps", "no_acceptance_criteria", "description_empty_parent_available"],
|
|
75
75
|
"summary": "..."
|
|
76
76
|
}
|
|
77
77
|
```
|
|
78
78
|
|
|
79
|
+
> **Empty description → parent candidate**: development sub-tasks are often filed with no description of their own, with the real requirements on the parent issue. Before scoring, `issue-fetcher.sh` fetches the issue's `parent` (single hop, no chasing the parent's parent). If the issue's own description is empty and the parent's isn't, it does **not** auto-substitute - it exposes `descriptor.parentKey` + `descriptor.parentDescription` as a candidate and adds `description_empty_parent_available` to `warnings` (not `blockers`) instead of the plain `description_empty` blocker. If the parent is also empty or unreachable, `description_empty` still blocks exactly as before.
|
|
80
|
+
>
|
|
81
|
+
> When `description_empty_parent_available` is present, ask a tailored question instead of the generic "Continue?" below:
|
|
82
|
+
> - `question` (outputLanguage): "Bu issue'nun (`{KEY}`) açıklaması boş, ama parent'ın (`{parentKey}`) açıklaması var. Parent'ın açıklamasından devam edilsin mi?" / "This issue's (`{KEY}`) description is empty, but its parent (`{parentKey}`) has one. Continue using the parent's description?" — show a short excerpt of `parentDescription` for context.
|
|
83
|
+
> - `header` (English, <=12 chars): `"Parent desc"`
|
|
84
|
+
> - `options`: `{ label: "Use parent's description" (Recommended), description: "Continue with descriptor.parentDescription as the working description for this task." }` / `{ label: "No, halt", description: "Treat like description_empty - fix the issue's own description in Jira first." }`
|
|
85
|
+
> - **Accept** → set the working `description` to `parentDescription` for every later phase (analysis/dev/review all read this one substituted value); log the substitution (source issue + parent key) to `agent-log.md`.
|
|
86
|
+
> - **Decline** → same as a `description_empty` blocker: halt, advise fixing the issue's own description.
|
|
87
|
+
> - **Autopilot**: auto-accepts "Use parent's description" (same "warnings auto-continue" rule as any other warning), logs the auto-accept + parent key to `agent-log.md`.
|
|
88
|
+
|
|
79
89
|
| Outcome | Behavior |
|
|
80
90
|
|---|---|
|
|
81
91
|
| `blockers` non-empty | **Halt** (autopilot too): show summary, advise "fix the issue first" |
|
|
82
|
-
|
|
|
92
|
+
| `warnings` contains `description_empty_parent_available` | Tailored parent-description question above (not the generic one) |
|
|
93
|
+
| other `warnings` only | AskUserQuestion: show summary + "Continue?". Autopilot auto-continues; warnings logged to `agent-log.md` |
|
|
83
94
|
| both empty (score ≥ 90) | Continue silently |
|
|
84
95
|
|
|
85
96
|
> **Resolution check**: If Jira `resolution` is set (`Fixed`, `Done`, `Won't Do`, `Resolved`...), `already_resolved` is added - the issue was closed already. To reopen, clear `resolution` in Jira first.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
description: "Toggle outputLanguage (assistant explanations). promptLanguage is fixed to English
|
|
2
|
+
description: "Toggle outputLanguage (assistant explanations, picker questions, PR/Jira/Confluence bodies). promptLanguage is fixed to English; commit messages, branch names and identifiers stay English. Use when the assistant should explain itself in a different language."
|
|
3
3
|
description-tr: "outputLanguage'i değiştirir (asistan açıklamaları). promptLanguage İngilizce sabittir. Dış payload'lar İngilizce kalır."
|
|
4
4
|
argument-hint: "[en|tr] - sets outputLanguage; omit for interactive picker; use 'output en|tr' for explicit form"
|
|
5
5
|
---
|
|
@@ -6,7 +6,7 @@ allowed-tools: Agent, Bash, Read, Write, Edit, Glob, Grep, TaskCreate, TaskUpdat
|
|
|
6
6
|
|
|
7
7
|
# multi-agent local - Full Pipeline, Local Branch
|
|
8
8
|
|
|
9
|
-
> **Language (read FIRST)**: Before any status output, read `prefs.global.outputLanguage` and render every conversational line in it. `AskUserQuestion` and external
|
|
9
|
+
> **Language (read FIRST)**: Before any status output, read `prefs.global.outputLanguage` and render every conversational line in it. `AskUserQuestion` `label`/`header` stay English, but its `question` and option `description`s render in `outputLanguage`; external payload bodies follow `outputLanguage` too (identifiers, commit messages, branch names stay English). Full contract: `$HOME/.claude/multi-agent-refs/rules.md` "Language Application".
|
|
10
10
|
|
|
11
11
|
The full pipeline in normal mode (Plan Approval Gate + parallel review + triage included), running on the **current branch with no worktree**. Dedicated alias for the `multi-agent "task" --local` flag form. Phase 5 (User Test) is skipped because there is no worktree to check the change out from; the other seven phases all run.
|
|
12
12
|
|
|
@@ -49,6 +49,10 @@ Read the routing table in `$HOME/.claude/commands/multi-agent.md` and apply Phas
|
|
|
49
49
|
/multi-agent:local "#42" # GitHub issue
|
|
50
50
|
/multi-agent:local "LoginView dark mode fix" # Free-text
|
|
51
51
|
```
|
|
52
|
+
## Required: outward-facing payload contracts
|
|
53
|
+
|
|
54
|
+
Before writing anything outward-facing - PR body, Jira comment, Confluence page, closing report - load `$HOME/.claude/multi-agent-refs/payload-contracts.md`. It names the canonical section set for each payload, the markup dialect per surface (PR body is Markdown, Jira is wiki markup - mixing them is a defect), and the token/duration numbers the closing report must carry. Improvising a payload shape from memory is the most common failure of the short modes.
|
|
55
|
+
|
|
52
56
|
## Required: Phase Tracker Contract
|
|
53
57
|
|
|
54
58
|
**The phase tracker is mandatory** - the agent cannot skip it. Full spec: [`$HOME/.claude/multi-agent-refs/tracker-contract.md`]($HOME/.claude/multi-agent-refs/tracker-contract.md).
|
|
@@ -72,7 +76,7 @@ bash $HOME/.claude/scripts/phase-tracker.sh update 0 in_progress
|
|
|
72
76
|
bash $HOME/.claude/scripts/phase-tracker.sh update <N> in_progress|completed|failed|skipped
|
|
73
77
|
|
|
74
78
|
# After every LLM call (every CLI):
|
|
75
|
-
bash $HOME/.claude/scripts/phase-tracker.sh tokens <N> <in> <out>
|
|
79
|
+
bash $HOME/.claude/scripts/phase-tracker.sh tokens <N> <in> <out> [cached]
|
|
76
80
|
```
|
|
77
81
|
|
|
78
82
|
### Visual channel - Claude Code (native TaskList widget, required)
|
|
@@ -9,7 +9,7 @@ allowed-tools: Agent, Bash, Read, Write, Edit, Glob, Grep, TaskCreate, TaskUpdat
|
|
|
9
9
|
|
|
10
10
|
**Input**: $ARGUMENTS
|
|
11
11
|
|
|
12
|
-
> **Language (read FIRST)**: Before any status output, read `prefs.global.outputLanguage` and render every conversational line in it. `AskUserQuestion` and external
|
|
12
|
+
> **Language (read FIRST)**: Before any status output, read `prefs.global.outputLanguage` and render every conversational line in it. `AskUserQuestion` `label`/`header` stay English, but its `question` and option `description`s render in `outputLanguage`; external payload bodies follow `outputLanguage` too (identifiers, commit messages, branch names stay English). Full contract: `$HOME/.claude/multi-agent-refs/rules.md` "Language Application".
|
|
13
13
|
|
|
14
14
|
Run the full pipeline **without a worktree** and **with every confirmation skipped**. Phase 5 (User Test) does not run (no worktree to check out from, and no interaction), so 7 phases execute. The `autopilot + local` combination - vs `/multi-agent:autopilot` the only difference is no worktree (work stays on the current branch); vs `/multi-agent:local` the only difference is zero interaction.
|
|
15
15
|
|
|
@@ -70,6 +70,10 @@ Run the full pipeline **without a worktree** and **with every confirmation skipp
|
|
|
70
70
|
## Delegation
|
|
71
71
|
|
|
72
72
|
Orchestrator routing: the routing table in `$HOME/.claude/commands/multi-agent.md` resolves `local-autopilot` as the union of the `dev-local` + `autopilot` mode mixins. Contract details: `$HOME/.claude/multi-agent-refs/phases/phase-0-init.md` Step 8 (local branch) + `$HOME/.claude/multi-agent-refs/phases/phase-2-planning.md` Step 5 (autopilot gate skip + safety classifier).
|
|
73
|
+
## Required: outward-facing payload contracts
|
|
74
|
+
|
|
75
|
+
Before writing anything outward-facing - PR body, Jira comment, Confluence page, closing report - load `$HOME/.claude/multi-agent-refs/payload-contracts.md`. It names the canonical section set for each payload, the markup dialect per surface (PR body is Markdown, Jira is wiki markup - mixing them is a defect), and the token/duration numbers the closing report must carry. Improvising a payload shape from memory is the most common failure of the short modes.
|
|
76
|
+
|
|
73
77
|
## Required: Phase Tracker Contract
|
|
74
78
|
|
|
75
79
|
**The phase tracker is mandatory** - the agent cannot skip it. Full spec: [`$HOME/.claude/multi-agent-refs/tracker-contract.md`]($HOME/.claude/multi-agent-refs/tracker-contract.md).
|
|
@@ -95,7 +99,7 @@ bash $HOME/.claude/scripts/phase-tracker.sh update 0 in_progress
|
|
|
95
99
|
bash $HOME/.claude/scripts/phase-tracker.sh update <N> in_progress|completed|failed|skipped
|
|
96
100
|
|
|
97
101
|
# After every LLM call (every CLI):
|
|
98
|
-
bash $HOME/.claude/scripts/phase-tracker.sh tokens <N> <in> <out>
|
|
102
|
+
bash $HOME/.claude/scripts/phase-tracker.sh tokens <N> <in> <out> [cached]
|
|
99
103
|
```
|
|
100
104
|
|
|
101
105
|
### Visual channel - Claude Code (native TaskList widget, required)
|
|
@@ -23,4 +23,10 @@ Show the task's detailed agent-log.md report.
|
|
|
23
23
|
|
|
24
24
|
3. **Read agent-log.md** - display the file.
|
|
25
25
|
|
|
26
|
-
4. **
|
|
26
|
+
4. **Cost + durations come from the tracker, not only the log.** The tracker contract promises token/duration data "surfaced in `:log` reports", and agent-log.md only carries it when Phase 7 appended the Cost Breakdown. When that section is absent, render it live:
|
|
27
|
+
```bash
|
|
28
|
+
bash $HOME/.claude/scripts/render-agent-log-cost.sh "<task-id>" 2>/dev/null
|
|
29
|
+
```
|
|
30
|
+
Exit 2 means no tracker data exists - say so in one line (`cost unavailable: no token telemetry recorded`) instead of leaving the section out silently.
|
|
31
|
+
|
|
32
|
+
5. **Provide a summary** - when the log is long, show only the Timeline table + Review Consensus + the cost block, and give the file path for the full log.
|
|
@@ -6,7 +6,7 @@ allowed-tools: Agent, Bash, Read, Write, Edit, Glob, Grep, TaskCreate, TaskUpdat
|
|
|
6
6
|
|
|
7
7
|
# multi-agent ship - Take Existing Branch Work Through the Pipeline Tail
|
|
8
8
|
|
|
9
|
-
> **Language (read FIRST)**: Before any status output, read `prefs.global.outputLanguage` and render every conversational line in it. `AskUserQuestion` and external
|
|
9
|
+
> **Language (read FIRST)**: Before any status output, read `prefs.global.outputLanguage` and render every conversational line in it. `AskUserQuestion` `label`/`header` stay English, but its `question` and option `description`s render in `outputLanguage`; external payload bodies follow `outputLanguage` too (identifiers, commit messages, branch names stay English). Full contract: `$HOME/.claude/multi-agent-refs/rules.md` "Language Application".
|
|
10
10
|
|
|
11
11
|
You already did the work locally - wrote code on the current branch and maybe tested it by hand, or committed it outside the pipeline entirely. (As of v14.0.0 the `--dev` family reviews its own output, so this command is for work that had no pipeline run behind it, not a patch for a mode that skipped review.) `/multi-agent:ship` picks up from there and runs the **pipeline tail** over that existing local work in one command: parallel review, a build + test success gate, commit/push + PR, then the technical analysis and a **Jira comment with test scenarios**. It does NOT re-develop - Analysis / Planning / Dev (phases 1-3) are intentionally skipped; the diff already on the branch IS the input.
|
|
12
12
|
|
|
@@ -64,6 +64,10 @@ Phases 1-3 (Analysis / Planning / Dev) are skipped by design - `ship` treats t
|
|
|
64
64
|
- **interactive** (default): stops at the Phase 4 gate when there are blocking/important findings; asks before committing/PR when appropriate.
|
|
65
65
|
- **`autopilot`**: no prompts - auto-fix accepted blocking/important findings, auto-commit/push/PR, auto-post the Jira comment. Mirrors `local-autopilot`.
|
|
66
66
|
|
|
67
|
+
## Required: outward-facing payload contracts
|
|
68
|
+
|
|
69
|
+
Before writing anything outward-facing - PR body, Jira comment, Confluence page, closing report - load `$HOME/.claude/multi-agent-refs/payload-contracts.md`. It names the canonical section set for each payload, the markup dialect per surface (PR body is Markdown, Jira is wiki markup - mixing them is a defect), and the token/duration numbers the closing report must carry. Improvising a payload shape from memory is the most common failure of the short modes.
|
|
70
|
+
|
|
67
71
|
## Required: Phase Tracker Contract
|
|
68
72
|
|
|
69
73
|
**The phase tracker is required.** Full spec: [`$HOME/.claude/multi-agent-refs/tracker-contract.md`]($HOME/.claude/multi-agent-refs/tracker-contract.md). `ship` registers its active phase set - `0:Init 4:Review 5:Build+Test 6:Commit 7:Report` - but NEVER resets a tracker that an earlier run already built (load-or-continue; contract section "Continuation runs"):
|
|
@@ -60,7 +60,7 @@ Run every step automatically:
|
|
|
60
60
|
Step 1: PLATFORM Detect macOS / Linux / Windows (Git Bash / WSL); export PLATFORM env
|
|
61
61
|
Step 1.5: DETECT Compare timestamps, find stale targets
|
|
62
62
|
Step 2: COPILOT Claude Code -> Copilot CLI (instructions + 49 sub-command skills)
|
|
63
|
-
Step 2b: CODEX Claude Code -> Codex CLI (1 router skill +
|
|
63
|
+
Step 2b: CODEX Claude Code -> Codex CLI (1 router skill + 49 specs as refs + 8 agent TOML)
|
|
64
64
|
Step 3: REPO Claude Code -> pipeline repo (genericized, personal data scrub, bash -n on all sh)
|
|
65
65
|
Step 3c: PLUGINS pipeline shared/external -> multi-agent-plugins marketplace (rebuild knowledge/,
|
|
66
66
|
bump changed plugins' patch version, commit + push the plugins repo)
|
|
@@ -176,7 +176,7 @@ If nothing is stale → report "All targets up to date" and stop.
|
|
|
176
176
|
Unlike the Copilot step, this one does **not** hand-copy files. The Codex tree is a
|
|
177
177
|
*transform* of the Claude tree, not a mirror of it, and the transform is real work:
|
|
178
178
|
|
|
179
|
-
- the
|
|
179
|
+
- the 49 sub-command specs become reference files, because Codex silently truncates
|
|
180
180
|
its skills block (see `cross-cli-contract.md` 2.6 for the measurement)
|
|
181
181
|
- every `$HOME/.claude/...` reference to a CLI-owned tree is retargeted, with
|
|
182
182
|
`agents/<persona>.md` becoming `.toml` and the dispatcher becoming the router skill
|
|
@@ -484,7 +484,7 @@ When invoked with the `release` argument:
|
|
|
484
484
|
> Codex takes the Step 2b path instead; see that section.
|
|
485
485
|
|
|
486
486
|
This runs on the Claude <-> Copilot axis. Codex is NOT synced here: it receives the
|
|
487
|
-
same
|
|
487
|
+
same 49 specs as reference files rather than as peer skills, via Step 2b - see
|
|
488
488
|
`cross-cli-contract.md` 2.6 for why the parity axis differs per host.
|
|
489
489
|
|
|
490
490
|
| Claude Code | Copilot CLI |
|
|
@@ -101,7 +101,7 @@ Update the pipeline in one command. Existing preferences are preserved; only ski
|
|
|
101
101
|
```
|
|
102
102
|
Current: v3.6.0
|
|
103
103
|
-> git pull origin main
|
|
104
|
-
-> node install.js --all (
|
|
104
|
+
-> node install.js --all (49 commands, 50 scripts, 202 skills)
|
|
105
105
|
-> migrate-prefs.mjs (0 changes - already v2.1.0)
|
|
106
106
|
|
|
107
107
|
✓ Updated: v3.6.0 → v3.7.0
|