协作头脑风暴
brainstorming
在实现前澄清需求、探索设计选择,并形成清晰的开发方向。
groq-local-dev-loop【开发与工程】Configure Groq local development with hot reload, mocking, and testing. Use when setting up a Groq development environment, configuring mocked vs live test workflows, or establishing a fast iteration cycle with Groq. Trigger with phrases like "groq dev setup", "groq local development", "groq dev environment", "develop with groq".
独立 GitHub 快照 · 自动分类 · 以原作者文档为准
name: groq-local-dev-loop description: 'Configure Groq local development with hot reload, mocking, and testing.
Use when setting up a Groq development environment, configuring mocked vs live test workflows, or establishing a fast iteration cycle with Groq.
Trigger with phrases like "groq dev setup", "groq local development",
"groq dev environment", "develop with groq".
' allowed-tools: Read, Write, Edit, Bash(npm:), Bash(pnpm:) version: 1.11.0 license: MIT author: Jeremy Longshore jeremy@intentsolutions.io tags:
Set up a fast, reproducible local development workflow for Groq. Groq's sub-second response times make it uniquely suited for tight dev loops -- you get LLM responses fast enough to iterate without context-switching. This skill scaffolds a project, a memoized client, model constants, and a two-tier test strategy (mocked unit tests + opt-in live integration tests). The lean skeleton lives here; the full code lives in references/implementation.md and references/examples.md.
groq-sdk installed (npm install groq-sdk)GROQ_API_KEY set (free tier is fine for development)The groq-sdk client reads GROQ_API_KEY from the environment automatically —
new Groq() and getGroqClient() both pick it up. Get a key at
console.groq.com/keys, store it in a
git-ignored .env.local, and commit only .env.example as a template. Never
hardcode the key or commit .env.local.
Follow these seven steps in order. Steps 1-2 lay out the project; steps 3-4 centralize the client and model IDs; steps 5-6 establish the test tiers; step 7 templates the environment. Full code for each is in the reference files.
src/groq/{client,models,completions}.ts, tests/, and .env.local / .env.example.dev (tsx watch), test / test:watch (vitest), and test:integration scripts.getGroqClient() that fails fast when GROQ_API_KEY is missing and a resetClient() for tests.MODELS map with DEV_MODEL defaulting to llama-3.1-8b-instant to conserve dev quota.vi.mock("groq-sdk") so unit tests run sub-second with zero API calls.GROQ_INTEGRATION=1 with describe.skipIf so the default run stays offline..env.example, git-ignore .env.local.// src/groq/client.ts -- lazily-memoized singleton
import Groq from "groq-sdk";
let _client: Groq | null = null;
export function getGroqClient(): Groq {
if (!_client) {
if (!process.env.GROQ_API_KEY) {
throw new Error("GROQ_API_KEY not set. Copy .env.example to .env.local");
}
_client = new Groq({ apiKey: process.env.GROQ_API_KEY, maxRetries: 2, timeout: 30_000 });
}
return _client;
}
export function resetClient(): void { _client = null; }
See references/implementation.md for the full
project scaffold, package.json, model constants, and .env.example, and
references/examples.md for the complete unit and
integration test files.
Applying the workflow produces:
src/groq/{client,models,completions}.ts and a tests/ directory.getGroqClient() that shares one configured client and throws an actionable error when GROQ_API_KEY is unset.MODELS map + DEV_MODEL constant so dev runs on the cheap 8B model.npm run test:watch, no API calls) and opt-in live tests (npm run test:integration, gated on GROQ_INTEGRATION=1)..env.example template committed for the team, with real secrets in a git-ignored .env.local.| Error | Cause | Solution |
|---|---|---|
GROQ_API_KEY not set | Missing .env.local | Copy from .env.example |
| Test timeout | Live API call in unit test | Mock groq-sdk in unit tests |
429 rate_limit_exceeded | Free tier RPM hit | Wait 60s or use test:watch with longer intervals |
| Port already in use | Another tsx watch running | Kill process or change port |
llama-3.1-8b-instant during development (lowest quota usage, fastest).temperature: 0 for deterministic outputs during debugging.max_tokens conservatively to avoid burning through free tier.Run the hot-reload app and the mocked unit-test watcher side by side, then exercise the live API only when you opt in:
npm run dev # tsx watch src/index.ts (hot reload)
npm run test:watch # vitest --watch (mocked, no API calls)
npm run test:integration # GROQ_INTEGRATION=1 vitest (live API)
For the complete mocked unit test (vi.mock("groq-sdk")) and the
GROQ_INTEGRATION-gated live integration test, see
references/examples.md.
groq-sdk-patterns skill.