Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add skills/itsokay-co/bio-vibing/pullnpx skills add Itsokay-co/bio-vibing --skill pullgit clone --depth 1 https://github.com/Itsokay-co/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.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 | $0.00060 | $0.01705 |
| Opus 5 | $0.00030 | $0.00852 |
| Sonnet 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 4d 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.
- 4d 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 (16 stars, last pushed 1mo ago), licensed Apache-2.0. It adds 60 tokens to every session and 1,705 once invoked, about $0.0003 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.
brainstorming
You MUST use this before any creative work - creating features, building components, adding functionality, or modifying behavior. Explores user intent, requirements and design before implementation.
auto-perf-optimize
Run agent-driven VS Code performance or memory investigations. Use when asked to launch Code OSS, automate a VS Code scenario, run the Chat memory smoke runner, capture renderer heap snapshots, take workflow screenshots, compare run summaries, or drive a repeatable scenario before heap-snapshot analysis.
chat-perf
Run chat perf benchmarks and memory leak checks against the local dev build or any published VS Code version. Use when investigating chat rendering regressions, validating perf-sensitive changes to chat UI, or checking for memory leaks in the chat response pipeline.
chat-pet-sprite-creation
Use when creating or changing VS Code chat pet sprite art, sprite sheets, state animations, eye treatments, Stable/Insiders variants, or pet transitions under src/vs/workbench/contrib/chat/browser/widget/media/chatPet.
cpu-profile-analysis
Analyze V8/Chrome CPU profiles (.cpuprofile) and DevTools trace files (Trace-.json). Use when: profiling performance, investigating slow functions, comparing code paths, finding bottlenecks, analyzing timeToRequest, understanding call trees from sampling profiler data, analyzing layout/paint/rendering, investigating…