Getting it into your agent
This one installs as part of its plugin. Adding the marketplace and installing the plugin brings it with everything else the plugin ships.
/plugin marketplace add Itsokay-co/bio-vibing/plugin install bio-vibingWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/itsokay-co/bio-vibing/discover)<a href="https://agentmods.dev/skills/itsokay-co/bio-vibing/discover"><img src="https://agentmods.dev/badge/skills/itsokay-co/bio-vibing/discover.svg" alt="Measured on agentmods" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00049 | $0.01726 |
| Opus 5 | $0.00024 | $0.00863 |
| Sonnet 5 | $0.00010 | $0.00345 |
| Haiku 4.5 | $0.00005 | $0.00173 |
Grade A, and why
discover scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 8d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 146 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Discover — What drives your best and worst nights
Automated correlation discovery across 60 days. Finds patterns you didn't know to look for.
Steps
Pull 60 days and run correlation discovery:
python3 << 'PYEOF'
import sys, os, json
sys.path.insert(0, os.path.join(os.environ.get('CLAUDE_PLUGIN_ROOT', '.'), 'lib'))
from fetch import fetch_biometrics
from dataclasses import asdict
from metrics import (compute_correlation_discovery, compute_gut_score_correlations,
compute_caffeine_sleep_coupling, compute_food_item_effects,
compute_food_hr_sensitivity, compute_disruption_classification)
data = fetch_biometrics(days=60)
d = asdict(data)
# --- CORRELATION DISCOVERY ---
disc = compute_correlation_discovery(d)
print(f"DISCOVERY REPORT — {disc.get('n_days_analyzed', 0)} days analyzed")
print()
# Best/worst night profiles
best = disc.get('best_nights')
worst = disc.get('worst_nights')
if best and worst:
print(f"YOUR BEST SLEEP NIGHTS (avg score {best['avg_score']}):")
if best.get('common_factors'):
print(f" Common factors: {', '.join(best['common_factors'])}")
print(f"YOUR WORST SLEEP NIGHTS (avg score {worst['avg_score']}):")
if worst.get('common_factors'):
print(f" Common factors: {', '.join(worst['common_factors'])}")
print()
# Top correlations
correlations = disc.get('correlations', [])
if correlations:
print("TOP CORRELATIONS:")
for c in correlations[:10]:
sign = "+" if c['direction'] == 'positive' else "-"
print(f" {sign} {c['feature']} → {c['outcome']} r={c['r']} (n={c['n']})")
print()
# --- CAFFEINE COUPLING ---
meals = d.get('meals', [])
sleep = d.get('sleep', [])
if meals:
caf = compute_caffeine_sleep_coupling(meals, sleep)
if caf.get('n_days_with_caffeine', 0) >= 5:
print("CAFFEINE → SLEEP:")
print(f" Avg daily: {caf.get('daily_avg_mg', 0)}mg ({caf['n_days_with_caffeine']} days with caffeine)")
corr = caf.get('correlations', {})
if corr.get('onset_latency'):
print(f" Caffeine × onset latency: r={corr['onset_latency']}")
if corr.get('deep_sleep'):
print(f" Caffeine × deep sleep: r={corr['deep_sleep']}")
hvl = caf.get('high_vs_low', {})
if hvl.get('onset_latency'):
h = hvl['onset_latency']
print(f" High caffeine days: onset {round(h['high_caffeine_avg']/60, 1)}min vs low: {round(h['low_caffeine_avg']/60, 1)}min")
print()
# --- FOOD EFFECTS ---
fe = compute_food_item_effects(meals, sleep)
if fe.get('n_foods_analyzed', 0) > 0:
print(f"FOOD EFFECTS ({fe['n_foods_analyzed']} foods analyzed):")
if fe.get('best_foods'):
print(f" Best for sleep: {', '.join(fe['best_foods'][:3])}")
if fe.get('worst_foods'):
print(f" Worst for sleep: {', '.join(fe['worst_foods'][:3])}")
for name, effect in list(fe.get('food_effects', {}).items())[:5]:
metrics = effect.get('metrics', {})
n = effect.get('n_nights', 0)
effects_str = ', '.join(f"{m}: d={v['cohens_d']} ({v['direction']})"
for m, v in metrics.items())
print(f" {name} (n={n}): {effects_str}")
print()
# --- FOOD HR SENSITIVITY ---
heartrate = d.get('heartrate', [])
fhs = compute_food_hr_sensitivity(meals, heartrate)
if fhs.get('n_foods_analyzed', 0) > 0:
print(f"FOOD HR SENSITIVITY ({fhs['n_foods_analyzed']} foods, avg recovery {fhs['overall_avg_recovery_min']}min):")
if fhs.get('flagged_foods'):
print(f" Slow recovery foods: {', '.join(fhs['flagged_foods'])}")
for name, stats in sorted(fhs.get('foods', {}).items(), key=lambda x: -x[1]['avg_recovery_min'])[:5]:
flag = " ⚠" if stats['flag'] == 'slow_recovery' else ""
print(f" {name}: {stats['avg_recovery_min']}min avg recovery (n={stats['n_meals']}){flag}")
print()
# --- DISRUPTION HISTORY ---
disrupt = compute_disruption_classification(d.get('sleep', []), d.get('readiness', []), d.get('spo2', []))
if disrupt.get('n_disruptions', 0) > 0:
by_type = disrupt.get('by_type', {})
print(f"DISRUPTION EVENTS ({disrupt['n_disruptions']} detected):")
for dtype, count in by_type.items():
if count:
print(f" {dtype}: {count}")
for e in disrupt.get('events', [])[-5:]:
print(f" {e['day']}: {e['classification']} ({e['recovery_shape']}-shape, {e.get('days_to_recovery', '?')}d recovery)")
print()
# --- GUT SCORE PATTERNS (if Suna connected) ---
gut_scores = d.get('gut_scores', [])
if gut_scores:
gc = compute_gut_score_correlations(gut_scores, sleep)
print(f"GUT SCORE PATTERNS ({gc.get('n_days', 0)} days):")
print(f" Avg score: {gc.get('avg_score', 0)}")
corr = gc.get('correlations', {})
for k, v in corr.items():
print(f" {k}: r={v}")
if gc.get('best_day') and gc.get('worst_day'):
dow = gc.get('by_day_of_week', {})
print(f" Best day: {gc['best_day']} ({dow.get(gc['best_day'], '?')})")
print(f" Worst day: {gc['worst_day']} ({dow.get(gc['worst_day'], '?')})")
PYEOF
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 8d ago First seen · 146 lines · 49 tokens per session scan A fbdfb2ebb324
discover is a skill published in the GitHub repository Itsokay-co/bio-vibing (16 stars, last pushed 1mo ago), licensed Apache-2.0. It adds 49 tokens to every session and 1,726 once invoked, about $0.0002 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other skills, from other repositories
systematic-debugging
Use when encountering any bug, test failure, or unexpected behavior, before proposing fixes.
local-ai-agents
Build local-first AI agents that run entirely on a developer workstation with Microsoft Foundry Local and Qwen function-calling models. Covers Small Language Models (SLMs), the OpenAI-compatible local endpoint, sandboxed local tools, local RAG with Chroma, local MCP servers, hybrid cloud/local routing, and the…
next-cache-components-adoption
Turn on Cache Components in a Next.js app and resolve the blocking routes it surfaces. Use when the user wants to enable, adopt, or migrate to Cache Components, flip the cacheComponents flag, work through a flood of blocking-prerender / instant validation errors, run the cache-components-instant-false codemod, or…
next-cache-components-optimizer
Drive a Next.js route to instant navigation by setting up an agentic loop, under Cache Components / PPR, on initial load (hard navigation) and client-side navigation (soft navigation). Encode the goal as a failing @next/playwright instant() e2e and work it to green, one verified route at a time; the shipped test then…
next-partial-prefetching-adoption
Turn on Partial Prefetching in a Next.js app and work through the insights it surfaces. Use when the user wants to enable or adopt Partial Prefetching, flip the partialPrefetching flag, opt routes in with export const prefetch = 'partial', audit Link prefetch={true} behavior, preserve existing prefetched UI with…
chronicle
Analyze Copilot session history for standup reports, usage tips, session search, and session reindexing. Use when the user asks for a standup, daily summary, usage tips, workflow recommendations, wants to search or find past sessions by keyword/file/PR, wants to reindex their session store, or asks about deleting…