feat(just): add domain-scoped bulk plugin recipes#324
Merged
Conversation
Add an orchestration layer over the existing per-repo plugin-config judgment skills so plugins can be installed / checked / re-evaluated across many repos, scoped by domain (fvh|laurigates|all), with an fzf --multi checkbox picker so each run's repo set is chosen explicitly. Five recipes: - _plugins-repos: guarded domain-scope enumerator (`-e .git` guard, not git rev-parse, since ~/repos is itself a git repo; non-repos carrying .claude config are FLAGged on stderr, never processed). - _plugins-annotate: jq state annotator (enabled/lauri counts, alias + ok/DRIFT, marketplace key, workflows, tracked/gitignored) as one path<TAB>summary line for the fzf row/preview and the check report. - plugins-normalize-alias: deterministic post-pass reconciling every laurigates alias to laurigates-claude-plugins (settings.json keyed on source.repo; workflows via a perl lookahead that spares @claude-plugins-official), idempotent, edits local files even if gitignored. - plugins-bulk: enumerate -> annotate -> fzf picker -> sequential per-repo action (check via local jq; setup/reeval/full via `claude -p`) -> alias post-pass after any write. Never commits. - plugins-audit-scope: scoped drift audit sharing a new private _plugins-audit-roots body; plugins-audit now delegates to it for the whole-tree variant (behaviour-preserving). reeval uses /health:check --scope=stack --fix (health-audit is user-invocable: false; health-check reaches its fix flow). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014xTWB98DPccsiCpkbbpzde
Contributor
|
| Status | Count |
|---|---|
| 🔍 Total | 170 |
| ✅ Successful | 160 |
| ⏳ Timeouts | 0 |
| 🔀 Redirected | 0 |
| 👻 Excluded | 9 |
| ❓ Unknown | 0 |
| 🚫 Errors | 1 |
Errors per input
Errors in exact_dot_claude/docs/prds/daily-catchup.PRD.md
- [404] https://docs.anthropic.com/claude-code/commands | Failed: Network error: Not Found
Full Github Actions output
Please fix the broken links before merging.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Adds an orchestration layer over the existing per-repo plugin-config judgment skills so Claude plugins can be installed / checked / re-evaluated across many repos, scoped by domain (
fvh|laurigates|all), with anfzf --multicheckbox picker so each run's repo set is chosen explicitly (no surprises).The plumbing already existed (
plugins-auditwhole-tree,plugins-sync-repouniform-canonical,plugins-setup-repo/-check-repocwd-bound). The gap was the missing enumeration → picker → batch-loop layer over those skills, plus a deterministic alias post-pass. This builds only that layer and reuses everything else.Recipes (in
private_dot_config/just/plugins.just)_plugins-repos scope-e "$e/.git"(dir or worktree file), notgit rev-parse—~/reposis itself a git repo, so rev-parse would falsely passarchive/,tmp/,io.fvh.io/, … A non-repo carrying.claude/settings.json(e.g. FVHezpolls) is FLAGged on stderr and skipped._plugins-annotate repojqstate annotator → onepath<TAB>summaryline (enabled/lauri counts, alias +ok/DRIFT, marketplace key, workflows,tracked/gitignored) for the fzf row,--preview, and thecheckreport.plugins-normalize-alias repolaurigates-claude-plugins. settings.json keyed onsource.repo == laurigates/claude-plugins(robust to whatever alias a skill wrote); workflows via aperllookahead that spares@claude-plugins-official. Idempotent; edits local files even if gitignored.plugins-bulk scope action="check"check= local jq (read-only);setup=/configure-claude-plugins --fix;reeval=/health:check --scope=stack --fix;full=/configure:repo --fix.plugins-audit-scope scope_plugins-audit-rootsbody;plugins-auditnow delegates to it for the whole-tree variant (behaviour-preserving).reevaltargets/health:check --scope=stack --fixbecause/health:auditis unreachable (health-auditisuser-invocable: false);health-check --scope=stackreaches its fix flow.Verification
just -g _plugins-repos fvh→ only real repos;ezpollsFLAGged on stderr;archive/tmp/io.fvh.ioabsent.just -g _plugins-annotate ~/repos/laurigates/gitops→ reportslgates-claude-pluginsalias as DRIFT.plugins-normalize-aliason gitops rewrites key + suffixes; re-run → "already canonical" (idempotent), exit 0. On pal-mcp-server, the 6@claude-plugins-officialLSP pins are byte-identical after (untouched); theclaude-plugins/lgates-claude-pluginslaurigates pins are normalized.plugins-audit(whole tree, refactored) scanned 5 =laurigates2 +fvh3 — exact union.Caveat
reeval's/health:checkfix flow uses per-categoryAskUserQuestion; under-pthere is no operator, so it may no-op — documented in the recipe as best-run-interactively.setup(--fix) is reliably non-interactive.🤖 Generated with Claude Code
https://claude.ai/code/session_014xTWB98DPccsiCpkbbpzde