IVR/contact center prompt generation CLI tool. Go + Cobra, following the same conventions as webex-cli.
make build # Build binary
make check # Build + go vet
go test ./... # Run tests
go vet ./... # Static analysiscmd/— Cobra command definitions (root, config, speak, voices, bulk, transcribe, etc.)internal/appconfig/— Config file management (~/.prompt-tools/config.json)internal/config/— Runtime state (debug, dry-run flags)internal/output/— JSON/table/CSV/raw output formattinginternal/keyring/— API key storage in OS keyringinternal/provider/— TTSProvider and STTProvider interfaces, registry, AuthConfiginternal/gcpauth/— GCP Application Default Credentials resolution and token exchange (no SDK)internal/tts/— TTS provider implementations (Google, ElevenLabs, OpenAI)internal/stt/— STT provider implementations (Google, AssemblyAI, OpenAI)internal/audio/— WAV header generation, PCM/mulaw/alaw conversioninternal/bulk/— Spreadsheet parsing, template generation, concurrent pipeline
- REST over SDK: Use net/http directly, no Google Cloud SDK
- Auth resolution (Google): ADC/OAuth2 → env var → OS keyring; (others): env var → OS keyring
- Default audio: 8kHz mu-law WAV (IVR standard)
- Provider registration: init() functions in tts/ and stt/ packages register with provider.Registry
- Output formatting: Use output.PrintObject() for structured data, fmt.Fprintf(os.Stderr, ...) for status messages
- Config: Non-secret config in ~/.prompt-tools/config.json, secrets in OS keyring under "prompt-tools-cli" service name
GOOGLE_APPLICATION_CREDENTIALS— Path to GCP service account JSON key file (ADC)GOOGLE_API_KEY— Google Cloud API keyELEVENLABS_API_KEY— ElevenLabs API keyASSEMBLYAI_API_KEY— AssemblyAI API keyOPENAI_API_KEY— OpenAI API key
When changing commands, flags, help text, or user-facing behavior, update ALL of these:
- Command help text —
LongandShortfields in the cobra.Command (incmd/*.go) skill/SKILL.md— The Claude Code skill reference (command examples, flag docs)~/.claude/skills/prompt-tools/SKILL.md— Installed copy of the skill (copy from repo after editing)CLAUDE.md— This file, if conventions or structure changedcmd/setup.go— If providers, defaults, or audio presets changed