@nextsparkjs/ai-workflow 0.1.0-beta.100
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/LICENSE +21 -0
- package/README.md +115 -0
- package/claude/_docs/workflows-optimizations.md +359 -0
- package/claude/agents/api-tester.md +634 -0
- package/claude/agents/architecture-supervisor.md +1351 -0
- package/claude/agents/backend-developer.md +997 -0
- package/claude/agents/backend-validator.md +417 -0
- package/claude/agents/bdd-docs-writer.md +737 -0
- package/claude/agents/block-developer.md +677 -0
- package/claude/agents/code-reviewer.md +1432 -0
- package/claude/agents/db-developer.md +721 -0
- package/claude/agents/db-validator.md +407 -0
- package/claude/agents/demo-video-generator.md +493 -0
- package/claude/agents/documentation-writer.md +1268 -0
- package/claude/agents/frontend-developer.md +1234 -0
- package/claude/agents/frontend-validator.md +777 -0
- package/claude/agents/functional-validator.md +630 -0
- package/claude/agents/mock-analyst.md +387 -0
- package/claude/agents/product-manager.md +963 -0
- package/claude/agents/qa-automation.md +1762 -0
- package/claude/agents/release-manager.md +634 -0
- package/claude/agents/selectors-translator.md +262 -0
- package/claude/agents/unit-test-writer.md +785 -0
- package/claude/agents/visual-comparator.md +329 -0
- package/claude/agents/workflow-maintainer.md +352 -0
- package/claude/commands/do/README.md +88 -0
- package/claude/commands/do/create-api.md +64 -0
- package/claude/commands/do/create-entity.md +66 -0
- package/claude/commands/do/create-migration.md +64 -0
- package/claude/commands/do/create-plugin.md +56 -0
- package/claude/commands/do/create-theme.md +70 -0
- package/claude/commands/do/mock-data.md +67 -0
- package/claude/commands/do/reset-db.md +71 -0
- package/claude/commands/do/setup-scheduled-action.md +75 -0
- package/claude/commands/do/sync-code-review.md +117 -0
- package/claude/commands/do/update-selectors.md +112 -0
- package/claude/commands/do/use-skills.md +90 -0
- package/claude/commands/do/validate-blocks.md +69 -0
- package/claude/commands/how-to/README.md +261 -0
- package/claude/commands/how-to/add-metadata.md +692 -0
- package/claude/commands/how-to/add-taxonomies.md +806 -0
- package/claude/commands/how-to/add-translations.md +571 -0
- package/claude/commands/how-to/create-api.md +577 -0
- package/claude/commands/how-to/create-block.md +575 -0
- package/claude/commands/how-to/create-child-entities.md +771 -0
- package/claude/commands/how-to/create-entity.md +597 -0
- package/claude/commands/how-to/create-migrations.md +605 -0
- package/claude/commands/how-to/create-plugin.md +654 -0
- package/claude/commands/how-to/customize-app.md +481 -0
- package/claude/commands/how-to/customize-dashboard.md +553 -0
- package/claude/commands/how-to/customize-theme.md +438 -0
- package/claude/commands/how-to/define-features-flows.md +632 -0
- package/claude/commands/how-to/deploy.md +507 -0
- package/claude/commands/how-to/handle-file-uploads.md +746 -0
- package/claude/commands/how-to/implement-search.md +1001 -0
- package/claude/commands/how-to/install-plugins.md +352 -0
- package/claude/commands/how-to/manage-test-coverage.md +984 -0
- package/claude/commands/how-to/run-tests.md +400 -0
- package/claude/commands/how-to/set-app-languages.md +601 -0
- package/claude/commands/how-to/set-plans-and-permissions.md +575 -0
- package/claude/commands/how-to/set-scheduled-actions.md +527 -0
- package/claude/commands/how-to/set-user-roles-and-permissions.md +550 -0
- package/claude/commands/how-to/setup-authentication.md +388 -0
- package/claude/commands/how-to/setup-claude-code.md +440 -0
- package/claude/commands/how-to/setup-database.md +274 -0
- package/claude/commands/how-to/setup-email-providers.md +598 -0
- package/claude/commands/how-to/setup-mobile-dev.md +627 -0
- package/claude/commands/how-to/start.md +500 -0
- package/claude/commands/how-to/use-devtools.md +639 -0
- package/claude/commands/how-to/use-superadmin.md +622 -0
- package/claude/commands/session/README.md +193 -0
- package/claude/commands/session/block-create.md +190 -0
- package/claude/commands/session/block-list.md +203 -0
- package/claude/commands/session/block-update.md +192 -0
- package/claude/commands/session/block-validate.md +218 -0
- package/claude/commands/session/changelog.md +115 -0
- package/claude/commands/session/close.md +225 -0
- package/claude/commands/session/commit.md +174 -0
- package/claude/commands/session/db-entity.md +206 -0
- package/claude/commands/session/db-fix.md +212 -0
- package/claude/commands/session/db-sample.md +206 -0
- package/claude/commands/session/demo.md +178 -0
- package/claude/commands/session/doc-bdd.md +207 -0
- package/claude/commands/session/doc-feature.md +218 -0
- package/claude/commands/session/doc-read.md +225 -0
- package/claude/commands/session/execute.md +204 -0
- package/claude/commands/session/explain.md +202 -0
- package/claude/commands/session/fix-bug.md +210 -0
- package/claude/commands/session/fix-build.md +182 -0
- package/claude/commands/session/fix-test.md +189 -0
- package/claude/commands/session/pending.md +232 -0
- package/claude/commands/session/refine.md +188 -0
- package/claude/commands/session/resume.md +192 -0
- package/claude/commands/session/review.md +192 -0
- package/claude/commands/session/scope-change.md +181 -0
- package/claude/commands/session/start-blocks.md +347 -0
- package/claude/commands/session/start.md +604 -0
- package/claude/commands/session/status.md +169 -0
- package/claude/commands/session/test-fix.md +221 -0
- package/claude/commands/session/test-run.md +203 -0
- package/claude/commands/session/test-write.md +242 -0
- package/claude/commands/session/validate.md +162 -0
- package/claude/config/context.json +40 -0
- package/claude/config/github.json +69 -0
- package/claude/config/github.schema.json +106 -0
- package/claude/config/team.json +46 -0
- package/claude/config/team.schema.json +106 -0
- package/claude/config/workspace.json +43 -0
- package/claude/config/workspace.schema.json +75 -0
- package/claude/skills/README.md +228 -0
- package/claude/skills/accessibility/SKILL.md +573 -0
- package/claude/skills/api-bypass-layers/SKILL.md +550 -0
- package/claude/skills/asana-integration/SKILL.md +499 -0
- package/claude/skills/better-auth/SKILL.md +666 -0
- package/claude/skills/billing-subscriptions/SKILL.md +660 -0
- package/claude/skills/block-decision-matrix/SKILL.md +359 -0
- package/claude/skills/clickup-integration/SKILL.md +434 -0
- package/claude/skills/core-theme-responsibilities/SKILL.md +485 -0
- package/claude/skills/create-plugin/SKILL.md +425 -0
- package/claude/skills/create-theme/SKILL.md +331 -0
- package/claude/skills/cypress-api/SKILL.md +511 -0
- package/claude/skills/cypress-api/scripts/generate-api-controller.py +329 -0
- package/claude/skills/cypress-api/scripts/generate-api-test.py +930 -0
- package/claude/skills/cypress-e2e/SKILL.md +526 -0
- package/claude/skills/cypress-e2e/scripts/extract-selectors.py +383 -0
- package/claude/skills/cypress-e2e/scripts/generate-uat-test.py +788 -0
- package/claude/skills/cypress-selectors/SKILL.md +309 -0
- package/claude/skills/cypress-selectors/scripts/extract-missing.py +243 -0
- package/claude/skills/cypress-selectors/scripts/generate-block-selectors.py +283 -0
- package/claude/skills/cypress-selectors/scripts/validate-selectors.py +145 -0
- package/claude/skills/database-migrations/SKILL.md +335 -0
- package/claude/skills/database-migrations/scripts/generate-sample-data.py +284 -0
- package/claude/skills/database-migrations/scripts/validate-migration.py +323 -0
- package/claude/skills/design-system/SKILL.md +682 -0
- package/claude/skills/documentation/SKILL.md +540 -0
- package/claude/skills/entity-api/SKILL.md +482 -0
- package/claude/skills/entity-system/SKILL.md +635 -0
- package/claude/skills/entity-system/scripts/generate-child-migration.py +298 -0
- package/claude/skills/entity-system/scripts/generate-metas-migration.py +233 -0
- package/claude/skills/entity-system/scripts/generate-migration.py +382 -0
- package/claude/skills/entity-system/scripts/generate-sample-data.py +418 -0
- package/claude/skills/entity-system/scripts/scaffold-entity.py +661 -0
- package/claude/skills/github/SKILL.md +467 -0
- package/claude/skills/i18n-nextintl/SKILL.md +302 -0
- package/claude/skills/i18n-nextintl/scripts/add-translation.py +243 -0
- package/claude/skills/i18n-nextintl/scripts/extract-hardcoded.py +246 -0
- package/claude/skills/i18n-nextintl/scripts/validate-translations.py +260 -0
- package/claude/skills/impact-analysis/SKILL.md +203 -0
- package/claude/skills/jest-unit/SKILL.md +306 -0
- package/claude/skills/jest-unit/references/component-testing.md +371 -0
- package/claude/skills/jest-unit/references/mocking-patterns.md +380 -0
- package/claude/skills/jest-unit/references/service-hook-testing.md +454 -0
- package/claude/skills/jira-integration/SKILL.md +539 -0
- package/claude/skills/media-library/SKILL.md +743 -0
- package/claude/skills/mock-analysis/SKILL.md +276 -0
- package/claude/skills/monorepo-architecture/SKILL.md +162 -0
- package/claude/skills/nextjs-api-development/SKILL.md +364 -0
- package/claude/skills/nextjs-api-development/scripts/generate-crud-tests.py +456 -0
- package/claude/skills/nextjs-api-development/scripts/scaffold-endpoint.py +481 -0
- package/claude/skills/nextjs-api-development/scripts/validate-api.py +283 -0
- package/claude/skills/notion-integration/SKILL.md +641 -0
- package/claude/skills/npm-development-workflow/SKILL.md +480 -0
- package/claude/skills/page-builder-blocks/SKILL.md +530 -0
- package/claude/skills/page-builder-blocks/scripts/scaffold-block.py +444 -0
- package/claude/skills/permissions-system/SKILL.md +619 -0
- package/claude/skills/plugins/SKILL.md +340 -0
- package/claude/skills/plugins/references/plugin-templates.md +414 -0
- package/claude/skills/plugins/references/plugin-testing.md +353 -0
- package/claude/skills/plugins/references/plugin-types.md +198 -0
- package/claude/skills/plugins/scripts/scaffold-plugin.py +443 -0
- package/claude/skills/pom-patterns/SKILL.md +452 -0
- package/claude/skills/pom-patterns/scripts/generate-pom.py +392 -0
- package/claude/skills/rate-limiting/SKILL.md +342 -0
- package/claude/skills/react-best-practices/AGENTS.md +2410 -0
- package/claude/skills/react-best-practices/README.md +123 -0
- package/claude/skills/react-best-practices/SKILL.md +125 -0
- package/claude/skills/react-best-practices/metadata.json +15 -0
- package/claude/skills/react-best-practices/rules/_sections.md +46 -0
- package/claude/skills/react-best-practices/rules/_template.md +28 -0
- package/claude/skills/react-best-practices/rules/advanced-event-handler-refs.md +55 -0
- package/claude/skills/react-best-practices/rules/advanced-use-latest.md +49 -0
- package/claude/skills/react-best-practices/rules/async-api-routes.md +38 -0
- package/claude/skills/react-best-practices/rules/async-defer-await.md +80 -0
- package/claude/skills/react-best-practices/rules/async-dependencies.md +36 -0
- package/claude/skills/react-best-practices/rules/async-parallel.md +28 -0
- package/claude/skills/react-best-practices/rules/async-suspense-boundaries.md +99 -0
- package/claude/skills/react-best-practices/rules/bundle-barrel-imports.md +59 -0
- package/claude/skills/react-best-practices/rules/bundle-conditional.md +31 -0
- package/claude/skills/react-best-practices/rules/bundle-defer-third-party.md +49 -0
- package/claude/skills/react-best-practices/rules/bundle-dynamic-imports.md +35 -0
- package/claude/skills/react-best-practices/rules/bundle-preload.md +50 -0
- package/claude/skills/react-best-practices/rules/client-event-listeners.md +74 -0
- package/claude/skills/react-best-practices/rules/client-localstorage-schema.md +71 -0
- package/claude/skills/react-best-practices/rules/client-passive-event-listeners.md +48 -0
- package/claude/skills/react-best-practices/rules/client-swr-dedup.md +56 -0
- package/claude/skills/react-best-practices/rules/js-batch-dom-css.md +82 -0
- package/claude/skills/react-best-practices/rules/js-cache-function-results.md +80 -0
- package/claude/skills/react-best-practices/rules/js-cache-property-access.md +28 -0
- package/claude/skills/react-best-practices/rules/js-cache-storage.md +70 -0
- package/claude/skills/react-best-practices/rules/js-combine-iterations.md +32 -0
- package/claude/skills/react-best-practices/rules/js-early-exit.md +50 -0
- package/claude/skills/react-best-practices/rules/js-hoist-regexp.md +45 -0
- package/claude/skills/react-best-practices/rules/js-index-maps.md +37 -0
- package/claude/skills/react-best-practices/rules/js-length-check-first.md +49 -0
- package/claude/skills/react-best-practices/rules/js-min-max-loop.md +82 -0
- package/claude/skills/react-best-practices/rules/js-set-map-lookups.md +24 -0
- package/claude/skills/react-best-practices/rules/js-tosorted-immutable.md +57 -0
- package/claude/skills/react-best-practices/rules/rendering-activity.md +26 -0
- package/claude/skills/react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -0
- package/claude/skills/react-best-practices/rules/rendering-conditional-render.md +40 -0
- package/claude/skills/react-best-practices/rules/rendering-content-visibility.md +38 -0
- package/claude/skills/react-best-practices/rules/rendering-hoist-jsx.md +46 -0
- package/claude/skills/react-best-practices/rules/rendering-hydration-no-flicker.md +82 -0
- package/claude/skills/react-best-practices/rules/rendering-svg-precision.md +28 -0
- package/claude/skills/react-best-practices/rules/rerender-defer-reads.md +39 -0
- package/claude/skills/react-best-practices/rules/rerender-dependencies.md +45 -0
- package/claude/skills/react-best-practices/rules/rerender-derived-state.md +29 -0
- package/claude/skills/react-best-practices/rules/rerender-functional-setstate.md +74 -0
- package/claude/skills/react-best-practices/rules/rerender-lazy-state-init.md +58 -0
- package/claude/skills/react-best-practices/rules/rerender-memo.md +44 -0
- package/claude/skills/react-best-practices/rules/rerender-transitions.md +40 -0
- package/claude/skills/react-best-practices/rules/server-after-nonblocking.md +73 -0
- package/claude/skills/react-best-practices/rules/server-cache-lru.md +41 -0
- package/claude/skills/react-best-practices/rules/server-cache-react.md +76 -0
- package/claude/skills/react-best-practices/rules/server-parallel-fetching.md +83 -0
- package/claude/skills/react-best-practices/rules/server-serialization.md +38 -0
- package/claude/skills/react-patterns/SKILL.md +688 -0
- package/claude/skills/registry-system/SKILL.md +331 -0
- package/claude/skills/scheduled-actions/SKILL.md +671 -0
- package/claude/skills/scope-enforcement/SKILL.md +542 -0
- package/claude/skills/scope-enforcement/scripts/validate-scope.py +357 -0
- package/claude/skills/server-actions/SKILL.md +493 -0
- package/claude/skills/service-layer/SKILL.md +587 -0
- package/claude/skills/session-management/SKILL.md +266 -0
- package/claude/skills/session-management/scripts/create-session.py +166 -0
- package/claude/skills/session-management/scripts/iteration-close.sh +105 -0
- package/claude/skills/session-management/scripts/iteration-init.sh +180 -0
- package/claude/skills/session-management/scripts/session-archive.sh +87 -0
- package/claude/skills/session-management/scripts/session-close.sh +133 -0
- package/claude/skills/session-management/scripts/session-init.sh +225 -0
- package/claude/skills/session-management/scripts/session-list.sh +163 -0
- package/claude/skills/session-management/scripts/split-plan.sh +116 -0
- package/claude/skills/shadcn-components/SKILL.md +586 -0
- package/claude/skills/shadcn-theming/SKILL.md +446 -0
- package/claude/skills/suspense-loading/SKILL.md +280 -0
- package/claude/skills/tailwind-theming/SKILL.md +507 -0
- package/claude/skills/tanstack-query/SKILL.md +608 -0
- package/claude/skills/test-coverage/SKILL.md +239 -0
- package/claude/skills/web-design-guidelines/SKILL.md +39 -0
- package/claude/skills/zod-validation/SKILL.md +537 -0
- package/claude/templates/blocks/progress.md +86 -0
- package/claude/templates/iteration/changes.md +61 -0
- package/claude/templates/iteration/progress.md +55 -0
- package/claude/templates/log.md +31 -0
- package/claude/templates/story/context.md +77 -0
- package/claude/templates/story/pendings.md +37 -0
- package/claude/templates/story/plan.md +299 -0
- package/claude/templates/story/requirements.md +109 -0
- package/claude/templates/story/scope.json +10 -0
- package/claude/templates/story/tests.md +91 -0
- package/claude/templates/task/progress.md +58 -0
- package/claude/templates/task/requirements.md +54 -0
- package/claude/workflows/README.md +154 -0
- package/claude/workflows/blocks.md +614 -0
- package/claude/workflows/story.md +1207 -0
- package/claude/workflows/task.md +927 -0
- package/claude/workflows/tweak.md +527 -0
- package/cursor/.gitkeep +0 -0
- package/package.json +35 -0
- package/scripts/postinstall.mjs +198 -0
- package/scripts/setup.mjs +282 -0
- package/scripts/sync.mjs +209 -0
|
@@ -0,0 +1,331 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: create-theme
|
|
3
|
+
description: |
|
|
4
|
+
Guide for creating new themes from preset template.
|
|
5
|
+
CRITICAL: Includes MANDATORY dependency management rules for NPM distribution.
|
|
6
|
+
allowed-tools: Bash, Read, Write, Edit, Glob, Grep
|
|
7
|
+
version: "2.0"
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Create Theme Skill
|
|
11
|
+
|
|
12
|
+
Complete guide for scaffolding and configuring new themes from the preset template.
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
## ⚠️ MANDATORY: Dependency Management Rules
|
|
17
|
+
|
|
18
|
+
### Principio Fundamental
|
|
19
|
+
|
|
20
|
+
> **Si `@nextsparkjs/core` tiene una dependencia, los themes DEBEN declararla como `peerDependency`, NUNCA como `dependency`.**
|
|
21
|
+
|
|
22
|
+
### Template OBLIGATORIO de package.json para Themes
|
|
23
|
+
|
|
24
|
+
```json
|
|
25
|
+
{
|
|
26
|
+
"name": "@nextsparkjs/theme-NOMBRE",
|
|
27
|
+
"version": "1.0.0",
|
|
28
|
+
"private": false,
|
|
29
|
+
"main": "./config/theme.config.ts",
|
|
30
|
+
"dependencies": {
|
|
31
|
+
// Plugins que el theme requiere
|
|
32
|
+
"@nextsparkjs/plugin-langchain": "workspace:*"
|
|
33
|
+
},
|
|
34
|
+
"peerDependencies": {
|
|
35
|
+
"@nextsparkjs/core": "workspace:*",
|
|
36
|
+
"next": "^15.0.0",
|
|
37
|
+
"react": "^19.0.0",
|
|
38
|
+
"react-dom": "^19.0.0",
|
|
39
|
+
"zod": "^4.0.0"
|
|
40
|
+
// Agregar otras de core que el theme use directamente
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
### Import Rules
|
|
46
|
+
|
|
47
|
+
| Package | Can Import From |
|
|
48
|
+
|---------|-----------------|
|
|
49
|
+
| Theme | Core (peer), plugins (dep/peer), itself (never other themes) |
|
|
50
|
+
|
|
51
|
+
---
|
|
52
|
+
|
|
53
|
+
## Prerequisites
|
|
54
|
+
|
|
55
|
+
- **Command:** `pnpm create:theme <theme-name>`
|
|
56
|
+
- **Preset Location:** `core/templates/contents/themes/starter/`
|
|
57
|
+
- **Output Location:** `themes/<theme-name>/`
|
|
58
|
+
|
|
59
|
+
---
|
|
60
|
+
|
|
61
|
+
## Step 1: Gather Requirements
|
|
62
|
+
|
|
63
|
+
Before creating ANY theme, collect:
|
|
64
|
+
|
|
65
|
+
```markdown
|
|
66
|
+
Required Information:
|
|
67
|
+
1. Theme name (lowercase, hyphenated slug)
|
|
68
|
+
2. Display name (human-readable)
|
|
69
|
+
3. Description (purpose of the theme)
|
|
70
|
+
4. Author (team or individual)
|
|
71
|
+
5. Primary use case (SaaS type, industry, features)
|
|
72
|
+
6. Color preferences (optional - can use defaults)
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
---
|
|
76
|
+
|
|
77
|
+
## Step 2: Create Theme from Preset
|
|
78
|
+
|
|
79
|
+
### Basic Usage
|
|
80
|
+
|
|
81
|
+
```bash
|
|
82
|
+
pnpm create:theme <theme-name>
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
### With Options
|
|
86
|
+
|
|
87
|
+
```bash
|
|
88
|
+
pnpm create:theme <theme-name> \
|
|
89
|
+
--description "Theme description" \
|
|
90
|
+
--author "Author Name" \
|
|
91
|
+
--display-name "Display Name"
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
### Example
|
|
95
|
+
|
|
96
|
+
```bash
|
|
97
|
+
pnpm create:theme project-manager \
|
|
98
|
+
--description "Project management SaaS application" \
|
|
99
|
+
--author "Development Team" \
|
|
100
|
+
--display-name "Project Manager"
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
---
|
|
104
|
+
|
|
105
|
+
## Step 3: Theme Structure Created
|
|
106
|
+
|
|
107
|
+
```
|
|
108
|
+
contents/themes/<theme-name>/
|
|
109
|
+
├── config/
|
|
110
|
+
│ ├── theme.config.ts # Visual configuration
|
|
111
|
+
│ ├── app.config.ts # Application overrides
|
|
112
|
+
│ ├── dashboard.config.ts # Dashboard settings
|
|
113
|
+
│ └── permissions.config.ts # Permission overrides
|
|
114
|
+
├── about.md # Theme description
|
|
115
|
+
├── styles/
|
|
116
|
+
│ ├── globals.css # CSS variables
|
|
117
|
+
│ └── components.css # Component overrides
|
|
118
|
+
├── messages/
|
|
119
|
+
│ ├── en.json # English translations
|
|
120
|
+
│ └── es.json # Spanish translations
|
|
121
|
+
├── migrations/
|
|
122
|
+
│ ├── README.md # Migration docs
|
|
123
|
+
│ └── 001_example_schema.sql
|
|
124
|
+
├── docs/01-overview/
|
|
125
|
+
│ ├── 01-introduction.md
|
|
126
|
+
│ └── 02-customization.md
|
|
127
|
+
├── blocks/hero/ # Example hero block
|
|
128
|
+
├── entities/ # Data entities (optional)
|
|
129
|
+
│ └── [entity]/ # Each entity has 4 required files
|
|
130
|
+
│ ├── [entity].config.ts
|
|
131
|
+
│ ├── [entity].fields.ts
|
|
132
|
+
│ ├── [entity].types.ts
|
|
133
|
+
│ ├── [entity].service.ts
|
|
134
|
+
│ └── messages/
|
|
135
|
+
├── templates/ # Page overrides
|
|
136
|
+
├── public/brand/ # Brand assets
|
|
137
|
+
└── tests/ # Theme tests
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
---
|
|
141
|
+
|
|
142
|
+
## Step 4: Customize Configuration
|
|
143
|
+
|
|
144
|
+
### 4.1 theme.config.ts - Visual Identity
|
|
145
|
+
|
|
146
|
+
```typescript
|
|
147
|
+
colors: {
|
|
148
|
+
light: {
|
|
149
|
+
// Blue for corporate/professional
|
|
150
|
+
primary: 'oklch(0.55 0.2 250)',
|
|
151
|
+
// Green for productivity/growth
|
|
152
|
+
// primary: 'oklch(0.55 0.2 150)',
|
|
153
|
+
// Orange for creative/energy
|
|
154
|
+
// primary: 'oklch(0.65 0.2 50)',
|
|
155
|
+
// Purple for premium/luxury
|
|
156
|
+
// primary: 'oklch(0.55 0.2 300)',
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
// Enable required plugins
|
|
161
|
+
plugins: [
|
|
162
|
+
// 'plugin-analytics',
|
|
163
|
+
// 'plugin-payments',
|
|
164
|
+
]
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
### Color Presets by Use Case
|
|
168
|
+
|
|
169
|
+
| Use Case | Color | OKLCH Value |
|
|
170
|
+
|----------|-------|-------------|
|
|
171
|
+
| Corporate/Professional | Blue | `oklch(0.55 0.2 250)` |
|
|
172
|
+
| Productivity/Growth | Green | `oklch(0.55 0.2 150)` |
|
|
173
|
+
| Creative/Energy | Orange | `oklch(0.65 0.2 50)` |
|
|
174
|
+
| Premium/Luxury | Purple | `oklch(0.55 0.2 300)` |
|
|
175
|
+
| Healthcare/Trust | Teal | `oklch(0.55 0.15 200)` |
|
|
176
|
+
| Finance/Stability | Navy | `oklch(0.45 0.15 260)` |
|
|
177
|
+
| E-commerce/Action | Red | `oklch(0.55 0.2 25)` |
|
|
178
|
+
|
|
179
|
+
### 4.2 app.config.ts - Application Behavior
|
|
180
|
+
|
|
181
|
+
```typescript
|
|
182
|
+
// Multi-tenant SaaS
|
|
183
|
+
teams: {
|
|
184
|
+
allowCreation: true,
|
|
185
|
+
maxTeamsPerUser: 5,
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
// Single-tenant Application
|
|
189
|
+
teams: {
|
|
190
|
+
allowCreation: false,
|
|
191
|
+
maxTeamsPerUser: 1,
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
// Features
|
|
195
|
+
features: {
|
|
196
|
+
enableDocs: true, // Documentation site
|
|
197
|
+
enableBlog: false, // Blog functionality
|
|
198
|
+
}
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
### 4.3 dashboard.config.ts - Admin Interface
|
|
202
|
+
|
|
203
|
+
```typescript
|
|
204
|
+
topbar: {
|
|
205
|
+
showSearch: true,
|
|
206
|
+
showNotifications: true,
|
|
207
|
+
showMessages: false,
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
sidebar: {
|
|
211
|
+
defaultCollapsed: false,
|
|
212
|
+
showEntityCounts: true,
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
entities: {
|
|
216
|
+
defaultPageSize: 25,
|
|
217
|
+
enableBulkActions: true,
|
|
218
|
+
}
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
---
|
|
222
|
+
|
|
223
|
+
## Step 5: Verify Theme Setup
|
|
224
|
+
|
|
225
|
+
```bash
|
|
226
|
+
# 1. Verify theme structure
|
|
227
|
+
ls -la contents/themes/<theme-name>/
|
|
228
|
+
|
|
229
|
+
# 2. Build registry to include new theme
|
|
230
|
+
node core/scripts/build/registry.mjs
|
|
231
|
+
|
|
232
|
+
# 3. Verify theme appears in registry
|
|
233
|
+
grep "<theme-name>" core/lib/registries/theme-registry.ts
|
|
234
|
+
|
|
235
|
+
# 4. Test theme activation (optional)
|
|
236
|
+
# Update .env.local: NEXT_PUBLIC_ACTIVE_THEME='<theme-name>'
|
|
237
|
+
# Run: pnpm dev
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
---
|
|
241
|
+
|
|
242
|
+
## Step 6: Entity Structure (4-File Pattern)
|
|
243
|
+
|
|
244
|
+
Each theme entity requires 4 files:
|
|
245
|
+
|
|
246
|
+
| File | Purpose |
|
|
247
|
+
|------|---------|
|
|
248
|
+
| `[entity].config.ts` | Entity configuration |
|
|
249
|
+
| `[entity].fields.ts` | Field definitions |
|
|
250
|
+
| `[entity].types.ts` | TypeScript types |
|
|
251
|
+
| `[entity].service.ts` | Data access service |
|
|
252
|
+
|
|
253
|
+
**Reference:** `core/templates/contents/themes/starter/entities/tasks/`
|
|
254
|
+
|
|
255
|
+
---
|
|
256
|
+
|
|
257
|
+
## Verification Checklist
|
|
258
|
+
|
|
259
|
+
### Antes de crear un theme (OBLIGATORIO):
|
|
260
|
+
|
|
261
|
+
- [ ] Verificar si las dependencias que necesito ya están en core
|
|
262
|
+
- [ ] Si están en core → declararlas como `peerDependencies`
|
|
263
|
+
- [ ] Si NO están en core → declararlas como `dependencies`
|
|
264
|
+
- [ ] Plugins como `dependencies` (workspace:*)
|
|
265
|
+
- [ ] NUNCA duplicar: zod, react, next, @tanstack/*, lucide-react, etc.
|
|
266
|
+
- [ ] NUNCA importar de otros themes
|
|
267
|
+
|
|
268
|
+
### Después de crear el theme:
|
|
269
|
+
|
|
270
|
+
- [ ] Theme name follows naming conventions (lowercase, hyphenated)
|
|
271
|
+
- [ ] All preset files created successfully
|
|
272
|
+
- [ ] `package.json` created with correct peerDependencies
|
|
273
|
+
- [ ] theme.config.ts customized with appropriate colors
|
|
274
|
+
- [ ] app.config.ts configured for use case
|
|
275
|
+
- [ ] dashboard.config.ts settings appropriate
|
|
276
|
+
- [ ] permissions.config.ts reviewed
|
|
277
|
+
- [ ] messages/ translations have correct theme name
|
|
278
|
+
- [ ] Registry rebuilt: `node core/scripts/build/registry.mjs`
|
|
279
|
+
- [ ] Theme appears in THEME_REGISTRY
|
|
280
|
+
- [ ] No TypeScript errors
|
|
281
|
+
|
|
282
|
+
### Validación de Dependencias:
|
|
283
|
+
|
|
284
|
+
```bash
|
|
285
|
+
# Verificar que no hay duplicados
|
|
286
|
+
pnpm ls zod
|
|
287
|
+
# Debe mostrar UNA sola versión
|
|
288
|
+
```
|
|
289
|
+
|
|
290
|
+
---
|
|
291
|
+
|
|
292
|
+
## Anti-Patterns
|
|
293
|
+
|
|
294
|
+
| Pattern | Why It's Wrong | Correct Approach |
|
|
295
|
+
|---------|----------------|------------------|
|
|
296
|
+
| Manual file creation | Missing files, wrong structure | Use `pnpm create:theme` |
|
|
297
|
+
| Skipping registry rebuild | Theme won't be recognized | Always run `node core/scripts/build/registry.mjs` |
|
|
298
|
+
| Modifying core files | Architecture violation | Only work in `contents/themes/` |
|
|
299
|
+
| Implementing features | Scope creep | Hand off to backend/frontend agents |
|
|
300
|
+
|
|
301
|
+
---
|
|
302
|
+
|
|
303
|
+
## Handoff Template
|
|
304
|
+
|
|
305
|
+
After creating theme, document:
|
|
306
|
+
|
|
307
|
+
```markdown
|
|
308
|
+
## Theme Created: <theme-name>
|
|
309
|
+
|
|
310
|
+
### Completed Setup:
|
|
311
|
+
- Theme scaffolded from preset
|
|
312
|
+
- Visual identity configured (primary color: X)
|
|
313
|
+
- Application settings configured
|
|
314
|
+
- Dashboard layout configured
|
|
315
|
+
|
|
316
|
+
### Ready for Development:
|
|
317
|
+
- Backend: Add custom entities, migrations, API endpoints
|
|
318
|
+
- Frontend: Customize UI components, add blocks
|
|
319
|
+
|
|
320
|
+
### Environment Setup:
|
|
321
|
+
NEXT_PUBLIC_ACTIVE_THEME='<theme-name>'
|
|
322
|
+
```
|
|
323
|
+
|
|
324
|
+
---
|
|
325
|
+
|
|
326
|
+
## Related Documentation
|
|
327
|
+
|
|
328
|
+
- **`monorepo-architecture` skill** - CRITICAL: Package hierarchy and dependency management rules
|
|
329
|
+
- Entity System: `core/docs/04-entities/`
|
|
330
|
+
- Theme Config: `core/docs/02-themes/`
|
|
331
|
+
- Registry System: `core/docs/03-registry-system/`
|