create-xani-agentic-app 1.0.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 +237 -0
- package/index.js +219 -0
- package/package.json +46 -0
- package/template/.agents/skills/ai-sdk/SKILL.md +78 -0
- package/template/.agents/skills/ai-sdk/references/ai-gateway.md +66 -0
- package/template/.agents/skills/ai-sdk/references/common-errors.md +443 -0
- package/template/.agents/skills/ai-sdk/references/devtools.md +52 -0
- package/template/.agents/skills/ai-sdk/references/type-safe-agents.md +204 -0
- package/template/.agents/skills/better-auth-best-practices/SKILL.md +175 -0
- package/template/.agents/skills/checkpoint/SKILL.md +82 -0
- package/template/.agents/skills/create-spec/SKILL.md +132 -0
- package/template/.agents/skills/create-spec/references/action-required-template.md +53 -0
- package/template/.agents/skills/create-spec/references/readme-template.md +53 -0
- package/template/.agents/skills/create-spec/references/requirements-template.md +54 -0
- package/template/.agents/skills/create-spec/references/task-template.md +79 -0
- package/template/.agents/skills/find-skills/SKILL.md +142 -0
- package/template/.agents/skills/frontend-design/LICENSE.txt +177 -0
- package/template/.agents/skills/frontend-design/SKILL.md +42 -0
- package/template/.agents/skills/implement-feature/SKILL.md +189 -0
- package/template/.agents/skills/implement-feature/references/coder-prompt-template.md +46 -0
- package/template/.agents/skills/implement-feature/references/fix-prompt-template.md +38 -0
- package/template/.agents/skills/implement-feature/references/review-prompt-template.md +50 -0
- package/template/.agents/skills/mcp-builder/LICENSE.txt +202 -0
- package/template/.agents/skills/mcp-builder/SKILL.md +236 -0
- package/template/.agents/skills/mcp-builder/reference/evaluation.md +602 -0
- package/template/.agents/skills/mcp-builder/reference/mcp_best_practices.md +249 -0
- package/template/.agents/skills/mcp-builder/reference/node_mcp_server.md +970 -0
- package/template/.agents/skills/mcp-builder/reference/python_mcp_server.md +719 -0
- package/template/.agents/skills/mcp-builder/scripts/connections.py +151 -0
- package/template/.agents/skills/mcp-builder/scripts/evaluation.py +373 -0
- package/template/.agents/skills/mcp-builder/scripts/example_evaluation.xml +22 -0
- package/template/.agents/skills/mcp-builder/scripts/requirements.txt +2 -0
- package/template/.agents/skills/nextjs/SKILL.md +434 -0
- package/template/.agents/skills/nextjs/overlay.yaml +284 -0
- package/template/.agents/skills/nextjs/references/app-router-files.md +94 -0
- package/template/.agents/skills/nextjs/references/async-patterns.md +87 -0
- package/template/.agents/skills/nextjs/references/bundling.md +180 -0
- package/template/.agents/skills/nextjs/references/data-patterns.md +297 -0
- package/template/.agents/skills/nextjs/references/debug-tricks.md +105 -0
- package/template/.agents/skills/nextjs/references/directives.md +73 -0
- package/template/.agents/skills/nextjs/references/error-handling.md +227 -0
- package/template/.agents/skills/nextjs/references/file-conventions.md +140 -0
- package/template/.agents/skills/nextjs/references/font.md +245 -0
- package/template/.agents/skills/nextjs/references/functions.md +108 -0
- package/template/.agents/skills/nextjs/references/hydration-error.md +91 -0
- package/template/.agents/skills/nextjs/references/image.md +173 -0
- package/template/.agents/skills/nextjs/references/metadata.md +301 -0
- package/template/.agents/skills/nextjs/references/parallel-routes.md +287 -0
- package/template/.agents/skills/nextjs/references/route-handlers.md +146 -0
- package/template/.agents/skills/nextjs/references/rsc-boundaries.md +159 -0
- package/template/.agents/skills/nextjs/references/runtime-selection.md +39 -0
- package/template/.agents/skills/nextjs/references/scripts.md +141 -0
- package/template/.agents/skills/nextjs/references/self-hosting.md +371 -0
- package/template/.agents/skills/nextjs/references/suspense-boundaries.md +67 -0
- package/template/.agents/skills/nextjs/upstream/SKILL.md +153 -0
- package/template/.agents/skills/nextjs/upstream/references/app-router-files.md +94 -0
- package/template/.agents/skills/nextjs/upstream/references/async-patterns.md +87 -0
- package/template/.agents/skills/nextjs/upstream/references/bundling.md +180 -0
- package/template/.agents/skills/nextjs/upstream/references/data-patterns.md +297 -0
- package/template/.agents/skills/nextjs/upstream/references/debug-tricks.md +105 -0
- package/template/.agents/skills/nextjs/upstream/references/directives.md +73 -0
- package/template/.agents/skills/nextjs/upstream/references/error-handling.md +227 -0
- package/template/.agents/skills/nextjs/upstream/references/file-conventions.md +140 -0
- package/template/.agents/skills/nextjs/upstream/references/font.md +245 -0
- package/template/.agents/skills/nextjs/upstream/references/functions.md +108 -0
- package/template/.agents/skills/nextjs/upstream/references/hydration-error.md +91 -0
- package/template/.agents/skills/nextjs/upstream/references/image.md +173 -0
- package/template/.agents/skills/nextjs/upstream/references/metadata.md +301 -0
- package/template/.agents/skills/nextjs/upstream/references/parallel-routes.md +287 -0
- package/template/.agents/skills/nextjs/upstream/references/route-handlers.md +146 -0
- package/template/.agents/skills/nextjs/upstream/references/rsc-boundaries.md +159 -0
- package/template/.agents/skills/nextjs/upstream/references/runtime-selection.md +39 -0
- package/template/.agents/skills/nextjs/upstream/references/scripts.md +141 -0
- package/template/.agents/skills/nextjs/upstream/references/self-hosting.md +371 -0
- package/template/.agents/skills/nextjs/upstream/references/suspense-boundaries.md +67 -0
- package/template/.agents/skills/playwright-cli/SKILL.md +344 -0
- package/template/.agents/skills/playwright-cli/references/element-attributes.md +23 -0
- package/template/.agents/skills/playwright-cli/references/playwright-tests.md +39 -0
- package/template/.agents/skills/playwright-cli/references/request-mocking.md +87 -0
- package/template/.agents/skills/playwright-cli/references/running-code.md +231 -0
- package/template/.agents/skills/playwright-cli/references/session-management.md +169 -0
- package/template/.agents/skills/playwright-cli/references/storage-state.md +275 -0
- package/template/.agents/skills/playwright-cli/references/test-generation.md +88 -0
- package/template/.agents/skills/playwright-cli/references/tracing.md +139 -0
- package/template/.agents/skills/playwright-cli/references/video-recording.md +143 -0
- package/template/.agents/skills/review-pr/SKILL.md +97 -0
- package/template/.agents/skills/security-scanner/SKILL.md +157 -0
- package/template/.agents/skills/security-scanner/references/A01-broken-access-control.md +136 -0
- package/template/.agents/skills/security-scanner/references/A02-security-misconfiguration.md +130 -0
- package/template/.agents/skills/security-scanner/references/A03-software-supply-chain-failures.md +117 -0
- package/template/.agents/skills/security-scanner/references/A04-cryptographic-failures.md +141 -0
- package/template/.agents/skills/security-scanner/references/A05-injection.md +155 -0
- package/template/.agents/skills/security-scanner/references/A06-insecure-design.md +145 -0
- package/template/.agents/skills/security-scanner/references/A07-authentication-failures.md +150 -0
- package/template/.agents/skills/security-scanner/references/A08-software-data-integrity-failures.md +132 -0
- package/template/.agents/skills/security-scanner/references/A09-security-logging-alerting-failures.md +130 -0
- package/template/.agents/skills/security-scanner/references/A10-mishandling-exceptional-conditions.md +154 -0
- package/template/.agents/skills/security-scanner/references/report-template.md +148 -0
- package/template/.agents/skills/shadcn/SKILL.md +246 -0
- package/template/.agents/skills/shadcn/agents/openai.yml +5 -0
- package/template/.agents/skills/shadcn/assets/shadcn-small.png +0 -0
- package/template/.agents/skills/shadcn/assets/shadcn.png +0 -0
- package/template/.agents/skills/shadcn/cli.md +276 -0
- package/template/.agents/skills/shadcn/customization.md +209 -0
- package/template/.agents/skills/shadcn/evals/evals.json +47 -0
- package/template/.agents/skills/shadcn/mcp.md +94 -0
- package/template/.agents/skills/shadcn/rules/base-vs-radix.md +306 -0
- package/template/.agents/skills/shadcn/rules/composition.md +195 -0
- package/template/.agents/skills/shadcn/rules/forms.md +192 -0
- package/template/.agents/skills/shadcn/rules/icons.md +101 -0
- package/template/.agents/skills/shadcn/rules/styling.md +162 -0
- package/template/.agents/skills/ship-it/SKILL.md +174 -0
- package/template/.agents/skills/skill-creator/LICENSE.txt +202 -0
- package/template/.agents/skills/skill-creator/SKILL.md +485 -0
- package/template/.agents/skills/skill-creator/agents/analyzer.md +274 -0
- package/template/.agents/skills/skill-creator/agents/comparator.md +202 -0
- package/template/.agents/skills/skill-creator/agents/grader.md +223 -0
- package/template/.agents/skills/skill-creator/assets/eval_review.html +146 -0
- package/template/.agents/skills/skill-creator/eval-viewer/generate_review.py +471 -0
- package/template/.agents/skills/skill-creator/eval-viewer/viewer.html +1325 -0
- package/template/.agents/skills/skill-creator/references/schemas.md +430 -0
- package/template/.agents/skills/skill-creator/scripts/__init__.py +0 -0
- package/template/.agents/skills/skill-creator/scripts/aggregate_benchmark.py +401 -0
- package/template/.agents/skills/skill-creator/scripts/generate_report.py +326 -0
- package/template/.agents/skills/skill-creator/scripts/improve_description.py +247 -0
- package/template/.agents/skills/skill-creator/scripts/package_skill.py +136 -0
- package/template/.agents/skills/skill-creator/scripts/quick_validate.py +103 -0
- package/template/.agents/skills/skill-creator/scripts/run_eval.py +310 -0
- package/template/.agents/skills/skill-creator/scripts/run_loop.py +328 -0
- package/template/.agents/skills/skill-creator/scripts/utils.py +47 -0
- package/template/.agents/skills/vercel-react-best-practices/AGENTS.md +3750 -0
- package/template/.agents/skills/vercel-react-best-practices/README.md +123 -0
- package/template/.agents/skills/vercel-react-best-practices/SKILL.md +148 -0
- package/template/.agents/skills/vercel-react-best-practices/rules/_sections.md +46 -0
- package/template/.agents/skills/vercel-react-best-practices/rules/_template.md +28 -0
- package/template/.agents/skills/vercel-react-best-practices/rules/advanced-effect-event-deps.md +56 -0
- package/template/.agents/skills/vercel-react-best-practices/rules/advanced-event-handler-refs.md +55 -0
- package/template/.agents/skills/vercel-react-best-practices/rules/advanced-init-once.md +42 -0
- package/template/.agents/skills/vercel-react-best-practices/rules/advanced-use-latest.md +39 -0
- package/template/.agents/skills/vercel-react-best-practices/rules/async-api-routes.md +38 -0
- package/template/.agents/skills/vercel-react-best-practices/rules/async-cheap-condition-before-await.md +37 -0
- package/template/.agents/skills/vercel-react-best-practices/rules/async-defer-await.md +82 -0
- package/template/.agents/skills/vercel-react-best-practices/rules/async-dependencies.md +51 -0
- package/template/.agents/skills/vercel-react-best-practices/rules/async-parallel.md +28 -0
- package/template/.agents/skills/vercel-react-best-practices/rules/async-suspense-boundaries.md +99 -0
- package/template/.agents/skills/vercel-react-best-practices/rules/bundle-barrel-imports.md +60 -0
- package/template/.agents/skills/vercel-react-best-practices/rules/bundle-conditional.md +31 -0
- package/template/.agents/skills/vercel-react-best-practices/rules/bundle-defer-third-party.md +49 -0
- package/template/.agents/skills/vercel-react-best-practices/rules/bundle-dynamic-imports.md +35 -0
- package/template/.agents/skills/vercel-react-best-practices/rules/bundle-preload.md +50 -0
- package/template/.agents/skills/vercel-react-best-practices/rules/client-event-listeners.md +74 -0
- package/template/.agents/skills/vercel-react-best-practices/rules/client-localstorage-schema.md +71 -0
- package/template/.agents/skills/vercel-react-best-practices/rules/client-passive-event-listeners.md +48 -0
- package/template/.agents/skills/vercel-react-best-practices/rules/client-swr-dedup.md +56 -0
- package/template/.agents/skills/vercel-react-best-practices/rules/js-batch-dom-css.md +107 -0
- package/template/.agents/skills/vercel-react-best-practices/rules/js-cache-function-results.md +80 -0
- package/template/.agents/skills/vercel-react-best-practices/rules/js-cache-property-access.md +28 -0
- package/template/.agents/skills/vercel-react-best-practices/rules/js-cache-storage.md +70 -0
- package/template/.agents/skills/vercel-react-best-practices/rules/js-combine-iterations.md +32 -0
- package/template/.agents/skills/vercel-react-best-practices/rules/js-early-exit.md +50 -0
- package/template/.agents/skills/vercel-react-best-practices/rules/js-flatmap-filter.md +60 -0
- package/template/.agents/skills/vercel-react-best-practices/rules/js-hoist-regexp.md +45 -0
- package/template/.agents/skills/vercel-react-best-practices/rules/js-index-maps.md +37 -0
- package/template/.agents/skills/vercel-react-best-practices/rules/js-length-check-first.md +49 -0
- package/template/.agents/skills/vercel-react-best-practices/rules/js-min-max-loop.md +82 -0
- package/template/.agents/skills/vercel-react-best-practices/rules/js-request-idle-callback.md +105 -0
- package/template/.agents/skills/vercel-react-best-practices/rules/js-set-map-lookups.md +24 -0
- package/template/.agents/skills/vercel-react-best-practices/rules/js-tosorted-immutable.md +57 -0
- package/template/.agents/skills/vercel-react-best-practices/rules/rendering-activity.md +26 -0
- package/template/.agents/skills/vercel-react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -0
- package/template/.agents/skills/vercel-react-best-practices/rules/rendering-conditional-render.md +40 -0
- package/template/.agents/skills/vercel-react-best-practices/rules/rendering-content-visibility.md +38 -0
- package/template/.agents/skills/vercel-react-best-practices/rules/rendering-hoist-jsx.md +46 -0
- package/template/.agents/skills/vercel-react-best-practices/rules/rendering-hydration-no-flicker.md +82 -0
- package/template/.agents/skills/vercel-react-best-practices/rules/rendering-hydration-suppress-warning.md +30 -0
- package/template/.agents/skills/vercel-react-best-practices/rules/rendering-resource-hints.md +85 -0
- package/template/.agents/skills/vercel-react-best-practices/rules/rendering-script-defer-async.md +68 -0
- package/template/.agents/skills/vercel-react-best-practices/rules/rendering-svg-precision.md +28 -0
- package/template/.agents/skills/vercel-react-best-practices/rules/rendering-usetransition-loading.md +75 -0
- package/template/.agents/skills/vercel-react-best-practices/rules/rerender-defer-reads.md +39 -0
- package/template/.agents/skills/vercel-react-best-practices/rules/rerender-dependencies.md +45 -0
- package/template/.agents/skills/vercel-react-best-practices/rules/rerender-derived-state-no-effect.md +40 -0
- package/template/.agents/skills/vercel-react-best-practices/rules/rerender-derived-state.md +29 -0
- package/template/.agents/skills/vercel-react-best-practices/rules/rerender-functional-setstate.md +74 -0
- package/template/.agents/skills/vercel-react-best-practices/rules/rerender-lazy-state-init.md +58 -0
- package/template/.agents/skills/vercel-react-best-practices/rules/rerender-memo-with-default-value.md +38 -0
- package/template/.agents/skills/vercel-react-best-practices/rules/rerender-memo.md +44 -0
- package/template/.agents/skills/vercel-react-best-practices/rules/rerender-move-effect-to-event.md +45 -0
- package/template/.agents/skills/vercel-react-best-practices/rules/rerender-no-inline-components.md +82 -0
- package/template/.agents/skills/vercel-react-best-practices/rules/rerender-simple-expression-in-memo.md +35 -0
- package/template/.agents/skills/vercel-react-best-practices/rules/rerender-split-combined-hooks.md +64 -0
- package/template/.agents/skills/vercel-react-best-practices/rules/rerender-transitions.md +40 -0
- package/template/.agents/skills/vercel-react-best-practices/rules/rerender-use-deferred-value.md +59 -0
- package/template/.agents/skills/vercel-react-best-practices/rules/rerender-use-ref-transient-values.md +73 -0
- package/template/.agents/skills/vercel-react-best-practices/rules/server-after-nonblocking.md +73 -0
- package/template/.agents/skills/vercel-react-best-practices/rules/server-auth-actions.md +96 -0
- package/template/.agents/skills/vercel-react-best-practices/rules/server-cache-lru.md +41 -0
- package/template/.agents/skills/vercel-react-best-practices/rules/server-cache-react.md +76 -0
- package/template/.agents/skills/vercel-react-best-practices/rules/server-dedup-props.md +65 -0
- package/template/.agents/skills/vercel-react-best-practices/rules/server-hoist-static-io.md +149 -0
- package/template/.agents/skills/vercel-react-best-practices/rules/server-no-shared-module-state.md +50 -0
- package/template/.agents/skills/vercel-react-best-practices/rules/server-parallel-fetching.md +83 -0
- package/template/.agents/skills/vercel-react-best-practices/rules/server-parallel-nested-fetching.md +34 -0
- package/template/.agents/skills/vercel-react-best-practices/rules/server-serialization.md +38 -0
- package/template/.agents/skills/web-design-guidelines/SKILL.md +39 -0
- package/template/.claude/agents/better-auth-expert.md +189 -0
- package/template/.claude/agents/code-review.md +147 -0
- package/template/.claude/agents/coder.md +139 -0
- package/template/.claude/agents/deep-dive.md +133 -0
- package/template/.claude/agents/polar-payments-expert.md +140 -0
- package/template/.claude/agents/security-scanner.md +214 -0
- package/template/.claude/settings.local.json +15 -0
- package/template/.claude/skills/ai-sdk/SKILL.md +78 -0
- package/template/.claude/skills/ai-sdk/references/ai-gateway.md +66 -0
- package/template/.claude/skills/ai-sdk/references/common-errors.md +443 -0
- package/template/.claude/skills/ai-sdk/references/devtools.md +52 -0
- package/template/.claude/skills/ai-sdk/references/type-safe-agents.md +204 -0
- package/template/.claude/skills/better-auth-best-practices/SKILL.md +175 -0
- package/template/.claude/skills/caveman/SKILL.md +49 -0
- package/template/.claude/skills/checkpoint/SKILL.md +82 -0
- package/template/.claude/skills/create-spec/SKILL.md +132 -0
- package/template/.claude/skills/create-spec/references/action-required-template.md +53 -0
- package/template/.claude/skills/create-spec/references/readme-template.md +53 -0
- package/template/.claude/skills/create-spec/references/requirements-template.md +54 -0
- package/template/.claude/skills/create-spec/references/task-template.md +79 -0
- package/template/.claude/skills/d3-visualization/SKILL.md +62 -0
- package/template/.claude/skills/find-skills/SKILL.md +142 -0
- package/template/.claude/skills/frontend-design/LICENSE.txt +177 -0
- package/template/.claude/skills/frontend-design/SKILL.md +42 -0
- package/template/.claude/skills/grill-me/SKILL.md +10 -0
- package/template/.claude/skills/grill-with-docs/ADR-FORMAT.md +47 -0
- package/template/.claude/skills/grill-with-docs/CONTEXT-FORMAT.md +63 -0
- package/template/.claude/skills/grill-with-docs/SKILL.md +88 -0
- package/template/.claude/skills/gsap-core/SKILL.md +267 -0
- package/template/.claude/skills/implement-feature/SKILL.md +189 -0
- package/template/.claude/skills/implement-feature/references/coder-prompt-template.md +46 -0
- package/template/.claude/skills/implement-feature/references/fix-prompt-template.md +38 -0
- package/template/.claude/skills/implement-feature/references/review-prompt-template.md +50 -0
- package/template/.claude/skills/mcp-builder/LICENSE.txt +202 -0
- package/template/.claude/skills/mcp-builder/SKILL.md +236 -0
- package/template/.claude/skills/mcp-builder/reference/evaluation.md +602 -0
- package/template/.claude/skills/mcp-builder/reference/mcp_best_practices.md +249 -0
- package/template/.claude/skills/mcp-builder/reference/node_mcp_server.md +970 -0
- package/template/.claude/skills/mcp-builder/reference/python_mcp_server.md +719 -0
- package/template/.claude/skills/mcp-builder/scripts/connections.py +151 -0
- package/template/.claude/skills/mcp-builder/scripts/evaluation.py +373 -0
- package/template/.claude/skills/mcp-builder/scripts/example_evaluation.xml +22 -0
- package/template/.claude/skills/mcp-builder/scripts/requirements.txt +2 -0
- package/template/.claude/skills/nextjs/SKILL.md +434 -0
- package/template/.claude/skills/nextjs/overlay.yaml +284 -0
- package/template/.claude/skills/nextjs/references/app-router-files.md +94 -0
- package/template/.claude/skills/nextjs/references/async-patterns.md +87 -0
- package/template/.claude/skills/nextjs/references/bundling.md +180 -0
- package/template/.claude/skills/nextjs/references/data-patterns.md +297 -0
- package/template/.claude/skills/nextjs/references/debug-tricks.md +105 -0
- package/template/.claude/skills/nextjs/references/directives.md +73 -0
- package/template/.claude/skills/nextjs/references/error-handling.md +227 -0
- package/template/.claude/skills/nextjs/references/file-conventions.md +140 -0
- package/template/.claude/skills/nextjs/references/font.md +245 -0
- package/template/.claude/skills/nextjs/references/functions.md +108 -0
- package/template/.claude/skills/nextjs/references/hydration-error.md +91 -0
- package/template/.claude/skills/nextjs/references/image.md +173 -0
- package/template/.claude/skills/nextjs/references/metadata.md +301 -0
- package/template/.claude/skills/nextjs/references/parallel-routes.md +287 -0
- package/template/.claude/skills/nextjs/references/route-handlers.md +146 -0
- package/template/.claude/skills/nextjs/references/rsc-boundaries.md +159 -0
- package/template/.claude/skills/nextjs/references/runtime-selection.md +39 -0
- package/template/.claude/skills/nextjs/references/scripts.md +141 -0
- package/template/.claude/skills/nextjs/references/self-hosting.md +371 -0
- package/template/.claude/skills/nextjs/references/suspense-boundaries.md +67 -0
- package/template/.claude/skills/nextjs/upstream/SKILL.md +153 -0
- package/template/.claude/skills/nextjs/upstream/references/app-router-files.md +94 -0
- package/template/.claude/skills/nextjs/upstream/references/async-patterns.md +87 -0
- package/template/.claude/skills/nextjs/upstream/references/bundling.md +180 -0
- package/template/.claude/skills/nextjs/upstream/references/data-patterns.md +297 -0
- package/template/.claude/skills/nextjs/upstream/references/debug-tricks.md +105 -0
- package/template/.claude/skills/nextjs/upstream/references/directives.md +73 -0
- package/template/.claude/skills/nextjs/upstream/references/error-handling.md +227 -0
- package/template/.claude/skills/nextjs/upstream/references/file-conventions.md +140 -0
- package/template/.claude/skills/nextjs/upstream/references/font.md +245 -0
- package/template/.claude/skills/nextjs/upstream/references/functions.md +108 -0
- package/template/.claude/skills/nextjs/upstream/references/hydration-error.md +91 -0
- package/template/.claude/skills/nextjs/upstream/references/image.md +173 -0
- package/template/.claude/skills/nextjs/upstream/references/metadata.md +301 -0
- package/template/.claude/skills/nextjs/upstream/references/parallel-routes.md +287 -0
- package/template/.claude/skills/nextjs/upstream/references/route-handlers.md +146 -0
- package/template/.claude/skills/nextjs/upstream/references/rsc-boundaries.md +159 -0
- package/template/.claude/skills/nextjs/upstream/references/runtime-selection.md +39 -0
- package/template/.claude/skills/nextjs/upstream/references/scripts.md +141 -0
- package/template/.claude/skills/nextjs/upstream/references/self-hosting.md +371 -0
- package/template/.claude/skills/nextjs/upstream/references/suspense-boundaries.md +67 -0
- package/template/.claude/skills/playwright-cli/SKILL.md +344 -0
- package/template/.claude/skills/playwright-cli/references/element-attributes.md +23 -0
- package/template/.claude/skills/playwright-cli/references/playwright-tests.md +39 -0
- package/template/.claude/skills/playwright-cli/references/request-mocking.md +87 -0
- package/template/.claude/skills/playwright-cli/references/running-code.md +231 -0
- package/template/.claude/skills/playwright-cli/references/session-management.md +169 -0
- package/template/.claude/skills/playwright-cli/references/storage-state.md +275 -0
- package/template/.claude/skills/playwright-cli/references/test-generation.md +88 -0
- package/template/.claude/skills/playwright-cli/references/tracing.md +139 -0
- package/template/.claude/skills/playwright-cli/references/video-recording.md +143 -0
- package/template/.claude/skills/react-three-fiber/SKILL.md +180 -0
- package/template/.claude/skills/remotion/SKILL.md +43 -0
- package/template/.claude/skills/review-pr/SKILL.md +97 -0
- package/template/.claude/skills/security-scanner/SKILL.md +157 -0
- package/template/.claude/skills/security-scanner/references/A01-broken-access-control.md +136 -0
- package/template/.claude/skills/security-scanner/references/A02-security-misconfiguration.md +130 -0
- package/template/.claude/skills/security-scanner/references/A03-software-supply-chain-failures.md +117 -0
- package/template/.claude/skills/security-scanner/references/A04-cryptographic-failures.md +141 -0
- package/template/.claude/skills/security-scanner/references/A05-injection.md +155 -0
- package/template/.claude/skills/security-scanner/references/A06-insecure-design.md +145 -0
- package/template/.claude/skills/security-scanner/references/A07-authentication-failures.md +150 -0
- package/template/.claude/skills/security-scanner/references/A08-software-data-integrity-failures.md +132 -0
- package/template/.claude/skills/security-scanner/references/A09-security-logging-alerting-failures.md +130 -0
- package/template/.claude/skills/security-scanner/references/A10-mishandling-exceptional-conditions.md +154 -0
- package/template/.claude/skills/security-scanner/references/report-template.md +148 -0
- package/template/.claude/skills/shadcn/SKILL.md +246 -0
- package/template/.claude/skills/shadcn/agents/openai.yml +5 -0
- package/template/.claude/skills/shadcn/assets/shadcn-small.png +0 -0
- package/template/.claude/skills/shadcn/assets/shadcn.png +0 -0
- package/template/.claude/skills/shadcn/cli.md +276 -0
- package/template/.claude/skills/shadcn/customization.md +209 -0
- package/template/.claude/skills/shadcn/evals/evals.json +47 -0
- package/template/.claude/skills/shadcn/mcp.md +94 -0
- package/template/.claude/skills/shadcn/rules/base-vs-radix.md +306 -0
- package/template/.claude/skills/shadcn/rules/composition.md +195 -0
- package/template/.claude/skills/shadcn/rules/forms.md +192 -0
- package/template/.claude/skills/shadcn/rules/icons.md +101 -0
- package/template/.claude/skills/shadcn/rules/styling.md +162 -0
- package/template/.claude/skills/ship-it/SKILL.md +174 -0
- package/template/.claude/skills/skill-creator/LICENSE.txt +202 -0
- package/template/.claude/skills/skill-creator/SKILL.md +485 -0
- package/template/.claude/skills/skill-creator/agents/analyzer.md +274 -0
- package/template/.claude/skills/skill-creator/agents/comparator.md +202 -0
- package/template/.claude/skills/skill-creator/agents/grader.md +223 -0
- package/template/.claude/skills/skill-creator/assets/eval_review.html +146 -0
- package/template/.claude/skills/skill-creator/eval-viewer/generate_review.py +471 -0
- package/template/.claude/skills/skill-creator/eval-viewer/viewer.html +1325 -0
- package/template/.claude/skills/skill-creator/references/schemas.md +430 -0
- package/template/.claude/skills/skill-creator/scripts/__init__.py +0 -0
- package/template/.claude/skills/skill-creator/scripts/aggregate_benchmark.py +401 -0
- package/template/.claude/skills/skill-creator/scripts/generate_report.py +326 -0
- package/template/.claude/skills/skill-creator/scripts/improve_description.py +247 -0
- package/template/.claude/skills/skill-creator/scripts/package_skill.py +136 -0
- package/template/.claude/skills/skill-creator/scripts/quick_validate.py +103 -0
- package/template/.claude/skills/skill-creator/scripts/run_eval.py +310 -0
- package/template/.claude/skills/skill-creator/scripts/run_loop.py +328 -0
- package/template/.claude/skills/skill-creator/scripts/utils.py +47 -0
- package/template/.claude/skills/svelte/SKILL.md +284 -0
- package/template/.claude/skills/tdd/SKILL.md +109 -0
- package/template/.claude/skills/tdd/deep-modules.md +33 -0
- package/template/.claude/skills/tdd/interface-design.md +31 -0
- package/template/.claude/skills/tdd/mocking.md +59 -0
- package/template/.claude/skills/tdd/refactoring.md +10 -0
- package/template/.claude/skills/tdd/tests.md +61 -0
- package/template/.claude/skills/threejs/SKILL.md +43 -0
- package/template/.claude/skills/to-issues/SKILL.md +83 -0
- package/template/.claude/skills/to-prd/SKILL.md +76 -0
- package/template/.claude/skills/vercel-react-best-practices/AGENTS.md +3750 -0
- package/template/.claude/skills/vercel-react-best-practices/README.md +123 -0
- package/template/.claude/skills/vercel-react-best-practices/SKILL.md +148 -0
- package/template/.claude/skills/vercel-react-best-practices/rules/_sections.md +46 -0
- package/template/.claude/skills/vercel-react-best-practices/rules/_template.md +28 -0
- package/template/.claude/skills/vercel-react-best-practices/rules/advanced-effect-event-deps.md +56 -0
- package/template/.claude/skills/vercel-react-best-practices/rules/advanced-event-handler-refs.md +55 -0
- package/template/.claude/skills/vercel-react-best-practices/rules/advanced-init-once.md +42 -0
- package/template/.claude/skills/vercel-react-best-practices/rules/advanced-use-latest.md +39 -0
- package/template/.claude/skills/vercel-react-best-practices/rules/async-api-routes.md +38 -0
- package/template/.claude/skills/vercel-react-best-practices/rules/async-cheap-condition-before-await.md +37 -0
- package/template/.claude/skills/vercel-react-best-practices/rules/async-defer-await.md +82 -0
- package/template/.claude/skills/vercel-react-best-practices/rules/async-dependencies.md +51 -0
- package/template/.claude/skills/vercel-react-best-practices/rules/async-parallel.md +28 -0
- package/template/.claude/skills/vercel-react-best-practices/rules/async-suspense-boundaries.md +99 -0
- package/template/.claude/skills/vercel-react-best-practices/rules/bundle-barrel-imports.md +60 -0
- package/template/.claude/skills/vercel-react-best-practices/rules/bundle-conditional.md +31 -0
- package/template/.claude/skills/vercel-react-best-practices/rules/bundle-defer-third-party.md +49 -0
- package/template/.claude/skills/vercel-react-best-practices/rules/bundle-dynamic-imports.md +35 -0
- package/template/.claude/skills/vercel-react-best-practices/rules/bundle-preload.md +50 -0
- package/template/.claude/skills/vercel-react-best-practices/rules/client-event-listeners.md +74 -0
- package/template/.claude/skills/vercel-react-best-practices/rules/client-localstorage-schema.md +71 -0
- package/template/.claude/skills/vercel-react-best-practices/rules/client-passive-event-listeners.md +48 -0
- package/template/.claude/skills/vercel-react-best-practices/rules/client-swr-dedup.md +56 -0
- package/template/.claude/skills/vercel-react-best-practices/rules/js-batch-dom-css.md +107 -0
- package/template/.claude/skills/vercel-react-best-practices/rules/js-cache-function-results.md +80 -0
- package/template/.claude/skills/vercel-react-best-practices/rules/js-cache-property-access.md +28 -0
- package/template/.claude/skills/vercel-react-best-practices/rules/js-cache-storage.md +70 -0
- package/template/.claude/skills/vercel-react-best-practices/rules/js-combine-iterations.md +32 -0
- package/template/.claude/skills/vercel-react-best-practices/rules/js-early-exit.md +50 -0
- package/template/.claude/skills/vercel-react-best-practices/rules/js-flatmap-filter.md +60 -0
- package/template/.claude/skills/vercel-react-best-practices/rules/js-hoist-regexp.md +45 -0
- package/template/.claude/skills/vercel-react-best-practices/rules/js-index-maps.md +37 -0
- package/template/.claude/skills/vercel-react-best-practices/rules/js-length-check-first.md +49 -0
- package/template/.claude/skills/vercel-react-best-practices/rules/js-min-max-loop.md +82 -0
- package/template/.claude/skills/vercel-react-best-practices/rules/js-request-idle-callback.md +105 -0
- package/template/.claude/skills/vercel-react-best-practices/rules/js-set-map-lookups.md +24 -0
- package/template/.claude/skills/vercel-react-best-practices/rules/js-tosorted-immutable.md +57 -0
- package/template/.claude/skills/vercel-react-best-practices/rules/rendering-activity.md +26 -0
- package/template/.claude/skills/vercel-react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -0
- package/template/.claude/skills/vercel-react-best-practices/rules/rendering-conditional-render.md +40 -0
- package/template/.claude/skills/vercel-react-best-practices/rules/rendering-content-visibility.md +38 -0
- package/template/.claude/skills/vercel-react-best-practices/rules/rendering-hoist-jsx.md +46 -0
- package/template/.claude/skills/vercel-react-best-practices/rules/rendering-hydration-no-flicker.md +82 -0
- package/template/.claude/skills/vercel-react-best-practices/rules/rendering-hydration-suppress-warning.md +30 -0
- package/template/.claude/skills/vercel-react-best-practices/rules/rendering-resource-hints.md +85 -0
- package/template/.claude/skills/vercel-react-best-practices/rules/rendering-script-defer-async.md +68 -0
- package/template/.claude/skills/vercel-react-best-practices/rules/rendering-svg-precision.md +28 -0
- package/template/.claude/skills/vercel-react-best-practices/rules/rendering-usetransition-loading.md +75 -0
- package/template/.claude/skills/vercel-react-best-practices/rules/rerender-defer-reads.md +39 -0
- package/template/.claude/skills/vercel-react-best-practices/rules/rerender-dependencies.md +45 -0
- package/template/.claude/skills/vercel-react-best-practices/rules/rerender-derived-state-no-effect.md +40 -0
- package/template/.claude/skills/vercel-react-best-practices/rules/rerender-derived-state.md +29 -0
- package/template/.claude/skills/vercel-react-best-practices/rules/rerender-functional-setstate.md +74 -0
- package/template/.claude/skills/vercel-react-best-practices/rules/rerender-lazy-state-init.md +58 -0
- package/template/.claude/skills/vercel-react-best-practices/rules/rerender-memo-with-default-value.md +38 -0
- package/template/.claude/skills/vercel-react-best-practices/rules/rerender-memo.md +44 -0
- package/template/.claude/skills/vercel-react-best-practices/rules/rerender-move-effect-to-event.md +45 -0
- package/template/.claude/skills/vercel-react-best-practices/rules/rerender-no-inline-components.md +82 -0
- package/template/.claude/skills/vercel-react-best-practices/rules/rerender-simple-expression-in-memo.md +35 -0
- package/template/.claude/skills/vercel-react-best-practices/rules/rerender-split-combined-hooks.md +64 -0
- package/template/.claude/skills/vercel-react-best-practices/rules/rerender-transitions.md +40 -0
- package/template/.claude/skills/vercel-react-best-practices/rules/rerender-use-deferred-value.md +59 -0
- package/template/.claude/skills/vercel-react-best-practices/rules/rerender-use-ref-transient-values.md +73 -0
- package/template/.claude/skills/vercel-react-best-practices/rules/server-after-nonblocking.md +73 -0
- package/template/.claude/skills/vercel-react-best-practices/rules/server-auth-actions.md +96 -0
- package/template/.claude/skills/vercel-react-best-practices/rules/server-cache-lru.md +41 -0
- package/template/.claude/skills/vercel-react-best-practices/rules/server-cache-react.md +76 -0
- package/template/.claude/skills/vercel-react-best-practices/rules/server-dedup-props.md +65 -0
- package/template/.claude/skills/vercel-react-best-practices/rules/server-hoist-static-io.md +149 -0
- package/template/.claude/skills/vercel-react-best-practices/rules/server-no-shared-module-state.md +50 -0
- package/template/.claude/skills/vercel-react-best-practices/rules/server-parallel-fetching.md +83 -0
- package/template/.claude/skills/vercel-react-best-practices/rules/server-parallel-nested-fetching.md +34 -0
- package/template/.claude/skills/vercel-react-best-practices/rules/server-serialization.md +38 -0
- package/template/.claude/skills/video-downloader/SKILL.md +42 -0
- package/template/.claude/skills/web-design-guidelines/SKILL.md +39 -0
- package/template/.claude/skills/webgpu-threejs-tsl/REFERENCE.md +371 -0
- package/template/.claude/skills/webgpu-threejs-tsl/SKILL.md +93 -0
- package/template/.claude/skills/webgpu-threejs-tsl/docs/compute-shaders.md +578 -0
- package/template/.claude/skills/webgpu-threejs-tsl/docs/core-concepts.md +497 -0
- package/template/.claude/skills/webgpu-threejs-tsl/docs/device-loss.md +359 -0
- package/template/.claude/skills/webgpu-threejs-tsl/docs/limits-and-features.md +133 -0
- package/template/.claude/skills/webgpu-threejs-tsl/docs/materials.md +353 -0
- package/template/.claude/skills/webgpu-threejs-tsl/docs/post-processing.md +515 -0
- package/template/.claude/skills/webgpu-threejs-tsl/docs/wgsl-integration.md +324 -0
- package/template/.claude/skills/webgpu-threejs-tsl/examples/basic-setup.js +87 -0
- package/template/.claude/skills/webgpu-threejs-tsl/examples/custom-material.js +170 -0
- package/template/.claude/skills/webgpu-threejs-tsl/examples/earth-shader.js +292 -0
- package/template/.claude/skills/webgpu-threejs-tsl/examples/particle-system.js +259 -0
- package/template/.claude/skills/webgpu-threejs-tsl/examples/post-processing.js +199 -0
- package/template/.claude/skills/webgpu-threejs-tsl/templates/compute-shader.js +343 -0
- package/template/.claude/skills/webgpu-threejs-tsl/templates/webgpu-project.js +276 -0
- package/template/.claude/skills/zoom-out/SKILL.md +7 -0
- package/template/.mcp.json +5 -0
- package/template/.nvmrc +1 -0
- package/template/.prettierignore +25 -0
- package/template/.prettierrc +11 -0
- package/template/.vscode/settings.json +1 -0
- package/template/.vscode/tasks.json.example +85 -0
- package/template/AGENTS.md +37 -0
- package/template/CLAUDE.md +75 -0
- package/template/CONTEXT.md +29 -0
- package/template/DESIGN.md +451 -0
- package/template/README.md +394 -0
- package/template/_gitignore +48 -0
- package/template/components.json +21 -0
- package/template/docker-compose.yml +9 -0
- package/template/docs/business/starter-prompt.md +94 -0
- package/template/docs/technical/ai/streaming.md +520 -0
- package/template/docs/technical/ai/structured-data.md +409 -0
- package/template/docs/technical/betterauth/polar.md +476 -0
- package/template/docs/technical/react-markdown.md +123 -0
- package/template/drizzle/0000_chilly_the_phantom.sql +50 -0
- package/template/drizzle/0001_last_warpath.sql +5 -0
- package/template/drizzle/meta/0000_snapshot.json +326 -0
- package/template/drizzle/meta/0001_snapshot.json +410 -0
- package/template/drizzle/meta/_journal.json +20 -0
- package/template/drizzle.config.ts +10 -0
- package/template/env.example +26 -0
- package/template/eslint.config.mjs +75 -0
- package/template/next-env.d.ts +6 -0
- package/template/next.config.ts +57 -0
- package/template/package.json +79 -0
- package/template/postcss.config.mjs +5 -0
- package/template/public/file.svg +1 -0
- package/template/public/globe.svg +1 -0
- package/template/public/next.svg +1 -0
- package/template/public/vercel.svg +1 -0
- package/template/public/window.svg +1 -0
- package/template/scripts/setup.ts +277 -0
- package/template/skills-lock.json +61 -0
- package/template/specs/ui-polish-responsive/README.md +59 -0
- package/template/specs/ui-polish-responsive/action-required.md +3 -0
- package/template/specs/ui-polish-responsive/requirements.md +53 -0
- package/template/specs/ui-polish-responsive/tasks/task-01-globals-css.md +144 -0
- package/template/specs/ui-polish-responsive/tasks/task-02-layout.md +66 -0
- package/template/specs/ui-polish-responsive/tasks/task-03-site-header.md +79 -0
- package/template/specs/ui-polish-responsive/tasks/task-04-site-footer.md +63 -0
- package/template/specs/ui-polish-responsive/tasks/task-05-home-page.md +215 -0
- package/template/specs/ui-polish-responsive/tasks/task-06-dashboard.md +222 -0
- package/template/specs/ui-polish-responsive/tasks/task-07-chat-page.md +225 -0
- package/template/specs/ui-polish-responsive/tasks/task-08-profile-page.md +192 -0
- package/template/specs/ui-polish-responsive/tasks/task-09-auth-pages.md +97 -0
- package/template/specs/ui-polish-responsive/tasks/task-10-setup-checklist.md +120 -0
- package/template/specs/ui-polish-responsive/tasks/task-11-starter-prompt-modal.md +87 -0
- package/template/src/app/(auth)/forgot-password/page.tsx +35 -0
- package/template/src/app/(auth)/layout.tsx +7 -0
- package/template/src/app/(auth)/login/page.tsx +44 -0
- package/template/src/app/(auth)/register/page.tsx +33 -0
- package/template/src/app/(auth)/reset-password/page.tsx +36 -0
- package/template/src/app/api/auth/[...all]/route.ts +4 -0
- package/template/src/app/api/chat/route.ts +80 -0
- package/template/src/app/api/diagnostics/route.ts +162 -0
- package/template/src/app/chat/error.tsx +46 -0
- package/template/src/app/chat/loading.tsx +42 -0
- package/template/src/app/chat/page.tsx +348 -0
- package/template/src/app/dashboard/loading.tsx +63 -0
- package/template/src/app/dashboard/page.tsx +79 -0
- package/template/src/app/error.tsx +44 -0
- package/template/src/app/favicon.ico +0 -0
- package/template/src/app/globals.css +175 -0
- package/template/src/app/layout.tsx +108 -0
- package/template/src/app/manifest.ts +21 -0
- package/template/src/app/not-found.tsx +28 -0
- package/template/src/app/page.tsx +152 -0
- package/template/src/app/profile/page.tsx +416 -0
- package/template/src/app/robots.ts +16 -0
- package/template/src/app/sitemap.ts +26 -0
- package/template/src/components/auth/forgot-password-form.tsx +83 -0
- package/template/src/components/auth/reset-password-form.tsx +107 -0
- package/template/src/components/auth/sign-in-button.tsx +97 -0
- package/template/src/components/auth/sign-out-button.tsx +31 -0
- package/template/src/components/auth/sign-up-form.tsx +121 -0
- package/template/src/components/auth/user-profile.tsx +91 -0
- package/template/src/components/setup-checklist.tsx +180 -0
- package/template/src/components/site-footer.tsx +24 -0
- package/template/src/components/site-header.tsx +46 -0
- package/template/src/components/starter-prompt-modal.tsx +202 -0
- package/template/src/components/theme-provider.tsx +11 -0
- package/template/src/components/ui/avatar.tsx +52 -0
- package/template/src/components/ui/badge.tsx +35 -0
- package/template/src/components/ui/button.tsx +58 -0
- package/template/src/components/ui/card.tsx +78 -0
- package/template/src/components/ui/dialog.tsx +142 -0
- package/template/src/components/ui/dropdown-menu.tsx +256 -0
- package/template/src/components/ui/github-stars.tsx +53 -0
- package/template/src/components/ui/input.tsx +20 -0
- package/template/src/components/ui/label.tsx +23 -0
- package/template/src/components/ui/mode-toggle.tsx +38 -0
- package/template/src/components/ui/separator.tsx +23 -0
- package/template/src/components/ui/skeleton.tsx +13 -0
- package/template/src/components/ui/sonner.tsx +42 -0
- package/template/src/components/ui/spinner.tsx +21 -0
- package/template/src/components/ui/textarea.tsx +17 -0
- package/template/src/hooks/use-diagnostics.ts +86 -0
- package/template/src/lib/auth-client.ts +16 -0
- package/template/src/lib/auth.ts +25 -0
- package/template/src/lib/db.ts +12 -0
- package/template/src/lib/env.ts +117 -0
- package/template/src/lib/schema.ts +82 -0
- package/template/src/lib/session.ts +48 -0
- package/template/src/lib/storage.ts +225 -0
- package/template/src/lib/utils.ts +6 -0
- package/template/src/proxy.ts +25 -0
- package/template/tsconfig.json +48 -0
|
@@ -0,0 +1,276 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WebGPU Three.js Project Template
|
|
3
|
+
*
|
|
4
|
+
* A complete starter template with:
|
|
5
|
+
* - WebGPU renderer setup
|
|
6
|
+
* - TSL material example
|
|
7
|
+
* - Post-processing ready
|
|
8
|
+
* - Responsive design
|
|
9
|
+
* - Animation loop
|
|
10
|
+
*
|
|
11
|
+
* Usage:
|
|
12
|
+
* 1. Copy this file to your project
|
|
13
|
+
* 2. Install Three.js: npm install three
|
|
14
|
+
* 3. Replace placeholder content with your scene
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
import * as THREE from 'three/webgpu';
|
|
18
|
+
import {
|
|
19
|
+
// Types
|
|
20
|
+
float,
|
|
21
|
+
vec2,
|
|
22
|
+
vec3,
|
|
23
|
+
vec4,
|
|
24
|
+
color,
|
|
25
|
+
uniform,
|
|
26
|
+
|
|
27
|
+
// Geometry
|
|
28
|
+
positionLocal,
|
|
29
|
+
positionWorld,
|
|
30
|
+
normalLocal,
|
|
31
|
+
normalWorld,
|
|
32
|
+
uv,
|
|
33
|
+
|
|
34
|
+
// Camera
|
|
35
|
+
cameraPosition,
|
|
36
|
+
|
|
37
|
+
// Time
|
|
38
|
+
time,
|
|
39
|
+
deltaTime,
|
|
40
|
+
|
|
41
|
+
// Math
|
|
42
|
+
mix,
|
|
43
|
+
smoothstep,
|
|
44
|
+
clamp,
|
|
45
|
+
sin,
|
|
46
|
+
cos,
|
|
47
|
+
|
|
48
|
+
// Texture
|
|
49
|
+
texture,
|
|
50
|
+
|
|
51
|
+
// Functions
|
|
52
|
+
Fn,
|
|
53
|
+
If,
|
|
54
|
+
Loop,
|
|
55
|
+
|
|
56
|
+
// Post-processing
|
|
57
|
+
pass
|
|
58
|
+
} from 'three/tsl';
|
|
59
|
+
|
|
60
|
+
import { OrbitControls } from 'three/addons/controls/OrbitControls.js';
|
|
61
|
+
|
|
62
|
+
// ============================================
|
|
63
|
+
// CONFIGURATION
|
|
64
|
+
// ============================================
|
|
65
|
+
|
|
66
|
+
const CONFIG = {
|
|
67
|
+
// Renderer
|
|
68
|
+
antialias: true,
|
|
69
|
+
pixelRatio: Math.min(window.devicePixelRatio, 2),
|
|
70
|
+
|
|
71
|
+
// Camera
|
|
72
|
+
fov: 60,
|
|
73
|
+
near: 0.1,
|
|
74
|
+
far: 1000,
|
|
75
|
+
position: new THREE.Vector3(0, 2, 5),
|
|
76
|
+
|
|
77
|
+
// Scene
|
|
78
|
+
backgroundColor: 0x111111,
|
|
79
|
+
|
|
80
|
+
// Controls
|
|
81
|
+
enableDamping: true,
|
|
82
|
+
dampingFactor: 0.05
|
|
83
|
+
};
|
|
84
|
+
|
|
85
|
+
// ============================================
|
|
86
|
+
// GLOBALS
|
|
87
|
+
// ============================================
|
|
88
|
+
|
|
89
|
+
let camera, scene, renderer, controls;
|
|
90
|
+
let clock;
|
|
91
|
+
|
|
92
|
+
// Add your uniforms here
|
|
93
|
+
const uniforms = {
|
|
94
|
+
// Example: myColor: uniform(new THREE.Color(0xff0000))
|
|
95
|
+
};
|
|
96
|
+
|
|
97
|
+
// ============================================
|
|
98
|
+
// INITIALIZATION
|
|
99
|
+
// ============================================
|
|
100
|
+
|
|
101
|
+
async function init() {
|
|
102
|
+
// Clock
|
|
103
|
+
clock = new THREE.Clock();
|
|
104
|
+
|
|
105
|
+
// Scene
|
|
106
|
+
scene = new THREE.Scene();
|
|
107
|
+
scene.background = new THREE.Color(CONFIG.backgroundColor);
|
|
108
|
+
|
|
109
|
+
// Camera
|
|
110
|
+
camera = new THREE.PerspectiveCamera(
|
|
111
|
+
CONFIG.fov,
|
|
112
|
+
window.innerWidth / window.innerHeight,
|
|
113
|
+
CONFIG.near,
|
|
114
|
+
CONFIG.far
|
|
115
|
+
);
|
|
116
|
+
camera.position.copy(CONFIG.position);
|
|
117
|
+
|
|
118
|
+
// Renderer
|
|
119
|
+
renderer = new THREE.WebGPURenderer({ antialias: CONFIG.antialias });
|
|
120
|
+
renderer.setSize(window.innerWidth, window.innerHeight);
|
|
121
|
+
renderer.setPixelRatio(CONFIG.pixelRatio);
|
|
122
|
+
document.body.appendChild(renderer.domElement);
|
|
123
|
+
|
|
124
|
+
// Initialize WebGPU
|
|
125
|
+
await renderer.init();
|
|
126
|
+
|
|
127
|
+
// Controls
|
|
128
|
+
controls = new OrbitControls(camera, renderer.domElement);
|
|
129
|
+
controls.enableDamping = CONFIG.enableDamping;
|
|
130
|
+
controls.dampingFactor = CONFIG.dampingFactor;
|
|
131
|
+
|
|
132
|
+
// Setup scene content
|
|
133
|
+
setupLights();
|
|
134
|
+
setupScene();
|
|
135
|
+
|
|
136
|
+
// Optional: Setup post-processing
|
|
137
|
+
// setupPostProcessing();
|
|
138
|
+
|
|
139
|
+
// Events
|
|
140
|
+
window.addEventListener('resize', onWindowResize);
|
|
141
|
+
|
|
142
|
+
// Start animation loop
|
|
143
|
+
renderer.setAnimationLoop(animate);
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
// ============================================
|
|
147
|
+
// SCENE SETUP
|
|
148
|
+
// ============================================
|
|
149
|
+
|
|
150
|
+
function setupLights() {
|
|
151
|
+
// Ambient light
|
|
152
|
+
const ambientLight = new THREE.AmbientLight(0x404040, 0.5);
|
|
153
|
+
scene.add(ambientLight);
|
|
154
|
+
|
|
155
|
+
// Directional light
|
|
156
|
+
const directionalLight = new THREE.DirectionalLight(0xffffff, 1);
|
|
157
|
+
directionalLight.position.set(5, 10, 5);
|
|
158
|
+
directionalLight.castShadow = true;
|
|
159
|
+
scene.add(directionalLight);
|
|
160
|
+
|
|
161
|
+
// Add more lights as needed
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
function setupScene() {
|
|
165
|
+
// ========================================
|
|
166
|
+
// ADD YOUR SCENE CONTENT HERE
|
|
167
|
+
// ========================================
|
|
168
|
+
|
|
169
|
+
// Example: Create a mesh with TSL material
|
|
170
|
+
const geometry = new THREE.BoxGeometry(1, 1, 1);
|
|
171
|
+
const material = createExampleMaterial();
|
|
172
|
+
const mesh = new THREE.Mesh(geometry, material);
|
|
173
|
+
scene.add(mesh);
|
|
174
|
+
|
|
175
|
+
// Example: Add a floor
|
|
176
|
+
const floorGeometry = new THREE.PlaneGeometry(10, 10);
|
|
177
|
+
const floorMaterial = new THREE.MeshStandardNodeMaterial({
|
|
178
|
+
color: 0x333333
|
|
179
|
+
});
|
|
180
|
+
const floor = new THREE.Mesh(floorGeometry, floorMaterial);
|
|
181
|
+
floor.rotation.x = -Math.PI / 2;
|
|
182
|
+
floor.position.y = -0.5;
|
|
183
|
+
scene.add(floor);
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
function createExampleMaterial() {
|
|
187
|
+
const material = new THREE.MeshStandardNodeMaterial();
|
|
188
|
+
|
|
189
|
+
// ========================================
|
|
190
|
+
// CUSTOMIZE YOUR MATERIAL HERE
|
|
191
|
+
// ========================================
|
|
192
|
+
|
|
193
|
+
// Example: Animated color
|
|
194
|
+
material.colorNode = Fn(() => {
|
|
195
|
+
const t = time.mul(0.5).sin().mul(0.5).add(0.5);
|
|
196
|
+
return mix(color(0x0066ff), color(0xff6600), t);
|
|
197
|
+
})();
|
|
198
|
+
|
|
199
|
+
// Example: PBR properties
|
|
200
|
+
material.roughnessNode = float(0.5);
|
|
201
|
+
material.metalnessNode = float(0.0);
|
|
202
|
+
|
|
203
|
+
// Example: Simple fresnel rim
|
|
204
|
+
material.emissiveNode = Fn(() => {
|
|
205
|
+
const viewDir = cameraPosition.sub(positionWorld).normalize();
|
|
206
|
+
const fresnel = float(1.0).sub(normalWorld.dot(viewDir).saturate()).pow(3.0);
|
|
207
|
+
return color(0x00ffff).mul(fresnel).mul(0.5);
|
|
208
|
+
})();
|
|
209
|
+
|
|
210
|
+
return material;
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
// ============================================
|
|
214
|
+
// POST-PROCESSING (Optional)
|
|
215
|
+
// ============================================
|
|
216
|
+
|
|
217
|
+
let postProcessing;
|
|
218
|
+
|
|
219
|
+
function setupPostProcessing() {
|
|
220
|
+
// Uncomment and customize as needed
|
|
221
|
+
|
|
222
|
+
// postProcessing = new THREE.RenderPipeline(renderer);
|
|
223
|
+
// const scenePass = pass(scene, camera);
|
|
224
|
+
// const sceneColor = scenePass.getTextureNode('output');
|
|
225
|
+
//
|
|
226
|
+
// // Add effects here
|
|
227
|
+
// postProcessing.outputNode = sceneColor;
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
// ============================================
|
|
231
|
+
// ANIMATION LOOP
|
|
232
|
+
// ============================================
|
|
233
|
+
|
|
234
|
+
function animate() {
|
|
235
|
+
const delta = clock.getDelta();
|
|
236
|
+
const elapsed = clock.getElapsedTime();
|
|
237
|
+
|
|
238
|
+
// ========================================
|
|
239
|
+
// UPDATE YOUR SCENE HERE
|
|
240
|
+
// ========================================
|
|
241
|
+
|
|
242
|
+
// Example: Rotate mesh
|
|
243
|
+
const mesh = scene.children.find((child) => child.type === 'Mesh');
|
|
244
|
+
if (mesh) {
|
|
245
|
+
mesh.rotation.y += delta * 0.5;
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
// Update controls
|
|
249
|
+
controls.update();
|
|
250
|
+
|
|
251
|
+
// Render
|
|
252
|
+
if (postProcessing) {
|
|
253
|
+
postProcessing.render();
|
|
254
|
+
} else {
|
|
255
|
+
renderer.render(scene, camera);
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
// ============================================
|
|
260
|
+
// EVENT HANDLERS
|
|
261
|
+
// ============================================
|
|
262
|
+
|
|
263
|
+
function onWindowResize() {
|
|
264
|
+
camera.aspect = window.innerWidth / window.innerHeight;
|
|
265
|
+
camera.updateProjectionMatrix();
|
|
266
|
+
renderer.setSize(window.innerWidth, window.innerHeight);
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
// ============================================
|
|
270
|
+
// START
|
|
271
|
+
// ============================================
|
|
272
|
+
|
|
273
|
+
init().catch(console.error);
|
|
274
|
+
|
|
275
|
+
// Export for external access if needed
|
|
276
|
+
export { scene, camera, renderer, uniforms };
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: zoom-out
|
|
3
|
+
description: Tell the agent to zoom out and give broader context or a higher-level perspective. Use when you're unfamiliar with a section of code or need to understand how it fits into the bigger picture.
|
|
4
|
+
disable-model-invocation: true
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
I don't know this area of code well. Go up a layer of abstraction. Give me a map of all the relevant modules and callers, using the project's domain glossary vocabulary.
|
package/template/.nvmrc
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
20
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# Dependencies
|
|
2
|
+
node_modules/
|
|
3
|
+
pnpm-lock.yaml
|
|
4
|
+
|
|
5
|
+
# Build outputs
|
|
6
|
+
.next/
|
|
7
|
+
dist/
|
|
8
|
+
build/
|
|
9
|
+
|
|
10
|
+
# Database
|
|
11
|
+
drizzle/
|
|
12
|
+
|
|
13
|
+
# Generated files
|
|
14
|
+
*.min.js
|
|
15
|
+
*.min.css
|
|
16
|
+
|
|
17
|
+
# Template (has its own formatting)
|
|
18
|
+
create-xani-agentic-app/
|
|
19
|
+
|
|
20
|
+
# Cache
|
|
21
|
+
.cache/
|
|
22
|
+
|
|
23
|
+
# IDE
|
|
24
|
+
.idea/
|
|
25
|
+
.vscode/
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "2.0.0",
|
|
3
|
+
"tasks": [
|
|
4
|
+
{
|
|
5
|
+
"label": "Claude",
|
|
6
|
+
"type": "shell",
|
|
7
|
+
"command": "claude --dangerously-skip-permissions",
|
|
8
|
+
"isBackground": true,
|
|
9
|
+
"options": {
|
|
10
|
+
"shell": {
|
|
11
|
+
"executable": "powershell.exe",
|
|
12
|
+
"args": ["-NoProfile", "-Command"]
|
|
13
|
+
}
|
|
14
|
+
},
|
|
15
|
+
"presentation": {
|
|
16
|
+
"reveal": "always",
|
|
17
|
+
"panel": "dedicated"
|
|
18
|
+
},
|
|
19
|
+
"runOptions": {
|
|
20
|
+
"runOn": "folderOpen"
|
|
21
|
+
},
|
|
22
|
+
"problemMatcher": []
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"label": "Drizzle",
|
|
26
|
+
"type": "shell",
|
|
27
|
+
"command": "$c = docker ps -q --filter 'publish=5432'; if ($c) { docker stop $c }; docker compose up -d; pnpm run db:studio",
|
|
28
|
+
"isBackground": true,
|
|
29
|
+
"options": {
|
|
30
|
+
"shell": {
|
|
31
|
+
"executable": "powershell.exe",
|
|
32
|
+
"args": ["-NoProfile", "-Command"]
|
|
33
|
+
}
|
|
34
|
+
},
|
|
35
|
+
"presentation": {
|
|
36
|
+
"reveal": "always",
|
|
37
|
+
"panel": "dedicated"
|
|
38
|
+
},
|
|
39
|
+
"runOptions": {
|
|
40
|
+
"runOn": "folderOpen"
|
|
41
|
+
},
|
|
42
|
+
"problemMatcher": []
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
"label": "Inngest",
|
|
46
|
+
"type": "shell",
|
|
47
|
+
"command": "pnpm dlx inngest-cli@latest dev",
|
|
48
|
+
"isBackground": true,
|
|
49
|
+
"options": {
|
|
50
|
+
"shell": {
|
|
51
|
+
"executable": "powershell.exe",
|
|
52
|
+
"args": ["-NoProfile", "-Command"]
|
|
53
|
+
}
|
|
54
|
+
},
|
|
55
|
+
"presentation": {
|
|
56
|
+
"reveal": "always",
|
|
57
|
+
"panel": "dedicated"
|
|
58
|
+
},
|
|
59
|
+
"runOptions": {
|
|
60
|
+
"runOn": "folderOpen"
|
|
61
|
+
},
|
|
62
|
+
"problemMatcher": []
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
"label": "Dev Server",
|
|
66
|
+
"type": "shell",
|
|
67
|
+
"command": "pnpm run dev",
|
|
68
|
+
"isBackground": true,
|
|
69
|
+
"options": {
|
|
70
|
+
"shell": {
|
|
71
|
+
"executable": "powershell.exe",
|
|
72
|
+
"args": ["-NoProfile", "-Command"]
|
|
73
|
+
}
|
|
74
|
+
},
|
|
75
|
+
"presentation": {
|
|
76
|
+
"reveal": "always",
|
|
77
|
+
"panel": "dedicated"
|
|
78
|
+
},
|
|
79
|
+
"runOptions": {
|
|
80
|
+
"runOn": "folderOpen"
|
|
81
|
+
},
|
|
82
|
+
"problemMatcher": []
|
|
83
|
+
}
|
|
84
|
+
]
|
|
85
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# CRITICAL RULES - MUST FOLLOW
|
|
2
|
+
|
|
3
|
+
## RESPONSES
|
|
4
|
+
|
|
5
|
+
- Keep responses concise and to the point - unless the user asks otherwise
|
|
6
|
+
|
|
7
|
+
## PLANNING MODE
|
|
8
|
+
|
|
9
|
+
- Always ask clarifying questions
|
|
10
|
+
- Never assume design, tech stack or features
|
|
11
|
+
- Use deep-dive sub-agents to assist with research
|
|
12
|
+
- Use deep-dive sub-agents to review the different aspects of your plan before presenting to the user
|
|
13
|
+
|
|
14
|
+
## CHANGE / EDIT MODE
|
|
15
|
+
|
|
16
|
+
- Never implement features yourself when possible - use sub-agents!
|
|
17
|
+
- Identify changes from the plan that can be implemented in parallel, and use sub-agents to implement the features efficiently
|
|
18
|
+
- When using sub-agents to implement features, act as a coordinator only
|
|
19
|
+
- Use the best model for the task - premium models for complex tasks (like coding) and mid-tier models for simpler tasks, like documentation
|
|
20
|
+
- After completing features (large or small), always run commands like lint, type check and next build to check code quality
|
|
21
|
+
|
|
22
|
+
## DATABASE SCHEMA CHANGES
|
|
23
|
+
|
|
24
|
+
- Whenever you make changes to the database schema, ALWAYS run the drizzle generate and migrate commands
|
|
25
|
+
- NEVER run drizzle push!
|
|
26
|
+
- For all ID columns NOT related to BetterAuth, use UUID for the ID columns and be randomly generated
|
|
27
|
+
|
|
28
|
+
## TESTING
|
|
29
|
+
|
|
30
|
+
- Use any testing tools, libraries available to the project for testing your changes
|
|
31
|
+
- Never assume your changes simply work, always test!
|
|
32
|
+
- If the project does not have any testing tools, scripts, MCP tools, skills, etc. available for testing, ask the user whether testing should be skipped.
|
|
33
|
+
|
|
34
|
+
## UI DESIGN
|
|
35
|
+
|
|
36
|
+
- Always follow the UI design system when creating or reviewing components or pages.
|
|
37
|
+
- Design System: @DESIGN.md
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
# CLAUDE.md
|
|
2
|
+
|
|
3
|
+
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
|
|
4
|
+
|
|
5
|
+
@AGENTS.md
|
|
6
|
+
|
|
7
|
+
## Commands
|
|
8
|
+
|
|
9
|
+
Package manager is **pnpm** (Node 20, see `.nvmrc`).
|
|
10
|
+
|
|
11
|
+
| Task | Command |
|
|
12
|
+
|---|---|
|
|
13
|
+
| Dev server (Turbopack) | `pnpm dev` |
|
|
14
|
+
| Production build (runs migrations first) | `pnpm build` |
|
|
15
|
+
| CI build (no migrations) | `pnpm build:ci` |
|
|
16
|
+
| Lint | `pnpm lint` |
|
|
17
|
+
| Type check | `pnpm typecheck` |
|
|
18
|
+
| Lint + typecheck together | `pnpm check` |
|
|
19
|
+
| Format | `pnpm format` / `pnpm format:check` |
|
|
20
|
+
| Generate migration from schema | `pnpm db:generate` |
|
|
21
|
+
| Apply migrations | `pnpm db:migrate` |
|
|
22
|
+
| Drizzle Studio | `pnpm db:studio` |
|
|
23
|
+
|
|
24
|
+
There is **no test runner** configured. Per `AGENTS.md`, if a change needs testing and no tooling exists, ask the user whether to skip testing. Playwright MCP tools are available for browser-based verification.
|
|
25
|
+
|
|
26
|
+
After completing features, run `pnpm check` and `pnpm build:ci` to verify code quality.
|
|
27
|
+
|
|
28
|
+
### Database workflow (critical)
|
|
29
|
+
|
|
30
|
+
`pnpm build` runs `db:migrate` before `next build`. Migrations live in `drizzle/`. Per `AGENTS.md`: on any schema change, run `db:generate` then `db:migrate` — **never** `db:push` (the `db:push`/`db:dev`/`db:reset` scripts exist but must not be used). All non-BetterAuth ID columns must be randomly-generated UUIDs.
|
|
31
|
+
|
|
32
|
+
### Local setup
|
|
33
|
+
|
|
34
|
+
`cp env.example .env` → `docker compose up -d` (Postgres via `pgvector/pgvector:pg18` on port 5432) → `pnpm db:migrate` → `pnpm dev`. `pnpm setup` runs the guided `scripts/setup.ts`.
|
|
35
|
+
|
|
36
|
+
## Architecture
|
|
37
|
+
|
|
38
|
+
Next.js 16 App Router + React 19 + TypeScript, Tailwind v4, Better Auth, Drizzle ORM (postgres-js), AI SDK via OpenRouter. Path alias `@/*` → `src/*`.
|
|
39
|
+
|
|
40
|
+
### Auth (Better Auth)
|
|
41
|
+
|
|
42
|
+
- `src/lib/auth.ts` — server config. Email/password enabled by default; **no OAuth, no email provider**. Password-reset and email-verification URLs are logged to the terminal in dev (search the dev server output for them). Adding Google OAuth or a real email service is a deliberate follow-up task.
|
|
43
|
+
- `src/lib/auth-client.ts` — React client hooks (`useSession`, `signIn`, `signUp`, etc.).
|
|
44
|
+
- `src/app/api/auth/[...all]/route.ts` — catch-all handler via `toNextJsHandler`.
|
|
45
|
+
- `src/lib/schema.ts` — the four Better Auth tables (`user`, `session`, `account`, `verification`) use `text` IDs (Better Auth requirement). Any new app tables must use UUIDs instead.
|
|
46
|
+
|
|
47
|
+
### Route protection (two layers)
|
|
48
|
+
|
|
49
|
+
1. `src/proxy.ts` — Next.js 16 proxy doing **optimistic** cookie-existence redirects for `/dashboard`, `/chat`, `/profile`. Does not validate the session.
|
|
50
|
+
2. `src/lib/session.ts` — `requireAuth()` does real session validation in Server Components and redirects to `/` if unauthenticated. `protectedRoutes` here must stay in sync with the proxy `matcher` and `next.config` is unaware of them.
|
|
51
|
+
|
|
52
|
+
Protected pages call `requireAuth()`; the proxy is just a fast first gate.
|
|
53
|
+
|
|
54
|
+
### AI chat
|
|
55
|
+
|
|
56
|
+
`src/app/api/chat/route.ts` — authenticated POST endpoint. Validates the request with Zod (max 100 messages, 10k chars/part), then `streamText` through OpenRouter (`OPENROUTER_MODEL`, default `openai/gpt-5-mini`) returning a UI message stream. The `/chat` page uses `@ai-sdk/react`.
|
|
57
|
+
|
|
58
|
+
### Storage abstraction
|
|
59
|
+
|
|
60
|
+
`src/lib/storage.ts` — single `upload`/`deleteFile` API that switches on `BLOB_READ_WRITE_TOKEN`: Vercel Blob when set, otherwise local `public/uploads/`. Includes filename sanitization, size limits (5MB default), and extension allow-listing.
|
|
61
|
+
|
|
62
|
+
### Env validation
|
|
63
|
+
|
|
64
|
+
`src/lib/env.ts` — Zod schemas for server/client env plus `checkEnv()` for runtime warnings. `src/app/api/diagnostics/route.ts` is an intentionally public endpoint returning boolean config flags (no secrets) consumed by the homepage setup checklist.
|
|
65
|
+
|
|
66
|
+
## Conventions
|
|
67
|
+
|
|
68
|
+
- UI must follow `DESIGN.md` (shadcn/ui new-york, neutral base, oklch tokens, Tailwind v4 CSS-first config in `globals.css` — no `tailwind.config.ts`). Components in `src/components/ui/`.
|
|
69
|
+
- `AGENTS.md` mandates a plan→split→sub-agent→verify workflow: ask clarifying questions in planning, delegate implementation to sub-agents in parallel where useful, and act as coordinator.
|
|
70
|
+
|
|
71
|
+
## Docs & specs
|
|
72
|
+
|
|
73
|
+
- `docs/technical/` — reference notes (AI streaming/structured-data, Better Auth + Polar, react-markdown).
|
|
74
|
+
- `specs/{feature}/` — spec-driven workflow output (requirements, waved task files). Use the `create-spec` / `implement-feature` skills for large multi-session features.
|
|
75
|
+
- `create-xani-agentic-app/` — the CLI scaffolder that publishes this repo as a template; `pnpm sync-template` syncs template files.
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# Xani Agentic Starter Kit
|
|
2
|
+
|
|
3
|
+
A production-oriented starter kit for building AI-powered web apps with an agentic development workflow. This document is the canonical glossary for the project — especially its three easily-confused names.
|
|
4
|
+
|
|
5
|
+
## Language
|
|
6
|
+
|
|
7
|
+
**Xani Agentic Starter Kit**:
|
|
8
|
+
The human-readable brand / display name of the project, shown in the README title, site footer, setup script, and skill description.
|
|
9
|
+
_Avoid_: Agentic Coding Starter Kit, Xani Agentic App.
|
|
10
|
+
|
|
11
|
+
**xani-agentic-starter-kit**:
|
|
12
|
+
The repository and the root `package.json` name — i.e. the kit itself (the Next.js app, schema, skills, docs). GitHub slug: `AlexandreXavier/xani-agentic-starter-kit`.
|
|
13
|
+
_Avoid_: agentic-coding-starter-kit.
|
|
14
|
+
|
|
15
|
+
**create-xani-agentic-app**:
|
|
16
|
+
The npm package and `npx` command that scaffolds a new copy of the kit (`npx create-xani-agentic-app my-app`). Lives in the repo folder of the same name and follows npm's `create-*` convention (package name == bin name). Distinct from the kit it publishes.
|
|
17
|
+
_Avoid_: create-agentic-app, create-app, create-xani-app.
|
|
18
|
+
|
|
19
|
+
## Relationships
|
|
20
|
+
|
|
21
|
+
- The **create-xani-agentic-app** CLI scaffolds an instance of the **xani-agentic-starter-kit**.
|
|
22
|
+
- Both live in the **xani-agentic-starter-kit** repo (`AlexandreXavier/xani-agentic-starter-kit`); the CLI is published from the `create-xani-agentic-app/` subfolder.
|
|
23
|
+
- **Xani Agentic Starter Kit** is the display name of the **xani-agentic-starter-kit**; it is never the name of the CLI.
|
|
24
|
+
- The skill installs with `npx skills add AlexandreXavier/xani-agentic-starter-kit@create-xani-agentic-app` — slug is the kit, the suffix is the CLI.
|
|
25
|
+
|
|
26
|
+
## Flagged ambiguities
|
|
27
|
+
|
|
28
|
+
- "create-app" was proposed as the command name — rejected: too generic, unpublishable on npm, and loses the "xani" identity. Canonical command is **create-xani-agentic-app**.
|
|
29
|
+
- The repo name (the kit) and the npm package name (the CLI) are deliberately different. They are not interchangeable.
|