mcpField
M
maintenance

maintenance

github.com/fellowship-devCloud & DevOps3145 installsUpdated 2w ago
Repository

About maintenance

A maintenance skill for auditing infrastructure health, including processes, secrets, dependencies, branches, and system status. It does not modify code, configuration, or repository contents, and can record findings as GitHub issues.

Key features

  1. 01Check secrets and dependency coverage
  2. 02Audit stale branches and LaunchAgents
  3. 03Review scheduled-job logs and system health
  4. 04Verify repository lists and labels
  5. 05Record findings as GitHub issues

Use cases

  1. 01Run a scheduled infrastructure review
  2. 02Investigate automated jobs that stopped working
  3. 03Check suspected disk, brew, or secret issues

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/fellowship-dev/dogfooded-skills --skill maintenance

After installing, type/maintenancein Claude Code to confirm it loaded.

Details

From the project README

Maintenance

Infra health audit. Investigate → Flag → Create issues. Never modify code, configs, or repo contents.

Install via npx:

npx skills add fellowship-dev/dogfooded-skills/ops/maintenance

Architecture/doc checks have moved to /entropy-check. This skill covers infrastructure only: processes, secrets, labels, branches, dependencies, system health, and memory hygiene.

When to Use

  • Weekly scheduled run (cron) — full infra sweep
  • After a system change (new LaunchAgent, new cron job)
  • When an automated task seems to have stopped working
  • When disk or brew issues are suspected

Guiding Principle

Maintenance takes 10x more effort than building. This job surfaces problems Max can't see day-to-day. Output: a report + GitHub issues for anything worth tracking.


Instructions

Run ALL checks. Each finding either becomes a GitHub issue in fellowship-dev/claude-buddy or is noted as clean.

# Set GH_TOKEN at the start of every run
export GH_TOKEN=$(grep GH_TOKEN_FELLOWSHIP /home/ubuntu/projects/fellowship-dev/claude-buddy/.env | cut -d= -f2)

1. Memory Consolidation (always)
wc -l /home/ubuntu/projects/fellowship-dev/claude-buddy/memory/MEMORY.md
ls ~/.claude/projects/-Users-maxfindel-Projects-claude-buddy/*.jsonl | wc -l
  • MEMORY.md >180 lines → compact, run /save-memory
  • JSONL session files: ignore accumulation — ~5MB each is fine, no action needed

2. Secrets Scan
grep -r "ghp_\|ghs_\|sk-\|xoxb-\|AAEi\|AAAA[a-zA-Z0-9]" \
  /home/ubuntu/projects/fellowship-dev/claude-buddy/ \
  --include="*.md" --include="*.sh" --include="*.py" --include="*.mjs" \
  -l 2>/dev/null | grep -v ".git"

Flag any file with a live-looking token/key that is git-tracked.


3. Dependabot Coverage

Read PROJECTS.md. For every active repo (Products + Tooling, skip FVL):

GH_TOKEN=$GH_TOKEN gh api repos/{org}/{repo}/contents/.github/dependabot.yml 2>&1
  • Missing config → flag as issue
  • Config present but silent >30 days → flag

4. Stale Branches

For active repos, check for branches that are merged but not deleted:

GH_TOKEN=$GH_TOKEN gh api repos/{org}/{repo}/branches --paginate \
  --jq '.[].name' 2>/dev/null
# Cross-reference against merged PRs

Flag repos with >5 stale merged branches.


5. LaunchAgent Health
ls ~/Library/LaunchAgents/fry.*.plist | while read f; do
  target=$(grep -o '/[^<]*' "$f" | grep -E '\.sh|\.py|\.mjs' | head -1)
  [ -f "$target" ] || echo "MISSING: $f → $target"
done
launchctl list | grep fry

Flag any plist pointing to a missing file, or any fry agent not loaded.


6. Cron Log Errors (last 7 days)
ls -t ~/.local/share/fry-bot/cron-logs/*.log | head -20 | xargs grep -l "FAILED\|ERROR\|timeout" 2>/dev/null

Recurring failures in the same job = flag as issue with log excerpt.


7. PROJECTS.md Accuracy
  • Check repos listed as active: do they still exist on GitHub?
  • Check repos listed as Dormant: any commits in last 30 days?
  • Any new repos Max created that aren't in PROJECTS.md?
GH_TOKEN=$GH_TOKEN gh repo list {org} --json name,isArchived,pushedAt --limit 50

Run for: maxfindel, fellowship-dev, Lexgo-cl, CLAPES-UC, Energia-UC.


8. Spacestation System Health
brew outdated --quiet | wc -l
df -h / | tail -1
  • Brew packages outdated >20 → flag
  • Disk >85% used → flag

9. Label Sync

Verify standard labels across active repos.

For each active fellowship-dev repo (farmesa, inbox-angel, booster-pack, mtg-lotr, commander):

STANDARD="ready-to-work in-progress needs-manual-review reviewed double-checked ready-to-merge groundwork dependencies bug enhancement documentation"
for repo in farmesa inbox-angel booster-pack mtg-lotr commander; do
  existing=$(GH_TOKEN=$GH_TOKEN gh label list --repo fellowship-dev/$repo \
    --json name --jq '.[].name' 2>/dev/null | tr '\n' ' ')
  for label in $STANDARD; do
    echo "$existing" | grep -q "$label" || echo "MISSING: fellowship-dev/$repo → $label"
  done
done
  • Any missing labels → run gh label create to add them (idempotent, safe to do inline)
  • Report how many were created vs already present

10. Booster-Pack Sync

Pull changes into dependent sites.

Find all local repos that have a booster git remote:

for dir in ~/Projects/fellowship-dev/*/; do
  if git -C "$dir" remote | grep -q '^booster$' 2>/dev/null; then
    repo=$(basename "$dir")
    BEHIND=$(git -C "$dir" rev-list HEAD..booster/main --count 2>/dev/null || echo "?")
    echo "fellowship-dev/$repo: $BEHIND commits behind booster-pack"
  fi
done
  • If any site is >0 commits behind → queue a task in overnight-tasks.md: pull-booster-{repo-slug}, type maintenance, executor {project-path}, prompt git pull booster main --no-edit && git push.
  • If there are conflicts → flag for Max instead, do not pull autonomously.

11. Open Issues in fellowship-dev/claude-buddy

List all open issues — no action, just surface in report so Max sees the backlog.

GH_TOKEN=$GH_TOKEN gh issue list --repo fellowship-dev/claude-buddy --state open \
  --json number,title,labels,createdAt

Creating Issues

Before creating any issue, check for duplicates:

# Fetch open + closed issue titles (closed catches older attempts at the same problem)
GH_TOKEN=$GH_TOKEN gh issue list --repo fellowship-dev/claude-buddy \
  --state all --limit 200 --json number,title,state \
  --jq '.[] | "\(.state) #\(.number): \(.title)"'
  • If a matching open issue already exists → add a comment or just note it in the report. Do NOT create a duplicate.
  • If a matching closed issue exists → only re-open or create a new one if the problem has clearly recurred. Note the previous issue number in the body.

For each new finding with no existing issue:

GH_TOKEN=$GH_TOKEN gh issue create \
  --repo fellowship-dev/claude-buddy \
  --title "Maintenance: {finding}" \
  --label "maintenance" \
  --body "..."

Output

Save report to reports/maintenance/YYYY-MM-DD.md:

# Maintenance Report — YYYY-MM-DD

## Checks Run
- [x] Memory consolidation
- [x] Secrets scan
- [x] Dependabot coverage
- [x] Stale branches
- [x] LaunchAgent health
- [x] Cron log errors
- [x] PROJECTS.md accuracy
- [x] Spacestation system health
- [x] Label sync
- [x] Booster-pack sync
- [x] Open issues review

> Note: Architecture/doc drift checks have moved to /entropy-check (separate skill)

## Findings

### Issues Created
- issue [fellowship-dev/claude-buddy#N](url): {title}

### Clean
- {area}: nothing flagged

### Noted (no issue, low severity)
- {finding}

## Memory
- MEMORY.md: {N} lines
- JSONL sessions: {N} files

Then output a short Telegram summary:

🔧 Maintenance — YYYY-MM-DD

{N} issues created: [list with links]
{N} areas clean
Memory: {N}/200 lines

Full report: reports/maintenance/YYYY-MM-DD.md

What Was Removed from This Skill

Section 11 (Imported lib drift — speckit and toolkit) was extracted to /entropy-check.

Why: Checking whether speckit commands match the source of truth is an architecture/doc check — it measures whether the tooling knowledge layer is current. Entropy-check owns all doc/architecture freshness signals. This skill owns infra only.

To check speckit drift: run /entropy-check against the target repo.

Comments

Markdown supported