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.
- package/README.md +24 -14
- package/package.json +1 -1
- package/templates/base/.claude/skills/beads/CLAUDE.md +87 -0
- package/templates/base/.claude/skills/beads/README.md +123 -0
- package/templates/base/.claude/skills/beads/SKILL.md +77 -715
- package/templates/base/.claude/skills/beads/adr/0001-bd-prime-as-source-of-truth.md +61 -0
- package/templates/base/.claude/skills/beads/resources/AGENTS.md +62 -0
- package/templates/base/.claude/skills/beads/resources/ASYNC_GATES.md +175 -0
- package/templates/base/.claude/skills/beads/resources/BOUNDARIES.md +520 -0
- package/templates/base/.claude/skills/beads/resources/CHEMISTRY_PATTERNS.md +197 -0
- package/templates/base/.claude/skills/beads/resources/CLI_REFERENCE.md +561 -0
- package/templates/base/.claude/skills/beads/resources/DEPENDENCIES.md +754 -0
- package/templates/base/.claude/skills/beads/resources/INTEGRATION_PATTERNS.md +438 -0
- package/templates/base/.claude/skills/beads/resources/ISSUE_CREATION.md +150 -0
- package/templates/base/.claude/skills/beads/resources/MOLECULES.md +370 -0
- package/templates/base/.claude/skills/beads/resources/PATTERNS.md +363 -0
- package/templates/base/.claude/skills/beads/resources/RESUMABILITY.md +239 -0
- package/templates/base/.claude/skills/beads/resources/STATIC_DATA.md +61 -0
- package/templates/base/.claude/skills/beads/resources/TROUBLESHOOTING.md +537 -0
- package/templates/base/.claude/skills/beads/resources/WORKFLOWS.md +638 -0
- package/templates/base/.claude/skills/beads/resources/WORKTREES.md +95 -0
- package/templates/base/.claude/skills/browser-skill/SKILL.md +72 -0
- package/templates/base/.claude/skills/knowledge/SKILL.md +155 -205
- package/templates/base/.claude/skills/knowledge/reference/doc-mapping.md +49 -0
- package/templates/base/.claude/skills/knowledge/reference/extraction-prompts.md +102 -0
- package/templates/base/.claude/skills/kuckit/SKILL.md +15 -9
- package/templates/base/.claude/skills/kuckit/references/MODULE-DEVELOPMENT.md +142 -0
- package/templates/base/.claude/skills/kuckit/references/PACKAGES.md +22 -17
- package/templates/base/.claude/skills/kuckit/references/PUBLISHING.md +92 -0
- package/templates/base/.claude/skills/module-testing/SKILL.md +1 -1
- package/templates/base/.claude/skills/planning/SKILL.md +26 -1
- package/templates/base/.env.example +1 -1
- package/templates/base/AGENTS.md +155 -418
- package/templates/base/apps/server/src/modules.ts +14 -1
- package/templates/base/apps/web/.env.example +1 -1
- package/templates/base/apps/web/src/routes/$.tsx +0 -1
- package/templates/base/apps/web/src/routes/dashboard.tsx +3 -1
- package/templates/base/docs/ARCHITECTURE.md +689 -0
- package/templates/base/docs/DEPENDENCY-INJECTION.md +871 -0
- package/templates/base/docs/DEPLOYMENT.md +573 -0
- package/templates/base/docs/INDEX.md +135 -0
- package/templates/base/docs/MIGRATION.md +989 -0
- package/templates/base/docs/MODULE_CSS.md +343 -0
- package/templates/base/docs/MODULE_TESTING.md +368 -0
- package/templates/base/docs/MULTI_AGENT_WORKFLOW.md +909 -0
- package/templates/base/docs/TESTING.md +579 -0
- package/templates/base/docs/TROUBLESHOOTING.md +360 -0
- package/templates/base/package.json +2 -0
- package/templates/base/packages/items-module/AGENTS.md +3 -1
- package/templates/base/packages/items-module/src/server/adapters/{item.drizzle.ts → item.repository.ts} +1 -13
- package/templates/base/packages/items-module/src/server/module.ts +2 -1
- 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:
|
|
48
|
+
config: mergedConfig,
|
|
36
49
|
} as ModuleSpec
|
|
37
50
|
}
|
|
38
51
|
// For npm packages, use package-based loading
|
|
@@ -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({
|