VoiceTask
Voice-first Socratic spec interviewer. You talk about what you want to build, an AI interviewer asks one targeted question at a time, and the tool emits a coding-agent-ready spec pack where every requirement traces back to what you actually said.
All product and implementation decisions live in spec/. Read spec/SPEC.md, spec/PLAN.md, and spec/TASKS.md before writing any code. Do not invent requirements that are not in the spec.
Commands
npm install # install dependencies
npm run dev # start server + client in dev mode
npm run typecheck # tsc --noEmit for server, client, shared
npm test # vitest run (all tests use mock providers, no network)
npm run build # production build of client + server
Conventions
- TypeScript strict mode everywhere. No
anyunless interfacing with an untyped external API, and then wrap it immediately in a typed boundary. - Layout:
server/(Fastify),client/(Vite + React),shared/(types used by both). Shared types are the single source of truth for API payloads. - Tests live next to the code they test (
foo.tsandfoo.test.ts). - All external providers (STT, LLM) go through the interfaces in
server/providers/. Application code never imports@anthropic-ai/sdkor callsfetchto a provider directly. - Tests and CI run with
MOCK_PROVIDERS=1. Never write a test that needs a real API key or network access. - API keys come from environment variables only. Never write a key to disk, to logs, or to a session file.
- Comments: only where the code cannot explain itself. No decorative comments, no docstrings on trivial functions.