SuperAPI AI Directory

cheat-status

General & other

View repository

Updated 10-15 23:39

About this skill

/cheat-status — Status dashboard

Read the state file + scan the user's project → summarize current progress → output a "what to do today" checklist.

Overview

[用户:状态]
  ↓
[Phase 1: 读 .cheat-state.json + 扫文件系统]
  ↓
[Phase 2: 计算派生指标]
  ↓
[Phase 3: 检测建议触发器(升级 / bump / 清算)]
  ↓
[Phase 4: 输出看板]

Constants

  • SQLITE_UPGRADE_THRESHOLD = 30 — suggest upgrading to SQLite when calibration_samples reaches N
  • CLEANUP_LINE_THRESHOLD = 600 — suggest settling up when rubric_notes.md line count exceeds N
  • STALE_PREDICTION_DAYS = 30 — prompt cleanup when an in_progress prediction hasn't been published for over N days

Inputs

Source Purpose
.cheat-state.json Main state
predictions/*.md Calibration sample count / pending retros
candidates.md Candidate pool size
rubric_notes.md Line count / current version
.cheat-cache/usage.jsonl(if any) meta-logging data, used for "how many predictions since the last bump"

Workflow

Phase 1: Read state

state = read_json('.cheat-state.json')
if not state:
    return "你还没初始化。请先跑 /cheat-init。"

predictions = glob('predictions/*.md')
candidates_count = parse_candidates_md_entries()
rubric_lines = wc -l rubric_notes.md

Phase 2: Derive metrics

Metric Algorithm
Buffer count len(state.shoots)
Buffer color Derive by cadence-protocol.md :buffer_days = buffer_count × target_publish_cadence_days,<1 红 / 1-2 橙 / 3-5 绿 / >5 蓝. If target_publish_cadence_days=null → color disabled
Confidence level Derive by state-management.md confidence table : from calibration_samples integer derive emoji + label
Days from earliest shoot to today now - state.shoots[0].shot_at, used to warn "shot N days ago and still not published"
Calibration sample count Number of files in predictions containing a complete retro section (actual performance data non-empty)
Pending retros In state.pending_retros those that have passed RETRO_WINDOW_DAYS
Pool size Number of entries in candidates.md with tier!=skip
How many predictions since the last bump Number in predictions with published_at > state.last_bump_at
Same-direction deviation queue state.consecutive_directional_errors
in_progress staleness now - state.in_progress_session.started_at (if any)

Phase 3: Detect suggested triggers

Check item by item in priority order (high→low):

  1. Buffer color = 🔴 red → first line high-priority alert: "buffer is already 0/1 posts, the next publishing day may have a gap—today you must shoot ≥1. If you say 'recommend topics' I'll only recommend the top 1 safe pick (no experimental ones)"
  2. Buffer color = 🔵 blue → high-priority reminder: "buffer already has N posts backed up.Pause shooting, first publish the stock + retro. Say 'published ...' and I'll help you dequeue"
  3. Earliest item in state.shoots has shot_at > 14 days → "You have a video shot N days ago but not yet published—risk of losing topical timeliness, recommend publishing soon or scrapping the draft"
  4. in_progress stale (>= STALE_PREDICTION_DAYS) → high-priority reminder "clean up or publish"
  5. Pending retros ≥ 1 → high-priority "today you should do retros for X posts"
  6. pool_status=none + calibration_samples=0 + more than 24h since init → "🌱 It's been N days since you finished init but you still haven't filmed—is it because you don't have a topic? Run /cheat-seed to get 5 candidates + 5 drafts in 5 minutes" high priority
  7. Claude judges systematic bias signal(Not rigidly requiring ≥3 same-direction) → prompt "suggest running /cheat-bump"
    • Default reference: ≥3 consecutive same-direction deviations
    • But Claude can be earlier: 1 extreme deviation (≥10x) or 2 same-direction + strong counter-evidence in comments
    • Can also be later: 3 same-direction but each magnitude <25% (may just be noise)
    • When prompting, explicitly label: "this time is [default-aligned] / [judgment-driven]"
  8. calibration_samples crosses into a new confidence level(0→1, 2→3, 5→6, 10→11, 20→21) → prompt "🎉 confidence upgraded: <old level> → <new level>. Bucket center accuracy improved from ±X% to ±Y%".Notification only, no operation the user must confirm—all skills have already auto-adjusted based on calibration_samples
  9. calibration_samples crosses 5 → "Your rubric form can have its first formal bump. Review rubric_notes.md to see if the observation record section has a pattern supported by ≥3 samples → run /cheat-bump"
  10. calibration_samples crosses 10 → "You can run /cheat-bump --bucket-only --scheme percentile to switch bucket boundaries to percentile (always self-consistent)"
  11. calibration_samples crosses SQLITE_UPGRADE_THRESHOLD and data_layer=markdown → "suggest running tools/md-to-sqlite.py" (planned — batch 3, not yet available)
  12. rubric_notes.md line count > CLEANUP_LINE_THRESHOLD → "suggest clearing the observation section (manually or triggered by the next bump)"
  13. calibration_samples ≥ 5 + pool_status=none → "you can start building a topic pool"
  14. calibration_samples ≥ 15 + pool_status=none → "strongly suggest building a pool: /cheat-trends or manually create candidates.md"
  15. state.hooks_installed=false → "your immutability is a gentlemen's agreement; suggest running /cheat-init to install the hook"
  16. state.last_bump_self_audited=true → "the last bump was self-review. Suggest configuring mcp__llm-chat__chat so the next bump goes through external review"
  17. state.rubric_form_mismatch=true → "your content_form is not opinion-video, so the built-in opinion rubric was used. The first few predictions will be less accurate; at the next bump, suggest adjusting weights yourself to fit your form"
  18. state.benchmark_status=pending → "🎯 At init you promised to find benchmark accounts later but haven't yet. Run /cheat-learn-from to import ≥3 benchmark videos, and the tool will have an anchor"
  19. state.benchmark_status=imported + Claude judges that the user's data signal has surpassed the benchmark → "📊 Your real data has become the primary signal, and the benchmark's influence is fading"
  • Default reference:calibration_samples ≥ 10
  • But Claude can be earlier: N=5 but the user's (score, actual result) pairs include ≥3 that are inconsistent with the benchmark pattern—meaning your account has already moved beyond the benchmark's path
  • Can also be later: N=15 but the user's samples are all very similar, without enough diversity → the benchmark still has signal value
  • The prompt isa notification, not a gate—benchmark.md is always kept as a sanity check, and cheat-seed can still read it

Phase 4: Output dashboard

🎛️ cheat-on-content 状态(更新于 2026-05-04 15:00)

内容形态:opinion-video / 时长 3-5min / cadence: 隔日更
当前 rubric:v2 (上次 bump: 2026-04-22)
校准样本:18 篇
Confidence: 🟢 较高 (中枢 ±15%,rubric 形态稳定)
Baseline: 4.2w 中位数

📦 Buffer:3 篇(🟢 绿色)
   按你的 cadence (隔日更)= 6 天 buffer,节奏稳定

📊 进度条
  [█████████████░░░░░] 18 / 30 → SQLite 升级建议门槛
  [██████████░░░░░░░░] 18 / 10 → percentile 桶可用(已超过门槛)

🎬 待办(按紧急度)
  🚨 复盘 1 篇(已过 T+3d)
     - predictions/2026-05-01_db063817_你已不在关系里.md(T+3d 到了)
  ⚠️  同向偏差 3 次(high, high, high)→ 建议 /cheat-bump
  💤 in-progress prediction 已陈旧 35 天
     - predictions/2026-04-01_xxx.md → 是已发了忘登记?还是弃稿?

🔥 候选池
  - candidates.md: 27 条(tier1: 12, tier2: 9, tier3: 6)
  - 距上次抓热点: 4 天 — 可以再跑 /cheat-trends

📈 健康度
  - rubric_notes.md: 412 行(健康,<600 警戒线)
  - hooks_installed: ✅
  - external audit configured: ❌ → 建议配 mcp__llm-chat__chat

下一步建议(按推荐优先级):
1. /cheat-retro predictions/2026-05-01_db063817_你已不在关系里.md  ← 最紧急
2. /cheat-bump  ← 同向偏差 3 次的处理
3. 处理陈旧 in-progress(手动或回 "清理 in-progress")

完整的命令清单见主 SKILL.md。

Output style:Direct, specific, clickable. Each suggestion includes the exact command—the user should be able to copy-paste and run it directly.

Key Rules

  1. No side effects. Read many, write zero. Any state modification is the job of other skills
  2. Do not pretend data is available. Missing state file field → explicitly mark "unknown", do not guess
  3. Suggestions carry priority. 10 suggestions displayed at once will numb the user—sort by urgency
  4. Each suggestion includes a command. Cannot just say "it should be bumped"—must give the /cheat-bump --propose "..." precise entry point

Refusals

  • "By the way, help me run retro automatically" → refuse. status is read-only, retro is another action (avoid doing two things in one operation)
  • "I don't want to see the rubric_notes line count, it's too trivial" → the output still includes it but collapses it to the bottom "health" section—the presence of status information makes it visible to the user before problems occur

Integration

  • Upstream: all other skills update .cheat-state.json when they complete; status is the visualization of these updates
  • Downstream: each suggestion routes to a specific sub-skill
  • meta-logging hook (if enabled) → writes usage.jsonl, status uses it to calculate "how many times since last X"