fix(clone): accept multiple GitHub URLs and reject unknown flags (#2703) - #2711
fix(clone): accept multiple GitHub URLs and reject unknown flags (#2703)#2711ousamabenyounes wants to merge 1 commit into
Conversation
There was a problem hiding this comment.
Graphify reviewed this change.
Looks safe to merge — no coupling regressions and no blocking issues, checked against the code graph (not a self-assessment).
Formal verification. No changes could be formally verified in this run.
Graphify review — findings
This PR updates graphify clone to accept multiple GitHub URLs in a single invocation, looping over each and printing its local path. It also adds argument validation—unknown flags are rejected with a usage message, and --out is disallowed when more than one URL is given. Accompanying changes update the CHANGELOG, the various skill/agent reference docs to reflect the multi-URL syntax, and related tests/generated skill fixtures.
No blocking issues surfaced. 3 lower-confidence candidates did not survive cross-model review.
Analysis details — impact, health, verification
Impact & health
Graphify review
Impact — 495 functions depend on the 327 functions this change touches.
Health — this change adds coupling hotspots:
- worse:
dispatch_command()— 7 callers, 117 callees
Verification — 495 functions in the blast radius were not formally verified this run (proofs are advisory here).
Gate & verification
graphify gate
PASS — objectively clean (no health regressions, tests not run — proofs not run this pass (advisory)). Grounded, not self-assessed.
Advisory (not blocking):
- verification_scope: 452 function(s) in the blast radius were not formally verified this run
Formal verification
Could not verify: Could not verify dispatch\_command.
The verifier did not have enough to check dispatch\_command, so it is saying so rather than guessing. No false assurance is the whole point.
Guarantee: No guarantee either way, this is an honest abstention, not a pass.
Note: Reason: not verifiable: all 23 sampled inputs raised on both versions — the function never executed, so 'no divergence' would be vacuous (mostly SystemExit — names the real obstacle, not a sampling gap)
· 1 more finding(s) on lines outside this diff (see the check run).
graphify cloneused to silently drop every URL past the first, which is the exact multi-repo workflow issue #2703 asks about. It now clones each URL in turn and prints each destination path; unknown flags are rejected with a usage message, and--outis refused with multiple URLs to keep destinations unambiguous.Test verification (RED → GREEN)
With the fix reverted, the new test fails (RED):
With the fix applied, the test passes (GREEN):
Full local suite
Command:
env -u GEMINI_API_KEY -u GOOGLE_API_KEY -u OPENAI_API_KEY -u ANTHROPIC_API_KEY -u KIMI_API_KEY -u DEEPSEEK_API_KEY -u OLLAMA_HOST uv run --frozen pytest tests/ -q --tb=short && uv run --frozen python -m tools.skillgen --check && uv run --frozen python -m tools.skillgen --audit-coverage && uv run --frozen python -m tools.skillgen --schema-singleton && uv run --frozen python -m tools.skillgen --monolith-roundtrip && uv run --frozen python -m tools.skillgen --always-on-roundtripFix #2703