A commercial React development framework with NAC-3 baked in and Claude Code embedded. You bring a project (or describe one in natural language); Yujin Forge migrates / scaffolds it, makes every UI element agent-driveable through NAC-3, generates the test corpus, builds the mocks, and ships.
Status: CLI alpha, 2026-05-17. Eight commands working end-to-end; 74 tests green. See
docs/SESSION_HANDOFF_2026_05_17.mdfor what shipped. v1.0 GA still gates on NAC v2.3 GA + the voice/chat panel.
Three things in one:
-
A React framework opinionated on NAC-3. Every component you author through Yujin Forge is NAC-3 conformant out of the box. No retrofit, no audit -- the scaffolder emits
data-nac-*attrs + manifests + tests automatically. -
A development workbench with Claude Code embedded. Voice + chat input. You describe a feature, Forge proposes a design, you approve, Forge writes the code + tests + manifests + mocks. Iterates with you.
-
A migration tool for existing React projects. Upload a project, Forge audits NAC conformance, proposes the migration path screen-by-screen, executes the diff, runs tests, ships.
NAC (the spec) is Apache-2.0 free forever. The reference runtime
@yujin/nac is Apache-2.0 free forever. Yujin Forge is the
commercial layer:
- The NAC-3 build that ships inside Forge is a feature-extended fork: AI-augmented manifest authoring, automatic test mocks, voice-driven scaffolder.
- License-gated by Yujin parent (rpaforce.com). Per-seat subscription. Trial works for 30 days; commercial features refuse to start without a valid token.
The Apache spec attracts the ecosystem; Forge monetises the delivery experience for teams that want to skip the per-app plumbing.
yf new <slug>-- bootstrap a Yujin Forge React app.yf migrate <existing-react-repo>-- audit + propose migration to NAC-3.yf chat-- launches the embedded Claude Code voice+text panel hooked to the current project. Reads/writes its source.yf test-- runs the auto-generated test corpus + the mocks + reports coverage by NAC pipeline stage.yf ship-- gates: tests green + NAC-3 validate clean + LLM syntactic review pass + license valid -> deploy hook.
- Spec doc (
docs/SPEC.md) -- the contract Yujin Forge makes with adopting teams. - CLI skeleton (
bin/yf) -- TypeScript, runs locally, delegates to Claude Code via the official SDK. - Project template (
templates/react-app/) -- Vite + React 18 +@yujin/nac-commercial(the gated build) + a starter test corpus. - License client (
src/license.ts) -- talks to the parent Yujin license server, caches tokens, gracefully degrades to trial mode + refuses commercial features when expired. - Test corpus generator (
src/codegen/tests.ts) -- given a component + its NAC manifest, emits Playwright + Vitest tests covering each role/action/event combination. - Mock generator (
src/codegen/mocks.ts) -- given an API surface inferred from the project's network calls, emits MSW handlers + fixtures. - Migration harness (
src/migrate/) -- AST walker that identifies NAC-2 candidate elements + proposes data-nac-id/role assignments + writes manifests. - Voice + chat panel (
src/panel/) -- embedded inyf devrunning locally. Reusesnac-chat-client.js. Calls Claude Code SDK with workspace-aware tools.
- License-gated commercial features stay closed-source.
- The migration tool itself ships open (so adopters can audit what's being changed).
- Tests + mocks generated by Forge are owned by the adopter, no shadow IP.
- Yujin Forge tracks NAC's stable release; we never ship a Forge version against a non-GA NAC spec.
NAC (Apache-2.0) -- pkuschnirof/rpaforce-crm + yujin.app/nac-spec
spec + reference runtime + @yujin/nac NPM package
|
| depends on
v
Yujin framework (Apache-2.0) -- pkuschnirof/yujin
framework planning, brownfield migration recipe, ecosystem
|
| extends commercially
v
Yujin Forge (closed core, open shell) -- pkuschnirof/yujin-forge
React-opinionated, Claude Code embedded, licence-gated
|
| downstream adopter
v
Customer React projects
- NAC spec
- Yujin framework
- Yujin CRM (the first adopter of all three layers above)