This monorepo uses a Feature-driven development workflow. For the full lifecycle — from idea capture through grilling, PRD, issues, execution, and QA — see docs/process/development-workflow.md.
New features and fixes are tracked as Features in the issue tracker under docs/issues/<slug>/. Implementation is done manually using /tdd for individual issues; the Feature Runner (unic-dlc-build, shipped by unic-archon-dlc) is the long-term AFK runner once it is wired into this repo (see ADR-0030).
These rules apply to every package in the monorepo, regardless of agent target.
Every plugin must work on macOS, Windows, and Linux. Concretely:
- Use Node.js APIs (
node:path,node:fs,node:os,node:child_process) instead of shell commands. - No
bash/sh/zshassumptions; no POSIX-only path separators hardcoded. - CI runs Ubuntu + macOS + Windows × Node 22 + 24.
- Node.js ≥ 22. The recommended local version lives in
.nvmrc(read automatically by nvm/fnm/asdf/volta and byactions/setup-nodein CI). CI also exercises the matrix on Node 22 and 24. - ESM only —
"type": "module"in everypackage.json;.mjsextension for scripts. - No TypeScript compilation step — write
.mjswith// @ts-check+ JSDoc;tsc --noEmitfor type-checking only.
- pnpm only — not npm or yarn.
- All devDeps pinned via the workspace catalog (
catalog:indevDependencies). - Exact versions, no
^or~ranges (save-exact=truein.npmrc).
Enforced by Biome (pnpm ci:check) for .mjs/.js/.ts/.json/.css and Prettier (pnpm check:md) for .md:
- Tabs for indentation in code files.
- Single quotes, no semicolons, trailing commas ES5-style (Biome).
- Line width 120 (Biome).
- Markdown: Prettier default prose wrap (
preserve).
- Conventional commits with package scope:
feat(pr-review): …,fix(auto-format): …,chore(release-tools): …. - Each plugin maintains its own
CHANGELOG.mdwith[Unreleased]discipline. pnpm --filter <name> bump <patch|minor|major>is the only way to change a plugin's version. Never hand-editmarketplace.json.pnpm --filter <name> verify:changelogis enforced in CI; it rejects changes without a version bump + CHANGELOG entry.
- Zero external runtime deps unless essential (
auto-formatships zero;unic-confluencehasmarked— that's the bar). - Zero-config from the user's perspective: no configuration files users must create beyond credentials.
- New plugin work enters through the issue tracker as Features — open a Feature before starting implementation.
LGPL-3.0-or-later for all packages in this monorepo.
| Tool | Version | How to get it |
|---|---|---|
| Node.js | ≥ 22 (see .nvmrc for the recommended version) |
nodejs.org |
| pnpm | ≥ 10 | npm install -g pnpm |
| Claude Code CLI | latest | claude.ai/code |
Everything else (Biome, Prettier, TypeScript) is a workspace devDependency and installs with:
pnpm installAll work enters through the issue tracker as a Feature. The recommended flow:
- Capture the idea — open a GitHub Issue directly, or run
/triageto walk it through the state machine. - Grill the design with
/grill-meor/grill-with-docsuntil the problem and solution are clear. - Create a PRD and issues with
/to-prd→/to-issues. - Implement each issue manually with
/tdd. (AFK execution viaunic-dlc-buildwill replace this step once the harness is wired in — see ADR-0030 and ADR-0031.) - Open a PR targeting
develop.
See docs/process/development-workflow.md for the full 8-phase lifecycle.
pnpm ci:check # Biome CI and Prettier check (Prettier for MD)
pnpm check # Format check (Biome & Prettier for MD)
pnpm format # Format (Biome & Prettier for MD), writes files
pnpm test # tests across all packages
pnpm typecheck # type-check across all packages
pnpm --filter <name> verify:changelog # changelog check for one plugin