git clone https://github.com/Narcooo/inkos.git
cd inkos
pnpm install
pnpm build
pnpm test
Node ≥ 20, pnpm ≥ 9.
packages/
core/ # Agents, pipeline, state management, LLM providers
cli/ # Commander.js commands (22 commands)
Monorepo managed with pnpm workspaces. cli depends on core via workspace:*.
pnpm dev # Watch mode (both packages)
pnpm build # Build once
pnpm test # Run all tests
pnpm typecheck # Type-check without emitting
<type>: <description>
Types: feat, fix, refactor, docs, test, chore, perf, ci
Keep commits atomic — one logical change per commit. Split new files, interface changes, tests, and docs into separate commits when they're non-trivial.
pnpm build passespnpm test passes (all existing + new tests)pnpm typecheck passes{ ...obj, key: value } over mutationcatch { } without re-throw needs a comment)workspace:* stays in source package.json — the CI pipeline handles version replacement at publish timepackages/cli/src/commands/<name>.tsCommand instancepackages/cli/src/index.ts--json output supportpackages/core/genres/<id>.md with YAML frontmatterchapterTypes, fatigueWords, numericalSystem, powerScaling, pacingRule, satisfactionTypes, auditDimensions, languageTests live next to source in __tests__/ directories. We use Vitest.
pnpm --filter @actalk/inkos-core test # Core tests only
pnpm --filter @actalk/inkos test # CLI tests only
For features touching the LLM pipeline, mock the LLM calls — don't make real API requests in tests.
Open an issue or check existing ones: https://github.com/Narcooo/inkos/issues