claude/ai-resources-plugin/skills/shama-init-config/SKILL.md
Initialize Shama voice-to-text config for the project — create voice.json, voice-vocabulary.md, voice-context.md, and register the project in Shama's registry.toml.
npx skillsauth add amhuppert/my-ai-resources shama-init-configInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Create a local voice.json config, a voice-vocabulary.md vocabulary file, and a voice-context.md context file in the current directory, then register the project in Shama's app-level registry.toml so the app can find it. These cover the clipboard-mode baseline (Control+Option+Space); advanced options — cleanup instructions and shell-command mode (Control+Option+S) — are listed in Step 3 and can be added later via /shama-add-context.
Shama is the resident macOS voice-to-text app. You don't run it per-directory: it runs in the background and switches between projects you've registered in registry.toml, selected from its tray menu.
voice-vocabulary.md as vocabulary hints to help the transcription model accurately recognize domain-specific words.voice-context.md for project knowledge (descriptions, terminology, naming conventions). The vocabulary file is included as additional reference.Research the current project to collect:
Sources to check (read what exists, skip what doesn't):
README.md, package.json, Cargo.toml, pyproject.toml, or equivalentCLAUDE.md, .kiro/steering/product.md, .kiro/steering/tech.mdFor Claude Code commands, skills, and agents, scan these locations:
.claude/commands/*.md — Project-level slash commands. Read YAML frontmatter for name and description.**/.claude-plugin/plugin.json (skip node_modules, dist, and other build artifact directories). For each plugin found:
{plugin-dir}/skills/*/SKILL.md — Plugin skills. Read YAML frontmatter for name and description.{plugin-dir}/agents/**/*.md — Plugin agents. Read YAML frontmatter for name and description. Use the filename (without .md) as the agent name if no name field exists.Write voice-vocabulary.md in the current directory: a flat list of terms, one per line, with no markdown structure, headers, or descriptions — just each bare term with its exact spelling and capitalization. Include:
/shama-init-config)Example:
TypeScript
Zod
Bun
Commander.js
Claude Code
CLAUDE.md
ResolvedFileRef
ConfigSchema
/shama-init-config
/shama-add-context
Write voice-context.md in the current directory with the following structure:
# Voice Context
## Project
{1-2 sentence description of the project}
## Technologies
{Bulleted list of technologies, libraries, and tools with exact spelling. Include the name as it should appear in text.}
## Terminology
{Bulleted list of project-specific terms, acronyms, and jargon. Format: **Term** - brief definition. Focus on words a speech transcriber is likely to mishear or misspell.}
## Naming Conventions
{Brief note on casing conventions and important identifiers that should be preserved exactly.}
## Claude Commands & Skills
{List all slash commands, skills, and agents available in the project. Group by type (Commands, Skills, Agents). Format each as: **/{name}** - one-line description.}
Guidelines for both files:
Write voice.json in the current directory:
{
"contextFile": "./voice-context.md",
"vocabularyFile": "./voice-vocabulary.md"
}
This sets the context and vocabulary file paths for clipboard mode. Any keys not set here fall back to the global config at ~/.voice/voice.json, then to Shama's built-in defaults.
Additional optional keys (not scaffolded by default — add via /shama-add-context if and when needed):
instructionsFile — formatting rules controlling how clipboard cleanup formats text (bullet style, code preservation, structural rules)shellContextFile, shellVocabularyFile, shellInstructionsFile — for voice-driven shell-command mode (Control+Option+S)claudeModel / shellClaudeModel — override the cleanup model for each modemaxRecordingDuration (seconds), beepEnabled, notificationEnabled — per-project scalar overrides (local wins over global)Shama only sees projects listed in its app-level registry. Add this project to it.
~/Library/Application Support/Shama/registry.toml$XDG_CONFIG_HOME/shama/registry.toml (fallback ~/.config/shama/registry.toml)id — a unique, stable, kebab-case identifier. Default to the project directory name (e.g., my-ai-resources).name — a human-readable name shown in the tray menu (e.g., from package.json name, the repo name, or a title-cased directory name).project_root — the absolute path to the current directory (Shama resolves <project_root>/voice.json). Use ~/-prefixed or absolute; ~ and env vars are expanded.registry.toml if it exists:
[[project]] entry already points at this project (same id, or a project_root/voice_json resolving here), do not add a duplicate. Tell the user it's already registered; offer to update its name if it changed. (Shama ignores duplicate ids — it keeps the first and logs a warning.)mkdir -p the parent, then create the file).[[project]] entry:
[[project]]
id = "my-ai-resources"
name = "My AI Resources"
project_root = "/Users/alex/github/my-ai-resources"
Each entry must specify exactly one of project_root or voice_json. Use project_root here since voice.json lives at the project root. Use voice_json = "/abs/path/voice.json" instead only when the config lives elsewhere.Shama polls registry.toml by mtime every ~5 seconds while idle, so the project appears in the tray menu within seconds — no app restart needed.
After creating the files and registering the project, display:
voice-vocabulary.md and voice-context.md contentvoice.json was createdregistry.toml (show the [[project]] entry), or that it was already registered/shama-add-context for adding them laterdevelopment
Debug a running web app via the web-debugger SDK: app logs, application state, runtime snapshots, React state, query cache.
development
Thoroughly understand a software development objective before implementation: research, identify ambiguities, ask clarifying questions. Use before starting implementation of a non-trivial or ambiguously specified feature, or when requirements leave open design decisions.
development
Locate the on-disk Claude Code transcript file (.jsonl under ~/.claude/projects/) for the current or a specified conversation.
development
Reflect on codebase navigation effectiveness at end of conversation. Surfaces dead ends, inefficiencies, missing context. Does not write files — pair with /kiro:steering-custom to persist.