Diagnoses and sets up Claude personal AI operating system. Setup scans CLAUDE.md, SOUL.md, profiles, MCPs, plugins, memory, Ollama; review/status for check-ins.
npx claudepluginhub bayramannakov/ai-personal-os-skills --plugin linkedin-research-postThis skill is limited to using the following tools:
Diagnose, build, and grow your personal AI operating system.
Audits Claude Code project configuration for drift and collaboration issues across six layers (CLAUDE.md, rules, skills, hooks, subagents, verifiers), tiered by project complexity.
Knowledge base on Claude Code formats, patterns, and configurations for commands, agents, skills, hooks, memory, plugins, settings. Use for creating, improving, auditing components.
Audits Claude Code configurations for best practices in skills, instructions, MCP servers, hooks, plugins, security, over-engineering, and context efficiency via file scans and focused checks. Invoke with /claudit [focus-area].
Share bugs, ideas, or general feedback.
Diagnose, build, and grow your personal AI operating system.
Your AI is your Chief of Staff. This skill is the performance review.
Check what the user typed:
/cos-review setup → run Setup Mode/cos-review status → run Status Mode/cos-review (no arguments) → run Review ModeRun this the first time, or when rebuilding the system from scratch. It scans everything, analyzes usage, and guides the user through fixing their biggest gaps.
Scan automatically — don't ask, CHECK. Report what exists and what's missing.
Important: Use Read, Glob, and Grep tools (cross-platform) instead of shell commands like find or grep. Only fall back to Bash when no dedicated tool works. Detect the OS first (uname on Mac/Linux, or check for Windows paths) and adapt commands accordingly.
L1: Knows You
~/.claude/CLAUDE.md — exists? word count?SOUL.md:
~/.claude/SOUL.md first (the standard global location)**/SOUL.md in home (max depth 5, exclude node_modules/.git/Library)~/.claude/: report "SOUL.md exists at [path] but is not globally accessible. Recommend: copy to ~/.claude/SOUL.md"~/.claude/CLAUDE.md references SOUL.md — if not, flag: "SOUL.md won't be auto-loaded unless CLAUDE.md references it"user-profile.md — same 4-step approach as SOUL.md**/CLAUDE.md from home (max depth 4, exclude node_modules/.git)~/.claude/projects/*/memory/*.md and count entriesL2: Has Sources
~/.claude/.mcp.json — read and parse the mcpServers key (standalone MCP servers)~/.claude/settings.json — read and parse the enabledPlugins object (key:boolean dict, e.g., "gmail@claude-plugins-official": true).mcp.json files — Glob for them in the current projectgmail_get_profile or gmail_list_labelslist_chats (limit 1)duckduckgo_search with "test"ollama list (works on Mac, Windows, Linux). If command not found, mark as not installed.
brew install ollama then ollama launch claude --model kimi-k2.5:cloud for cost savings, or local model for full privacycurl -s http://localhost:5600/api/0/info 2>/dev/null via Bash. If responds, it's running. If not, check if aw-qt or aw-server process exists. If installed but not running, note it. If not installed, suggest as optional: "ActivityWatch tracks your screen time and focus patterns — your /morning can use it to report deep work hours and app usage. Install from https://activitywatch.net"
~/.claude/skills/activitywatch*/SKILL.mdL3: Has Procedures
~/.claude/skills/*/SKILL.md — count and list names~/GH/*/morning*, ~/scripts/morning*L4: Takes Initiative
~/Library/LaunchAgents/ for plist files matching morning/autopilot/claude/daily/briefingschtasks /query /fo LIST 2>NUL and search for morning/claude/daily/briefing entriescrontab -l 2>/dev/null and search for morning/claude/daily entries~/.claude/settings.json, check if env.CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS equals "1" (it's stored in the env dict, NOT as a shell variable)~/.claude/settings.json, check if hooks key has any entries (not just exists — check it's non-empty)
.sh file, verify it's there)"SessionStart": [{"matcher": "", "hooks": [{"type": "command", "command": "cat ~/morning-briefings/$(date +%Y-%m-%d).md 2>/dev/null || echo 'No briefing today'", "timeout": 10}]}]
"PreCompact": [{"matcher": "", "hooks": [{"type": "command", "command": "your-transcript-backup-script.sh", "async": true, "timeout": 10}]}]
~/.claude/hooks/session-start.sh) instead of inline commands/heartbeat skill: Glob ~/.claude/skills/heartbeat/SKILL.md~/heartbeat.log for recent entries (if file exists, when was it last updated?)telegram@claude-plugins-official in enabledPlugins)/plugin install telegram@claude-plugins-official, then claude --channels) or Claude Desktop Dispatch as optionsL5: Delivers Results
~/morning-briefings/ — the recommended path from the course~/reports/daily/ — common alternative.md files with "morning" or "briefing" in the nameRead the user's past Claude Code context to understand ACTUAL usage patterns.
~/.claude/projects/ — list subdirectories (these are project contexts)~/.claude/settings.json for recently used configurationPresent findings:
USAGE PATTERNS (from your recent sessions):
- You use [skill X] frequently — strongest habit
- You use [MCP Y] in [N] different projects — active source
- You manually [task Z] multiple times — SKILL CANDIDATE
- [MCP A] is installed but never appears in sessions — installed ≠ used
- You haven't used [skill B] recently — dormant
Combine scan + conversation analysis into a visual report:
YOUR CHIEF OF STAFF — CURRENT STATE
Score: X/25 — [RANK]
L1: KNOWS YOU ████░ 4/5
L2: HAS SOURCES ███░░ 3/5
L3: HAS PROCEDURES ██░░░ 2/5
L4: TAKES INITIATIVE ░░░░░ 0/5
L5: DELIVERS RESULTS ░░░░░ 0/5
INSTALLED BUT UNUSED: [from conversation analysis]
MANUAL REPETITIONS: [potential skill candidates]
STRONGEST HABIT: [most-used skill/pattern]
Read references/diagnostic-questions.md for the full 25-question scoring criteria.
Based on weakest layer, suggest a prioritized list. Fix BOTTOM-UP (L1 before L4).
For each priority:
references/setup-guides/Read references/layer-actions.md for specific actions per layer gap.
If /morning is missing (one of the top priorities — it flips 3-5 questions across L3, L4, and L5), offer to build it through an interview:
"Your biggest gap is /morning. Want me to help you build it? I'll interview you."
If yes, ask these questions ONE AT A TIME, waiting for each answer:
After all answers, build the SKILL.md at ~/.claude/skills/morning/SKILL.md.
Use SOUL.md for voice if it exists. Save output to ~/morning-briefings/YYYY-MM-DD.md.
Include a Learner role or step that reads yesterday's briefing and feeds patterns forward.
Then test: run /morning and verify it produces output. Debug if needed.
If the user has /morning working but no periodic awareness between sessions, offer to build a heartbeat:
"Your /morning runs at 7 AM. But between then and your next session, your CoS is dormant. Want me to build a /heartbeat that checks for changes every few hours and only pings you when something needs attention?"
If yes, ask these questions ONE AT A TIME:
After answers, build two things:
1. The /heartbeat skill at ~/.claude/skills/heartbeat/SKILL.md:
Steps:
1. SCAN — Check each data source (email count + urgent senders, calendar next 2h, task deadlines)
2. TRIAGE — For each item: urgent (notify now), routine (auto-resolve if allowed), ignorable (skip)
3. ACT — Auto-resolve safe items if user opted in (acknowledge, file, update task list)
4. NOTIFY — If anything needs human attention → send Telegram message with ONE sentence per item
5. LOG — Append timestamp + summary to ~/heartbeat.log
6. SILENT — If nothing changed: log "HEARTBEAT_OK", send no notification
2. The scheduled trigger:
~/Library/LaunchAgents/com.user.heartbeat.plist that runs claude --print "Run /heartbeat" at the chosen intervalsschtasks /create /tn "Heartbeat" /tr "claude --print \"Run /heartbeat\"" /sc daily /st 10:00 (repeat for each time slot)Test: run /heartbeat manually first. Verify it stays silent when nothing is urgent. Then enable the schedule.
Growth path to explain to the user:
Level 1: SessionStart hook — CoS loads context when YOU start talking (you have this)
Level 2: /morning at 7 AM — CoS prepares your day once (you have this)
Level 3: /heartbeat every 2-4h — CoS checks for changes, pings you only when needed (building now)
Level 4: Always-on Telegram — CoS listens 24/7, you can ask anytime from your phone
Only do 2-3 priorities per session. "Good enough for today. Do the rest this week."
After setup is complete:
~/cos-reviews/[DATE]-baseline.md using the YAML format below/cos-review then."The regular performance review. Run every 2 weeks.
Read the most recent file from ~/cos-reviews/. If none exists, say: "No previous review found. Run /cos-review setup first, or I'll do a fresh assessment now."
Read references/diagnostic-questions.md for the 25 questions.
Don't re-ask everything. Be smart:
Calculate new score + rank. Compare to previous.
Actually TEST the system — don't ask, VERIFY:
.mcp.json, enabledPlugins, project .mcp.json) — try a lightweight test call for each~/.claude/skills/morning/SKILL.md) and when it last produced output (check ~/morning-briefings/ and ~/reports/daily/)~/.claude/projects/*/memory/*.md) — growing or stagnant?ollama list~/.claude/settings.json: which event types are configured? If hook commands reference script files, verify they exist./heartbeat skill exist? Is it scheduled? Check ~/heartbeat.log for recent entries.Report with status icons:
SYSTEM HEALTH
✅ Gmail MCP responding
⚠️ Calendar MCP token expired
✅ /morning last run: today 07:00
✅ Memory 24 entries (↑3 since last review)
⚠️ Vault last /atomize: 8 days ago
✅ Hooks SessionStart + PreCompact configured
✅ Heartbeat last sweep: 2h ago, HEARTBEAT_OK
Scan MEMORY.md entries created since last review date (Glob ~/.claude/projects/*/memory/*.md, check file modification dates). Do NOT try to read conversation transcripts (.jsonl) — they are not accessible.
Look for patterns in memory entries:
"Since your last review, your memory mentions [task] multiple times. That's a skill candidate."
Ask ONE question:
"What task did you do manually 3+ times in the past 2 weeks?"
Based on weakest layer, suggest ONE specific action. Read references/layer-actions.md.
Not a list. ONE thing. The highest-leverage investment.
"Your ONE investment: [specific action]. That alone flips [N] of your Layer [X] gaps."
Offer to BUILD it: "Want me to do this now? (y/n)"
Save review to ~/cos-reviews/YYYY-MM-DD.md:
---
date: YYYY-MM-DD
score: X
rank: [Intern|Junior Assistant|Trained CoS|Senior CoS|Pravaya Ruka]
previous_score: X
delta: +/-X
layers:
L1: X
L2: X
L3: X
L4: X
L5: X
weakest: LX
health:
gmail: ok|expired|not_configured
calendar: ok|expired|not_configured
telegram: ok|not_configured
anysite: ok|not_configured
ollama: ok|not_installed
morning_skill: exists|missing
morning_last_run: YYYY-MM-DD|never
memory_entries: X
vault_last_atomize: YYYY-MM-DD|never
growth_candidate: "description of repeated task"
action: "the ONE action suggested"
---
## Review Notes
[Summary of the review conversation]
## Progress
[Score trend if 3+ reviews exist]
Show the trend:
Apr 5: 14/25 JUNIOR ████████░░░░░
Apr 19: 17/25 TRAINED ██████████░░░
May 3: 19/25 TRAINED ███████████░░
No questions. No diagnostic. Just test everything and report. Takes 30 seconds.
Run all health checks from Step 3 of Review mode. Discover MCPs/plugins from all 3 config sources (.mcp.json, enabledPlugins, project .mcp.json). Test each. Report status + issues + fix commands.
Detect platform for scheduled task checks (Mac: LaunchAgents, Windows: schtasks, Linux: crontab).
YOUR CoS HEALTH — [DATE]
━━━━━━━━━━━━━━━━━━━━━━━━
✅ Gmail plugin responding
⚠️ Calendar plugin token expired 2d ago
✅ AnySite MCP responding
✅ Telegram MCP responding
✅ Ollama installed (qwen3.5 local + kimi-k2.5:cloud)
✅ /morning last run: today 07:00
✅ Memory 24 entries
⚠️ Vault last /atomize: 8 days ago
✅ Hooks SessionStart configured
✅ Heartbeat last sweep: 2h ago (HEARTBEAT_OK)
✅ Scheduled task LaunchAgent active (Mac)
ISSUES: 1 critical, 1 warning
FIX: Refresh Calendar token — run: /plugin install google-calendar@claude-plugins-official
These principles guide the review. Read references/7-laws.md for full context.