Daily Strava Roast
/install daily-strava-roast
Daily Strava Roast
Use this skill to turn recent Strava activity into a short roast-style summary.
Default workflow
- Use the deterministic implementation first to fetch and summarize activity.
- If you are inside OpenClaw and want the V2 path, use the structured context/prompt output as model input for the final paragraph only.
- If connected-model generation is unavailable or weak, fall back to the deterministic roast output.
- Do not pretend the standalone Python package has a built-in OpenClaw connected-model API if it does not.
What this skill does
This skill provides:
- deterministic Strava fetch + summary tooling
- adjustable tones and spice levels
- V1 roast fallback that is stable and testable
- V2 context/prompt building for better final-paragraph generation in the OpenClaw runtime
Preferred commands
Use the packaged CLI for deterministic preparation and fallback:
uv run --project {baseDir} daily-strava-roast summary --json --pretty
uv run --project {baseDir} daily-strava-roast context --pretty
uv run --project {baseDir} daily-strava-roast prompt
uv run --project {baseDir} daily-strava-roast roast
Do not rely on the removed legacy script path. Use the packaged CLI commands only.
Runtime guidance
When invoked inside OpenClaw for an actual roast reply:
- run deterministic preparation first
- use the connected/default runtime model only to write the final roast paragraph
- keep that paragraph to one short paragraph
- do not invent stats
- if generation fails, return the deterministic roast instead of erroring
Runtime recipe
Use this sequence:
- Build context JSON:
uv run --project {baseDir} daily-strava-roast context --pretty
- Build the constrained prompt:
uv run --project {baseDir} daily-strava-roast prompt
- Ask the connected/default OpenClaw runtime model to write the final paragraph from that prompt.
- Before replying, sanity-check the generated paragraph:
- exactly one paragraph
- one or two sentences max unless unusually short
- no bullet points
- no invented stats
- no stat dump; usually no more than two concrete metrics unless a third really earns its place
- not generic AI filler
- avoids banned phrases, stale identity/relationship jokes, pet phrases, and over-clever wording
- avoids poetic or cosmic phrasing
- tone matches requested spice/tone closely enough
- If the paragraph fails those checks or generation is unavailable, fall back to:
uv run --project {baseDir} daily-strava-roast roast
Fallback triggers
Fall back immediately if any of these happen:
- no connected/default runtime model is available
- generated output is empty
- generated output invents numbers, activities, or claims not present in the prompt/context
- generated output is multiple paragraphs or list-like
- generated output crams in too many stats without real comedic payoff
- generated output uses banned phrases or obvious close variants
- generated output leans on stale identity, relationship, or defining-trait jokes
- generated output leans on polished LLM-clever wording instead of dry mockery
- generated output drifts into poetic, cosmic, or overly ornate phrasing
- generated output is obviously generic, repetitive, or less readable than the deterministic roast
When falling back:
- do not apologize unless the user needs to know
- just return the deterministic roast text
When working purely from the repo/CLI:
- treat connected-model generation as a runtime concern, not a packaged-CLI feature
- keep the deterministic path working without extra runtime dependencies
Inputs
By default the skill reads Strava app config from:
~/.openclaw/secure/strava_app.json
And by default the token file is:
~/.openclaw/workspace/agents/tars-fit/strava_tokens.json
Normal auth behaviour:
- treat
~/.openclaw/secure/strava_app.jsonas the canonical app-credentials source - if setup already exists, expired access tokens should refresh automatically using the refresh token
- if Strava still returns 401, retry once after a forced refresh
- if the token file is missing, invalid, or missing required fields, treat that as initial setup required and tell the user clearly
- if the token file exists but app credentials are missing or incomplete, return config_incomplete clearly
- if setup exists but refresh/reauthorisation is needed, return the reauth-required path instead of pretending it is a rest day
- avoid depending on sourced shell profiles for routine auth
Use this to inspect auth readiness:
uv run --project {baseDir} daily-strava-roast auth-url
Use JSON mode when another agent needs machine-readable status:
uv run --project {baseDir} daily-strava-roast roast --json --pretty
Tones
Supported tones:
dryplayfulsavagecoach
Spice
Spice controls roast intensity:
0— gentle1— light tease2— proper roast3— scorched earth
References
Read as needed:
references/design.mdfor roast heuristics and failure casesdocs/V2.mdfor the V2 architecture and package/runtime boundary
- 确保已安装 OpenClaw(本地或 Docker 部署)
- 在对话框中输入安装命令:
/install daily-strava-roast - 安装完成后,直接呼叫该 Skill 的名称或使用
/daily-strava-roast触发 - 根据 Skill 的参数说明提供必要输入,即可获得结构化输出
Daily Strava Roast 是什么?
Generate a playful or sharp daily roast of recent Strava activity. Use when asked to roast, recap, tease, or humorously summarize a Strava workout or a recen... 它是一个面向 Claude Code / OpenClaw 的 AI Agent Skill 插件,目前累计下载 208 次。
如何安装 Daily Strava Roast?
在 OpenClaw 或 Claude Code 对话框中运行命令「/install daily-strava-roast」即可一键安装,无需额外配置。
Daily Strava Roast 是免费的吗?
是的,Daily Strava Roast 完全免费,采用 MIT-0 许可证,可自由下载、安装和使用。
Daily Strava Roast 支持哪些平台?
Daily Strava Roast 跨平台运行,可在任意部署了 OpenClaw / Claude Code 的环境中使用(cross-platform)。
谁开发了 Daily Strava Roast?
由 Rana Salal Ali(@ranasalalali)开发并维护,当前版本 v0.2.5。