create-inox-app 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +110 -0
- package/dist/cli.js +22196 -0
- package/dist/prompt-Bp8saGVV.js +852 -0
- package/dist/templates/base/.gitignore.hbs +9 -0
- package/dist/templates/base/package.json.hbs +29 -0
- package/dist/templates/base/packages/typescript-config/base.json +17 -0
- package/dist/templates/base/packages/typescript-config/nextjs.json +8 -0
- package/dist/templates/base/packages/typescript-config/package.json +10 -0
- package/dist/templates/base/packages/typescript-config/react-library.json +7 -0
- package/dist/templates/base/turbo.json.hbs +32 -0
- package/dist/templates/ci/.gitlab-ci.yml.hbs +70 -0
- package/dist/templates/ci/scripts/build.sh.hbs +94 -0
- package/dist/templates/ci/scripts/prebuild.sh.hbs +11 -0
- package/dist/templates/claude-config/app/.agents/skills/agent-browser/SKILL.md +325 -0
- package/dist/templates/claude-config/app/.agents/skills/agent-browser/references/authentication.md +202 -0
- package/dist/templates/claude-config/app/.agents/skills/agent-browser/references/commands.md +259 -0
- package/dist/templates/claude-config/app/.agents/skills/agent-browser/references/proxy-support.md +188 -0
- package/dist/templates/claude-config/app/.agents/skills/agent-browser/references/session-management.md +193 -0
- package/dist/templates/claude-config/app/.agents/skills/agent-browser/references/snapshot-refs.md +194 -0
- package/dist/templates/claude-config/app/.agents/skills/agent-browser/references/video-recording.md +173 -0
- package/dist/templates/claude-config/app/.agents/skills/agent-browser/templates/authenticated-session.sh +100 -0
- package/dist/templates/claude-config/app/.agents/skills/agent-browser/templates/capture-workflow.sh +69 -0
- package/dist/templates/claude-config/app/.agents/skills/agent-browser/templates/form-automation.sh +62 -0
- package/dist/templates/claude-config/app/.agents/skills/ai-elements/SKILL.md +150 -0
- package/dist/templates/claude-config/app/.agents/skills/ai-elements/references/agent.md +131 -0
- package/dist/templates/claude-config/app/.agents/skills/ai-elements/references/artifact.md +84 -0
- package/dist/templates/claude-config/app/.agents/skills/ai-elements/references/attachments.md +190 -0
- package/dist/templates/claude-config/app/.agents/skills/ai-elements/references/audio-player.md +134 -0
- package/dist/templates/claude-config/app/.agents/skills/ai-elements/references/canvas.md +32 -0
- package/dist/templates/claude-config/app/.agents/skills/ai-elements/references/chain-of-thought.md +81 -0
- package/dist/templates/claude-config/app/.agents/skills/ai-elements/references/checkpoint.md +163 -0
- package/dist/templates/claude-config/app/.agents/skills/ai-elements/references/code-block.md +170 -0
- package/dist/templates/claude-config/app/.agents/skills/ai-elements/references/commit.md +177 -0
- package/dist/templates/claude-config/app/.agents/skills/ai-elements/references/confirmation.md +252 -0
- package/dist/templates/claude-config/app/.agents/skills/ai-elements/references/connection.md +32 -0
- package/dist/templates/claude-config/app/.agents/skills/ai-elements/references/context.md +126 -0
- package/dist/templates/claude-config/app/.agents/skills/ai-elements/references/controls.md +30 -0
- package/dist/templates/claude-config/app/.agents/skills/ai-elements/references/conversation.md +210 -0
- package/dist/templates/claude-config/app/.agents/skills/ai-elements/references/edge.md +50 -0
- package/dist/templates/claude-config/app/.agents/skills/ai-elements/references/environment-variables.md +102 -0
- package/dist/templates/claude-config/app/.agents/skills/ai-elements/references/file-tree.md +72 -0
- package/dist/templates/claude-config/app/.agents/skills/ai-elements/references/image.md +143 -0
- package/dist/templates/claude-config/app/.agents/skills/ai-elements/references/inline-citation.md +293 -0
- package/dist/templates/claude-config/app/.agents/skills/ai-elements/references/jsx-preview.md +101 -0
- package/dist/templates/claude-config/app/.agents/skills/ai-elements/references/message.md +256 -0
- package/dist/templates/claude-config/app/.agents/skills/ai-elements/references/mic-selector.md +186 -0
- package/dist/templates/claude-config/app/.agents/skills/ai-elements/references/model-selector.md +112 -0
- package/dist/templates/claude-config/app/.agents/skills/ai-elements/references/node.md +71 -0
- package/dist/templates/claude-config/app/.agents/skills/ai-elements/references/open-in-chat.md +67 -0
- package/dist/templates/claude-config/app/.agents/skills/ai-elements/references/package-info.md +95 -0
- package/dist/templates/claude-config/app/.agents/skills/ai-elements/references/panel.md +31 -0
- package/dist/templates/claude-config/app/.agents/skills/ai-elements/references/persona.md +158 -0
- package/dist/templates/claude-config/app/.agents/skills/ai-elements/references/plan.md +79 -0
- package/dist/templates/claude-config/app/.agents/skills/ai-elements/references/prompt-input.md +555 -0
- package/dist/templates/claude-config/app/.agents/skills/ai-elements/references/queue.md +172 -0
- package/dist/templates/claude-config/app/.agents/skills/ai-elements/references/reasoning.md +219 -0
- package/dist/templates/claude-config/app/.agents/skills/ai-elements/references/sandbox.md +126 -0
- package/dist/templates/claude-config/app/.agents/skills/ai-elements/references/schema-display.md +102 -0
- package/dist/templates/claude-config/app/.agents/skills/ai-elements/references/shimmer.md +48 -0
- package/dist/templates/claude-config/app/.agents/skills/ai-elements/references/snippet.md +64 -0
- package/dist/templates/claude-config/app/.agents/skills/ai-elements/references/sources.md +193 -0
- package/dist/templates/claude-config/app/.agents/skills/ai-elements/references/speech-input.md +160 -0
- package/dist/templates/claude-config/app/.agents/skills/ai-elements/references/stack-trace.md +218 -0
- package/dist/templates/claude-config/app/.agents/skills/ai-elements/references/suggestion.md +121 -0
- package/dist/templates/claude-config/app/.agents/skills/ai-elements/references/task.md +215 -0
- package/dist/templates/claude-config/app/.agents/skills/ai-elements/references/terminal.md +103 -0
- package/dist/templates/claude-config/app/.agents/skills/ai-elements/references/test-results.md +157 -0
- package/dist/templates/claude-config/app/.agents/skills/ai-elements/references/tool.md +275 -0
- package/dist/templates/claude-config/app/.agents/skills/ai-elements/references/toolbar.md +30 -0
- package/dist/templates/claude-config/app/.agents/skills/ai-elements/references/transcription.md +120 -0
- package/dist/templates/claude-config/app/.agents/skills/ai-elements/references/voice-selector.md +241 -0
- package/dist/templates/claude-config/app/.agents/skills/ai-elements/references/web-preview.md +197 -0
- package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/agent.tsx +61 -0
- package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/artifact.tsx +111 -0
- package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/attachments-inline.tsx +117 -0
- package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/attachments-list.tsx +88 -0
- package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/attachments.tsx +78 -0
- package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/audio-player-remote.tsx +35 -0
- package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/audio-player.tsx +69 -0
- package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/chain-of-thought.tsx +74 -0
- package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/checkpoint.tsx +90 -0
- package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/code-block-dark.tsx +46 -0
- package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/code-block.tsx +115 -0
- package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/commit.tsx +94 -0
- package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/confirmation-accepted.tsx +35 -0
- package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/confirmation-rejected.tsx +35 -0
- package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/confirmation-request.tsx +54 -0
- package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/confirmation.tsx +53 -0
- package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/context.tsx +45 -0
- package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/conversation.tsx +176 -0
- package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/environment-variables.tsx +55 -0
- package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/file-tree-basic.tsx +14 -0
- package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/file-tree-expanded.tsx +17 -0
- package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/file-tree-selection.tsx +20 -0
- package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/file-tree.tsx +38 -0
- package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/image.tsx +20 -0
- package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/inline-citation.tsx +95 -0
- package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/jsx-preview.tsx +99 -0
- package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/message.tsx +324 -0
- package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/mic-selector.tsx +46 -0
- package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/model-selector.tsx +362 -0
- package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/open-in-chat.tsx +33 -0
- package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/package-info.tsx +46 -0
- package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/persona-command.tsx +96 -0
- package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/persona-glint.tsx +96 -0
- package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/persona-halo.tsx +96 -0
- package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/persona-mana.tsx +96 -0
- package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/persona-obsidian.tsx +96 -0
- package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/persona-opal.tsx +96 -0
- package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/plan.tsx +63 -0
- package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/prompt-input-cursor.tsx +459 -0
- package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/prompt-input-tooltip.tsx +40 -0
- package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/prompt-input.tsx +247 -0
- package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/queue-prompt-input.tsx +367 -0
- package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/queue.tsx +276 -0
- package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/reasoning.tsx +67 -0
- package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/sandbox.tsx +166 -0
- package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/schema-display-basic.tsx +7 -0
- package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/schema-display-body.tsx +20 -0
- package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/schema-display-nested.tsx +23 -0
- package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/schema-display-params.tsx +16 -0
- package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/schema-display.tsx +110 -0
- package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/shimmer-duration.tsx +29 -0
- package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/shimmer-elements.tsx +39 -0
- package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/shimmer.tsx +17 -0
- package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/snippet-plain.tsx +19 -0
- package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/snippet.tsx +25 -0
- package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/sources-custom.tsx +34 -0
- package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/sources.tsx +27 -0
- package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/speech-input.tsx +79 -0
- package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/stack-trace-collapsed.tsx +39 -0
- package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/stack-trace-no-internal.tsx +41 -0
- package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/stack-trace.tsx +54 -0
- package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/suggestion-input.tsx +137 -0
- package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/suggestion.tsx +28 -0
- package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/task.tsx +60 -0
- package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/terminal-basic.tsx +7 -0
- package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/terminal-clear.tsx +19 -0
- package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/terminal-streaming.tsx +38 -0
- package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/terminal.tsx +77 -0
- package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/test-results-basic.tsx +27 -0
- package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/test-results-errors.tsx +51 -0
- package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/test-results-suites.tsx +40 -0
- package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/test-results.tsx +78 -0
- package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/tool-input-available.tsx +31 -0
- package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/tool-input-streaming.tsx +30 -0
- package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/tool-output-available.tsx +76 -0
- package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/tool-output-error.tsx +45 -0
- package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/tool.tsx +205 -0
- package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/transcription.tsx +284 -0
- package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/voice-selector.tsx +228 -0
- package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/web-preview.tsx +99 -0
- package/dist/templates/claude-config/app/.agents/skills/ai-sdk/SKILL.md +78 -0
- package/dist/templates/claude-config/app/.agents/skills/ai-sdk/references/ai-gateway.md +66 -0
- package/dist/templates/claude-config/app/.agents/skills/ai-sdk/references/common-errors.md +439 -0
- package/dist/templates/claude-config/app/.agents/skills/ai-sdk/references/devtools.md +52 -0
- package/dist/templates/claude-config/app/.agents/skills/ai-sdk/references/type-safe-agents.md +200 -0
- package/dist/templates/claude-config/app/.agents/skills/better-auth-best-practices/SKILL.md +166 -0
- package/dist/templates/claude-config/app/.agents/skills/building-components/SKILL.md +37 -0
- package/dist/templates/claude-config/app/.agents/skills/building-components/references/accessibility.mdx +819 -0
- package/dist/templates/claude-config/app/.agents/skills/building-components/references/as-child.mdx +324 -0
- package/dist/templates/claude-config/app/.agents/skills/building-components/references/composition.mdx +239 -0
- package/dist/templates/claude-config/app/.agents/skills/building-components/references/data-attributes.mdx +413 -0
- package/dist/templates/claude-config/app/.agents/skills/building-components/references/definitions.mdx +258 -0
- package/dist/templates/claude-config/app/.agents/skills/building-components/references/design-tokens.mdx +57 -0
- package/dist/templates/claude-config/app/.agents/skills/building-components/references/docs.mdx +155 -0
- package/dist/templates/claude-config/app/.agents/skills/building-components/references/marketplaces.mdx +144 -0
- package/dist/templates/claude-config/app/.agents/skills/building-components/references/npm.mdx +166 -0
- package/dist/templates/claude-config/app/.agents/skills/building-components/references/polymorphism.mdx +583 -0
- package/dist/templates/claude-config/app/.agents/skills/building-components/references/principles.mdx +61 -0
- package/dist/templates/claude-config/app/.agents/skills/building-components/references/registry.mdx +169 -0
- package/dist/templates/claude-config/app/.agents/skills/building-components/references/state.mdx +99 -0
- package/dist/templates/claude-config/app/.agents/skills/building-components/references/styling.mdx +286 -0
- package/dist/templates/claude-config/app/.agents/skills/building-components/references/types.mdx +191 -0
- package/dist/templates/claude-config/app/.agents/skills/docker-expert/SKILL.md +409 -0
- package/dist/templates/claude-config/app/.agents/skills/email-and-password-best-practices/SKILL.md +224 -0
- package/dist/templates/claude-config/app/.agents/skills/find-skills/SKILL.md +133 -0
- package/dist/templates/claude-config/app/.agents/skills/frontend-design/LICENSE.txt +177 -0
- package/dist/templates/claude-config/app/.agents/skills/frontend-design/SKILL.md +42 -0
- package/dist/templates/claude-config/app/.agents/skills/git-commit/SKILL.md +124 -0
- package/dist/templates/claude-config/app/.agents/skills/gitlab-ci-patterns/SKILL.md +271 -0
- package/dist/templates/claude-config/app/.agents/skills/hono/SKILL.md +90 -0
- package/dist/templates/claude-config/app/.agents/skills/langfuse-observability/SKILL.md +139 -0
- package/dist/templates/claude-config/app/.agents/skills/logging-best-practices/SKILL.md +127 -0
- package/dist/templates/claude-config/app/.agents/skills/logging-best-practices/rules/context.md +157 -0
- package/dist/templates/claude-config/app/.agents/skills/logging-best-practices/rules/pitfalls.md +118 -0
- package/dist/templates/claude-config/app/.agents/skills/logging-best-practices/rules/structure.md +193 -0
- package/dist/templates/claude-config/app/.agents/skills/logging-best-practices/rules/wide-events.md +113 -0
- package/dist/templates/claude-config/app/.agents/skills/next-best-practices/SKILL.md +153 -0
- package/dist/templates/claude-config/app/.agents/skills/next-best-practices/async-patterns.md +87 -0
- package/dist/templates/claude-config/app/.agents/skills/next-best-practices/bundling.md +180 -0
- package/dist/templates/claude-config/app/.agents/skills/next-best-practices/data-patterns.md +297 -0
- package/dist/templates/claude-config/app/.agents/skills/next-best-practices/debug-tricks.md +105 -0
- package/dist/templates/claude-config/app/.agents/skills/next-best-practices/directives.md +73 -0
- package/dist/templates/claude-config/app/.agents/skills/next-best-practices/error-handling.md +227 -0
- package/dist/templates/claude-config/app/.agents/skills/next-best-practices/file-conventions.md +140 -0
- package/dist/templates/claude-config/app/.agents/skills/next-best-practices/font.md +245 -0
- package/dist/templates/claude-config/app/.agents/skills/next-best-practices/functions.md +108 -0
- package/dist/templates/claude-config/app/.agents/skills/next-best-practices/hydration-error.md +91 -0
- package/dist/templates/claude-config/app/.agents/skills/next-best-practices/image.md +173 -0
- package/dist/templates/claude-config/app/.agents/skills/next-best-practices/metadata.md +301 -0
- package/dist/templates/claude-config/app/.agents/skills/next-best-practices/parallel-routes.md +287 -0
- package/dist/templates/claude-config/app/.agents/skills/next-best-practices/route-handlers.md +146 -0
- package/dist/templates/claude-config/app/.agents/skills/next-best-practices/rsc-boundaries.md +159 -0
- package/dist/templates/claude-config/app/.agents/skills/next-best-practices/runtime-selection.md +39 -0
- package/dist/templates/claude-config/app/.agents/skills/next-best-practices/scripts.md +141 -0
- package/dist/templates/claude-config/app/.agents/skills/next-best-practices/self-hosting.md +371 -0
- package/dist/templates/claude-config/app/.agents/skills/next-best-practices/suspense-boundaries.md +67 -0
- package/dist/templates/claude-config/app/.agents/skills/next-cache-components/SKILL.md +411 -0
- package/dist/templates/claude-config/app/.agents/skills/next-upgrade/SKILL.md +50 -0
- package/dist/templates/claude-config/app/.agents/skills/postgres-drizzle/SKILL.md +179 -0
- package/dist/templates/claude-config/app/.agents/skills/postgres-drizzle/references/CHEATSHEET.md +418 -0
- package/dist/templates/claude-config/app/.agents/skills/postgres-drizzle/references/MIGRATIONS.md +536 -0
- package/dist/templates/claude-config/app/.agents/skills/postgres-drizzle/references/PERFORMANCE.md +559 -0
- package/dist/templates/claude-config/app/.agents/skills/postgres-drizzle/references/POSTGRES.md +588 -0
- package/dist/templates/claude-config/app/.agents/skills/postgres-drizzle/references/QUERIES.md +764 -0
- package/dist/templates/claude-config/app/.agents/skills/postgres-drizzle/references/RELATIONS.md +624 -0
- package/dist/templates/claude-config/app/.agents/skills/postgres-drizzle/references/SCHEMA.md +554 -0
- package/dist/templates/claude-config/app/.agents/skills/skill-creator/LICENSE.txt +202 -0
- package/dist/templates/claude-config/app/.agents/skills/skill-creator/SKILL.md +356 -0
- package/dist/templates/claude-config/app/.agents/skills/skill-creator/references/output-patterns.md +82 -0
- package/dist/templates/claude-config/app/.agents/skills/skill-creator/references/workflows.md +28 -0
- package/dist/templates/claude-config/app/.agents/skills/skill-creator/scripts/init_skill.py +303 -0
- package/dist/templates/claude-config/app/.agents/skills/skill-creator/scripts/package_skill.py +113 -0
- package/dist/templates/claude-config/app/.agents/skills/skill-creator/scripts/quick_validate.py +95 -0
- package/dist/templates/claude-config/app/.agents/skills/streamdown/SKILL.md +164 -0
- package/dist/templates/claude-config/app/.agents/skills/streamdown/assets/examples/basic-streaming.tsx +34 -0
- package/dist/templates/claude-config/app/.agents/skills/streamdown/assets/examples/custom-security.tsx +38 -0
- package/dist/templates/claude-config/app/.agents/skills/streamdown/assets/examples/full-featured.tsx +60 -0
- package/dist/templates/claude-config/app/.agents/skills/streamdown/assets/examples/static-mode.tsx +17 -0
- package/dist/templates/claude-config/app/.agents/skills/streamdown/assets/examples/with-caret.tsx +39 -0
- package/dist/templates/claude-config/app/.agents/skills/streamdown/references/api.md +278 -0
- package/dist/templates/claude-config/app/.agents/skills/streamdown/references/features.md +201 -0
- package/dist/templates/claude-config/app/.agents/skills/streamdown/references/plugins.md +239 -0
- package/dist/templates/claude-config/app/.agents/skills/streamdown/references/security.md +192 -0
- package/dist/templates/claude-config/app/.agents/skills/streamdown/references/styling.md +166 -0
- package/dist/templates/claude-config/app/.agents/skills/tdd/SKILL.md +107 -0
- package/dist/templates/claude-config/app/.agents/skills/tdd/deep-modules.md +33 -0
- package/dist/templates/claude-config/app/.agents/skills/tdd/interface-design.md +31 -0
- package/dist/templates/claude-config/app/.agents/skills/tdd/mocking.md +60 -0
- package/dist/templates/claude-config/app/.agents/skills/tdd/refactoring.md +10 -0
- package/dist/templates/claude-config/app/.agents/skills/tdd/tests.md +61 -0
- package/dist/templates/claude-config/app/.agents/skills/turborepo/SKILL.md +914 -0
- package/dist/templates/claude-config/app/.agents/skills/turborepo/command/turborepo.md +70 -0
- package/dist/templates/claude-config/app/.agents/skills/turborepo/references/best-practices/RULE.md +241 -0
- package/dist/templates/claude-config/app/.agents/skills/turborepo/references/best-practices/dependencies.md +246 -0
- package/dist/templates/claude-config/app/.agents/skills/turborepo/references/best-practices/packages.md +335 -0
- package/dist/templates/claude-config/app/.agents/skills/turborepo/references/best-practices/structure.md +270 -0
- package/dist/templates/claude-config/app/.agents/skills/turborepo/references/boundaries/RULE.md +126 -0
- package/dist/templates/claude-config/app/.agents/skills/turborepo/references/caching/RULE.md +107 -0
- package/dist/templates/claude-config/app/.agents/skills/turborepo/references/caching/gotchas.md +169 -0
- package/dist/templates/claude-config/app/.agents/skills/turborepo/references/caching/remote-cache.md +127 -0
- package/dist/templates/claude-config/app/.agents/skills/turborepo/references/ci/RULE.md +79 -0
- package/dist/templates/claude-config/app/.agents/skills/turborepo/references/ci/github-actions.md +162 -0
- package/dist/templates/claude-config/app/.agents/skills/turborepo/references/ci/patterns.md +145 -0
- package/dist/templates/claude-config/app/.agents/skills/turborepo/references/ci/vercel.md +103 -0
- package/dist/templates/claude-config/app/.agents/skills/turborepo/references/cli/RULE.md +100 -0
- package/dist/templates/claude-config/app/.agents/skills/turborepo/references/cli/commands.md +297 -0
- package/dist/templates/claude-config/app/.agents/skills/turborepo/references/configuration/RULE.md +211 -0
- package/dist/templates/claude-config/app/.agents/skills/turborepo/references/configuration/global-options.md +191 -0
- package/dist/templates/claude-config/app/.agents/skills/turborepo/references/configuration/gotchas.md +348 -0
- package/dist/templates/claude-config/app/.agents/skills/turborepo/references/configuration/tasks.md +281 -0
- package/dist/templates/claude-config/app/.agents/skills/turborepo/references/environment/RULE.md +96 -0
- package/dist/templates/claude-config/app/.agents/skills/turborepo/references/environment/gotchas.md +141 -0
- package/dist/templates/claude-config/app/.agents/skills/turborepo/references/environment/modes.md +101 -0
- package/dist/templates/claude-config/app/.agents/skills/turborepo/references/filtering/RULE.md +148 -0
- package/dist/templates/claude-config/app/.agents/skills/turborepo/references/filtering/patterns.md +152 -0
- package/dist/templates/claude-config/app/.agents/skills/turborepo/references/watch/RULE.md +99 -0
- package/dist/templates/claude-config/app/.agents/skills/vercel-composition-patterns/AGENTS.md +917 -0
- package/dist/templates/claude-config/app/.agents/skills/vercel-composition-patterns/SKILL.md +88 -0
- package/dist/templates/claude-config/app/.agents/skills/vercel-composition-patterns/rules/architecture-avoid-boolean-props.md +94 -0
- package/dist/templates/claude-config/app/.agents/skills/vercel-composition-patterns/rules/architecture-compound-components.md +108 -0
- package/dist/templates/claude-config/app/.agents/skills/vercel-composition-patterns/rules/patterns-children-over-render-props.md +84 -0
- package/dist/templates/claude-config/app/.agents/skills/vercel-composition-patterns/rules/patterns-explicit-variants.md +94 -0
- package/dist/templates/claude-config/app/.agents/skills/vercel-composition-patterns/rules/react19-no-forwardref.md +42 -0
- package/dist/templates/claude-config/app/.agents/skills/vercel-composition-patterns/rules/state-context-interface.md +191 -0
- package/dist/templates/claude-config/app/.agents/skills/vercel-composition-patterns/rules/state-decouple-implementation.md +103 -0
- package/dist/templates/claude-config/app/.agents/skills/vercel-composition-patterns/rules/state-lift-state.md +125 -0
- package/dist/templates/claude-config/app/.agents/skills/vercel-react-best-practices/AGENTS.md +2883 -0
- package/dist/templates/claude-config/app/.agents/skills/vercel-react-best-practices/SKILL.md +138 -0
- package/dist/templates/claude-config/app/.agents/skills/vercel-react-best-practices/rules/advanced-event-handler-refs.md +55 -0
- package/dist/templates/claude-config/app/.agents/skills/vercel-react-best-practices/rules/advanced-init-once.md +42 -0
- package/dist/templates/claude-config/app/.agents/skills/vercel-react-best-practices/rules/advanced-use-latest.md +39 -0
- package/dist/templates/claude-config/app/.agents/skills/vercel-react-best-practices/rules/async-api-routes.md +35 -0
- package/dist/templates/claude-config/app/.agents/skills/vercel-react-best-practices/rules/async-defer-await.md +80 -0
- package/dist/templates/claude-config/app/.agents/skills/vercel-react-best-practices/rules/async-dependencies.md +48 -0
- package/dist/templates/claude-config/app/.agents/skills/vercel-react-best-practices/rules/async-parallel.md +24 -0
- package/dist/templates/claude-config/app/.agents/skills/vercel-react-best-practices/rules/async-suspense-boundaries.md +99 -0
- package/dist/templates/claude-config/app/.agents/skills/vercel-react-best-practices/rules/bundle-barrel-imports.md +59 -0
- package/dist/templates/claude-config/app/.agents/skills/vercel-react-best-practices/rules/bundle-conditional.md +37 -0
- package/dist/templates/claude-config/app/.agents/skills/vercel-react-best-practices/rules/bundle-defer-third-party.md +48 -0
- package/dist/templates/claude-config/app/.agents/skills/vercel-react-best-practices/rules/bundle-dynamic-imports.md +34 -0
- package/dist/templates/claude-config/app/.agents/skills/vercel-react-best-practices/rules/bundle-preload.md +44 -0
- package/dist/templates/claude-config/app/.agents/skills/vercel-react-best-practices/rules/client-event-listeners.md +78 -0
- package/dist/templates/claude-config/app/.agents/skills/vercel-react-best-practices/rules/client-localstorage-schema.md +74 -0
- package/dist/templates/claude-config/app/.agents/skills/vercel-react-best-practices/rules/client-passive-event-listeners.md +48 -0
- package/dist/templates/claude-config/app/.agents/skills/vercel-react-best-practices/rules/client-swr-dedup.md +56 -0
- package/dist/templates/claude-config/app/.agents/skills/vercel-react-best-practices/rules/js-batch-dom-css.md +110 -0
- package/dist/templates/claude-config/app/.agents/skills/vercel-react-best-practices/rules/js-cache-function-results.md +80 -0
- package/dist/templates/claude-config/app/.agents/skills/vercel-react-best-practices/rules/js-cache-property-access.md +28 -0
- package/dist/templates/claude-config/app/.agents/skills/vercel-react-best-practices/rules/js-cache-storage.md +68 -0
- package/dist/templates/claude-config/app/.agents/skills/vercel-react-best-practices/rules/js-combine-iterations.md +32 -0
- package/dist/templates/claude-config/app/.agents/skills/vercel-react-best-practices/rules/js-early-exit.md +50 -0
- package/dist/templates/claude-config/app/.agents/skills/vercel-react-best-practices/rules/js-hoist-regexp.md +45 -0
- package/dist/templates/claude-config/app/.agents/skills/vercel-react-best-practices/rules/js-index-maps.md +37 -0
- package/dist/templates/claude-config/app/.agents/skills/vercel-react-best-practices/rules/js-length-check-first.md +50 -0
- package/dist/templates/claude-config/app/.agents/skills/vercel-react-best-practices/rules/js-min-max-loop.md +82 -0
- package/dist/templates/claude-config/app/.agents/skills/vercel-react-best-practices/rules/js-set-map-lookups.md +24 -0
- package/dist/templates/claude-config/app/.agents/skills/vercel-react-best-practices/rules/js-tosorted-immutable.md +57 -0
- package/dist/templates/claude-config/app/.agents/skills/vercel-react-best-practices/rules/rendering-activity.md +26 -0
- package/dist/templates/claude-config/app/.agents/skills/vercel-react-best-practices/rules/rendering-animate-svg-wrapper.md +38 -0
- package/dist/templates/claude-config/app/.agents/skills/vercel-react-best-practices/rules/rendering-conditional-render.md +32 -0
- package/dist/templates/claude-config/app/.agents/skills/vercel-react-best-practices/rules/rendering-content-visibility.md +38 -0
- package/dist/templates/claude-config/app/.agents/skills/vercel-react-best-practices/rules/rendering-hoist-jsx.md +36 -0
- package/dist/templates/claude-config/app/.agents/skills/vercel-react-best-practices/rules/rendering-hydration-no-flicker.md +72 -0
- package/dist/templates/claude-config/app/.agents/skills/vercel-react-best-practices/rules/rendering-hydration-suppress-warning.md +26 -0
- package/dist/templates/claude-config/app/.agents/skills/vercel-react-best-practices/rules/rendering-svg-precision.md +28 -0
- package/dist/templates/claude-config/app/.agents/skills/vercel-react-best-practices/rules/rendering-usetransition-loading.md +75 -0
- package/dist/templates/claude-config/app/.agents/skills/vercel-react-best-practices/rules/rerender-defer-reads.md +39 -0
- package/dist/templates/claude-config/app/.agents/skills/vercel-react-best-practices/rules/rerender-dependencies.md +45 -0
- package/dist/templates/claude-config/app/.agents/skills/vercel-react-best-practices/rules/rerender-derived-state-no-effect.md +40 -0
- package/dist/templates/claude-config/app/.agents/skills/vercel-react-best-practices/rules/rerender-derived-state.md +29 -0
- package/dist/templates/claude-config/app/.agents/skills/vercel-react-best-practices/rules/rerender-functional-setstate.md +77 -0
- package/dist/templates/claude-config/app/.agents/skills/vercel-react-best-practices/rules/rerender-lazy-state-init.md +56 -0
- package/dist/templates/claude-config/app/.agents/skills/vercel-react-best-practices/rules/rerender-memo-with-default-value.md +36 -0
- package/dist/templates/claude-config/app/.agents/skills/vercel-react-best-practices/rules/rerender-memo.md +44 -0
- package/dist/templates/claude-config/app/.agents/skills/vercel-react-best-practices/rules/rerender-move-effect-to-event.md +45 -0
- package/dist/templates/claude-config/app/.agents/skills/vercel-react-best-practices/rules/rerender-simple-expression-in-memo.md +35 -0
- package/dist/templates/claude-config/app/.agents/skills/vercel-react-best-practices/rules/rerender-transitions.md +40 -0
- package/dist/templates/claude-config/app/.agents/skills/vercel-react-best-practices/rules/rerender-use-ref-transient-values.md +73 -0
- package/dist/templates/claude-config/app/.agents/skills/vercel-react-best-practices/rules/server-after-nonblocking.md +73 -0
- package/dist/templates/claude-config/app/.agents/skills/vercel-react-best-practices/rules/server-auth-actions.md +96 -0
- package/dist/templates/claude-config/app/.agents/skills/vercel-react-best-practices/rules/server-cache-lru.md +41 -0
- package/dist/templates/claude-config/app/.agents/skills/vercel-react-best-practices/rules/server-cache-react.md +76 -0
- package/dist/templates/claude-config/app/.agents/skills/vercel-react-best-practices/rules/server-dedup-props.md +65 -0
- package/dist/templates/claude-config/app/.agents/skills/vercel-react-best-practices/rules/server-parallel-fetching.md +83 -0
- package/dist/templates/claude-config/app/.agents/skills/vercel-react-best-practices/rules/server-serialization.md +38 -0
- package/dist/templates/claude-config/app/.agents/skills/web-design-guidelines/SKILL.md +40 -0
- package/dist/templates/claude-config/app/.agents/skills/workflow/SKILL.md +181 -0
- package/dist/templates/claude-config/app/.claude/commands/council.md +7 -0
- package/dist/templates/claude-config/app/.claude/commands/deslop.md +25 -0
- package/dist/templates/claude-config/app/.claude/commands/diagram.md +101 -0
- package/dist/templates/claude-config/app/.claude/commands/fix-merge.md +47 -0
- package/dist/templates/claude-config/app/.claude/commands/you-might-not-need-an-effect.md +10 -0
- package/dist/templates/claude-config/app/.claude/hooks/post-tool-use-tracker.sh +187 -0
- package/dist/templates/claude-config/app/.claude/hooks/skill-activation-prompt.sh +5 -0
- package/dist/templates/claude-config/app/.claude/hooks/skill-activation-prompt.ts +134 -0
- package/dist/templates/claude-config/app/.claude/rules/comments.md +12 -0
- package/dist/templates/claude-config/app/.claude/rules/typescript.md +31 -0
- package/dist/templates/claude-config/app/.claude/settings.json.hbs +74 -0
- package/dist/templates/claude-config/app/.claude/skills/skill-rules.json.hbs +309 -0
- package/dist/templates/claude-config/app/AGENTS.md.hbs +185 -0
- package/dist/templates/claude-config/app/CLAUDE.md.hbs +5 -0
- package/dist/templates/claude-config/kustomize/.agents/skills/git-commit/SKILL.md +124 -0
- package/dist/templates/claude-config/kustomize/.agents/skills/k8s-manifest-generator/SKILL.md +534 -0
- package/dist/templates/claude-config/kustomize/.agents/skills/k8s-manifest-generator/assets/configmap-template.yaml +296 -0
- package/dist/templates/claude-config/kustomize/.agents/skills/k8s-manifest-generator/assets/deployment-template.yaml +203 -0
- package/dist/templates/claude-config/kustomize/.agents/skills/k8s-manifest-generator/assets/service-template.yaml +171 -0
- package/dist/templates/claude-config/kustomize/.agents/skills/k8s-manifest-generator/references/deployment-spec.md +780 -0
- package/dist/templates/claude-config/kustomize/.agents/skills/k8s-manifest-generator/references/service-spec.md +748 -0
- package/dist/templates/claude-config/kustomize/.claude/settings.json +42 -0
- package/dist/templates/claude-config/kustomize/.claude/skills/git-commit/SKILL.md +124 -0
- package/dist/templates/claude-config/kustomize/.claude/skills/k8s-manifest-generator/SKILL.md +534 -0
- package/dist/templates/claude-config/kustomize/.claude/skills/k8s-manifest-generator/assets/configmap-template.yaml +296 -0
- package/dist/templates/claude-config/kustomize/.claude/skills/k8s-manifest-generator/assets/deployment-template.yaml +203 -0
- package/dist/templates/claude-config/kustomize/.claude/skills/k8s-manifest-generator/assets/service-template.yaml +171 -0
- package/dist/templates/claude-config/kustomize/.claude/skills/k8s-manifest-generator/references/deployment-spec.md +780 -0
- package/dist/templates/claude-config/kustomize/.claude/skills/k8s-manifest-generator/references/service-spec.md +748 -0
- package/dist/templates/docker/.dockerignore.hbs +8 -0
- package/dist/templates/docker/Dockerfile.hbs +81 -0
- package/dist/templates/docker/docker-compose.yml.hbs +55 -0
- package/dist/templates/kustomize/base/deployments/app.yaml.hbs +44 -0
- package/dist/templates/kustomize/base/ingress/app.yaml.hbs +20 -0
- package/dist/templates/kustomize/base/jobs/app-jobs.yaml.hbs +43 -0
- package/dist/templates/kustomize/base/kustomization.yaml.hbs +13 -0
- package/dist/templates/kustomize/base/secrets/regcred.yaml.hbs +7 -0
- package/dist/templates/kustomize/base/services/app.yaml.hbs +12 -0
- package/dist/templates/kustomize/overlays/{{env}}/configs/app.config.env.hbs +21 -0
- package/dist/templates/kustomize/overlays/{{env}}/configs/paradedb.config.env.hbs +3 -0
- package/dist/templates/kustomize/overlays/{{env}}/deployments/paradedb.yaml.hbs +28 -0
- package/dist/templates/kustomize/overlays/{{env}}/deployments/redis.yaml.hbs +18 -0
- package/dist/templates/kustomize/overlays/{{env}}/kustomization.yaml.hbs +36 -0
- package/dist/templates/kustomize/overlays/{{env}}/patch-operation/ingress-host.yaml.hbs +15 -0
- package/dist/templates/kustomize/overlays/{{env}}/services/paradedb.yaml.hbs +11 -0
- package/dist/templates/kustomize/overlays/{{env}}/services/redis.yaml.hbs +11 -0
- package/dist/templates/kustomize/overlays/{{env}}/storage/paradedb-pvc.yaml.hbs +10 -0
- package/dist/templates/presets/ai-chat-app/apps/web/.env.example +11 -0
- package/dist/templates/presets/ai-chat-app/apps/web/app/api/auth/[...all]/route.ts +5 -0
- package/dist/templates/presets/ai-chat-app/apps/web/app/api/chat/input-guardrail.ts +47 -0
- package/dist/templates/presets/ai-chat-app/apps/web/app/api/chat/route.ts +266 -0
- package/dist/templates/presets/ai-chat-app/apps/web/app/api/chat/sessions/[id]/messages/route.ts +38 -0
- package/dist/templates/presets/ai-chat-app/apps/web/app/api/chat/sessions/[id]/route.ts +59 -0
- package/dist/templates/presets/ai-chat-app/apps/web/app/api/chat/sessions/route.ts +24 -0
- package/dist/templates/presets/ai-chat-app/apps/web/app/api/health/route.ts +21 -0
- package/dist/templates/presets/ai-chat-app/apps/web/app/chat/[id]/page.tsx +54 -0
- package/dist/templates/presets/ai-chat-app/apps/web/app/chat/layout.tsx +23 -0
- package/dist/templates/presets/ai-chat-app/apps/web/app/chat/page.tsx +9 -0
- package/dist/templates/presets/ai-chat-app/apps/web/app/error.tsx +20 -0
- package/dist/templates/presets/ai-chat-app/apps/web/app/global-error.tsx +42 -0
- package/dist/templates/presets/ai-chat-app/apps/web/app/globals.css +187 -0
- package/dist/templates/presets/ai-chat-app/apps/web/app/layout.tsx.hbs +30 -0
- package/dist/templates/presets/ai-chat-app/apps/web/app/login/login-form.tsx +96 -0
- package/dist/templates/presets/ai-chat-app/apps/web/app/login/page.tsx +14 -0
- package/dist/templates/presets/ai-chat-app/apps/web/app/not-found.tsx +15 -0
- package/dist/templates/presets/ai-chat-app/apps/web/components/ai-elements/code-block.tsx +518 -0
- package/dist/templates/presets/ai-chat-app/apps/web/components/ai-elements/context.tsx +356 -0
- package/dist/templates/presets/ai-chat-app/apps/web/components/ai-elements/conversation.tsx +150 -0
- package/dist/templates/presets/ai-chat-app/apps/web/components/ai-elements/environment-variables.tsx +303 -0
- package/dist/templates/presets/ai-chat-app/apps/web/components/ai-elements/message.tsx +295 -0
- package/dist/templates/presets/ai-chat-app/apps/web/components/ai-elements/prompt-input.tsx +1179 -0
- package/dist/templates/presets/ai-chat-app/apps/web/components/ai-elements/sources.tsx +54 -0
- package/dist/templates/presets/ai-chat-app/apps/web/components/ai-elements/tool.tsx +157 -0
- package/dist/templates/presets/ai-chat-app/apps/web/components/app-sidebar.tsx +110 -0
- package/dist/templates/presets/ai-chat-app/apps/web/components/chat-sessions-provider.tsx +89 -0
- package/dist/templates/presets/ai-chat-app/apps/web/components/chat-sidebar-list.tsx +174 -0
- package/dist/templates/presets/ai-chat-app/apps/web/components/chat-view.tsx +156 -0
- package/dist/templates/presets/ai-chat-app/apps/web/components/ui/accordion.tsx +72 -0
- package/dist/templates/presets/ai-chat-app/apps/web/components/ui/alert-dialog.tsx +162 -0
- package/dist/templates/presets/ai-chat-app/apps/web/components/ui/alert.tsx +73 -0
- package/dist/templates/presets/ai-chat-app/apps/web/components/ui/aspect-ratio.tsx +22 -0
- package/dist/templates/presets/ai-chat-app/apps/web/components/ui/avatar.tsx +93 -0
- package/dist/templates/presets/ai-chat-app/apps/web/components/ui/badge.tsx +49 -0
- package/dist/templates/presets/ai-chat-app/apps/web/components/ui/breadcrumb.tsx +103 -0
- package/dist/templates/presets/ai-chat-app/apps/web/components/ui/button-group.tsx +78 -0
- package/dist/templates/presets/ai-chat-app/apps/web/components/ui/button.tsx +60 -0
- package/dist/templates/presets/ai-chat-app/apps/web/components/ui/calendar.tsx +185 -0
- package/dist/templates/presets/ai-chat-app/apps/web/components/ui/card.tsx +92 -0
- package/dist/templates/presets/ai-chat-app/apps/web/components/ui/carousel.tsx +231 -0
- package/dist/templates/presets/ai-chat-app/apps/web/components/ui/chart.tsx +325 -0
- package/dist/templates/presets/ai-chat-app/apps/web/components/ui/checkbox.tsx +28 -0
- package/dist/templates/presets/ai-chat-app/apps/web/components/ui/collapsible.tsx +17 -0
- package/dist/templates/presets/ai-chat-app/apps/web/components/ui/combobox.tsx +273 -0
- package/dist/templates/presets/ai-chat-app/apps/web/components/ui/command.tsx +181 -0
- package/dist/templates/presets/ai-chat-app/apps/web/components/ui/context-menu.tsx +245 -0
- package/dist/templates/presets/ai-chat-app/apps/web/components/ui/dialog.tsx +135 -0
- package/dist/templates/presets/ai-chat-app/apps/web/components/ui/direction.tsx +3 -0
- package/dist/templates/presets/ai-chat-app/apps/web/components/ui/drawer.tsx +120 -0
- package/dist/templates/presets/ai-chat-app/apps/web/components/ui/dropdown-menu.tsx +258 -0
- package/dist/templates/presets/ai-chat-app/apps/web/components/ui/empty.tsx +94 -0
- package/dist/templates/presets/ai-chat-app/apps/web/components/ui/field.tsx +224 -0
- package/dist/templates/presets/ai-chat-app/apps/web/components/ui/hover-card.tsx +46 -0
- package/dist/templates/presets/ai-chat-app/apps/web/components/ui/input-group.tsx +146 -0
- package/dist/templates/presets/ai-chat-app/apps/web/components/ui/input-otp.tsx +86 -0
- package/dist/templates/presets/ai-chat-app/apps/web/components/ui/input.tsx +20 -0
- package/dist/templates/presets/ai-chat-app/apps/web/components/ui/item.tsx +188 -0
- package/dist/templates/presets/ai-chat-app/apps/web/components/ui/kbd.tsx +26 -0
- package/dist/templates/presets/ai-chat-app/apps/web/components/ui/label.tsx +20 -0
- package/dist/templates/presets/ai-chat-app/apps/web/components/ui/menubar.tsx +270 -0
- package/dist/templates/presets/ai-chat-app/apps/web/components/ui/native-select.tsx +43 -0
- package/dist/templates/presets/ai-chat-app/apps/web/components/ui/navigation-menu.tsx +161 -0
- package/dist/templates/presets/ai-chat-app/apps/web/components/ui/pagination.tsx +118 -0
- package/dist/templates/presets/ai-chat-app/apps/web/components/ui/popover.tsx +77 -0
- package/dist/templates/presets/ai-chat-app/apps/web/components/ui/progress.tsx +66 -0
- package/dist/templates/presets/ai-chat-app/apps/web/components/ui/radio-group.tsx +39 -0
- package/dist/templates/presets/ai-chat-app/apps/web/components/ui/resizable.tsx +42 -0
- package/dist/templates/presets/ai-chat-app/apps/web/components/ui/scroll-area.tsx +51 -0
- package/dist/templates/presets/ai-chat-app/apps/web/components/ui/select.tsx +190 -0
- package/dist/templates/presets/ai-chat-app/apps/web/components/ui/separator.tsx +21 -0
- package/dist/templates/presets/ai-chat-app/apps/web/components/ui/sheet.tsx +125 -0
- package/dist/templates/presets/ai-chat-app/apps/web/components/ui/sidebar.tsx +689 -0
- package/dist/templates/presets/ai-chat-app/apps/web/components/ui/skeleton.tsx +13 -0
- package/dist/templates/presets/ai-chat-app/apps/web/components/ui/slider.tsx +54 -0
- package/dist/templates/presets/ai-chat-app/apps/web/components/ui/sonner.tsx +45 -0
- package/dist/templates/presets/ai-chat-app/apps/web/components/ui/spinner.tsx +15 -0
- package/dist/templates/presets/ai-chat-app/apps/web/components/ui/switch.tsx +32 -0
- package/dist/templates/presets/ai-chat-app/apps/web/components/ui/table.tsx +89 -0
- package/dist/templates/presets/ai-chat-app/apps/web/components/ui/tabs.tsx +75 -0
- package/dist/templates/presets/ai-chat-app/apps/web/components/ui/textarea.tsx +18 -0
- package/dist/templates/presets/ai-chat-app/apps/web/components/ui/toggle-group.tsx +87 -0
- package/dist/templates/presets/ai-chat-app/apps/web/components/ui/toggle.tsx +44 -0
- package/dist/templates/presets/ai-chat-app/apps/web/components/ui/tooltip.tsx +54 -0
- package/dist/templates/presets/ai-chat-app/apps/web/components.json +20 -0
- package/dist/templates/presets/ai-chat-app/apps/web/drizzle.config.ts +10 -0
- package/dist/templates/presets/ai-chat-app/apps/web/env.ts +30 -0
- package/dist/templates/presets/ai-chat-app/apps/web/hooks/use-mobile.ts +19 -0
- package/dist/templates/presets/ai-chat-app/apps/web/instrumentation.ts +21 -0
- package/dist/templates/presets/ai-chat-app/apps/web/lib/auth-client.ts +3 -0
- package/dist/templates/presets/ai-chat-app/apps/web/lib/auth-session.ts +9 -0
- package/dist/templates/presets/ai-chat-app/apps/web/lib/auth.ts +16 -0
- package/dist/templates/presets/ai-chat-app/apps/web/lib/db/index.ts +11 -0
- package/dist/templates/presets/ai-chat-app/apps/web/lib/db/migrate.ts +53 -0
- package/dist/templates/presets/ai-chat-app/apps/web/lib/db/schema.ts +94 -0
- package/dist/templates/presets/ai-chat-app/apps/web/lib/db/seed.ts +123 -0
- package/dist/templates/presets/ai-chat-app/apps/web/lib/group-by-date.ts +34 -0
- package/dist/templates/presets/ai-chat-app/apps/web/lib/logger.ts +21 -0
- package/dist/templates/presets/ai-chat-app/apps/web/lib/openrouter.ts +7 -0
- package/dist/templates/presets/ai-chat-app/apps/web/lib/schemas/auth.ts +8 -0
- package/dist/templates/presets/ai-chat-app/apps/web/lib/utils.ts +4 -0
- package/dist/templates/presets/ai-chat-app/apps/web/next-env.d.ts +6 -0
- package/dist/templates/presets/ai-chat-app/apps/web/next.config.ts +14 -0
- package/dist/templates/presets/ai-chat-app/apps/web/package.json +70 -0
- package/dist/templates/presets/ai-chat-app/apps/web/postcss.config.mjs +7 -0
- package/dist/templates/presets/ai-chat-app/apps/web/proxy.ts +13 -0
- package/dist/templates/presets/ai-chat-app/apps/web/tsconfig.json +14 -0
- package/dist/templates/presets/blank/apps/web/.env.example +1 -0
- package/dist/templates/presets/blank/apps/web/app/api/health/route.ts +11 -0
- package/dist/templates/presets/blank/apps/web/app/globals.css +49 -0
- package/dist/templates/presets/blank/apps/web/app/layout.tsx.hbs +30 -0
- package/dist/templates/presets/blank/apps/web/app/page.tsx.hbs +10 -0
- package/dist/templates/presets/blank/apps/web/env.ts +10 -0
- package/dist/templates/presets/blank/apps/web/next-env.d.ts +2 -0
- package/dist/templates/presets/blank/apps/web/next.config.ts +9 -0
- package/dist/templates/presets/blank/apps/web/package.json.hbs +27 -0
- package/dist/templates/presets/blank/apps/web/postcss.config.mjs +7 -0
- package/dist/templates/presets/blank/apps/web/tsconfig.json +14 -0
- package/dist/templates/tooling/.oxfmtrc.json +6 -0
- package/dist/templates/tooling/.oxlintrc.json +20 -0
- package/dist/templates/tooling/commitlint.config.ts.hbs +3 -0
- package/dist/templates/tooling/lefthook.yml.hbs +25 -0
- package/package.json +47 -0
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
Based on the given area of interest, please:
|
|
2
|
+
|
|
3
|
+
1. Dig around the codebase in terms of that given area of interest, gather general information such as keywords and architecture overview.
|
|
4
|
+
2. Spawn off n=10 (unless specified otherwise) task agents to dig deeper into the codebase in terms of that given area of interest, some of them should be out of the box for variance.
|
|
5
|
+
3. Once the task agents are done, use the information to do what the user wants.
|
|
6
|
+
|
|
7
|
+
If user is in plan mode, use the information to create the plan.
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# Remove AI Code Slop
|
|
2
|
+
|
|
3
|
+
Review the diff against main diligently. Ensure non-repeated, clean code that follows best practices in React and TypeScript.
|
|
4
|
+
|
|
5
|
+
## Remove
|
|
6
|
+
|
|
7
|
+
- **Redundant comments**: Trivial or obvious comments that can be easily understood from the code itself
|
|
8
|
+
- **Unnecessary state**: State that can be achieved with Tailwind CSS or derived from existing state
|
|
9
|
+
- **Defensive over-engineering**: Extra try/catch blocks or null checks abnormal for that area (especially for trusted/validated codepaths)
|
|
10
|
+
- **Type hacks**: Casts to `any` or `as unknown as X` to sidestep type issues
|
|
11
|
+
- **Reinvented helpers**: Code that duplicates existing utilities in the codebase—reuse what exists
|
|
12
|
+
- **Style inconsistencies**: Anything that doesn't match the surrounding file's conventions
|
|
13
|
+
|
|
14
|
+
## Check for
|
|
15
|
+
|
|
16
|
+
- **Unnecessary re-renders**: Missing memoization, inline object/function definitions in JSX, or state changes that trigger excessive updates
|
|
17
|
+
- **Non-idiomatic patterns**: Anything that deviates from established React/TS patterns in this codebase
|
|
18
|
+
|
|
19
|
+
## Ask
|
|
20
|
+
|
|
21
|
+
Flag anything remotely weird or questionable—ask rather than assume.
|
|
22
|
+
|
|
23
|
+
## Output
|
|
24
|
+
|
|
25
|
+
Report with a 1-3 sentence summary of changes made.
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
# Generate Mermaid Diagram
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
Analyze the provided code, architecture, or concept and generate a clear, well-structured Mermaid diagram that visualizes the relationships, flow, or structure.
|
|
6
|
+
|
|
7
|
+
## Instructions
|
|
8
|
+
|
|
9
|
+
1. **Analyze the input** - Understand what the user wants to visualize (code flow, architecture, data relationships, state machines, sequences, etc.)
|
|
10
|
+
|
|
11
|
+
2. **Choose the appropriate diagram type**:
|
|
12
|
+
- `flowchart` - For process flows, decision trees, algorithms
|
|
13
|
+
- `sequenceDiagram` - For API calls, message passing, request/response flows
|
|
14
|
+
- `classDiagram` - For class structures, inheritance, interfaces
|
|
15
|
+
- `erDiagram` - For database schemas, entity relationships
|
|
16
|
+
- `stateDiagram-v2` - For state machines, lifecycle flows
|
|
17
|
+
- `graph TD/LR` - For dependency graphs, module relationships
|
|
18
|
+
- `gitgraph` - For git branching strategies
|
|
19
|
+
- `journey` - For user journeys
|
|
20
|
+
- `gantt` - For timelines and schedules
|
|
21
|
+
|
|
22
|
+
3. **Generate the diagram** with these qualities:
|
|
23
|
+
- Clear, descriptive node labels
|
|
24
|
+
- Logical grouping with subgraphs where appropriate
|
|
25
|
+
- Consistent styling and direction
|
|
26
|
+
- Meaningful relationship labels on edges
|
|
27
|
+
- Not overly complex - split into multiple diagrams if needed
|
|
28
|
+
|
|
29
|
+
4. **Output format**: Always wrap the diagram in a mermaid code block:
|
|
30
|
+
```mermaid
|
|
31
|
+
[diagram code here]
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## Diagram Style Guidelines
|
|
35
|
+
|
|
36
|
+
- Use descriptive IDs: `userService` not `u1`
|
|
37
|
+
- Add labels to relationships when they add clarity
|
|
38
|
+
- Use subgraphs to group related components
|
|
39
|
+
- Keep diagrams readable - max \~15-20 nodes per diagram
|
|
40
|
+
- Use appropriate arrow styles:
|
|
41
|
+
- `-->` solid arrow (main flow)
|
|
42
|
+
- `-.->` dotted arrow (optional/async)
|
|
43
|
+
- `==>` thick arrow (important path)
|
|
44
|
+
- `--o` circle end (aggregation)
|
|
45
|
+
- `--*` diamond end (composition)
|
|
46
|
+
|
|
47
|
+
## Examples
|
|
48
|
+
|
|
49
|
+
### Flowchart
|
|
50
|
+
|
|
51
|
+
```mermaid
|
|
52
|
+
flowchart TD
|
|
53
|
+
A[Start] --> B{Is valid?}
|
|
54
|
+
B -->|Yes| C[Process]
|
|
55
|
+
B -->|No| D[Error]
|
|
56
|
+
C --> E[End]
|
|
57
|
+
D --> E
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
### Sequence Diagram
|
|
61
|
+
|
|
62
|
+
```mermaid
|
|
63
|
+
sequenceDiagram
|
|
64
|
+
participant C as Client
|
|
65
|
+
participant S as Server
|
|
66
|
+
participant DB as Database
|
|
67
|
+
|
|
68
|
+
C->>S: Request
|
|
69
|
+
S->>DB: Query
|
|
70
|
+
DB-->>S: Results
|
|
71
|
+
S-->>C: Response
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
### Class Diagram
|
|
75
|
+
|
|
76
|
+
```mermaid
|
|
77
|
+
classDiagram
|
|
78
|
+
class Animal {
|
|
79
|
+
+String name
|
|
80
|
+
+makeSound()
|
|
81
|
+
}
|
|
82
|
+
class Dog {
|
|
83
|
+
+bark()
|
|
84
|
+
}
|
|
85
|
+
Animal <|-- Dog
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
### ER Diagram
|
|
89
|
+
|
|
90
|
+
```mermaid
|
|
91
|
+
erDiagram
|
|
92
|
+
USER ||--o{ ORDER : places
|
|
93
|
+
ORDER ||--|{ LINE_ITEM : contains
|
|
94
|
+
PRODUCT }|--o{ LINE_ITEM : "ordered in"
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
## After generating
|
|
98
|
+
|
|
99
|
+
- Explain what the diagram shows
|
|
100
|
+
- Offer to refine or expand specific sections
|
|
101
|
+
- Suggest alternative diagram types if applicable
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
Fix all merge conflicts on the current Git branch non-interactively and make the repo buildable and tested.
|
|
2
|
+
|
|
3
|
+
Requirements and constraints:
|
|
4
|
+
|
|
5
|
+
- Operate from the repository root. If not in a Git repo, stop and report.
|
|
6
|
+
- Do not ask the user for input. Choose sensible defaults and explain decisions in a brief summary.
|
|
7
|
+
- Prefer minimal, correct changes that preserve both sides' intent when possible.
|
|
8
|
+
- Use non-interactive flags for any tools you invoke.
|
|
9
|
+
- Do not push or tag; only commit locally.
|
|
10
|
+
|
|
11
|
+
High-level plan:
|
|
12
|
+
|
|
13
|
+
1. Detect conflicts
|
|
14
|
+
- Run: git status --porcelain | cat
|
|
15
|
+
- Collect files with conflict markers (U statuses or files containing <<<<<<< / ======= / >>>>>>>).
|
|
16
|
+
2. Resolve conflicts per file
|
|
17
|
+
- Open each conflicting file and remove conflict markers.
|
|
18
|
+
- Merge both sides logically when feasible. If mutually exclusive, pick the variant that:
|
|
19
|
+
- Compiles and passes type checks, and
|
|
20
|
+
- Preserves existing public APIs and behavior.
|
|
21
|
+
- Language-aware strategy:
|
|
22
|
+
- package.json/pnpm-lock.yaml/yarn.lock: merge keys conservatively; run install to regenerate lockfiles.
|
|
23
|
+
- .lock files (package-lock.json, yarn.lock, pnpm-lock.yaml): prefer regenerating via the package manager rather than manual edits.
|
|
24
|
+
- Generated files and build artifacts: prefer keeping them out of version control if applicable; otherwise prefer current branch (ours).
|
|
25
|
+
- Config files: preserve union of safe settings; avoid deleting required fields.
|
|
26
|
+
- Text/markdown: include both unique content, deduplicate headings.
|
|
27
|
+
- Binary files: prefer current branch (ours) unless project docs indicate otherwise.
|
|
28
|
+
3. Validate
|
|
29
|
+
- If Node/TypeScript/JS present: install deps if manifests changed (use --frozen-lockfile false equivalents), then run lint/typecheck/build/tests if available.
|
|
30
|
+
- If other ecosystems detected (Python, Go, etc.), run their standard build/tests when available.
|
|
31
|
+
4. Finalize
|
|
32
|
+
- Stage all resolved files and any regenerated lockfiles.
|
|
33
|
+
- Create a single commit with message: "chore: resolve merge conflicts".
|
|
34
|
+
- Output a concise summary of files touched and notable resolution choices.
|
|
35
|
+
|
|
36
|
+
Operational guidance:
|
|
37
|
+
|
|
38
|
+
- Assume the user isn’t available; make best-effort decisions. If a resolution is ambiguous and blocks build/tests, prefer the variant that compiles and green-tests.
|
|
39
|
+
- If a file still contains conflict markers after your first pass, revisit and resolve them before proceeding.
|
|
40
|
+
- For large refactors causing conflicts, prefer keeping consistent imports, types, and module boundaries. Use exhaustive switch guards in TypeScript and explicit type annotations where needed.
|
|
41
|
+
- Keep edits minimal and readable; avoid reformatting unrelated code.
|
|
42
|
+
|
|
43
|
+
Deliverables:
|
|
44
|
+
|
|
45
|
+
- A clean working tree with all conflicts resolved.
|
|
46
|
+
- Successful build/tests where applicable.
|
|
47
|
+
- One local commit containing the resolutions.
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
Arguments:
|
|
2
|
+
|
|
3
|
+
- scope: what to analyze (default: your current changes). Examples: "diff to main", "PR #123", "src/components/", "whole codebase"
|
|
4
|
+
- fix: whether to apply fixes (default: true). Set to false to only propose changes.
|
|
5
|
+
|
|
6
|
+
Steps:
|
|
7
|
+
|
|
8
|
+
1. Read https://react.dev/learn/you-might-not-need-an-effect to understand the guidelines
|
|
9
|
+
2. Analyze the specified scope for useEffect anti-patterns
|
|
10
|
+
3. If fix=true, apply the fixes. If fix=false, propose the fixes without applying.
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# Note: Not using 'set -e' to allow graceful error handling
|
|
3
|
+
|
|
4
|
+
# Post-tool-use hook that tracks edited files and their repos
|
|
5
|
+
# This runs after Edit, MultiEdit, or Write tools complete successfully
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
# Read tool information from stdin
|
|
9
|
+
tool_info=$(cat)
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
# Extract relevant data
|
|
13
|
+
tool_name=$(echo "$tool_info" | jq -r '.tool_name // empty')
|
|
14
|
+
file_path=$(echo "$tool_info" | jq -r '.tool_input.file_path // empty')
|
|
15
|
+
session_id=$(echo "$tool_info" | jq -r '.session_id // empty')
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
# Skip if not an edit tool or no file path
|
|
19
|
+
if [[ ! "$tool_name" =~ ^(Edit|MultiEdit|Write)$ ]] || [[ -z "$file_path" ]]; then
|
|
20
|
+
exit 0 # Exit 0 for skip conditions
|
|
21
|
+
fi
|
|
22
|
+
|
|
23
|
+
# Skip markdown files
|
|
24
|
+
if [[ "$file_path" =~ \.(md|markdown)$ ]]; then
|
|
25
|
+
exit 0 # Exit 0 for skip conditions
|
|
26
|
+
fi
|
|
27
|
+
|
|
28
|
+
# Create cache directory in project
|
|
29
|
+
cache_dir="$CLAUDE_PROJECT_DIR/.claude/tsc-cache/${session_id:-default}"
|
|
30
|
+
mkdir -p "$cache_dir"
|
|
31
|
+
|
|
32
|
+
# Function to detect repo from file path
|
|
33
|
+
detect_repo() {
|
|
34
|
+
local file="$1"
|
|
35
|
+
local project_root="$CLAUDE_PROJECT_DIR"
|
|
36
|
+
|
|
37
|
+
# Remove project root from path
|
|
38
|
+
local relative_path="${file#$project_root/}"
|
|
39
|
+
|
|
40
|
+
# Extract first directory component
|
|
41
|
+
local repo=$(echo "$relative_path" | cut -d'/' -f1)
|
|
42
|
+
|
|
43
|
+
# Common project directory patterns
|
|
44
|
+
case "$repo" in
|
|
45
|
+
# Frontend variations
|
|
46
|
+
frontend|client|web|app|ui)
|
|
47
|
+
echo "$repo"
|
|
48
|
+
;;
|
|
49
|
+
# Backend variations
|
|
50
|
+
backend|server|api|src|services)
|
|
51
|
+
echo "$repo"
|
|
52
|
+
;;
|
|
53
|
+
# Database
|
|
54
|
+
database|prisma|migrations)
|
|
55
|
+
echo "$repo"
|
|
56
|
+
;;
|
|
57
|
+
# Package/monorepo structure
|
|
58
|
+
packages)
|
|
59
|
+
# For monorepos, get the package name
|
|
60
|
+
local package=$(echo "$relative_path" | cut -d'/' -f2)
|
|
61
|
+
if [[ -n "$package" ]]; then
|
|
62
|
+
echo "packages/$package"
|
|
63
|
+
else
|
|
64
|
+
echo "$repo"
|
|
65
|
+
fi
|
|
66
|
+
;;
|
|
67
|
+
# Apps directory
|
|
68
|
+
apps)
|
|
69
|
+
local app=$(echo "$relative_path" | cut -d'/' -f2)
|
|
70
|
+
if [[ -n "$app" ]]; then
|
|
71
|
+
echo "apps/$app"
|
|
72
|
+
else
|
|
73
|
+
echo "$repo"
|
|
74
|
+
fi
|
|
75
|
+
;;
|
|
76
|
+
# Tooling directory
|
|
77
|
+
tooling)
|
|
78
|
+
local tool=$(echo "$relative_path" | cut -d'/' -f2)
|
|
79
|
+
if [[ -n "$tool" ]]; then
|
|
80
|
+
echo "tooling/$tool"
|
|
81
|
+
else
|
|
82
|
+
echo "$repo"
|
|
83
|
+
fi
|
|
84
|
+
;;
|
|
85
|
+
# Examples directory
|
|
86
|
+
examples)
|
|
87
|
+
local example=$(echo "$relative_path" | cut -d'/' -f2)
|
|
88
|
+
if [[ -n "$example" ]]; then
|
|
89
|
+
echo "examples/$example"
|
|
90
|
+
else
|
|
91
|
+
echo "$repo"
|
|
92
|
+
fi
|
|
93
|
+
;;
|
|
94
|
+
*)
|
|
95
|
+
# Check if it's a source file in root
|
|
96
|
+
if [[ ! "$relative_path" =~ / ]]; then
|
|
97
|
+
echo "root"
|
|
98
|
+
else
|
|
99
|
+
echo "unknown"
|
|
100
|
+
fi
|
|
101
|
+
;;
|
|
102
|
+
esac
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
# Function to get build command for repo
|
|
106
|
+
get_build_command() {
|
|
107
|
+
local repo="$1"
|
|
108
|
+
local project_root="$CLAUDE_PROJECT_DIR"
|
|
109
|
+
local repo_path="$project_root/$repo"
|
|
110
|
+
|
|
111
|
+
# Check if package.json exists and has a build script
|
|
112
|
+
if [[ -f "$repo_path/package.json" ]]; then
|
|
113
|
+
if grep -q '"build"' "$repo_path/package.json" 2>/dev/null; then
|
|
114
|
+
echo "cd $repo_path && bun run build"
|
|
115
|
+
return
|
|
116
|
+
fi
|
|
117
|
+
fi
|
|
118
|
+
|
|
119
|
+
# Special case for database with Prisma
|
|
120
|
+
if [[ "$repo" == "database" ]] || [[ "$repo" =~ prisma ]]; then
|
|
121
|
+
if [[ -f "$repo_path/schema.prisma" ]] || [[ -f "$repo_path/prisma/schema.prisma" ]]; then
|
|
122
|
+
echo "cd $repo_path && pnpm exec prisma generate"
|
|
123
|
+
return
|
|
124
|
+
fi
|
|
125
|
+
fi
|
|
126
|
+
|
|
127
|
+
# No build command found
|
|
128
|
+
echo ""
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
# Function to get TSC command for repo
|
|
132
|
+
get_tsc_command() {
|
|
133
|
+
local repo="$1"
|
|
134
|
+
local project_root="$CLAUDE_PROJECT_DIR"
|
|
135
|
+
local repo_path="$project_root/$repo"
|
|
136
|
+
|
|
137
|
+
# Check if tsconfig.json exists
|
|
138
|
+
if [[ -f "$repo_path/tsconfig.json" ]]; then
|
|
139
|
+
# Check for Vite/React-specific tsconfig
|
|
140
|
+
if [[ -f "$repo_path/tsconfig.app.json" ]]; then
|
|
141
|
+
echo "cd $repo_path && pnpm exec tsc --project tsconfig.app.json --noEmit"
|
|
142
|
+
else
|
|
143
|
+
echo "cd $repo_path && pnpm exec tsc --noEmit"
|
|
144
|
+
fi
|
|
145
|
+
return
|
|
146
|
+
fi
|
|
147
|
+
|
|
148
|
+
# No TypeScript config found
|
|
149
|
+
echo ""
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
# Detect repo
|
|
153
|
+
repo=$(detect_repo "$file_path")
|
|
154
|
+
|
|
155
|
+
# Skip if unknown repo
|
|
156
|
+
if [[ "$repo" == "unknown" ]] || [[ -z "$repo" ]]; then
|
|
157
|
+
exit 0 # Exit 0 for skip conditions
|
|
158
|
+
fi
|
|
159
|
+
|
|
160
|
+
# Log edited file
|
|
161
|
+
echo "$(date +%s):$file_path:$repo" >> "$cache_dir/edited-files.log"
|
|
162
|
+
|
|
163
|
+
# Update affected repos list
|
|
164
|
+
if ! grep -q "^$repo$" "$cache_dir/affected-repos.txt" 2>/dev/null; then
|
|
165
|
+
echo "$repo" >> "$cache_dir/affected-repos.txt"
|
|
166
|
+
fi
|
|
167
|
+
|
|
168
|
+
# Store build commands
|
|
169
|
+
build_cmd=$(get_build_command "$repo")
|
|
170
|
+
tsc_cmd=$(get_tsc_command "$repo")
|
|
171
|
+
|
|
172
|
+
if [[ -n "$build_cmd" ]]; then
|
|
173
|
+
echo "$repo:build:$build_cmd" >> "$cache_dir/commands.txt.tmp"
|
|
174
|
+
fi
|
|
175
|
+
|
|
176
|
+
if [[ -n "$tsc_cmd" ]]; then
|
|
177
|
+
echo "$repo:tsc:$tsc_cmd" >> "$cache_dir/commands.txt.tmp"
|
|
178
|
+
fi
|
|
179
|
+
|
|
180
|
+
# Remove duplicates from commands
|
|
181
|
+
if [[ -f "$cache_dir/commands.txt.tmp" ]]; then
|
|
182
|
+
sort -u "$cache_dir/commands.txt.tmp" > "$cache_dir/commands.txt"
|
|
183
|
+
rm -f "$cache_dir/commands.txt.tmp"
|
|
184
|
+
fi
|
|
185
|
+
|
|
186
|
+
# Exit cleanly
|
|
187
|
+
exit 0
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { existsSync, readFileSync } from "fs";
|
|
3
|
+
import { join } from "path";
|
|
4
|
+
|
|
5
|
+
interface HookInput {
|
|
6
|
+
session_id: string;
|
|
7
|
+
transcript_path: string;
|
|
8
|
+
cwd: string;
|
|
9
|
+
permission_mode: string;
|
|
10
|
+
prompt: string;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
interface PromptTriggers {
|
|
14
|
+
keywords?: string[];
|
|
15
|
+
intentPatterns?: string[];
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
interface SkillRule {
|
|
19
|
+
type: "guardrail" | "domain";
|
|
20
|
+
enforcement: "block" | "suggest" | "warn";
|
|
21
|
+
priority: "critical" | "high" | "medium" | "low";
|
|
22
|
+
promptTriggers?: PromptTriggers;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
interface SkillRules {
|
|
26
|
+
version: string;
|
|
27
|
+
skills: Record<string, SkillRule>;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
interface MatchedSkill {
|
|
31
|
+
name: string;
|
|
32
|
+
matchType: "keyword" | "intent";
|
|
33
|
+
config: SkillRule;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
async function main() {
|
|
37
|
+
try {
|
|
38
|
+
// Read input from stdin
|
|
39
|
+
const input = readFileSync(0, "utf-8");
|
|
40
|
+
const data = JSON.parse(input) as HookInput;
|
|
41
|
+
const prompt = data.prompt.toLowerCase();
|
|
42
|
+
|
|
43
|
+
// Load skill rules
|
|
44
|
+
const projectDir = process.env.CLAUDE_PROJECT_DIR || "$HOME/project";
|
|
45
|
+
const rulesPath = join(projectDir, ".claude", "skills", "skill-rules.json");
|
|
46
|
+
|
|
47
|
+
if (!existsSync(rulesPath)) {
|
|
48
|
+
process.exit(0);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
const rules = JSON.parse(readFileSync(rulesPath, "utf-8")) as SkillRules;
|
|
52
|
+
|
|
53
|
+
const matchedSkills: MatchedSkill[] = [];
|
|
54
|
+
|
|
55
|
+
// Check each skill for matches
|
|
56
|
+
for (const [skillName, config] of Object.entries(rules.skills)) {
|
|
57
|
+
const triggers = config.promptTriggers;
|
|
58
|
+
if (!triggers) {
|
|
59
|
+
continue;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
// Keyword matching
|
|
63
|
+
if (triggers.keywords) {
|
|
64
|
+
const keywordMatch = triggers.keywords.some((kw) => prompt.includes(kw.toLowerCase()));
|
|
65
|
+
if (keywordMatch) {
|
|
66
|
+
matchedSkills.push({ name: skillName, matchType: "keyword", config });
|
|
67
|
+
continue;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
// Intent pattern matching
|
|
72
|
+
if (triggers.intentPatterns) {
|
|
73
|
+
const intentMatch = triggers.intentPatterns.some((pattern) => {
|
|
74
|
+
const regex = new RegExp(pattern, "i");
|
|
75
|
+
return regex.test(prompt);
|
|
76
|
+
});
|
|
77
|
+
if (intentMatch) {
|
|
78
|
+
matchedSkills.push({ name: skillName, matchType: "intent", config });
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
// Generate output if matches found
|
|
84
|
+
if (matchedSkills.length > 0) {
|
|
85
|
+
let output = "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n";
|
|
86
|
+
output += "🎯 SKILL ACTIVATION CHECK\n";
|
|
87
|
+
output += "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n\n";
|
|
88
|
+
|
|
89
|
+
// Group by priority
|
|
90
|
+
const critical = matchedSkills.filter((s) => s.config.priority === "critical");
|
|
91
|
+
const high = matchedSkills.filter((s) => s.config.priority === "high");
|
|
92
|
+
const medium = matchedSkills.filter((s) => s.config.priority === "medium");
|
|
93
|
+
const low = matchedSkills.filter((s) => s.config.priority === "low");
|
|
94
|
+
|
|
95
|
+
if (critical.length > 0) {
|
|
96
|
+
output += "⚠️ CRITICAL SKILLS (REQUIRED):\n";
|
|
97
|
+
critical.forEach((s) => (output += ` → ${s.name}\n`));
|
|
98
|
+
output += "\n";
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
if (high.length > 0) {
|
|
102
|
+
output += "📚 RECOMMENDED SKILLS:\n";
|
|
103
|
+
high.forEach((s) => (output += ` → ${s.name}\n`));
|
|
104
|
+
output += "\n";
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
if (medium.length > 0) {
|
|
108
|
+
output += "💡 SUGGESTED SKILLS:\n";
|
|
109
|
+
medium.forEach((s) => (output += ` → ${s.name}\n`));
|
|
110
|
+
output += "\n";
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
if (low.length > 0) {
|
|
114
|
+
output += "📌 OPTIONAL SKILLS:\n";
|
|
115
|
+
low.forEach((s) => (output += ` → ${s.name}\n`));
|
|
116
|
+
output += "\n";
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
output += "ACTION: Use Skill tool BEFORE responding\n";
|
|
120
|
+
output += "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n";
|
|
121
|
+
process.stdout.write(output);
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
process.exit(0);
|
|
125
|
+
} catch (err) {
|
|
126
|
+
console.error("Error in skill-activation-prompt hook:", err);
|
|
127
|
+
process.exit(1);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
main().catch((err) => {
|
|
132
|
+
console.error("Uncaught error:", err);
|
|
133
|
+
process.exit(1);
|
|
134
|
+
});
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
## Comment Policy
|
|
2
|
+
|
|
3
|
+
### Unacceptable Comments
|
|
4
|
+
|
|
5
|
+
- Comments that repeat what code does
|
|
6
|
+
- Commented-out code (delete it)
|
|
7
|
+
- Obvious comments ("increment counter")
|
|
8
|
+
- Comments instead of good naming
|
|
9
|
+
|
|
10
|
+
### Principle
|
|
11
|
+
|
|
12
|
+
Code should be self-documenting. If you need a comment to explain WHAT the code does, consider refactoring to make it clearer.
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
---
|
|
2
|
+
paths: "**/*.{ts,tsx}"
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
## TypeScript Rules
|
|
6
|
+
|
|
7
|
+
### Naming Conventions
|
|
8
|
+
|
|
9
|
+
- PascalCase for interfaces, types, classes, components
|
|
10
|
+
- camelCase for functions, variables, methods
|
|
11
|
+
- SCREAMING_SNAKE_CASE for constants
|
|
12
|
+
- kebab-case for file names
|
|
13
|
+
|
|
14
|
+
### Type Safety
|
|
15
|
+
|
|
16
|
+
- NO `any` without explicit justification comment
|
|
17
|
+
- NO `@ts-ignore` or `@ts-expect-error` without explanation
|
|
18
|
+
- Prefer `unknown` over `any` when type is truly unknown
|
|
19
|
+
- Use explicit return types on exported functions
|
|
20
|
+
|
|
21
|
+
### Imports
|
|
22
|
+
|
|
23
|
+
- Group imports: external → internal → relative
|
|
24
|
+
- Use named exports over default exports
|
|
25
|
+
- No circular dependencies
|
|
26
|
+
|
|
27
|
+
### Async/Await
|
|
28
|
+
|
|
29
|
+
- Always handle promise rejections
|
|
30
|
+
- Use try/catch for async operations
|
|
31
|
+
- Avoid floating promises (unhandled)
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
{
|
|
2
|
+
"permissions": {
|
|
3
|
+
"allow": [
|
|
4
|
+
"Bash(ls:*)",
|
|
5
|
+
"Bash(cat:*)",
|
|
6
|
+
"Bash(grep:*)",
|
|
7
|
+
"Bash(rg:*)",
|
|
8
|
+
"Bash(cp:*)",
|
|
9
|
+
"Bash(find:*)",
|
|
10
|
+
"Bash(pwd:*)",
|
|
11
|
+
"Bash(echo:*)",
|
|
12
|
+
"Bash(whoami:*)",
|
|
13
|
+
"Bash(source:*)",
|
|
14
|
+
"Bash(sed:*)",
|
|
15
|
+
"Bash(head:*)",
|
|
16
|
+
"Bash(tail:*)",
|
|
17
|
+
"Bash(mkdir:*)",
|
|
18
|
+
"Bash(mv:*)",
|
|
19
|
+
"Bash(touch:*)",
|
|
20
|
+
"Bash(cd:*)",
|
|
21
|
+
"Bash(tree:*)",
|
|
22
|
+
"Bash(type:*)",
|
|
23
|
+
"Bash(which:*)",
|
|
24
|
+
"Bash(git:*)",
|
|
25
|
+
"Bash(bun:*)",
|
|
26
|
+
"Bash(npm:*)"
|
|
27
|
+
],
|
|
28
|
+
"deny": [
|
|
29
|
+
"Bash(git push:*)",
|
|
30
|
+
"Bash(git pull:*)",
|
|
31
|
+
"Bash(git fetch:*)",
|
|
32
|
+
"Bash(git reset:*)",
|
|
33
|
+
"Bash(git clean:*)",
|
|
34
|
+
"Bash(git checkout .:*)",
|
|
35
|
+
"Bash(git rebase:*)",
|
|
36
|
+
"Bash(git stash:*)",
|
|
37
|
+
"Bash(npm publish:*)",
|
|
38
|
+
"Bash(bun publish:*)",
|
|
39
|
+
"Bash(git branch -D:*)"
|
|
40
|
+
]
|
|
41
|
+
},
|
|
42
|
+
"hooks": {
|
|
43
|
+
"UserPromptSubmit": [
|
|
44
|
+
{
|
|
45
|
+
"hooks": [
|
|
46
|
+
{
|
|
47
|
+
"type": "command",
|
|
48
|
+
"command": "$CLAUDE_PROJECT_DIR/.claude/hooks/skill-activation-prompt.sh"
|
|
49
|
+
}
|
|
50
|
+
]
|
|
51
|
+
}
|
|
52
|
+
],
|
|
53
|
+
"PostToolUse": [
|
|
54
|
+
{
|
|
55
|
+
"matcher": "Edit|MultiEdit|Write",
|
|
56
|
+
"hooks": [
|
|
57
|
+
{
|
|
58
|
+
"type": "command",
|
|
59
|
+
"command": "bun run format || true"
|
|
60
|
+
}
|
|
61
|
+
]
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
"matcher": "Edit|MultiEdit|Write",
|
|
65
|
+
"hooks": [
|
|
66
|
+
{
|
|
67
|
+
"type": "command",
|
|
68
|
+
"command": "$CLAUDE_PROJECT_DIR/.claude/hooks/post-tool-use-tracker.sh"
|
|
69
|
+
}
|
|
70
|
+
]
|
|
71
|
+
}
|
|
72
|
+
]
|
|
73
|
+
}
|
|
74
|
+
}
|