Flywheel Skill Monitor the knowledge flywheel health. The Flywheel Model Velocity = rate of knowledge flowing through. Friction = bottlenecks slowing the flywheel. Execution Steps Given : Step 1: Measure Knowledge Pools Step 2: Check Recent Activity Step 3: Detect Staleness Step 3.5: Check Cache Health Step 4: Check ao CLI Status Step 4.5: Process Metrics (from skill telemetry) If exists, use to extract: invocations by skill, average cycle time per skill, gate failure rates. Include in health report (Step 6) under . Step 5: Validate Artifact Consistency Cross-reference validation: scan knowle…

\"\ncheck \"name is flywheel\" \"grep -q '^name: flywheel' '$SKILL_DIR/SKILL.md'\"\ncheck \"mentions health or velocity\" \"grep -qiE 'health|velocity' '$SKILL_DIR/SKILL.md'\"\ncheck \"mentions pool\" \"grep -qi 'pool' '$SKILL_DIR/SKILL.md'\"\ncheck \"artifact-consistency script exists\" \"[ -x '$SKILL_DIR/scripts/artifact-consistency.sh' ]\"\ncheck \"artifact-consistency allowlist exists\" \"[ -f '$SKILL_DIR/references/artifact-consistency-allowlist.txt' ]\"\n\necho \"\"; echo \"Results: $PASS passed, $FAIL failed\"\n[ $FAIL -eq 0 ] && exit 0 || exit 1\n","content_type":"application/x-sh; charset=utf-8","language":"bash","size":885,"content_sha256":"14277687dc843617c5f606cac85a1c190b98424395dfe838e303b4b5b22689ac"}],"content_json":{"type":"doc","content":[{"type":"heading","attrs":{"level":1},"content":[{"text":"Flywheel Skill","type":"text"}]},{"type":"paragraph","content":[{"text":"Monitor the knowledge flywheel health.","type":"text"}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"The Flywheel Model","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":""},"content":[{"text":"Sessions → Transcripts → Forge → Pool → Promote → Knowledge\n ↑ │\n └───────────────────────────────────────────────┘\n Future sessions find it","type":"text"}]},{"type":"paragraph","content":[{"text":"Velocity","type":"text","marks":[{"type":"strong"}]},{"text":" = rate of knowledge flowing through. ","type":"text"},{"text":"Friction","type":"text","marks":[{"type":"strong"}]},{"text":" = bottlenecks slowing the flywheel.","type":"text"}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"Execution Steps","type":"text"}]},{"type":"paragraph","content":[{"text":"Given ","type":"text"},{"text":"/flywheel","type":"text","marks":[{"type":"code_inline"}]},{"text":":","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"Step 1: Measure Knowledge Pools","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"# Count top-level artifact files (avoid counting directories)\nLEARNINGS=$(find .agents/learnings -maxdepth 1 -type f 2>/dev/null | wc -l)\nPATTERNS=$(find .agents/patterns -maxdepth 1 -type f 2>/dev/null | wc -l)\nRESEARCH=$(find .agents/research -maxdepth 1 -type f 2>/dev/null | wc -l)\nRETROS=$(find .agents/retros -maxdepth 1 -type f 2>/dev/null | wc -l)\necho \"Learnings: $LEARNINGS\"\necho \"Patterns: $PATTERNS\"\necho \"Research: $RESEARCH\"\necho \"Retros: $RETROS\"","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"Step 2: Check Recent Activity","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"# Recent learnings (last 7 days)\nfind .agents/learnings -maxdepth 1 -type f -mtime -7 2>/dev/null | wc -l\n# Recent research\nfind .agents/research -maxdepth 1 -type f -mtime -7 2>/dev/null | wc -l","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"Step 3: Detect Staleness","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"# Old artifacts (> 30 days without modification)\nfind .agents/ -name \"*.md\" -mtime +30 2>/dev/null | wc -l","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"Step 3.5: Check Cache Health","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"if command -v ao &>/dev/null; then\n # Get citation report (cache metrics)\n CITE_REPORT=$(ao metrics cite-report --json --days 30 2>/dev/null)\n if [ -n \"$CITE_REPORT\" ]; then\n HIT_RATE=$(echo \"$CITE_REPORT\" | jq -r '.hit_rate // \"unknown\"')\n UNCITED=$(echo \"$CITE_REPORT\" | jq -r '(.uncited_learnings // []) | length')\n STALE_90D=$(echo \"$CITE_REPORT\" | jq -r '.staleness[\"90d\"] // 0')\n echo \"Cache hit rate: $HIT_RATE\"\n echo \"Uncited learnings: $UNCITED\"\n echo \"Stale (90d uncited): $STALE_90D\"\n fi\nelse\n # ao-free fallback: compute approximate metrics from files\n echo \"Cache health (ao-free fallback):\"\n echo \"Active learnings (30d): $(find .agents/learnings/ -name '*.md' -mtime -30 2>/dev/null | wc -l | tr -d ' ')\"\n echo \"Forge candidates pending: $(ls .agents/forge/*.md 2>/dev/null | wc -l | tr -d ' ')\"\n if [ -f .agents/ao/citations.jsonl ]; then\n echo \"Total citations: $(wc -l \u003c .agents/ao/citations.jsonl | tr -d ' ')\"\n echo \"Unique learnings cited: $(grep -o '\"artifact_path\":\"[^\"]*\"' .agents/ao/citations.jsonl 2>/dev/null | sort -u | wc -l | tr -d ' ')\"\n else\n echo \"No citation data (citations.jsonl not found)\"\n fi\n [ -f .agents/ao/outcomes.jsonl ] && echo \"Session outcomes recorded: $(wc -l \u003c .agents/ao/outcomes.jsonl | tr -d ' ')\"\nfi","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"Step 4: Check ao CLI Status","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"if command -v ao &>/dev/null; then\n ao metrics flywheel status 2>/dev/null || echo \"ao metrics flywheel status unavailable\"\n ao status 2>/dev/null || echo \"ao status unavailable\"\n ao maturity --scan 2>/dev/null || echo \"ao maturity unavailable\"\n ao anti-patterns 2>/dev/null || echo \"ao anti-patterns unavailable\"\n ao badge 2>/dev/null || echo \"ao badge unavailable\"\n\n # Knowledge maintenance\n ao dedup --merge 2>/dev/null || true\n ao contradict 2>/dev/null || true\n ao constraint review 2>/dev/null || true\n ao curate status 2>/dev/null || true\n ao metrics health 2>/dev/null || true\n ao metrics cite-report --days 30 2>/dev/null || true\n\n # Active pruning: archive stale, evict low-utility, and curate noisy uncited learnings\n ao maturity --expire --archive 2>/dev/null || true\n ao maturity --evict --archive 2>/dev/null || true\n ao maturity --curate --archive 2>/dev/null || true\n\n # Retrieval quality: use the representative live corpus when it exists\n if [ -d cli/cmd/ao/testdata/retrieval-bench-live ]; then\n ao retrieval-bench --live --corpus cli/cmd/ao/testdata/retrieval-bench-live --json 2>/dev/null || true\n fi\nelse\n echo \"ao CLI not available — using file-based metrics\"\n echo \"Pool depths:\"\n for pool in learnings patterns forge knowledge research retros; do\n echo \" $pool: $(ls .agents/${pool}/*.md 2>/dev/null | wc -l | tr -d ' ')\"\n done\n echo \" global patterns: $(ls ~/.claude/patterns/*.md 2>/dev/null | wc -l | tr -d ' ')\"\n echo \"See references/promotion-tiers.md for tier definitions\"\nfi","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"Step 4.5: Process Metrics (from skill telemetry)","type":"text"}]},{"type":"paragraph","content":[{"text":"If ","type":"text"},{"text":".agents/ao/skill-telemetry.jsonl","type":"text","marks":[{"type":"code_inline"}]},{"text":" exists, use ","type":"text"},{"text":"jq","type":"text","marks":[{"type":"code_inline"}]},{"text":" to extract: invocations by skill, average cycle time per skill, gate failure rates. Include in health report (Step 6) under ","type":"text"},{"text":"## Process Metrics","type":"text","marks":[{"type":"code_inline"}]},{"text":".","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"Step 5: Validate Artifact Consistency","type":"text"}]},{"type":"paragraph","content":[{"text":"Cross-reference validation: scan knowledge artifacts for broken internal references. Use ","type":"text"},{"text":"scripts/artifact-consistency.sh","type":"text","marks":[{"type":"code_inline"}]},{"text":" (method documented in ","type":"text"},{"text":"references/artifact-consistency.md","type":"text","marks":[{"type":"code_inline"}]},{"text":"). Default allowlist lives at ","type":"text"},{"text":"references/artifact-consistency-allowlist.txt","type":"text","marks":[{"type":"code_inline"}]},{"text":"; use ","type":"text"},{"text":"--no-allowlist","type":"text","marks":[{"type":"code_inline"}]},{"text":" for a full raw audit.","type":"text"}]},{"type":"paragraph","content":[{"text":"Health indicator: >90% = Healthy, 70-90% = Warning, \u003c70% = Critical.","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"Step 6: Write Health Report","type":"text"}]},{"type":"paragraph","content":[{"text":"Write to:","type":"text","marks":[{"type":"strong"}]},{"text":" ","type":"text"},{"text":".agents/flywheel-status.md","type":"text","marks":[{"type":"code_inline"}]}]},{"type":"code_block","attrs":{"wrap":false,"language":"markdown"},"content":[{"text":"# Knowledge Flywheel Health\n\n**Date:** YYYY-MM-DD\n\n## Pool Depths\n| Pool | Count | Recent (7d) |\n|------|-------|-------------|\n| Learnings | \u003ccount> | \u003ccount> |\n| Patterns | \u003ccount> | \u003ccount> |\n| Research | \u003ccount> | \u003ccount> |\n| Retros | \u003ccount> | \u003ccount> |\n\n## Velocity (Last 7 Days)\n- Sessions with extractions: \u003ccount>\n- New learnings: \u003ccount>\n- New patterns: \u003ccount>\n\n## Artifact Consistency\n- References scanned: \u003ccount>\n- Broken references: \u003ccount>\n- Consistency score: \u003cpercentage>%\n- Status: \u003cHealthy/Warning/Critical>\n\n## Cache Health\n- Hit rate: \u003cpercentage>%\n- Uncited learnings: \u003ccount>\n- Stale (90d uncited): \u003ccount>\n- Status: \u003cHealthy/Warning/Critical>\n\n## Retrieval Quality\n- Live corpus coverage: \u003cpercentage or unavailable>\n- Live corpus learnings: \u003ccount or unavailable>\n- Status: \u003cHealthy/Warning/Critical>\n\n## Health Status\n\u003cHealthy/Warning/Critical>\n\n## Friction Points\n- \u003cissue 1>\n- \u003cissue 2>\n\n## Recommendations\n1. \u003crecommendation>\n2. \u003crecommendation>","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"Step 7: Report to User","type":"text"}]},{"type":"paragraph","content":[{"text":"Tell the user:","type":"text"}]},{"type":"ordered_list","attrs":{"order":1,"listStyle":"number"},"content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Overall flywheel health","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Knowledge pool depths","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Recent activity","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Any friction points","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Recommendations","type":"text"}]}]}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"Health Indicators","type":"text"}]},{"type":"table","attrs":{"layout":null},"content":[{"type":"tr","content":[{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Metric","type":"text"}]}]},{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Healthy","type":"text"}]}]},{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Warning","type":"text"}]}]},{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Critical","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Learnings/week","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"3+","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"1-2","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"0","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Stale artifacts","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"\u003c20%","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"20-50%","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":">50%","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Research/plan ratio","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":">0.5","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"0.2-0.5","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"\u003c0.2","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Cache hit rate","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":">80%","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"50-80%","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"\u003c50%","type":"text"}]}]}]}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"Golden Signals","type":"text"}]},{"type":"paragraph","content":[{"text":"Four golden signals (always shown) reveal whether knowledge is truly compounding or just accumulating noise.","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"ao flywheel status # table output with golden signals\nao flywheel status --json # machine-readable","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"The Four Signals","type":"text"}]},{"type":"table","attrs":{"layout":null},"content":[{"type":"tr","content":[{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"#","type":"text"}]}]},{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Signal","type":"text"}]}]},{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Question","type":"text"}]}]},{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Key Metric","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"1","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Velocity Trend","type":"text","marks":[{"type":"strong"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Is σρ-δ increasing?","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Linear regression slope of baseline velocities (7d/30d)","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"2","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Citation Pipeline","type":"text","marks":[{"type":"strong"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Are citations useful?","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"% of feedback with reward > 0.6","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"3","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Research Closure","type":"text","marks":[{"type":"strong"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Is research being mined?","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"% orphaned research (no learning backlink)","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"4","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Reuse Concentration","type":"text","marks":[{"type":"strong"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Is the whole pool active?","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Gini coefficient of citation distribution","type":"text"}]}]}]}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"Verdicts and Thresholds","type":"text"}]},{"type":"table","attrs":{"layout":null},"content":[{"type":"tr","content":[{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Signal","type":"text"}]}]},{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Healthy","type":"text"}]}]},{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Warning","type":"text"}]}]},{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Critical","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Velocity Trend","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"compounding (slope > +0.01)","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"stagnant","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"decaying (slope \u003c -0.01)","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Citation Pipeline","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"reinforcing (>60% high-util)","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"inert (30-60%)","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"degrading (\u003c30%)","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Research Closure","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"mining (\u003c=10% orphans)","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"—","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"hoarding (>=10% orphans)","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Reuse Concentration","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"distributed (Gini\u003c0.4, active>30%)","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"concentrated","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"dormant (Gini>0.7 or active\u003c10%)","type":"text"}]}]}]}]},{"type":"paragraph","content":[{"text":"Overall verdict:","type":"text","marks":[{"type":"strong"}]},{"text":" 3+ healthy = ","type":"text"},{"text":"compounding","type":"text","marks":[{"type":"strong"}]},{"text":", 3+ critical = ","type":"text"},{"text":"decaying","type":"text","marks":[{"type":"strong"}]},{"text":", mixed = ","type":"text"},{"text":"accumulating","type":"text","marks":[{"type":"strong"}]},{"text":".","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"Recommended Actions","type":"text"}]},{"type":"table","attrs":{"layout":null},"content":[{"type":"tr","content":[{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Verdict","type":"text"}]}]},{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Action","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"decaying","type":"text","marks":[{"type":"strong"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Run ","type":"text"},{"text":"/compile","type":"text","marks":[{"type":"code_inline"}]},{"text":" cycle, archive stale artifacts, increase citation via ","type":"text"},{"text":"ao lookup","type":"text","marks":[{"type":"code_inline"}]}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"accumulating","type":"text","marks":[{"type":"strong"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Review orphaned research (","type":"text"},{"text":"/research","type":"text","marks":[{"type":"code_inline"}]},{"text":"→","type":"text"},{"text":"/retro","type":"text","marks":[{"type":"code_inline"}]},{"text":" pipeline), improve forge quality","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"compounding","type":"text","marks":[{"type":"strong"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Maintain cadence. Consider capturing baselines (","type":"text"},{"text":"ao metrics baseline","type":"text","marks":[{"type":"code_inline"}]},{"text":") for trend tracking","type":"text"}]}]}]}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"Cache Eviction","type":"text"}]},{"type":"paragraph","content":[{"text":"Read ","type":"text"},{"text":"references/cache-eviction.md","type":"text","marks":[{"type":"code_inline"}]},{"text":" for the full eviction pipeline (passive tracking → confidence decay → maturity scan → archive).","type":"text"}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"Hub Budget & Phase 4 Hardening","type":"text"}]},{"type":"paragraph","content":[{"text":"Phase 4 (soc-ytpq) governance for ","type":"text"},{"text":"~/.agents/learnings/","type":"text","marks":[{"type":"code_inline"}]},{"text":" — all advisory, none block by default. Full details in ","type":"text"},{"text":"references/hub-budget.md","type":"text","marks":[{"type":"code_inline"}]},{"text":".","type":"text"}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Size budget:","type":"text","marks":[{"type":"strong"}]},{"text":" target ≤ 250 MB / ≤ 5,000 files. Restore via ","type":"text"},{"text":"ao maturity --evict --target-size=250M","type":"text","marks":[{"type":"code_inline"}]},{"text":" (lowest-utility-first; respects ","type":"text"},{"text":"lifecycle.IsEvictionEligible","type":"text","marks":[{"type":"code_inline"}]},{"text":" so canonical / high-confidence files are protected).","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Volume gate:","type":"text","marks":[{"type":"strong"}]},{"text":" ","type":"text"},{"text":"ao harvest","type":"text","marks":[{"type":"code_inline"}]},{"text":" WARNs when promotions exceed ","type":"text"},{"text":"--max-promotions=N","type":"text","marks":[{"type":"code_inline"}]},{"text":" (default 500; ","type":"text"},{"text":"AO_MAX_PROMOTIONS=N","type":"text","marks":[{"type":"code_inline"}]},{"text":" env as fallback; ≤0 disables). WARN-only — the 2,638-promotion ","type":"text"},{"text":"soc-ujls","type":"text","marks":[{"type":"code_inline"}]},{"text":" drain proves a hard gate would falsely block legitimate runs.","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Provenance:","type":"text","marks":[{"type":"strong"}]},{"text":" every promoted file carries ","type":"text"},{"text":"source_rig:","type":"text","marks":[{"type":"code_inline"}]},{"text":" in its frontmatter (empty writers serialize as ","type":"text"},{"text":"source_rig: unknown","type":"text","marks":[{"type":"code_inline"}]},{"text":"). Both ","type":"text"},{"text":"harvest.Promote","type":"text","marks":[{"type":"code_inline"}]},{"text":" and ","type":"text"},{"text":"pool.(*Pool).Promote","type":"text","marks":[{"type":"code_inline"}]},{"text":" content-dedup against the same hub via ","type":"text"},{"text":"~/.agents/pool/promoted-index.jsonl","type":"text","marks":[{"type":"code_inline"}]},{"text":".","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Re-bloat triage:","type":"text","marks":[{"type":"strong"}]},{"text":" check ","type":"text"},{"text":"SkipGlobalHub","type":"text","marks":[{"type":"code_inline"}]},{"text":" defaults to ","type":"text"},{"text":"true","type":"text","marks":[{"type":"code_inline"}]},{"text":" (the agentops-b3v / soc-ujls fix), then ","type":"text"},{"text":"grep -h '^source_rig:' ~/.agents/learnings/*.md | sort | uniq -c | sort -rn","type":"text","marks":[{"type":"code_inline"}]},{"text":" to identify the regressed writer. Use ","type":"text"},{"text":"--target-size","type":"text","marks":[{"type":"code_inline"}]},{"text":", never raw ","type":"text"},{"text":"rm","type":"text","marks":[{"type":"code_inline"}]},{"text":".","type":"text"}]}]}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"Key Rules","type":"text"}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Monitor regularly","type":"text","marks":[{"type":"strong"}]},{"text":" - flywheel needs attention; address bottlenecks early","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Feed the flywheel","type":"text","marks":[{"type":"strong"}]},{"text":" - run /retro and /post-mortem","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Prune stale knowledge","type":"text","marks":[{"type":"strong"}]},{"text":" - archive old artifacts","type":"text"}]}]}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"Examples","type":"text"}]},{"type":"paragraph","content":[{"text":"User says:","type":"text","marks":[{"type":"strong"}]},{"text":" ","type":"text"},{"text":"/flywheel","type":"text","marks":[{"type":"code_inline"}]},{"text":" — Counts pool depths, checks recent activity, validates artifact consistency, writes health report to ","type":"text"},{"text":".agents/flywheel-status.md","type":"text","marks":[{"type":"code_inline"}]},{"text":". ","type":"text"},{"text":"Hook trigger:","type":"text","marks":[{"type":"strong"}]},{"text":" After ","type":"text"},{"text":"/post-mortem","type":"text","marks":[{"type":"code_inline"}]},{"text":" — Compares current vs historical metrics, flags velocity drops and friction points.","type":"text"}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"Troubleshooting","type":"text"}]},{"type":"table","attrs":{"layout":null},"content":[{"type":"tr","content":[{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Problem","type":"text"}]}]},{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Cause","type":"text"}]}]},{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Solution","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"All pool counts zero","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":".agents/","type":"text","marks":[{"type":"code_inline"}]},{"text":" directory missing or empty","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Run ","type":"text"},{"text":"/post-mortem","type":"text","marks":[{"type":"code_inline"}]},{"text":" or ","type":"text"},{"text":"/retro","type":"text","marks":[{"type":"code_inline"}]},{"text":" to seed knowledge pools","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Velocity always zero","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"No recent extractions (last 7 days)","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Run ","type":"text"},{"text":"/retro","type":"text","marks":[{"type":"code_inline"}]},{"text":" or ","type":"text"},{"text":"/post-mortem","type":"text","marks":[{"type":"code_inline"}]},{"text":" to extract and index learnings","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"\"ao CLI not available\"","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"ao command not installed or not in PATH","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Install ao CLI or use manual pool counting fallback","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Stale artifacts >50%","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Long time since last session or inactive repo","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Run ","type":"text"},{"text":"/provenance --stale","type":"text","marks":[{"type":"code_inline"}]},{"text":" to audit and archive old artifacts","type":"text"}]}]}]}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"Reference Documents","type":"text"}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"references/artifact-consistency.md","type":"text","marks":[{"type":"link","attrs":{"href":"references/artifact-consistency.md","title":null}}]}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"references/promotion-tiers.md","type":"text","marks":[{"type":"link","attrs":{"href":"references/promotion-tiers.md","title":null}}]}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"references/hub-budget.md","type":"text","marks":[{"type":"link","attrs":{"href":"references/hub-budget.md","title":null}}]}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"references/cache-eviction.md","type":"text","marks":[{"type":"link","attrs":{"href":"references/cache-eviction.md","title":null}}]}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"references/flywheel-cli.feature","type":"text","marks":[{"type":"link","attrs":{"href":"references/flywheel-cli.feature","title":null}}]},{"text":" — Executable spec: ","type":"text"},{"text":"ao flywheel","type":"text","marks":[{"type":"code_inline"}]},{"text":" CLI command behavior, linked to cmd tests (soc-jnfgi)","type":"text"}]}]}]},{"type":"hr","attrs":{"markup":"---"}}]},"metadata":{"date":"2026-06-05","name":"flywheel","model":"haiku","author":"@skillopedia","source":{"stars":375,"repo_name":"agentops","origin_url":"https://github.com/boshu2/agentops/blob/HEAD/skills/flywheel/SKILL.md","repo_owner":"boshu2","body_sha256":"012cbee66649d70dbc05f6c83b39cd672a942705c368e81c82fa7d21a93ce86b","cluster_key":"e53aa38552f60c23adb11284985488dc5112b401c3a4dd3205e385a128e657ae","clean_bundle":{"format":"clean-skill-bundle-v1","source":"boshu2/agentops/skills/flywheel/SKILL.md","attachments":[{"id":"1af02b83-a720-516f-9c26-1d2cd4233847","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/1af02b83-a720-516f-9c26-1d2cd4233847/attachment","path":"references/.gitkeep","size":0,"sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","contentType":"text/plain; charset=utf-8"},{"id":"939c3b69-99e5-5cf0-8a4c-7a6ce9eeba76","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/939c3b69-99e5-5cf0-8a4c-7a6ce9eeba76/attachment.txt","path":"references/artifact-consistency-allowlist.txt","size":851,"sha256":"a27dc81fef25703e8fa10cad70820fb765f6f543a0643c8de497d25c73e9d87f","contentType":"text/plain; charset=utf-8"},{"id":"66df9fa8-5770-59ca-b263-c21ae8dfcb19","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/66df9fa8-5770-59ca-b263-c21ae8dfcb19/attachment.md","path":"references/artifact-consistency.md","size":1609,"sha256":"6965e66d6630470336973375aacd5434c47cc94dade8574779fadea41c29c3ae","contentType":"text/markdown; charset=utf-8"},{"id":"e7f06b0c-f738-5f53-aa50-7de2c3c49806","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/e7f06b0c-f738-5f53-aa50-7de2c3c49806/attachment.md","path":"references/cache-eviction.md","size":1080,"sha256":"b852b8a04935f4f32073c9cf6908736af9bde891646a8f39dd681391f860f74f","contentType":"text/markdown; charset=utf-8"},{"id":"32e83b1c-2acc-5b57-a333-6dbce3c82050","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/32e83b1c-2acc-5b57-a333-6dbce3c82050/attachment.feature","path":"references/flywheel-cli.feature","size":3363,"sha256":"22d96c57224473ca03c53bea2aab2ad3998d0643ad5aa438e2f30ed1d39fe6d7","contentType":"text/plain; charset=utf-8"},{"id":"46dd5da3-532e-53c6-9596-5320ca11229e","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/46dd5da3-532e-53c6-9596-5320ca11229e/attachment.md","path":"references/hub-budget.md","size":3842,"sha256":"806253e9e566a7377f1c148481e8335796aae7a32ad2c034ec2b49b0b85ba763","contentType":"text/markdown; charset=utf-8"},{"id":"8a2fdee8-750e-5410-9c8b-515b35ceafee","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/8a2fdee8-750e-5410-9c8b-515b35ceafee/attachment.md","path":"references/promotion-tiers.md","size":1990,"sha256":"2cbd0f8693006b6a7fa5bd1ab892e10bb24d4043322c7514f2199dafcb3a56b8","contentType":"text/markdown; charset=utf-8"},{"id":"95f961d7-e7e3-5aff-b889-4069a89eadd1","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/95f961d7-e7e3-5aff-b889-4069a89eadd1/attachment.sh","path":"scripts/artifact-consistency.sh","size":4046,"sha256":"a8c0ea6cedc45a4580db2510b53048cde76a8aeaab56dfeebc804a4aa9281b55","contentType":"application/x-sh; charset=utf-8"},{"id":"c15a383a-3228-507a-ab1a-c0a0806286f9","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/c15a383a-3228-507a-ab1a-c0a0806286f9/attachment.sh","path":"scripts/validate.sh","size":885,"sha256":"14277687dc843617c5f606cac85a1c190b98424395dfe838e303b4b5b22689ac","contentType":"application/x-sh; charset=utf-8"}],"bundle_sha256":"c8893ed54c8fbcf26e1a97c6ff0bf39a95f5d7a6b1ae09f38913e046e4ec10a9","attachment_count":9,"text_attachments":7,"attachment_storage":"skillopedia-attachments-v1","binary_attachments":2,"excluded_attachments":[]},"cluster_size":1,"skill_md_path":"skills/flywheel/SKILL.md","import_metadata":{"date":"2026-06-05","author":"@skillopedia","version":"v1","category":"general","category_label":"General"},"exact_dupes_collapsed_into_this":0},"context":{"intent":{"mode":"task"},"window":"fork","sections":{"exclude":["TASK"]},"intel_scope":"full"},"version":"v1","category":"general","consumes":[],"metadata":{"tier":"background","internal":true,"dependencies":[]},"produces":[".agents/learnings/*.md"],"practices":["wiki-knowledge-surface","lean-startup","dora-metrics"],"import_tag":"clean-skills-v1","context_rel":[{"kind":"shared-kernel","with":"standards"}],"description":"Check knowledge flywheel health.","allowed-tools":"Read, Grep, Glob, Bash","hexagonal_role":"domain","output_contract":"stdout: flywheel health report (JSON when --json)","skill_api_version":1}},"renderedAt":1782980088273}

Flywheel Skill Monitor the knowledge flywheel health. The Flywheel Model Velocity = rate of knowledge flowing through. Friction = bottlenecks slowing the flywheel. Execution Steps Given : Step 1: Measure Knowledge Pools Step 2: Check Recent Activity Step 3: Detect Staleness Step 3.5: Check Cache Health Step 4: Check ao CLI Status Step 4.5: Process Metrics (from skill telemetry) If exists, use to extract: invocations by skill, average cycle time per skill, gate failure rates. Include in health report (Step 6) under . Step 5: Validate Artifact Consistency Cross-reference validation: scan knowle…