{"id":50268070,"url":"https://github.com/vypdev/promptimize","last_synced_at":"2026-05-27T15:04:24.755Z","repository":{"id":359711894,"uuid":"1247141610","full_name":"vypdev/promptimize","owner":"vypdev","description":null,"archived":false,"fork":false,"pushed_at":"2026-05-25T01:32:41.000Z","size":68707,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-05-25T01:34:11.688Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/vypdev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"docs/security/privacy.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-05-23T00:24:52.000Z","updated_at":"2026-05-25T00:24:55.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/vypdev/promptimize","commit_stats":null,"previous_names":["vypdev/cursor-whisper","vypdev/promptimize"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/vypdev/promptimize","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vypdev%2Fpromptimize","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vypdev%2Fpromptimize/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vypdev%2Fpromptimize/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vypdev%2Fpromptimize/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/vypdev","download_url":"https://codeload.github.com/vypdev/promptimize/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vypdev%2Fpromptimize/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33498008,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-25T14:31:05.219Z","status":"ssl_error","status_checked_at":"2026-05-25T14:31:02.878Z","response_time":57,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-05-27T15:04:20.207Z","updated_at":"2026-05-27T15:04:24.746Z","avatar_url":"https://github.com/vypdev.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Promptimize\n\n\u003e **Transform your voice into optimized prompts with AI-powered speech-to-text**\n\nA professional VSCode/Cursor extension that captures audio from your microphone, transcribes it using OpenAI Whisper, and intelligently transforms natural speech into structured, optimized prompts ready for LLM agents.\n\n![License](https://img.shields.io/badge/license-MIT-blue.svg)\n![Version](https://img.shields.io/badge/version-0.1.0--alpha-orange.svg)\n![VSCode](https://img.shields.io/badge/VSCode-1.120+-green.svg)\n![TypeScript](https://img.shields.io/badge/TypeScript-5.4+-blue.svg)\n\n---\n\n## Quick Start\n\n1. **Install** the extension (VSIX or Marketplace when available)\n2. **Run Setup Wizard** — Command Palette → `Promptimize: Setup Wizard`\n3. **Configure OpenAI API key** — Required for Whisper voice-to-text\n4. **Optionally choose optimization provider** — OpenAI, Anthropic, Google, Azure, Ollama, OpenCode, OpenRouter, or Cursor\n5. **Press `Cmd+Alt+V`** (Transcribe) or **`Cmd+Alt+P`** (Promptimize) and speak\n\nSee the full [Quick Start Guide](docs/quickstart.md) and [Recording Modes](docs/user-guide/recording-modes.md).\n\n### Two Services, Clear Roles\n\n| Service                 | Provider       | Required | Credentials               |\n| ----------------------- | -------------- | -------- | ------------------------- |\n| **Transcription**       | OpenAI Whisper | Yes      | OpenAI API key            |\n| **Prompt optimization** | Your choice    | No       | Provider-specific API key |\n\n```mermaid\ngraph LR\n    Voice[Your Voice] --\u003e Whisper[OpenAI Whisper\u003cbr/\u003eTranscription]\n    Whisper --\u003e RawText[Raw Text]\n    RawText --\u003e Choice{Optimization\u003cbr/\u003eEnabled?}\n    Choice --\u003e|No| Editor[Insert to Editor]\n    Choice --\u003e|Yes| Provider[Your Chosen Provider]\n    Provider --\u003e OptimizedText[Optimized Prompt]\n    OptimizedText --\u003e Editor\n```\n\n---\n\n## 🎯 Vision\n\n**Eliminate the friction between thinking and coding.**\n\nDevelopers often have complex architectural ideas, detailed requirements, or intricate technical explanations that are tedious to type but natural to speak. Promptimize bridges this gap by:\n\n- **Capturing** your spoken thoughts in real-time\n- **Transcribing** them with high accuracy using OpenAI Whisper\n- **Transforming** natural speech into structured, technical prompts\n- **Inserting** them automatically into your editor or Cursor chat\n\n---\n\n## 🔥 The Problem We Solve\n\n### Before Promptimize:\n\n```\n1. Think about complex architecture requirements\n2. Struggle to type everything out\n3. Lose train of thought while typing\n4. End up with unstructured, verbose prompts\n5. LLM misunderstands due to poor formatting\n```\n\n### With Promptimize:\n\n```\n1. Press Cmd+Alt+V\n2. Speak naturally about your requirements\n3. Extension transcribes and optimizes automatically\n4. Structured prompt appears in your editor/chat\n5. LLM understands perfectly\n```\n\n---\n\n## ✨ Features\n\n### Current (v0.1.0)\n\n- ✅ **Two Recording Modes** — Transcribe (raw text) and Promptimize (optimized prompts)\n- ✅ **One-Click Recording** — Dual status bar buttons or keyboard shortcuts\n- ✅ **High-Quality Transcription** — OpenAI Whisper API integration\n- ✅ **Prompt Transformation** — AI-powered optimization via 8 providers\n- ✅ **Multiple AI Providers** — OpenAI, Anthropic, Google, Azure, Ollama, OpenCode, OpenRouter, and Cursor\n- ✅ **Configuration Webview** — Interactive setup panel with provider comparison and system prompt editor\n- ✅ **Smart Insertion** — Chat → editor → clipboard fallback chain\n- ✅ **Visual Feedback** — Status bar states and progress notifications\n- ✅ **Secure Configuration** — API keys stored in VSCode SecretStorage\n- ✅ **Cross-Platform** — Works on macOS, Windows, and Linux\n\n### Coming Soon\n\n- 🔄 **Real-time Streaming** — See transcription as you speak\n- 🔄 **Custom Vocabulary UI** — Project-specific terms in configuration webview\n- 🔄 **Recording History** — Review and re-use past transcriptions\n- 🔄 **Planned settings** — `audioQuality`, `maxRecordingDuration`, `showNotifications` (defined but not yet applied)\n\n---\n\n## 🏗️ Architecture\n\nPromptimize follows **Clean/Hexagonal Architecture** for maximum maintainability, testability, and scalability.\n\n```\n┌─────────────────────────────────────────────────────┐\n│                  Presentation Layer                  │\n│  (Commands, Status Bar)                              │\n└────────────┬────────────────────────────────────────┘\n             │\n┌────────────▼────────────────────────────────────────┐\n│                  Application Layer                   │\n│      (Use Cases, Ports/Interfaces, DTOs)            │\n└────────────┬────────────────────────────────────────┘\n             │\n┌────────────▼────────────────────────────────────────┐\n│                    Domain Layer                      │\n│    (Entities, Value Objects, Business Logic)         │\n└─────────────────────────────────────────────────────┘\n             │\n┌────────────▼────────────────────────────────────────┐\n│                Infrastructure Layer                  │\n│  (OpenAI Whisper, Native Audio Capture, Config, Storage) │\n└─────────────────────────────────────────────────────┘\n```\n\nSee [`docs/architecture/`](docs/architecture/) for detailed architecture documentation.\n\n---\n\n## 🛠️ Technology Stack\n\n### Core\n\n- **TypeScript 5.4+** - Type-safe development\n- **VSCode Extension API 1.120+** - Extension foundation\n- **Node.js 22 LTS** - Runtime environment\n- **Webpack 5** - Bundling and optimization\n\n### Integrations\n\n- **OpenAI API** - Whisper for transcription, GPT-4 for prompt transformation\n- **@kstonekuan/audio-capture** - Native cross-platform microphone capture\n- **VSCode SecretStorage** - Secure credential management\n\n### Quality\n\n- **Jest** - Unit testing\n- **ESLint + Prettier** - Code quality and formatting\n- **Husky** - Git hooks for pre-commit checks\n\n---\n\n## 📦 Installation\n\n### From Marketplace (Coming Soon)\n\n1. Open VSCode/Cursor\n2. Go to Extensions (`Cmd+Shift+X` / `Ctrl+Shift+X`)\n3. Search for \"Promptimize\"\n4. Click Install\n\n### Manual Installation (Current)\n\n1. Download the latest `.vsix` file from [Releases](https://github.com/vypdev/promptimize/releases)\n2. Open VSCode/Cursor\n3. Go to Extensions\n4. Click \"...\" menu → \"Install from VSIX...\"\n5. Select the downloaded file\n\n### Upgrading from Cursor Whisper\n\nThe extension was renamed to **Promptimize** (`vypdev` publisher). If you previously installed `cursor-whisper`:\n\n1. Uninstall the old **Cursor Whisper** extension\n2. Install `promptimize-*.vsix` (or the new Marketplace listing when available)\n3. Re-enter API keys (SecretStorage keys changed to `promptimize.apiKey.*`)\n4. Update `settings.json`: replace `cursorWhisper.*` with `promptimize.*`\n5. Update custom keybindings that reference `cursor-whisper.*` commands\n\n---\n\n## ⚙️ Configuration\n\n### First-Time Setup\n\n1. After installation, run **Promptimize: Setup Wizard** (opens automatically on first launch)\n2. Enter your **OpenAI API key** — required for Whisper transcription\n3. Choose whether to enable **prompt optimization** and select a provider\n4. Provide provider credentials when prompted (Anthropic, Google, Azure, etc.)\n5. Test your configuration with **Promptimize: Test Configuration**\n\n**Note:** Whisper transcription always uses OpenAI. Prompt optimization is optional and can use a different provider with its own API key.\n\n### Manual Configuration\n\nOpen Settings (`Cmd+,` / `Ctrl+,`) and search for \"Promptimize\":\n\n```json\n{\n  \"promptimize.transcriptionLanguage\": \"en\",\n  \"promptimize.enablePromptTransformation\": true,\n  \"promptimize.transformationProvider\": \"openai\",\n  \"promptimize.transformationModel\": \"gpt-4o\",\n  \"promptimize.audioQuality\": \"high\",\n  \"promptimize.maxRecordingDuration\": 120,\n  \"promptimize.showNotifications\": true\n}\n```\n\n### Transcription (Required — OpenAI Whisper)\n\n| Setting                 | Description                                                                                          |\n| ----------------------- | ---------------------------------------------------------------------------------------------------- |\n| OpenAI API key          | Required for voice-to-text. Configure via **Setup Wizard** or **Configure OpenAI API Key (Whisper)** |\n| `transcriptionLanguage` | Language for transcription (`en`, `es`, `auto`, etc.)                                                |\n\n**Cost:** ~$0.006/minute of audio\n\n### Prompt Optimization (Optional)\n\nPrompt optimization converts transcribed speech into structured prompts. Choose a provider and supply credentials when required.\n\n| Setting                             | Description                                                                            |\n| ----------------------------------- | -------------------------------------------------------------------------------------- |\n| `enablePromptTransformation`        | Enable/disable optimization                                                            |\n| `transformationProvider`            | `openai`, `anthropic`, `google`, `azure`, `ollama`, `opencode`, `openrouter`, `cursor` |\n| `transformationModel`               | OpenAI model (when provider is `openai`)                                               |\n| `anthropicModel`                    | Claude model (when provider is `anthropic`)                                            |\n| `googleModel`                       | Gemini model (when provider is `google`)                                               |\n| `azureEndpoint` / `azureDeployment` | Azure OpenAI resource settings                                                         |\n| `ollamaBaseUrl` / `ollamaModel`     | Local Ollama server settings                                                           |\n| `openCodeBaseUrl` / `openCodeModel` | Local OpenCode proxy settings                                                          |\n| `openRouterModel`                   | OpenRouter model (when provider is `openrouter`)                                       |\n| `cursorModel`                       | Cursor model (when provider is `cursor`)                                               |\n\nUse **Promptimize: Configure Prompt Optimization Provider** to set up interactively. See [`docs/configuration/`](docs/configuration/) for provider setup.\n\n### Configuration Options\n\n| Setting                      | Type    | Default    | Description                                                                                                              |\n| ---------------------------- | ------- | ---------- | ------------------------------------------------------------------------------------------------------------------------ |\n| `transcriptionLanguage`      | string  | `\"auto\"`   | Language for transcription (`en`, `es`, `fr`, `de`, `auto`)                                                              |\n| `enablePromptTransformation` | boolean | `true`     | Transform transcription into optimized prompts                                                                           |\n| `transformationProvider`     | string  | `\"openai\"` | LLM provider for transformation (`openai`, `anthropic`, `google`, `azure`, `ollama`, `opencode`, `openrouter`, `cursor`) |\n| `transformationModel`        | string  | `\"gpt-4o\"` | OpenAI model for transformation                                                                                          |\n| `transcriptionHint`          | string  | `\"\"`       | Optional Whisper vocabulary hint (Settings only)                                                                         |\n| `audioQuality`               | string  | `\"high\"`   | Planned — not yet applied (always 16 kHz mono)                                                                           |\n| `maxRecordingDuration`       | number  | `120`      | Planned — not yet applied                                                                                                |\n| `showNotifications`          | boolean | `true`     | Planned — not yet applied                                                                                                |\n\n---\n\n## 🧪 Development \u0026 Testing\n\n### Prerequisites\n\n- Node.js 22+ installed (via nvm; see `.nvmrc`)\n- VSCode or Cursor IDE\n- OpenAI API key\n\n### Setup Development Environment\n\n```bash\n# Clone the repository\ngit clone https://github.com/vypdev/promptimize\ncd promptimize\n\n# Install dependencies (requires Node 22 — run `nvm use` first)\npnpm install\n\n# Compile TypeScript\npnpm run compile\n```\n\n### Debug the Extension\n\n1. Open the project in VSCode/Cursor\n2. Press `F5` to start debugging\n3. A new \"Extension Development Host\" window will open\n4. The extension will be loaded in this window\n\n### Configure API Key\n\n1. In the Extension Development Host window:\n   - Open Command Palette (`Cmd/Ctrl+Shift+P`)\n   - Type: \"Promptimize: Configure API Key\"\n   - Paste your OpenAI API key (starts with `sk-...`)\n   - The key is securely stored in your system's Keychain/Credential Manager\n\n### Test the Extension\n\n1. **Start Recording**:\n   - Press `Cmd/Ctrl+Alt+V` (or click \"Voice\" in the status bar)\n   - Recording starts immediately in the background\n\n2. **Record Audio**:\n   - Speak clearly into your microphone\n   - Ensure Cursor has microphone access in System Settings (macOS) or Privacy settings (Windows)\n\n3. **Stop Recording**:\n   - Press the stop command or status bar action when done\n\n4. **Wait for Processing**:\n   - Audio is transcribed (~5-10 seconds)\n   - Text is optimized with GPT-4 (optional)\n   - Text is automatically inserted into the active editor\n\n5. **Check Status**:\n   - Status bar shows current state\n   - Notifications show progress and errors\n\n### Build Status\n\n```bash\n# Compile TypeScript\npnpm run compile\n\n# Run linter\npnpm run lint\n\n# Run tests (when available)\npnpm test\n\n# Package extension (includes all platform native binaries)\npnpm run package\n\n# Verify VSIX contains all platform binaries\npnpm run package:verify\n```\n\n### Packaging for Distribution\n\nTo create a VSIX that works across all platforms (macOS, Linux, Windows):\n\n```bash\npnpm run package\n```\n\nThis will:\n\n1. Install all platform-specific native binaries (`darwin-arm64`, `darwin-x64`, `linux-x64-gnu`, `win32-x64-msvc`)\n2. Bundle them into the VSIX (~2.5MB total)\n3. Create `promptimize-X.X.X.vsix`\n\nTo verify all binaries are included:\n\n```bash\npnpm run package:verify\n```\n\nExpected output:\n\n- `audio-capture-darwin-arm64`\n- `audio-capture-darwin-x64`\n- `audio-capture-linux-x64-gnu`\n- `audio-capture-win32-x64-msvc`\n\n**Current Build**: ✅ SUCCESS (577 KB bundle)\n\n---\n\n## 🚀 Usage\n\n### Recording Modes\n\nPromptimize has two modes — see [Recording Modes](docs/user-guide/recording-modes.md) for full details.\n\n| Mode            | Shortcut         | Output                      |\n| --------------- | ---------------- | --------------------------- |\n| **Transcribe**  | `Cmd/Ctrl+Alt+V` | Raw Whisper transcription   |\n| **Promptimize** | `Cmd/Ctrl+Alt+P` | Optimized structured prompt |\n\n### Quick Start\n\n1. **Open your editor or Cursor chat**\n2. **Press `Cmd+Alt+V`** (Transcribe) or **`Cmd+Alt+P`** (Promptimize)\n3. **Speak naturally about your requirements**\n4. **Click the status bar** (Recording...) to stop\n5. **Transcribed or optimized text appears automatically**\n\n### Status Bar\n\nThree items appear in the status bar (right side):\n\n| Item            | Idle                   | Recording                              |\n| --------------- | ---------------------- | -------------------------------------- |\n| **Transcribe**  | $(mic) Transcribe      | $(record) Recording... (click to stop) |\n| **Promptimize** | $(sparkle) Promptimize | $(record) Recording... (click to stop) |\n| **Settings**    | $(gear) Settings       | Available during recording             |\n\nDuring processing, progress appears in **notifications** (Transcribing..., Optimizing..., Inserting...).\n\n### Example Workflow\n\n**Spoken Input:**\n\n\u003e \"I need to refactor the authentication service to support JWT tokens instead of sessions. We should maintain backward compatibility with existing session-based auth for 6 months. Also need unit tests for the new JWT validation logic and integration tests for the auth flow.\"\n\n**Optimized Output:**\n\n```markdown\n## Refactor Authentication Service to JWT\n\n### Context\n\n- Current implementation: session-based authentication\n- Target implementation: JWT tokens\n\n### Objectives\n\n1. Implement JWT token generation and validation\n2. Maintain backward compatibility with session-based auth\n3. Provide 6-month deprecation period for sessions\n\n### Technical Requirements\n\n- JWT library integration\n- Token validation middleware\n- Session-to-JWT migration path\n\n### Testing Requirements\n\n- Unit tests for JWT validation logic\n- Integration tests for complete auth flow\n- Backward compatibility tests for sessions\n\n### Timeline\n\n- 6-month deprecation period for session-based auth\n```\n\n---\n\n## 🎨 User Experience\n\n### Visual States\n\nThe status bar reflects recorder states; fine-grained progress (Transcribing, Optimizing) appears in notifications.\n\n| State          | Status Bar                                 | Description                        |\n| -------------- | ------------------------------------------ | ---------------------------------- |\n| **Idle**       | $(mic) Transcribe / $(sparkle) Promptimize | Ready to record                    |\n| **Recording**  | $(record) Recording...                     | Actively recording (click to stop) |\n| **Processing** | $(sync~spin) Processing...                 | Preparing audio after stop         |\n| **Error**      | Error styling                              | Something went wrong               |\n\nSee [UX States](docs/ux/states.md) for the full state reference.\n\n### Keyboard Shortcuts\n\n| Shortcut                   | Action                             |\n| -------------------------- | ---------------------------------- |\n| `Cmd+Alt+V` / `Ctrl+Alt+V` | Start Transcribe recording         |\n| `Cmd+Alt+P` / `Ctrl+Alt+P` | Start Promptimize recording        |\n| `Escape`                   | Cancel recording (while recording) |\n\nShortcuts **start** recording only — stop by clicking the status bar. See [Keyboard Shortcuts](docs/user-guide/keyboard-shortcuts.md).\n\n### Commands (Command Palette)\n\n| Command                                               | Purpose                           |\n| ----------------------------------------------------- | --------------------------------- |\n| `Promptimize: Start Transcribe Recording`             | Start raw transcription           |\n| `Promptimize: Stop Transcribe Recording`              | Stop and process Transcribe       |\n| `Promptimize: Start Promptimize Recording`            | Start optimized prompt            |\n| `Promptimize: Stop Promptimize Recording`             | Stop and process Promptimize      |\n| `Promptimize: Cancel Recording`                       | Discard recording                 |\n| `Promptimize: Open Configuration`                     | Configuration webview             |\n| `Promptimize: Configure OpenAI API Key (Whisper)`     | Set Whisper API key               |\n| `Promptimize: Configure Prompt Optimization Provider` | Provider setup wizard             |\n| `Promptimize: Configure OpenAI Optimization Model`    | Pick GPT model (OpenAI only)      |\n| `Promptimize: Test Configuration`                     | Test setup; opens results webview |\n| `Promptimize: Setup Wizard`                           | Opens configuration panel         |\n\n**Deprecated:** `(Deprecated) Start Recording` and `(Deprecated) Stop Recording` — use mode-specific commands instead.\n\n---\n\n## 🔒 Security \u0026 Privacy\n\n### Data Handling\n\n- **Audio files are temporary** - Deleted immediately after transcription\n- **No local storage** - Audio is never written to disk\n- **API keys are encrypted** - Stored in VSCode SecretStorage\n- **No telemetry** - Zero analytics or usage tracking\n- **HTTPS only** - All API calls are encrypted\n\n### API Key Security\n\nYour OpenAI API key is:\n\n1. Stored in VSCode's secure credential storage (SecretStorage)\n2. Never exposed in logs or error messages\n3. Never sent anywhere except OpenAI's official API\n4. Accessible only by this extension\n\n### Microphone Permissions\n\nThe extension requests microphone access:\n\n- **macOS**: System Settings → Privacy \u0026 Security → Microphone\n- **Windows**: Settings → Privacy → Microphone\n- **Linux**: System-dependent, usually automatic\n\n---\n\n## 🏗️ Development\n\n### Prerequisites\n\n- **Node.js 22+** (via [nvm](https://github.com/nvm-sh/nvm); see `.nvmrc`)\n- **pnpm**\n- **VSCode 1.120+** for testing\n\n### Setup\n\n```bash\n# Clone the repository\ngit clone https://github.com/vypdev/promptimize.git\ncd promptimize\n\n# Install dependencies (requires Node 22 — run `nvm use` first)\npnpm install\n\n# Build the extension\npnpm run compile\n\n# Run tests\npnpm test\n\n# Watch mode for development\npnpm run watch\n```\n\n### Project Structure\n\n```\npromptimize/\n├── src/\n│   ├── application/     # Use cases and ports\n│   ├── domain/          # Business entities\n│   ├── infrastructure/  # External integrations\n│   ├── presentation/    # UI and commands\n│   ├── shared/          # Utilities and constants\n│   └── extension.ts     # Entry point\n├── docs/                # Comprehensive documentation\n├── test/                # Unit and integration tests\n└── package.json\n```\n\nSee [`docs/architecture/`](docs/architecture/) for detailed structure documentation.\n\n### Running Locally\n\n1. Open the project in VSCode\n2. Press `F5` to launch Extension Development Host\n3. The extension will be active in the new window\n4. Test recording with `Cmd+Alt+V`\n\n---\n\n## 🧪 Testing\n\nAutomated tests cover use cases, transformers, and UI components — see [`docs/testing/strategy.md`](docs/testing/strategy.md).\n\n### Run Tests\n\n```bash\nsource scripts/ensure-node.sh \u0026\u0026 pnpm test\n```\n\n### Test Strategy\n\n- **Unit tests**: Use cases and adapters with mocked ports (priority)\n- **Manual smoke tests**: Real recording → transcription → insertion before release\n\nSee [`docs/testing/strategy.md`](docs/testing/strategy.md) for critical test priorities and manual checklist.\n\n---\n\n## 📈 Roadmap\n\n### v0.1.0 (Current)\n\n- ✅ Dual recording modes (Transcribe + Promptimize)\n- ✅ Whisper transcription\n- ✅ Prompt transformation (8 providers)\n- ✅ Configuration webview\n- ✅ Chat / editor / clipboard insertion\n- ✅ API key configuration\n\n### v0.2.0 (Next)\n\n- 🔄 Apply planned settings (`audioQuality`, `maxRecordingDuration`, `showNotifications`)\n- 🔄 Transformation preview before insert\n- 🔄 Transcription language in configuration webview\n\n### v0.3.0\n\n- 🔄 Context-aware insertion improvements\n- 🔄 Push-to-talk mode\n\n### v0.4.0\n\n- 🔄 Real-time streaming transcription\n- 🔄 Recording history\n- 🔄 Edit before insert\n\n### v0.5.0\n\n- 🔄 Custom vocabulary UI\n- 🔄 Technical term correction\n\n### v1.0.0 (Stable)\n\n- 🔄 Full production release\n- 🔄 Performance optimization\n- 🔄 Extensive testing\n\nSee [`PROGRESS.md`](PROGRESS.md) for current project status.\n\n---\n\n## 🤝 Contributing\n\nWe welcome contributions! See [`docs/standards/coding-conventions.md`](docs/standards/coding-conventions.md) for coding standards and development workflow.\n\n### Development Philosophy\n\n1. **Clean Architecture** - Maintain clear layer separation\n2. **Type Safety** - Strong TypeScript typing everywhere\n3. **Testability** - Write testable, pure functions\n4. **Documentation** - Document decisions and complex logic\n5. **User Experience** - Prioritize UX over technical complexity\n\n---\n\n## 📝 Philosophy \u0026 Design Principles\n\n### Core Principles\n\n1. **Compatibility First** - Real-world compatibility over theoretical solutions\n2. **User Experience** - Minimal friction, maximum productivity\n3. **Maintainability** - Clean code over clever hacks\n4. **Scalability** - Built to grow and evolve\n5. **Privacy** - User data never leaves their control\n\n### Why Clean Architecture?\n\n- **Testability**: Business logic independent of frameworks\n- **Flexibility**: Easy to swap implementations (e.g., different STT providers)\n- **Maintainability**: Clear responsibilities and boundaries\n- **Scalability**: Add features without breaking existing code\n\n### Why Dependency Injection?\n\n- **Testability**: Easy to mock dependencies\n- **Flexibility**: Configure different implementations\n- **Maintainability**: Clear dependency graph\n\n---\n\n## 🐛 Troubleshooting\n\nSee the full [Troubleshooting Guide](docs/user-guide/troubleshooting.md) with decision trees.\n\n### Microphone not working\n\n**macOS:**\n\n1. Go to System Settings → Privacy \u0026 Security → Microphone\n2. Ensure VSCode/Cursor is enabled\n\n**Windows:**\n\n1. Go to Settings → Privacy → Microphone\n2. Ensure VSCode/Cursor has permission\n\n**Linux:**\n\n- Permissions are usually automatic\n- Check `pavucontrol` if using PulseAudio\n\n### Transcription fails\n\n- Verify your OpenAI API key is valid\n- Check you have credits in your OpenAI account\n- Ensure audio duration is between 0.1s and 5 minutes\n- Check file size doesn't exceed 25MB\n\n### Text not inserting\n\n- Ensure you have an active editor or chat input focused\n- Check the status bar for error messages\n- Try manually pasting from clipboard (fallback behavior)\n\n### Cursor Agents Window issues\n\nPromptimize works best in:\n\n- **Classic Mode** (`cursor --classic`)\n- **Editor Window**\n\n### Debug output and privacy\n\nTranscriptions and optimized prompts are **never written to logs**. For troubleshooting, use the status bar, progress notifications, and error dialogs. Enable the **Promptimize** output channel only for operational messages (timestamps, durations, error types)—not user speech content.\n\nMIT License - see [LICENSE](LICENSE) file for details.\n\n---\n\n## 🙏 Acknowledgments\n\n- **OpenAI** - Whisper and GPT-4 APIs\n- **VSCode Team** - Excellent extension API and documentation\n- **Cursor Team** - Innovation in AI-powered development\n\n---\n\n## 📬 Contact \u0026 Support\n\n- **Issues**: [GitHub Issues](https://github.com/vypdev/promptimize/issues)\n- **Discussions**: [GitHub Discussions](https://github.com/vypdev/promptimize/discussions)\n- **Email**: support@promptimize.dev\n\n---\n\n## 🔗 Links\n\n- [Documentation](docs/)\n- [Recording Modes](docs/user-guide/recording-modes.md)\n- [Configuration Webview Guide](docs/configuration/webview-guide.md)\n- [Architecture Docs](docs/architecture/)\n- [Configuration Guide](docs/configuration/)\n- [Troubleshooting](docs/user-guide/troubleshooting.md)\n- [Project Progress](PROGRESS.md)\n\n---\n\n**Made with ❤️ for developers who think faster than they type**\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvypdev%2Fpromptimize","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvypdev%2Fpromptimize","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvypdev%2Fpromptimize/lists"}