Swig CI Repro
swig/swig
Reproduce a GitHub Actions Linux CI failure locally when it does not happen on your machine: a podman/docker image that mirrors the ubuntu-22.04 runner by reusing the real Tools/CI-linux-.sh install…
End-to-end runbook for deploying, operating, troubleshooting, and monitoring RAGFlow (runtime ops only).
$ npx skills add LeoYeAI/openclaw-master-skills --skill ragflow-runbook -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install LeoYeAI/openclaw-master-skills ragflow-runbook --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/LeoYeAI/openclaw-master-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/ragflow-runbook .claude/skills/ragflow-runbook && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "ragflow-runbook" agent skill from https://github.com/LeoYeAI/openclaw-master-skills/tree/main/skills/ragflow-runbook into .claude/skills/ragflow-runbook/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ragflow-runbook", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/LeoYeAI/openclaw-master-skills/tree/main/skills/ragflow-runbookType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add LeoYeAI/openclaw-master-skills --skill ragflow-runbook -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install LeoYeAI/openclaw-master-skills ragflow-runbook --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/LeoYeAI/openclaw-master-skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/ragflow-runbook .agents/skills/ragflow-runbook && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "ragflow-runbook" agent skill from https://github.com/LeoYeAI/openclaw-master-skills/tree/main/skills/ragflow-runbook into .agents/skills/ragflow-runbook/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ragflow-runbook", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add LeoYeAI/openclaw-master-skills --skill ragflow-runbook -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install LeoYeAI/openclaw-master-skills ragflow-runbook --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/LeoYeAI/openclaw-master-skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/ragflow-runbook .cursor/skills/ragflow-runbook && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "ragflow-runbook" agent skill from https://github.com/LeoYeAI/openclaw-master-skills/tree/main/skills/ragflow-runbook into .cursor/skills/ragflow-runbook/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ragflow-runbook", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/LeoYeAI/openclaw-master-skills.git --path skills/ragflow-runbook--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add LeoYeAI/openclaw-master-skills --skill ragflow-runbook -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install LeoYeAI/openclaw-master-skills ragflow-runbook --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/LeoYeAI/openclaw-master-skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/ragflow-runbook .gemini/skills/ragflow-runbook && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "ragflow-runbook" agent skill from https://github.com/LeoYeAI/openclaw-master-skills/tree/main/skills/ragflow-runbook into .gemini/skills/ragflow-runbook/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ragflow-runbook", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install LeoYeAI/openclaw-master-skills ragflow-runbookInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add LeoYeAI/openclaw-master-skills --skill ragflow-runbook -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/LeoYeAI/openclaw-master-skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/ragflow-runbook .github/skills/ragflow-runbook && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "ragflow-runbook" agent skill from https://github.com/LeoYeAI/openclaw-master-skills/tree/main/skills/ragflow-runbook into .github/skills/ragflow-runbook/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ragflow-runbook", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add LeoYeAI/openclaw-master-skills --skill ragflow-runbook -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install LeoYeAI/openclaw-master-skills ragflow-runbook --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/LeoYeAI/openclaw-master-skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/ragflow-runbook .opencode/skills/ragflow-runbook && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "ragflow-runbook" agent skill from https://github.com/LeoYeAI/openclaw-master-skills/tree/main/skills/ragflow-runbook into .opencode/skills/ragflow-runbook/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ragflow-runbook", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
ragflow-runbookEnd-to-end runbook for deploying, operating, troubleshooting, and monitoring RAGFlow (runtime ops only).
Ragflow Runbook is an agent skill from LeoYeAI/openclaw-master-skills. End-to-end runbook for deploying, operating, troubleshooting, and monitoring RAGFlow (runtime ops only).
Its SKILL.md is about 5.3k tokens, which your agent loads only when the skill is triggered. The skill folder holds 14 other files, including scripts (for example `CHANGELOG.md`, `README.md` and `_meta.json`).
It sits in DevOps & Cloud, covering Runbooks and postmortems. It works with Linux and Docker. The repository describes itself as: 🧠 Curated collection of 1209+ best OpenClaw skills — weekly updated by MyClaw.ai. The licence is MIT.
12 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit e5199b5. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Ships 6 files in scripts/ (Python and Shell), which the agent can run.
Shell commands in SKILL.md call:
dockercurlgitFrom the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
github.comapple.comAlso links to:
ragflow.ioFrom URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
RAGFLOW_API_KEYELASTIC_PASSWORDMYSQL_PASSWORDMINIO_PASSWORDREDIS_PASSWORDFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Ragflow Runbook loads about 5.3k tokens when it runs. Until then it costs about 30 tokens; SKILL.md has 1,733 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check noted patterns worth knowing about, such as sudo or a known installer.
sudo sysctl -w vm.max_map_count=262144 || true# Default .env = elasticsearch + cputs/passwords/image versions: edit docker/.envsudo mkdir -p /opt && cd /optsudo chown -R "$USER" /optsudo sysctl -w vm.max_map_count=262144 || true- `.env` (default ports/passwords; change for production)Upstream `.env` defaults:compose up -d` will pick profiles from `.env`.sudo sysctl -w vm.max_map_count=262144 || trueAutomated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.
The full file from LeoYeAI/openclaw-master-skills at commit e5199b5, republished under its MIT licence (© LeoYeAI). 1,733 words, ~5,293 tokens.
.claude/skills/ragflow-runbook/SKILL.md (or your agent's skills folder). This skill also uses 12 other files; get the full folder from GitHub.A practical runbook for deploying, operating, troubleshooting, and calling RAGFlow (Retrieval-Augmented Generation).
Goal: any agent should be able to bring RAGFlow up, diagnose failures, and call the API safely even without knowing the deployment details up front.
Before running any commands, confirm the following (missing any of these often leads to wrong assumptions):
Windows / WSL2 / Linux / macOS (client only)docker-compose.yml)RAGFLOW_BASE_URL (e.g. http://localhost:9380 or an internal/Tailscale address)Security: never store or share API keys / DB passwords in plaintext (docs, repo, or chat).
Use environment variables so all agents can run the same commands:
RAGFLOW_BASE_URL: prefer an internal/Tailscale URL, e.g. http://100.x.y.z:9380RAGFLOW_API_KEY: Bearer token (created in the RAGFlow Web UI)Quick verification (separate liveness / readiness / auth; tolerate path differences across versions):
GET $RAGFLOW_BASE_URL/openapi.jsonGET $RAGFLOW_BASE_URL/api/v1/openapi.jsonGET $RAGFLOW_BASE_URL/v1/system/pingGET $RAGFLOW_BASE_URL/v1/system/statusGET $RAGFLOW_BASE_URL/v1/system/pingIf these do not match your deployment: treat the returned openapi.json as the source of truth.
This skill ships with its own ops helpers under scripts/:
scripts/ragflow_ping.py: liveness + readinessscripts/ragflow_smoke.py: auth + API smoke (system-level only)scripts/ragflow_status.py: compact status summaryscripts/ragflow_alert.py: send an ops alert via OpenClaw messagingThis skill is intentionally decoupled from any workspace-specific application content. It focuses only on RAGFlow runtime operations.
This section targets a brand-new machine. Goal: get to a working UI + API quickly: clone upstream docker bundle -> start -> create API key in UI -> validate via curl/scripts.
WSL2 (recommended: store files on a Windows drive like D:; run commands inside WSL2):
# WSL2
cd /mnt/d
git clone https://github.com/infiniflow/ragflow.git
cd ragflow/docker
# Common requirement for some document engine profiles
sudo sysctl -w vm.max_map_count=262144 || true
# Default .env = elasticsearch + cpu
# To change ports/passwords/image versions: edit docker/.env
docker compose up -d
docker compose psLinux:
# Linux
sudo mkdir -p /opt && cd /opt
sudo chown -R "$USER" /opt
git clone https://github.com/infiniflow/ragflow.git
cd ragflow/docker
sudo sysctl -w vm.max_map_count=262144 || true
docker compose up -d
docker compose psNext: open Web UI (default http://<host>:80), finish initialization, create an API key, then validate using ## 3 + ## 8.
To avoid missing files or mismatched versions, use git clone and run from the upstream docker/ directory:
git clone https://github.com/infiniflow/ragflow.git
cd ragflow/docker
# Optional: pin to a tag/commit for production
# git checkout <tag-or-commit>The upstream docker/ folder typically includes:
docker-compose.yml (often include: ./docker-compose-base.yml)docker-compose-base.yml (backend services: database + cache + object storage + document engine).env (default ports/passwords; change for production)service_conf.yaml.template (used to generate service_conf.yaml at container startup)entrypoint.sh (commonly started with flags like --enable-adminserver / --enable-mcpserver)nginx/ (for built-in Web UI / reverse proxy)README.md (docker-specific docs)Note: upstream explicitly warns that some compose variants (e.g. docker-compose-macos.yml) are not actively maintained. Do not use them unless you know why.
COMPOSE_PROFILES)Upstream .env defaults:
COMPOSE_PROFILES is derived from selected backend profiles (e.g. document engine + compute device)So you typically do not need to pass --profile manually. docker compose up -d will pick profiles from .env.
Before starting (Linux/WSL2, for some document engine profiles):
cat /proc/sys/vm/max_map_count || true
sudo sysctl -w vm.max_map_count=262144 || trueStart:
# In ragflow/docker
# Optional: explicit profiles if you do not want to rely on COMPOSE_PROFILES
# docker compose --profile elasticsearch --profile cpu up -d
docker compose up -d
docker compose psSwitch CPU/GPU (examples):
# Option 1: edit docker/.env
# DEVICE=gpu
# Option 2: override temporarily (do not modify files)
DEVICE=gpu docker compose up -dEnable embeddings service (TEI): upstream suggests adding a tei profile to COMPOSE_PROFILES:
# Example:
# COMPOSE_PROFILES=${COMPOSE_PROFILES},tei-cpu
# or:
# COMPOSE_PROFILES=${COMPOSE_PROFILES},tei-gpu
docker compose up -dValidation: wait for key services to be running/healthy in docker compose ps, then run liveness/readiness (## 3) and API prefix detection (## 8).
.env)In upstream docker/.env (main branch), exposed ports typically mean:
SVR_WEB_HTTP_PORT (default 80), SVR_WEB_HTTPS_PORT (default 443)SVR_HTTP_PORT (default 9380)ADMIN_SVR_HTTP_PORT (default 9381)SVR_MCP_PORT (default 9382)Shortest path to a usable setup:
http://<host>:${SVR_WEB_HTTP_PORT} (default http://<host>:80)RAGFLOW_BASE_URL=http://<host>:${SVR_HTTP_PORT} (default http://<host>:9380)RAGFLOW_API_KEY=ragflow-... (Bearer token; do not paste secrets into chat)Then validate with liveness/readiness in ## 3.
Production warning: upstream
.envexplicitly warns against using default passwords. At minimum changeELASTIC_PASSWORD,MYSQL_PASSWORD,MINIO_PASSWORD, andREDIS_PASSWORD.
docker compose ...)vm.max_map_count >= 262144 (required by some document engine profiles)Checks:
docker --version
docker compose version
# Linux/WSL2 only
cat /proc/sys/vm/max_map_countTemporary fix (Linux/WSL2):
sudo sysctl -w vm.max_map_count=262144Prereq: you are in the directory that contains docker-compose.yml.
docker compose up -d
docker compose psTail logs:
docker compose logs -f# Status
docker compose ps
# Start/stop
docker compose up -d
docker compose down
# Restart
docker compose restart
# Logs (all / last N lines / last 1h)
docker compose logs
docker compose logs --tail=200
docker compose logs --since=1h
# Resource usage
docker statsNote: service names differ across compose versions. If you see "no such service", run docker compose ps and use the actual service name.
Common causes: vm.max_map_count too small, low RAM, disk full.
# Linux/WSL2
cat /proc/sys/vm/max_map_count
sudo sysctl -w vm.max_map_count=262144
docker compose ps
docker compose logs --tail=200 <es-service>docker compose ps
docker compose logs --tail=200 <mysql-service>.env / compose and restart.RAGFlow often exposes:
Recommended convention:
RAGFLOW_BASE_URL points to the API root, e.g. http://localhost:9380Authorization: Bearer $RAGFLOW_API_KEYv1)Across versions/deployments, RAGFlow may have two API prefixes:
v1/... (often system/user/token)api/v1/... (often application endpoints)Use this template to auto-detect the prefix (prefer v1, fallback to api/v1).
# 0) Ensure you are hitting the API port/host (not the UI port)
# Any 200 is OK
curl -sS -o /dev/null -w "%{http_code}\n" "$RAGFLOW_BASE_URL/openapi.json"
curl -sS -o /dev/null -w "%{http_code}\n" "$RAGFLOW_BASE_URL/api/v1/openapi.json"
# 1) Auto-detect prefix (prefer v1)
RAGFLOW_API_PREFIX=""
if curl -sS -o /dev/null -w "%{http_code}" "$RAGFLOW_BASE_URL/v1/system/ping" | grep -q "200"; then
RAGFLOW_API_PREFIX="v1"
elif curl -sS -o /dev/null -w "%{http_code}" "$RAGFLOW_BASE_URL/api/v1/openapi.json" | grep -q "200"; then
RAGFLOW_API_PREFIX="api/v1"
else
echo "Cannot detect API prefix. Check base URL / reverse proxy / firewall."
exit 1
fi
echo "Detected prefix: $RAGFLOW_API_PREFIX"Ops-only examples (no application-level endpoints):
Example 1: system ping (no secrets in output)
curl -sS -o /dev/null -w "%{http_code}\n" "$RAGFLOW_BASE_URL/v1/system/ping"Example 2: system status (auth)
curl -sS -X GET "$RAGFLOW_BASE_URL/v1/system/status" \
-H "Authorization: Bearer $RAGFLOW_API_KEY" | headExample 3: fetch openapi schema (liveness)
curl -sS "$RAGFLOW_BASE_URL/openapi.json" | headNote: If your deployment uses different paths, openapi.json is the source of truth. Avoid calling application-level endpoints from ops runbooks.
openapi.json first to confirm real paths/fields/version differences.Bearer prefix.Principle: stop services first, then back up volumes, then back up compose configs.
Backup (example; volume names depend on your environment):
mkdir -p backup
docker run --rm \
-v <mysql_volume>:/source \
-v "$PWD/backup":/backup \
alpine tar czf /backup/mysql-data.tar.gz -C /source .Restore:
docker compose down
docker run --rm \
-v <mysql_volume>:/target \
-v "$PWD/backup":/backup \
alpine tar xzf /backup/mysql-data.tar.gz -C /target
docker compose up -dlatest in production; pin image versions.When a user says "RAGFlow is not working", use this order to reduce back-and-forth:
docker compose ps (which containers are unhealthy/exited)docker compose logs --tail=200 <unhealthy-service> (capture the first actionable errors)docker stats, disk, vm.max_map_count (Linux/WSL2)curl $RAGFLOW_BASE_URL/openapi.jsonragflow_ping.py or GET /v1/system/status (with Bearer)This section documents an end-to-end operations workflow for running RAGFlow with OpenClaw. It is intentionally decoupled from any application-layer usage and focuses only on RAGFlow runtime operations.
Included:
Excluded (by design):
On the machine running OpenClaw, set:
RAGFLOW_BASE_URL (prefer an internal/Tailscale address)RAGFLOW_API_KEY (Bearer token; never commit; do not paste into chat)Recommended ops endpoints:
GET $RAGFLOW_BASE_URL/openapi.jsonGET $RAGFLOW_BASE_URL/v1/system/statusIf paths differ in your deployment, use openapi.json as the source of truth.
This skill includes built-in helpers under scripts/.
They are designed to be:
Helpers:
scripts/ragflow_ping.pyscripts/ragflow_smoke.pyscripts/ragflow_status.py/v1/system/status and print a compact key summary.scripts/ragflow_alert.pyopenclaw message send CLI.(Prefer the skill-local scripts so the runbook works in any environment.)
scripts/ragflow_ping.py
RAGFLOW_BASE_URLRAGFLOW_API_KEY (if set, readiness check is performed)GET {base_url}/openapi.json (no auth)GET {base_url}/v1/system/status (Bearer auth)OK_LIVE (no api key set)OK_READY keys=...LIVENESS_FAIL ...READINESS_FAIL ...0 OK2 liveness failed3 readiness failedscripts/ragflow_smoke.py
RAGFLOW_BASE_URLRAGFLOW_API_KEYGET {base_url}/v1/system/status (auth)GET {base_url}/v1/system/ping (auth or no-auth depending on deployment)OK smokeFAIL system/status ...FAIL system/ping ...0 OK2 system/status failed3 system/ping failedscripts/ragflow_status.py
RAGFLOW_BASE_URLRAGFLOW_API_KEYGET {base_url}/v1/system/statusOK keys=key1,key2,... (compact, no secrets)0 OK2 HTTP failure3 invalid JSONscripts/ragflow_alert.py
--title (required), --details (optional)OPENCLAW_PRIMARY_CHAT_ID (default target)openclaw message send ....--details.Connectivity
RAGFLOW_BASE_URL over the network.Liveness
openapi.json responds with HTTP 200.Readiness
v1/system/status responds with HTTP 200 when authenticated.Smoke
scripts/ragflow_smoke.py (system endpoints only).Escalation artifacts
docker compose psdocker compose logs --tail=200 <ragflow-service>Goal: provide copy/paste recipes. An agent can create these tasks when needed.
Ping every 10 minutes and alert on failure:
*/10 * * * * RAGFLOW_BASE_URL="http://127.0.0.1:9380" RAGFLOW_API_KEY="${RAGFLOW_API_KEY}" /usr/bin/python3 /path/to/skills/ragflow-runbook/scripts/ragflow_ping.py || /usr/bin/python3 /path/to/skills/ragflow-runbook/scripts/ragflow_alert.py --title "ping failed" --details "ragflow_ping.py exit=$?"Smoke once per day at 06:05 and alert on failure:
5 6 * * * RAGFLOW_BASE_URL="http://127.0.0.1:9380" RAGFLOW_API_KEY="${RAGFLOW_API_KEY}" /usr/bin/python3 /path/to/skills/ragflow-runbook/scripts/ragflow_smoke.py || /usr/bin/python3 /path/to/skills/ragflow-runbook/scripts/ragflow_alert.py --title "smoke failed" --details "ragflow_smoke.py exit=$?"Notes:
/path/to/skills/... with the real absolute path.Create two plist files (one for ping, one for smoke) and load them with launchctl.
Ping (every 10 minutes):
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>ai.openclaw.ragflow.ping</string>
<key>ProgramArguments</key>
<array>
<string>/usr/bin/python3</string>
<string>/ABS/PATH/skills/ragflow-runbook/scripts/ragflow_ping.py</string>
</array>
<key>StartInterval</key>
<integer>600</integer>
<key>EnvironmentVariables</key>
<dict>
<key>RAGFLOW_BASE_URL</key>
<string>http://127.0.0.1:9380</string>
<key>RAGFLOW_API_KEY</key>
<string>${RAGFLOW_API_KEY}</string>
</dict>
<key>StandardOutPath</key>
<string>/tmp/ragflow-ping.out</string>
<key>StandardErrorPath</key>
<string>/tmp/ragflow-ping.err</string>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>Smoke (daily at 06:05):
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>ai.openclaw.ragflow.smoke</string>
<key>ProgramArguments</key>
<array>
<string>/usr/bin/python3</string>
<string>/ABS/PATH/skills/ragflow-runbook/scripts/ragflow_smoke.py</string>
</array>
<key>StartCalendarInterval</key>
<dict>
<key>Hour</key>
<integer>6</integer>
<key>Minute</key>
<integer>5</integer>
</dict>
<key>EnvironmentVariables</key>
<dict>
<key>RAGFLOW_BASE_URL</key>
<string>http://127.0.0.1:9380</string>
<key>RAGFLOW_API_KEY</key>
<string>${RAGFLOW_API_KEY}</string>
</dict>
<key>StandardOutPath</key>
<string>/tmp/ragflow-smoke.out</string>
<key>StandardErrorPath</key>
<string>/tmp/ragflow-smoke.err</string>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>Notes:
/ABS/PATH/... with the real absolute path.SVR_HTTP_PORT to the public internet.RAGFLOW_API_KEY in env/secret manager only.© LeoYeAI, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 12 other files (scripts) in skills/ragflow-runbook of LeoYeAI/openclaw-master-skills.
Open the folder on GitHubat commit e5199b5
Ragflow Runbook next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Ragflow Runbook this skillLeoYeAI/openclaw-master-skills | 2.2k | — | ~5.3k | Automated safety check: Notes | MIT | |
| Swig CI Reproswig/swig | 6.3k | — | ~1.2k | Automated safety check: Pass | Custom licence | |
| Youtubeeat-pray-ai/yutu | 699 | — | ~1.1k | Automated safety check: Pass | MIT | |
| .NET Crash Dump Collectiondotnet/skills | 5.6k | 2 repos | ~1.1k | Automated safety check: Pass | MIT | |
| Docker Jfr Benchmark Loopeclipse-rdf4j/rdf4j | 420 | — | ~945 | Automated safety check: Pass | BSD-3-Clause | |
| Minimegasandia-minimega/minimega | 160 | — | ~3.2k | Automated safety check: Pass | GPL-3.0-only |
swig/swig
Reproduce a GitHub Actions Linux CI failure locally when it does not happen on your machine: a podman/docker image that mirrors the ubuntu-22.04 runner by reusing the real Tools/CI-linux-.sh install…
eat-pray-ai/yutu
A skill your agent uses whenever the user mentions YouTube, video uploads, channel management, playlists, video SEO, or any YouTube Data API operation.
dotnet/skills
Configures automatic crash dumps or captures dumps from running processes for modern .NET apps on Linux, macOS and Windows, including Docker and Kubernetes.
eclipse-rdf4j/rdf4j
Run a repeatable RDF4J performance loop against one JMH benchmark in Docker with Linux Java 26 and JFR CPU-time profiling.
sandia-minimega/minimega
This skill should be used when the user asks how to configure, run, automate, integrate, or troubleshoot minimega (VMs, namespaces, VLANs, clusters, miniccc, miniweb, command socket or Python API…
oneclickvirt/oneclickvirt
OneClickVirt operations skill for managing containers, virtual machines, provider nodes, health checks, and metrics through MCP.
LeoYeAI/openclaw-master-skills
Manages pipelines on a DevOps quality and efficiency platform through its OpenAPI: list workspaces and templates, create, update, run and cancel pipelines, and read run records.
LeoYeAI/openclaw-master-skills
Patches OpenClaw's Feishu extension so an edited document triggers an isolated agent session that reads the doc and replies inline, turning it into a live chat space.
LeoYeAI/openclaw-master-skills
Multi-context memory management system for OpenClaw agents with group-isolated storage, global shared memory, workspace organization, and group-specific skills isolation.
LeoYeAI/openclaw-master-skills
Runs a brand's AI-search visibility work end to end: diagnosing how AI platforms represent it, repositioning it, producing AI-optimized content and monitoring ongoing mentions.
LeoYeAI/openclaw-master-skills
Installs and authenticates the gws CLI, then automates Gmail, Drive, Sheets, Calendar, Docs, Chat and Tasks with ready-made recipes, persona bundles and security audits.
LeoYeAI/openclaw-master-skills
Runs four advisor roles, a fitness coach, nutritionist, data analyst and TCM practitioner, to build a health profile and track workouts, diet and wellness over time.
Categories
End-to-end runbook for deploying, operating, troubleshooting, and monitoring RAGFlow (runtime ops only). Ragflow Runbook is an agent skill from LeoYeAI/openclaw-master-skills. End-to-end runbook for deploying, operating, troubleshooting, and monitoring RAGFlow (runtime ops only).
Ragflow Runbook fits situations like: tasks that involve Runbooks and postmortems.
Run `npx skills add LeoYeAI/openclaw-master-skills --skill ragflow-runbook -a claude-code`. Or copy the skill folder (skills/ragflow-runbook in LeoYeAI/openclaw-master-skills) into .claude/skills/ragflow-runbook in your project. Claude Code loads it when a task matches its description.
Run `npx skills add LeoYeAI/openclaw-master-skills --skill ragflow-runbook -a codex`. Or copy the skill folder (skills/ragflow-runbook in LeoYeAI/openclaw-master-skills) into .agents/skills/ragflow-runbook in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add LeoYeAI/openclaw-master-skills --skill ragflow-runbook -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/ragflow-runbook, .gemini/skills/ragflow-runbook, .github/skills/ragflow-runbook and .opencode/skills/ragflow-runbook in your project.
Going by SKILL.md and its folder, Ragflow Runbook needs Python and a shell for the scripts in its folder, the command-line tools its instructions call (docker, curl and git) and credentials named RAGFLOW_API_KEY, ELASTIC_PASSWORD, MYSQL_PASSWORD and MINIO_PASSWORD. Our summary lists: Python 3; A Bash shell; Docker; A credential in RAGFLOW_API_KEY.
SKILL.md names 3 domains. In commands or code: github.com and apple.com; the agent is likely to contact these when it follows the instructions. As links in the text: ragflow.io. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found notes only (runs commands with sudo; mentions a .env file), nothing it rates as a warning. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Ragflow Runbook is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 5.3k tokens (SKILL.md is roughly 21k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Ragflow Runbook: Swig CI Repro (swig/swig, 6.3k stars), Youtube (eat-pray-ai/yutu, 699 stars), .NET Crash Dump Collection (dotnet/skills, 5.6k stars) and Docker Jfr Benchmark Loop (eclipse-rdf4j/rdf4j, 420 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
LeoYeAI (a GitHub user) maintains it in LeoYeAI/openclaw-master-skills, which has 2,161 GitHub stars. The repository holds 1,235 skills in this directory. The repository was last updated on July 20, 2026.
Source: LeoYeAI/openclaw-master-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.