Repository navigation
feat: Ship RepoMan v0.1.0 as a self-contained plugin #52
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
rubambiza
merged 11 commits into
rossoctl:main
from
rubambiza:feat/repoman-v010-release
Oct 27, 2026
Merged
Changes from all commits
Commits
Show all changes
11 commits
Select commit
Hold shift + click to select a range
8ff69ec
feat: Add engine vendor script with provenance stamp
rubambiza ad0e4d1
feat: Bundle program skills into repoman plugin; v0.1.0
rubambiza 6ea65e0
docs: Point SKILL.md at the bundled engine
rubambiza 3f517a6
feat: Vendor the v0.1.0 engine into the repoman plugin
rubambiza 568cc81
docs: Update README for the self-contained repoman bundle
rubambiza dc02606
docs: Declare bash 3.2+ for all skills (stock macOS)
rubambiza 27760a5
chore: Re-stamp vendored engine at automation HEAD
rubambiza f5ebe55
docs: Add CHANGELOG for v0.1.0
rubambiza e5434ba
fix: Address clawgenti review on #52
rubambiza d94103c
docs: Remove spec-path references from vendor script/test
rubambiza d0ee788
docs: Add Jim Cadden to v0.1.0 contributors
rubambiza File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
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
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,45 @@ | ||
| # Changelog | ||
|
|
||
| All notable changes to this project are documented here. The format is based on | ||
| [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project adheres | ||
| to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). | ||
|
|
||
| ## [0.1.0] - 2026-10-23 | ||
|
|
||
| First tagged release of RepoMan, distributed through the `rossoctl-agent-skills` | ||
| marketplace. | ||
|
|
||
| RepoMan runs automated maintenance **programs** across a set of GitHub repos you | ||
| enroll once, handling the capability checks and output wiring for you. `/repoman` is | ||
| a single intent-dispatching entrypoint that infers whether you are setting up, | ||
| enabling a program, or running one. | ||
|
|
||
| ### Added | ||
|
|
||
| - **Self-contained `repoman` plugin.** One install bundles the `/repoman` entrypoint, | ||
| every program skill, and the engine scripts, so you install once and enable more | ||
| programs on the fly. The engine is vendored into the plugin and resolved at runtime | ||
| via `${CLAUDE_PLUGIN_ROOT}` — no separate automation checkout is required. | ||
| - **Six programs** ship ready to enable: `link-health` (scanner + fixer), | ||
| `dep-bump` (scanner + fixer), `pr-review`, `repo-sync`, `automation-health`, and | ||
| `weekly-report`. | ||
| - **Standalone program plugins** remain installable on their own, for using a single | ||
| program (for example a one-off PR review) without the full RepoMan bundle. | ||
| - **Provenance stamp** (`_vendor.json`) records the exact `rossoctl/automation` commit | ||
| the bundled engine was vendored from, so a shipped bundle is traceable to its source. | ||
|
|
||
| ### Changed | ||
|
|
||
| - `marketplace.json` version reconciled to `0.1.0`. | ||
| - All skills now declare `bash` 3.2+ and run on the macOS system default. | ||
|
|
||
| ### Notes | ||
|
|
||
| - Engine development lives in `rossoctl/automation`; engine fixes reach every RepoMan | ||
| user through a single `repoman` plugin update. | ||
|
|
||
| ### Contributors | ||
|
|
||
| Gloire Rubambiza, Aleksander Slominski, Mariusz Sabath, Jim Cadden. | ||
|
|
||
| [0.1.0]: https://github.com/rossoctl/agent-skills/releases/tag/v0.1.0 |
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
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,64 @@ | ||
| #!/usr/bin/env bash | ||
| set -uo pipefail | ||
| # Vendor the RepoMan engine from an automation checkout into the repoman plugin's | ||
| # flat scripts dir, then stamp the source commit SHA for provenance. | ||
| # | ||
| # Explicit manifest (never a glob) so this can only ever populate the repoman | ||
| # plugin — it must never touch a standalone skill's scripts/ (see agent-skills#51). | ||
| # Part of the RepoMan v0.1.0 packaged release (epic rossoctl/automation#72). | ||
| # | ||
| # vendor-engine.sh --source <automation-repo> --dest <repoman-scripts-dir> | ||
|
|
||
| SRC="" DEST="" | ||
| while [ $# -gt 0 ]; do | ||
| case "$1" in | ||
| --source) SRC="${2:-}"; shift 2 ;; | ||
| --dest) DEST="${2:-}"; shift 2 ;; | ||
| *) echo "ERROR: unknown arg: $1" >&2; exit 2 ;; | ||
| esac | ||
| done | ||
| [ -n "$SRC" ] && [ -n "$DEST" ] || { echo "ERROR: --source and --dest are required" >&2; exit 2; } | ||
|
|
||
| # The 23 engine scripts. Flat set: nearly all source program-lib.sh, | ||
| # which sources core.sh/github-api.sh/fork.sh/org.sh/repoman-requirements.sh. | ||
| MANIFEST="automation-health-dashboard core dep-bump-fixer dep-bump-scanner \ | ||
| extract-broken-links fork github-api link-health-fixer link-health-scanner \ | ||
| org parse-diff-map pr-review-fixer pr-review-impact pr-review-lib \ | ||
| pr-review-scanner program-lib repo-sync repoman-check repoman-index \ | ||
| repoman-requirements repoman-run repoman-setup weekly-report" | ||
|
|
||
| # Pre-validate the WHOLE manifest before copying anything, so a source missing | ||
| # late in the list cannot leave a half-vendored dest with a stale _vendor.json. | ||
| # shellcheck disable=SC2086 | ||
| for f in $MANIFEST; do | ||
| if [ ! -f "$SRC/scripts/$f.sh" ]; then | ||
| echo "ERROR: missing engine source: $SRC/scripts/$f.sh (nothing copied)" >&2; exit 1 | ||
| fi | ||
| done | ||
|
|
||
| mkdir -p "$DEST" | ||
| # shellcheck disable=SC2086 | ||
| for f in $MANIFEST; do | ||
| if ! cp "$SRC/scripts/$f.sh" "$DEST/$f.sh"; then | ||
| echo "ERROR: copy failed for $f.sh" >&2; exit 1 | ||
| fi | ||
| done | ||
|
|
||
| # Provenance stamp: record the SOURCE repo's HEAD sha (not the dest repo's). | ||
| if ! SHA=$(git -C "$SRC" rev-parse HEAD 2>/dev/null); then | ||
| echo "ERROR: cannot read source HEAD sha from $SRC" >&2; exit 1 | ||
| fi | ||
| NOW=$(date -u +%Y-%m-%dT%H:%M:%SZ) | ||
| # word-splitting $MANIFEST into one line per script is intentional | ||
| # shellcheck disable=SC2086 | ||
| if ! FILES_JSON=$(printf '%s\n' $MANIFEST | sed 's/$/.sh/' | jq -R . | jq -s .); then | ||
| echo "ERROR: could not build file list" >&2; exit 1 | ||
| fi | ||
| if ! jq -n --arg repo "rossoctl/automation" --arg sha "$SHA" --arg at "$NOW" \ | ||
| --argjson files "$FILES_JSON" \ | ||
| '{source_repo:$repo, source_sha:$sha, vendored_at:$at, files:$files}' \ | ||
| > "$DEST/_vendor.json"; then | ||
| echo "ERROR: provenance stamp write failed" >&2; exit 1 | ||
| fi | ||
|
|
||
| echo "Vendored $(echo "$MANIFEST" | wc -w | tr -d ' ') engine scripts to $DEST (source $SHA)" | ||
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
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
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
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
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
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
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,30 @@ | ||
| { | ||
| "source_repo": "rossoctl/automation", | ||
| "source_sha": "0311752eba5350c74b8c9650137d3e6da65bd547", | ||
| "vendored_at": "2026-10-23T03:46:40Z", | ||
| "files": [ | ||
| "automation-health-dashboard.sh", | ||
| "core.sh", | ||
| "dep-bump-fixer.sh", | ||
| "dep-bump-scanner.sh", | ||
| "extract-broken-links.sh", | ||
| "fork.sh", | ||
| "github-api.sh", | ||
| "link-health-fixer.sh", | ||
| "link-health-scanner.sh", | ||
| "org.sh", | ||
| "parse-diff-map.sh", | ||
| "pr-review-fixer.sh", | ||
| "pr-review-impact.sh", | ||
| "pr-review-lib.sh", | ||
| "pr-review-scanner.sh", | ||
| "program-lib.sh", | ||
| "repo-sync.sh", | ||
| "repoman-check.sh", | ||
| "repoman-index.sh", | ||
| "repoman-requirements.sh", | ||
| "repoman-run.sh", | ||
| "repoman-setup.sh", | ||
| "weekly-report.sh" | ||
| ] | ||
| } |
Oops, something went wrong.
Oops, something went wrong.
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.
Uh oh!
There was an error while loading. Please reload this page.