@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,33 +0,0 @@
1
- ---
2
- description: "Create a standards-compliant Jira Task: mines project conventions, drafts in outputLanguage, full preview + explicit approval before create."
3
- argument-hint: "[\"<free-text description>\"] [figma-url] - both optional, asked interactively when missing"
4
- ---
5
-
6
- # multi-agent generate-task - Standards-Compliant Jira Task Creator
7
-
8
- **Input**: $ARGUMENTS
9
-
10
- Creates exactly one Jira **Task**, 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 Tasks (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` | `Task` |
19
- | Default description sections | Goal, Scope, Acceptance Criteria, Design Reference (only when a Figma URL is given), Notes |
20
- | JQL sample filter | `issuetype = Task` |
21
- | Priority default | mined norm from sampled Tasks |
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
- - Ask the user (AskUserQuestion) about every genuinely unknown field - component, epic, priority, labels, assignee, sprint vs backlog, required custom fields.
28
- - Step [8/11] full preview + approval gate always runs. `Approve` / `Edit` (loop) / `Cancel`. No bypass exists.
29
- - Never invent Goal, Scope, or Acceptance Criteria content the user did not supply.
30
-
31
- ## Error paths
32
-
33
- See `refs/generate-issue.md` Error paths. No command-specific additions.
@@ -1,39 +0,0 @@
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.
@@ -1,39 +0,0 @@
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.