@hivehub/rulebook 5.4.1 → 5.5.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/.claude/commands/analysis.md +35 -35
- package/.claude/commands/continue.md +33 -33
- package/.claude/commands/ralph-config.md +112 -112
- package/.claude/commands/ralph-history.md +110 -110
- package/.claude/commands/ralph-init.md +72 -72
- package/.claude/commands/ralph-pause-resume.md +105 -105
- package/.claude/commands/ralph-run.md +101 -101
- package/.claude/commands/ralph-status.md +76 -76
- package/.claude/commands/rulebook-decision-create.md +55 -55
- package/.claude/commands/rulebook-decision-list.md +15 -15
- package/.claude/commands/rulebook-knowledge-add.md +41 -41
- package/.claude/commands/rulebook-knowledge-list.md +15 -15
- package/.claude/commands/rulebook-learn-capture.md +48 -48
- package/.claude/commands/rulebook-learn-list.md +13 -13
- package/.claude/commands/rulebook-memory-save.md +48 -48
- package/.claude/commands/rulebook-memory-search.md +47 -47
- package/.claude/commands/rulebook-task-apply.md +67 -67
- package/.claude/commands/rulebook-task-archive.md +94 -94
- package/.claude/commands/rulebook-task-create.md +93 -93
- package/.claude/commands/rulebook-task-list.md +42 -42
- package/.claude/commands/rulebook-task-show.md +52 -52
- package/.claude/commands/rulebook-task-validate.md +53 -53
- package/.claude-plugin/marketplace.json +28 -28
- package/.claude-plugin/plugin.json +8 -8
- package/README.md +394 -393
- package/dist/core/generator.d.ts +1 -1
- package/dist/core/generator.d.ts.map +1 -1
- package/dist/core/generator.js +1 -0
- package/dist/core/generator.js.map +1 -1
- package/dist/hooks/terse-activate.d.ts +59 -0
- package/dist/hooks/terse-activate.d.ts.map +1 -0
- package/dist/hooks/terse-activate.js +149 -0
- package/dist/hooks/terse-activate.js.map +1 -0
- package/dist/hooks/terse-config.d.ts +51 -0
- package/dist/hooks/terse-config.d.ts.map +1 -0
- package/dist/hooks/terse-config.js +130 -0
- package/dist/hooks/terse-config.js.map +1 -0
- package/dist/hooks/terse-mode-tracker.d.ts +78 -0
- package/dist/hooks/terse-mode-tracker.d.ts.map +1 -0
- package/dist/hooks/terse-mode-tracker.js +213 -0
- package/dist/hooks/terse-mode-tracker.js.map +1 -0
- package/dist/index.js +0 -0
- package/dist/mcp/rulebook-server.js +0 -0
- package/package.json +21 -22
- package/templates/agents/accessibility-reviewer.md +43 -43
- package/templates/agents/api-designer.md +42 -42
- package/templates/agents/architect.md +51 -51
- package/templates/agents/build-engineer.md +36 -36
- package/templates/agents/code-reviewer.md +47 -47
- package/templates/agents/compiler/codegen-debugger.md +34 -34
- package/templates/agents/compiler/stdlib-engineer.md +28 -28
- package/templates/agents/compiler/test-coverage-guardian.md +31 -31
- package/templates/agents/context-intelligence.md +52 -52
- package/templates/agents/database-architect.md +41 -41
- package/templates/agents/devops-engineer.md +42 -42
- package/templates/agents/docs-writer.md +38 -38
- package/templates/agents/game-engine/cpp-core-expert.md +35 -35
- package/templates/agents/game-engine/render-engineer.md +22 -22
- package/templates/agents/game-engine/shader-engineer.md +38 -38
- package/templates/agents/game-engine/systems-integration.md +43 -43
- package/templates/agents/generic/code-reviewer.md +41 -41
- package/templates/agents/generic/docs-writer.md +25 -25
- package/templates/agents/generic/project-manager.md +36 -36
- package/templates/agents/generic/researcher.md +34 -34
- package/templates/agents/generic/test-engineer.md +41 -41
- package/templates/agents/i18n-engineer.md +42 -42
- package/templates/agents/implementer.md +42 -42
- package/templates/agents/migration-engineer.md +42 -42
- package/templates/agents/mobile/platform-specialist.md +22 -22
- package/templates/agents/mobile/ui-engineer.md +22 -22
- package/templates/agents/performance-engineer.md +49 -49
- package/templates/agents/refactoring-agent.md +41 -41
- package/templates/agents/researcher.md +38 -38
- package/templates/agents/security-reviewer.md +40 -40
- package/templates/agents/team-lead.md +37 -37
- package/templates/agents/tester.md +48 -48
- package/templates/agents/ux-reviewer.md +43 -43
- package/templates/agents/web-app/api-designer.md +22 -22
- package/templates/agents/web-app/backend-engineer.md +30 -30
- package/templates/agents/web-app/database-engineer.md +22 -22
- package/templates/agents/web-app/frontend-engineer.md +29 -29
- package/templates/agents/web-app/security-reviewer.md +32 -32
- package/templates/ci/rulebook-review.yml +26 -26
- package/templates/cli/AIDER.md +49 -49
- package/templates/cli/AMAZON_Q.md +25 -25
- package/templates/cli/AUGGIE.md +32 -32
- package/templates/cli/CLAUDE.md +117 -117
- package/templates/cli/CLINE.md +99 -99
- package/templates/cli/CODEBUDDY.md +20 -20
- package/templates/cli/CODEIUM.md +20 -20
- package/templates/cli/CODEX.md +21 -21
- package/templates/cli/CONTINUE.md +34 -34
- package/templates/cli/CURSOR_CLI.md +62 -62
- package/templates/cli/FACTORY.md +18 -18
- package/templates/cli/GEMINI.md +35 -35
- package/templates/cli/KILOCODE.md +18 -18
- package/templates/cli/OPENCODE.md +18 -18
- package/templates/cli/_GENERIC_TEMPLATE.md +29 -29
- package/templates/commands/rulebook-decision-create.md +55 -55
- package/templates/commands/rulebook-decision-list.md +15 -15
- package/templates/commands/rulebook-knowledge-add.md +41 -41
- package/templates/commands/rulebook-knowledge-list.md +15 -15
- package/templates/commands/rulebook-learn-capture.md +48 -48
- package/templates/commands/rulebook-learn-list.md +13 -13
- package/templates/commands/rulebook-memory-save.md +48 -48
- package/templates/commands/rulebook-memory-search.md +47 -47
- package/templates/commands/rulebook-task-apply.md +67 -67
- package/templates/commands/rulebook-task-archive.md +94 -94
- package/templates/commands/rulebook-task-create.md +93 -93
- package/templates/commands/rulebook-task-list.md +42 -42
- package/templates/commands/rulebook-task-show.md +52 -52
- package/templates/commands/rulebook-task-validate.md +53 -53
- package/templates/compact-context/_default.md +23 -23
- package/templates/compact-context/cpp.md +26 -26
- package/templates/compact-context/go.md +26 -26
- package/templates/compact-context/python.md +26 -26
- package/templates/compact-context/rust.md +28 -28
- package/templates/compact-context/typescript.md +29 -29
- package/templates/core/AGENTS_LEAN.md +9 -0
- package/templates/core/AGENTS_OVERRIDE.md +16 -16
- package/templates/core/AGENT_AUTOMATION.md +296 -296
- package/templates/core/CLAUDE_MD_v2.md +80 -71
- package/templates/core/DAG.md +304 -304
- package/templates/core/DECISIONS.md +38 -38
- package/templates/core/DOCUMENTATION_RULES.md +36 -36
- package/templates/core/KNOWLEDGE.md +49 -49
- package/templates/core/MULTI_AGENT.md +74 -74
- package/templates/core/PLANS.md +28 -28
- package/templates/core/QUALITY_ENFORCEMENT.md +68 -68
- package/templates/core/RALPH.md +471 -471
- package/templates/core/RULEBOOK.md +1947 -1947
- package/templates/core/TIER1_PROHIBITIONS.md +154 -154
- package/templates/core/TOKEN_OPTIMIZATION.md +49 -49
- package/templates/frameworks/ANGULAR.md +36 -36
- package/templates/frameworks/DJANGO.md +83 -83
- package/templates/frameworks/ELECTRON.md +147 -147
- package/templates/frameworks/FLASK.md +38 -38
- package/templates/frameworks/FLUTTER.md +55 -55
- package/templates/frameworks/JQUERY.md +32 -32
- package/templates/frameworks/LARAVEL.md +38 -38
- package/templates/frameworks/NESTJS.md +43 -43
- package/templates/frameworks/NEXTJS.md +127 -127
- package/templates/frameworks/NUXT.md +40 -40
- package/templates/frameworks/RAILS.md +66 -66
- package/templates/frameworks/REACT.md +38 -38
- package/templates/frameworks/REACT_NATIVE.md +47 -47
- package/templates/frameworks/SPRING.md +39 -39
- package/templates/frameworks/SYMFONY.md +36 -36
- package/templates/frameworks/VUE.md +36 -36
- package/templates/frameworks/ZEND.md +35 -35
- package/templates/git/CI_CD_PATTERNS.md +661 -661
- package/templates/git/GITHUB_ACTIONS.md +728 -728
- package/templates/git/GITLAB_CI.md +730 -730
- package/templates/git/GIT_WORKFLOW.md +1192 -1192
- package/templates/git/SECRETS_MANAGEMENT.md +585 -585
- package/templates/hooks/COMMIT_MSG.md +530 -530
- package/templates/hooks/POST_CHECKOUT.md +546 -546
- package/templates/hooks/PREPARE_COMMIT_MSG.md +619 -619
- package/templates/hooks/PRE_COMMIT.md +414 -414
- package/templates/hooks/PRE_PUSH.md +601 -601
- package/templates/hooks/check-context-and-handoff.ps1 +58 -58
- package/templates/hooks/check-context-and-handoff.sh +76 -76
- package/templates/hooks/enforce-team-for-background-agents.ps1 +63 -63
- package/templates/hooks/enforce-team-for-background-agents.sh +55 -55
- package/templates/hooks/on-compact-reinject.sh +34 -34
- package/templates/hooks/resume-from-handoff.ps1 +40 -40
- package/templates/hooks/resume-from-handoff.sh +61 -61
- package/templates/hooks/terse-activate.ps1 +143 -143
- package/templates/hooks/terse-activate.sh +197 -197
- package/templates/hooks/terse-mode-tracker.ps1 +153 -153
- package/templates/hooks/terse-mode-tracker.sh +187 -187
- package/templates/ides/CONTINUE_RULES.md +16 -16
- package/templates/ides/COPILOT.md +37 -37
- package/templates/ides/COPILOT_INSTRUCTIONS.md +23 -23
- package/templates/ides/CURSOR.md +43 -43
- package/templates/ides/GEMINI_RULES.md +17 -17
- package/templates/ides/JETBRAINS_AI.md +35 -35
- package/templates/ides/REPLIT.md +36 -36
- package/templates/ides/TABNINE.md +29 -29
- package/templates/ides/VSCODE.md +40 -40
- package/templates/ides/WINDSURF.md +36 -36
- package/templates/ides/WINDSURF_RULES.md +14 -14
- package/templates/ides/ZED.md +32 -32
- package/templates/ides/cursor-mdc/go.mdc +24 -24
- package/templates/ides/cursor-mdc/python.mdc +24 -24
- package/templates/ides/cursor-mdc/quality.mdc +25 -25
- package/templates/ides/cursor-mdc/ralph.mdc +39 -39
- package/templates/ides/cursor-mdc/rulebook.mdc +38 -38
- package/templates/ides/cursor-mdc/rust.mdc +24 -24
- package/templates/ides/cursor-mdc/typescript.mdc +25 -25
- package/templates/languages/C.md +333 -333
- package/templates/languages/CPP.md +743 -743
- package/templates/languages/CSHARP.md +417 -417
- package/templates/languages/ELIXIR.md +454 -454
- package/templates/languages/ERLANG.md +361 -361
- package/templates/languages/GO.md +645 -645
- package/templates/languages/HASKELL.md +177 -177
- package/templates/languages/JAVA.md +607 -607
- package/templates/languages/JAVASCRIPT.md +631 -631
- package/templates/languages/JULIA.md +97 -97
- package/templates/languages/KOTLIN.md +511 -511
- package/templates/languages/LISP.md +100 -100
- package/templates/languages/LUA.md +74 -74
- package/templates/languages/OBJECTIVEC.md +90 -90
- package/templates/languages/PHP.md +416 -416
- package/templates/languages/PYTHON.md +682 -682
- package/templates/languages/RUBY.md +421 -421
- package/templates/languages/RUST.md +477 -477
- package/templates/languages/SAS.md +73 -73
- package/templates/languages/SCALA.md +348 -348
- package/templates/languages/SOLIDITY.md +580 -580
- package/templates/languages/SQL.md +137 -137
- package/templates/languages/SWIFT.md +466 -466
- package/templates/languages/TYPESCRIPT.md +591 -591
- package/templates/languages/ZIG.md +265 -265
- package/templates/modules/ATLASSIAN.md +255 -255
- package/templates/modules/CONTEXT7.md +54 -54
- package/templates/modules/FIGMA.md +267 -267
- package/templates/modules/GITHUB_MCP.md +64 -64
- package/templates/modules/GRAFANA.md +328 -328
- package/templates/modules/MEMORY.md +126 -126
- package/templates/modules/NOTION.md +247 -247
- package/templates/modules/PLAYWRIGHT.md +90 -90
- package/templates/modules/RULEBOOK_MCP.md +208 -208
- package/templates/modules/SERENA.md +337 -337
- package/templates/modules/SUPABASE.md +223 -223
- package/templates/modules/SYNAP.md +69 -69
- package/templates/modules/VECTORIZER.md +63 -63
- package/templates/modules/sequential-thinking.md +42 -42
- package/templates/ralph/ralph-history.bat +4 -4
- package/templates/ralph/ralph-history.sh +5 -5
- package/templates/ralph/ralph-init.bat +5 -5
- package/templates/ralph/ralph-init.sh +5 -5
- package/templates/ralph/ralph-pause.bat +5 -5
- package/templates/ralph/ralph-pause.sh +5 -5
- package/templates/ralph/ralph-run.bat +5 -5
- package/templates/ralph/ralph-run.sh +5 -5
- package/templates/ralph/ralph-status.bat +4 -4
- package/templates/ralph/ralph-status.sh +5 -5
- package/templates/rules/consult-analysis-before-implementing.md +23 -23
- package/templates/rules/cpp.md +46 -46
- package/templates/rules/csharp.md +44 -44
- package/templates/rules/diagnostic-first.md +39 -39
- package/templates/rules/fail-twice-escalate.md +46 -46
- package/templates/rules/follow-task-sequence.md +36 -36
- package/templates/rules/git-safety.md +29 -29
- package/templates/rules/go.md +40 -40
- package/templates/rules/incremental-implementation.md +56 -56
- package/templates/rules/incremental-tests.md +29 -29
- package/templates/rules/java.md +43 -43
- package/templates/rules/javascript.md +39 -39
- package/templates/rules/knowledge-base-usage.md +41 -41
- package/templates/rules/multi-agent-teams.md +75 -75
- package/templates/rules/no-deferred.md +31 -31
- package/templates/rules/no-shortcuts.md +30 -30
- package/templates/rules/python.md +43 -43
- package/templates/rules/research-first.md +30 -30
- package/templates/rules/respect-handoff-trigger.md +41 -41
- package/templates/rules/rust.md +40 -40
- package/templates/rules/sequential-editing.md +21 -21
- package/templates/rules/session-workflow.md +24 -24
- package/templates/rules/task-decomposition.md +32 -32
- package/templates/rules/typescript.md +40 -40
- package/templates/services/AZURE_BLOB.md +184 -184
- package/templates/services/CASSANDRA.md +239 -239
- package/templates/services/DATADOG.md +26 -26
- package/templates/services/DOCKER.md +124 -124
- package/templates/services/DOCKER_COMPOSE.md +168 -168
- package/templates/services/DYNAMODB.md +308 -308
- package/templates/services/ELASTICSEARCH.md +347 -347
- package/templates/services/GCS.md +178 -178
- package/templates/services/HELM.md +194 -194
- package/templates/services/INFLUXDB.md +265 -265
- package/templates/services/KAFKA.md +341 -341
- package/templates/services/KUBERNETES.md +208 -208
- package/templates/services/MARIADB.md +183 -183
- package/templates/services/MEMCACHED.md +242 -242
- package/templates/services/MINIO.md +201 -201
- package/templates/services/MONGODB.md +268 -268
- package/templates/services/MYSQL.md +358 -358
- package/templates/services/NEO4J.md +247 -247
- package/templates/services/OPENTELEMETRY.md +25 -25
- package/templates/services/ORACLE.md +290 -290
- package/templates/services/PINO.md +24 -24
- package/templates/services/POSTGRESQL.md +326 -326
- package/templates/services/PROMETHEUS.md +33 -33
- package/templates/services/RABBITMQ.md +286 -286
- package/templates/services/REDIS.md +292 -292
- package/templates/services/S3.md +298 -298
- package/templates/services/SENTRY.md +23 -23
- package/templates/services/SQLITE.md +294 -294
- package/templates/services/SQLSERVER.md +294 -294
- package/templates/services/WINSTON.md +30 -30
- package/templates/skills/cli/aider/SKILL.md +59 -59
- package/templates/skills/cli/amazon-q/SKILL.md +35 -35
- package/templates/skills/cli/auggie/SKILL.md +42 -42
- package/templates/skills/cli/claude/SKILL.md +42 -42
- package/templates/skills/cli/cline/SKILL.md +42 -42
- package/templates/skills/cli/codebuddy/SKILL.md +30 -30
- package/templates/skills/cli/codeium/SKILL.md +30 -30
- package/templates/skills/cli/codex/SKILL.md +31 -31
- package/templates/skills/cli/continue/SKILL.md +44 -44
- package/templates/skills/cli/cursor-cli/SKILL.md +38 -38
- package/templates/skills/cli/factory/SKILL.md +28 -28
- package/templates/skills/cli/gemini/SKILL.md +45 -45
- package/templates/skills/cli/kilocode/SKILL.md +28 -28
- package/templates/skills/cli/opencode/SKILL.md +28 -28
- package/templates/skills/core/agent-automation/SKILL.md +194 -194
- package/templates/skills/core/dag/SKILL.md +314 -314
- package/templates/skills/core/documentation-rules/SKILL.md +46 -46
- package/templates/skills/core/karpathy-guidelines/SKILL.md +93 -0
- package/templates/skills/core/quality-enforcement/SKILL.md +78 -78
- package/templates/skills/core/rulebook/SKILL.md +176 -176
- package/templates/skills/core/rulebook-terse/SKILL.md +116 -116
- package/templates/skills/core/rulebook-terse-commit/SKILL.md +96 -96
- package/templates/skills/core/rulebook-terse-review/SKILL.md +112 -112
- package/templates/skills/dev/accessibility/SKILL.md +17 -17
- package/templates/skills/dev/analysis/SKILL.md +19 -19
- package/templates/skills/dev/api-design/SKILL.md +15 -15
- package/templates/skills/dev/architect/SKILL.md +17 -17
- package/templates/skills/dev/build-fix/SKILL.md +17 -17
- package/templates/skills/dev/db-design/SKILL.md +15 -15
- package/templates/skills/dev/debug/SKILL.md +16 -16
- package/templates/skills/dev/deploy/SKILL.md +17 -17
- package/templates/skills/dev/docs/SKILL.md +17 -17
- package/templates/skills/dev/handoff/SKILL.md +27 -27
- package/templates/skills/dev/migrate/SKILL.md +15 -15
- package/templates/skills/dev/perf/SKILL.md +17 -17
- package/templates/skills/dev/refactor/SKILL.md +17 -17
- package/templates/skills/dev/research/SKILL.md +14 -14
- package/templates/skills/dev/review/SKILL.md +18 -18
- package/templates/skills/dev/security-audit/SKILL.md +17 -17
- package/templates/skills/frameworks/angular/SKILL.md +46 -46
- package/templates/skills/frameworks/django/SKILL.md +93 -93
- package/templates/skills/frameworks/electron/SKILL.md +157 -157
- package/templates/skills/frameworks/flask/SKILL.md +48 -48
- package/templates/skills/frameworks/flutter/SKILL.md +65 -65
- package/templates/skills/frameworks/jquery/SKILL.md +42 -42
- package/templates/skills/frameworks/laravel/SKILL.md +48 -48
- package/templates/skills/frameworks/nestjs/SKILL.md +53 -53
- package/templates/skills/frameworks/nextjs/SKILL.md +137 -137
- package/templates/skills/frameworks/nuxt/SKILL.md +50 -50
- package/templates/skills/frameworks/rails/SKILL.md +76 -76
- package/templates/skills/frameworks/react/SKILL.md +48 -48
- package/templates/skills/frameworks/react-native/SKILL.md +57 -57
- package/templates/skills/frameworks/spring/SKILL.md +49 -49
- package/templates/skills/frameworks/symfony/SKILL.md +46 -46
- package/templates/skills/frameworks/vue/SKILL.md +46 -46
- package/templates/skills/frameworks/zend/SKILL.md +45 -45
- package/templates/skills/ides/copilot/SKILL.md +47 -47
- package/templates/skills/ides/cursor/SKILL.md +53 -53
- package/templates/skills/ides/jetbrains-ai/SKILL.md +45 -45
- package/templates/skills/ides/replit/SKILL.md +46 -46
- package/templates/skills/ides/tabnine/SKILL.md +39 -39
- package/templates/skills/ides/vscode/SKILL.md +50 -50
- package/templates/skills/ides/windsurf/SKILL.md +46 -46
- package/templates/skills/ides/zed/SKILL.md +42 -42
- package/templates/skills/languages/c/SKILL.md +343 -343
- package/templates/skills/languages/cpp/SKILL.md +753 -753
- package/templates/skills/languages/csharp/SKILL.md +427 -427
- package/templates/skills/languages/elixir/SKILL.md +464 -464
- package/templates/skills/languages/erlang/SKILL.md +371 -371
- package/templates/skills/languages/go/SKILL.md +655 -655
- package/templates/skills/languages/haskell/SKILL.md +187 -187
- package/templates/skills/languages/java/SKILL.md +617 -617
- package/templates/skills/languages/javascript/SKILL.md +641 -641
- package/templates/skills/languages/julia/SKILL.md +107 -107
- package/templates/skills/languages/kotlin/SKILL.md +521 -521
- package/templates/skills/languages/lisp/SKILL.md +110 -110
- package/templates/skills/languages/lua/SKILL.md +84 -84
- package/templates/skills/languages/objectivec/SKILL.md +100 -100
- package/templates/skills/languages/php/SKILL.md +426 -426
- package/templates/skills/languages/python/SKILL.md +692 -692
- package/templates/skills/languages/ruby/SKILL.md +431 -431
- package/templates/skills/languages/rust/SKILL.md +487 -487
- package/templates/skills/languages/sas/SKILL.md +83 -83
- package/templates/skills/languages/scala/SKILL.md +358 -358
- package/templates/skills/languages/solidity/SKILL.md +590 -590
- package/templates/skills/languages/sql/SKILL.md +147 -147
- package/templates/skills/languages/swift/SKILL.md +476 -476
- package/templates/skills/languages/typescript/SKILL.md +302 -302
- package/templates/skills/languages/zig/SKILL.md +275 -275
- package/templates/skills/modules/atlassian/SKILL.md +265 -265
- package/templates/skills/modules/context7/SKILL.md +64 -64
- package/templates/skills/modules/figma/SKILL.md +277 -277
- package/templates/skills/modules/github-mcp/SKILL.md +74 -74
- package/templates/skills/modules/grafana/SKILL.md +338 -338
- package/templates/skills/modules/memory/SKILL.md +73 -73
- package/templates/skills/modules/notion/SKILL.md +257 -257
- package/templates/skills/modules/playwright/SKILL.md +100 -100
- package/templates/skills/modules/rulebook-mcp/SKILL.md +166 -166
- package/templates/skills/modules/serena/SKILL.md +347 -347
- package/templates/skills/modules/supabase/SKILL.md +233 -233
- package/templates/skills/modules/synap/SKILL.md +79 -79
- package/templates/skills/modules/vectorizer/SKILL.md +73 -73
- package/templates/skills/services/azure-blob/SKILL.md +194 -194
- package/templates/skills/services/cassandra/SKILL.md +249 -249
- package/templates/skills/services/dynamodb/SKILL.md +318 -318
- package/templates/skills/services/elasticsearch/SKILL.md +357 -357
- package/templates/skills/services/gcs/SKILL.md +188 -188
- package/templates/skills/services/influxdb/SKILL.md +275 -275
- package/templates/skills/services/kafka/SKILL.md +351 -351
- package/templates/skills/services/mariadb/SKILL.md +193 -193
- package/templates/skills/services/memcached/SKILL.md +252 -252
- package/templates/skills/services/minio/SKILL.md +211 -211
- package/templates/skills/services/mongodb/SKILL.md +278 -278
- package/templates/skills/services/mysql/SKILL.md +368 -368
- package/templates/skills/services/neo4j/SKILL.md +257 -257
- package/templates/skills/services/oracle/SKILL.md +300 -300
- package/templates/skills/services/postgresql/SKILL.md +336 -336
- package/templates/skills/services/rabbitmq/SKILL.md +296 -296
- package/templates/skills/services/redis/SKILL.md +302 -302
- package/templates/skills/services/s3/SKILL.md +308 -308
- package/templates/skills/services/sqlite/SKILL.md +304 -304
- package/templates/skills/services/sqlserver/SKILL.md +304 -304
- package/templates/skills/workflows/ralph/SKILL.md +309 -309
- package/templates/skills/workflows/ralph/install.sh +87 -87
- package/templates/skills/workflows/ralph/manifest.json +158 -158
|
@@ -1,302 +1,302 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: "TypeScript"
|
|
3
|
-
description: "TypeScript language rules with strict mode, testing, linting, and CI/CD best practices"
|
|
4
|
-
version: "1.0.0"
|
|
5
|
-
category: "languages"
|
|
6
|
-
author: "Rulebook"
|
|
7
|
-
tags: ["typescript", "javascript", "node", "strict", "testing", "vitest", "eslint"]
|
|
8
|
-
dependencies: []
|
|
9
|
-
conflicts: []
|
|
10
|
-
---
|
|
11
|
-
|
|
12
|
-
# TypeScript Project Rules
|
|
13
|
-
|
|
14
|
-
## Agent Automation Commands
|
|
15
|
-
|
|
16
|
-
**CRITICAL**: Execute these commands after EVERY implementation (see AGENT_AUTOMATION module for full workflow).
|
|
17
|
-
|
|
18
|
-
```bash
|
|
19
|
-
# Complete quality check sequence:
|
|
20
|
-
npm run type-check # Type checking
|
|
21
|
-
npm run lint # Linting (0 warnings required)
|
|
22
|
-
npm run format # Code formatting
|
|
23
|
-
npm test # All tests (100% pass required)
|
|
24
|
-
npm run test:coverage # Coverage check (95%+ required)
|
|
25
|
-
npm run build # Build verification
|
|
26
|
-
|
|
27
|
-
# Security audit:
|
|
28
|
-
npm audit --production # Vulnerability scan
|
|
29
|
-
npm outdated # Check outdated deps (informational)
|
|
30
|
-
```
|
|
31
|
-
|
|
32
|
-
## TypeScript Configuration
|
|
33
|
-
|
|
34
|
-
**CRITICAL**: Use TypeScript 5.3+ with strict mode enabled.
|
|
35
|
-
|
|
36
|
-
- **Version**: TypeScript 5.3+
|
|
37
|
-
- **Mode**: Strict mode enabled
|
|
38
|
-
- **Target**: ES2022 or later
|
|
39
|
-
- **Module**: ESNext with Node16 module resolution
|
|
40
|
-
|
|
41
|
-
### tsconfig.json Requirements
|
|
42
|
-
|
|
43
|
-
```json
|
|
44
|
-
{
|
|
45
|
-
"compilerOptions": {
|
|
46
|
-
"target": "ES2022",
|
|
47
|
-
"module": "ESNext",
|
|
48
|
-
"moduleResolution": "node",
|
|
49
|
-
"strict": true,
|
|
50
|
-
"esModuleInterop": true,
|
|
51
|
-
"skipLibCheck": true,
|
|
52
|
-
"forceConsistentCasingInFileNames": true,
|
|
53
|
-
"resolveJsonModule": true,
|
|
54
|
-
"declaration": true,
|
|
55
|
-
"declarationMap": true,
|
|
56
|
-
"sourceMap": true,
|
|
57
|
-
"noUnusedLocals": true,
|
|
58
|
-
"noUnusedParameters": true,
|
|
59
|
-
"noImplicitReturns": true,
|
|
60
|
-
"noFallthroughCasesInSwitch": true
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
```
|
|
64
|
-
|
|
65
|
-
## Code Quality Standards
|
|
66
|
-
|
|
67
|
-
### Mandatory Quality Checks
|
|
68
|
-
|
|
69
|
-
**CRITICAL**: After implementing ANY feature, you MUST run these commands in order.
|
|
70
|
-
|
|
71
|
-
**IMPORTANT**: These commands MUST match your GitHub Actions workflows to prevent CI/CD failures!
|
|
72
|
-
|
|
73
|
-
```bash
|
|
74
|
-
# Pre-Commit Checklist (MUST match .github/workflows/*.yml)
|
|
75
|
-
|
|
76
|
-
# 1. Type check (matches workflow)
|
|
77
|
-
npm run type-check # or: tsc --noEmit
|
|
78
|
-
|
|
79
|
-
# 2. Lint (MUST pass with no warnings - matches workflow)
|
|
80
|
-
npm run lint
|
|
81
|
-
|
|
82
|
-
# 3. Format check (matches workflow - use same command as CI)
|
|
83
|
-
npx prettier --check 'src/**/*.ts' 'tests/**/*.ts'
|
|
84
|
-
|
|
85
|
-
# 4. Run all tests (MUST pass 100% - matches workflow)
|
|
86
|
-
npm test
|
|
87
|
-
|
|
88
|
-
# 5. Build (MUST succeed - matches workflow)
|
|
89
|
-
npm run build
|
|
90
|
-
|
|
91
|
-
# 6. Check coverage (MUST meet threshold)
|
|
92
|
-
npm run test:coverage
|
|
93
|
-
```
|
|
94
|
-
|
|
95
|
-
**If ANY of these fail, you MUST fix the issues before committing.**
|
|
96
|
-
|
|
97
|
-
### Linting
|
|
98
|
-
|
|
99
|
-
- Use ESLint with TypeScript plugin
|
|
100
|
-
- Configuration in `eslint.config.js` or `.eslintrc.json`
|
|
101
|
-
- Must pass with no warnings: `eslint src/**/*.ts`
|
|
102
|
-
- Fix automatically when possible: `eslint src/**/*.ts --fix`
|
|
103
|
-
|
|
104
|
-
Example ESLint config:
|
|
105
|
-
```json
|
|
106
|
-
{
|
|
107
|
-
"extends": [
|
|
108
|
-
"eslint:recommended",
|
|
109
|
-
"plugin:@typescript-eslint/recommended"
|
|
110
|
-
],
|
|
111
|
-
"parser": "@typescript-eslint/parser",
|
|
112
|
-
"plugins": ["@typescript-eslint"],
|
|
113
|
-
"rules": {
|
|
114
|
-
"@typescript-eslint/no-unused-vars": ["error", { "argsIgnorePattern": "^_" }],
|
|
115
|
-
"@typescript-eslint/explicit-function-return-type": "warn",
|
|
116
|
-
"@typescript-eslint/no-explicit-any": "warn"
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
```
|
|
120
|
-
|
|
121
|
-
### Formatting
|
|
122
|
-
|
|
123
|
-
- Use Prettier for code formatting
|
|
124
|
-
- Configuration in `.prettierrc.json`
|
|
125
|
-
- Integrate with ESLint for consistency
|
|
126
|
-
- Format before committing: `prettier --write "src/**/*.ts"`
|
|
127
|
-
|
|
128
|
-
Example Prettier config:
|
|
129
|
-
```json
|
|
130
|
-
{
|
|
131
|
-
"semi": true,
|
|
132
|
-
"trailingComma": "es5",
|
|
133
|
-
"singleQuote": true,
|
|
134
|
-
"printWidth": 100,
|
|
135
|
-
"tabWidth": 2
|
|
136
|
-
}
|
|
137
|
-
```
|
|
138
|
-
|
|
139
|
-
### Testing
|
|
140
|
-
|
|
141
|
-
- **Framework**: Vitest (recommended) or Jest
|
|
142
|
-
- **Location**: `/tests` directory or co-located `*.test.ts` files
|
|
143
|
-
- **Coverage**: Must meet project threshold (default 95%)
|
|
144
|
-
- **Watch Mode**: Use `vitest` or `vitest --watch` for development
|
|
145
|
-
- **CI Mode**: **CRITICAL** - Default `npm test` command MUST include `--run` flag
|
|
146
|
-
- This prevents Vitest from entering watch mode, which never terminates
|
|
147
|
-
- In `package.json`: `"test": "vitest --run"`
|
|
148
|
-
- In CI workflows: use `npm test` (do NOT add `--run` argument)
|
|
149
|
-
- For manual development, use `npm run test:watch`
|
|
150
|
-
|
|
151
|
-
Example test structure:
|
|
152
|
-
```typescript
|
|
153
|
-
import { describe, it, expect, beforeEach, afterEach } from 'vitest';
|
|
154
|
-
import { myFunction } from './my-module';
|
|
155
|
-
|
|
156
|
-
describe('myFunction', () => {
|
|
157
|
-
beforeEach(() => {
|
|
158
|
-
// Setup
|
|
159
|
-
});
|
|
160
|
-
|
|
161
|
-
afterEach(() => {
|
|
162
|
-
// Cleanup
|
|
163
|
-
});
|
|
164
|
-
|
|
165
|
-
it('should handle valid input', () => {
|
|
166
|
-
const result = myFunction('input');
|
|
167
|
-
expect(result).toBe('expected');
|
|
168
|
-
});
|
|
169
|
-
|
|
170
|
-
it('should throw on invalid input', () => {
|
|
171
|
-
expect(() => myFunction('')).toThrow('Invalid input');
|
|
172
|
-
});
|
|
173
|
-
});
|
|
174
|
-
```
|
|
175
|
-
|
|
176
|
-
## Package Management
|
|
177
|
-
|
|
178
|
-
**CRITICAL**: Use consistent package manager across team.
|
|
179
|
-
|
|
180
|
-
- **Default**: npm (most compatible, built-in)
|
|
181
|
-
- **Alternative**: pnpm (fast, disk-efficient) or yarn
|
|
182
|
-
- **Lockfile**: Always commit lockfile (`package-lock.json`, `pnpm-lock.yaml`, or `yarn.lock`)
|
|
183
|
-
- **Workspaces**: Use for monorepos
|
|
184
|
-
- **CI/CD**: Update GitHub Actions workflows to match your package manager
|
|
185
|
-
|
|
186
|
-
### Dependencies
|
|
187
|
-
|
|
188
|
-
1. **Check for latest versions**:
|
|
189
|
-
- Use Context7 MCP tool if available
|
|
190
|
-
- Check npm registry: `npm view <package> versions`
|
|
191
|
-
- Review changelog for breaking changes
|
|
192
|
-
|
|
193
|
-
2. **Dependency Guidelines**:
|
|
194
|
-
- Use exact versions for applications (`"1.2.3"`)
|
|
195
|
-
- Use semver for libraries (`"^1.2.3"`)
|
|
196
|
-
- Keep dependencies updated regularly
|
|
197
|
-
- Use `npm audit` or `pnpm audit` for security
|
|
198
|
-
- Don't use deprecated packages
|
|
199
|
-
- Don't add unnecessary dependencies
|
|
200
|
-
|
|
201
|
-
## Type Safety
|
|
202
|
-
|
|
203
|
-
- **No `any`**: Avoid `any` type - use `unknown` and type guards
|
|
204
|
-
- **Strict null checks**: Handle null/undefined explicitly
|
|
205
|
-
- **Type assertions**: Minimize use of `as` - prefer type guards
|
|
206
|
-
- **Generics**: Use for reusable type-safe code
|
|
207
|
-
|
|
208
|
-
Example type-safe code:
|
|
209
|
-
```typescript
|
|
210
|
-
// Good: Type guard
|
|
211
|
-
function isString(value: unknown): value is string {
|
|
212
|
-
return typeof value === 'string';
|
|
213
|
-
}
|
|
214
|
-
|
|
215
|
-
function process(input: unknown): string {
|
|
216
|
-
if (isString(input)) {
|
|
217
|
-
return input.toUpperCase();
|
|
218
|
-
}
|
|
219
|
-
throw new Error('Invalid input');
|
|
220
|
-
}
|
|
221
|
-
|
|
222
|
-
// Bad: Type assertion
|
|
223
|
-
function processUnsafe(input: unknown): string {
|
|
224
|
-
return (input as string).toUpperCase(); // Runtime error if not string
|
|
225
|
-
}
|
|
226
|
-
```
|
|
227
|
-
|
|
228
|
-
## Error Handling
|
|
229
|
-
|
|
230
|
-
- Create custom error classes
|
|
231
|
-
- Use type guards for error checking
|
|
232
|
-
- Document errors in JSDoc/TSDoc
|
|
233
|
-
- Never swallow errors silently
|
|
234
|
-
|
|
235
|
-
Example:
|
|
236
|
-
```typescript
|
|
237
|
-
export class ValidationError extends Error {
|
|
238
|
-
constructor(
|
|
239
|
-
message: string,
|
|
240
|
-
public readonly field: string
|
|
241
|
-
) {
|
|
242
|
-
super(message);
|
|
243
|
-
this.name = 'ValidationError';
|
|
244
|
-
}
|
|
245
|
-
}
|
|
246
|
-
|
|
247
|
-
export function validate(data: unknown): Data {
|
|
248
|
-
if (!isValidData(data)) {
|
|
249
|
-
throw new ValidationError('Invalid data structure', 'data');
|
|
250
|
-
}
|
|
251
|
-
return data;
|
|
252
|
-
}
|
|
253
|
-
```
|
|
254
|
-
|
|
255
|
-
## Project Structure
|
|
256
|
-
|
|
257
|
-
```
|
|
258
|
-
project/
|
|
259
|
-
├── package.json # Package manifest
|
|
260
|
-
├── tsconfig.json # TypeScript config
|
|
261
|
-
├── vitest.config.ts # Test config
|
|
262
|
-
├── README.md # Project overview
|
|
263
|
-
├── CHANGELOG.md # Version history
|
|
264
|
-
├── AGENTS.md # AI assistant rules
|
|
265
|
-
├── src/
|
|
266
|
-
│ ├── index.ts # Main entry point
|
|
267
|
-
│ ├── types.ts # Type definitions
|
|
268
|
-
│ └── ...
|
|
269
|
-
├── tests/ # Test files
|
|
270
|
-
├── dist/ # Compiled output (gitignored)
|
|
271
|
-
└── docs/ # Project documentation
|
|
272
|
-
```
|
|
273
|
-
|
|
274
|
-
## Module System
|
|
275
|
-
|
|
276
|
-
- Use ES modules (`import`/`export`)
|
|
277
|
-
- Set `"type": "module"` in `package.json`
|
|
278
|
-
- Use `.js` extensions in imports for Node.js compatibility
|
|
279
|
-
- Configure `moduleResolution: "node"` in tsconfig.json
|
|
280
|
-
|
|
281
|
-
Example:
|
|
282
|
-
```typescript
|
|
283
|
-
// Good: ES modules with .js extension
|
|
284
|
-
import { myFunction } from './my-module.js';
|
|
285
|
-
|
|
286
|
-
export { myFunction };
|
|
287
|
-
export default class MyClass {}
|
|
288
|
-
```
|
|
289
|
-
|
|
290
|
-
## CI/CD Requirements
|
|
291
|
-
|
|
292
|
-
**CRITICAL**: GitHub Actions `cache: 'npm'` requires `package-lock.json` to be committed.
|
|
293
|
-
|
|
294
|
-
- **Lockfile Requirement**: Remove `package-lock.json` from `.gitignore`
|
|
295
|
-
- **Cache Strategy**: Use `cache: 'npm'` in `setup-node` action
|
|
296
|
-
- **Install Command**: Use `npm ci` (not `npm install`) for reproducible builds
|
|
297
|
-
|
|
298
|
-
Must include GitHub Actions workflows for:
|
|
299
|
-
|
|
300
|
-
1. **Testing** (`typescript-test.yml`)
|
|
301
|
-
2. **Linting** (`typescript-lint.yml`)
|
|
302
|
-
3. **Build** (`typescript-build.yml`)
|
|
1
|
+
---
|
|
2
|
+
name: "TypeScript"
|
|
3
|
+
description: "TypeScript language rules with strict mode, testing, linting, and CI/CD best practices"
|
|
4
|
+
version: "1.0.0"
|
|
5
|
+
category: "languages"
|
|
6
|
+
author: "Rulebook"
|
|
7
|
+
tags: ["typescript", "javascript", "node", "strict", "testing", "vitest", "eslint"]
|
|
8
|
+
dependencies: []
|
|
9
|
+
conflicts: []
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# TypeScript Project Rules
|
|
13
|
+
|
|
14
|
+
## Agent Automation Commands
|
|
15
|
+
|
|
16
|
+
**CRITICAL**: Execute these commands after EVERY implementation (see AGENT_AUTOMATION module for full workflow).
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
# Complete quality check sequence:
|
|
20
|
+
npm run type-check # Type checking
|
|
21
|
+
npm run lint # Linting (0 warnings required)
|
|
22
|
+
npm run format # Code formatting
|
|
23
|
+
npm test # All tests (100% pass required)
|
|
24
|
+
npm run test:coverage # Coverage check (95%+ required)
|
|
25
|
+
npm run build # Build verification
|
|
26
|
+
|
|
27
|
+
# Security audit:
|
|
28
|
+
npm audit --production # Vulnerability scan
|
|
29
|
+
npm outdated # Check outdated deps (informational)
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
## TypeScript Configuration
|
|
33
|
+
|
|
34
|
+
**CRITICAL**: Use TypeScript 5.3+ with strict mode enabled.
|
|
35
|
+
|
|
36
|
+
- **Version**: TypeScript 5.3+
|
|
37
|
+
- **Mode**: Strict mode enabled
|
|
38
|
+
- **Target**: ES2022 or later
|
|
39
|
+
- **Module**: ESNext with Node16 module resolution
|
|
40
|
+
|
|
41
|
+
### tsconfig.json Requirements
|
|
42
|
+
|
|
43
|
+
```json
|
|
44
|
+
{
|
|
45
|
+
"compilerOptions": {
|
|
46
|
+
"target": "ES2022",
|
|
47
|
+
"module": "ESNext",
|
|
48
|
+
"moduleResolution": "node",
|
|
49
|
+
"strict": true,
|
|
50
|
+
"esModuleInterop": true,
|
|
51
|
+
"skipLibCheck": true,
|
|
52
|
+
"forceConsistentCasingInFileNames": true,
|
|
53
|
+
"resolveJsonModule": true,
|
|
54
|
+
"declaration": true,
|
|
55
|
+
"declarationMap": true,
|
|
56
|
+
"sourceMap": true,
|
|
57
|
+
"noUnusedLocals": true,
|
|
58
|
+
"noUnusedParameters": true,
|
|
59
|
+
"noImplicitReturns": true,
|
|
60
|
+
"noFallthroughCasesInSwitch": true
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
## Code Quality Standards
|
|
66
|
+
|
|
67
|
+
### Mandatory Quality Checks
|
|
68
|
+
|
|
69
|
+
**CRITICAL**: After implementing ANY feature, you MUST run these commands in order.
|
|
70
|
+
|
|
71
|
+
**IMPORTANT**: These commands MUST match your GitHub Actions workflows to prevent CI/CD failures!
|
|
72
|
+
|
|
73
|
+
```bash
|
|
74
|
+
# Pre-Commit Checklist (MUST match .github/workflows/*.yml)
|
|
75
|
+
|
|
76
|
+
# 1. Type check (matches workflow)
|
|
77
|
+
npm run type-check # or: tsc --noEmit
|
|
78
|
+
|
|
79
|
+
# 2. Lint (MUST pass with no warnings - matches workflow)
|
|
80
|
+
npm run lint
|
|
81
|
+
|
|
82
|
+
# 3. Format check (matches workflow - use same command as CI)
|
|
83
|
+
npx prettier --check 'src/**/*.ts' 'tests/**/*.ts'
|
|
84
|
+
|
|
85
|
+
# 4. Run all tests (MUST pass 100% - matches workflow)
|
|
86
|
+
npm test
|
|
87
|
+
|
|
88
|
+
# 5. Build (MUST succeed - matches workflow)
|
|
89
|
+
npm run build
|
|
90
|
+
|
|
91
|
+
# 6. Check coverage (MUST meet threshold)
|
|
92
|
+
npm run test:coverage
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
**If ANY of these fail, you MUST fix the issues before committing.**
|
|
96
|
+
|
|
97
|
+
### Linting
|
|
98
|
+
|
|
99
|
+
- Use ESLint with TypeScript plugin
|
|
100
|
+
- Configuration in `eslint.config.js` or `.eslintrc.json`
|
|
101
|
+
- Must pass with no warnings: `eslint src/**/*.ts`
|
|
102
|
+
- Fix automatically when possible: `eslint src/**/*.ts --fix`
|
|
103
|
+
|
|
104
|
+
Example ESLint config:
|
|
105
|
+
```json
|
|
106
|
+
{
|
|
107
|
+
"extends": [
|
|
108
|
+
"eslint:recommended",
|
|
109
|
+
"plugin:@typescript-eslint/recommended"
|
|
110
|
+
],
|
|
111
|
+
"parser": "@typescript-eslint/parser",
|
|
112
|
+
"plugins": ["@typescript-eslint"],
|
|
113
|
+
"rules": {
|
|
114
|
+
"@typescript-eslint/no-unused-vars": ["error", { "argsIgnorePattern": "^_" }],
|
|
115
|
+
"@typescript-eslint/explicit-function-return-type": "warn",
|
|
116
|
+
"@typescript-eslint/no-explicit-any": "warn"
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
### Formatting
|
|
122
|
+
|
|
123
|
+
- Use Prettier for code formatting
|
|
124
|
+
- Configuration in `.prettierrc.json`
|
|
125
|
+
- Integrate with ESLint for consistency
|
|
126
|
+
- Format before committing: `prettier --write "src/**/*.ts"`
|
|
127
|
+
|
|
128
|
+
Example Prettier config:
|
|
129
|
+
```json
|
|
130
|
+
{
|
|
131
|
+
"semi": true,
|
|
132
|
+
"trailingComma": "es5",
|
|
133
|
+
"singleQuote": true,
|
|
134
|
+
"printWidth": 100,
|
|
135
|
+
"tabWidth": 2
|
|
136
|
+
}
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
### Testing
|
|
140
|
+
|
|
141
|
+
- **Framework**: Vitest (recommended) or Jest
|
|
142
|
+
- **Location**: `/tests` directory or co-located `*.test.ts` files
|
|
143
|
+
- **Coverage**: Must meet project threshold (default 95%)
|
|
144
|
+
- **Watch Mode**: Use `vitest` or `vitest --watch` for development
|
|
145
|
+
- **CI Mode**: **CRITICAL** - Default `npm test` command MUST include `--run` flag
|
|
146
|
+
- This prevents Vitest from entering watch mode, which never terminates
|
|
147
|
+
- In `package.json`: `"test": "vitest --run"`
|
|
148
|
+
- In CI workflows: use `npm test` (do NOT add `--run` argument)
|
|
149
|
+
- For manual development, use `npm run test:watch`
|
|
150
|
+
|
|
151
|
+
Example test structure:
|
|
152
|
+
```typescript
|
|
153
|
+
import { describe, it, expect, beforeEach, afterEach } from 'vitest';
|
|
154
|
+
import { myFunction } from './my-module';
|
|
155
|
+
|
|
156
|
+
describe('myFunction', () => {
|
|
157
|
+
beforeEach(() => {
|
|
158
|
+
// Setup
|
|
159
|
+
});
|
|
160
|
+
|
|
161
|
+
afterEach(() => {
|
|
162
|
+
// Cleanup
|
|
163
|
+
});
|
|
164
|
+
|
|
165
|
+
it('should handle valid input', () => {
|
|
166
|
+
const result = myFunction('input');
|
|
167
|
+
expect(result).toBe('expected');
|
|
168
|
+
});
|
|
169
|
+
|
|
170
|
+
it('should throw on invalid input', () => {
|
|
171
|
+
expect(() => myFunction('')).toThrow('Invalid input');
|
|
172
|
+
});
|
|
173
|
+
});
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
## Package Management
|
|
177
|
+
|
|
178
|
+
**CRITICAL**: Use consistent package manager across team.
|
|
179
|
+
|
|
180
|
+
- **Default**: npm (most compatible, built-in)
|
|
181
|
+
- **Alternative**: pnpm (fast, disk-efficient) or yarn
|
|
182
|
+
- **Lockfile**: Always commit lockfile (`package-lock.json`, `pnpm-lock.yaml`, or `yarn.lock`)
|
|
183
|
+
- **Workspaces**: Use for monorepos
|
|
184
|
+
- **CI/CD**: Update GitHub Actions workflows to match your package manager
|
|
185
|
+
|
|
186
|
+
### Dependencies
|
|
187
|
+
|
|
188
|
+
1. **Check for latest versions**:
|
|
189
|
+
- Use Context7 MCP tool if available
|
|
190
|
+
- Check npm registry: `npm view <package> versions`
|
|
191
|
+
- Review changelog for breaking changes
|
|
192
|
+
|
|
193
|
+
2. **Dependency Guidelines**:
|
|
194
|
+
- Use exact versions for applications (`"1.2.3"`)
|
|
195
|
+
- Use semver for libraries (`"^1.2.3"`)
|
|
196
|
+
- Keep dependencies updated regularly
|
|
197
|
+
- Use `npm audit` or `pnpm audit` for security
|
|
198
|
+
- Don't use deprecated packages
|
|
199
|
+
- Don't add unnecessary dependencies
|
|
200
|
+
|
|
201
|
+
## Type Safety
|
|
202
|
+
|
|
203
|
+
- **No `any`**: Avoid `any` type - use `unknown` and type guards
|
|
204
|
+
- **Strict null checks**: Handle null/undefined explicitly
|
|
205
|
+
- **Type assertions**: Minimize use of `as` - prefer type guards
|
|
206
|
+
- **Generics**: Use for reusable type-safe code
|
|
207
|
+
|
|
208
|
+
Example type-safe code:
|
|
209
|
+
```typescript
|
|
210
|
+
// Good: Type guard
|
|
211
|
+
function isString(value: unknown): value is string {
|
|
212
|
+
return typeof value === 'string';
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
function process(input: unknown): string {
|
|
216
|
+
if (isString(input)) {
|
|
217
|
+
return input.toUpperCase();
|
|
218
|
+
}
|
|
219
|
+
throw new Error('Invalid input');
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
// Bad: Type assertion
|
|
223
|
+
function processUnsafe(input: unknown): string {
|
|
224
|
+
return (input as string).toUpperCase(); // Runtime error if not string
|
|
225
|
+
}
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
## Error Handling
|
|
229
|
+
|
|
230
|
+
- Create custom error classes
|
|
231
|
+
- Use type guards for error checking
|
|
232
|
+
- Document errors in JSDoc/TSDoc
|
|
233
|
+
- Never swallow errors silently
|
|
234
|
+
|
|
235
|
+
Example:
|
|
236
|
+
```typescript
|
|
237
|
+
export class ValidationError extends Error {
|
|
238
|
+
constructor(
|
|
239
|
+
message: string,
|
|
240
|
+
public readonly field: string
|
|
241
|
+
) {
|
|
242
|
+
super(message);
|
|
243
|
+
this.name = 'ValidationError';
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
export function validate(data: unknown): Data {
|
|
248
|
+
if (!isValidData(data)) {
|
|
249
|
+
throw new ValidationError('Invalid data structure', 'data');
|
|
250
|
+
}
|
|
251
|
+
return data;
|
|
252
|
+
}
|
|
253
|
+
```
|
|
254
|
+
|
|
255
|
+
## Project Structure
|
|
256
|
+
|
|
257
|
+
```
|
|
258
|
+
project/
|
|
259
|
+
├── package.json # Package manifest
|
|
260
|
+
├── tsconfig.json # TypeScript config
|
|
261
|
+
├── vitest.config.ts # Test config
|
|
262
|
+
├── README.md # Project overview
|
|
263
|
+
├── CHANGELOG.md # Version history
|
|
264
|
+
├── AGENTS.md # AI assistant rules
|
|
265
|
+
├── src/
|
|
266
|
+
│ ├── index.ts # Main entry point
|
|
267
|
+
│ ├── types.ts # Type definitions
|
|
268
|
+
│ └── ...
|
|
269
|
+
├── tests/ # Test files
|
|
270
|
+
├── dist/ # Compiled output (gitignored)
|
|
271
|
+
└── docs/ # Project documentation
|
|
272
|
+
```
|
|
273
|
+
|
|
274
|
+
## Module System
|
|
275
|
+
|
|
276
|
+
- Use ES modules (`import`/`export`)
|
|
277
|
+
- Set `"type": "module"` in `package.json`
|
|
278
|
+
- Use `.js` extensions in imports for Node.js compatibility
|
|
279
|
+
- Configure `moduleResolution: "node"` in tsconfig.json
|
|
280
|
+
|
|
281
|
+
Example:
|
|
282
|
+
```typescript
|
|
283
|
+
// Good: ES modules with .js extension
|
|
284
|
+
import { myFunction } from './my-module.js';
|
|
285
|
+
|
|
286
|
+
export { myFunction };
|
|
287
|
+
export default class MyClass {}
|
|
288
|
+
```
|
|
289
|
+
|
|
290
|
+
## CI/CD Requirements
|
|
291
|
+
|
|
292
|
+
**CRITICAL**: GitHub Actions `cache: 'npm'` requires `package-lock.json` to be committed.
|
|
293
|
+
|
|
294
|
+
- **Lockfile Requirement**: Remove `package-lock.json` from `.gitignore`
|
|
295
|
+
- **Cache Strategy**: Use `cache: 'npm'` in `setup-node` action
|
|
296
|
+
- **Install Command**: Use `npm ci` (not `npm install`) for reproducible builds
|
|
297
|
+
|
|
298
|
+
Must include GitHub Actions workflows for:
|
|
299
|
+
|
|
300
|
+
1. **Testing** (`typescript-test.yml`)
|
|
301
|
+
2. **Linting** (`typescript-lint.yml`)
|
|
302
|
+
3. **Build** (`typescript-build.yml`)
|