From syndicate-pipeline
Diagnose syndicate health — ollama reachability, disk free, env vars, git state. Reports remediation hints; does NOT auto-fix.
How this skill is triggered — by the user, by Claude, or both
Slash command
/syndicate-pipeline:syndicate-healWhen to use
When the user reports a failure ("syndicate is broken", "pipeline didn't run", "telegram never sent the summary") or when /syndicate-status surfaces a red flag and you want to understand why.
This skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
You are diagnosing the syndicate pipeline. **Do not auto-fix anything** —
You are diagnosing the syndicate pipeline. Do not auto-fix anything — your job is to report what's wrong with actionable shell commands the user can copy. The user takes the remediation step.
cd "${SYNDICATE_REPO:-$(pwd)}" && uv run python -m pipeline.cli health
Then fetch the broader status for context:
cd "${SYNDICATE_REPO:-$(pwd)}" && uv run python -m pipeline.cli status
Look for syndicate processes that have been alive too long (≥4h is the default cleaner threshold):
pgrep -lf 'run_syndicate\.sh|uv run syndicate|\.venv/bin/syndicate'
For each PID, get elapsed time:
ps -p <PID> -o etime=,command=
Walk through each signal in priority order and surface remediation hints:
health.ollama_reachable = falseOLLAMA_HOST=0.0.0.0 was injected
by launchd (it can't be used as a client URL).unset OLLAMA_HOST (or set to http://localhost:11434), then
ollama serve if the process isn't running.env_present and flag any of these false: GMAIL_USER,
GMAIL_APP_PASSWORD, FEED_REPO_URL, FEED_REPO_PAT,
TELEGRAM_BOT_TOKEN, TELEGRAM_CHAT_ID.env_present.AI_PROVIDER (defaults to
ollama if unset) and flag the matching credential as false:
ollama → OLLAMA_HOST; anthropic → ANTHROPIC_API_KEY; openai
→ OPENAI_API_KEY; gemini → GEMINI_API_KEY; minimax →
MINIMAX_API_KEY. If EMBEDDING_PROVIDER is set and differs, also
check its credential..env matrix and INSTALL.md.disk_free_gb < 5find logs/ -name '*.txt' -mtime +7 -delete (logger already does
this for >7d files, but only when invoked).bash scripts/clean_stale_runs.sh — kills processes over the 4h
threshold via SIGTERM with SIGKILL fallback. Mac-only (uses macOS ps).status.last_run_per_channel, find any channel with ok=false.errors array verbatim. Common ones:
IMAP connect timed out → Gmail outage or network; retry laterfeed <name>: HTTP 502 → that single feed is bad; remove from
config/rss_sources.json if persistentplaywright strict-mode locator violation → X.com changed DOM;
update selectors in pipeline/ingestion/twitter.pystatus.git_dirty=true, mention it but don't treat as blocker.news-archive/
not to the syndicate repo itself.Produce a short list of red flags with the exact shell command to fix each.
End with (rerun /syndicate-status to verify). Do not run any
remediation command yourself — the user runs them.
npx claudepluginhub aadarshvelu/syndicate --plugin syndicate-pipelineCreates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.