@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,352 @@
|
|
|
1
|
+
# /how-to:install-plugins
|
|
2
|
+
|
|
3
|
+
Interactive guide to install and configure plugins in NextSpark.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Required Skills
|
|
8
|
+
|
|
9
|
+
Before executing, these skills provide deeper context:
|
|
10
|
+
- `.claude/skills/plugins/SKILL.md` - Plugin system architecture
|
|
11
|
+
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
## Syntax
|
|
15
|
+
|
|
16
|
+
```
|
|
17
|
+
/how-to:install-plugins
|
|
18
|
+
/how-to:install-plugins [plugin-name]
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## Behavior
|
|
24
|
+
|
|
25
|
+
Guides the user through installing plugins from NPM or local sources, configuring environment variables, and enabling them in their theme.
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
## Tutorial Structure
|
|
30
|
+
|
|
31
|
+
```
|
|
32
|
+
STEPS OVERVIEW (4 steps)
|
|
33
|
+
|
|
34
|
+
Step 1: Understanding Plugin Installation
|
|
35
|
+
└── NPM distribution model
|
|
36
|
+
|
|
37
|
+
Step 2: Install the Plugin Package
|
|
38
|
+
└── NPM or workspace installation
|
|
39
|
+
|
|
40
|
+
Step 3: Configure Environment Variables
|
|
41
|
+
└── Set up required credentials
|
|
42
|
+
|
|
43
|
+
Step 4: Enable and Use the Plugin
|
|
44
|
+
└── Integrate into your theme
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
## Step 1: Understanding Plugin Installation
|
|
50
|
+
|
|
51
|
+
```
|
|
52
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
53
|
+
📚 HOW TO: INSTALL PLUGINS
|
|
54
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
55
|
+
|
|
56
|
+
STEP 1 OF 4: Understanding Plugin Installation
|
|
57
|
+
|
|
58
|
+
NextSpark uses **Model B Distribution**:
|
|
59
|
+
|
|
60
|
+
┌─────────────────────────────────────────────┐
|
|
61
|
+
│ PLUGIN DISTRIBUTION MODEL │
|
|
62
|
+
│ ───────────────────────────────────────── │
|
|
63
|
+
│ │
|
|
64
|
+
│ NPM Package → CLI copies to project │
|
|
65
|
+
│ │
|
|
66
|
+
│ @nextsparkjs/plugin-ai │
|
|
67
|
+
│ │ │
|
|
68
|
+
│ ↓ (nextspark install) │
|
|
69
|
+
│ │
|
|
70
|
+
│ contents/plugins/plugin-ai/ │
|
|
71
|
+
│ │
|
|
72
|
+
└─────────────────────────────────────────────┘
|
|
73
|
+
|
|
74
|
+
Key Point: Plugins are COPIED to your project,
|
|
75
|
+
NOT kept in node_modules.
|
|
76
|
+
|
|
77
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
78
|
+
|
|
79
|
+
📋 Available Official Plugins:
|
|
80
|
+
|
|
81
|
+
• @nextsparkjs/plugin-ai - AI assistant integration
|
|
82
|
+
• @nextsparkjs/plugin-analytics - Usage analytics
|
|
83
|
+
• @nextsparkjs/plugin-email - Email sending (Resend)
|
|
84
|
+
• @nextsparkjs/plugin-storage - File storage (S3)
|
|
85
|
+
• @nextsparkjs/plugin-payments - Additional payment providers
|
|
86
|
+
|
|
87
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
88
|
+
|
|
89
|
+
What plugin would you like to install?
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
---
|
|
93
|
+
|
|
94
|
+
## Step 2: Install the Plugin Package
|
|
95
|
+
|
|
96
|
+
```
|
|
97
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
98
|
+
STEP 2 OF 4: Install the Plugin Package
|
|
99
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
100
|
+
|
|
101
|
+
📋 Method 1: Using NextSpark CLI (Recommended)
|
|
102
|
+
|
|
103
|
+
```bash
|
|
104
|
+
# Install a plugin
|
|
105
|
+
npx nextspark install plugin-ai
|
|
106
|
+
|
|
107
|
+
# Install multiple plugins
|
|
108
|
+
npx nextspark install plugin-ai plugin-analytics
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
This will:
|
|
112
|
+
1. Download the plugin from NPM
|
|
113
|
+
2. Copy to contents/plugins/
|
|
114
|
+
3. Add dependencies to your package.json
|
|
115
|
+
4. Create .env.example entries
|
|
116
|
+
|
|
117
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
118
|
+
|
|
119
|
+
📋 Method 2: Manual Installation
|
|
120
|
+
|
|
121
|
+
```bash
|
|
122
|
+
# 1. Install the NPM package temporarily
|
|
123
|
+
pnpm add @nextsparkjs/plugin-ai --save-dev
|
|
124
|
+
|
|
125
|
+
# 2. Copy to plugins directory
|
|
126
|
+
cp -r node_modules/@nextsparkjs/plugin-ai contents/plugins/plugin-ai
|
|
127
|
+
|
|
128
|
+
# 3. Remove from node_modules (optional)
|
|
129
|
+
pnpm remove @nextsparkjs/plugin-ai
|
|
130
|
+
|
|
131
|
+
# 4. Install plugin dependencies
|
|
132
|
+
pnpm install
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
136
|
+
|
|
137
|
+
📋 After Installation, Your Structure:
|
|
138
|
+
|
|
139
|
+
```
|
|
140
|
+
contents/
|
|
141
|
+
├── plugins/
|
|
142
|
+
│ ├── plugin-ai/ ← Installed plugin
|
|
143
|
+
│ │ ├── package.json
|
|
144
|
+
│ │ ├── plugin.config.ts
|
|
145
|
+
│ │ ├── .env.example
|
|
146
|
+
│ │ └── ...
|
|
147
|
+
│ └── plugin-analytics/ ← Another plugin
|
|
148
|
+
└── themes/
|
|
149
|
+
└── your-theme/
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
153
|
+
|
|
154
|
+
What would you like to do?
|
|
155
|
+
|
|
156
|
+
[1] Continue to Step 3 (Configure)
|
|
157
|
+
[2] Show me what's in the plugin package
|
|
158
|
+
[3] I have installation errors
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
---
|
|
162
|
+
|
|
163
|
+
## Step 3: Configure Environment Variables
|
|
164
|
+
|
|
165
|
+
```
|
|
166
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
167
|
+
STEP 3 OF 4: Configure Environment Variables
|
|
168
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
169
|
+
|
|
170
|
+
Each plugin has an .env.example file with required variables:
|
|
171
|
+
|
|
172
|
+
```bash
|
|
173
|
+
# Check what variables are needed
|
|
174
|
+
cat contents/plugins/plugin-ai/.env.example
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
178
|
+
|
|
179
|
+
📋 Example: plugin-ai Environment Variables
|
|
180
|
+
|
|
181
|
+
```env
|
|
182
|
+
# contents/plugins/plugin-ai/.env.example
|
|
183
|
+
|
|
184
|
+
# ============================================
|
|
185
|
+
# AI PLUGIN ENVIRONMENT VARIABLES
|
|
186
|
+
# ============================================
|
|
187
|
+
|
|
188
|
+
# Required: AI Provider API Key
|
|
189
|
+
AI_PLUGIN_API_KEY=your-anthropic-api-key
|
|
190
|
+
|
|
191
|
+
# Optional: Default model
|
|
192
|
+
AI_PLUGIN_DEFAULT_MODEL=claude-3-5-sonnet
|
|
193
|
+
|
|
194
|
+
# Optional: Enable debug logging
|
|
195
|
+
AI_PLUGIN_DEBUG=false
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
199
|
+
|
|
200
|
+
📋 Add Variables to Your .env:
|
|
201
|
+
|
|
202
|
+
```bash
|
|
203
|
+
# Copy to root .env file
|
|
204
|
+
cat contents/plugins/plugin-ai/.env.example >> .env
|
|
205
|
+
|
|
206
|
+
# Edit .env with your actual values
|
|
207
|
+
code .env
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
```env
|
|
211
|
+
# .env
|
|
212
|
+
# ... your existing variables ...
|
|
213
|
+
|
|
214
|
+
# AI Plugin
|
|
215
|
+
AI_PLUGIN_API_KEY=sk-ant-xxxx
|
|
216
|
+
AI_PLUGIN_DEFAULT_MODEL=claude-3-5-sonnet
|
|
217
|
+
AI_PLUGIN_DEBUG=false
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
221
|
+
|
|
222
|
+
⚠️ IMPORTANT: Variable Namespacing
|
|
223
|
+
|
|
224
|
+
Plugins use namespaced variables (e.g., AI_PLUGIN_*)
|
|
225
|
+
This prevents conflicts with root variables.
|
|
226
|
+
|
|
227
|
+
Global variables (DATABASE_URL, etc.) stay in root .env ONLY.
|
|
228
|
+
|
|
229
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
230
|
+
|
|
231
|
+
What would you like to do?
|
|
232
|
+
|
|
233
|
+
[1] Continue to Step 4 (Enable Plugin)
|
|
234
|
+
[2] What variables does this plugin need?
|
|
235
|
+
[3] I need help getting API keys
|
|
236
|
+
```
|
|
237
|
+
|
|
238
|
+
---
|
|
239
|
+
|
|
240
|
+
## Step 4: Enable and Use the Plugin
|
|
241
|
+
|
|
242
|
+
```
|
|
243
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
244
|
+
STEP 4 OF 4: Enable and Use the Plugin
|
|
245
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
246
|
+
|
|
247
|
+
1️⃣ Rebuild the Plugin Registry:
|
|
248
|
+
|
|
249
|
+
```bash
|
|
250
|
+
node core/scripts/build/registry.mjs
|
|
251
|
+
```
|
|
252
|
+
|
|
253
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
254
|
+
|
|
255
|
+
2️⃣ Use Plugin Components in Your Theme:
|
|
256
|
+
|
|
257
|
+
```typescript
|
|
258
|
+
// contents/themes/your-theme/app/dashboard/page.tsx
|
|
259
|
+
import { AIAssistant } from '@/plugins/plugin-ai/components'
|
|
260
|
+
|
|
261
|
+
export default function DashboardPage() {
|
|
262
|
+
return (
|
|
263
|
+
<div>
|
|
264
|
+
<h1>Dashboard</h1>
|
|
265
|
+
<AIAssistant />
|
|
266
|
+
</div>
|
|
267
|
+
)
|
|
268
|
+
}
|
|
269
|
+
```
|
|
270
|
+
|
|
271
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
272
|
+
|
|
273
|
+
3️⃣ Use Plugin Hooks:
|
|
274
|
+
|
|
275
|
+
```typescript
|
|
276
|
+
'use client'
|
|
277
|
+
|
|
278
|
+
import { useAI } from '@/plugins/plugin-ai/hooks'
|
|
279
|
+
|
|
280
|
+
export function MyComponent() {
|
|
281
|
+
const { chat, isLoading } = useAI()
|
|
282
|
+
|
|
283
|
+
const handleAsk = async () => {
|
|
284
|
+
const response = await chat('What is NextSpark?')
|
|
285
|
+
console.log(response)
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
return (
|
|
289
|
+
<button onClick={handleAsk} disabled={isLoading}>
|
|
290
|
+
Ask AI
|
|
291
|
+
</button>
|
|
292
|
+
)
|
|
293
|
+
}
|
|
294
|
+
```
|
|
295
|
+
|
|
296
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
297
|
+
|
|
298
|
+
4️⃣ Verify Plugin is Working:
|
|
299
|
+
|
|
300
|
+
```bash
|
|
301
|
+
# Start dev server
|
|
302
|
+
pnpm dev
|
|
303
|
+
|
|
304
|
+
# Check plugin is loaded (in browser console)
|
|
305
|
+
# Look for: [AI Plugin] Loaded
|
|
306
|
+
```
|
|
307
|
+
|
|
308
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
309
|
+
|
|
310
|
+
📋 Plugin Registry Entry:
|
|
311
|
+
|
|
312
|
+
After rebuild, the plugin appears in the registry:
|
|
313
|
+
|
|
314
|
+
```typescript
|
|
315
|
+
// core/lib/registries/plugin-registry.ts (auto-generated)
|
|
316
|
+
export const PLUGIN_REGISTRY = {
|
|
317
|
+
'plugin-ai': {
|
|
318
|
+
name: 'plugin-ai',
|
|
319
|
+
displayName: 'AI Assistant',
|
|
320
|
+
version: '1.0.0',
|
|
321
|
+
enabled: true,
|
|
322
|
+
hasComponents: true,
|
|
323
|
+
hasAPI: true,
|
|
324
|
+
},
|
|
325
|
+
// ...
|
|
326
|
+
}
|
|
327
|
+
```
|
|
328
|
+
|
|
329
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
330
|
+
|
|
331
|
+
✅ TUTORIAL STORY!
|
|
332
|
+
|
|
333
|
+
You've learned:
|
|
334
|
+
• How plugin distribution works
|
|
335
|
+
• Installing plugins via CLI or manually
|
|
336
|
+
• Configuring environment variables
|
|
337
|
+
• Using plugin components and hooks
|
|
338
|
+
|
|
339
|
+
📚 Related tutorials:
|
|
340
|
+
• /how-to:create-plugin - Create your own plugin
|
|
341
|
+
• /how-to:customize-app - App customization
|
|
342
|
+
|
|
343
|
+
🔙 Back to menu: /how-to:start
|
|
344
|
+
```
|
|
345
|
+
|
|
346
|
+
---
|
|
347
|
+
|
|
348
|
+
## Related Commands
|
|
349
|
+
|
|
350
|
+
| Command | Action |
|
|
351
|
+
|---------|--------|
|
|
352
|
+
| `/how-to:create-plugin` | Create new plugins |
|