create-kuckit-app 2.0.2 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. package/README.md +24 -14
  2. package/package.json +1 -1
  3. package/templates/base/.claude/skills/beads/CLAUDE.md +87 -0
  4. package/templates/base/.claude/skills/beads/README.md +123 -0
  5. package/templates/base/.claude/skills/beads/SKILL.md +77 -715
  6. package/templates/base/.claude/skills/beads/adr/0001-bd-prime-as-source-of-truth.md +61 -0
  7. package/templates/base/.claude/skills/beads/resources/AGENTS.md +62 -0
  8. package/templates/base/.claude/skills/beads/resources/ASYNC_GATES.md +175 -0
  9. package/templates/base/.claude/skills/beads/resources/BOUNDARIES.md +520 -0
  10. package/templates/base/.claude/skills/beads/resources/CHEMISTRY_PATTERNS.md +197 -0
  11. package/templates/base/.claude/skills/beads/resources/CLI_REFERENCE.md +561 -0
  12. package/templates/base/.claude/skills/beads/resources/DEPENDENCIES.md +754 -0
  13. package/templates/base/.claude/skills/beads/resources/INTEGRATION_PATTERNS.md +438 -0
  14. package/templates/base/.claude/skills/beads/resources/ISSUE_CREATION.md +150 -0
  15. package/templates/base/.claude/skills/beads/resources/MOLECULES.md +370 -0
  16. package/templates/base/.claude/skills/beads/resources/PATTERNS.md +363 -0
  17. package/templates/base/.claude/skills/beads/resources/RESUMABILITY.md +239 -0
  18. package/templates/base/.claude/skills/beads/resources/STATIC_DATA.md +61 -0
  19. package/templates/base/.claude/skills/beads/resources/TROUBLESHOOTING.md +537 -0
  20. package/templates/base/.claude/skills/beads/resources/WORKFLOWS.md +638 -0
  21. package/templates/base/.claude/skills/beads/resources/WORKTREES.md +95 -0
  22. package/templates/base/.claude/skills/browser-skill/SKILL.md +72 -0
  23. package/templates/base/.claude/skills/knowledge/SKILL.md +155 -205
  24. package/templates/base/.claude/skills/knowledge/reference/doc-mapping.md +49 -0
  25. package/templates/base/.claude/skills/knowledge/reference/extraction-prompts.md +102 -0
  26. package/templates/base/.claude/skills/kuckit/SKILL.md +15 -9
  27. package/templates/base/.claude/skills/kuckit/references/MODULE-DEVELOPMENT.md +142 -0
  28. package/templates/base/.claude/skills/kuckit/references/PACKAGES.md +22 -17
  29. package/templates/base/.claude/skills/kuckit/references/PUBLISHING.md +92 -0
  30. package/templates/base/.claude/skills/module-testing/SKILL.md +1 -1
  31. package/templates/base/.claude/skills/planning/SKILL.md +26 -1
  32. package/templates/base/.env.example +1 -1
  33. package/templates/base/AGENTS.md +155 -418
  34. package/templates/base/apps/server/src/modules.ts +14 -1
  35. package/templates/base/apps/web/.env.example +1 -1
  36. package/templates/base/apps/web/src/routes/$.tsx +0 -1
  37. package/templates/base/apps/web/src/routes/dashboard.tsx +3 -1
  38. package/templates/base/docs/ARCHITECTURE.md +689 -0
  39. package/templates/base/docs/DEPENDENCY-INJECTION.md +871 -0
  40. package/templates/base/docs/DEPLOYMENT.md +573 -0
  41. package/templates/base/docs/INDEX.md +135 -0
  42. package/templates/base/docs/MIGRATION.md +989 -0
  43. package/templates/base/docs/MODULE_CSS.md +343 -0
  44. package/templates/base/docs/MODULE_TESTING.md +368 -0
  45. package/templates/base/docs/MULTI_AGENT_WORKFLOW.md +909 -0
  46. package/templates/base/docs/TESTING.md +579 -0
  47. package/templates/base/docs/TROUBLESHOOTING.md +360 -0
  48. package/templates/base/package.json +2 -0
  49. package/templates/base/packages/items-module/AGENTS.md +3 -1
  50. package/templates/base/packages/items-module/src/server/adapters/{item.drizzle.ts → item.repository.ts} +1 -13
  51. package/templates/base/packages/items-module/src/server/module.ts +2 -1
  52. package/templates/base/packages/items-module/src/server/schema/item.ts +13 -0
@@ -30,9 +30,22 @@ function configToModuleSpecs(config: KuckitConfig): ModuleSpec[] {
30
30
  .map((m) => {
31
31
  const known = KNOWN_MODULES[m.package]
32
32
  if (known) {
33
+ // Shallow merge: user config overrides defaults at the top level.
34
+ // Nested objects are replaced entirely, not deep-merged.
35
+ // Example: if defaultConfig has { planMapping: { free: 'x' } } and
36
+ // user provides { planMapping: { pro: 'y' } }, result is { planMapping: { pro: 'y' } }.
37
+ // This is intentional - users specifying a nested object want full control over it.
38
+ let mergedConfig = m.config
39
+ if (known.defaultConfig && typeof known.defaultConfig === 'object') {
40
+ const userConfig = m.config && typeof m.config === 'object' ? m.config : {}
41
+ mergedConfig = {
42
+ ...(known.defaultConfig as Record<string, unknown>),
43
+ ...(userConfig as Record<string, unknown>),
44
+ }
45
+ }
33
46
  return {
34
47
  module: known.module,
35
- config: m.config ?? known.defaultConfig,
48
+ config: mergedConfig,
36
49
  } as ModuleSpec
37
50
  }
38
51
  // For npm packages, use package-based loading
@@ -1,4 +1,4 @@
1
1
  # Web Environment Variables
2
2
 
3
3
  # API URL for the backend server
4
- VITE_API_URL=http://localhost:3000
4
+ VITE_SERVER_URL=http://localhost:3000
@@ -8,7 +8,6 @@ import { KuckitModuleRoute } from '@kuckit/app-web'
8
8
  * and uses the KuckitModuleRoute component to look up and render
9
9
  * the appropriate module component from the RouteRegistry.
10
10
  */
11
- // @ts-expect-error - Route types are generated when dev server runs
12
11
  export const Route = createFileRoute('/$')({
13
12
  component: KuckitModuleRoute,
14
13
  })
@@ -2,9 +2,11 @@ import { createFileRoute, Outlet, redirect } from '@tanstack/react-router'
2
2
  import { DashboardLayout } from '@/components/dashboard/dashboard-layout'
3
3
  import { createAuthClientService } from '@kuckit/app-web'
4
4
 
5
+ const serverUrl = import.meta.env.VITE_SERVER_URL || 'http://localhost:3000'
6
+
5
7
  export const Route = createFileRoute('/dashboard')({
6
8
  beforeLoad: async () => {
7
- const authClient = createAuthClientService()
9
+ const authClient = createAuthClientService(serverUrl)
8
10
  const session = await authClient.getSession()
9
11
  if (!session.data) {
10
12
  throw redirect({