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 skills add kennethreitz/pytheory-skill --skill chord-lab-with-pytheorygit clone --depth 1 https://github.com/kennethreitz/pytheory-skillWrote 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/kennethreitz/pytheory-skill/chord-lab-with-pytheory)<a href="https://agentmods.dev/skills/kennethreitz/pytheory-skill/chord-lab-with-pytheory"><img src="https://agentmods.dev/badge/skills/kennethreitz/pytheory-skill/chord-lab-with-pytheory/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/kennethreitz/pytheory-skill/chord-lab-with-pytheory"><img src="https://agentmods.dev/badge/skills/kennethreitz/pytheory-skill/chord-lab-with-pytheory.svg" alt="Reviewed on agentmods" width="80" 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.1 | $0.00114 | $0.02231 |
| Opus 5 | $0.00057 | $0.01115 |
| Sonnet 5 | $0.00023 | $0.00446 |
| Haiku 4.5 | $0.00011 | $0.00223 |
Grade A, and why
chord-lab-with-pytheory 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 11d 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.
This is a copy
100% identical to chord-lab-with-pytheory — 0 lines differ, which has more behind it and is treated as the original. This page carries a canonical link to it rather than competing with it.
How it starts
The opening of the file, as written. The whole thing — 178 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Chord Lab
Everything about a single chord — construction, voicing, and analysis.
Build a chord
from pytheory import Chord
Chord.from_symbol("F#m7b5") # widest parser: sus, add9, alterations, slash
Chord.from_name("Am") # plain names (major/minor/7/maj7/dim/…)
Chord.from_intervals("C", 0, 4, 7) # root + semitone intervals
Chord.from_tones("C", "E", "G") # explicit notes
A Chord has .symbol, .tones (list of Tone), .root, and
.transpose(semitones).
Voicings
inversion, drop2, drop3, and open_voicing return a new Chord. The
chord symbol stays the same — the change is in the tones (order/octave), so
inspect .tones:
c = Chord.from_symbol("Cmaj7")
[str(t) for t in c.tones] # ['C4', 'E4', 'G4', 'B4']
[str(t) for t in c.inversion(1).tones] # ['E4', 'G4', 'B4', 'C5']
[str(t) for t in c.drop2().tones] # ['G3', 'C4', 'E4', 'B4']
[str(t) for t in c.open_voicing().tones] # ['C4', 'E5', 'G4', 'B5']
drop3() exists too. Use these to spread a close voicing for piano/strings/guitar.
Analysis
c = Chord.from_symbol("Cmaj7")
c.intervals # [4, 3, 4] semitone steps between stacked tones
c.pitch_classes # {0, 4, 7, 11}
c.forte_number # '4-20' set-theory label
c.figured_bass # '7'
c.extensions() # [<Tone D5>, <Tone A5>] available 9/11/13 tones
c.tension # {'score': 0.15, 'tritones': 0, 'minor_seconds': 1,
# 'has_dominant_function': False}
c.dissonance # 5.33 (a roughness number; higher = more dissonant)
c.beat_frequencies # [(Tone, Tone, hz), …] beating between pairs in ET
Pitch-class-set toolkit
c = Chord.from_symbol("Cmaj7")
c.normal_form # (11, 0, 4, 7) most compact ordering
c.prime_form # (0, 1, 5, 8) canonical set-class form
c.interval_vector # (1, 0, 1, 2, 2, 0) interval-class content <ic1..ic6>
c.complement # Chord of the other 8 pitch classes
# Set-class relationships between two chords:
Chord.from_symbol("C").is_transposition_of(Chord.from_symbol("G")) # True (Tn)
Chord.from_symbol("C").is_set_class_equivalent(Chord.from_symbol("Cm")) # True (TnI: maj/min)
Chord.from_symbol("C").is_subset_of(Chord.from_symbol("Cmaj7")) # True
# Z-relation — same interval vector, different set class (e.g. 4-z15 / 4-z29):
a, b = Chord.from_midi_message(0,1,4,6), Chord.from_midi_message(0,1,3,7)
a.is_z_related(b) # True
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.
- 11d ago First seen · 178 lines · 114 tokens per session scan A efe7f258946c
chord-lab-with-pytheory is a skill published in the GitHub repository kennethreitz/pytheory-skill (3 stars, last pushed 2mo ago), licensed MIT. It adds 114 tokens to every session and 2,231 once invoked, about $0.0006 per session on Opus 5. A static security scan graded it A with 0 findings. It is 100% identical to chord-lab-with-pytheory, differing in 0 lines, and is treated as a copy.
Other skills, from other repositories
webgl-holographic-foil
A self-contained WebGL2 hero: thin-film interference over a crushed-foil surface whose palette shifts with the viewing angle; move the cursor to tilt the film.
general-video
Author or edit a custom HyperFrames composition when no specialized workflow fits, or when BRIEF.md sets flow: companion. Use for longer or multi-scene pieces, brand and sizzle reels, montages, static loops, static title cards, footage remixes, and freeform builds. Use motion-graphics instead for a short unnarrated…
html-ppt-hermes-cyber-terminal
OpenDesign + BYOK: choosing and wiring your own model, hands-on — cost, quality, and the routing decision. Built as a decision-grade AI literacy deck for engineers, IT, applied-AI teams.
html-ppt-taste-brutalist
16:9 HTML deck in tactical-telemetry / CRT-terminal taste. Deactivated-CRT charcoal slides, white-phosphor monospace, hazard-red accent, scanline overlay, ASCII syntax, density over decoration. Distilled from Leonxlnx/taste-skill brutalist-skill (Tactical Telemetry mode).
chengfeng-check-updates
An environment manager for a video-editing system. It checks whether its skills and runtime—the software needed to run them—are installed and compatible.
diagnostic-stem-delivery
Audio production with diagnostic analysis, timecode parsing from documents, and verified export workflow.