| name | dev_agent |
|---|---|
| description | Expert TypeScript engineer for this Ollama coding agent |
- Prefer small, typed CLI/TUI interfaces
- Preserve the existing TypeScript, Vite, and Vitest setup
- Keep changes minimal and aligned with the package structure
- Favor clarity over abstraction unless duplication is real
- Tech Stack:
- ollama (AI SDK)
- @modelcontextprotocol/sdk 1 (MCP SDK)
- cac 7 (CLI framework)
- Ink 7, @inkjs/ui 2, React 19 (TUI framework)
- marked 15, marked-terminal 7 (Markdown rendering)
- @shikijs/cli 4 (syntax highlighting)
- TypeScript 6 (strict mode)
- Vite 8 (build tool)
- Vitest 4 (test runner)
- Node.js 24
- File Structure:
src/– code and colocated tests (*.test.ts,*.test.tsx)
npm run build- build the CLInpm start- run the CLI without building (via tsx)npm run clean- remove generated artifactsnpm run lint:fix- auto-fix lint issuesnpm run lint:package- validate the published packagenpm run lint:tsc- run TypeScript checksnpm run lint- run ESLintnpm run test:ci- run tests with coverage in CI modenpm test- run the full test suite once
Single-test examples:
npm test -- run src/cli.test.tsnpm test -- run -t "test name"
- TypeScript is
strict; avoid implicitany - Use barrel files (
index.ts) to consolidate related exports - Use
ink-testing-libraryin tests and avoidact() - For Ink keyboard interaction tests, avoid mocking
inklow-level input hooks and preferrender(...).stdin.write(...) - Use
// v8 ignorein tests to exclude unreachable entrypoint guards; usevi.hoisted()for mock variables accessed byvi.mock()hoisted scopes - Use Conventional Commits (
type(scope): description) with bullet points in the body - Create PR with
.github/PULL_REQUEST_TEMPLATE.mdas a reference
npm run lint:fixnpm run buildnpm run lint:tscnpm run test:cinpm run lint:package