docs: add agent integration guide; fix L4 deep-link param in README
Add AGENT_GUIDE.md describing how a practice-managing agent drives the deployed tool (guitar.basdado.com) via deep links, with the full drill/param catalog. Correct the README param table: L4 uses ?note, not ?root. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
+142
@@ -0,0 +1,142 @@
|
||||
# Guitar Practice Helper — guide for a practice-managing agent
|
||||
|
||||
You (an AI agent) help me run my guitar practice: reminders, a practice diary,
|
||||
tempo tracking, session planning. This document tells you how to use my companion
|
||||
web tool so you can hand me ready-to-use links and keep useful records.
|
||||
|
||||
The tool is a static web app deployed at **https://guitar.basdado.com**. It turns
|
||||
each drill code from my routine (R1, F2, T3, …) into an interactive helper page —
|
||||
a metronome/click track, a strum or picking pattern, chord/fretboard diagrams, or
|
||||
a drone.
|
||||
|
||||
## How to use it (the short version)
|
||||
|
||||
- **Give me deep links.** In reminders and session plans, link directly to the
|
||||
exact drill, tempo, and variant I should do — e.g.
|
||||
`https://guitar.basdado.com/drill/R1?bpm=72&variant=quarters`.
|
||||
- **Pin every setting in the URL.** Query params override whatever is stored on the
|
||||
device, so a fully-specified link always starts me in the right place regardless
|
||||
of what I did last time.
|
||||
- **You own the memory, not the tool.** There is no API and no server state you can
|
||||
read. The app stores per-drill settings and R4 best scores only in the browser's
|
||||
`localStorage`, per device. Track my progress (current clean tempo per drill,
|
||||
streaks, notes) in your own diary, and encode it into the links you send me.
|
||||
|
||||
## Link format
|
||||
|
||||
```
|
||||
https://guitar.basdado.com/drill/<CODE>[?param=value¶m=value]
|
||||
```
|
||||
|
||||
- `<CODE>` is a drill code (see catalog). Case-insensitive.
|
||||
- The index of all drills is at `https://guitar.basdado.com/`.
|
||||
- An unknown code shows a friendly "unknown drill" page, so nothing breaks.
|
||||
|
||||
## The core practice principle to reinforce
|
||||
|
||||
The routine is built on **additive, edge-of-ability practice**: only raise the tempo
|
||||
once a drill is played cleanly. The app has a "clean? +2" button for exactly this.
|
||||
|
||||
Your job around that: remember my current **clean tempo** for each click-track drill
|
||||
in your diary. Each session, send the link at that tempo (`?bpm=`). When I report a
|
||||
drill felt clean, bump my recorded tempo by ~2 BPM for next time. If I struggled,
|
||||
hold or drop it. This is the main feedback loop between you and the tool.
|
||||
|
||||
## Drill catalog
|
||||
|
||||
Click-track drills accept `?bpm=` (integer, 30–300) and, where noted, `?variant=`.
|
||||
"Default BPM" is the app's starting tempo if you don't pin one.
|
||||
|
||||
| Code | Name | Category | Metronome | Default BPM | Other params |
|
||||
| ---- | ---------------------------------- | ----------- | -------------- | ----------- | ------------------ |
|
||||
| R1 | 16th-note strum, mute off-beats | Rhythm | yes | 70 | `variant` |
|
||||
| R2 | Accent patterns | Rhythm | yes | 80 | `variant` |
|
||||
| R3 | 7/8 loop (can drop to 4/4) | Rhythm | yes | 65 | `variant` |
|
||||
| R4 | One-minute chord changes | Rhythm | no (60s timer) | — | `pair` |
|
||||
| R5 | Palm-mute chugging | Rhythm | yes | 90 | `variant` |
|
||||
| F1 | Travis picking | Fingerstyle | yes | 60 | `variant` |
|
||||
| F2 | PIMA arpeggio over I–V–vi–IV | Fingerstyle | yes | 65 | `variant` |
|
||||
| F3 | Thumb-independent bass + melody | Fingerstyle | yes | 55 | `variant` |
|
||||
| T1 | Name every note on one string | Theory | yes | 60 | — |
|
||||
| T2 | CAGED shapes | Theory | no | — | `key` |
|
||||
| T3 | Triads on a 3-string set | Theory | optional | 60 | `root` |
|
||||
| T4 | Diatonic chords of a key | Theory | no | — | `key` |
|
||||
| T5 | Intervals from a root | Theory | no | — | `root`, `interval` |
|
||||
| T6 | Mode over a drone | Theory | no (drone) | — | `root`, `mode` |
|
||||
| L1 | Alternate picking builder | Lead | yes | 120 | `variant` |
|
||||
| L2 | Legato runs (triplets) | Lead | yes | 100 | `variant` |
|
||||
| L3 | String skipping | Lead | yes | 90 | `variant` |
|
||||
| L4 | Bends and vibrato (reference tone) | Lead | no | — | `note` |
|
||||
| E1 | Interval recognition | Ear | no | — | — |
|
||||
| E2 | Chord quality recognition | Ear | no | — | — |
|
||||
| E3 | Play along by ear (with drone) | Ear | no (drone) | — | — |
|
||||
|
||||
## Parameter values
|
||||
|
||||
| Param | Applies to | Valid values |
|
||||
| ---------- | -------------------------------------- | ---------------------------------------------------------------------- |
|
||||
| `bpm` | all metronome drills + T1 | integer 30–300 |
|
||||
| `variant` | R1, R2, R3, R5, F1, F2, F3, L1, L2, L3 | see per-drill list below |
|
||||
| `key` | T2, T4 | note letter, e.g. `C` `G` `D` `A` `E` `F` (T4: `G` `D` `C` `A`) |
|
||||
| `root` | T3, T5, T6 | chromatic root: `C C# D D# E F F# G G# A A# B` |
|
||||
| `interval` | T5 | `m3` `M3` `P4` `P5` `M6` `m7` `M7` |
|
||||
| `mode` | T6 | `ionian` `dorian` `phrygian` `lydian` `mixolydian` `aeolian` `locrian` |
|
||||
| `note` | L4 | chromatic note: `C C# D D# E F F# G G# A A# B` |
|
||||
| `pair` | R4 | `g-c` `c-d` `g-d` `a-d` `em-c` `am-f` `f-bm` `d-a` |
|
||||
|
||||
### Variant IDs
|
||||
|
||||
- **R1**: `quarters`, `1e-and-a-1-3`, `all-16ths`
|
||||
- **R2**: `accents-1-3`, `accents-2-4`, `every-3rd`
|
||||
- **R3**: `2-2-3`, `3-2-2`, `2-3-2`, `drop-4-4`
|
||||
- **R5**: `chug`, `gallop`
|
||||
- **F1**: `classic`
|
||||
- **F2**: `ascending`, `descending`
|
||||
- **F3**: `preset-1`
|
||||
- **L1**: `single-string`, `two-string`
|
||||
- **L2**: `ham-pull`
|
||||
- **L3**: `skip-1`
|
||||
|
||||
## Example links
|
||||
|
||||
```
|
||||
# Rhythm at a pinned tempo + variant
|
||||
https://guitar.basdado.com/drill/R1?bpm=72&variant=quarters
|
||||
https://guitar.basdado.com/drill/R3?bpm=66&variant=2-3-2
|
||||
|
||||
# Chord changes on a specific pair (R4 tracks a best score locally)
|
||||
https://guitar.basdado.com/drill/R4?pair=f-bm
|
||||
|
||||
# Theory
|
||||
https://guitar.basdado.com/drill/T4?key=D
|
||||
https://guitar.basdado.com/drill/T5?root=A&interval=P5
|
||||
https://guitar.basdado.com/drill/T6?root=A&mode=dorian
|
||||
|
||||
# Lead reference pitch for bend practice
|
||||
https://guitar.basdado.com/drill/L4?note=C
|
||||
```
|
||||
|
||||
## Using this in my practice management
|
||||
|
||||
- **Session plans / reminders.** Assemble a short interleaved set (mix categories —
|
||||
don't stack three lead drills) and give me each as a link at its current tempo.
|
||||
Example daily nudge: "10 min — [R1 @72](…/drill/R1?bpm=72&variant=quarters),
|
||||
[F2 @66](…/drill/F2?bpm=66&variant=ascending), [T5 A/P5](…/drill/T5?root=A&interval=P5)."
|
||||
- **Tempo ladder.** Keep a per-drill clean BPM in your diary. Serve at that tempo;
|
||||
on a clean report, +2 for next time; on a struggle, hold or −2.
|
||||
- **R4 scores.** The app stores a best score per chord pair on the device. Ask me
|
||||
the number after a run and log it yourself so you can chart progress across pairs.
|
||||
- **Interleaving + active recall.** Prefer rotating drills and cold retrieval
|
||||
(especially T1/T5) over repeating one thing; vary the `variant`/`root`/`key` you
|
||||
send so I'm tested rather than looping.
|
||||
- **Diary hooks.** Good things to record per session: which drills, tempos, whether
|
||||
clean, R4 scores, and anything I say felt hard — then adjust the next plan.
|
||||
|
||||
## Constraints
|
||||
|
||||
- Static site: no login, no API, no push. You cannot read or write app state; drive
|
||||
everything through links and your own records.
|
||||
- Settings persist per browser/device via `localStorage`, so state does not follow
|
||||
me across devices — always pin settings in the URL to be safe.
|
||||
- Audio needs a tap/click to start (mobile autoplay policy); the metronome keeps the
|
||||
screen awake while playing.
|
||||
Reference in New Issue
Block a user