project-context
Load the full Struq Voice picture before starting any task: what the project is, the architecture map, the file inventory, current state, and the invariants that must never be broken. Invoke at the st
SKILL.md.claude/skills/project-context/SKILL.md
GitHubProject context: Struq Voice
A tray-resident Windows dictation app. Hold a key anywhere in Windows, speak, release, and the transcript appears in the focused field. Windows 10 and 11, 64-bit. Electron 39 pinned, React 19, Tailwind v4, TypeScript strict.
Read in this order
AGENTS.md(repo root) - the source of truth.docs/FEATURES.md- what is built, current state, known gaps.docs/ARCHITECTURE.md- process/window model and boundaries.- For UI work:
docs/DESIGN_SYSTEM.md(Evergreen and Ember, binding).
Process model
MAIN PROCESS RECORDER (hidden) OVERLAY (never focused)
lifecycle · tray warm getUserMedia capture pill, live waveform
hotkeys · session AudioWorklet -> PCM
engines · paste · db -> main
MAIN WINDOW (on demand)
Dictate · History · Models · Settings
File map (locate without grepping)
- Boot, wiring, single instance:
src/main/index.ts - Capture state machine:
src/main/session/capture-session.ts - Hotkeys:
src/main/hotkeys/{index,ptt-hook,toggle-shortcut}.ts - Audio pipeline (recorder renderer):
src/renderer/recorder/ - Engines:
src/main/engines/ - Models + catalog:
src/main/models/+src/shared/models.ts - Paste:
src/main/platform/win32/paste.ts - History:
src/main/db/ - Settings + secrets:
src/main/store/+src/shared/settings.ts - Text cleanup:
src/main/post/text-cleanup.ts - IPC single source:
src/shared/ipc.ts+src/preload/*.ts - Tray:
src/main/tray.ts - Windows:
src/main/windows/ - Main window UI:
src/renderer/main/
Invariants (never break)
- Renderer never imports from
src/main/. src/shared/has no side effects and no Electron imports.- Every IPC channel is declared in
src/shared/ipc.tsand nowhere else. - Every window:
contextIsolation: true,nodeIntegration: false,sandbox: true. - No em dashes / en dashes / horizontal bars anywhere, ever.
Current state (verified)
All 7 plan phases are built and committed. The unit suite, typecheck, lint,
and the headless dev e2e suite are green. See
docs/FEATURES.md for the details and the short known-gaps list (settings +
a11y e2e specs not written, manual checklist not run, shadcn not adopted).