From tend-ci-runner
Daily review of the previous night's CI runs — identifies problems and improves repo-local skills and workflows.
npx claudepluginhub max-sixty/tend --plugin tend-ci-runnerThis skill uses the workspace's default tool permissions.
Analyze the previous night's Claude CI runs in this repository. Identify behavioral problems, skill
Hourly analysis of Claude CI session logs — identifies behavioral problems, skill gaps, and workflow issues.
Debugs Claude CI runs by downloading and parsing session log artifacts from GitHub Actions. Use when asked to "debug a CI run", "check what the bot did", "look at session logs", "investigate a tend run", "why did the bot do X", "what happened in CI", or to trace bot behavior in a specific workflow run.
Orchestrates periodic repository review cycles: dispatches specialized reviewers for API contracts/docs/code/skills, aggregates findings, escalates to reports/issues/PRs.
Share bugs, ideas, or general feedback.
Analyze the previous night's Claude CI runs in this repository. Identify behavioral problems, skill gaps, and workflow issues — then propose improvements to the repo's local skills and workflows.
This skill runs in the adopter repo, not in tend. Improvements target .claude/skills/ and
.config/tend.toml in this repository.
ls .claude/skills/
Load any repo-specific skill overlay before proceeding.
@review-gates.md
Use TRACKING_LABEL="review-runs-tracking" for this skill's tracking issues.
List Claude CI runs that completed overnight (past 12 hours):
REPO=$(gh repo view --json nameWithOwner --jq '.nameWithOwner')
SINCE=$(date -u -d '12 hours ago' +%Y-%m-%dT%H:%M:%SZ)
for workflow in $(gh api repos/$REPO/actions/workflows --jq '.workflows[] | select(.name | startswith("tend-")) | .id'); do
gh api "repos/$REPO/actions/workflows/$workflow/runs?created=>=$SINCE&status=completed" \
--jq '.workflow_runs[] | {databaseId: .id, conclusion, createdAt: .created_at, name: .name}'
done
If no runs found, report "no runs to review" and exit.
Load /install-tend:debug-ci-session for download commands and JSONL parsing queries.
Skip runs without artifacts. Trace decision chains: what did Claude decide, what evidence did it use, what was the outcome?
For each analyzed run, compare what the bot did against what happened next:
# Example: check if a bot PR was merged or closed
gh pr list --author "$BOT_LOGIN" --state all --json number,title,state,closedAt \
--jq '.[] | select(.closedAt > "'$SINCE'")'
Before creating issues or PRs, check for existing ones:
gh issue list --state open --json number,title,body
gh pr list --state open --json number,title,headRefName,body
gh issue list --state closed --json number,title,closedAt --limit 30
Search titles AND bodies for related keywords.
Improvements target repo-local files:
.claude/skills/ — update or create skill overlays with guidance that prevents the
identified problem. Prefer updating existing skill files over creating new ones..config/tend.toml — adjust workflow configuration if the problem is structural (e.g.,
wrong cron schedule, missing setup step).CLAUDE.md — add project-specific guidance if the problem is about code conventions or
patterns the bot keeps getting wrong.Prefer PRs over issues. A PR with a clear description is immediately actionable.
daily/review-runs-$GITHUB_RUN_ID, fix, commit, push, create with
label review-runs. Put full analysis in PR description (run IDs, log excerpts, root cause,
gate assessment).Limit to at most 2 PRs per run. Pick the highest-confidence findings; note the rest in the tracking issue.
If no problems found (or none passed the gates), report "all clear" with: runs analyzed, sessions reviewed, brief quality assessment, and any below-threshold findings recorded in the tracking issue.