系统性能诊断。当用户说电脑卡、系统慢、查看进程、CPU占用高、内存不够等性能问题时使用
npx skills add https://github.com/majiayu000/spellbook --skill system-doctor
你是一个系统性能诊断专家,帮助用户快速定位电脑卡顿的原因,给出可操作的建议。
严格按以下步骤执行,最大化并行采集,最后生成结构化报告。
并行执行以下所有命令:
uptime
memory_pressure 2>/dev/null || vm_stat
sysctl -n hw.memsize | awk '{printf "物理内存: %.0f GB\n", $1/1024/1024/1024}'
echo "进程总数: $(ps aux | wc -l | tr -d ' ')"
echo "Zombie 进程: $(ps aux | awk '$8 ~ /Z/ {count++} END {print count+0}')"
sysctl -n hw.ncpu
sysctl vm.swapusage 2>/dev/null || echo "无 swap 信息"
ps aux --sort=-%cpu | head -21
ps aux --sort=-%mem | head -21
将同一应用的多个子进程合并统计(Chrome Renderer x N、Claude Helper x N 等)。
ps aux | awk 'NR>1 {
cmd = $11
# 提取应用名:去掉路径,取 basename
n = split(cmd, parts, "/")
name = parts[n]
# 对 .app 内的进程,提取 .app 名称
if (cmd ~ /\.app\//) {
match(cmd, /([^\/]+)\.app/, arr)
if (arr[1] != "") name = arr[1]
}
# 跳过内核进程
if (name == "" || name == "-") next
cpu[name] += $3
mem[name] += $4
rss[name] += $6
count[name]++
}
END {
printf "%-35s %8s %8s %10s %6s\n", "应用", "CPU%", "MEM%", "RSS(MB)", "进程数"
printf "%-35s %8s %8s %10s %6s\n", "---", "---", "---", "---", "---"
for (name in cpu) {
printf "%-35s %8.1f %8.1f %10.0f %6d\n", name, cpu[name], mem[name], rss[name]/1024, count[name]
}
}' | sort -t' ' -k2 -rn | head -30
并行执行以下检测:
echo "=== CPU > 50% 的进程 ==="
ps aux | awk 'NR>1 && $3 > 50 {printf "PID=%-8s CPU=%-6s MEM=%-6s CMD=%s\n", $2, $3, $4, $11}'
echo "=== RSS > 1GB 的进程 ==="
ps aux | awk 'NR>1 && $6 > 1048576 {printf "PID=%-8s RSS=%.1fGB CMD=%s\n", $2, $6/1048576, $11}'
echo "=== Zombie 进程 ==="
ps aux | awk '$8 ~ /Z/ {print}' || echo "无 zombie 进程"
cores=$(sysctl -n hw.ncpu)
load=$(sysctl -n vm.loadavg | awk '{print $2}')
echo "CPU 核心数: $cores, 1分钟负载: $load"
echo "$load $cores" | awk '{if ($1 > $2) print "!! 负载过高: "$1" > "$2" 核"; else print "负载正常: "$1" <= "$2" 核"}'
综合以上所有信息,按以下格式输出报告:
## 系统概况
| 指标 | 值 |
|------|------|
| 运行时间 | X天X小时 |
| CPU 核心 | X 核 |
| 物理内存 | X GB |
| 内存压力 | 正常/警告/严重 |
| Swap 使用 | X MB |
| 系统负载 | X / X / X |
| 进程总数 | X |
| Zombie 数 | X |
## CPU 大户(按应用分组)
| 应用 | CPU% | 进程数 | 说明 |
|------|------|--------|------|
| Chrome | XX% | 28 | 浏览器 Tab 过多 |
| ... | ... | ... | ... |
## 内存大户(按应用分组)
| 应用 | RSS | 进程数 | 说明 |
|------|-----|--------|------|
| Chrome | X.X GB | 28 | 浏览器 Tab 过多 |
| ... | ... | ... | ... |
## 问题清单
- 🔴 [严重] ...
- 🟡 [警告] ...
- 🟢 [正常] 系统运行良好
## 建议
1. ...
2. ...
根据检测到的问题给出对应建议:
| 问题 | 建议 |
|------|------|
| 负载 > 核心数 | 关闭不必要的应用,或升级硬件 |
| 内存压力为 warn/critical | 关闭内存大户,减少浏览器 Tab |
| Chrome/浏览器内存 > 2GB | 关闭不用的 Tab,使用 Tab 管理扩展 |
| Swap 使用 > 1GB | 内存不足,考虑增加物理内存或关闭应用 |
| CPU 单进程 > 80% | 检查是否卡死,考虑 kill |
| Zombie 进程 > 0 | 尝试 kill 父进程回收 zombie |
| Electron 应用过多 | 每个 Electron 应用占用大量内存,建议关闭不用的 |
报告输出后,询问用户是否需要:
kill PID)killall 应用名)ps -p PID -o pid,ppid,%cpu,%mem,rss,etime,command)安全规则:
kill PID(SIGTERM),不要用 kill -9 除非用户明确要求Integration with protocols.io API for managing scientific protocols. This skill should be used when working with protocols.io to search, create, update, or publish protocols; manage protocol steps and materials; handle discussions and comments; organize workspaces; upload and manage files; or integrate protocols.io functionality into workflows. Applicable for protocol discovery, collaborative protocol development, experiment tracking, lab protocol management, and scientific documentation.
Analyzes job descriptions and generates tailored resumes that highlight relevant experience, skills, and achievements to maximize interview chances
Generate Excalidraw diagrams from natural language descriptions. Use when asked to "create a diagram", "make a flowchart", "visualize a process", "draw a system architecture", "create a mind map", or "generate an Excalidraw file". Supports flowcharts, relationship diagrams, mind maps, and system architecture diagrams. Outputs .excalidraw JSON files that can be opened directly in Excalidraw.
Build and distribute Expo development clients locally or via TestFlight
Use when you have a written implementation plan to execute in a separate session with review checkpoints
Data structure for annotated matrices in single-cell analysis. Use when working with .h5ad files or integrating with the scverse ecosystem. This is the data format skill—for analysis workflows use scanpy; for probabilistic models use scvi-tools; for population-scale queries use cellxgene-census.
Benchling R&D platform integration. Access registry (DNA, proteins), inventory, ELN entries, workflows via API, build Benchling Apps, query Data Warehouse, for lab data management automation.
Comprehensive molecular biology toolkit. Use for sequence manipulation, file parsing (FASTA/GenBank/PDB), phylogenetics, and programmatic NCBI/PubMed access (Bio.Entrez). Best for batch processing, custom bioinformatics pipelines, BLAST automation. For quick lookups use gget; for multi-service integration use bioservices.
Take majiayu000/system-doctor from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.