From 198275fb5b3c12d5dec97c5922b57d44ba80b841 Mon Sep 17 00:00:00 2001 From: Ousama Ben Younes Date: Thu, 13 Aug 2026 12:09:17 +0000 Subject: [PATCH] fix(clone): accept multiple GitHub URLs and reject unknown flags (#2703) --- CHANGELOG.md | 1 + graphify/cli.py | 38 ++++-- .../agents/references/github-and-merge.md | 5 +- .../skills/amp/references/github-and-merge.md | 5 +- .../claude/references/github-and-merge.md | 5 +- .../claw/references/github-and-merge.md | 5 +- .../codex/references/github-and-merge.md | 5 +- .../copilot/references/github-and-merge.md | 5 +- .../droid/references/github-and-merge.md | 5 +- .../kilo/references/github-and-merge.md | 5 +- .../kiro/references/github-and-merge.md | 5 +- .../opencode/references/github-and-merge.md | 5 +- .../skills/pi/references/github-and-merge.md | 5 +- .../trae/references/github-and-merge.md | 5 +- .../vscode/references/github-and-merge.md | 5 +- .../windows/references/github-and-merge.md | 5 +- tests/test_clone_cli.py | 110 ++++++++++++++++++ ...s__agents__references__github-and-merge.md | 5 +- ...ills__amp__references__github-and-merge.md | 5 +- ...s__claude__references__github-and-merge.md | 5 +- ...lls__claw__references__github-and-merge.md | 5 +- ...ls__codex__references__github-and-merge.md | 5 +- ...__copilot__references__github-and-merge.md | 5 +- ...ls__droid__references__github-and-merge.md | 5 +- ...lls__kilo__references__github-and-merge.md | 5 +- ...lls__kiro__references__github-and-merge.md | 5 +- ..._opencode__references__github-and-merge.md | 5 +- ...kills__pi__references__github-and-merge.md | 5 +- ...lls__trae__references__github-and-merge.md | 5 +- ...s__vscode__references__github-and-merge.md | 5 +- ...__windows__references__github-and-merge.md | 5 +- .../references/shared/github-and-merge.md | 5 +- 32 files changed, 197 insertions(+), 97 deletions(-) create mode 100644 tests/test_clone_cli.py diff --git a/CHANGELOG.md b/CHANGELOG.md index 5e0b84c22..2622b9fe5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,6 +17,7 @@ Full release notes with details on each version: [GitHub Releases](https://githu - Fix: a PHP `use` import written with a leading-backslash / fully-qualified prefix now resolves to its target definition instead of being dropped (#2661, thanks @ousamabenyounes). - Fix: an unresolved local JS/TS import (to a file absent from the scan) now emits a stable, portable `ref` target id instead of leaking a per-checkout absolute-path slug (#2457, thanks @rohit-jsfreaky). - Fix: `graphify benchmark` no longer crashes on a node whose label is `None` (#2674, thanks @Arthuro0103). +- Fix: `graphify clone` now accepts multiple GitHub URLs and clones each one instead of silently dropping every URL past the first, matching the multi-repo workflow (#2703); unknown flags are rejected with a usage message, and `--out` is refused with multiple URLs to keep destinations unambiguous. ## 0.9.40 (2026-08-11) diff --git a/graphify/cli.py b/graphify/cli.py index 441e4ca36..971cdaaf0 100644 --- a/graphify/cli.py +++ b/graphify/cli.py @@ -2399,28 +2399,46 @@ def _to_simple(g: "_nx.Graph") -> "_nx.Graph": print(f"Written to: {out_path}") elif cmd == "clone": + _CLONE_USAGE = ( + "Usage: graphify clone [ ...] " + "[--branch ] [--out ]" + ) if len(sys.argv) < 3: - print( - "Usage: graphify clone [--branch ] [--out ]", - file=sys.stderr, - ) + print(_CLONE_USAGE, file=sys.stderr) sys.exit(1) - url = sys.argv[2] + urls: list[str] = [] branch: str | None = None out_dir: Path | None = None - args = sys.argv[3:] + args = sys.argv[2:] i = 0 while i < len(args): - if args[i] == "--branch" and i + 1 < len(args): + a = args[i] + if a == "--branch" and i + 1 < len(args): branch = args[i + 1] i += 2 - elif args[i] == "--out" and i + 1 < len(args): + elif a == "--out" and i + 1 < len(args): out_dir = Path(args[i + 1]) i += 2 + elif a.startswith("-"): + print(f"error: unknown option: {a}", file=sys.stderr) + print(_CLONE_USAGE, file=sys.stderr) + sys.exit(1) else: + urls.append(a) i += 1 - local_path = _clone_repo(url, branch=branch, out_dir=out_dir) - print(local_path) + if not urls: + print(_CLONE_USAGE, file=sys.stderr) + sys.exit(1) + if out_dir is not None and len(urls) > 1: + print( + "error: --out is only valid with a single URL; drop --out to clone " + "multiple repos into ~/.graphify/repos//", + file=sys.stderr, + ) + sys.exit(1) + for url in urls: + local_path = _clone_repo(url, branch=branch, out_dir=out_dir) + print(local_path) elif cmd == "export": subcmd = sys.argv[2] if len(sys.argv) > 2 else "" diff --git a/graphify/skills/agents/references/github-and-merge.md b/graphify/skills/agents/references/github-and-merge.md index a41ea06e1..282c06f70 100644 --- a/graphify/skills/agents/references/github-and-merge.md +++ b/graphify/skills/agents/references/github-and-merge.md @@ -12,9 +12,8 @@ LOCAL_PATH=$(graphify clone [--branch ]) **Multiple repos (cross-repo graph):** ```bash -# Clone each repo, run the full pipeline on each, then merge -graphify clone # → ~/.graphify/repos// -graphify clone # → ~/.graphify/repos// +# Clone each repo (one call or many — both work), run the full pipeline on each, then merge +graphify clone # → ~/.graphify/repos// and ...// # Run /graphify on each local path to produce their graph.json files # Then merge: graphify merge-graphs \ diff --git a/graphify/skills/amp/references/github-and-merge.md b/graphify/skills/amp/references/github-and-merge.md index a41ea06e1..282c06f70 100644 --- a/graphify/skills/amp/references/github-and-merge.md +++ b/graphify/skills/amp/references/github-and-merge.md @@ -12,9 +12,8 @@ LOCAL_PATH=$(graphify clone [--branch ]) **Multiple repos (cross-repo graph):** ```bash -# Clone each repo, run the full pipeline on each, then merge -graphify clone # → ~/.graphify/repos// -graphify clone # → ~/.graphify/repos// +# Clone each repo (one call or many — both work), run the full pipeline on each, then merge +graphify clone # → ~/.graphify/repos// and ...// # Run /graphify on each local path to produce their graph.json files # Then merge: graphify merge-graphs \ diff --git a/graphify/skills/claude/references/github-and-merge.md b/graphify/skills/claude/references/github-and-merge.md index a41ea06e1..282c06f70 100644 --- a/graphify/skills/claude/references/github-and-merge.md +++ b/graphify/skills/claude/references/github-and-merge.md @@ -12,9 +12,8 @@ LOCAL_PATH=$(graphify clone [--branch ]) **Multiple repos (cross-repo graph):** ```bash -# Clone each repo, run the full pipeline on each, then merge -graphify clone # → ~/.graphify/repos// -graphify clone # → ~/.graphify/repos// +# Clone each repo (one call or many — both work), run the full pipeline on each, then merge +graphify clone # → ~/.graphify/repos// and ...// # Run /graphify on each local path to produce their graph.json files # Then merge: graphify merge-graphs \ diff --git a/graphify/skills/claw/references/github-and-merge.md b/graphify/skills/claw/references/github-and-merge.md index a41ea06e1..282c06f70 100644 --- a/graphify/skills/claw/references/github-and-merge.md +++ b/graphify/skills/claw/references/github-and-merge.md @@ -12,9 +12,8 @@ LOCAL_PATH=$(graphify clone [--branch ]) **Multiple repos (cross-repo graph):** ```bash -# Clone each repo, run the full pipeline on each, then merge -graphify clone # → ~/.graphify/repos// -graphify clone # → ~/.graphify/repos// +# Clone each repo (one call or many — both work), run the full pipeline on each, then merge +graphify clone # → ~/.graphify/repos// and ...// # Run /graphify on each local path to produce their graph.json files # Then merge: graphify merge-graphs \ diff --git a/graphify/skills/codex/references/github-and-merge.md b/graphify/skills/codex/references/github-and-merge.md index a41ea06e1..282c06f70 100644 --- a/graphify/skills/codex/references/github-and-merge.md +++ b/graphify/skills/codex/references/github-and-merge.md @@ -12,9 +12,8 @@ LOCAL_PATH=$(graphify clone [--branch ]) **Multiple repos (cross-repo graph):** ```bash -# Clone each repo, run the full pipeline on each, then merge -graphify clone # → ~/.graphify/repos// -graphify clone # → ~/.graphify/repos// +# Clone each repo (one call or many — both work), run the full pipeline on each, then merge +graphify clone # → ~/.graphify/repos// and ...// # Run /graphify on each local path to produce their graph.json files # Then merge: graphify merge-graphs \ diff --git a/graphify/skills/copilot/references/github-and-merge.md b/graphify/skills/copilot/references/github-and-merge.md index a41ea06e1..282c06f70 100644 --- a/graphify/skills/copilot/references/github-and-merge.md +++ b/graphify/skills/copilot/references/github-and-merge.md @@ -12,9 +12,8 @@ LOCAL_PATH=$(graphify clone [--branch ]) **Multiple repos (cross-repo graph):** ```bash -# Clone each repo, run the full pipeline on each, then merge -graphify clone # → ~/.graphify/repos// -graphify clone # → ~/.graphify/repos// +# Clone each repo (one call or many — both work), run the full pipeline on each, then merge +graphify clone # → ~/.graphify/repos// and ...// # Run /graphify on each local path to produce their graph.json files # Then merge: graphify merge-graphs \ diff --git a/graphify/skills/droid/references/github-and-merge.md b/graphify/skills/droid/references/github-and-merge.md index a41ea06e1..282c06f70 100644 --- a/graphify/skills/droid/references/github-and-merge.md +++ b/graphify/skills/droid/references/github-and-merge.md @@ -12,9 +12,8 @@ LOCAL_PATH=$(graphify clone [--branch ]) **Multiple repos (cross-repo graph):** ```bash -# Clone each repo, run the full pipeline on each, then merge -graphify clone # → ~/.graphify/repos// -graphify clone # → ~/.graphify/repos// +# Clone each repo (one call or many — both work), run the full pipeline on each, then merge +graphify clone # → ~/.graphify/repos// and ...// # Run /graphify on each local path to produce their graph.json files # Then merge: graphify merge-graphs \ diff --git a/graphify/skills/kilo/references/github-and-merge.md b/graphify/skills/kilo/references/github-and-merge.md index a41ea06e1..282c06f70 100644 --- a/graphify/skills/kilo/references/github-and-merge.md +++ b/graphify/skills/kilo/references/github-and-merge.md @@ -12,9 +12,8 @@ LOCAL_PATH=$(graphify clone [--branch ]) **Multiple repos (cross-repo graph):** ```bash -# Clone each repo, run the full pipeline on each, then merge -graphify clone # → ~/.graphify/repos// -graphify clone # → ~/.graphify/repos// +# Clone each repo (one call or many — both work), run the full pipeline on each, then merge +graphify clone # → ~/.graphify/repos// and ...// # Run /graphify on each local path to produce their graph.json files # Then merge: graphify merge-graphs \ diff --git a/graphify/skills/kiro/references/github-and-merge.md b/graphify/skills/kiro/references/github-and-merge.md index a41ea06e1..282c06f70 100644 --- a/graphify/skills/kiro/references/github-and-merge.md +++ b/graphify/skills/kiro/references/github-and-merge.md @@ -12,9 +12,8 @@ LOCAL_PATH=$(graphify clone [--branch ]) **Multiple repos (cross-repo graph):** ```bash -# Clone each repo, run the full pipeline on each, then merge -graphify clone # → ~/.graphify/repos// -graphify clone # → ~/.graphify/repos// +# Clone each repo (one call or many — both work), run the full pipeline on each, then merge +graphify clone # → ~/.graphify/repos// and ...// # Run /graphify on each local path to produce their graph.json files # Then merge: graphify merge-graphs \ diff --git a/graphify/skills/opencode/references/github-and-merge.md b/graphify/skills/opencode/references/github-and-merge.md index a41ea06e1..282c06f70 100644 --- a/graphify/skills/opencode/references/github-and-merge.md +++ b/graphify/skills/opencode/references/github-and-merge.md @@ -12,9 +12,8 @@ LOCAL_PATH=$(graphify clone [--branch ]) **Multiple repos (cross-repo graph):** ```bash -# Clone each repo, run the full pipeline on each, then merge -graphify clone # → ~/.graphify/repos// -graphify clone # → ~/.graphify/repos// +# Clone each repo (one call or many — both work), run the full pipeline on each, then merge +graphify clone # → ~/.graphify/repos// and ...// # Run /graphify on each local path to produce their graph.json files # Then merge: graphify merge-graphs \ diff --git a/graphify/skills/pi/references/github-and-merge.md b/graphify/skills/pi/references/github-and-merge.md index a41ea06e1..282c06f70 100644 --- a/graphify/skills/pi/references/github-and-merge.md +++ b/graphify/skills/pi/references/github-and-merge.md @@ -12,9 +12,8 @@ LOCAL_PATH=$(graphify clone [--branch ]) **Multiple repos (cross-repo graph):** ```bash -# Clone each repo, run the full pipeline on each, then merge -graphify clone # → ~/.graphify/repos// -graphify clone # → ~/.graphify/repos// +# Clone each repo (one call or many — both work), run the full pipeline on each, then merge +graphify clone # → ~/.graphify/repos// and ...// # Run /graphify on each local path to produce their graph.json files # Then merge: graphify merge-graphs \ diff --git a/graphify/skills/trae/references/github-and-merge.md b/graphify/skills/trae/references/github-and-merge.md index a41ea06e1..282c06f70 100644 --- a/graphify/skills/trae/references/github-and-merge.md +++ b/graphify/skills/trae/references/github-and-merge.md @@ -12,9 +12,8 @@ LOCAL_PATH=$(graphify clone [--branch ]) **Multiple repos (cross-repo graph):** ```bash -# Clone each repo, run the full pipeline on each, then merge -graphify clone # → ~/.graphify/repos// -graphify clone # → ~/.graphify/repos// +# Clone each repo (one call or many — both work), run the full pipeline on each, then merge +graphify clone # → ~/.graphify/repos// and ...// # Run /graphify on each local path to produce their graph.json files # Then merge: graphify merge-graphs \ diff --git a/graphify/skills/vscode/references/github-and-merge.md b/graphify/skills/vscode/references/github-and-merge.md index a41ea06e1..282c06f70 100644 --- a/graphify/skills/vscode/references/github-and-merge.md +++ b/graphify/skills/vscode/references/github-and-merge.md @@ -12,9 +12,8 @@ LOCAL_PATH=$(graphify clone [--branch ]) **Multiple repos (cross-repo graph):** ```bash -# Clone each repo, run the full pipeline on each, then merge -graphify clone # → ~/.graphify/repos// -graphify clone # → ~/.graphify/repos// +# Clone each repo (one call or many — both work), run the full pipeline on each, then merge +graphify clone # → ~/.graphify/repos// and ...// # Run /graphify on each local path to produce their graph.json files # Then merge: graphify merge-graphs \ diff --git a/graphify/skills/windows/references/github-and-merge.md b/graphify/skills/windows/references/github-and-merge.md index a41ea06e1..282c06f70 100644 --- a/graphify/skills/windows/references/github-and-merge.md +++ b/graphify/skills/windows/references/github-and-merge.md @@ -12,9 +12,8 @@ LOCAL_PATH=$(graphify clone [--branch ]) **Multiple repos (cross-repo graph):** ```bash -# Clone each repo, run the full pipeline on each, then merge -graphify clone # → ~/.graphify/repos// -graphify clone # → ~/.graphify/repos// +# Clone each repo (one call or many — both work), run the full pipeline on each, then merge +graphify clone # → ~/.graphify/repos// and ...// # Run /graphify on each local path to produce their graph.json files # Then merge: graphify merge-graphs \ diff --git a/tests/test_clone_cli.py b/tests/test_clone_cli.py new file mode 100644 index 000000000..3f0aea477 --- /dev/null +++ b/tests/test_clone_cli.py @@ -0,0 +1,110 @@ +"""`graphify clone` multi-URL support (#2703). + +The clone command used to silently swallow every URL after the first: a user +who typed `graphify clone url1 url2` got only url1 cloned and no indication +that url2 was dropped. Multi-repo analysis is the exact workflow issue #2703 +asks about, so extra URLs are now cloned in turn and each destination path is +printed on its own line. Unknown flags are rejected instead of skipped. +""" +from __future__ import annotations + +import sys +from pathlib import Path + +import pytest + +from graphify import cli + + +def _stub_clone(monkeypatch): + calls: list[tuple[str, str | None, Path | None]] = [] + + def fake(url, branch=None, out_dir=None): + calls.append((url, branch, out_dir)) + return Path(f"/tmp/fake/{url.rsplit('/', 1)[-1]}") + + monkeypatch.setattr(cli, "_clone_repo", fake) + return calls + + +def test_clone_multiple_urls_are_all_cloned(monkeypatch, capsys): + calls = _stub_clone(monkeypatch) + monkeypatch.setattr( + sys, + "argv", + [ + "graphify", + "clone", + "https://github.com/foo/bar", + "https://github.com/baz/qux", + ], + ) + cli.dispatch_command("clone") + assert [c[0] for c in calls] == [ + "https://github.com/foo/bar", + "https://github.com/baz/qux", + ] + out = capsys.readouterr().out.splitlines() + assert "/tmp/fake/bar" in out + assert "/tmp/fake/qux" in out + + +def test_clone_single_url_still_works(monkeypatch, capsys): + calls = _stub_clone(monkeypatch) + monkeypatch.setattr( + sys, "argv", ["graphify", "clone", "https://github.com/foo/bar"] + ) + cli.dispatch_command("clone") + assert calls == [("https://github.com/foo/bar", None, None)] + assert "/tmp/fake/bar" in capsys.readouterr().out + + +def test_clone_branch_flag_applies_to_all(monkeypatch): + calls = _stub_clone(monkeypatch) + monkeypatch.setattr( + sys, + "argv", + [ + "graphify", + "clone", + "https://github.com/foo/bar", + "https://github.com/baz/qux", + "--branch", + "dev", + ], + ) + cli.dispatch_command("clone") + assert [c[1] for c in calls] == ["dev", "dev"] + + +def test_clone_rejects_out_with_multiple_urls(monkeypatch, capsys): + _stub_clone(monkeypatch) + monkeypatch.setattr( + sys, + "argv", + [ + "graphify", + "clone", + "https://github.com/foo/bar", + "https://github.com/baz/qux", + "--out", + "/tmp/dest", + ], + ) + with pytest.raises(SystemExit) as exc: + cli.dispatch_command("clone") + assert exc.value.code == 1 + assert "--out" in capsys.readouterr().err + + +def test_clone_rejects_unknown_flag(monkeypatch, capsys): + _stub_clone(monkeypatch) + monkeypatch.setattr( + sys, + "argv", + ["graphify", "clone", "https://github.com/foo/bar", "--nope"], + ) + with pytest.raises(SystemExit) as exc: + cli.dispatch_command("clone") + assert exc.value.code == 1 + assert "--nope" in capsys.readouterr().err diff --git a/tools/skillgen/expected/graphify__skills__agents__references__github-and-merge.md b/tools/skillgen/expected/graphify__skills__agents__references__github-and-merge.md index a41ea06e1..282c06f70 100644 --- a/tools/skillgen/expected/graphify__skills__agents__references__github-and-merge.md +++ b/tools/skillgen/expected/graphify__skills__agents__references__github-and-merge.md @@ -12,9 +12,8 @@ LOCAL_PATH=$(graphify clone [--branch ]) **Multiple repos (cross-repo graph):** ```bash -# Clone each repo, run the full pipeline on each, then merge -graphify clone # → ~/.graphify/repos// -graphify clone # → ~/.graphify/repos// +# Clone each repo (one call or many — both work), run the full pipeline on each, then merge +graphify clone # → ~/.graphify/repos// and ...// # Run /graphify on each local path to produce their graph.json files # Then merge: graphify merge-graphs \ diff --git a/tools/skillgen/expected/graphify__skills__amp__references__github-and-merge.md b/tools/skillgen/expected/graphify__skills__amp__references__github-and-merge.md index a41ea06e1..282c06f70 100644 --- a/tools/skillgen/expected/graphify__skills__amp__references__github-and-merge.md +++ b/tools/skillgen/expected/graphify__skills__amp__references__github-and-merge.md @@ -12,9 +12,8 @@ LOCAL_PATH=$(graphify clone [--branch ]) **Multiple repos (cross-repo graph):** ```bash -# Clone each repo, run the full pipeline on each, then merge -graphify clone # → ~/.graphify/repos// -graphify clone # → ~/.graphify/repos// +# Clone each repo (one call or many — both work), run the full pipeline on each, then merge +graphify clone # → ~/.graphify/repos// and ...// # Run /graphify on each local path to produce their graph.json files # Then merge: graphify merge-graphs \ diff --git a/tools/skillgen/expected/graphify__skills__claude__references__github-and-merge.md b/tools/skillgen/expected/graphify__skills__claude__references__github-and-merge.md index a41ea06e1..282c06f70 100644 --- a/tools/skillgen/expected/graphify__skills__claude__references__github-and-merge.md +++ b/tools/skillgen/expected/graphify__skills__claude__references__github-and-merge.md @@ -12,9 +12,8 @@ LOCAL_PATH=$(graphify clone [--branch ]) **Multiple repos (cross-repo graph):** ```bash -# Clone each repo, run the full pipeline on each, then merge -graphify clone # → ~/.graphify/repos// -graphify clone # → ~/.graphify/repos// +# Clone each repo (one call or many — both work), run the full pipeline on each, then merge +graphify clone # → ~/.graphify/repos// and ...// # Run /graphify on each local path to produce their graph.json files # Then merge: graphify merge-graphs \ diff --git a/tools/skillgen/expected/graphify__skills__claw__references__github-and-merge.md b/tools/skillgen/expected/graphify__skills__claw__references__github-and-merge.md index a41ea06e1..282c06f70 100644 --- a/tools/skillgen/expected/graphify__skills__claw__references__github-and-merge.md +++ b/tools/skillgen/expected/graphify__skills__claw__references__github-and-merge.md @@ -12,9 +12,8 @@ LOCAL_PATH=$(graphify clone [--branch ]) **Multiple repos (cross-repo graph):** ```bash -# Clone each repo, run the full pipeline on each, then merge -graphify clone # → ~/.graphify/repos// -graphify clone # → ~/.graphify/repos// +# Clone each repo (one call or many — both work), run the full pipeline on each, then merge +graphify clone # → ~/.graphify/repos// and ...// # Run /graphify on each local path to produce their graph.json files # Then merge: graphify merge-graphs \ diff --git a/tools/skillgen/expected/graphify__skills__codex__references__github-and-merge.md b/tools/skillgen/expected/graphify__skills__codex__references__github-and-merge.md index a41ea06e1..282c06f70 100644 --- a/tools/skillgen/expected/graphify__skills__codex__references__github-and-merge.md +++ b/tools/skillgen/expected/graphify__skills__codex__references__github-and-merge.md @@ -12,9 +12,8 @@ LOCAL_PATH=$(graphify clone [--branch ]) **Multiple repos (cross-repo graph):** ```bash -# Clone each repo, run the full pipeline on each, then merge -graphify clone # → ~/.graphify/repos// -graphify clone # → ~/.graphify/repos// +# Clone each repo (one call or many — both work), run the full pipeline on each, then merge +graphify clone # → ~/.graphify/repos// and ...// # Run /graphify on each local path to produce their graph.json files # Then merge: graphify merge-graphs \ diff --git a/tools/skillgen/expected/graphify__skills__copilot__references__github-and-merge.md b/tools/skillgen/expected/graphify__skills__copilot__references__github-and-merge.md index a41ea06e1..282c06f70 100644 --- a/tools/skillgen/expected/graphify__skills__copilot__references__github-and-merge.md +++ b/tools/skillgen/expected/graphify__skills__copilot__references__github-and-merge.md @@ -12,9 +12,8 @@ LOCAL_PATH=$(graphify clone [--branch ]) **Multiple repos (cross-repo graph):** ```bash -# Clone each repo, run the full pipeline on each, then merge -graphify clone # → ~/.graphify/repos// -graphify clone # → ~/.graphify/repos// +# Clone each repo (one call or many — both work), run the full pipeline on each, then merge +graphify clone # → ~/.graphify/repos// and ...// # Run /graphify on each local path to produce their graph.json files # Then merge: graphify merge-graphs \ diff --git a/tools/skillgen/expected/graphify__skills__droid__references__github-and-merge.md b/tools/skillgen/expected/graphify__skills__droid__references__github-and-merge.md index a41ea06e1..282c06f70 100644 --- a/tools/skillgen/expected/graphify__skills__droid__references__github-and-merge.md +++ b/tools/skillgen/expected/graphify__skills__droid__references__github-and-merge.md @@ -12,9 +12,8 @@ LOCAL_PATH=$(graphify clone [--branch ]) **Multiple repos (cross-repo graph):** ```bash -# Clone each repo, run the full pipeline on each, then merge -graphify clone # → ~/.graphify/repos// -graphify clone # → ~/.graphify/repos// +# Clone each repo (one call or many — both work), run the full pipeline on each, then merge +graphify clone # → ~/.graphify/repos// and ...// # Run /graphify on each local path to produce their graph.json files # Then merge: graphify merge-graphs \ diff --git a/tools/skillgen/expected/graphify__skills__kilo__references__github-and-merge.md b/tools/skillgen/expected/graphify__skills__kilo__references__github-and-merge.md index a41ea06e1..282c06f70 100644 --- a/tools/skillgen/expected/graphify__skills__kilo__references__github-and-merge.md +++ b/tools/skillgen/expected/graphify__skills__kilo__references__github-and-merge.md @@ -12,9 +12,8 @@ LOCAL_PATH=$(graphify clone [--branch ]) **Multiple repos (cross-repo graph):** ```bash -# Clone each repo, run the full pipeline on each, then merge -graphify clone # → ~/.graphify/repos// -graphify clone # → ~/.graphify/repos// +# Clone each repo (one call or many — both work), run the full pipeline on each, then merge +graphify clone # → ~/.graphify/repos// and ...// # Run /graphify on each local path to produce their graph.json files # Then merge: graphify merge-graphs \ diff --git a/tools/skillgen/expected/graphify__skills__kiro__references__github-and-merge.md b/tools/skillgen/expected/graphify__skills__kiro__references__github-and-merge.md index a41ea06e1..282c06f70 100644 --- a/tools/skillgen/expected/graphify__skills__kiro__references__github-and-merge.md +++ b/tools/skillgen/expected/graphify__skills__kiro__references__github-and-merge.md @@ -12,9 +12,8 @@ LOCAL_PATH=$(graphify clone [--branch ]) **Multiple repos (cross-repo graph):** ```bash -# Clone each repo, run the full pipeline on each, then merge -graphify clone # → ~/.graphify/repos// -graphify clone # → ~/.graphify/repos// +# Clone each repo (one call or many — both work), run the full pipeline on each, then merge +graphify clone # → ~/.graphify/repos// and ...// # Run /graphify on each local path to produce their graph.json files # Then merge: graphify merge-graphs \ diff --git a/tools/skillgen/expected/graphify__skills__opencode__references__github-and-merge.md b/tools/skillgen/expected/graphify__skills__opencode__references__github-and-merge.md index a41ea06e1..282c06f70 100644 --- a/tools/skillgen/expected/graphify__skills__opencode__references__github-and-merge.md +++ b/tools/skillgen/expected/graphify__skills__opencode__references__github-and-merge.md @@ -12,9 +12,8 @@ LOCAL_PATH=$(graphify clone [--branch ]) **Multiple repos (cross-repo graph):** ```bash -# Clone each repo, run the full pipeline on each, then merge -graphify clone # → ~/.graphify/repos// -graphify clone # → ~/.graphify/repos// +# Clone each repo (one call or many — both work), run the full pipeline on each, then merge +graphify clone # → ~/.graphify/repos// and ...// # Run /graphify on each local path to produce their graph.json files # Then merge: graphify merge-graphs \ diff --git a/tools/skillgen/expected/graphify__skills__pi__references__github-and-merge.md b/tools/skillgen/expected/graphify__skills__pi__references__github-and-merge.md index a41ea06e1..282c06f70 100644 --- a/tools/skillgen/expected/graphify__skills__pi__references__github-and-merge.md +++ b/tools/skillgen/expected/graphify__skills__pi__references__github-and-merge.md @@ -12,9 +12,8 @@ LOCAL_PATH=$(graphify clone [--branch ]) **Multiple repos (cross-repo graph):** ```bash -# Clone each repo, run the full pipeline on each, then merge -graphify clone # → ~/.graphify/repos// -graphify clone # → ~/.graphify/repos// +# Clone each repo (one call or many — both work), run the full pipeline on each, then merge +graphify clone # → ~/.graphify/repos// and ...// # Run /graphify on each local path to produce their graph.json files # Then merge: graphify merge-graphs \ diff --git a/tools/skillgen/expected/graphify__skills__trae__references__github-and-merge.md b/tools/skillgen/expected/graphify__skills__trae__references__github-and-merge.md index a41ea06e1..282c06f70 100644 --- a/tools/skillgen/expected/graphify__skills__trae__references__github-and-merge.md +++ b/tools/skillgen/expected/graphify__skills__trae__references__github-and-merge.md @@ -12,9 +12,8 @@ LOCAL_PATH=$(graphify clone [--branch ]) **Multiple repos (cross-repo graph):** ```bash -# Clone each repo, run the full pipeline on each, then merge -graphify clone # → ~/.graphify/repos// -graphify clone # → ~/.graphify/repos// +# Clone each repo (one call or many — both work), run the full pipeline on each, then merge +graphify clone # → ~/.graphify/repos// and ...// # Run /graphify on each local path to produce their graph.json files # Then merge: graphify merge-graphs \ diff --git a/tools/skillgen/expected/graphify__skills__vscode__references__github-and-merge.md b/tools/skillgen/expected/graphify__skills__vscode__references__github-and-merge.md index a41ea06e1..282c06f70 100644 --- a/tools/skillgen/expected/graphify__skills__vscode__references__github-and-merge.md +++ b/tools/skillgen/expected/graphify__skills__vscode__references__github-and-merge.md @@ -12,9 +12,8 @@ LOCAL_PATH=$(graphify clone [--branch ]) **Multiple repos (cross-repo graph):** ```bash -# Clone each repo, run the full pipeline on each, then merge -graphify clone # → ~/.graphify/repos// -graphify clone # → ~/.graphify/repos// +# Clone each repo (one call or many — both work), run the full pipeline on each, then merge +graphify clone # → ~/.graphify/repos// and ...// # Run /graphify on each local path to produce their graph.json files # Then merge: graphify merge-graphs \ diff --git a/tools/skillgen/expected/graphify__skills__windows__references__github-and-merge.md b/tools/skillgen/expected/graphify__skills__windows__references__github-and-merge.md index a41ea06e1..282c06f70 100644 --- a/tools/skillgen/expected/graphify__skills__windows__references__github-and-merge.md +++ b/tools/skillgen/expected/graphify__skills__windows__references__github-and-merge.md @@ -12,9 +12,8 @@ LOCAL_PATH=$(graphify clone [--branch ]) **Multiple repos (cross-repo graph):** ```bash -# Clone each repo, run the full pipeline on each, then merge -graphify clone # → ~/.graphify/repos// -graphify clone # → ~/.graphify/repos// +# Clone each repo (one call or many — both work), run the full pipeline on each, then merge +graphify clone # → ~/.graphify/repos// and ...// # Run /graphify on each local path to produce their graph.json files # Then merge: graphify merge-graphs \ diff --git a/tools/skillgen/fragments/references/shared/github-and-merge.md b/tools/skillgen/fragments/references/shared/github-and-merge.md index a41ea06e1..282c06f70 100644 --- a/tools/skillgen/fragments/references/shared/github-and-merge.md +++ b/tools/skillgen/fragments/references/shared/github-and-merge.md @@ -12,9 +12,8 @@ LOCAL_PATH=$(graphify clone [--branch ]) **Multiple repos (cross-repo graph):** ```bash -# Clone each repo, run the full pipeline on each, then merge -graphify clone # → ~/.graphify/repos// -graphify clone # → ~/.graphify/repos// +# Clone each repo (one call or many — both work), run the full pipeline on each, then merge +graphify clone # → ~/.graphify/repos// and ...// # Run /graphify on each local path to produce their graph.json files # Then merge: graphify merge-graphs \