Fitness Agent
Use the bundled wrapper script to run the local CLI:
scripts/run_fitness_agent.sh --help
The skill is self-contained. The wrapper resolves the skill root relative to its own location, so it works after cloning the repository or after copying the skill directory into a local skills folder.
Workflow
- Authenticate first if no Strava token is configured.
- Configure the Obsidian vault path before attempting vault writes or syncs.
- List activities to identify target activity ids when the user does not provide one.
- Export Markdown when the user wants reviewable output.
- Use
sync latestwhen the user wants the full Obsidian analysis surface, because it writes activity notes plus dashboard and weekly/monthly reports. - Write or sync into the vault only after confirming the destination path is configured.
Prefer the CLI defaults unless the user asks otherwise. Do not add --overwrite unless the user explicitly wants to replace an existing file or note.
Commands
Authenticate with Strava:
scripts/run_fitness_agent.sh auth login \
--client-id YOUR_CLIENT_ID \
--client-secret YOUR_CLIENT_SECRET
Configure the default Obsidian vault:
scripts/run_fitness_agent.sh config set-vault \
--vault-path "/path/to/YourVault" \
--default-folder "Fitness/Strava"
List recent activities:
scripts/run_fitness_agent.sh activities list --limit 5
Export one activity as Obsidian Markdown:
scripts/run_fitness_agent.sh activities export --activity-id 123456789
Write one activity into the configured vault:
scripts/run_fitness_agent.sh vault write --activity-id 123456789
Sync the latest activities into the configured vault:
scripts/run_fitness_agent.sh sync latest --limit 3
This sync now writes:
- activity notes under
Activities/YYYY/MM/ Dashboard/Fitness Dashboard.baseDashboard/Fitness Dashboard.md- weekly reports under
Reports/Weekly/ - monthly reports under
Reports/Monthly/
Guardrails
- Surface the exact note path after successful vault writes or syncs.
- Stop and report the CLI error if Strava auth, token refresh, network access, or vault path validation fails.
- Treat
~/.fitness-agent/config.jsonas the default local config unless the user provides--config-path. - Use
activities exportbefore vault writes when the user wants to inspect or revise the generated Markdown first. - Mention that the OAuth callback defaults to
http://localhost:33371/callbackwhen the user asks how auth works. - Explain that single-activity exports include streams when available, while
sync latestalso backfills affected week/month context to keep reports complete.
Trigger Examples
$fitness-agent 帮我登录 Strava 并配置我的 Obsidian vault$fitness-agent 列出最近 10 条 Strava 活动$fitness-agent 把活动 123456789 导出成 Obsidian Markdown$fitness-agent 把最近 3 条 Strava 活动同步到我的 vault
Resources
fitness_agent.py: Self-contained CLI entrypoint packaged with the skill.src/fitness_agent/: Python implementation for Strava auth, activity fetch, Markdown rendering, and vault writes.scripts/run_fitness_agent.sh: Stable wrapper that dispatches to the packaged CLI.