@mmerterden/multi-agent-pipeline 10.9.0 → 10.12.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 (43) hide show
  1. package/CHANGELOG.md +143 -0
  2. package/README.md +1 -1
  3. package/package.json +1 -1
  4. package/pipeline/commands/multi-agent/channels.md +42 -6
  5. package/pipeline/commands/multi-agent/finish.md +15 -6
  6. package/pipeline/commands/multi-agent/generate-bug.md +33 -0
  7. package/pipeline/commands/multi-agent/generate-task.md +33 -0
  8. package/pipeline/commands/multi-agent/help.md +12 -0
  9. package/pipeline/commands/multi-agent/manual-test.md +9 -2
  10. package/pipeline/commands/multi-agent/refs/channels/pr.md +1 -1
  11. package/pipeline/commands/multi-agent/refs/cross-cli-contract.md +7 -6
  12. package/pipeline/commands/multi-agent/refs/generate-issue.md +197 -0
  13. package/pipeline/commands/multi-agent/refs/keychain.md +12 -0
  14. package/pipeline/commands/multi-agent/refs/phases/phase-0-init.md +31 -2
  15. package/pipeline/commands/multi-agent/refs/phases/phase-3-dev.md +2 -0
  16. package/pipeline/commands/multi-agent/refs/phases/phase-4-review.md +2 -0
  17. package/pipeline/commands/multi-agent/refs/phases/phase-5-test.md +6 -1
  18. package/pipeline/commands/multi-agent/refs/phases/phase-7-report.md +5 -1
  19. package/pipeline/commands/multi-agent/refs/progress-contract.md +1 -0
  20. package/pipeline/commands/multi-agent/refs/tracker-contract.md +56 -13
  21. package/pipeline/commands/multi-agent/resume.md +6 -2
  22. package/pipeline/commands/multi-agent/sync.md +5 -5
  23. package/pipeline/commands/multi-agent.md +4 -0
  24. package/pipeline/lib/figma-mcp-refresh.sh +79 -0
  25. package/pipeline/preferences-template.json +2 -1
  26. package/pipeline/schemas/prefs.schema.json +11 -0
  27. package/pipeline/scripts/fixtures/install-layout.tsv +6 -6
  28. package/pipeline/scripts/phase-tracker.sh +134 -22
  29. package/pipeline/scripts/smoke-channels-approval-gate.sh +60 -0
  30. package/pipeline/scripts/smoke-generate-issue.sh +114 -0
  31. package/pipeline/scripts/smoke-phase-tracker.sh +69 -0
  32. package/pipeline/scripts/smoke-progress-contract.sh +9 -0
  33. package/pipeline/scripts/smoke-tasklist-ordering.sh +1 -0
  34. package/pipeline/scripts/smoke-token-preflight.sh +82 -0
  35. package/pipeline/scripts/smoke-tracker-contract.sh +62 -0
  36. package/pipeline/skills/.skills-index.json +22 -4
  37. package/pipeline/skills/shared/core/multi-agent/SKILL.md +2 -1
  38. package/pipeline/skills/shared/core/multi-agent-channels/SKILL.md +4 -2
  39. package/pipeline/skills/shared/core/multi-agent-generate-bug/SKILL.md +39 -0
  40. package/pipeline/skills/shared/core/multi-agent-generate-task/SKILL.md +39 -0
  41. package/pipeline/skills/shared/core/multi-agent-help/SKILL.md +4 -0
  42. package/pipeline/skills/shared/core/multi-agent-sync/SKILL.md +5 -5
  43. package/pipeline/skills/skills-index.md +5 -3
@@ -0,0 +1,82 @@
1
+ #!/usr/bin/env bash
2
+ # smoke-token-preflight.sh - contract for the Phase 0 Step 0.7 token expiry pre-flight
3
+ # and the Figma MCP token lifecycle (silent refresh + generation-script escalation).
4
+ #
5
+ # Verifies:
6
+ # 1. phase-0-init.md has Step 0.7 with the probe table and figma-mcp-critical path.
7
+ # 2. Silent renewal runs BEFORE any question; autopilot never prompts.
8
+ # 3. keychain.md documents the Figma MCP lifecycle (refresh entry, tokenScripts, init cross-ref).
9
+ # 4. lib/figma-mcp-refresh.sh exists, is executable, parses, and never prints token values.
10
+ # 5. prefs.schema.json + preferences-template.json declare global.tokenScripts.
11
+ # 6. Network failure is not treated as expiry; mid-run 401 stays as safety net.
12
+
13
+ set -euo pipefail
14
+
15
+ HERE="$(cd "$(dirname "$0")" && pwd)"
16
+ ROOT="$(cd "$HERE/../.." && pwd)"
17
+ PHASE0="$ROOT/pipeline/commands/multi-agent/refs/phases/phase-0-init.md"
18
+ KEYCHAIN="$ROOT/pipeline/commands/multi-agent/refs/keychain.md"
19
+ REFRESH="$ROOT/pipeline/lib/figma-mcp-refresh.sh"
20
+ SCHEMA="$ROOT/pipeline/schemas/prefs.schema.json"
21
+ TEMPLATE="$ROOT/pipeline/preferences-template.json"
22
+
23
+ PASS=0
24
+ FAIL=0
25
+ pass() { PASS=$((PASS+1)); echo " ✓ $1"; }
26
+ fail() { FAIL=$((FAIL+1)); echo " ✗ $1"; }
27
+
28
+ need() { command -v "$1" >/dev/null 2>&1 || { echo "error: $1 required" >&2; exit 127; }; }
29
+ need jq
30
+
31
+ for f in "$PHASE0" "$KEYCHAIN" "$REFRESH" "$SCHEMA" "$TEMPLATE"; do
32
+ [ -f "$f" ] || { echo "error: missing $f" >&2; exit 1; }
33
+ done
34
+
35
+ echo "→ 1. Step 0.7 pre-flight section"
36
+ grep -Fq "Step 0.7 - Token expiry pre-flight" "$PHASE0" && pass "Step 0.7 present" || fail "Step 0.7 missing"
37
+ for marker in "rest/api/2/myself" "mcp.figma.com/mcp" "serviceStatus" "CRITICAL"; do
38
+ grep -Fq "$marker" "$PHASE0" && pass "probe marker: $marker" || fail "probe marker missing: $marker"
39
+ done
40
+
41
+ echo ""
42
+ echo "→ 2. silent renewal first, autopilot never prompts"
43
+ grep -Fq "figma-mcp-refresh.sh" "$PHASE0" && pass "silent renewal wired" || fail "silent renewal missing"
44
+ grep -Fq "Silent renewal first" "$PHASE0" && pass "renewal precedes question" || fail "renewal-first rule missing"
45
+ grep -Fq "never prompt" "$PHASE0" && pass "autopilot no-prompt rule" || fail "autopilot no-prompt rule missing"
46
+ grep -Fq "Regenerate now (script)" "$PHASE0" && pass "script escalation option" || fail "script escalation option missing"
47
+ grep -Fq "Continue degraded" "$PHASE0" && pass "degrade option" || fail "degrade option missing"
48
+
49
+ echo ""
50
+ echo "→ 3. keychain.md lifecycle section"
51
+ grep -Fq "Figma MCP token lifecycle" "$KEYCHAIN" && pass "lifecycle section present" || fail "lifecycle section missing"
52
+ grep -Fq "_Refresh" "$KEYCHAIN" && pass "refresh Keychain entry documented" || fail "refresh entry missing"
53
+ grep -Fq "tokenScripts" "$KEYCHAIN" && pass "tokenScripts documented" || fail "tokenScripts missing"
54
+ grep -Fq "Step 0.7" "$KEYCHAIN" && pass "init cross-ref present" || fail "init cross-ref missing"
55
+ grep -Fq "never in synced command files" "$KEYCHAIN" && pass "personal-path hygiene rule" || fail "personal-path hygiene rule missing"
56
+
57
+ echo ""
58
+ echo "→ 4. figma-mcp-refresh.sh integrity"
59
+ [ -x "$REFRESH" ] && pass "executable" || fail "not executable"
60
+ bash -n "$REFRESH" && pass "parses (bash -n)" || fail "syntax error"
61
+ grep -Fq "grant_type=refresh_token" "$REFRESH" && pass "refresh grant" || fail "refresh grant missing"
62
+ if grep -E 'echo .*\$(NEW_ACCESS|NEW_REFRESH|REFRESH_TOKEN)' "$REFRESH" >/dev/null; then
63
+ fail "token value printed to stdout"
64
+ else
65
+ pass "no token values printed"
66
+ fi
67
+ grep -Fq 'security add-generic-password' "$REFRESH" && pass "saves back to Keychain" || fail "Keychain save missing"
68
+
69
+ echo ""
70
+ echo "→ 5. prefs schema + template declare tokenScripts"
71
+ TS_TYPE=$(jq -r '.properties.global.properties.tokenScripts.type // "missing"' "$SCHEMA")
72
+ [ "$TS_TYPE" = "object" ] && pass "schema tokenScripts is object" || fail "schema tokenScripts type = '$TS_TYPE'"
73
+ jq -e '.global | has("tokenScripts")' "$TEMPLATE" >/dev/null && pass "template has tokenScripts" || fail "template missing tokenScripts"
74
+
75
+ echo ""
76
+ echo "→ 6. network failure is not expiry; 401 safety net stays"
77
+ grep -Fq "NOT treated as expiry" "$PHASE0" && pass "network-failure rule" || fail "network-failure rule missing"
78
+ grep -Fq "safety net" "$PHASE0" && pass "401 safety net documented" || fail "401 safety net missing"
79
+
80
+ echo ""
81
+ echo "══ token-preflight smoke: $PASS passed, $FAIL failed ══"
82
+ [ "$FAIL" -eq 0 ]
@@ -123,6 +123,68 @@ for mode_file in "${MODE_FILES[@]}"; do
123
123
  fi
124
124
  done
125
125
 
126
+ # ──────────────────────────────────────────────────────────────────────────
127
+ echo "→ 7. Live-tracker UX contract (now/cost actions, mirror rule, continuation)"
128
+ if grep -q 'phase-tracker.sh now' "$CONTRACT_FILE" \
129
+ && grep -q 'cost <N>' "$CONTRACT_FILE"; then
130
+ pass "tracker-contract documents now + cost actions"
131
+ else
132
+ fail "tracker-contract missing now/cost action docs"
133
+ fi
134
+ if grep -q '\[cached\]' "$CONTRACT_FILE" || grep -q '\[cached_count\]' "$CONTRACT_FILE"; then
135
+ pass "tracker-contract documents the 4th cached tokens arg"
136
+ else
137
+ fail "tracker-contract missing the cached tokens arg"
138
+ fi
139
+ if grep -q 'Progress-line mirror' "$CONTRACT_FILE"; then
140
+ pass "tracker-contract declares the progress-line mirror rule"
141
+ else
142
+ fail "tracker-contract missing the progress-line mirror rule"
143
+ fi
144
+ if grep -q 'Continuation runs' "$CONTRACT_FILE" \
145
+ && grep -q 'never re-initialized' "$CONTRACT_FILE"; then
146
+ pass "tracker-contract declares the continuation-runs rule"
147
+ else
148
+ fail "tracker-contract missing the continuation-runs rule"
149
+ fi
150
+ if grep -q 'Completion tile suffix' "$CONTRACT_FILE"; then
151
+ pass "tracker-contract declares the completion tile suffix"
152
+ else
153
+ fail "tracker-contract missing the completion tile suffix"
154
+ fi
155
+
156
+ # ──────────────────────────────────────────────────────────────────────────
157
+ echo "→ 8. Continuation wiring in finish + manual-test + phase-5"
158
+ FINISH_FILE="$CMDS_DIR/finish.md"
159
+ if grep -q '\[ ! -f "\$STATE" \]' "$FINISH_FILE"; then
160
+ pass "finish.md guards init behind a state-file existence check"
161
+ else
162
+ fail "finish.md must not init the tracker unconditionally"
163
+ fi
164
+ if grep -q 'Continuing' "$FINISH_FILE" && grep -q 'cost total' "$FINISH_FILE"; then
165
+ pass "finish.md prints the inherited-history line via cost total"
166
+ else
167
+ fail "finish.md missing the continuation summary line"
168
+ fi
169
+ MANUAL_FILE="$CMDS_DIR/manual-test.md"
170
+ if grep -q 'now 5 "awaiting local test (user)"' "$MANUAL_FILE"; then
171
+ pass "manual-test.md sets the waiting state via now 5"
172
+ else
173
+ fail "manual-test.md missing the now 5 waiting state"
174
+ fi
175
+ PHASE5_FILE="$CMDS_DIR/refs/phases/phase-5-test.md"
176
+ if grep -q 'now 5 "awaiting local test (user)"' "$PHASE5_FILE"; then
177
+ pass "phase-5-test.md sets the waiting state via now 5"
178
+ else
179
+ fail "phase-5-test.md missing the now 5 waiting state"
180
+ fi
181
+ RESUME_FILE="$CMDS_DIR/resume.md"
182
+ if grep -q 'Rebuild the phase tiles' "$RESUME_FILE"; then
183
+ pass "resume.md rebuilds the phase tiles from state"
184
+ else
185
+ fail "resume.md missing the tile-rebuild step"
186
+ fi
187
+
126
188
  # ──────────────────────────────────────────────────────────────────────────
127
189
  echo ""
128
190
  echo "══ tracker-contract smoke: $PASS passed, $FAIL failed ══"
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "schemaVersion": "1.0.0",
3
- "generatedAt": "2026-07-02T18:42:58.207Z",
4
- "skillCount": 222,
3
+ "generatedAt": "2026-07-06T11:38:47.307Z",
4
+ "skillCount": 224,
5
5
  "entries": [
6
6
  {
7
7
  "name": "accessibility-compliance-accessibility-audit",
@@ -1031,7 +1031,7 @@
1031
1031
  },
1032
1032
  {
1033
1033
  "name": "multi-agent",
1034
- "description": "Task orchestrator: runs the full pipeline from a Jira ID or GitHub Issue URL - analysis → plan → TDD development → parallel review (Opus + Sonnet on Claude Code, GPT + Opus + Sonnet on Copilot CLI) → commit → log. Every step is written to agent-log.md.",
1034
+ "description": "Task orchestrator: runs the full pipeline from a Jira ID or GitHub Issue URL - analysis → plan → TDD development → parallel review (Fable + Sonnet on Claude Code, GPT + Opus + Sonnet on Copilot CLI) → commit → log. Every step is written to agent-log.md.",
1035
1035
  "platform": null,
1036
1036
  "group": "core",
1037
1037
  "triggerKeywords": [],
@@ -1155,6 +1155,24 @@
1155
1155
  "triggerPaths": [],
1156
1156
  "relativePath": "shared/core/multi-agent-garbage-collect/SKILL.md"
1157
1157
  },
1158
+ {
1159
+ "name": "multi-agent-generate-bug",
1160
+ "description": "Create a standards-compliant Jira Bug: mines project conventions, drafts in outputLanguage, full preview + explicit approval before create.",
1161
+ "platform": null,
1162
+ "group": "core",
1163
+ "triggerKeywords": [],
1164
+ "triggerPaths": [],
1165
+ "relativePath": "shared/core/multi-agent-generate-bug/SKILL.md"
1166
+ },
1167
+ {
1168
+ "name": "multi-agent-generate-task",
1169
+ "description": "Create a standards-compliant Jira Task: mines project conventions, drafts in outputLanguage, full preview + explicit approval before create.",
1170
+ "platform": null,
1171
+ "group": "core",
1172
+ "triggerKeywords": [],
1173
+ "triggerPaths": [],
1174
+ "relativePath": "shared/core/multi-agent-generate-task/SKILL.md"
1175
+ },
1158
1176
  {
1159
1177
  "name": "multi-agent-help",
1160
1178
  "description": "Multi-agent pipeline usage guide - renders in EN or TR per prefs.global.outputLanguage (falls back to promptLanguage for backward compatibility).",
@@ -1274,7 +1292,7 @@
1274
1292
  },
1275
1293
  {
1276
1294
  "name": "multi-agent-review",
1277
- "description": "Run parallel review on the current branch's diff: 2 models on Claude Code (Opus + Sonnet), 3 models on Copilot CLI (GPT + Opus + Sonnet). Review-only slice of the pipeline.",
1295
+ "description": "Run parallel review on the current branch's diff: 2 models on Claude Code (Fable + Sonnet), 3 models on Copilot CLI (GPT + Opus + Sonnet). Review-only slice of the pipeline.",
1278
1296
  "platform": null,
1279
1297
  "group": "core",
1280
1298
  "triggerKeywords": [],
@@ -309,7 +309,8 @@ Every user-facing phase title - TaskCreate cards, `phase-banner.sh` headers, a
309
309
  All TaskCreate calls fire in strict phase-number order BEFORE any TaskUpdate is applied (Claude Code path; Copilot CLI does not have a TaskList widget so this rule is Claude-only). The native widget renders by creation order, not by phase-number metadata - out-of-order calls produce visually scrambled tile stacks (e.g. `1 ✓ · 2 ✓ · 4 ✓ · 0 ▶ · 3 ☐`) even when the underlying state file is correct. Pre-marking phases as completed/skipped before Phase 0 starts is FORBIDDEN: register the tile in order with default `pending` status, then flip via TaskUpdate when the phase actually short-circuits. Mode-specific phase sets:
310
310
 
311
311
  - Full pipeline (`multi-agent`, `multi-agent-autopilot`, `multi-agent-local`, `multi-agent-local-autopilot`): 0 → 1 → 2 → 3 → 4 → 5 → 6 → 7
312
- - `--dev` modes (`multi-agent-dev`, `multi-agent-dev-autopilot`, `multi-agent-dev-local`, `multi-agent-dev-local-autopilot`): 0 → 3 → 5 → 6 → 7 (phases 1/2/4 are NOT TaskCreate'd at all)
312
+ - `multi-agent-dev`: 0 → 3 → 5 → 6 → 7 (phases 1/2/4 are NOT TaskCreate'd at all)
313
+ - `multi-agent-dev-autopilot`, `multi-agent-dev-local`, `multi-agent-dev-local-autopilot`: 0 → 3 → 6 → 7 (phases 1/2/4/5 are NOT TaskCreate'd at all - the autopilot/local variants drop the interactive Phase 5 test gate)
313
314
 
314
315
  Full contract: `refs/tracker-contract.md` section "TaskCreate ordering (strict)".
315
316
 
@@ -41,8 +41,9 @@ multi-agent-channels PROJ-12345 --dry-run # preview, no POST
41
41
  3. **Menu (multi-select)** - channel + content, previous selections pre-ticked from `prefs.global.reportChannels` + `prefs.global.reportContent`. Greyed-out rules per context availability.
42
42
  4. **Mode short-circuit** - `--channels X,Y` + `--content A,B` flags skip menu. Autopilot ALWAYS pauses at the menu (v5.7+ Phase 7 exception).
43
43
  5. **Generator** - for each selected content source, produce a section body. Humanizer pass per channel separately.
44
- 6. **Channel dispatch** - parallel adapter calls: PR description (reviewer-preserving PUT on Bitbucket), Jira comment (wiki markup), Confluence page (storage format + parent page), Wiki (component adapter - Case A scope multi-select or Case B precondition menu).
45
- 7. **Summary** - per-adapter status line, persist selections to prefs.
44
+ 6. **Body preview + approval gate** - interactive runs render every selected channel's final body and ask Approve & post / Edit (loop) / Skip channels / Cancel BEFORE any external write. Skipped only by autopilot and `--dry-run`. What is posted is byte-identical to the approved preview.
45
+ 7. **Channel dispatch** - parallel adapter calls, never before the gate resolves: PR description (reviewer-preserving PUT on Bitbucket), Jira comment (wiki markup), Confluence page (storage format + parent page), Wiki (component adapter - Case A scope multi-select or Case B precondition menu).
46
+ 8. **Summary** - per-adapter status line, persist selections to prefs.
46
47
 
47
48
  ## Multi-select menu
48
49
 
@@ -222,6 +223,7 @@ Target length: < 80 lines (fits one screen). Auto-diff capped at 5 lines per sec
222
223
  - No markers - full replace each run, no `<!-- channels:start -->` bookmarks.
223
224
  - Every body item references a file/symbol/line from diff or pipeline log. No generic sentences.
224
225
  - Adapter failures are non-blocking - one channel failing does NOT abort others.
226
+ - Approval before post - interactive runs never write to an external channel without the step 6 preview + approval. Autopilot and `--dry-run` are the only bypasses.
225
227
 
226
228
  ## Error handling
227
229
 
@@ -0,0 +1,39 @@
1
+ ---
2
+ name: multi-agent-generate-bug
3
+ language: en
4
+ description: "Create a standards-compliant Jira Bug: mines project conventions, drafts in outputLanguage, full preview + explicit approval before create."
5
+ user-invocable: true
6
+ argument-hint: "[\"<free-text description>\"] [figma-url] - both optional; pasted logs/screens in the text land in Steps to Reproduce / Environment"
7
+ ---
8
+
9
+ # multi-agent generate-bug - Standards-Compliant Jira Bug Creator
10
+
11
+ **Input**: $ARGUMENTS
12
+
13
+ Creates exactly one Jira **Bug**, and only after explicit approval. No branches, no commits, no worktrees. Profile: `ISSUE_TYPE=Bug`; default description sections: Steps to Reproduce, Expected Result, Actual Result, Environment, Design Reference (only when a Figma URL is given), Notes.
14
+
15
+ > **Language**: issue content (summary + description) and user-facing questions follow `prefs.global.outputLanguage` - intentional exception to the "external payloads stay English" default (the issue is authored for the user's team). Code identifiers and URLs stay verbatim.
16
+
17
+ ## Steps
18
+
19
+ 1. **Account + token** - pick the Jira account (auto-select when single), then:
20
+ ```bash
21
+ TOKEN=$(~/.copilot/lib/credential-store.sh get "$ACCOUNT_JIRA_TOKEN_KEY")
22
+ ```
23
+ Missing/expired (401) → Token Save Flow; user skips → abort, nothing created.
24
+ 2. **Project key** - `figmaConfig.jira.projectKey` → `prefs.global.defaultJiraKey` → fetch `GET /rest/api/2/project`, ask, cache the choice.
25
+ 3. **Parse input** - `figma.com` URL in `$ARGUMENTS` → `FIGMA_URL` (node-id `-` → `:`); the rest is `FREE_TEXT`. Logs, stack traces, and device/OS mentions map into Steps to Reproduce / Environment. Both empty → ask for a description. Figma URL is always optional.
26
+ 4. **Convention mining + field discovery + sprint** (read-only GETs):
27
+ - Sample: `GET /rest/api/2/search?jql=project={KEY} AND issuetype=Bug ORDER BY created DESC&fields=summary,description,labels,components,priority,fixVersions&maxResults=30`. Extract summary prefix pattern (>= 40% threshold), dominant description heading set (>= 50% overrides the profile sections), top-5 labels/components, modal priority, epic usage rate.
28
+ - `GET /rest/api/2/issue/createmeta?projectKeys={KEY}&issuetypeNames=Bug&expand=projects.issuetypes.fields` (404/empty → paged DC endpoint fallback). Required custom fields → step 6 questions with allowedValues options. Detect Sprint/Epic/Team fields generically via `schema.custom` ids.
29
+ - `GET /rest/agile/1.0/board?projectKeyOrId={KEY}` → (ask when multiple) → `GET /rest/agile/1.0/board/{id}/sprint?state=active`. No board/Agile 404 → sprint option silently omitted.
30
+ 5. **Figma context** (only when `FIGMA_URL` set) - 3-tier chain (MCP → REST figma_pat → user screenshot); standalone command, MCP allowed here. Figma failures never block issue creation.
31
+ 6. **Draft + clarifying questions** - compose summary (`{minedPrefix} {title}`, 255 trunc) + description (mined heading set or profile sections, Jira wiki markup `h3.`, humanizer pass) in `outputLanguage`; body to a file for `jq -n --rawfile` (UTF-8 verbatim, `--data-binary @file`, no re-encode). Ask ONLY genuinely unknown fields: component, epic (when usage rate is high), priority (when norm ambiguous), labels, assignee, sprint vs backlog, required customs, missing Steps to Reproduce / Environment. Never invent repro steps or environments the user did not supply.
32
+ 7. **Full preview + approval gate (never skipped)** - render the complete issue (all fields + full description + attachment plan, screenshot default off). Ask: `Approve` / `Edit` (apply → re-render → re-ask, loop) / `Cancel` (nothing created). No flag or mode bypasses this gate.
33
+ 8. **Create** - `POST /rest/api/2/issue` with `jq -n --rawfile` payload + `curl --data-binary @file`. 400 field errors → show verbatim, re-ask those fields, re-preview.
34
+ 9. **Post-create** (each failure-isolated: warn + continue): sprint chosen → `POST /rest/agile/1.0/sprint/{id}/issue` `{"issues":["KEY"]}`; Figma → `POST /rest/api/2/issue/{KEY}/remotelink`; screenshot opt-in → `POST /rest/api/2/issue/{KEY}/attachments` with `X-Atlassian-Token: no-check`.
35
+ 10. **Report** - `Created {KEY}: https://{host}/browse/{KEY}` + which post-steps ran.
36
+
37
+ ## Error paths
38
+
39
+ 401 token → Save Flow or abort (nothing created); mining/createmeta 403 → profile defaults + reactive 400 handling; zero sampled issues → skip mining, note in preview; no board/active sprint → backlog implied, say so; create 5xx → one retry then abort keeping the draft file; post-create failure → warn + continue.
@@ -0,0 +1,39 @@
1
+ ---
2
+ name: multi-agent-generate-task
3
+ language: en
4
+ description: "Create a standards-compliant Jira Task: mines project conventions, drafts in outputLanguage, full preview + explicit approval before create."
5
+ user-invocable: true
6
+ argument-hint: "[\"<free-text description>\"] [figma-url] - both optional, asked interactively when missing"
7
+ ---
8
+
9
+ # multi-agent generate-task - Standards-Compliant Jira Task Creator
10
+
11
+ **Input**: $ARGUMENTS
12
+
13
+ Creates exactly one Jira **Task**, and only after explicit approval. No branches, no commits, no worktrees. Profile: `ISSUE_TYPE=Task`; default description sections: Goal, Scope, Acceptance Criteria, Design Reference (only when a Figma URL is given), Notes.
14
+
15
+ > **Language**: issue content (summary + description) and user-facing questions follow `prefs.global.outputLanguage` - intentional exception to the "external payloads stay English" default (the issue is authored for the user's team). Code identifiers and URLs stay verbatim.
16
+
17
+ ## Steps
18
+
19
+ 1. **Account + token** - pick the Jira account (auto-select when single), then:
20
+ ```bash
21
+ TOKEN=$(~/.copilot/lib/credential-store.sh get "$ACCOUNT_JIRA_TOKEN_KEY")
22
+ ```
23
+ Missing/expired (401) → Token Save Flow; user skips → abort, nothing created.
24
+ 2. **Project key** - `figmaConfig.jira.projectKey` → `prefs.global.defaultJiraKey` → fetch `GET /rest/api/2/project`, ask, cache the choice.
25
+ 3. **Parse input** - `figma.com` URL in `$ARGUMENTS` → `FIGMA_URL` (node-id `-` → `:`); the rest is `FREE_TEXT`. Both empty → ask for a description. Figma URL is always optional.
26
+ 4. **Convention mining + field discovery + sprint** (read-only GETs):
27
+ - Sample: `GET /rest/api/2/search?jql=project={KEY} AND issuetype=Task ORDER BY created DESC&fields=summary,description,labels,components,priority,fixVersions&maxResults=30`. Extract summary prefix pattern (>= 40% threshold), dominant description heading set (>= 50% overrides the profile sections), top-5 labels/components, modal priority, epic usage rate.
28
+ - `GET /rest/api/2/issue/createmeta?projectKeys={KEY}&issuetypeNames=Task&expand=projects.issuetypes.fields` (404/empty → paged DC endpoint fallback). Required custom fields → step 6 questions with allowedValues options. Detect Sprint/Epic/Team fields generically via `schema.custom` ids.
29
+ - `GET /rest/agile/1.0/board?projectKeyOrId={KEY}` → (ask when multiple) → `GET /rest/agile/1.0/board/{id}/sprint?state=active`. No board/Agile 404 → sprint option silently omitted.
30
+ 5. **Figma context** (only when `FIGMA_URL` set) - 3-tier chain (MCP → REST figma_pat → user screenshot); standalone command, MCP allowed here. Figma failures never block issue creation.
31
+ 6. **Draft + clarifying questions** - compose summary (`{minedPrefix} {title}`, 255 trunc) + description (mined heading set or profile sections, Jira wiki markup `h3.`, humanizer pass) in `outputLanguage`; body to a file for `jq -n --rawfile` (UTF-8 verbatim, `--data-binary @file`, no re-encode). Ask ONLY genuinely unknown fields: component, epic (when usage rate is high), priority (when norm ambiguous), labels, assignee, sprint vs backlog, required customs. Never invent content the user did not supply.
32
+ 7. **Full preview + approval gate (never skipped)** - render the complete issue (all fields + full description + attachment plan, screenshot default off). Ask: `Approve` / `Edit` (apply → re-render → re-ask, loop) / `Cancel` (nothing created). No flag or mode bypasses this gate.
33
+ 8. **Create** - `POST /rest/api/2/issue` with `jq -n --rawfile` payload + `curl --data-binary @file`. 400 field errors → show verbatim, re-ask those fields, re-preview.
34
+ 9. **Post-create** (each failure-isolated: warn + continue): sprint chosen → `POST /rest/agile/1.0/sprint/{id}/issue` `{"issues":["KEY"]}`; Figma → `POST /rest/api/2/issue/{KEY}/remotelink`; screenshot opt-in → `POST /rest/api/2/issue/{KEY}/attachments` with `X-Atlassian-Token: no-check`.
35
+ 10. **Report** - `Created {KEY}: https://{host}/browse/{KEY}` + which post-steps ran.
36
+
37
+ ## Error paths
38
+
39
+ 401 token → Save Flow or abort (nothing created); mining/createmeta 403 → profile defaults + reactive 400 handling; zero sampled issues → skip mining, note in preview; no board/active sprint → backlog implied, say so; create 5xx → one retry then abort keeping the draft file; post-create failure → warn + continue.
@@ -98,6 +98,8 @@ Utility Commands (dash form on Copilot, colon form on Claude Code):
98
98
  /multi-agent:purge Worktree + logs - full reset (double confirm)
99
99
  /multi-agent:channels Post multi-channel report (Jira/Confluence/Wiki/PR)
100
100
  /multi-agent:review Review current diff only
101
+ /multi-agent:generate-task ["desc"] [figma-url] Create a Jira Task matching team conventions (preview + approval)
102
+ /multi-agent:generate-bug ["desc"] [figma-url] Create a Jira Bug matching team conventions (preview + approval)
101
103
  /multi-agent:sync Sync ecosystem (Claude + Copilot + website + remote-control)
102
104
  /multi-agent:setup Keychain tokens + Git identity + language onboarding
103
105
  /multi-agent:language [en|tr] Show or set prompt language
@@ -233,6 +235,8 @@ Utility Komutları:
233
235
  /multi-agent:purge Worktree + log'lar - tam reset (çift onay)
234
236
  /multi-agent:channels Multi-channel rapor gönder (Jira/Confluence/Wiki/PR)
235
237
  /multi-agent:review Sadece mevcut diff'i review et
238
+ /multi-agent:generate-task ["açıklama"] [figma-url] Takım standartlarına uygun Jira Task oluştur (önizleme + onay)
239
+ /multi-agent:generate-bug ["açıklama"] [figma-url] Takım standartlarına uygun Jira Bug oluştur (önizleme + onay)
236
240
  /multi-agent:sync Ekosistemi senkronize et
237
241
  /multi-agent:setup Keychain token + Git kimliği + dil onboarding
238
242
  /multi-agent:language [en|tr] Prompt dilini göster veya ayarla
@@ -33,7 +33,7 @@ Run all steps automatically:
33
33
  Step 0: FIGMA_SYNC (opt-in) pipeline/scripts/sync-figma-source.sh
34
34
  -- incremental pull from upstream if figmaSource.path is set
35
35
  Step 1: DETECT Compare timestamps, find stale targets
36
- Step 2: COPILOT Claude Code -> Copilot CLI (instructions + 35 sub-command skills)
36
+ Step 2: COPILOT Claude Code -> Copilot CLI (instructions + 37 sub-command skills)
37
37
  Step 3: REPO Claude Code -> pipeline repo (genericized, personal data scrub)
38
38
  Step 4: WEBSITE Version + phase/model counts -> {website-host} (i18n + projects.ts)
39
39
  Step 5: REMOTE Pipeline references -> remote-control README
@@ -158,14 +158,14 @@ When invoked with the `release` argument:
158
158
  |-------------|-------------|
159
159
  | `~/.claude/commands/multi-agent/{cmd}.md` | `~/.copilot/skills/multi-agent-{cmd}/SKILL.md` |
160
160
 
161
- **35 commands are synced** (canonical inventory - must match `cross-cli-contract.md` section 1; drift = contract violation):
161
+ **37 commands are synced** (canonical inventory - must match `cross-cli-contract.md` section 1; drift = contract violation):
162
162
 
163
163
  ```
164
164
  analysis, analysis-resolve, autopilot, build-optimize, channels, delete, dev,
165
165
  dev-autopilot, dev-local, dev-local-autopilot, diff-explain, finish, garbage-collect,
166
- help, issue, jira, kill, language, local, local-autopilot, log, manual-test,
167
- prune-logs, purge, refactor, resume, review, scan, search, setup, stack, status,
168
- sync, test, update
166
+ generate-bug, generate-task, help, issue, jira, kill, language, local,
167
+ local-autopilot, log, manual-test, prune-logs, purge, refactor, resume, review,
168
+ scan, search, setup, stack, status, sync, test, update
169
169
  ```
170
170
 
171
171
  **NOT synced**: `refs/*` - Lazy-load references, Claude Code specific
@@ -3,7 +3,7 @@
3
3
  > Auto-generated by `pipeline/scripts/build-skills-index.mjs` - do not hand-edit.
4
4
  > Regenerate with `node pipeline/scripts/build-skills-index.mjs`.
5
5
 
6
- **222 skills** across 5 groups.
6
+ **224 skills** across 5 groups.
7
7
 
8
8
  | Group | Name | Platform | Description |
9
9
  |-------|------|----------|-------------|
@@ -121,7 +121,7 @@
121
121
  | external | `mapkit-location` | - | Implement, review, or improve maps and location features in iOS/macOS apps using MapKit and CoreLocation. Use when working with Map views, a |
122
122
  | external | `metrickit-diagnostics` | - | Collect and analyze on-device performance metrics and crash diagnostics using MetricKit. Use when setting up MXMetricManager, handling MXMet |
123
123
  | external | `monorepo-architect` | - | Expert in monorepo architecture, build systems, and dependency management at scale. Masters Nx, Turborepo, Bazel, and Lerna for efficient mu |
124
- | core | `multi-agent` | - | Task orchestrator: runs the full pipeline from a Jira ID or GitHub Issue URL - analysis → plan → TDD development → parallel review (Opus + |
124
+ | core | `multi-agent` | - | Task orchestrator: runs the full pipeline from a Jira ID or GitHub Issue URL - analysis → plan → TDD development → parallel review (Fable |
125
125
  | core | `multi-agent-analysis` | - | Standalone feature-spec analysis (v3 template). Platform-agnostic concept layer with repo-driven convention extraction and per-platform Pass |
126
126
  | core | `multi-agent-analysis-resolve` | - | 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 candida |
127
127
  | core | `multi-agent-autopilot` | - | Launch any task in autopilot mode: skips every confirmation, runs end-to-end autonomously. |
@@ -135,6 +135,8 @@
135
135
  | core | `multi-agent-diff-explain` | - | 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 |
136
136
  | core | `multi-agent-finish` | - | Continue already-done LOCAL work through the pipeline tail: Review → Build+Test → Commit/PR → Report (technical analysis + Jira test-scenari |
137
137
  | core | `multi-agent-garbage-collect` | - | Sweep leftover /tmp scratch (picker state, review diffs, channel payloads, analysis drafts) from past runs. Dry-run first; confirms before d |
138
+ | core | `multi-agent-generate-bug` | - | Create a standards-compliant Jira Bug: mines project conventions, drafts in outputLanguage, full preview + explicit approval before create. |
139
+ | core | `multi-agent-generate-task` | - | Create a standards-compliant Jira Task: mines project conventions, drafts in outputLanguage, full preview + explicit approval before create. |
138
140
  | core | `multi-agent-help` | - | Multi-agent pipeline usage guide - renders in EN or TR per prefs.global.outputLanguage (falls back to promptLanguage for backward compatib |
139
141
  | core | `multi-agent-issue` | - | List unassigned GitHub issues, pick one, auto-assign, and launch the multi-agent pipeline. |
140
142
  | core | `multi-agent-jira` | - | List open Jira issues, pick one, and launch the multi-agent pipeline. |
@@ -148,7 +150,7 @@
148
150
  | core | `multi-agent-purge` | - | ⚠️ Wipes every worktree, branch, log, and state file. Irreversible; asks for double confirmation. |
149
151
  | core | `multi-agent-refactor` | - | Analyse the project, score it, draft an improvement plan, take approval, develop, then ask whether to sync. |
150
152
  | core | `multi-agent-resume` | - | Resume a stopped or failed task from the phase where it left off. |
151
- | core | `multi-agent-review` | - | Run parallel review on the current branch's diff: 2 models on Claude Code (Opus + Sonnet), 3 models on Copilot CLI (GPT + Opus + Sonnet). Re |
153
+ | core | `multi-agent-review` | - | Run parallel review on the current branch's diff: 2 models on Claude Code (Fable + Sonnet), 3 models on Copilot CLI (GPT + Opus + Sonnet). R |
152
154
  | core | `multi-agent-scan` | - | Skill security scan: walks local skill directories against a tiered pattern catalog. |
153
155
  | core | `multi-agent-search` | - | Log search across every agent-log.md with smart ranking and filters. Optional --semantic flag queries the per-repo triage corpus. |
154
156
  | core | `multi-agent-setup` | - | First-run setup wizard: keychain token discovery, Git Identity onboarding, and pipeline preparation. |