@mmerterden/multi-agent-pipeline 10.12.0 → 11.1.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 (34) hide show
  1. package/CHANGELOG.md +58 -0
  2. package/install/templates/claude-hooks.json +18 -1
  3. package/package.json +1 -1
  4. package/pipeline/commands/multi-agent/generate.md +34 -0
  5. package/pipeline/commands/multi-agent/help.md +6 -8
  6. package/pipeline/commands/multi-agent/refs/cross-cli-contract.md +5 -5
  7. package/pipeline/commands/multi-agent/refs/features/autopilot-circuit-breaker.md +32 -0
  8. package/pipeline/commands/multi-agent/refs/generate-issue.md +123 -53
  9. package/pipeline/commands/multi-agent/refs/phases/modes.md +1 -0
  10. package/pipeline/commands/multi-agent/refs/picker-contract.md +1 -1
  11. package/pipeline/commands/multi-agent/sync.md +9 -9
  12. package/pipeline/commands/multi-agent.md +2 -4
  13. package/pipeline/scripts/agent-guard.py +74 -0
  14. package/pipeline/scripts/agent-guard.sh +48 -0
  15. package/pipeline/scripts/build-stack-plugins.mjs +1 -1
  16. package/pipeline/scripts/fixtures/install-layout.tsv +4 -4
  17. package/pipeline/scripts/scan-agent-config.sh +107 -0
  18. package/pipeline/scripts/smoke-agent-guard.sh +74 -0
  19. package/pipeline/scripts/smoke-autopilot-circuit-breaker.sh +36 -0
  20. package/pipeline/scripts/smoke-config-hygiene.sh +58 -0
  21. package/pipeline/scripts/smoke-gate-hooks.sh +18 -0
  22. package/pipeline/scripts/smoke-generate-issue.sh +44 -39
  23. package/pipeline/skills/.skills-index.json +32 -14
  24. package/pipeline/skills/shared/core/multi-agent-generate/SKILL.md +51 -0
  25. package/pipeline/skills/shared/core/multi-agent-help/SKILL.md +2 -4
  26. package/pipeline/skills/shared/core/multi-agent-sync/SKILL.md +2 -2
  27. package/pipeline/skills/shared/external/agent-introspection-debugging/SKILL.md +69 -0
  28. package/pipeline/skills/shared/external/council/SKILL.md +69 -0
  29. package/pipeline/skills/shared/external/search-first/SKILL.md +76 -0
  30. package/pipeline/skills/skills-index.md +5 -3
  31. package/pipeline/commands/multi-agent/generate-bug.md +0 -33
  32. package/pipeline/commands/multi-agent/generate-task.md +0 -33
  33. package/pipeline/skills/shared/core/multi-agent-generate-bug/SKILL.md +0 -39
  34. package/pipeline/skills/shared/core/multi-agent-generate-task/SKILL.md +0 -39
@@ -1,26 +1,24 @@
1
1
  #!/usr/bin/env bash
2
- # smoke-generate-issue.sh - contract for /multi-agent:generate-task + generate-bug.
2
+ # smoke-generate-issue.sh - contract for /multi-agent:generate.
3
3
  #
4
4
  # Verifies:
5
- # 1. All 5 files exist (2 commands, shared ref, 2 Copilot SKILL.md).
5
+ # 1. All 3 files exist (1 command, shared ref, 1 Copilot/plugin SKILL.md).
6
6
  # 2. Frontmatter keys present on both surfaces.
7
- # 3. Commands delegate to refs/generate-issue.md and declare their ISSUE_TYPE.
7
+ # 3. Command delegates to refs/generate-issue.md and asks the issue type.
8
8
  # 4. Approval gate documented and marked unskippable in the ref.
9
9
  # 5. Convention mining + createmeta + Agile sprint endpoints present.
10
10
  # 6. UTF-8 verbatim POST path (--rawfile + --data-binary) present.
11
- # 7. Profile section vocab: Task (Goal/Scope/Acceptance), Bug (Steps/Expected/Actual/Environment).
12
- # 8. Registration: dispatcher rows, inventory lists, count consistency (37).
11
+ # 7. Standard template vocab: Task/Story (Scope/Acceptance/Test Scenarios), Bug (Steps/Expected/Actual/Environment), Swagger.
12
+ # 8. Registration: dispatcher rows, inventory lists, count consistency (36).
13
13
  # 9. Forbidden strings absent (em-dash, section sign, the M-word, unicode_escape).
14
14
 
15
15
  set -euo pipefail
16
16
 
17
17
  HERE="$(cd "$(dirname "$0")" && pwd)"
18
18
  ROOT="$(cd "$HERE/../.." && pwd)"
19
- CMD_TASK="$ROOT/pipeline/commands/multi-agent/generate-task.md"
20
- CMD_BUG="$ROOT/pipeline/commands/multi-agent/generate-bug.md"
19
+ CMD="$ROOT/pipeline/commands/multi-agent/generate.md"
21
20
  REF="$ROOT/pipeline/commands/multi-agent/refs/generate-issue.md"
22
- SKILL_TASK="$ROOT/pipeline/skills/shared/core/multi-agent-generate-task/SKILL.md"
23
- SKILL_BUG="$ROOT/pipeline/skills/shared/core/multi-agent-generate-bug/SKILL.md"
21
+ SKILL="$ROOT/pipeline/skills/shared/core/multi-agent-generate/SKILL.md"
24
22
  DISPATCHER="$ROOT/pipeline/commands/multi-agent.md"
25
23
  CONTRACT="$ROOT/pipeline/commands/multi-agent/refs/cross-cli-contract.md"
26
24
  SYNC="$ROOT/pipeline/commands/multi-agent/sync.md"
@@ -32,30 +30,30 @@ pass() { PASS=$((PASS+1)); echo " ✓ $1"; }
32
30
  fail() { FAIL=$((FAIL+1)); echo " ✗ $1"; }
33
31
 
34
32
  echo "→ 1. files exist"
35
- for f in "$CMD_TASK" "$CMD_BUG" "$REF" "$SKILL_TASK" "$SKILL_BUG"; do
33
+ for f in "$CMD" "$REF" "$SKILL"; do
36
34
  if [ -f "$f" ]; then pass "exists: ${f#$ROOT/}"; else fail "missing: ${f#$ROOT/}"; fi
37
35
  done
36
+ # old split commands must be gone
37
+ for f in "$ROOT/pipeline/commands/multi-agent/generate-task.md" "$ROOT/pipeline/commands/multi-agent/generate-bug.md"; do
38
+ if [ -f "$f" ]; then fail "stale file present: ${f#$ROOT/}"; else pass "removed: ${f##*/}"; fi
39
+ done
38
40
  [ "$FAIL" -eq 0 ] || { echo "══ generate-issue smoke: $PASS passed, $FAIL failed ══"; exit 1; }
39
41
 
40
42
  echo ""
41
43
  echo "→ 2. frontmatter keys"
42
- for f in "$CMD_TASK" "$CMD_BUG"; do
43
- head -5 "$f" | grep -q '^description:' && pass "description: ${f##*/}" || fail "description missing: ${f##*/}"
44
- head -5 "$f" | grep -q '^argument-hint:' && pass "argument-hint: ${f##*/}" || fail "argument-hint missing: ${f##*/}"
45
- done
46
- for f in "$SKILL_TASK" "$SKILL_BUG"; do
47
- head -8 "$f" | grep -q '^name: multi-agent-generate-' && pass "name: ${f%/*}" || fail "name missing: $f"
48
- head -8 "$f" | grep -q '^language: en' && pass "language en" || fail "language missing: $f"
49
- head -8 "$f" | grep -q '^user-invocable: true' && pass "user-invocable" || fail "user-invocable missing: $f"
50
- done
44
+ head -5 "$CMD" | grep -q '^description:' && pass "description: ${CMD##*/}" || fail "description missing: ${CMD##*/}"
45
+ head -5 "$CMD" | grep -q '^argument-hint:' && pass "argument-hint: ${CMD##*/}" || fail "argument-hint missing: ${CMD##*/}"
46
+ head -8 "$SKILL" | grep -q '^name: multi-agent-generate$' && pass "name: multi-agent-generate" || fail "name wrong: $SKILL"
47
+ head -8 "$SKILL" | grep -q '^language: en' && pass "language en" || fail "language missing: $SKILL"
48
+ head -8 "$SKILL" | grep -q '^user-invocable: true' && pass "user-invocable" || fail "user-invocable missing: $SKILL"
51
49
 
52
50
  echo ""
53
- echo "→ 3. commands delegate to the shared ref with a profile"
54
- for f in "$CMD_TASK" "$CMD_BUG"; do
55
- grep -Fq "refs/generate-issue.md" "$f" && pass "ref link: ${f##*/}" || fail "ref link missing: ${f##*/}"
51
+ echo "→ 3. command delegates to the shared ref and asks the type"
52
+ grep -Fq "refs/generate-issue.md" "$CMD" && pass "ref link present" || fail "ref link missing"
53
+ for t in "Task" "Bug" "Story"; do
54
+ grep -Fq "$t" "$CMD" && pass "type offered: $t" || fail "type missing: $t"
56
55
  done
57
- grep -Fq '`ISSUE_TYPE` | `Task`' "$CMD_TASK" && pass "ISSUE_TYPE=Task declared" || fail "ISSUE_TYPE=Task missing"
58
- grep -Fq '`ISSUE_TYPE` | `Bug`' "$CMD_BUG" && pass "ISSUE_TYPE=Bug declared" || fail "ISSUE_TYPE=Bug missing"
56
+ grep -Fqi "Pick issue type" "$REF" && pass "type-selection step present" || fail "type-selection step missing"
59
57
 
60
58
  echo ""
61
59
  echo "→ 4. approval gate documented and unskippable"
@@ -79,31 +77,38 @@ grep -Fq -- "--data-binary" "$REF" && pass "--data-binary present" || fail "--da
79
77
  grep -Fqi "humanizer" "$REF" && pass "humanizer pass referenced" || fail "humanizer missing"
80
78
 
81
79
  echo ""
82
- echo "→ 7. profile section vocabulary"
83
- for s in "Goal" "Scope" "Acceptance Criteria"; do
84
- grep -Fq "$s" "$CMD_TASK" && pass "task section: $s" || fail "task section missing: $s"
80
+ echo "→ 7. standard template vocabulary + auto-sizing + swagger"
81
+ for s in "Scope" "Acceptance Criteria" "Test Scenarios"; do
82
+ grep -Fq "$s" "$REF" && pass "task/story section: $s" || fail "task/story section missing: $s"
85
83
  done
86
84
  for s in "Steps to Reproduce" "Expected Result" "Actual Result" "Environment"; do
87
- grep -Fq "$s" "$CMD_BUG" && pass "bug section: $s" || fail "bug section missing: $s"
85
+ grep -Fq "$s" "$REF" && pass "bug section: $s" || fail "bug section missing: $s"
88
86
  done
87
+ grep -Fqi "auto-sizing" "$REF" && pass "auto-sizing rule present" || fail "auto-sizing rule missing"
88
+ grep -Fqi "swagger" "$REF" && pass "swagger context present" || fail "swagger context missing"
89
89
 
90
90
  echo ""
91
- echo "→ 8. registration + count consistency (37)"
92
- grep -Fq '| `generate-task' "$DISPATCHER" && pass "dispatcher routing: generate-task" || fail "dispatcher routing missing: generate-task"
93
- grep -Fq '| `generate-bug' "$DISPATCHER" && pass "dispatcher routing: generate-bug" || fail "dispatcher routing missing: generate-bug"
94
- grep -Fq "generate-task.md" "$DISPATCHER" && pass "dispatcher loading row" || fail "dispatcher loading row missing"
95
- grep -Fq "## 1. Command Inventory (37 commands)" "$CONTRACT" && pass "contract count = 37" || fail "contract count wrong"
96
- grep -Eq '(^|[ ,])generate-bug, generate-task([ ,]|$)' "$CONTRACT" && pass "contract list has both" || fail "contract list missing entries"
97
- grep -Fq "**37 commands are synced**" "$SYNC" && pass "sync count = 37" || fail "sync count wrong"
91
+ echo "→ 8. registration + count consistency (36)"
92
+ grep -Fq '| `generate ' "$DISPATCHER" && pass "dispatcher routing: generate" || fail "dispatcher routing missing: generate"
93
+ grep -Fq "generate.md" "$DISPATCHER" && pass "dispatcher loading row" || fail "dispatcher loading row missing"
94
+ grep -Fq "## 1. Command Inventory (36 commands)" "$CONTRACT" && pass "contract count = 36" || fail "contract count wrong"
95
+ grep -Eq '(^|[ ,])generate, help([ ,]|$)' "$CONTRACT" && pass "contract list has generate" || fail "contract list missing generate"
96
+ grep -Fq "**36 commands are synced**" "$SYNC" && pass "sync count = 36" || fail "sync count wrong"
98
97
  SYNC_SKILL="$ROOT/pipeline/skills/shared/core/multi-agent-sync/SKILL.md"
99
- grep -Fq "**37 commands are synced**" "$SYNC_SKILL" && pass "sync SKILL count = 37" || fail "sync SKILL count wrong (Copilot parity)"
100
- grep -Fq "generate-task" "$ROOT/pipeline/skills/shared/core/multi-agent-help/SKILL.md" && pass "help SKILL lists generators" || fail "help SKILL missing generators (Copilot parity)"
101
- grep -c "generate-task" "$HELP" | awk '{exit !($1>=2)}' && pass "help.md has EN + TR entries" || fail "help.md entries incomplete"
98
+ grep -Fq "**36 commands are synced**" "$SYNC_SKILL" && pass "sync SKILL count = 36" || fail "sync SKILL count wrong (Copilot parity)"
99
+ grep -Fq "generate" "$ROOT/pipeline/skills/shared/core/multi-agent-help/SKILL.md" && pass "help SKILL lists generate" || fail "help SKILL missing generate (Copilot parity)"
100
+ grep -c "multi-agent:generate" "$HELP" | awk '{exit !($1>=2)}' && pass "help.md has EN + TR entries" || fail "help.md entries incomplete"
101
+ # no stale split-command references anywhere in the synced surfaces
102
+ if grep -rqE "generate-task|generate-bug" "$DISPATCHER" "$CONTRACT" "$SYNC" "$HELP" "$CMD" "$REF" "$SKILL"; then
103
+ fail "stale generate-task/generate-bug reference found"
104
+ else
105
+ pass "no stale split-command references"
106
+ fi
102
107
 
103
108
  echo ""
104
109
  echo "→ 9. forbidden strings absent"
105
110
  MWORD="MAN""DATORY"
106
- for f in "$CMD_TASK" "$CMD_BUG" "$REF" "$SKILL_TASK" "$SKILL_BUG"; do
111
+ for f in "$CMD" "$REF" "$SKILL"; do
107
112
  if grep -q $'—\|§\|…' "$f"; then fail "forbidden unicode punctuation in ${f##*/}"; else pass "punctuation clean: ${f##*/}"; fi
108
113
  if grep -q "$MWORD" "$f"; then fail "forbidden word in ${f##*/}"; else pass "vocabulary clean: ${f##*/}"; fi
109
114
  if grep -q "unicode_escape" "$f" && ! grep -q "Never round-trip" "$f"; then fail "unicode_escape misuse in ${f##*/}"; else pass "encoding rule clean: ${f##*/}"; fi
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "schemaVersion": "1.0.0",
3
- "generatedAt": "2026-07-06T11:38:47.307Z",
4
- "skillCount": 224,
3
+ "generatedAt": "2026-07-07T15:10:40.029Z",
4
+ "skillCount": 226,
5
5
  "entries": [
6
6
  {
7
7
  "name": "accessibility-compliance-accessibility-audit",
@@ -12,6 +12,15 @@
12
12
  "triggerPaths": [],
13
13
  "relativePath": "shared/external/accessibility-compliance-accessibility-audit/SKILL.md"
14
14
  },
15
+ {
16
+ "name": "agent-introspection-debugging",
17
+ "description": "|",
18
+ "platform": null,
19
+ "group": "external",
20
+ "triggerKeywords": [],
21
+ "triggerPaths": [],
22
+ "relativePath": "shared/external/agent-introspection-debugging/SKILL.md"
23
+ },
15
24
  {
16
25
  "name": "agentflow",
17
26
  "description": "Orchestrate autonomous AI development pipelines through your Kanban board (Asana, GitHub Projects, Linear). Manages multi-worker Claude Code dispatch, deterministic quality gates, adversarial review, per-task cost tracking, and crash-proof pipeline execution.",
@@ -327,6 +336,15 @@
327
336
  "triggerPaths": [],
328
337
  "relativePath": "shared/external/coreml/SKILL.md"
329
338
  },
339
+ {
340
+ "name": "council",
341
+ "description": "|",
342
+ "platform": null,
343
+ "group": "external",
344
+ "triggerKeywords": [],
345
+ "triggerPaths": [],
346
+ "relativePath": "shared/external/council/SKILL.md"
347
+ },
330
348
  {
331
349
  "name": "cryptokit",
332
350
  "description": "Use Apple CryptoKit for Swift cryptographic primitives. Use when hashing with SHA-2 or SHA-3, generating HMACs, encrypting with AES-GCM or ChaChaPoly, signing with P256/P384/P521/Curve25519 or ML-DSA keys, performing ECDH, HPKE, ML-KEM, or X-Wing key exchange, using Secure Enclave CryptoKit keys, or",
@@ -1156,22 +1174,13 @@
1156
1174
  "relativePath": "shared/core/multi-agent-garbage-collect/SKILL.md"
1157
1175
  },
1158
1176
  {
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.",
1177
+ "name": "multi-agent-generate",
1178
+ "description": "Create a standards-compliant Jira issue (Task / Bug / Story): asks the type, mines project conventions, drafts from a standard template with auto-sizing sections, full preview + explicit approval before create.",
1161
1179
  "platform": null,
1162
1180
  "group": "core",
1163
1181
  "triggerKeywords": [],
1164
1182
  "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"
1183
+ "relativePath": "shared/core/multi-agent-generate/SKILL.md"
1175
1184
  },
1176
1185
  {
1177
1186
  "name": "multi-agent-help",
@@ -1578,6 +1587,15 @@
1578
1587
  "triggerPaths": [],
1579
1588
  "relativePath": "shared/external/room-database/SKILL.md"
1580
1589
  },
1590
+ {
1591
+ "name": "search-first",
1592
+ "description": "|",
1593
+ "platform": null,
1594
+ "group": "external",
1595
+ "triggerKeywords": [],
1596
+ "triggerPaths": [],
1597
+ "relativePath": "shared/external/search-first/SKILL.md"
1598
+ },
1581
1599
  {
1582
1600
  "name": "shareplay-activities",
1583
1601
  "description": "Build shared real-time experiences using GroupActivities and SharePlay. Use when implementing shared media playback, collaborative app features, synchronized game state, or any FaceTime, Messages, AirDrop, or nearby visionOS group activity on iOS, macOS, tvOS, or visionOS.",
@@ -0,0 +1,51 @@
1
+ ---
2
+ name: multi-agent-generate
3
+ language: en
4
+ description: "Create a standards-compliant Jira issue (Task / Bug / Story): asks the type, mines project conventions, drafts from a standard template with auto-sizing sections, full preview + explicit approval before create."
5
+ user-invocable: true
6
+ argument-hint: "[\"<free-text description>\"] [figma-url] [swagger-url] - all optional, asked interactively when missing"
7
+ ---
8
+
9
+ # multi-agent generate - Standards-Compliant Jira Issue Creator
10
+
11
+ **Input**: $ARGUMENTS
12
+
13
+ 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. The description comes from the type's standard template (baseline, not a mined heading set); sections auto-size - a conditional section renders only when its trigger is present, otherwise the heading is omitted.
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
+ ## Standard templates (A = always, C = conditional)
18
+
19
+ - **Task**: Detailed Description (A), Scope (A), Acceptance Criteria (A), Test Scenarios (A); API Contract/Swagger (C), Design Reference (C), Screenshots (C), Notes (C).
20
+ - **Bug**: Detailed Description (A), Steps to Reproduce (A), Expected Result (A), Actual Result (A), Environment (A); Screenshots/Logs (C), Regression/Test Scenario (C), API Contract (C), Design Reference (C), Notes (C).
21
+ - **Story**: User Story (A), Detailed Description (A), Scope (A), Acceptance Criteria (A), Test Scenarios (A); API Contract/Swagger (C), Design Reference (C), Screenshots (C), Dependencies/Notes (C).
22
+
23
+ A `C` section fires on: Design Reference → Figma URL; Screenshots → pasted image or fetched Figma render; API Contract → Swagger URL / contract / endpoint mention; Notes → real content. No empty placeholder headings; never invent content.
24
+
25
+ ## Steps
26
+
27
+ 1. **Account + token** - pick the Jira account (auto-select when single), then:
28
+ ```bash
29
+ TOKEN=$(~/.copilot/lib/credential-store.sh get "$ACCOUNT_JIRA_TOKEN_KEY")
30
+ ```
31
+ Missing/expired (401) → Token Save Flow; user skips → abort, nothing created.
32
+ 2. **Project key** - `figmaConfig.jira.projectKey` → `prefs.global.defaultJiraKey` → fetch `GET /rest/api/2/project`, ask, cache the choice.
33
+ 3. **Pick issue type** - ask (Task / Bug / Story), never inferred silently → `ISSUE_TYPE`. Drives the mining JQL, field discovery, and section skeleton.
34
+ 4. **Parse input** - `figma.com` URL → `FIGMA_URL` (node-id `-` → `:`); OpenAPI/Swagger URL (`swagger`/`openapi`/`api-docs`/`.json`/`.yaml`) → `SWAGGER_URL`; pasted images → screenshots; log/stack-trace text stays with `FREE_TEXT`; the rest is `FREE_TEXT`. All empty → ask for a description. Figma/Swagger/screenshots are always optional.
35
+ 5. **Convention mining + field discovery + sprint** (read-only GETs):
36
+ - Sample: `GET /rest/api/2/search?jql=project={KEY} AND issuetype={TYPE} ORDER BY created DESC&fields=summary,description,labels,components,priority,fixVersions,issuelinks&maxResults=30`. Extract summary prefix pattern (>= 40% threshold), top-5 labels/components, modal priority, epic usage rate, and **test-scenario style**: linked Test-family issues (Xray/Zephyr) → reference them; else a dominant test-scenario heading/checklist style (>= 40%) → reuse it; else inline a skeleton derived from Acceptance Criteria (user edits, never fabricated).
37
+ - `GET /rest/api/2/issue/createmeta?projectKeys={KEY}&issuetypeNames={TYPE}&expand=projects.issuetypes.fields` (404/empty → paged DC endpoint fallback). Required custom fields → step 7 questions with allowedValues options. Detect Sprint/Epic/Team fields generically via `schema.custom` ids.
38
+ - `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.
39
+ 6. **External context** (only for provided sources, each failure-isolated, never blocks create):
40
+ - **Figma** (`FIGMA_URL` set) - 3-tier chain (MCP → REST figma_pat → user screenshot); standalone command, MCP allowed here.
41
+ - **Swagger** (`SWAGGER_URL` set or contract pasted) - fetch the spec, extract ONLY the referenced endpoints (paths/operationIds/tags named in `FREE_TEXT`, else the pointed-at group): method + path + one-line summary + key request/response fields. Never crawl the whole spec. Fetch failure → link-only or omit.
42
+ - **Screenshots** - staged for the step 8 attachment opt-in, referenced inline with `!file|thumbnail!`.
43
+ 7. **Draft + clarifying questions** - compose summary (`{minedPrefix} {title}`, 255 trunc) + description from the type's **standard template** in Jira wiki markup (`h3.`), auto-sizing conditional sections, 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, and any always-present section still empty (Bug Steps/Environment, or a Task/Story with no derivable Scope/AC). Never invent content the user did not supply.
44
+ 8. **Full preview + approval gate (never skipped)** - render the complete issue (all fields + full description + attachment plan, uploads default off). Ask: `Approve` / `Edit` (apply → re-render → re-ask, loop) / `Cancel` (nothing created). No flag or mode bypasses this gate.
45
+ 9. **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.
46
+ 10. **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`; Swagger → `remotelink` with title "API contract"; screenshots opt-in → `POST /rest/api/2/issue/{KEY}/attachments` with `X-Atlassian-Token: no-check`.
47
+ 11. **Report** - `Created {KEY}: https://{host}/browse/{KEY}` + which post-steps ran.
48
+
49
+ ## Error paths
50
+
51
+ 401 token → Save Flow or abort (nothing created); mining/createmeta 403 → standard-template defaults + reactive 400 handling; zero sampled issues → skip mining, AC-derived test-scenario skeleton, note in preview; no board/active sprint → backlog implied, say so; Figma/Swagger failure → degrade (link-only or omit), never block; create 5xx → one retry then abort keeping the draft file; post-create failure → warn + continue.
@@ -98,8 +98,7 @@ 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
+ /multi-agent:generate ["desc"] [figma-url] [swagger-url] Create a Jira Task/Bug/Story matching team conventions (asks type + preview + approval)
103
102
  /multi-agent:sync Sync ecosystem (Claude + Copilot + website + remote-control)
104
103
  /multi-agent:setup Keychain tokens + Git identity + language onboarding
105
104
  /multi-agent:language [en|tr] Show or set prompt language
@@ -235,8 +234,7 @@ Utility Komutları:
235
234
  /multi-agent:purge Worktree + log'lar - tam reset (çift onay)
236
235
  /multi-agent:channels Multi-channel rapor gönder (Jira/Confluence/Wiki/PR)
237
236
  /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)
237
+ /multi-agent:generate ["açıklama"] [figma-url] [swagger-url] Takım standartlarına uygun Jira Task/Bug/Story oluştur (tip sorar + önizleme + onay)
240
238
  /multi-agent:sync Ekosistemi senkronize et
241
239
  /multi-agent:setup Keychain token + Git kimliği + dil onboarding
242
240
  /multi-agent:language [en|tr] Prompt dilini göster veya ayarla
@@ -158,12 +158,12 @@ 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
- **37 commands are synced** (canonical inventory - must match `cross-cli-contract.md` section 1; drift = contract violation):
161
+ **36 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
- generate-bug, generate-task, help, issue, jira, kill, language, local,
166
+ generate, help, issue, jira, kill, language, local,
167
167
  local-autopilot, log, manual-test, prune-logs, purge, refactor, resume, review,
168
168
  scan, search, setup, stack, status, sync, test, update
169
169
  ```
@@ -0,0 +1,69 @@
1
+ ---
2
+ name: agent-introspection-debugging
3
+ version: 1.0.0
4
+ description: |
5
+ Structured self-debugging for an agent that is stuck, looping, or failing
6
+ repeatedly. Replaces blind re-prompting with capture -> diagnose -> contained
7
+ recovery -> report. Use when the same step fails twice, a loop is not making
8
+ progress, tool calls keep erroring, or you are about to retry without a new
9
+ hypothesis.
10
+ ---
11
+
12
+ # Agent Introspection Debugging
13
+
14
+ When an agent is stuck, the instinct is to try again harder. That burns tokens
15
+ and usually reproduces the failure. This is a workflow, not a hidden runtime:
16
+ it forces you to name the failure, classify it, take the smallest action that
17
+ changes the diagnosis, and report honestly - before retrying.
18
+
19
+ ## When to use
20
+
21
+ - The same step failed twice, or a fix loop is not converging.
22
+ - Tool calls keep erroring (connection refused, rate limit, stale state).
23
+ - You are about to retry with no new hypothesis - the signal to stop and think.
24
+
25
+ ## Phase 1 — Capture
26
+
27
+ Write the failure state down before acting:
28
+
29
+ - Goal (what were you actually trying to do).
30
+ - The exact error or wrong output.
31
+ - Last successful step, and the first failing step.
32
+ - What is repeating (same error? different each time?).
33
+ - Environment assumptions (cwd, branch, service up, auth present).
34
+
35
+ ## Phase 2 — Diagnose
36
+
37
+ Match the symptom to a cause before choosing an action:
38
+
39
+ | Symptom | Likely cause | First check |
40
+ | --- | --- | --- |
41
+ | Hit max tool calls / no end | unbounded loop | is there a stop condition? |
42
+ | Context overflow | unbounded notes/output | what is being accumulated? |
43
+ | Connection refused | service/port down | is it running, right port? |
44
+ | Rate limited (429) | retry storm | back off, not retry faster |
45
+ | Diff/state looks stale | cwd or branch drift | pwd, current branch |
46
+ | Tests still failing after "fix" | wrong hypothesis | re-read the actual assertion |
47
+
48
+ ## Phase 3 — Contained recovery
49
+
50
+ Take the single smallest action that changes the diagnosis surface - not a
51
+ broad rewrite. Change one variable, re-observe. The goal is new information,
52
+ not a gamble on a fix.
53
+
54
+ **Honesty guard:** do not claim recovery actions you are not actually
55
+ performing. "Reset agent state," "cleared the cache," "restarted the service"
56
+ are real only if you did them through a real tool. Narrating an imaginary
57
+ auto-heal is worse than reporting that you are blocked.
58
+
59
+ ## Phase 4 — Introspection report
60
+
61
+ Emit a short structured record:
62
+
63
+ - Root cause (the confirmed one, not the first guess).
64
+ - Result: `success` | `partial` | `blocked`.
65
+ - Cost: rough tokens/time burned on the failure.
66
+ - Preventive change: the rule, check, or guard that would stop this class of
67
+ failure next time - feed it back into the ledger or the plan.
68
+
69
+ Then, and only then, retry - with the new hypothesis, not the old one.
@@ -0,0 +1,69 @@
1
+ ---
2
+ name: council
3
+ version: 1.0.0
4
+ description: |
5
+ Convene a multi-voice council for ambiguous decisions, tradeoffs, and
6
+ go/no-go calls. Use when several valid paths exist and you need structured
7
+ disagreement before choosing, not code review or implementation planning.
8
+ Triggers on: "should we X or Y", "second opinion", "is this worth it",
9
+ "ship now or wait", requests for dissent or multiple perspectives.
10
+ ---
11
+
12
+ # Council
13
+
14
+ Convene a short panel of distinct advisory voices for a decision that has more
15
+ than one credible answer. The point is structured disagreement: surface the
16
+ tradeoffs and the strongest case against your leading option before you commit,
17
+ so the choice survives contact with its own weaknesses.
18
+
19
+ ## When to use
20
+
21
+ - A decision has multiple credible paths and no obvious winner.
22
+ - You need the tradeoffs made explicit, not smoothed over.
23
+ - Anchoring is a risk: the conversation has drifted toward one option and you
24
+ want it challenged on purpose.
25
+ - A go / no-go would benefit from an adversarial pass.
26
+
27
+ Examples: monorepo vs polyrepo, ship now vs hold for polish, feature-flag vs
28
+ full rollout, build vs adopt, narrow scope vs keep strategic breadth.
29
+
30
+ ## When NOT to use
31
+
32
+ | Instead of council | Use |
33
+ | --- | --- |
34
+ | Checking whether output is correct | a verification pass / tests |
35
+ | Breaking a feature into steps | a planner |
36
+ | Designing system architecture | an architect |
37
+ | Finding bugs or security issues | a code reviewer |
38
+
39
+ If there is a single correct answer discoverable from the code or the spec, do
40
+ that work directly. Council is for genuine judgment calls.
41
+
42
+ ## The voices
43
+
44
+ Run each as a distinct perspective (in-context, or as parallel sub-agents when
45
+ the decision is high-stakes). Give each the same framing and ask for its
46
+ strongest honest position, not a hedge.
47
+
48
+ - **Skeptic** — attacks the leading option. What breaks it, what is being
49
+ assumed, what is the failure mode nobody is naming?
50
+ - **Pragmatist** — optimizes for shipping and reversibility. What is the
51
+ cheapest path that keeps options open? What is good-enough now?
52
+ - **Critic** — optimizes for long-term cost and coherence. What does this choice
53
+ lock in? What is the second-order effect in six months?
54
+
55
+ Add a fourth domain voice (security, cost, UX) only when the decision hinges on
56
+ that axis.
57
+
58
+ ## Protocol
59
+
60
+ 1. State the decision in one sentence and list the candidate options.
61
+ 2. Give each voice the same context; collect one crisp position + its single
62
+ strongest argument from each. No consensus-seeking at this stage.
63
+ 3. Surface the real disagreements as a tradeoff table (option x axis).
64
+ 4. Decide, and write down the losing option's best argument and the condition
65
+ under which you would revisit. A decision you cannot argue against is a
66
+ decision you have not understood.
67
+
68
+ Keep it bounded: three voices, one round, one page. Council informs a choice; it
69
+ does not replace making one.
@@ -0,0 +1,76 @@
1
+ ---
2
+ name: search-first
3
+ version: 1.0.0
4
+ description: |
5
+ Research-before-coding workflow. Before writing a custom implementation,
6
+ check what already exists (repo utilities, installed libraries, packages,
7
+ internal components) and decide adopt / extend / compose / build on evidence.
8
+ Use at the start of any non-trivial feature or utility, especially when you
9
+ are about to reach for a new dependency or hand-roll something common.
10
+ ---
11
+
12
+ # Search-First
13
+
14
+ Reinventing an existing utility, or pulling a new dependency for something the
15
+ codebase already solves, is one of the most common and most expensive agent
16
+ mistakes. Search-first makes "does this already exist?" a required step before
17
+ "how do I write it," and records the answer so the decision is auditable.
18
+
19
+ ## When to use
20
+
21
+ - Starting a feature or utility that is plausibly a solved problem.
22
+ - About to add a dependency (verify it is warranted and not already present).
23
+ - About to hand-roll parsing, retry, caching, date math, validation, auth,
24
+ pagination, or any other well-trodden pattern.
25
+
26
+ Skip it for genuinely novel, project-specific logic where no prior art exists.
27
+
28
+ ## The workflow
29
+
30
+ ### 0. Preflight (honesty gate)
31
+
32
+ List the search channels actually available: the repo itself, installed
33
+ dependencies, the package registry, internal component/skill catalogs, docs.
34
+ If a channel is unreachable, say so explicitly. Never claim "nothing found"
35
+ when a channel was simply not checked - silent skipping is the failure mode
36
+ this step exists to prevent.
37
+
38
+ ### 1. Need analysis
39
+
40
+ State in one line what capability is needed and the hard constraints
41
+ (performance, license, platform, API shape). This is the query.
42
+
43
+ ### 2. Parallel search
44
+
45
+ Search the channels concurrently, not one at a time:
46
+ - the repo (existing utilities, similar call sites, patterns already in use);
47
+ - installed dependencies (is it already a transitive capability?);
48
+ - the package registry (mature options);
49
+ - internal catalogs (components, skills, shared modules).
50
+
51
+ ### 3. Evaluate
52
+
53
+ Score each candidate on functionality fit, maintenance/health, docs, license,
54
+ and integration cost. Keep it to a short comparison, not a survey.
55
+
56
+ ### 4. Decide (matrix)
57
+
58
+ | Situation | Decision |
59
+ | --- | --- |
60
+ | Existing thing fits as-is | **Adopt** |
61
+ | Existing thing fits with a small addition | **Extend** it in place |
62
+ | Two existing pieces combine to fit | **Compose** them |
63
+ | Nothing fits and the need is real | **Build** minimal custom code |
64
+
65
+ ### 5. Implement
66
+
67
+ Only now write code, and only the minimum the decision calls for. Record the
68
+ decision and the rejected alternatives in the change description so the next
69
+ person does not redo the search.
70
+
71
+ ## Anti-patterns
72
+
73
+ - **Jumping to code** before step 0-4.
74
+ - **Silent skipping** — reporting no prior art when a channel was down or
75
+ unchecked.
76
+ - **Dependency reflex** — adding a package for a one-liner the repo already has.
@@ -3,11 +3,12 @@
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
- **224 skills** across 5 groups.
6
+ **226 skills** across 5 groups.
7
7
 
8
8
  | Group | Name | Platform | Description |
9
9
  |-------|------|----------|-------------|
10
10
  | external | `accessibility-compliance-accessibility-audit` | - | You are an accessibility expert specializing in WCAG compliance, inclusive design, and assistive technology compatibility. Conduct audits, i |
11
+ | external | `agent-introspection-debugging` | - | \| |
11
12
  | external | `agentflow` | - | Orchestrate autonomous AI development pipelines through your Kanban board (Asana, GitHub Projects, Linear). Manages multi-worker Claude Code |
12
13
  | external | `alarmkit` | - | Implement AlarmKit alarms and countdown timers for iOS and iPadOS with Lock Screen, Dynamic Island, StandBy, and paired Apple Watch system U |
13
14
  | external | `android_ui_verification` | - | Automated end-to-end UI testing and verification on an Android Emulator using ADB. |
@@ -43,6 +44,7 @@
43
44
  | external | `core-motion` | - | Access Core Motion accelerometer, gyroscope, magnetometer, device-motion, pedometer, activity-recognition, altitude, headphone motion, batch |
44
45
  | external | `core-nfc` | - | Read and write NFC tags using CoreNFC. Use when scanning NDEF tags, reading ISO7816/ISO15693/FeliCa/MIFARE tags, writing NDEF messages, hand |
45
46
  | external | `coreml` | - | Integrate Core ML models in iOS apps for on-device machine learning inference. Covers model loading (.mlmodel, .mlpackage, .mlmodelc), predi |
47
+ | external | `council` | - | \| |
46
48
  | external | `cryptokit` | - | Use Apple CryptoKit for Swift cryptographic primitives. Use when hashing with SHA-2 or SHA-3, generating HMACs, encrypting with AES-GCM or C |
47
49
  | external | `css-modern` | - | Modern CSS: container queries, nesting, @layer, Grid/Flexbox patterns, custom properties, animations, and transitions |
48
50
  | external | `database-patterns` | - | Database patterns: SQL best practices (PostgreSQL), indexing, query optimization, migrations, schema design, ORMs (SQLAlchemy, Prisma, Drizz |
@@ -135,8 +137,7 @@
135
137
  | 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
138
  | 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
139
  | 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. |
140
+ | core | `multi-agent-generate` | - | Create a standards-compliant Jira issue (Task / Bug / Story): asks the type, mines project conventions, drafts from a standard template with |
140
141
  | 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 |
141
142
  | core | `multi-agent-issue` | - | List unassigned GitHub issues, pick one, auto-assign, and launch the multi-agent pipeline. |
142
143
  | core | `multi-agent-jira` | - | List open Jira issues, pick one, and launch the multi-agent pipeline. |
@@ -182,6 +183,7 @@
182
183
  | external | `rest-api-design` | - | REST API design: HTTP methods, status codes, pagination, versioning, rate limiting, caching headers, OpenAPI documentation |
183
184
  | external | `retrofit-networking` | - | Build networking layers on Android with Retrofit, OkHttp, and Kotlin Coroutines. Covers suspend functions in API interfaces, OkHttp intercep |
184
185
  | external | `room-database` | - | Implement Room database persistence on Android with @Entity, @Dao, @Database, Flow-based reactive queries, TypeConverters for complex types, |
186
+ | external | `search-first` | - | \| |
185
187
  | external | `shareplay-activities` | - | Build shared real-time experiences using GroupActivities and SharePlay. Use when implementing shared media playback, collaborative app featu |
186
188
  | external | `speech-recognition` | - | Transcribe speech to text using Apple's Speech framework. Use when implementing live microphone transcription with AVAudioEngine, recognizin |
187
189
  | external | `spm-build-analysis` | - | Analyze Swift Package Manager dependencies, package plugins, module variants, and CI-oriented build overhead that slow Xcode builds. Use whe |
@@ -1,33 +0,0 @@
1
- ---
2
- description: "Create a standards-compliant Jira Bug: mines project conventions, drafts in outputLanguage, full preview + explicit approval before create."
3
- argument-hint: "[\"<free-text description>\"] [figma-url] - both optional; pasted logs/screens in the text land in Steps to Reproduce / Environment"
4
- ---
5
-
6
- # multi-agent generate-bug - Standards-Compliant Jira Bug Creator
7
-
8
- **Input**: $ARGUMENTS
9
-
10
- Creates exactly one Jira **Bug**, and only after explicit approval. No branches, no commits, no worktrees, no pipeline chaining. The draft learns the target project's conventions from its recent Bugs (summary format, description template, labels, components, priority norms) and offers active-sprint placement when a sprint is running.
11
-
12
- > **Language**: instruction prose here is English. AskUserQuestion `question`/`description` and the issue content (summary + description) follow `prefs.global.outputLanguage` - an intentional exception to the "external payloads stay English" default, because the issue is authored for the user's team. `label`/`header` stay English.
13
-
14
- ## Profile
15
-
16
- | Key | Value |
17
- |---|---|
18
- | `ISSUE_TYPE` | `Bug` |
19
- | Default description sections | Steps to Reproduce, Expected Result, Actual Result, Environment, Design Reference (only when a Figma URL is given), Notes |
20
- | JQL sample filter | `issuetype = Bug` |
21
- | Priority default | mined norm from sampled Bugs (bug priorities often skew higher - respect the project's own norm) |
22
-
23
- ## Flow
24
-
25
- Read `$HOME/.claude/commands/multi-agent/refs/generate-issue.md` and execute the 11-step shared flow with the profile above. Non-negotiables restated:
26
-
27
- - Free-text parsing maps logs, stack traces, and device/OS mentions into Steps to Reproduce and Environment; anything underivable is asked in step [7/11], never invented.
28
- - Ask the user (AskUserQuestion) about every genuinely unknown field - component, epic, priority, labels, assignee, sprint vs backlog, required custom fields, missing Steps to Reproduce / Environment.
29
- - Step [8/11] full preview + approval gate always runs. `Approve` / `Edit` (loop) / `Cancel`. No bypass exists.
30
-
31
- ## Error paths
32
-
33
- See `refs/generate-issue.md` Error paths. No command-specific additions.