Nota

AI coding plugin (Claude Code & opencode) for algorithmic composition with MusaDSL — learn the framework, code compositions, explore ideas, analyze music

10 interactive skills
Knowledge base + semantic search
Open Source · GPL 3.0
Claude Code & opencode

About Nota

Nota transforms your AI coding agent — Claude Code or opencode — into an algorithmic-composition assistant with deep knowledge of the MusaDSL framework. Ten interactive skills cover the entire creative process — from understanding the framework, through brainstorming ideas, to writing verified code, analyzing the results, and consolidating best practices.

Everything is backed by a knowledge base with MusaDSL documentation, API reference, 23 demo projects, 23 built-in composition best practices, and — optionally — your own compositions and their musical analyses.

Say "hello musa" inside Claude Code (or just ask for a capabilities overview in opencode) to get a welcome tour.

Who is it for?

  • Composers learning MusaDSL — ask questions in natural language, get sourced answers.
  • Working algorithmic composers — describe a musical intention, get verified code.
  • Researchers — build a searchable knowledge base of your own compositions and analyses.
  • Anyone exploring computer music who wants their AI coding agent to be domain-aware rather than guessing.

The 10 Skills

Core composition workflow

/nota:explain

Semantic search over MusaDSL. Ask about any concept and get an accurate, sourced answer with relevant documentation, API details, and working code examples retrieved from the knowledge base.

/nota:think

Creative thinking and ideation. Generates ideas for new compositions or explores new directions for existing ones. Draws from the inspiration framework, your previous analyses, the MusaDSL knowledge base, and the open web to connect ideas to composers, techniques and traditions with accurate references.

/nota:code

Composition coding. Translates musical intentions into working MusaDSL Ruby code. Verifies every method call against the API, draws from demo examples and your own indexed works, and always proposes the approach before writing.

/nota:index

Works indexing. Add your composition projects so Claude can reference them. All .rb and .md files are indexed recursively; once indexed, your works appear in search results and inform every other skill.

/nota:analyze

Musical analysis. Reads your code, interprets it musically, and produces a detailed structured analysis across 10 default dimensions. The analysis is stored as searchable knowledge, enriching every future /nota:think, /nota:code and /nota:explain session.

/nota:best-practices

Best practices management. Extract recurring patterns from your analyses into reusable best practices, or add them manually. /nota:code automatically consults them when writing new code, so your consolidated patterns are applied consistently.

Framework customization

/nota:inspiration-framework

View, modify or reset the inspiration framework that guides /nota:think. The default has 9 dimensions: Structure, Time, Pitch, Algorithm, Texture, Instrumentation, Reference, Dialogue, Constraint. Add your own dimensions or rewrite them entirely.

/nota:analysis-framework

View, modify or reset the analysis framework that guides /nota:analyze. The default has 10 dimensions: Formal Structure, Harmonic and Modal Language, Rhythmic and Temporal Strategy, Generative Strategy, Texture and Instrumentation, Idiomatic Usage, Relation to Other Artists, Notable Technical Patterns, Coding Best Practices, Conclusion. Customize per your compositional priorities.

Onboarding & operations

/nota:hello

Welcome and capabilities overview. Start here when interacting with Nota for the first time, or trigger it by saying "hello musa".

/nota:setup

Plugin configuration and troubleshooting. Verifies the Voyage AI API key, checks knowledge base download, confirms MCP server connectivity. Run this after install.

In both Claude Code and opencode, you can invoke any skill with /nota:<skill> (e.g. /nota:explain), or simply describe your task and the model picks the right skill automatically (model-invoked — no slash command needed).

Knowledge bases

Nota's depth comes from two SQLite-vec databases queried with Voyage AI embeddings, which let every skill ground its output in concrete sources rather than the model's general knowledge.

Database Scope Storage
knowledge.db MusaDSL documentation, API reference, 23 demo projects, 23 built-in composition best practices. Downloaded to ~/.config/nota/, refreshed when a new index is published.
private.db Your indexed compositions (added with /nota:index), their musical analyses (created with /nota:analyze), and your custom best practices (/nota:best-practices). Search across them as easily as the public docs. Local, in ~/.config/nota/. Never leaves your machine.

Both databases use sqlite-vec for vector storage and Voyage AI for high-quality multilingual code-aware embeddings. The plugin's MCP server exposes a search tool that every skill consults transparently.

Workflow loop

Skills feed into each other. Used together, they form a virtuous loop where each composition enriches the assistant for the next one:

/nota:think/nota:code/nota:index/nota:analyze/nota:best-practices → back to /nota:think

  • Think — explore ideas across the inspiration dimensions, informed by your past work.
  • Code — turn the idea into verified MusaDSL code, consulting docs, demos and best practices.
  • Index — add the finished composition to your private knowledge base.
  • Analyze — generate a structured musical analysis of the work.
  • Best-practices — extract recurring patterns from your analyses into reusable practices.
  • Think again — now your future ideation draws from a richer corpus.

The more you compose and analyze, the more domain-aware Nota becomes for your specific style.

Getting Started

Prerequisites

  • Ruby 3.1+ — the plugin's MCP server is Ruby, built for your platform.
  • A Voyage AI API key. The free tier is sufficient for personal use.

Proven on macOS and on Windows, the latter with a Ruby built for x64 and from 1.0.3 on. Linux should work but is not confirmed.

Install

1. Add your API key

Nota's MCP server runs as a subprocess of your coding agent, and inherits the environment of whatever launched it. Set the key in two places: the session you have open now, and every session from now on.

# this session
export VOYAGE_API_KEY="your-key-here"

# every session from now on
echo 'export VOYAGE_API_KEY="your-key-here"' >> ~/.zshrc

zsh, the default on macOS. Under bash, the second line goes to ~/.bash_profile.

# this session
export VOYAGE_API_KEY="your-key-here"

# every session from now on
echo 'export VOYAGE_API_KEY="your-key-here"' >> ~/.bashrc

bash, the usual default. Under zsh, the second line goes to ~/.zshrc.

PowerShell

# this session
$env:VOYAGE_API_KEY = 'your-key-here'

# every session from now on
[Environment]::SetEnvironmentVariable('VOYAGE_API_KEY', 'your-key-here', 'User')

cmd

:: this session
set VOYAGE_API_KEY=your-key-here

:: every session from now on
setx VOYAGE_API_KEY "your-key-here"

2. Install the plugin

  1. Start Claude Code from the terminal where you set the key:
    claude
  2. Add the yeste.studio marketplace:
    /plugin marketplace add javier-sy/claude-plugins
  3. Install the plugin:
    /plugin install nota@yeste.studio
  4. Finish the setup:
    /nota:setup

    It reports what is still missing and installs it — about 30 MB, once. Your own Ruby is not touched.

  5. Leave Claude Code. The knowledge base server only starts with a new session:
    /exit
  6. Come back to the same conversation:
    claude --continue
On hold

Nota is available for Claude Code only. The opencode channel is on hold: npm serves an old release under the previous name (nota-plugin-for-opencode 0.11.1), from before most of what Nota does now.

First questions

Say "hello musa" for the welcome tour, or go straight to /nota:explain how does the sequencer work?

What gets downloaded

Everything lands in ~/.config/nota/, and /nota:setup brings all of it: the Ruby dependencies the knowledge base runs on, the 200 KB sqlite-vec extension, and the latest knowledge.db — MusaDSL documentation, API reference, demos and best practices, pre-indexed with their Voyage embeddings. Your private.db is created empty the first time you index a work of your own; nothing private leaves your machine.

Repository

Source code and detailed README: javier-sy/nota-plugin

Troubleshooting

Symptom Likely cause / fix
/nota:setup says Voyage key missing The key is not in the environment your agent was launched from. Set it, then reopen Claude Code or opencode from a terminal that has it.
Knowledge base did not download Check internet connectivity; /nota:setup retries the download.
Search returns empty results The plugin may not have indexed your local works yet — run /nota:index on the project root.
Could not find mcp-… / sqlite3-… in locally installed gems The knowledge base server says this and stops, which is what it is meant to do: the gems are installed by /nota:setup, not on startup. Run it, then start Claude Code again — claude --continue keeps the conversation. Reloading plugins does not restart an MCP server.
The session says the platform is not supported Windows on ARM: neither sqlite3 nor sqlite-vec publishes a build for it. Install a Ruby built for x64 — Windows runs it under emulation — and set NOTA_RUBY to its ruby.exe so your other Ruby work keeps the interpreter you have.
The sqlite-vec extension did not download The knowledge base cannot open without it. Check internet connectivity and reopen the session; /nota:setup reports the path it resolved and retries.
Missing environment variables: HOME, and no Nota tools available Nota 1.0.1 and earlier on Windows. Update the plugin — 1.0.2 no longer asks the editor where your home directory is.
MCP server connection failing Run /nota:setup: it reports the Ruby side, the key, the extension and both databases, and names which one is missing.

If installation fails on your platform, please tell me — especially on Linux or Windows. Open an issue at javier-sy/nota-plugin with your operating system, the output of ruby -v, and what /nota:setup reports.

Author

Nota is created and maintained by yeste.studio, exploring the intersection of sound, music, technology, and algorithmic composition. It is part of the MusaDSL family of projects.

LGPL 3.0 License

Source code on GitHub.