@hivehub/rulebook 1.2.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/LICENSE +191 -0
- package/README.md +539 -0
- package/dist/agents/claude-code.d.ts +69 -0
- package/dist/agents/claude-code.d.ts.map +1 -0
- package/dist/agents/claude-code.js +180 -0
- package/dist/agents/claude-code.js.map +1 -0
- package/dist/agents/cursor-agent.d.ts +184 -0
- package/dist/agents/cursor-agent.d.ts.map +1 -0
- package/dist/agents/cursor-agent.js +299 -0
- package/dist/agents/cursor-agent.js.map +1 -0
- package/dist/agents/gemini-cli.d.ts +69 -0
- package/dist/agents/gemini-cli.d.ts.map +1 -0
- package/dist/agents/gemini-cli.js +180 -0
- package/dist/agents/gemini-cli.js.map +1 -0
- package/dist/cli/commands.d.ts +57 -0
- package/dist/cli/commands.d.ts.map +1 -0
- package/dist/cli/commands.js +1370 -0
- package/dist/cli/commands.js.map +1 -0
- package/dist/cli/docs-prompts.d.ts +3 -0
- package/dist/cli/docs-prompts.d.ts.map +1 -0
- package/dist/cli/docs-prompts.js +45 -0
- package/dist/cli/docs-prompts.js.map +1 -0
- package/dist/cli/prompts.d.ts +6 -0
- package/dist/cli/prompts.d.ts.map +1 -0
- package/dist/cli/prompts.js +376 -0
- package/dist/cli/prompts.js.map +1 -0
- package/dist/core/agent-manager.d.ts +89 -0
- package/dist/core/agent-manager.d.ts.map +1 -0
- package/dist/core/agent-manager.js +546 -0
- package/dist/core/agent-manager.js.map +1 -0
- package/dist/core/auto-fixer.d.ts +14 -0
- package/dist/core/auto-fixer.d.ts.map +1 -0
- package/dist/core/auto-fixer.js +207 -0
- package/dist/core/auto-fixer.js.map +1 -0
- package/dist/core/changelog-generator.d.ts +44 -0
- package/dist/core/changelog-generator.d.ts.map +1 -0
- package/dist/core/changelog-generator.js +222 -0
- package/dist/core/changelog-generator.js.map +1 -0
- package/dist/core/cli-bridge.d.ts +113 -0
- package/dist/core/cli-bridge.d.ts.map +1 -0
- package/dist/core/cli-bridge.js +1094 -0
- package/dist/core/cli-bridge.js.map +1 -0
- package/dist/core/config-manager.d.ts +65 -0
- package/dist/core/config-manager.d.ts.map +1 -0
- package/dist/core/config-manager.js +266 -0
- package/dist/core/config-manager.js.map +1 -0
- package/dist/core/coverage-checker.d.ts +14 -0
- package/dist/core/coverage-checker.d.ts.map +1 -0
- package/dist/core/coverage-checker.js +176 -0
- package/dist/core/coverage-checker.js.map +1 -0
- package/dist/core/custom-templates.d.ts +27 -0
- package/dist/core/custom-templates.d.ts.map +1 -0
- package/dist/core/custom-templates.js +122 -0
- package/dist/core/custom-templates.js.map +1 -0
- package/dist/core/dependency-checker.d.ts +21 -0
- package/dist/core/dependency-checker.d.ts.map +1 -0
- package/dist/core/dependency-checker.js +247 -0
- package/dist/core/dependency-checker.js.map +1 -0
- package/dist/core/detector.d.ts +3 -0
- package/dist/core/detector.d.ts.map +1 -0
- package/dist/core/detector.js +1443 -0
- package/dist/core/detector.js.map +1 -0
- package/dist/core/docs-generator.d.ts +9 -0
- package/dist/core/docs-generator.d.ts.map +1 -0
- package/dist/core/docs-generator.js +531 -0
- package/dist/core/docs-generator.js.map +1 -0
- package/dist/core/generator.d.ts +16 -0
- package/dist/core/generator.d.ts.map +1 -0
- package/dist/core/generator.js +561 -0
- package/dist/core/generator.js.map +1 -0
- package/dist/core/gitignore-generator.d.ts +13 -0
- package/dist/core/gitignore-generator.d.ts.map +1 -0
- package/dist/core/gitignore-generator.js +307 -0
- package/dist/core/gitignore-generator.js.map +1 -0
- package/dist/core/health-scorer.d.ts +22 -0
- package/dist/core/health-scorer.d.ts.map +1 -0
- package/dist/core/health-scorer.js +395 -0
- package/dist/core/health-scorer.js.map +1 -0
- package/dist/core/logger.d.ts +116 -0
- package/dist/core/logger.d.ts.map +1 -0
- package/dist/core/logger.js +289 -0
- package/dist/core/logger.js.map +1 -0
- package/dist/core/merger.d.ts +6 -0
- package/dist/core/merger.d.ts.map +1 -0
- package/dist/core/merger.js +131 -0
- package/dist/core/merger.js.map +1 -0
- package/dist/core/migrator.d.ts +19 -0
- package/dist/core/migrator.d.ts.map +1 -0
- package/dist/core/migrator.js +102 -0
- package/dist/core/migrator.js.map +1 -0
- package/dist/core/minimal-scaffolder.d.ts +8 -0
- package/dist/core/minimal-scaffolder.d.ts.map +1 -0
- package/dist/core/minimal-scaffolder.js +51 -0
- package/dist/core/minimal-scaffolder.js.map +1 -0
- package/dist/core/modern-console-new.d.ts +81 -0
- package/dist/core/modern-console-new.d.ts.map +1 -0
- package/dist/core/modern-console-new.js +340 -0
- package/dist/core/modern-console-new.js.map +1 -0
- package/dist/core/modern-console.d.ts +99 -0
- package/dist/core/modern-console.d.ts.map +1 -0
- package/dist/core/modern-console.js +568 -0
- package/dist/core/modern-console.js.map +1 -0
- package/dist/core/openspec-manager.d.ts +133 -0
- package/dist/core/openspec-manager.d.ts.map +1 -0
- package/dist/core/openspec-manager.js +605 -0
- package/dist/core/openspec-manager.js.map +1 -0
- package/dist/core/openspec-migrator.d.ts +27 -0
- package/dist/core/openspec-migrator.d.ts.map +1 -0
- package/dist/core/openspec-migrator.js +255 -0
- package/dist/core/openspec-migrator.js.map +1 -0
- package/dist/core/task-manager.d.ts +65 -0
- package/dist/core/task-manager.d.ts.map +1 -0
- package/dist/core/task-manager.js +318 -0
- package/dist/core/task-manager.js.map +1 -0
- package/dist/core/test-task-manager.d.ts +49 -0
- package/dist/core/test-task-manager.d.ts.map +1 -0
- package/dist/core/test-task-manager.js +121 -0
- package/dist/core/test-task-manager.js.map +1 -0
- package/dist/core/validator.d.ts +21 -0
- package/dist/core/validator.d.ts.map +1 -0
- package/dist/core/validator.js +177 -0
- package/dist/core/validator.js.map +1 -0
- package/dist/core/version-bumper.d.ts +19 -0
- package/dist/core/version-bumper.d.ts.map +1 -0
- package/dist/core/version-bumper.js +180 -0
- package/dist/core/version-bumper.js.map +1 -0
- package/dist/core/watcher.d.ts +9 -0
- package/dist/core/watcher.d.ts.map +1 -0
- package/dist/core/watcher.js +22 -0
- package/dist/core/watcher.js.map +1 -0
- package/dist/core/workflow-generator.d.ts +10 -0
- package/dist/core/workflow-generator.d.ts.map +1 -0
- package/dist/core/workflow-generator.js +279 -0
- package/dist/core/workflow-generator.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +159 -0
- package/dist/index.js.map +1 -0
- package/dist/mcp/handlers/archive-task.d.ts +17 -0
- package/dist/mcp/handlers/archive-task.d.ts.map +1 -0
- package/dist/mcp/handlers/archive-task.js +36 -0
- package/dist/mcp/handlers/archive-task.js.map +1 -0
- package/dist/mcp/handlers/create-task.d.ts +17 -0
- package/dist/mcp/handlers/create-task.d.ts.map +1 -0
- package/dist/mcp/handlers/create-task.js +56 -0
- package/dist/mcp/handlers/create-task.js.map +1 -0
- package/dist/mcp/handlers/list-tasks.d.ts +22 -0
- package/dist/mcp/handlers/list-tasks.d.ts.map +1 -0
- package/dist/mcp/handlers/list-tasks.js +42 -0
- package/dist/mcp/handlers/list-tasks.js.map +1 -0
- package/dist/mcp/handlers/show-task.d.ts +25 -0
- package/dist/mcp/handlers/show-task.d.ts.map +1 -0
- package/dist/mcp/handlers/show-task.js +43 -0
- package/dist/mcp/handlers/show-task.js.map +1 -0
- package/dist/mcp/handlers/update-task.d.ts +17 -0
- package/dist/mcp/handlers/update-task.d.ts.map +1 -0
- package/dist/mcp/handlers/update-task.js +35 -0
- package/dist/mcp/handlers/update-task.js.map +1 -0
- package/dist/mcp/handlers/validate-task.d.ts +15 -0
- package/dist/mcp/handlers/validate-task.d.ts.map +1 -0
- package/dist/mcp/handlers/validate-task.js +27 -0
- package/dist/mcp/handlers/validate-task.js.map +1 -0
- package/dist/mcp/rulebook-config.d.ts +22 -0
- package/dist/mcp/rulebook-config.d.ts.map +1 -0
- package/dist/mcp/rulebook-config.js +65 -0
- package/dist/mcp/rulebook-config.js.map +1 -0
- package/dist/mcp/rulebook-server.d.ts +4 -0
- package/dist/mcp/rulebook-server.d.ts.map +1 -0
- package/dist/mcp/rulebook-server.js +246 -0
- package/dist/mcp/rulebook-server.js.map +1 -0
- package/dist/types.d.ts +190 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/file-system.d.ts +9 -0
- package/dist/utils/file-system.d.ts.map +1 -0
- package/dist/utils/file-system.js +51 -0
- package/dist/utils/file-system.js.map +1 -0
- package/dist/utils/git-hooks.d.ts +8 -0
- package/dist/utils/git-hooks.d.ts.map +1 -0
- package/dist/utils/git-hooks.js +440 -0
- package/dist/utils/git-hooks.js.map +1 -0
- package/dist/utils/rulesignore.d.ts +9 -0
- package/dist/utils/rulesignore.d.ts.map +1 -0
- package/dist/utils/rulesignore.js +42 -0
- package/dist/utils/rulesignore.js.map +1 -0
- package/package.json +106 -0
- package/templates/cli/AIDER.md +49 -0
- package/templates/cli/AMAZON_Q.md +25 -0
- package/templates/cli/AUGGIE.md +32 -0
- package/templates/cli/CLAUDE.md +32 -0
- package/templates/cli/CLAUDE_CODE.md +35 -0
- package/templates/cli/CLINE.md +32 -0
- package/templates/cli/CODEBUDDY.md +20 -0
- package/templates/cli/CODEIUM.md +20 -0
- package/templates/cli/CODEX.md +21 -0
- package/templates/cli/CONTINUE.md +34 -0
- package/templates/cli/CURSOR_CLI.md +28 -0
- package/templates/cli/FACTORY.md +18 -0
- package/templates/cli/GEMINI.md +35 -0
- package/templates/cli/KILOCODE.md +18 -0
- package/templates/cli/OPENCODE.md +18 -0
- package/templates/cli/_GENERIC_TEMPLATE.md +29 -0
- package/templates/commands/rulebook-task-apply.md +67 -0
- package/templates/commands/rulebook-task-archive.md +70 -0
- package/templates/commands/rulebook-task-create.md +93 -0
- package/templates/commands/rulebook-task-list.md +42 -0
- package/templates/commands/rulebook-task-show.md +52 -0
- package/templates/commands/rulebook-task-validate.md +53 -0
- package/templates/core/AGENT_AUTOMATION.md +184 -0
- package/templates/core/DAG.md +304 -0
- package/templates/core/DOCUMENTATION_RULES.md +37 -0
- package/templates/core/QUALITY_ENFORCEMENT.md +68 -0
- package/templates/core/RULEBOOK.md +1874 -0
- package/templates/frameworks/ANGULAR.md +36 -0
- package/templates/frameworks/DJANGO.md +83 -0
- package/templates/frameworks/ELECTRON.md +147 -0
- package/templates/frameworks/FLASK.md +38 -0
- package/templates/frameworks/FLUTTER.md +55 -0
- package/templates/frameworks/JQUERY.md +32 -0
- package/templates/frameworks/LARAVEL.md +38 -0
- package/templates/frameworks/NESTJS.md +43 -0
- package/templates/frameworks/NEXTJS.md +127 -0
- package/templates/frameworks/NUXT.md +40 -0
- package/templates/frameworks/RAILS.md +66 -0
- package/templates/frameworks/REACT.md +38 -0
- package/templates/frameworks/REACT_NATIVE.md +47 -0
- package/templates/frameworks/SPRING.md +39 -0
- package/templates/frameworks/SYMFONY.md +36 -0
- package/templates/frameworks/VUE.md +36 -0
- package/templates/frameworks/ZEND.md +35 -0
- package/templates/git/CI_CD_PATTERNS.md +661 -0
- package/templates/git/GITHUB_ACTIONS.md +728 -0
- package/templates/git/GITLAB_CI.md +730 -0
- package/templates/git/GIT_WORKFLOW.md +1157 -0
- package/templates/git/SECRETS_MANAGEMENT.md +585 -0
- package/templates/hooks/COMMIT_MSG.md +530 -0
- package/templates/hooks/POST_CHECKOUT.md +546 -0
- package/templates/hooks/PREPARE_COMMIT_MSG.md +619 -0
- package/templates/hooks/PRE_COMMIT.md +414 -0
- package/templates/hooks/PRE_PUSH.md +601 -0
- package/templates/hooks/csharp-pre-commit.sh +23 -0
- package/templates/hooks/csharp-pre-push.sh +23 -0
- package/templates/hooks/dart-pre-commit.sh +30 -0
- package/templates/hooks/dart-pre-push.sh +25 -0
- package/templates/hooks/elixir-pre-commit.sh +32 -0
- package/templates/hooks/elixir-pre-push.sh +31 -0
- package/templates/hooks/erlang-pre-commit.sh +30 -0
- package/templates/hooks/erlang-pre-push.sh +37 -0
- package/templates/hooks/go-pre-commit.sh +40 -0
- package/templates/hooks/go-pre-push.sh +31 -0
- package/templates/hooks/haskell-pre-commit.sh +41 -0
- package/templates/hooks/haskell-pre-push.sh +37 -0
- package/templates/hooks/java-pre-commit.sh +34 -0
- package/templates/hooks/java-pre-push.sh +24 -0
- package/templates/hooks/kotlin-pre-commit.sh +32 -0
- package/templates/hooks/kotlin-pre-push.sh +16 -0
- package/templates/hooks/php-pre-commit.sh +36 -0
- package/templates/hooks/php-pre-push.sh +26 -0
- package/templates/hooks/python-pre-commit.sh +51 -0
- package/templates/hooks/python-pre-push.sh +25 -0
- package/templates/hooks/ruby-pre-commit.sh +33 -0
- package/templates/hooks/ruby-pre-push.sh +32 -0
- package/templates/hooks/rust-pre-commit.sh +30 -0
- package/templates/hooks/rust-pre-push.sh +30 -0
- package/templates/hooks/scala-pre-commit.sh +32 -0
- package/templates/hooks/scala-pre-push.sh +24 -0
- package/templates/hooks/swift-pre-commit.sh +25 -0
- package/templates/hooks/swift-pre-push.sh +23 -0
- package/templates/hooks/typescript-pre-commit.sh +37 -0
- package/templates/hooks/typescript-pre-push.sh +36 -0
- package/templates/ides/COPILOT.md +37 -0
- package/templates/ides/CURSOR.md +43 -0
- package/templates/ides/JETBRAINS_AI.md +35 -0
- package/templates/ides/REPLIT.md +36 -0
- package/templates/ides/TABNINE.md +29 -0
- package/templates/ides/VSCODE.md +40 -0
- package/templates/ides/WINDSURF.md +36 -0
- package/templates/ides/ZED.md +32 -0
- package/templates/languages/ADA.md +58 -0
- package/templates/languages/C.md +333 -0
- package/templates/languages/CPP.md +743 -0
- package/templates/languages/CSHARP.md +417 -0
- package/templates/languages/DART.md +332 -0
- package/templates/languages/ELIXIR.md +454 -0
- package/templates/languages/ERLANG.md +361 -0
- package/templates/languages/GO.md +645 -0
- package/templates/languages/HASKELL.md +177 -0
- package/templates/languages/JAVA.md +607 -0
- package/templates/languages/JAVASCRIPT.md +631 -0
- package/templates/languages/JULIA.md +97 -0
- package/templates/languages/KOTLIN.md +511 -0
- package/templates/languages/LISP.md +100 -0
- package/templates/languages/LUA.md +74 -0
- package/templates/languages/OBJECTIVEC.md +90 -0
- package/templates/languages/PHP.md +416 -0
- package/templates/languages/PYTHON.md +682 -0
- package/templates/languages/R.md +350 -0
- package/templates/languages/RUBY.md +421 -0
- package/templates/languages/RUST.md +477 -0
- package/templates/languages/SAS.md +73 -0
- package/templates/languages/SCALA.md +348 -0
- package/templates/languages/SOLIDITY.md +580 -0
- package/templates/languages/SQL.md +137 -0
- package/templates/languages/SWIFT.md +466 -0
- package/templates/languages/TYPESCRIPT.md +591 -0
- package/templates/languages/ZIG.md +265 -0
- package/templates/modules/ATLASSIAN.md +255 -0
- package/templates/modules/CONTEXT7.md +54 -0
- package/templates/modules/FIGMA.md +267 -0
- package/templates/modules/GITHUB_MCP.md +64 -0
- package/templates/modules/GRAFANA.md +328 -0
- package/templates/modules/NOTION.md +247 -0
- package/templates/modules/PLAYWRIGHT.md +90 -0
- package/templates/modules/RULEBOOK_MCP.md +156 -0
- package/templates/modules/SERENA.md +337 -0
- package/templates/modules/SUPABASE.md +223 -0
- package/templates/modules/SYNAP.md +69 -0
- package/templates/modules/VECTORIZER.md +63 -0
- package/templates/services/AZURE_BLOB.md +184 -0
- package/templates/services/CASSANDRA.md +239 -0
- package/templates/services/DYNAMODB.md +308 -0
- package/templates/services/ELASTICSEARCH.md +347 -0
- package/templates/services/GCS.md +178 -0
- package/templates/services/INFLUXDB.md +265 -0
- package/templates/services/KAFKA.md +341 -0
- package/templates/services/MARIADB.md +183 -0
- package/templates/services/MEMCACHED.md +242 -0
- package/templates/services/MINIO.md +201 -0
- package/templates/services/MONGODB.md +268 -0
- package/templates/services/MYSQL.md +358 -0
- package/templates/services/NEO4J.md +247 -0
- package/templates/services/ORACLE.md +290 -0
- package/templates/services/POSTGRESQL.md +326 -0
- package/templates/services/RABBITMQ.md +286 -0
- package/templates/services/REDIS.md +292 -0
- package/templates/services/S3.md +298 -0
- package/templates/services/SQLITE.md +294 -0
- package/templates/services/SQLSERVER.md +294 -0
- package/templates/workflows/codespell.yml +31 -0
- package/templates/workflows/cpp-lint.yml +47 -0
- package/templates/workflows/cpp-publish.yml +119 -0
- package/templates/workflows/cpp-test.yml +77 -0
- package/templates/workflows/dotnet-lint.yml +29 -0
- package/templates/workflows/dotnet-publish.yml +40 -0
- package/templates/workflows/dotnet-test.yml +41 -0
- package/templates/workflows/elixir-lint.yml +45 -0
- package/templates/workflows/elixir-publish.yml +49 -0
- package/templates/workflows/elixir-test.yml +54 -0
- package/templates/workflows/erlang-lint.yml +47 -0
- package/templates/workflows/erlang-test.yml +62 -0
- package/templates/workflows/go-lint.yml +39 -0
- package/templates/workflows/go-publish.yml +95 -0
- package/templates/workflows/go-test.yml +59 -0
- package/templates/workflows/java-lint.yml +60 -0
- package/templates/workflows/java-publish.yml +120 -0
- package/templates/workflows/java-test.yml +85 -0
- package/templates/workflows/kotlin-lint.yml +34 -0
- package/templates/workflows/kotlin-publish.yml +56 -0
- package/templates/workflows/kotlin-test.yml +48 -0
- package/templates/workflows/php-lint.yml +39 -0
- package/templates/workflows/php-publish.yml +50 -0
- package/templates/workflows/php-test.yml +54 -0
- package/templates/workflows/python-lint.yml +47 -0
- package/templates/workflows/python-publish.yml +91 -0
- package/templates/workflows/python-test.yml +59 -0
- package/templates/workflows/rust-lint.yml +54 -0
- package/templates/workflows/rust-publish.yml +66 -0
- package/templates/workflows/rust-test.yml +75 -0
- package/templates/workflows/solidity-lint.yml +41 -0
- package/templates/workflows/solidity-test.yml +47 -0
- package/templates/workflows/swift-lint.yml +32 -0
- package/templates/workflows/swift-publish.yml +58 -0
- package/templates/workflows/swift-test.yml +44 -0
- package/templates/workflows/typescript-lint.yml +61 -0
- package/templates/workflows/typescript-publish.yml +60 -0
- package/templates/workflows/typescript-test.yml +73 -0
- package/templates/workflows/zig-lint.yml +27 -0
- package/templates/workflows/zig-test.yml +40 -0
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
<!-- ANGULAR:START -->
|
|
2
|
+
# Angular Framework Rules
|
|
3
|
+
|
|
4
|
+
**CRITICAL**: Angular projects must meet these standards before delivery.
|
|
5
|
+
|
|
6
|
+
## Quality Commands
|
|
7
|
+
- Lint: `npm run lint`
|
|
8
|
+
- Unit tests: `npm run test -- --watch=false --code-coverage`
|
|
9
|
+
- e2e tests: `npm run e2e`
|
|
10
|
+
- Build: `npm run build -- --configuration production`
|
|
11
|
+
|
|
12
|
+
## Project Structure
|
|
13
|
+
- Colocate features inside `src/app/<feature>/`
|
|
14
|
+
- Keep shared modules in `src/app/shared`
|
|
15
|
+
- Avoid `providedIn: 'root'` unless service truly global
|
|
16
|
+
- Leverage `OnPush` change detection for performance-critical components
|
|
17
|
+
|
|
18
|
+
## Implementation Guidelines
|
|
19
|
+
- Define interfaces for component inputs/outputs
|
|
20
|
+
- Use `HttpClient` interceptors for auth/logging
|
|
21
|
+
- Isolate environment variables in `src/environments/`
|
|
22
|
+
- Prefer Reactive Forms and RxJS operators over manual subscriptions
|
|
23
|
+
|
|
24
|
+
## Pre-Commit Sequence
|
|
25
|
+
```bash
|
|
26
|
+
npm run lint
|
|
27
|
+
npm run test -- --watch=false
|
|
28
|
+
npm run build -- --configuration production
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
## Documentation
|
|
32
|
+
- Update `/docs/angular-architecture.md` with new modules and routes
|
|
33
|
+
- Record shared component APIs in Storybook or `/docs/ui-components.md`
|
|
34
|
+
- Version major route changes in `/docs/roadmap.md`
|
|
35
|
+
|
|
36
|
+
<!-- ANGULAR:END -->
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
<!-- DJANGO:START -->
|
|
2
|
+
# Django Framework Rules
|
|
3
|
+
|
|
4
|
+
**Language**: Python
|
|
5
|
+
**Version**: Django 4.2+ (LTS) or 5.0+
|
|
6
|
+
|
|
7
|
+
## Setup & Configuration
|
|
8
|
+
|
|
9
|
+
```python
|
|
10
|
+
# settings.py
|
|
11
|
+
SECRET_KEY = env('SECRET_KEY') # Never hardcode
|
|
12
|
+
DEBUG = env.bool('DEBUG', default=False)
|
|
13
|
+
ALLOWED_HOSTS = env.list('ALLOWED_HOSTS')
|
|
14
|
+
|
|
15
|
+
INSTALLED_APPS = [
|
|
16
|
+
# Django apps
|
|
17
|
+
'django.contrib.admin',
|
|
18
|
+
'django.contrib.auth',
|
|
19
|
+
# Third-party
|
|
20
|
+
'rest_framework',
|
|
21
|
+
'corsheaders',
|
|
22
|
+
# Local apps
|
|
23
|
+
'apps.users',
|
|
24
|
+
]
|
|
25
|
+
|
|
26
|
+
DATABASES = {
|
|
27
|
+
'default': env.db('DATABASE_URL') # Use django-environ
|
|
28
|
+
}
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
## Quality Gates
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
# Code quality
|
|
35
|
+
black . # Format
|
|
36
|
+
ruff check . # Lint
|
|
37
|
+
mypy . # Type check
|
|
38
|
+
|
|
39
|
+
# Tests
|
|
40
|
+
python manage.py test # Run tests
|
|
41
|
+
pytest --cov=apps --cov-report=html # With coverage
|
|
42
|
+
|
|
43
|
+
# Security
|
|
44
|
+
python manage.py check --deploy # Production checks
|
|
45
|
+
bandit -r apps/ # Security scan
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
## Best Practices
|
|
49
|
+
|
|
50
|
+
✅ **DO:**
|
|
51
|
+
- Use Class-Based Views (CBVs) or Django REST Framework ViewSets
|
|
52
|
+
- Implement custom User model from start
|
|
53
|
+
- Use Django ORM properly (select_related, prefetch_related)
|
|
54
|
+
- Enable CSRF protection
|
|
55
|
+
- Use environment variables for secrets
|
|
56
|
+
- Write tests for views, models, and forms
|
|
57
|
+
|
|
58
|
+
❌ **DON'T:**
|
|
59
|
+
- Use `DEBUG=True` in production
|
|
60
|
+
- Store secrets in settings.py
|
|
61
|
+
- Use raw SQL without parameterization
|
|
62
|
+
- Skip migrations
|
|
63
|
+
- Ignore security middleware
|
|
64
|
+
|
|
65
|
+
## Project Structure
|
|
66
|
+
|
|
67
|
+
```
|
|
68
|
+
project/
|
|
69
|
+
├── manage.py
|
|
70
|
+
├── requirements.txt
|
|
71
|
+
├── apps/
|
|
72
|
+
│ ├── users/
|
|
73
|
+
│ ├── api/
|
|
74
|
+
│ └── core/
|
|
75
|
+
├── config/
|
|
76
|
+
│ ├── settings.py
|
|
77
|
+
│ ├── urls.py
|
|
78
|
+
│ └── wsgi.py
|
|
79
|
+
└── tests/
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
<!-- DJANGO:END -->
|
|
83
|
+
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
<!-- ELECTRON:START -->
|
|
2
|
+
# Electron Framework Rules
|
|
3
|
+
|
|
4
|
+
**Language**: TypeScript, JavaScript
|
|
5
|
+
**Version**: Electron 28+
|
|
6
|
+
|
|
7
|
+
## Setup & Configuration
|
|
8
|
+
|
|
9
|
+
```typescript
|
|
10
|
+
// main.ts (Main Process)
|
|
11
|
+
import { app, BrowserWindow } from 'electron'
|
|
12
|
+
import path from 'path'
|
|
13
|
+
|
|
14
|
+
function createWindow() {
|
|
15
|
+
const win = new BrowserWindow({
|
|
16
|
+
width: 1200,
|
|
17
|
+
height: 800,
|
|
18
|
+
webPreferences: {
|
|
19
|
+
preload: path.join(__dirname, 'preload.js'),
|
|
20
|
+
contextIsolation: true,
|
|
21
|
+
nodeIntegration: false,
|
|
22
|
+
},
|
|
23
|
+
})
|
|
24
|
+
|
|
25
|
+
win.loadFile('index.html')
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
app.whenReady().then(createWindow)
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
## Quality Gates
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
# Type check
|
|
35
|
+
npm run type-check
|
|
36
|
+
|
|
37
|
+
# Lint
|
|
38
|
+
npm run lint
|
|
39
|
+
|
|
40
|
+
# Tests
|
|
41
|
+
npm test
|
|
42
|
+
|
|
43
|
+
# Build
|
|
44
|
+
npm run build # Compile TypeScript
|
|
45
|
+
npm run package # Package app
|
|
46
|
+
npm run make # Create distributables
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
## Best Practices
|
|
50
|
+
|
|
51
|
+
✅ **DO:**
|
|
52
|
+
- Use contextIsolation: true
|
|
53
|
+
- Disable nodeIntegration
|
|
54
|
+
- Use preload scripts for IPC
|
|
55
|
+
- Implement auto-updates (electron-updater)
|
|
56
|
+
- Sign and notarize apps (production)
|
|
57
|
+
- Use Content Security Policy
|
|
58
|
+
- Implement proper error handling
|
|
59
|
+
- Separate main and renderer processes
|
|
60
|
+
|
|
61
|
+
❌ **DON'T:**
|
|
62
|
+
- Enable nodeIntegration in renderer
|
|
63
|
+
- Skip contextIsolation
|
|
64
|
+
- Use remote module (deprecated)
|
|
65
|
+
- Ignore security warnings
|
|
66
|
+
- Skip code signing
|
|
67
|
+
- Load remote content without CSP
|
|
68
|
+
- Use synchronous IPC
|
|
69
|
+
- Hardcode credentials
|
|
70
|
+
|
|
71
|
+
## Project Structure
|
|
72
|
+
|
|
73
|
+
```
|
|
74
|
+
src/
|
|
75
|
+
├── main/
|
|
76
|
+
│ ├── main.ts # Main process
|
|
77
|
+
│ ├── preload.ts # Preload script
|
|
78
|
+
│ └── ipc/ # IPC handlers
|
|
79
|
+
├── renderer/
|
|
80
|
+
│ ├── index.html
|
|
81
|
+
│ ├── renderer.ts
|
|
82
|
+
│ └── components/
|
|
83
|
+
└── shared/
|
|
84
|
+
└── types.ts
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
## IPC Communication
|
|
88
|
+
|
|
89
|
+
```typescript
|
|
90
|
+
// preload.ts
|
|
91
|
+
import { contextBridge, ipcRenderer } from 'electron'
|
|
92
|
+
|
|
93
|
+
contextBridge.exposeInMainWorld('electronAPI', {
|
|
94
|
+
sendMessage: (message: string) => ipcRenderer.send('message', message),
|
|
95
|
+
onReply: (callback: (reply: string) => void) =>
|
|
96
|
+
ipcRenderer.on('reply', (_event, reply) => callback(reply)),
|
|
97
|
+
})
|
|
98
|
+
|
|
99
|
+
// main.ts
|
|
100
|
+
import { ipcMain } from 'electron'
|
|
101
|
+
|
|
102
|
+
ipcMain.on('message', (event, message) => {
|
|
103
|
+
console.log(message)
|
|
104
|
+
event.reply('reply', 'Message received')
|
|
105
|
+
})
|
|
106
|
+
|
|
107
|
+
// renderer.ts
|
|
108
|
+
declare global {
|
|
109
|
+
interface Window {
|
|
110
|
+
electronAPI: {
|
|
111
|
+
sendMessage: (message: string) => void
|
|
112
|
+
onReply: (callback: (reply: string) => void) => void
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
window.electronAPI.sendMessage('Hello from renderer')
|
|
118
|
+
window.electronAPI.onReply((reply) => console.log(reply))
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
## Security Checklist
|
|
122
|
+
|
|
123
|
+
```typescript
|
|
124
|
+
// ✅ Good security configuration
|
|
125
|
+
const win = new BrowserWindow({
|
|
126
|
+
webPreferences: {
|
|
127
|
+
contextIsolation: true, // ✅ MUST enable
|
|
128
|
+
nodeIntegration: false, // ✅ MUST disable
|
|
129
|
+
sandbox: true, // ✅ Enable sandbox
|
|
130
|
+
webSecurity: true, // ✅ Enable web security
|
|
131
|
+
allowRunningInsecureContent: false, // ✅ Block insecure content
|
|
132
|
+
},
|
|
133
|
+
})
|
|
134
|
+
|
|
135
|
+
// Content Security Policy
|
|
136
|
+
session.defaultSession.webRequest.onHeadersReceived((details, callback) => {
|
|
137
|
+
callback({
|
|
138
|
+
responseHeaders: {
|
|
139
|
+
...details.responseHeaders,
|
|
140
|
+
'Content-Security-Policy': ["default-src 'self'"]
|
|
141
|
+
}
|
|
142
|
+
})
|
|
143
|
+
})
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
<!-- ELECTRON:END -->
|
|
147
|
+
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
<!-- FLASK:START -->
|
|
2
|
+
# Flask Framework Rules
|
|
3
|
+
|
|
4
|
+
**Language**: Python
|
|
5
|
+
**Version**: Flask 3.0+
|
|
6
|
+
|
|
7
|
+
## Setup
|
|
8
|
+
|
|
9
|
+
```python
|
|
10
|
+
from flask import Flask
|
|
11
|
+
app = Flask(__name__)
|
|
12
|
+
app.config.from_object('config.ProductionConfig')
|
|
13
|
+
|
|
14
|
+
# Use Flask-SQLAlchemy for ORM
|
|
15
|
+
# Use Flask-Migrate for migrations
|
|
16
|
+
# Use Flask-Login for auth
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## Quality Gates
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
black .
|
|
23
|
+
ruff check .
|
|
24
|
+
pytest --cov=app
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## Best Practices
|
|
28
|
+
|
|
29
|
+
✅ Use application factory pattern
|
|
30
|
+
✅ Enable CORS properly
|
|
31
|
+
✅ Use blueprints for organization
|
|
32
|
+
✅ Implement error handlers
|
|
33
|
+
|
|
34
|
+
❌ Don't use `debug=True` in production
|
|
35
|
+
❌ Don't store secrets in code
|
|
36
|
+
|
|
37
|
+
<!-- FLASK:END -->
|
|
38
|
+
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
<!-- FLUTTER:START -->
|
|
2
|
+
# Flutter Framework Rules
|
|
3
|
+
|
|
4
|
+
**Language**: Dart
|
|
5
|
+
**Version**: Flutter 3.10+
|
|
6
|
+
|
|
7
|
+
## Setup
|
|
8
|
+
|
|
9
|
+
```yaml
|
|
10
|
+
# pubspec.yaml
|
|
11
|
+
dependencies:
|
|
12
|
+
flutter:
|
|
13
|
+
sdk: flutter
|
|
14
|
+
cupertino_icons: ^1.0.2
|
|
15
|
+
|
|
16
|
+
dev_dependencies:
|
|
17
|
+
flutter_test:
|
|
18
|
+
sdk: flutter
|
|
19
|
+
flutter_lints: ^2.0.0
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## Quality Gates
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
dart format --set-exit-if-changed .
|
|
26
|
+
dart analyze --fatal-infos
|
|
27
|
+
flutter test
|
|
28
|
+
flutter build apk --release # Test build
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
## Best Practices
|
|
32
|
+
|
|
33
|
+
✅ Use StatelessWidget when possible
|
|
34
|
+
✅ Implement proper state management (Provider, Riverpod, Bloc)
|
|
35
|
+
✅ Use const constructors
|
|
36
|
+
✅ Optimize widget rebuilds
|
|
37
|
+
✅ Test on multiple devices
|
|
38
|
+
|
|
39
|
+
❌ Don't use `print()` in production
|
|
40
|
+
❌ Don't skip null safety
|
|
41
|
+
❌ Don't ignore platform differences
|
|
42
|
+
|
|
43
|
+
## Project Structure
|
|
44
|
+
|
|
45
|
+
```
|
|
46
|
+
lib/
|
|
47
|
+
├── main.dart
|
|
48
|
+
├── models/
|
|
49
|
+
├── screens/
|
|
50
|
+
├── widgets/
|
|
51
|
+
└── services/
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
<!-- FLUTTER:END -->
|
|
55
|
+
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
<!-- JQUERY:START -->
|
|
2
|
+
# jQuery Framework Rules
|
|
3
|
+
|
|
4
|
+
**Language**: JavaScript
|
|
5
|
+
**Version**: jQuery 3.x+
|
|
6
|
+
|
|
7
|
+
## Setup
|
|
8
|
+
|
|
9
|
+
```html
|
|
10
|
+
<script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
## Best Practices
|
|
14
|
+
|
|
15
|
+
✅ Use modern JS alongside jQuery
|
|
16
|
+
✅ Minimize DOM manipulation
|
|
17
|
+
✅ Cache jQuery selectors
|
|
18
|
+
✅ Use event delegation
|
|
19
|
+
|
|
20
|
+
❌ Don't use jQuery for everything
|
|
21
|
+
❌ Don't pollute global scope
|
|
22
|
+
❌ Don't skip CSP headers
|
|
23
|
+
|
|
24
|
+
## Quality Gates
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
eslint src/**/*.js
|
|
28
|
+
jest
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
<!-- JQUERY:END -->
|
|
32
|
+
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
<!-- LARAVEL:START -->
|
|
2
|
+
# Laravel Framework Rules
|
|
3
|
+
|
|
4
|
+
**CRITICAL**: Laravel services must respect these conventions and quality checks.
|
|
5
|
+
|
|
6
|
+
## Quality Commands
|
|
7
|
+
- Static analysis: `./vendor/bin/pint --test`
|
|
8
|
+
- Lint style: `./vendor/bin/phpcs --standard=PSR12 app/`
|
|
9
|
+
- Unit tests: `php artisan test`
|
|
10
|
+
- Feature tests: `php artisan test --testsuite=Feature`
|
|
11
|
+
- Coverage: ensure `php artisan test --coverage` ≥ 80%
|
|
12
|
+
|
|
13
|
+
## Project Structure
|
|
14
|
+
- Keep HTTP controllers in `app/Http/Controllers`
|
|
15
|
+
- Use form requests for validation in `app/Http/Requests`
|
|
16
|
+
- Organize business logic in `app/Services`
|
|
17
|
+
- Leverage repositories for data persistence where appropriate
|
|
18
|
+
- Store queued jobs in `app/Jobs`
|
|
19
|
+
|
|
20
|
+
## Implementation Guidelines
|
|
21
|
+
- Use migrations for every schema change (`php artisan make:migration`)
|
|
22
|
+
- Keep Eloquent models lean; move heavy logic into services
|
|
23
|
+
- Cache configuration after deployment (`php artisan config:cache`)
|
|
24
|
+
- Register scheduled tasks in `app/Console/Kernel.php`
|
|
25
|
+
- Ensure `app/Providers` registers new bindings/events
|
|
26
|
+
|
|
27
|
+
## Composer Hygiene
|
|
28
|
+
```bash
|
|
29
|
+
composer install --no-dev --prefer-dist
|
|
30
|
+
composer dump-autoload
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## Additional Checks
|
|
34
|
+
- Sync `.env.example` whenever new variables are introduced
|
|
35
|
+
- Document API changes in `/docs/laravel-api.md`
|
|
36
|
+
- Generate API resources via `php artisan make:resource`
|
|
37
|
+
|
|
38
|
+
<!-- LARAVEL:END -->
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
<!-- NESTJS:START -->
|
|
2
|
+
# NestJS Framework Rules
|
|
3
|
+
|
|
4
|
+
**CRITICAL**: Align all NestJS services, modules, and controllers with these conventions.
|
|
5
|
+
|
|
6
|
+
## Project Structure
|
|
7
|
+
- Maintain feature-first modules under `src/<feature>/`
|
|
8
|
+
- Keep global providers in `src/common/`
|
|
9
|
+
- Register new modules in `AppModule` and ensure dependency injection consistency
|
|
10
|
+
- Prefer `@nestjs/config` for environment configuration
|
|
11
|
+
|
|
12
|
+
## Quality Gates
|
|
13
|
+
- Lint: `npm run lint`
|
|
14
|
+
- Unit tests: `npm run test`
|
|
15
|
+
- e2e tests: `npm run test:e2e`
|
|
16
|
+
- Build validation: `npm run build`
|
|
17
|
+
- Coverage threshold: **80%+** for service and controller layers
|
|
18
|
+
|
|
19
|
+
## Implementation Guidelines
|
|
20
|
+
- Use DTOs with `class-validator` and `class-transformer`
|
|
21
|
+
- Encapsulate database access in providers (avoid direct repository use in controllers)
|
|
22
|
+
- Document routes with `@nestjs/swagger` when OpenAPI is enabled
|
|
23
|
+
- Keep asynchronous logic wrapped with `try/catch` and map errors to HTTP exceptions
|
|
24
|
+
|
|
25
|
+
## Scripts to Run Before Commit
|
|
26
|
+
```bash
|
|
27
|
+
npm run lint
|
|
28
|
+
npm run test
|
|
29
|
+
npm run test:e2e
|
|
30
|
+
npm run build
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## Additional Checks
|
|
34
|
+
- Ensure Circular Dependency detection is clean (`npm run lint -- --max-warnings=0`)
|
|
35
|
+
- Synchronize `.env.example` with actual required variables
|
|
36
|
+
- Maintain aligned versions for Nest core packages (`@nestjs/*`)
|
|
37
|
+
|
|
38
|
+
## Documentation
|
|
39
|
+
- Update `/docs/architecture.md` with new modules and providers
|
|
40
|
+
- Keep OpenAPI spec regenerated via `npm run swagger:generate`
|
|
41
|
+
- Log breaking changes in `CHANGELOG.md`
|
|
42
|
+
|
|
43
|
+
<!-- NESTJS:END -->
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
<!-- NEXTJS:START -->
|
|
2
|
+
# Next.js Framework Rules
|
|
3
|
+
|
|
4
|
+
**Language**: TypeScript, JavaScript
|
|
5
|
+
**Version**: Next.js 14+ (App Router)
|
|
6
|
+
|
|
7
|
+
## Setup & Configuration
|
|
8
|
+
|
|
9
|
+
```typescript
|
|
10
|
+
// next.config.ts
|
|
11
|
+
import type { NextConfig } from 'next'
|
|
12
|
+
|
|
13
|
+
const nextConfig: NextConfig = {
|
|
14
|
+
reactStrictMode: true,
|
|
15
|
+
images: {
|
|
16
|
+
domains: ['your-domain.com'],
|
|
17
|
+
},
|
|
18
|
+
env: {
|
|
19
|
+
CUSTOM_KEY: process.env.CUSTOM_KEY,
|
|
20
|
+
},
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export default nextConfig
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
## Quality Gates
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
# Type check
|
|
30
|
+
npm run type-check # or: tsc --noEmit
|
|
31
|
+
|
|
32
|
+
# Lint
|
|
33
|
+
npm run lint # Next.js ESLint
|
|
34
|
+
|
|
35
|
+
# Format
|
|
36
|
+
npx prettier --check "**/*.{ts,tsx}"
|
|
37
|
+
|
|
38
|
+
# Tests
|
|
39
|
+
npm test # Vitest or Jest
|
|
40
|
+
|
|
41
|
+
# Build
|
|
42
|
+
npm run build # Must succeed
|
|
43
|
+
|
|
44
|
+
# Check bundle size
|
|
45
|
+
npm run build && npx @next/bundle-analyzer
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
## Best Practices
|
|
49
|
+
|
|
50
|
+
✅ **DO:**
|
|
51
|
+
- Use App Router (app/) for new projects
|
|
52
|
+
- Implement Server Components by default
|
|
53
|
+
- Use Client Components ('use client') only when needed
|
|
54
|
+
- Optimize images with next/image
|
|
55
|
+
- Use dynamic imports for code splitting
|
|
56
|
+
- Implement proper metadata/SEO
|
|
57
|
+
- Use Server Actions for mutations
|
|
58
|
+
- Enable React Strict Mode
|
|
59
|
+
|
|
60
|
+
❌ **DON'T:**
|
|
61
|
+
- Use getServerSideProps/getStaticProps in App Router
|
|
62
|
+
- Fetch on client when server fetch is better
|
|
63
|
+
- Skip image optimization
|
|
64
|
+
- Ignore bundle size
|
|
65
|
+
- Use 'use client' everywhere
|
|
66
|
+
- Hardcode API URLs
|
|
67
|
+
- Skip error boundaries
|
|
68
|
+
|
|
69
|
+
## Project Structure (App Router)
|
|
70
|
+
|
|
71
|
+
```
|
|
72
|
+
app/
|
|
73
|
+
├── layout.tsx # Root layout
|
|
74
|
+
├── page.tsx # Home page
|
|
75
|
+
├── (routes)/
|
|
76
|
+
│ ├── dashboard/
|
|
77
|
+
│ │ ├── layout.tsx
|
|
78
|
+
│ │ └── page.tsx
|
|
79
|
+
│ └── api/
|
|
80
|
+
│ └── users/
|
|
81
|
+
│ └── route.ts
|
|
82
|
+
├── components/
|
|
83
|
+
├── lib/
|
|
84
|
+
└── types/
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
## Server vs Client Components
|
|
88
|
+
|
|
89
|
+
```typescript
|
|
90
|
+
// Server Component (default)
|
|
91
|
+
async function ServerComponent() {
|
|
92
|
+
const data = await fetch('https://api.example.com/data')
|
|
93
|
+
return <div>{data}</div>
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
// Client Component
|
|
97
|
+
'use client'
|
|
98
|
+
import { useState } from 'react'
|
|
99
|
+
|
|
100
|
+
function ClientComponent() {
|
|
101
|
+
const [count, setCount] = useState(0)
|
|
102
|
+
return <button onClick={() => setCount(count + 1)}>{count}</button>
|
|
103
|
+
}
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
## Route Handlers (API Routes)
|
|
107
|
+
|
|
108
|
+
```typescript
|
|
109
|
+
// app/api/users/route.ts
|
|
110
|
+
import { NextRequest, NextResponse } from 'next/server'
|
|
111
|
+
|
|
112
|
+
export async function GET(request: NextRequest) {
|
|
113
|
+
const searchParams = request.nextUrl.searchParams
|
|
114
|
+
const id = searchParams.get('id')
|
|
115
|
+
|
|
116
|
+
return NextResponse.json({ id })
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
export async function POST(request: NextRequest) {
|
|
120
|
+
const body = await request.json()
|
|
121
|
+
// Handle POST
|
|
122
|
+
return NextResponse.json({ success: true })
|
|
123
|
+
}
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
<!-- NEXTJS:END -->
|
|
127
|
+
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
<!-- NUXT:START -->
|
|
2
|
+
# Nuxt Framework Rules
|
|
3
|
+
|
|
4
|
+
**CRITICAL**: Nuxt 3 applications must keep these standards to ensure SSR quality.
|
|
5
|
+
|
|
6
|
+
## Quality Commands
|
|
7
|
+
- Lint: `npm run lint`
|
|
8
|
+
- Type check: `npm run type-check`
|
|
9
|
+
- Unit tests: `npm run test`
|
|
10
|
+
- Build for production: `npm run build`
|
|
11
|
+
- Generate static output (if applicable): `npm run generate`
|
|
12
|
+
|
|
13
|
+
## Project Structure
|
|
14
|
+
- Define routes with file-based routing under `pages/`
|
|
15
|
+
- Keep server API handlers within `server/api/`
|
|
16
|
+
- Organize composables in `composables/`
|
|
17
|
+
- Place reusable UI components in `components/`
|
|
18
|
+
- Store state via Pinia modules in `stores/`
|
|
19
|
+
|
|
20
|
+
## Implementation Guidelines
|
|
21
|
+
- Use runtime config via `useRuntimeConfig()` for secrets
|
|
22
|
+
- SSR-safe operations only inside `onServerPrefetch`/server routes
|
|
23
|
+
- Prefer `definePageMeta` to control page-level features
|
|
24
|
+
- Maintain i18n messages in `/locales`
|
|
25
|
+
- Cache heavy computations with Nitro storage if needed
|
|
26
|
+
|
|
27
|
+
## Pre-Commit Commands
|
|
28
|
+
```bash
|
|
29
|
+
npm run lint
|
|
30
|
+
npm run type-check
|
|
31
|
+
npm run test
|
|
32
|
+
npm run build
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
## Documentation
|
|
36
|
+
- Keep `/docs/nuxt-architecture.md` current with route layout and middleware
|
|
37
|
+
- Document server API contracts in `/docs/api.md`
|
|
38
|
+
- Capture deployment steps (SSR vs static) in `/docs/deployment.md`
|
|
39
|
+
|
|
40
|
+
<!-- NUXT:END -->
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
<!-- RAILS:START -->
|
|
2
|
+
# Ruby on Rails Framework Rules
|
|
3
|
+
|
|
4
|
+
**Language**: Ruby
|
|
5
|
+
**Version**: Rails 7.0+
|
|
6
|
+
|
|
7
|
+
## Setup & Configuration
|
|
8
|
+
|
|
9
|
+
```ruby
|
|
10
|
+
# config/database.yml
|
|
11
|
+
production:
|
|
12
|
+
url: <%= ENV['DATABASE_URL'] %>
|
|
13
|
+
|
|
14
|
+
# config/environments/production.rb
|
|
15
|
+
config.force_ssl = true
|
|
16
|
+
config.log_level = :info
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## Quality Gates
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
# Code quality
|
|
23
|
+
bundle exec rubocop # Lint
|
|
24
|
+
bundle exec brakeman # Security scan
|
|
25
|
+
|
|
26
|
+
# Tests
|
|
27
|
+
bundle exec rspec # Run tests
|
|
28
|
+
bundle exec rspec --format documentation # Verbose
|
|
29
|
+
|
|
30
|
+
# Type check (optional)
|
|
31
|
+
bundle exec steep check # Static typing
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## Best Practices
|
|
35
|
+
|
|
36
|
+
✅ **DO:**
|
|
37
|
+
- Use strong parameters
|
|
38
|
+
- Implement authentication (Devise/custom)
|
|
39
|
+
- Use ActiveRecord callbacks sparingly
|
|
40
|
+
- Write RSpec/Minitest tests
|
|
41
|
+
- Use database migrations
|
|
42
|
+
- Enable CSRF protection
|
|
43
|
+
|
|
44
|
+
❌ **DON'T:**
|
|
45
|
+
- Skip validations in models
|
|
46
|
+
- Use `params` without permit
|
|
47
|
+
- Store secrets in code
|
|
48
|
+
- Skip database indexes
|
|
49
|
+
- Ignore N+1 queries
|
|
50
|
+
|
|
51
|
+
## Project Structure
|
|
52
|
+
|
|
53
|
+
```
|
|
54
|
+
app/
|
|
55
|
+
├── controllers/
|
|
56
|
+
├── models/
|
|
57
|
+
├── views/
|
|
58
|
+
├── jobs/
|
|
59
|
+
└── mailers/
|
|
60
|
+
config/
|
|
61
|
+
db/
|
|
62
|
+
spec/
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
<!-- RAILS:END -->
|
|
66
|
+
|