@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,252 +1,252 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: "Memcached"
|
|
3
|
-
description: "Use Memcached for simple, high-performance distributed caching with minimal overhead."
|
|
4
|
-
version: "1.0.0"
|
|
5
|
-
category: "services"
|
|
6
|
-
author: "Rulebook"
|
|
7
|
-
tags: ["services", "caching"]
|
|
8
|
-
dependencies: []
|
|
9
|
-
conflicts: []
|
|
10
|
-
---
|
|
11
|
-
<!-- MEMCACHED:START -->
|
|
12
|
-
# Memcached Cache Instructions
|
|
13
|
-
|
|
14
|
-
**CRITICAL**: Use Memcached for simple, high-performance distributed caching with minimal overhead.
|
|
15
|
-
|
|
16
|
-
## Core Features
|
|
17
|
-
|
|
18
|
-
### Connection
|
|
19
|
-
```typescript
|
|
20
|
-
// Using memcached (Node.js)
|
|
21
|
-
import Memcached from 'memcached'
|
|
22
|
-
|
|
23
|
-
const memcached = new Memcached(process.env.MEMCACHED_SERVERS || 'localhost:11211', {
|
|
24
|
-
maxKeySize: 250,
|
|
25
|
-
maxExpiration: 2592000, // 30 days
|
|
26
|
-
maxValue: 1048576, // 1MB
|
|
27
|
-
poolSize: 10,
|
|
28
|
-
reconnect: true,
|
|
29
|
-
timeout: 5000,
|
|
30
|
-
retries: 3,
|
|
31
|
-
retry: 1000,
|
|
32
|
-
remove: true,
|
|
33
|
-
idle: 5000,
|
|
34
|
-
})
|
|
35
|
-
```
|
|
36
|
-
|
|
37
|
-
### Basic Operations
|
|
38
|
-
```typescript
|
|
39
|
-
// Set
|
|
40
|
-
memcached.set('user:1', { name: 'John', email: 'john@example.com' }, 3600, (err) => {
|
|
41
|
-
// Expires in 1 hour
|
|
42
|
-
})
|
|
43
|
-
|
|
44
|
-
// Get
|
|
45
|
-
memcached.get('user:1', (err, data) => {
|
|
46
|
-
console.log(data)
|
|
47
|
-
})
|
|
48
|
-
|
|
49
|
-
// Delete
|
|
50
|
-
memcached.del('user:1', (err) => {
|
|
51
|
-
// Deleted
|
|
52
|
-
})
|
|
53
|
-
|
|
54
|
-
// Replace (only if key exists)
|
|
55
|
-
memcached.replace('user:1', newData, 3600, (err) => {
|
|
56
|
-
// Replaced
|
|
57
|
-
})
|
|
58
|
-
|
|
59
|
-
// Add (only if key doesn't exist)
|
|
60
|
-
memcached.add('user:1', data, 3600, (err) => {
|
|
61
|
-
// Added
|
|
62
|
-
})
|
|
63
|
-
```
|
|
64
|
-
|
|
65
|
-
### Advanced Operations
|
|
66
|
-
```typescript
|
|
67
|
-
// Multiple gets
|
|
68
|
-
memcached.getMulti(['user:1', 'user:2', 'user:3'], (err, data) => {
|
|
69
|
-
// Returns object with keys as properties
|
|
70
|
-
})
|
|
71
|
-
|
|
72
|
-
// Increment/Decrement
|
|
73
|
-
memcached.incr('counter', 1, (err, value) => {
|
|
74
|
-
// Incremented
|
|
75
|
-
})
|
|
76
|
-
|
|
77
|
-
memcached.decr('counter', 1, (err, value) => {
|
|
78
|
-
// Decremented
|
|
79
|
-
})
|
|
80
|
-
|
|
81
|
-
// Touch (update expiration)
|
|
82
|
-
memcached.touch('user:1', 7200, (err) => {
|
|
83
|
-
// Expiration updated to 2 hours
|
|
84
|
-
})
|
|
85
|
-
|
|
86
|
-
// Stats
|
|
87
|
-
memcached.stats((err, stats) => {
|
|
88
|
-
console.log(stats)
|
|
89
|
-
})
|
|
90
|
-
```
|
|
91
|
-
|
|
92
|
-
## Common Patterns
|
|
93
|
-
|
|
94
|
-
### Caching with Promises
|
|
95
|
-
```typescript
|
|
96
|
-
function getCached(key: string): Promise<any> {
|
|
97
|
-
return new Promise((resolve, reject) => {
|
|
98
|
-
memcached.get(key, (err, data) => {
|
|
99
|
-
if (err) reject(err)
|
|
100
|
-
else resolve(data)
|
|
101
|
-
})
|
|
102
|
-
})
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
function setCached(key: string, value: any, ttl: number): Promise<void> {
|
|
106
|
-
return new Promise((resolve, reject) => {
|
|
107
|
-
memcached.set(key, value, ttl, (err) => {
|
|
108
|
-
if (err) reject(err)
|
|
109
|
-
else resolve()
|
|
110
|
-
})
|
|
111
|
-
})
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
// Usage
|
|
115
|
-
async function getCachedUser(userId: string) {
|
|
116
|
-
const cached = await getCached(`user:${userId}`)
|
|
117
|
-
if (cached) {
|
|
118
|
-
return cached
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
const user = await fetchUserFromDatabase(userId)
|
|
122
|
-
await setCached(`user:${userId}`, user, 3600)
|
|
123
|
-
return user
|
|
124
|
-
}
|
|
125
|
-
```
|
|
126
|
-
|
|
127
|
-
### Cache-Aside Pattern
|
|
128
|
-
```typescript
|
|
129
|
-
async function getWithCache(key: string, fetchFn: () => Promise<any>, ttl: number) {
|
|
130
|
-
try {
|
|
131
|
-
const cached = await getCached(key)
|
|
132
|
-
if (cached) {
|
|
133
|
-
return cached
|
|
134
|
-
}
|
|
135
|
-
} catch (err) {
|
|
136
|
-
// Cache miss or error, continue to fetch
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
const data = await fetchFn()
|
|
140
|
-
try {
|
|
141
|
-
await setCached(key, data, ttl)
|
|
142
|
-
} catch (err) {
|
|
143
|
-
// Cache set failed, but we have the data
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
return data
|
|
147
|
-
}
|
|
148
|
-
```
|
|
149
|
-
|
|
150
|
-
### Rate Limiting
|
|
151
|
-
```typescript
|
|
152
|
-
async function checkRateLimit(identifier: string, limit: number, window: number): Promise<boolean> {
|
|
153
|
-
const key = `ratelimit:${identifier}`
|
|
154
|
-
|
|
155
|
-
return new Promise((resolve) => {
|
|
156
|
-
memcached.incr(key, 1, (err, value) => {
|
|
157
|
-
if (err || value === false) {
|
|
158
|
-
// Key doesn't exist, create it
|
|
159
|
-
memcached.set(key, 1, window, () => {
|
|
160
|
-
resolve(true)
|
|
161
|
-
})
|
|
162
|
-
} else if (value > limit) {
|
|
163
|
-
resolve(false)
|
|
164
|
-
} else {
|
|
165
|
-
if (value === 1) {
|
|
166
|
-
// First increment, set expiration
|
|
167
|
-
memcached.touch(key, window, () => {})
|
|
168
|
-
}
|
|
169
|
-
resolve(true)
|
|
170
|
-
}
|
|
171
|
-
})
|
|
172
|
-
})
|
|
173
|
-
}
|
|
174
|
-
```
|
|
175
|
-
|
|
176
|
-
## Best Practices
|
|
177
|
-
|
|
178
|
-
✅ **DO:**
|
|
179
|
-
- Use connection pooling
|
|
180
|
-
- Set appropriate TTL for cached data
|
|
181
|
-
- Handle cache misses gracefully
|
|
182
|
-
- Use consistent key naming conventions
|
|
183
|
-
- Monitor cache hit rates
|
|
184
|
-
- Use multiple servers for redundancy
|
|
185
|
-
- Compress large values before storing
|
|
186
|
-
- Implement cache warming strategies
|
|
187
|
-
- Use appropriate data serialization
|
|
188
|
-
- Monitor memory usage
|
|
189
|
-
|
|
190
|
-
❌ **DON'T:**
|
|
191
|
-
- Store large values (> 1MB, use external storage)
|
|
192
|
-
- Use Memcached as primary database
|
|
193
|
-
- Store sensitive data without encryption
|
|
194
|
-
- Skip error handling
|
|
195
|
-
- Ignore connection failures
|
|
196
|
-
- Hardcode server addresses
|
|
197
|
-
- Use blocking operations
|
|
198
|
-
- Store complex nested objects (flatten when possible)
|
|
199
|
-
- Ignore eviction policies
|
|
200
|
-
- Skip monitoring
|
|
201
|
-
|
|
202
|
-
## Configuration
|
|
203
|
-
|
|
204
|
-
### Environment Variables
|
|
205
|
-
```bash
|
|
206
|
-
MEMCACHED_SERVERS=localhost:11211
|
|
207
|
-
MEMCACHED_SERVERS=server1:11211,server2:11211,server3:11211
|
|
208
|
-
```
|
|
209
|
-
|
|
210
|
-
### Docker Compose
|
|
211
|
-
```yaml
|
|
212
|
-
services:
|
|
213
|
-
memcached:
|
|
214
|
-
image: memcached:1.6-alpine
|
|
215
|
-
ports:
|
|
216
|
-
- "11211:11211"
|
|
217
|
-
command: ["-m", "64", "-I", "1m"] # 64MB memory, 1MB max item size
|
|
218
|
-
healthcheck:
|
|
219
|
-
test: ["CMD", "nc", "-z", "localhost", "11211"]
|
|
220
|
-
interval: 10s
|
|
221
|
-
timeout: 5s
|
|
222
|
-
retries: 5
|
|
223
|
-
```
|
|
224
|
-
|
|
225
|
-
## Integration with Development
|
|
226
|
-
|
|
227
|
-
### Testing
|
|
228
|
-
```typescript
|
|
229
|
-
// Use test Memcached instance
|
|
230
|
-
const testMemcached = new Memcached('localhost:11212') // Different port
|
|
231
|
-
|
|
232
|
-
// Clean up after tests
|
|
233
|
-
afterEach((done) => {
|
|
234
|
-
testMemcached.flush((err) => {
|
|
235
|
-
done()
|
|
236
|
-
})
|
|
237
|
-
})
|
|
238
|
-
```
|
|
239
|
-
|
|
240
|
-
### Health Checks
|
|
241
|
-
```typescript
|
|
242
|
-
function checkMemcachedHealth(): Promise<boolean> {
|
|
243
|
-
return new Promise((resolve) => {
|
|
244
|
-
memcached.stats((err) => {
|
|
245
|
-
resolve(!err)
|
|
246
|
-
})
|
|
247
|
-
})
|
|
248
|
-
}
|
|
249
|
-
```
|
|
250
|
-
|
|
251
|
-
<!-- MEMCACHED:END -->
|
|
252
|
-
|
|
1
|
+
---
|
|
2
|
+
name: "Memcached"
|
|
3
|
+
description: "Use Memcached for simple, high-performance distributed caching with minimal overhead."
|
|
4
|
+
version: "1.0.0"
|
|
5
|
+
category: "services"
|
|
6
|
+
author: "Rulebook"
|
|
7
|
+
tags: ["services", "caching"]
|
|
8
|
+
dependencies: []
|
|
9
|
+
conflicts: []
|
|
10
|
+
---
|
|
11
|
+
<!-- MEMCACHED:START -->
|
|
12
|
+
# Memcached Cache Instructions
|
|
13
|
+
|
|
14
|
+
**CRITICAL**: Use Memcached for simple, high-performance distributed caching with minimal overhead.
|
|
15
|
+
|
|
16
|
+
## Core Features
|
|
17
|
+
|
|
18
|
+
### Connection
|
|
19
|
+
```typescript
|
|
20
|
+
// Using memcached (Node.js)
|
|
21
|
+
import Memcached from 'memcached'
|
|
22
|
+
|
|
23
|
+
const memcached = new Memcached(process.env.MEMCACHED_SERVERS || 'localhost:11211', {
|
|
24
|
+
maxKeySize: 250,
|
|
25
|
+
maxExpiration: 2592000, // 30 days
|
|
26
|
+
maxValue: 1048576, // 1MB
|
|
27
|
+
poolSize: 10,
|
|
28
|
+
reconnect: true,
|
|
29
|
+
timeout: 5000,
|
|
30
|
+
retries: 3,
|
|
31
|
+
retry: 1000,
|
|
32
|
+
remove: true,
|
|
33
|
+
idle: 5000,
|
|
34
|
+
})
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
### Basic Operations
|
|
38
|
+
```typescript
|
|
39
|
+
// Set
|
|
40
|
+
memcached.set('user:1', { name: 'John', email: 'john@example.com' }, 3600, (err) => {
|
|
41
|
+
// Expires in 1 hour
|
|
42
|
+
})
|
|
43
|
+
|
|
44
|
+
// Get
|
|
45
|
+
memcached.get('user:1', (err, data) => {
|
|
46
|
+
console.log(data)
|
|
47
|
+
})
|
|
48
|
+
|
|
49
|
+
// Delete
|
|
50
|
+
memcached.del('user:1', (err) => {
|
|
51
|
+
// Deleted
|
|
52
|
+
})
|
|
53
|
+
|
|
54
|
+
// Replace (only if key exists)
|
|
55
|
+
memcached.replace('user:1', newData, 3600, (err) => {
|
|
56
|
+
// Replaced
|
|
57
|
+
})
|
|
58
|
+
|
|
59
|
+
// Add (only if key doesn't exist)
|
|
60
|
+
memcached.add('user:1', data, 3600, (err) => {
|
|
61
|
+
// Added
|
|
62
|
+
})
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
### Advanced Operations
|
|
66
|
+
```typescript
|
|
67
|
+
// Multiple gets
|
|
68
|
+
memcached.getMulti(['user:1', 'user:2', 'user:3'], (err, data) => {
|
|
69
|
+
// Returns object with keys as properties
|
|
70
|
+
})
|
|
71
|
+
|
|
72
|
+
// Increment/Decrement
|
|
73
|
+
memcached.incr('counter', 1, (err, value) => {
|
|
74
|
+
// Incremented
|
|
75
|
+
})
|
|
76
|
+
|
|
77
|
+
memcached.decr('counter', 1, (err, value) => {
|
|
78
|
+
// Decremented
|
|
79
|
+
})
|
|
80
|
+
|
|
81
|
+
// Touch (update expiration)
|
|
82
|
+
memcached.touch('user:1', 7200, (err) => {
|
|
83
|
+
// Expiration updated to 2 hours
|
|
84
|
+
})
|
|
85
|
+
|
|
86
|
+
// Stats
|
|
87
|
+
memcached.stats((err, stats) => {
|
|
88
|
+
console.log(stats)
|
|
89
|
+
})
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
## Common Patterns
|
|
93
|
+
|
|
94
|
+
### Caching with Promises
|
|
95
|
+
```typescript
|
|
96
|
+
function getCached(key: string): Promise<any> {
|
|
97
|
+
return new Promise((resolve, reject) => {
|
|
98
|
+
memcached.get(key, (err, data) => {
|
|
99
|
+
if (err) reject(err)
|
|
100
|
+
else resolve(data)
|
|
101
|
+
})
|
|
102
|
+
})
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
function setCached(key: string, value: any, ttl: number): Promise<void> {
|
|
106
|
+
return new Promise((resolve, reject) => {
|
|
107
|
+
memcached.set(key, value, ttl, (err) => {
|
|
108
|
+
if (err) reject(err)
|
|
109
|
+
else resolve()
|
|
110
|
+
})
|
|
111
|
+
})
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
// Usage
|
|
115
|
+
async function getCachedUser(userId: string) {
|
|
116
|
+
const cached = await getCached(`user:${userId}`)
|
|
117
|
+
if (cached) {
|
|
118
|
+
return cached
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
const user = await fetchUserFromDatabase(userId)
|
|
122
|
+
await setCached(`user:${userId}`, user, 3600)
|
|
123
|
+
return user
|
|
124
|
+
}
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
### Cache-Aside Pattern
|
|
128
|
+
```typescript
|
|
129
|
+
async function getWithCache(key: string, fetchFn: () => Promise<any>, ttl: number) {
|
|
130
|
+
try {
|
|
131
|
+
const cached = await getCached(key)
|
|
132
|
+
if (cached) {
|
|
133
|
+
return cached
|
|
134
|
+
}
|
|
135
|
+
} catch (err) {
|
|
136
|
+
// Cache miss or error, continue to fetch
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
const data = await fetchFn()
|
|
140
|
+
try {
|
|
141
|
+
await setCached(key, data, ttl)
|
|
142
|
+
} catch (err) {
|
|
143
|
+
// Cache set failed, but we have the data
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
return data
|
|
147
|
+
}
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
### Rate Limiting
|
|
151
|
+
```typescript
|
|
152
|
+
async function checkRateLimit(identifier: string, limit: number, window: number): Promise<boolean> {
|
|
153
|
+
const key = `ratelimit:${identifier}`
|
|
154
|
+
|
|
155
|
+
return new Promise((resolve) => {
|
|
156
|
+
memcached.incr(key, 1, (err, value) => {
|
|
157
|
+
if (err || value === false) {
|
|
158
|
+
// Key doesn't exist, create it
|
|
159
|
+
memcached.set(key, 1, window, () => {
|
|
160
|
+
resolve(true)
|
|
161
|
+
})
|
|
162
|
+
} else if (value > limit) {
|
|
163
|
+
resolve(false)
|
|
164
|
+
} else {
|
|
165
|
+
if (value === 1) {
|
|
166
|
+
// First increment, set expiration
|
|
167
|
+
memcached.touch(key, window, () => {})
|
|
168
|
+
}
|
|
169
|
+
resolve(true)
|
|
170
|
+
}
|
|
171
|
+
})
|
|
172
|
+
})
|
|
173
|
+
}
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
## Best Practices
|
|
177
|
+
|
|
178
|
+
✅ **DO:**
|
|
179
|
+
- Use connection pooling
|
|
180
|
+
- Set appropriate TTL for cached data
|
|
181
|
+
- Handle cache misses gracefully
|
|
182
|
+
- Use consistent key naming conventions
|
|
183
|
+
- Monitor cache hit rates
|
|
184
|
+
- Use multiple servers for redundancy
|
|
185
|
+
- Compress large values before storing
|
|
186
|
+
- Implement cache warming strategies
|
|
187
|
+
- Use appropriate data serialization
|
|
188
|
+
- Monitor memory usage
|
|
189
|
+
|
|
190
|
+
❌ **DON'T:**
|
|
191
|
+
- Store large values (> 1MB, use external storage)
|
|
192
|
+
- Use Memcached as primary database
|
|
193
|
+
- Store sensitive data without encryption
|
|
194
|
+
- Skip error handling
|
|
195
|
+
- Ignore connection failures
|
|
196
|
+
- Hardcode server addresses
|
|
197
|
+
- Use blocking operations
|
|
198
|
+
- Store complex nested objects (flatten when possible)
|
|
199
|
+
- Ignore eviction policies
|
|
200
|
+
- Skip monitoring
|
|
201
|
+
|
|
202
|
+
## Configuration
|
|
203
|
+
|
|
204
|
+
### Environment Variables
|
|
205
|
+
```bash
|
|
206
|
+
MEMCACHED_SERVERS=localhost:11211
|
|
207
|
+
MEMCACHED_SERVERS=server1:11211,server2:11211,server3:11211
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
### Docker Compose
|
|
211
|
+
```yaml
|
|
212
|
+
services:
|
|
213
|
+
memcached:
|
|
214
|
+
image: memcached:1.6-alpine
|
|
215
|
+
ports:
|
|
216
|
+
- "11211:11211"
|
|
217
|
+
command: ["-m", "64", "-I", "1m"] # 64MB memory, 1MB max item size
|
|
218
|
+
healthcheck:
|
|
219
|
+
test: ["CMD", "nc", "-z", "localhost", "11211"]
|
|
220
|
+
interval: 10s
|
|
221
|
+
timeout: 5s
|
|
222
|
+
retries: 5
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
## Integration with Development
|
|
226
|
+
|
|
227
|
+
### Testing
|
|
228
|
+
```typescript
|
|
229
|
+
// Use test Memcached instance
|
|
230
|
+
const testMemcached = new Memcached('localhost:11212') // Different port
|
|
231
|
+
|
|
232
|
+
// Clean up after tests
|
|
233
|
+
afterEach((done) => {
|
|
234
|
+
testMemcached.flush((err) => {
|
|
235
|
+
done()
|
|
236
|
+
})
|
|
237
|
+
})
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
### Health Checks
|
|
241
|
+
```typescript
|
|
242
|
+
function checkMemcachedHealth(): Promise<boolean> {
|
|
243
|
+
return new Promise((resolve) => {
|
|
244
|
+
memcached.stats((err) => {
|
|
245
|
+
resolve(!err)
|
|
246
|
+
})
|
|
247
|
+
})
|
|
248
|
+
}
|
|
249
|
+
```
|
|
250
|
+
|
|
251
|
+
<!-- MEMCACHED:END -->
|
|
252
|
+
|