@mmerterden/multi-agent-pipeline 20.25.0 → 20.25.1

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.
@@ -33,7 +33,7 @@ Run all steps automatically:
33
33
  ```
34
34
  Step 0: DOCTOR node $HOME/.claude/scripts/doctor.mjs - exit 2 or 4 STOPS the sync
35
35
  Step 1: DETECT Compare timestamps, find stale targets
36
- Step 2: COPILOT Claude Code -> Copilot CLI (instructions + 66 sub-command skills)
36
+ Step 2: COPILOT Claude Code -> Copilot CLI (instructions + 65 sub-command skills)
37
37
  Step 2b: CODEX Claude Code -> Codex CLI (1 router skill + sub-command specs as refs + agent TOML)
38
38
  Step 3: REPO Claude Code -> pipeline repo (genericized, personal data scrub)
39
39
  Step 3d: DEV-TOOLKIT Companion MCP server -> detect movement, ship gates, commit + publish
@@ -229,12 +229,12 @@ When invoked with the `release` argument:
229
229
  |-------------|-------------|
230
230
  | `~/.claude/commands/multi-agent/{cmd}/SKILL.md` | `~/.copilot/skills/multi-agent-{cmd}/SKILL.md` |
231
231
 
232
- **66 commands are synced** (canonical inventory - must match `cross-cli-contract.md` section 1; drift = contract violation):
232
+ **65 commands are synced** (canonical inventory - must match `cross-cli-contract.md` section 1; drift = contract violation):
233
233
 
234
234
  ```
235
235
  analysis, analysis-jira, analysis-resolve, autopilot, autopilot-off,
236
236
  autopilot-on, autopilot-status, bug-bash, build-optimize, channels, complaint-analysis,
237
- create-jira, deps, design-check, diff-explain, doctor, estimate, feedback, forget,
237
+ create-jira, design-check, diff-explain, doctor, estimate, feedback, forget,
238
238
  garbage-collect, graph, help, ios-coding-standard, issue, jira, kill,
239
239
  language, log, manual-test, model, postmortem, prune-logs,
240
240
  prune-prompts, purge, refactor, research, resume, review,
@@ -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
- **230 skills** across 2 groups.
6
+ **229 skills** across 2 groups.
7
7
 
8
8
  | Group | Name | Platform | Description |
9
9
  |-------|------|----------|-------------|
@@ -111,7 +111,6 @@
111
111
  | core | `multi-agent-channels` | - | Multi-channel reporter - Jira/Confluence/Wiki/PR description. Multi-select channels + content, humanizer pass, reviewer-preserving Bitbuck |
112
112
  | core | `multi-agent-complaint-analysis` | - | Customer-complaint triage. Ingests complaints (paste, csv/xlsx/txt/json file, Jira issue, Confluence URL), fetches Graylog evidence per trx/ |
113
113
  | core | `multi-agent-create-jira` | - | Create a standards-compliant Jira issue (Task / Bug / Story): asks the type, mines project conventions, drafts from a standard template with |
114
- | core | `multi-agent-deps` | - | Bump one dependency, fix only what the bump broke, review, open a PR; rolls back past the fix round cap. SwiftPM, Gradle, npm, pip. Use when |
115
114
  | core | `multi-agent-design-check` | - | Mock-mode vs Figma design audit (iOS / Android, local-only). Pick repo + module, gate on mock support, enumerate every state driver into a c |
116
115
  | core | `multi-agent-diff-explain` | - | Map Phase 3 triage findings to branch diff lines. Read-only post-hoc command, used after review to answer 'which finding lines up with which |
117
116
  | core | `multi-agent-doctor` | - | Health check for the installed pipeline: layout, preferences, credentials, hooks and host capabilities, each with one actionable step. Exit |
@@ -1,61 +0,0 @@
1
- ---
2
- description: "Bump one dependency, fix only what the bump broke, review, open a PR; rolls back past the fix round cap. SwiftPM, Gradle, npm, pip. Use when a library needs updating."
3
- description-tr: "Tek bağımlılığı yükseltir, yalnızca yükseltmenin kırdığını düzeltir, review edip PR açar; düzeltme turu sınırında geri alır. SwiftPM, Gradle, npm, pip. Bir kütüphaneyi güncellemek için kullanılır."
4
- argument-hint: "[package[@version]] [--major] - no package opens a picker over the outdated candidates; --major allows a breaking bump"
5
- parameters: [{"name":"package","kind":"text"},{"name":"--major","kind":"flag"}]
6
- gui: form
7
- destructive: false
8
- confirm: none
9
- ---
10
-
11
- # multi-agent deps - bump one dependency and fix what it broke
12
-
13
- > **Pickers follow** `$HOME/.claude/multi-agent-refs/picker-contract.md`: never a one-option call, and branch on the option selected, not on its text.
14
-
15
- **Input**: $ARGUMENTS
16
-
17
- > **Language (read FIRST)**: read `prefs.global.outputLanguage` and render every conversational line in it. `AskUserQuestion` renders `question`, option `label`s and `description`s in `outputLanguage`; only `header` stays English (<=12-char chip). Commit messages and branch names stay English. Full contract: `$HOME/.claude/multi-agent-refs/rules.md` "Language Application".
18
-
19
- The normal pipeline with a fixed task. Read `$HOME/.claude/multi-agent-refs/features/dep-bump.md` first: it is the contract for every step below (run shape, scope rule, rollback). `dep-bump.mjs` does every deterministic step; never edit a version string or a lockfile by hand.
20
-
21
- ## Steps
22
-
23
- 1. **Repo and settings.** Resolve the repo as `/multi-agent` does for a free-text task (`_account-picker.md`, `_repo-picker.md`). Then:
24
- ```bash
25
- node "$HOME/.claude/scripts/dep-bump.mjs" config # depBump.maxFixRounds, depBump.queryRegistry
26
- node "$HOME/.claude/scripts/dep-bump.mjs" detect --dir "$REPO"
27
- ```
28
- No ecosystem detected: say so and stop.
29
-
30
- 2. **Candidates.**
31
- ```bash
32
- node "$HOME/.claude/scripts/dep-bump.mjs" list --dir "$REPO" [--registry] # --registry when queryRegistry is true
33
- ```
34
- Show `registry.note` and every per-package `note`: an offline listing is reported as offline, never as "nothing outdated".
35
- - `package@version` given: use it. `package` alone: its `latestInMajor`, else `latest`. Not in the list: stop with the manifests that were read.
36
- - No package: a single-select picker over the candidates with a newer version, non-breaking first, each option `name current -> target (risk)`. Two or more options per the picker contract; one candidate is confirmed with a yes/no, none means report "nothing newer found" with the registry note.
37
-
38
- 3. **Major gate.** Risk `major` or `unknown`, or a prerelease target (`prerelease: true`), needs `--major` in the input or an explicit confirmation naming the versions (`Bump anyway` / `Take {latestInMajor} instead` when one exists / `Cancel`). An autopilot run without `--major` takes `latestInMajor` or stops.
39
-
40
- 4. **Run the pipeline** with `state.mode = "deps"`, `state.taskType = "chore"`, the free-text task `chore(deps): bump {name} from {current} to {target}` and the branch `chore/deps-{name}-{target}` (kebab rules from Phase 0 Step 4). Phase 0 intake, worktree and tracker run as in `/multi-agent`. Then:
41
- - **Phase 1**: the fixed plan from the feature doc, with the changelog excerpt as evidence:
42
- ```bash
43
- node "$HOME/.claude/scripts/dep-bump.mjs" notes --dir "$WORKTREE" --ecosystem E --name N --from A --to B
44
- ```
45
- - **Phase 2**: apply first, then the exit gate as written:
46
- ```bash
47
- node "$HOME/.claude/scripts/dep-bump.mjs" apply --dir "$WORKTREE" --ecosystem E --name N --to B [--allow-major]
48
- ```
49
- Exit 1: report `error` and `lock.output` (or `dirty`: the worktree had uncommitted changes), stop with nothing to commit. Persist the output to `state.depBump`. Green: no dev agent, on to Phase 3. Red: fix rounds, at most `depBump.maxFixRounds`, each dispatched with the failing log tail, `surface` output, the changelog excerpt and the scope rule (feature doc section 4); after each round:
50
- ```bash
51
- node "$HOME/.claude/scripts/dep-bump.mjs" scope --dir "$WORKTREE" --log "$GATE_LOG" # the round's build/test log
52
- ```
53
- Only the surface recorded by `apply` is in scope. A file listed in `newImporters` with `cited: null` started importing the dependency without an error line behind it: revert it before the next round.
54
- - **Cap reached and still red** (or still out of scope): `dep-bump.mjs rollback --dir "$WORKTREE"` (restores the manifest, lockfile and fix files; anything under `kept` is reported, not discarded), set `state.depBump.rolledBack = true`, and end with the report from feature doc section 5. No commit, no push, no PR.
55
- - **Phase 3**: standard review. Each `outOfScope` file without a cited error line, and each `newImporters` entry with `cited: null`, is a blocking finding.
56
- - **Phase 4**: commit with `commitMessage` from `apply` (plus ` [{jiraId}]` when present). PR body per the feature doc; `Ref:` or `Related:`, never `Closes`, `Fixes` or `Resolves`, and never close an issue.
57
- - **Phase 5**: channels as in every mode.
58
-
59
- ## Report
60
-
61
- In `outputLanguage`, at most 10 lines: the dependency, from and to, risk, lockfile command and result, rounds taken against the cap, files changed (in scope / justified), review verdict, and the PR URL or the rollback reason.
@@ -1,176 +0,0 @@
1
- # Feature: Dependency Bump and Fix
2
-
3
- <!-- toc -->
4
- - [1. Shape of a run](#1-shape-of-a-run)
5
- - [2. The script](#2-the-script)
6
- - [3. What each phase does](#3-what-each-phase-does)
7
- - [4. Scope of a fix round](#4-scope-of-a-fix-round)
8
- - [5. Rollback](#5-rollback)
9
- - [6. Settings](#6-settings)
10
- - [7. Never](#7-never)
11
- <!-- /toc -->
12
-
13
- **Pattern**: bump one dependency, build and test, and when the bump breaks
14
- something, fix only that breakage. A bump PR that also refactors, reformats or
15
- "while I was here" fixes unrelated code cannot be reviewed as a bump, and a fix
16
- loop with no cap turns a version bump into an open-ended rewrite.
17
-
18
- Entry: `/multi-agent:deps [package[@version]] [--major]`. It is the normal
19
- pipeline with a fixed task, not a second flow: same Phase 0 intake, worktree,
20
- branch rules, Phase 2 dev agent and exit gate, Phase 3 review gates, Phase 4
21
- commit and PR rules, Phase 5 channels.
22
-
23
- ## 1. Shape of a run
24
-
25
- | Field | Value |
26
- |---|---|
27
- | `state.mode` | `"deps"` |
28
- | `state.taskType` | `chore` |
29
- | Branch | `chore/deps-{kebab(name)}-{kebab(to)}`, kebab and collision rules from Phase 0 Step 4 |
30
- | Commit | `chore(deps): bump {name} from {from} to {to}`, taken verbatim from `dep-bump.mjs apply` (`commitMessage`), plus ` [{jiraId}]` when the run carries one |
31
- | PR body | the bump, its risk, the lockfile command, `alsoMoves`, the changelog excerpt, each fix and the error line it answers; `Ref:` / `Related:`, never `Closes` / `Fixes` / `Resolves` |
32
- | `state.depBump` | the apply output plus `rounds`, `scope` and, on rollback, `rolledBack` and `stillFailing` |
33
-
34
- ## 2. The script
35
-
36
- `$HOME/.claude/scripts/dep-bump.mjs` owns every deterministic step; the model
37
- never edits a version string by hand. JSON on stdout.
38
-
39
- | Command | Does |
40
- |---|---|
41
- | `detect --dir D` | Ecosystems and manifests: SwiftPM `Package.swift`, Gradle `gradle/*.versions.toml`, npm `package.json`, pip `requirements*.txt` / `pyproject.toml`, each with its lockfile |
42
- | `list --dir D [--registry]` | Candidates: `current` (lockfile, else declared), `latest`, `latestInMajor` (highest non-breaking), `risk`, `riskInMajor`, `source` |
43
- | `apply --dir D --ecosystem E --name N --to V [--allow-major]` | One bump: manifest edit plus the lockfile through the ecosystem tool; writes `.pipeline/dep-bump.json` |
44
- | `surface --dir D --ecosystem E --name N` | Files that import or reference the dependency |
45
- | `scope --dir D [--log L]` | Files changed since the recorded base, split into `inScope` (manifest, lockfile and the surface recorded at apply), `newImporters` and `outOfScope`; exit 1 when anything is out of scope or a new importer has no cited error line |
46
- | `notes --dir D --ecosystem E --name N --from A --to B` | The local changelog sections between the two versions, else the repository URL to read release notes from |
47
- | `rollback --dir D` | Restores what the bump owns (manifest, lockfile, the files `scope` saw the fix touch in scope) from the recorded base and removes those the base lacks; every other change is left in place and listed under `kept` |
48
- | `config` | The resolved `depBump.*` settings |
49
-
50
- SwiftPM identities compare case-insensitively (`--name Alamofire` and
51
- `alamofire` are one package). The surface covers every module name the package
52
- is imported under: the identity, the repository name in the url, the products
53
- named by `.product(name:package:)` and by-name target dependencies in the
54
- package manifests. Packages an Xcode project adds through File > Packages keep
55
- their pins in `*.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved`
56
- or `*.xcworkspace/xcshareddata/swiftpm/Package.resolved` and their requirement
57
- in `project.pbxproj`. `detect` and `list` report them with `readOnly: true` and
58
- a note; `apply` refuses them (exit 1), because dep-bump does not edit
59
- `project.pbxproj`. Such a bump is made in Xcode.
60
-
61
- For Gradle the surface is the build scripts that name the catalog alias and
62
- the Kotlin and Java files whose imports start at the Maven group
63
- (`com.google.code.gson`), the artifact id or the alias stem, each with an
64
- optional major suffix (`okhttp3` for `com.squareup.okhttp3:okhttp`, `retrofit2`
65
- for `retrofit`). A library whose package root is none of these (Gson's
66
- `com.google.gson`) is not found by `surface`, so a fix in such a file is out of
67
- scope and needs the error line that names it, cited per file (section 4).
68
-
69
- Offline listing reads what is already on disk: the lockfile for the current
70
- version, SwiftPM `.build/checkouts/<id>` tags and the Gradle module cache for
71
- newer ones. `--registry` asks the ecosystem's own tool (`npm view`,
72
- `git ls-remote --tags`, Maven or PyPI metadata over `curl`); a failed query is
73
- a `note` on that package, never a failed listing. Registry and lockfile tools
74
- run in the manifest's directory (a workspace member's lockfile tool in the
75
- workspace root), so the repo's own `.npmrc` registries and scopes apply. A
76
- name or url that does not fit its ecosystem's grammar (a url that is not
77
- http(s), ssh, git, file or `git@host:`, a name starting with `-`) is never
78
- passed to a tool; the package gets a `registry query skipped` note.
79
-
80
- Risk follows semver: a major step is breaking, and so is a minor step under
81
- `0.x` and any step under `0.0.x`. `+build` metadata is ignored, and for Gradle
82
- a Maven release qualifier (`-jre`, `-android`, `.Final`, `-RELEASE`, `.GA`,
83
- `.SP1`) is part of a stable version, not a prerelease. A version that does not
84
- parse is `unknown` and is treated as major, and so is a prerelease target.
85
- `apply` exits 3 on a major, unknown or prerelease bump without `--allow-major`,
86
- and touches nothing.
87
-
88
- A pip requirement with several clauses (`foo>=1.0,<2.0`) is bumped on its
89
- primary clause, the first `==`, `===`, `~=`, `>=` or `>`; `<`, `<=` and `!=`
90
- are never primary, and a requirement made only of them is not listed. When
91
- another clause would exclude the target (`<2.0` against `2.1`), `apply` exits 1
92
- and changes nothing: rewriting a bound the repo set is a decision, not part of
93
- the bump.
94
-
95
- `apply` refuses a worktree with uncommitted changes to tracked files (exit 1,
96
- `dirty` lists them), so the base it records holds no work of anyone else's.
97
-
98
- `apply` is atomic. When the lockfile tool fails, the manifest and the lockfile
99
- are restored byte for byte and the tool's output tail is in `lock.output`.
100
- Lockfile tools: `swift package resolve`, `./gradlew dependencies --write-locks`
101
- (only with a `gradle.lockfile`), the resolved npm-family manager with scripts
102
- disabled (`package-manager.mjs`; yarn 2 and later take `--mode=skip-build`, yarn
103
- 1 `--ignore-scripts`), `poetry lock` on Poetry 2 and `poetry lock --no-update`
104
- before it, `uv lock --upgrade-package`. A workspace member's lockfile is the
105
- workspace root's (the nearest directory above it with a lockfile and a
106
- `workspaces` field or `pnpm-workspace.yaml`), and the tool runs there; a
107
- lockfile above the manifest in a directory that declares no workspaces fails
108
- the bump rather than letting it go ahead with no lockfile. Membership is not
109
- matched against the `workspaces` globs. A shared Gradle `version.ref` moves every module bound to
110
- it; `alsoMoves` names them and they join the surface.
111
-
112
- ## 3. What each phase does
113
-
114
- | Phase | In a deps run |
115
- |---|---|
116
- | 0 Init | Candidate pick and the major gate happen in the command before Phase 0. Then the normal intake (account, repo, base branch, workspace) with the free-text task `chore(deps): bump {name} from {from} to {to}`, `taskType` `chore`, branch from section 1 |
117
- | 1 Plan | No analysis document (`chore`). The plan is fixed: one todo, "apply the bump", plus one per failing area once Phase 2 has a red run. `notes` output and the `list` record are the plan's evidence. The approval gate shows the bump, its risk and `alsoMoves` |
118
- | 2 Dev | `apply` in the worktree first, before any agent runs. Then the Phase 2 exit gate as written (build, lint, tests, evidence gates). Green: straight to Phase 3 with no dev agent. Red: fix rounds (section 4) |
119
- | 3 Review | The standard gates and reviewers over the whole diff. `scope` runs first; every `outOfScope` file is a blocking finding unless the round's report ties it to a build or test error line |
120
- | 4 Commit | `commitMessage` from `apply`, the PR body from section 1. Never auto-close an issue |
121
- | 5 Report | Channels as in every mode |
122
-
123
- ## 4. Scope of a fix round
124
-
125
- A round is one Phase 2 dev dispatch, given exactly this:
126
-
127
- - the failing build or test log tail, from the exit gate;
128
- - `surface` output: the files that use the dependency;
129
- - the `notes` excerpt (breaking changes, migration notes). With no local
130
- changelog, read the release notes for the versions in between from the
131
- repository URL it returns (`gh release view`, the releases page) when
132
- reachable, and say when they were not;
133
- - the rule: change only what the bump broke. A file outside the surface may be
134
- touched only when a compile or test error names it, and the report cites that
135
- error line per file.
136
-
137
- The surface is the one `apply` recorded. A file that starts importing the
138
- dependency during a fix round does not join it: `scope` reports it under
139
- `newImporters`, and each one passes only when the build or test log handed to
140
- `scope --log` has an error line naming that file. The line is returned as
141
- `cited`; a new importer with `cited: null` fails scope like an out-of-scope
142
- file.
143
-
144
- After each round: `scope --log <exit-gate log>`, then the exit gate again. Out-of-scope files with no
145
- cited error are reverted before the next round. Green ends the loop. Every round
146
- is recorded in `state.depBump.rounds[]` with the files it touched and the
147
- errors it answered.
148
-
149
- ## 5. Rollback
150
-
151
- A run still red after `depBump.maxFixRounds` rounds (default 2), or out of
152
- scope after its last round, is not committed: `dep-bump.mjs rollback` returns
153
- the manifest, the lockfile and the files the fix rounds touched to the recorded
154
- base, removes the ones the base did not have, and leaves every other change in
155
- place (`kept`); the run ends with a report instead of a PR. The report names the bump, each round, the errors still failing with their
156
- log lines, the files that would need to change and the changelog section that
157
- explains it. `state.depBump.rolledBack` is `true`. The branch is left with no
158
- commit; nothing is pushed.
159
-
160
- ## 6. Settings
161
-
162
- | Key | Default | Effect |
163
- |---|---|---|
164
- | `depBump.maxFixRounds` | 2 | Fix rounds before rollback; 0 rolls back any bump that is not green as-is |
165
- | `depBump.queryRegistry` | true | `list` gets `--registry`; false lists offline only |
166
-
167
- Read through `node "$HOME/.claude/scripts/dep-bump.mjs" config`. Asserted by
168
- `test/dep-bump.test.mjs` and `smoke-dep-bump.sh`.
169
-
170
- ## 7. Never
171
-
172
- - A major, unparseable or prerelease bump without `--major` or an explicit confirmation.
173
- - A version edit by hand, or a lockfile edited as text.
174
- - More than one dependency per run (a shared `version.ref` is one bump).
175
- - A fix outside the bump's surface with no error line behind it.
176
- - A commit after the round cap is reached red.