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/pull)<a href="https://agentmods.dev/skills/itsokay-co/bio-vibing/pull"><img src="https://agentmods.dev/badge/skills/itsokay-co/bio-vibing/pull/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/itsokay-co/bio-vibing/pull"><img src="https://agentmods.dev/badge/skills/itsokay-co/bio-vibing/pull.svg" alt="Reviewed on agentmods" width="80" 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.00060 | $0.01705 |
| Opus 5.5 | $0.00024 | $0.00682 |
| Sonnet 5.5 | $0.00012 | $0.00341 |
| Haiku 4.5 | $0.00006 | $0.00170 |
Grade A, and why
pull 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 2mo 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 — 149 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Pull
Fetch wearable biometric data and present human-readable insights.
Arguments
- First argument: number of days to pull (default: 14)
Steps
- Fetch and analyze biometric data:
DAYS=${1:-14}
python3 << PYEOF
import sys, os
sys.path.insert(0, os.path.join(os.environ.get('CLAUDE_PLUGIN_ROOT', '.'), 'lib'))
from fetch import fetch_biometrics
from statistics import mean
DAYS = int("$DAYS")
data = fetch_biometrics(days=DAYS)
print(f"Pulling {DAYS} days from {data['provider']}: {data['period_start']} to {data['period_end']}")
# --- SLEEP ---
sleep = [s for s in data['sleep'] if s.get('sleep_type') == 'long_sleep'] or data['sleep']
if sleep:
scores = [s['score'] for s in sleep if s.get('score')]
deep = [s['deep_sleep_seconds']/60 for s in sleep if s.get('deep_sleep_seconds')]
rem = [s['rem_sleep_seconds']/60 for s in sleep if s.get('rem_sleep_seconds')]
light = [s['light_sleep_seconds']/60 for s in sleep if s.get('light_sleep_seconds')]
total = [s['total_sleep_seconds']/60 for s in sleep if s.get('total_sleep_seconds')]
efficiency = [s['efficiency'] for s in sleep if s.get('efficiency')]
hrv = [s['avg_hrv_ms'] for s in sleep if s.get('avg_hrv_ms')]
hr = [s['avg_resting_hr_bpm'] for s in sleep if s.get('avg_resting_hr_bpm')]
def fmt(vals, unit=''):
if not vals: return 'N/A'
avg = mean(vals)
return f'{avg:.1f}{unit} avg (range {min(vals):.1f}-{max(vals):.1f})'
print(f'\nSLEEP ({len(sleep)} nights)')
if scores: print(f' Score: {mean(scores):.0f} avg (range {min(scores)}-{max(scores)})')
if total: print(f' Total sleep: {fmt(total, " min")}')
if deep: print(f' Deep: {fmt(deep, " min")}')
if rem: print(f' REM: {fmt(rem, " min")}')
if light: print(f' Light: {fmt(light, " min")}')
if efficiency: print(f' Efficiency: {fmt(efficiency, "%")}')
if hrv: print(f' Avg HRV: {fmt(hrv, " ms")}')
if hr: print(f' Avg resting HR: {fmt(hr, " bpm")}')
scored = [s for s in sleep if s.get('score')]
if scored:
best = max(scored, key=lambda s: s['score'])
worst = min(scored, key=lambda s: s['score'])
print(f' Best night: {best["day"]} (score {best["score"]})')
print(f' Worst night: {worst["day"]} (score {worst["score"]})')
else:
print('\nNo sleep data found.')
# --- READINESS ---
readiness = data['readiness']
if readiness:
scores = [r['score'] for r in readiness if r.get('score')]
if scores:
print(f'\nREADINESS ({len(readiness)} days)')
print(f' Score: {mean(scores):.0f} avg (range {min(scores)}-{max(scores)})')
best = max(readiness, key=lambda r: r.get('score', 0))
worst = min(readiness, key=lambda r: r.get('score', 0))
print(f' Best day: {best["day"]} (score {best.get("score", "N/A")})')
print(f' Worst day: {worst["day"]} (score {worst.get("score", "N/A")})')
# Contributors
for key, label in [
('temp_deviation_c', 'Temp Deviation'),
('hrv_balance_score', 'HRV Balance'),
('recovery_index_score', 'Recovery Index'),
('sleep_balance_score', 'Sleep Balance'),
('activity_balance_score', 'Activity Balance'),
]:
vals = [r[key] for r in readiness if r.get(key) is not None]
if vals:
print(f' {label}: {mean(vals):.0f} avg')
# --- ACTIVITY ---
activity = data['activity']
if activity:
scores = [a['score'] for a in activity if a.get('score')]
steps = [a['steps'] for a in activity if a.get('steps')]
cals = [a['total_calories'] for a in activity if a.get('total_calories')]
print(f'\nACTIVITY ({len(activity)} days)')
if scores: print(f' Score: {mean(scores):.0f} avg (range {min(scores)}-{max(scores)})')
if steps: print(f' Steps: {mean(steps):.0f} avg/day (range {min(steps)}-{max(steps)})')
if cals: print(f' Calories: {mean(cals):.0f} avg/day')
# --- STRESS ---
stress = data['stress']
if stress:
stress_high = [s['stress_high_minutes'] for s in stress if s.get('stress_high_minutes') is not None]
recovery = [s['recovery_high_minutes'] for s in stress if s.get('recovery_high_minutes') is not None]
print(f'\nSTRESS ({len(stress)} days)')
if stress_high: print(f' High stress minutes: {mean(stress_high):.0f} avg/day')
if recovery: print(f' Recovery minutes: {mean(recovery):.0f} avg/day')
# --- BODY COMPOSITION ---
body_comp = data.get('body_composition', [])
if body_comp:
latest = body_comp[-1]
parts = []
if latest.get('weight_kg'): parts.append(f"{latest['weight_kg']:.1f}kg")
if latest.get('body_fat_pct'): parts.append(f"{latest['body_fat_pct']:.1f}% body fat")
if latest.get('bmi'): parts.append(f"BMI {latest['bmi']:.1f}")
if parts:
print(f'\nBODY COMPOSITION')
print(f' Latest: {", ".join(parts)}')
# --- RESPIRATION ---
respiration = data.get('respiration', [])
if respiration:
resp_vals = [r['avg_respiratory_rate'] for r in respiration if r.get('avg_respiratory_rate')]
if resp_vals:
print(f'\nRESPIRATION ({len(respiration)} days)')
print(f' Avg respiratory rate: {mean(resp_vals):.1f} brpm')
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.
- 2mo ago First seen · 149 lines · 60 tokens per session scan A 72004f79bd4b
pull is a skill published in the GitHub repository Itsokay-co/bio-vibing (17 stars, last pushed 3mo ago), licensed Apache-2.0. It adds 60 tokens to every session and 1,705 once invoked, about $0.0002 per session on Opus 5.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.
pull compared with skills from other repositories
| Mod | Type | Stars | Last push | Licence | Scan | Tokens | Works with |
|---|---|---|---|---|---|---|---|
| pullItsokay-co/bio-vibing | Skill | 17 | 3mo ago | Apache-2.0 | A | 60 | Claude Code |
| imagegenopenai/codex | Skill | 133k | yesterday | Apache-2.0 | A | 113 | Codex |
| playwright-climicrosoft/playwright | Skill | 99k | yesterday | Apache-2.0 | A | 19 | Claude Code |
| local-ai-agentsmicrosoft/ai-agents-for-beginners | Skill | 79k | 4d ago | MIT | A | 200 | Claude Code, Codex |
| systematic-debuggingobra/superpowers | Skill | 313k | 3d ago | MIT | A | 21 | Claude Code |
| next-cache-components-adoptionvercel/next.js | Skill | 143k | yesterday | MIT | A | 95 | Claude Code |
| next-partial-prefetching-adoptionvercel/next.js | Skill | 143k | yesterday | MIT | A | 103 | Claude Code |