Training plan tool: YAML to Garmin workouts and readable documents
Project description
paicer
AI-powered training plan manager. Provide your race goals, schedule, and fitness level to create a plan, with structured workouts that can be synced to your Garmin watch. After each training week, run the progress review command to pull your Garmin activity and training status data, compare it against the plan, and adjust targets based on how your body is responding.
Disclaimer: This tool is not a substitute for professional coaching or medical advice. Always listen to your body and consult a qualified professional for health or injury concerns.
Get Started
git clone https://github.com/cvitan/paicer && cd paicer
Open the project in Claude Code and run /paicer:create-plan to create a YAML-based training plan through a guided conversation. It handles setup, configuration, and walks you through the process.
After each week of training, run /paicer:review-progress to review your plan progress and make any tweaks if needed. The review will also be appended to your plan for future reference.
Plan output options
- Markdown
- HTML — set up to print 1 wk/page
- Garmin — sync scheduled structured workouts
Commands
make markdown # Generate Markdown
make html # Generate HTML (A4 for metric, letter for imperial)
make workouts SCOPE=w7 # Sync week 7 to Garmin
make workouts SCOPE=w7d2 # Sync specific workout
make workouts SCOPE=p2 # Sync entire phase
make test # Validate plan
Supported Sports
Running, cycling, swimming (pool and open water), track sessions, and multisport/brick workouts (bike + run with transition tracking). Requires a Garmin watch — multisport needs a compatible model (Fenix, Forerunner 570/970, Enduro).
Roadmap
- Strava activity enrichment
- Zwift Integrations
- Additional Formats - PDF, iCal, JSON, CSV export
- HR-zone fallback for cycling - generate bike workouts with
heart.rate.zonetargets for users without a power meter (current plans assume one) - Ad-hoc activity data tool - extend
src/review_data.pyor addsrc/activity_data.pywith--activity-id,--latest N,--from-date/--to-dateflags so single-activity / cross-week queries don't require throwaway scripts. Exposeget_activity_typed_splitsas the primary intervals fetch.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file paicer-0.1.0.tar.gz.
File metadata
- Download URL: paicer-0.1.0.tar.gz
- Upload date:
- Size: 920.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0af15c5b8cb399dbe5c9d1d6106985a9fbdc9328ea07b80c9ea019fdd961aaaa
|
|
| MD5 |
e4c67e60430dccff35d06958cff6a857
|
|
| BLAKE2b-256 |
40af4c195d3fcb3303b4e708b36d21904b0f25d00292f96531e4ff3a1957d2fe
|
Provenance
The following attestation bundles were made for paicer-0.1.0.tar.gz:
Publisher:
publish.yml on cvitan/paicer
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
paicer-0.1.0.tar.gz -
Subject digest:
0af15c5b8cb399dbe5c9d1d6106985a9fbdc9328ea07b80c9ea019fdd961aaaa - Sigstore transparency entry: 1624638680
- Sigstore integration time:
-
Permalink:
cvitan/paicer@2b05e6c13a745f47a83c5602d4592e3742be4613 -
Branch / Tag:
refs/tags/0.1.0 - Owner: https://github.com/cvitan
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@2b05e6c13a745f47a83c5602d4592e3742be4613 -
Trigger Event:
release
-
Statement type:
File details
Details for the file paicer-0.1.0-py3-none-any.whl.
File metadata
- Download URL: paicer-0.1.0-py3-none-any.whl
- Upload date:
- Size: 21.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0511e8befa80af6747e0a62537949307106db6620af3516f9c7e53d5f48ce38f
|
|
| MD5 |
d02666d6094e00cc07daeafded05b64b
|
|
| BLAKE2b-256 |
d2a916a5d08fd16b8fc6464dea778142f5bcd8f5000d15c294eff2443b2c2883
|
Provenance
The following attestation bundles were made for paicer-0.1.0-py3-none-any.whl:
Publisher:
publish.yml on cvitan/paicer
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
paicer-0.1.0-py3-none-any.whl -
Subject digest:
0511e8befa80af6747e0a62537949307106db6620af3516f9c7e53d5f48ce38f - Sigstore transparency entry: 1624638685
- Sigstore integration time:
-
Permalink:
cvitan/paicer@2b05e6c13a745f47a83c5602d4592e3742be4613 -
Branch / Tag:
refs/tags/0.1.0 - Owner: https://github.com/cvitan
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@2b05e6c13a745f47a83c5602d4592e3742be4613 -
Trigger Event:
release
-
Statement type: