name: consume-music
description: >
Search and annotate music from ingested YouTube history.
Uses Horus Music Taxonomy (HMT) for bridge-based memory integration.
Enables episodic associations linking music to lore events.
triggers:
- consume music
- search music
- music notes
- find music for
- music for scene
- music taxonomy
allowed-tools:
- Bash
- Python
metadata:
short-description: Consume music - search, HMT taxonomy, episodic lore links
provides:
- consume-music
composes: [, task-monitor]
Consume Music Skill
Search and annotate ingested music using Horus Music Taxonomy (HMT). Works with content already processed by /ingest-yt-history.
Quick Start
cd .pi/skills/consume-music
# Sync from ingest-yt-history
./run.sh sync
# Search music by title/artist
./run.sh search "Chelsea Wolfe"
# Find music matching a bridge attribute
./run.sh find --bridge Fragility
# Find music for a lore episode
./run.sh episode "Siege of Terra"
# Find music for a scene description
./run.sh scene "The Imperial Fists prepare for the final defense"
# Add a note to a track
./run.sh note --track <track_id> --note "Perfect for Webway collapse scene"
# Sync HMT tags to /memory
./run.sh memory-sync
Commands
Sync from Ingest
./run.sh sync [--ingest-root ~/.pi/ingest-yt-history]
Imports music entries from /ingest-yt-history and extracts HMT taxonomy tags.
Search Music
./run.sh search <query> [--artist <name>] [--domain <genre>] [--limit <n>]
Search music by title, artist, or domain (genre).
Find by Bridge
./run.sh find --bridge <attribute> [--limit <n>]
Find music matching a Federated Taxonomy bridge attribute:
Precision - Technical, polyrhythmic (Iron Warriors aesthetic)
Resilience - Triumphant, enduring (Imperial Fists aesthetic)
Fragility - Delicate, breaking (Webway aesthetic)
Corruption - Distorted, industrial (Chaos aesthetic)
Loyalty - Ceremonial, sacred (Oaths of Moment)
Stealth - Ambient, drone (Alpha Legion aesthetic)
Find for Episode
./run.sh episode <episode_name> [--limit <n>]
Find music matching a lore episode:
Siege_of_Terra - Resilience bridge
Davin_Corruption - Corruption bridge
Webway_Collapse - Fragility bridge
Mournival_Oath - Loyalty bridge
Iron_Cage - Precision bridge
Sanguinius_Fall - Fragility bridge
Find for Scene
./run.sh scene "<description>" [--limit <n>]
Find music matching a scene description. Uses HMT verifier to score candidates.
Add Note
./run.sh note --track <track_id> --note <text> [--agent <agent_id>]
Add a Horus note to a music track.
Sync to Memory
./run.sh memory-sync [--force]
Sync music entries with HMT taxonomy tags to /memory:
- category:
music
- collection_tags:
{domain, thematic_weight, function}
- bridge_attributes:
[Resilience, Fragility, ...]
- tactical_tags:
[Score, Recall, ...]
Build Profile
./run.sh profile [--output <file>]
Build taste profile with:
top_bridge_attributes: Most frequent bridges
top_domains: Most frequent genres
top_artists: Most played artists
episodic_associations: Which episodes have strong music associations
Memory + Taxonomy Integration
Follows the canonical create-context/memory_integration.py pattern with graceful degradation.
Pre-hook: recall_prior_annotations(query, k=5)
- Recalls prior music annotations before search to surface previously tagged tracks
- Wired into
search.py to inform search results with memory context
- Enables cumulative taste profile building across sessions
Post-hook: learn_annotation(track_title, artist, annotation, hmt_tags, persona_id)
- Stores track annotation (title, artist, HMT tags, bridge attributes)
- Stores persona taste association when persona_id is provided
- Tags:
["consume_music", persona_id] + bridges + hmt_tags[:3]
- Wired into
notes.py (on note add) and ingest_bridge.py (on sync)
Bridge Keywords (keyword fallback, tuned for music)
| Bridge |
Keywords |
| Precision |
rhythm, tempo, technique, polyrhythm, algorithmic, technical |
| Resilience |
resolution, harmony, triumphant, enduring, crescendo, epic |
| Fragility |
dissonance, distortion, delicate, acoustic, breaking, ethereal |
| Corruption |
noise, industrial, harsh, chaos, warp, distorted |
| Loyalty |
ceremonial, choral, sacred, devotion, oath |
| Stealth |
ambient, drone, minimalist, atmospheric, subtle |
| Transcendence |
post-rock, shoegaze, expansive, reverb, layered |
| Defiance |
aggressive, rebellion, punk, thrash, rage |
Graceful Degradation
- Uses
try/except ImportError at every hook callsite
- Falls back to keyword-based bridge extraction when taxonomy module unavailable
- All hooks are no-ops when
common.memory_client is not importable
Data Storage
| Data |
Location |
| Music registry |
~/.pi/consume-music/registry.json |
| Notes |
~/.pi/consume-music/notes/<agent_id>/notes.jsonl |
| Profile |
~/.pi/consume-music/profile.json |
| HMT cache |
~/.pi/consume-music/hmt_cache.json |
Integration with /memory
Music entries are stored in /memory with full HMT taxonomy:
./memory/run.sh learn \
--problem "Music: Chelsea Wolfe - Carrion Flowers" \
--solution "Dark folk/doom. Bridge: Fragility. Episode: Webway_Collapse, Sanguinius_Fall" \
--category music \
--tags chelsea_wolfe,dark_folk,doom,fragility,webway
Querying from /memory
After sync, Horus can recall music via:
# By bridge attribute
/memory recall --bridge Resilience --collection music
# By episode
/memory recall --episode "Siege of Terra" --collection music
# By mood for scene
/memory recall --scene "battle preparation" --collection music
Horus Music Taxonomy (HMT)
Located at: /home/graham/workspace/experiments/memory/persona/bridge/horus_music_taxonomy.py
Tier 0: Bridge Attributes (cross-collection)
| Bridge |
Lore Connection |
Music Indicators |
| Precision |
Iron Warriors, Perturabo |
polyrhythm, technical, algorithmic |
| Resilience |
Imperial Fists, Dorn |
crescendo, triumphant, enduring |
| Fragility |
Webway, Magnus's Folly |
delicate, acoustic, breaking |
| Corruption |
Warp, Chaos, Davin |
distorted, industrial, harsh |
| Loyalty |
Oaths of Moment, Loken |
ceremonial, choral, sacred |
| Stealth |
Alpha Legion, Alpharius |
ambient, drone, minimalist |
Tier 1: Tactical Tags
| Tag |
Use |
| Score |
Movie/story soundtrack |
| Recall |
Trigger memory/association |
| Amplify |
Intensify existing emotion |
| Contrast |
Emotional counterpoint |
| Immerse |
Create atmosphere |
| Signal |
Mark narrative transition |
Tier 3: Collection Tags
- Function: Battle, Mourning, Triumph, Contemplation, Corruption, Resilience
- Domain: Orchestral_Epic, Dark_Folk, Doom_Metal, Progressive_Metal, Atmospheric_Ambient
- Thematic: Melancholic, Epic, Ominous, Brutal, Ethereal, Tragic
File Structure
| File |
Purpose |
SKILL.md |
This file |
run.sh |
Execution entry point |
sanity.sh |
Health check |
__init__.py |
Package marker |
search.py |
Music search with memory pre-hook |
list.py |
List music catalog |
notes.py |
Add/list notes with memory post-hook |
ingest_bridge.py |
Sync from ingest-yt-history with memory post-hook |
memory_integration.py |
Memory + Taxonomy hooks (pre/post) |
1---2name: consume-music-23description: Search and annotate ingested music using Horus Music Taxonomy (HMT). Works with content already processed by /ingest-yt-history.4---56---7name: consume-music8description: >9 Search and annotate music from ingested YouTube history.10 Uses Horus Music Taxonomy (HMT) for bridge-based memory integration.11 Enables episodic associations linking music to lore events.12triggers:13 - consume music14 - search music15 - music notes16 - find music for17 - music for scene18 - music taxonomy19allowed-tools:20 - Bash21 - Python22metadata:23 short-description: Consume music - search, HMT taxonomy, episodic lore links2425provides:26 - consume-music27composes: [, task-monitor]28---2930# Consume Music Skill3132Search and annotate ingested music using Horus Music Taxonomy (HMT). Works with content already processed by `/ingest-yt-history`.3334## Quick Start3536```bash37cd .pi/skills/consume-music3839# Sync from ingest-yt-history40./run.sh sync4142# Search music by title/artist43./run.sh search "Chelsea Wolfe"4445# Find music matching a bridge attribute46./run.sh find --bridge Fragility4748# Find music for a lore episode49./run.sh episode "Siege of Terra"5051# Find music for a scene description52./run.sh scene "The Imperial Fists prepare for the final defense"5354# Add a note to a track55./run.sh note --track <track_id> --note "Perfect for Webway collapse scene"5657# Sync HMT tags to /memory58./run.sh memory-sync59```6061## Commands6263### Sync from Ingest6465```bash66./run.sh sync [--ingest-root ~/.pi/ingest-yt-history]67```6869Imports music entries from `/ingest-yt-history` and extracts HMT taxonomy tags.7071### Search Music7273```bash74./run.sh search <query> [--artist <name>] [--domain <genre>] [--limit <n>]75```7677Search music by title, artist, or domain (genre).7879### Find by Bridge8081```bash82./run.sh find --bridge <attribute> [--limit <n>]83```8485Find music matching a Federated Taxonomy bridge attribute:86- `Precision` - Technical, polyrhythmic (Iron Warriors aesthetic)87- `Resilience` - Triumphant, enduring (Imperial Fists aesthetic)88- `Fragility` - Delicate, breaking (Webway aesthetic)89- `Corruption` - Distorted, industrial (Chaos aesthetic)90- `Loyalty` - Ceremonial, sacred (Oaths of Moment)91- `Stealth` - Ambient, drone (Alpha Legion aesthetic)9293### Find for Episode9495```bash96./run.sh episode <episode_name> [--limit <n>]97```9899Find music matching a lore episode:100- `Siege_of_Terra` - Resilience bridge101- `Davin_Corruption` - Corruption bridge102- `Webway_Collapse` - Fragility bridge103- `Mournival_Oath` - Loyalty bridge104- `Iron_Cage` - Precision bridge105- `Sanguinius_Fall` - Fragility bridge106107### Find for Scene108109```bash110./run.sh scene "<description>" [--limit <n>]111```112113Find music matching a scene description. Uses HMT verifier to score candidates.114115### Add Note116117```bash118./run.sh note --track <track_id> --note <text> [--agent <agent_id>]119```120121Add a Horus note to a music track.122123### Sync to Memory124125```bash126./run.sh memory-sync [--force]127```128129Sync music entries with HMT taxonomy tags to `/memory`:130- category: `music`131- collection_tags: `{domain, thematic_weight, function}`132- bridge_attributes: `[Resilience, Fragility, ...]`133- tactical_tags: `[Score, Recall, ...]`134135### Build Profile136137```bash138./run.sh profile [--output <file>]139```140141Build taste profile with:142- `top_bridge_attributes`: Most frequent bridges143- `top_domains`: Most frequent genres144- `top_artists`: Most played artists145- `episodic_associations`: Which episodes have strong music associations146147## Memory + Taxonomy Integration148149Follows the canonical `create-context/memory_integration.py` pattern with graceful degradation.150151### Pre-hook: `recall_prior_annotations(query, k=5)`152- Recalls prior music annotations before search to surface previously tagged tracks153- Wired into `search.py` to inform search results with memory context154- Enables cumulative taste profile building across sessions155156### Post-hook: `learn_annotation(track_title, artist, annotation, hmt_tags, persona_id)`157- Stores track annotation (title, artist, HMT tags, bridge attributes)158- Stores persona taste association when persona_id is provided159- Tags: `["consume_music", persona_id] + bridges + hmt_tags[:3]`160- Wired into `notes.py` (on note add) and `ingest_bridge.py` (on sync)161162### Bridge Keywords (keyword fallback, tuned for music)163| Bridge | Keywords |164|--------|----------|165| Precision | rhythm, tempo, technique, polyrhythm, algorithmic, technical |166| Resilience | resolution, harmony, triumphant, enduring, crescendo, epic |167| Fragility | dissonance, distortion, delicate, acoustic, breaking, ethereal |168| Corruption | noise, industrial, harsh, chaos, warp, distorted |169| Loyalty | ceremonial, choral, sacred, devotion, oath |170| Stealth | ambient, drone, minimalist, atmospheric, subtle |171| Transcendence | post-rock, shoegaze, expansive, reverb, layered |172| Defiance | aggressive, rebellion, punk, thrash, rage |173174### Graceful Degradation175- Uses `try/except ImportError` at every hook callsite176- Falls back to keyword-based bridge extraction when taxonomy module unavailable177- All hooks are no-ops when `common.memory_client` is not importable178179## Data Storage180181| Data | Location |182|------|----------|183| Music registry | `~/.pi/consume-music/registry.json` |184| Notes | `~/.pi/consume-music/notes/<agent_id>/notes.jsonl` |185| Profile | `~/.pi/consume-music/profile.json` |186| HMT cache | `~/.pi/consume-music/hmt_cache.json` |187188## Integration with /memory189190Music entries are stored in `/memory` with full HMT taxonomy:191192```bash193./memory/run.sh learn \194 --problem "Music: Chelsea Wolfe - Carrion Flowers" \195 --solution "Dark folk/doom. Bridge: Fragility. Episode: Webway_Collapse, Sanguinius_Fall" \196 --category music \197 --tags chelsea_wolfe,dark_folk,doom,fragility,webway198```199200## Querying from /memory201202After sync, Horus can recall music via:203204```bash205# By bridge attribute206/memory recall --bridge Resilience --collection music207208# By episode209/memory recall --episode "Siege of Terra" --collection music210211# By mood for scene212/memory recall --scene "battle preparation" --collection music213```214215## Horus Music Taxonomy (HMT)216217Located at: `/home/graham/workspace/experiments/memory/persona/bridge/horus_music_taxonomy.py`218219### Tier 0: Bridge Attributes (cross-collection)220| Bridge | Lore Connection | Music Indicators |221|--------|-----------------|------------------|222| Precision | Iron Warriors, Perturabo | polyrhythm, technical, algorithmic |223| Resilience | Imperial Fists, Dorn | crescendo, triumphant, enduring |224| Fragility | Webway, Magnus's Folly | delicate, acoustic, breaking |225| Corruption | Warp, Chaos, Davin | distorted, industrial, harsh |226| Loyalty | Oaths of Moment, Loken | ceremonial, choral, sacred |227| Stealth | Alpha Legion, Alpharius | ambient, drone, minimalist |228229### Tier 1: Tactical Tags230| Tag | Use |231|-----|-----|232| Score | Movie/story soundtrack |233| Recall | Trigger memory/association |234| Amplify | Intensify existing emotion |235| Contrast | Emotional counterpoint |236| Immerse | Create atmosphere |237| Signal | Mark narrative transition |238239### Tier 3: Collection Tags240- **Function**: Battle, Mourning, Triumph, Contemplation, Corruption, Resilience241- **Domain**: Orchestral_Epic, Dark_Folk, Doom_Metal, Progressive_Metal, Atmospheric_Ambient242- **Thematic**: Melancholic, Epic, Ominous, Brutal, Ethereal, Tragic243244## File Structure245246| File | Purpose |247|------|---------|248| `SKILL.md` | This file |249| `run.sh` | Execution entry point |250| `sanity.sh` | Health check |251| `__init__.py` | Package marker |252| `search.py` | Music search with memory pre-hook |253| `list.py` | List music catalog |254| `notes.py` | Add/list notes with memory post-hook |255| `ingest_bridge.py` | Sync from ingest-yt-history with memory post-hook |256| `memory_integration.py` | Memory + Taxonomy hooks (pre/post) |