@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,187 +1,187 @@
|
|
|
1
|
-
#!/usr/bin/env bash
|
|
2
|
-
# Claude Code UserPromptSubmit hook for rulebook-terse (v5.4.0).
|
|
3
|
-
#
|
|
4
|
-
# Parses slash commands + natural-language activation/deactivation
|
|
5
|
-
# phrases in the user prompt, updates the project-local flag file,
|
|
6
|
-
# and emits a short (~45 token) attention anchor as hookSpecificOutput
|
|
7
|
-
# when a persistent mode is active — keeps the compression register in
|
|
8
|
-
# the model's attention on every user message.
|
|
9
|
-
#
|
|
10
|
-
# Independent sub-skill modes (commit / review) do NOT get the anchor:
|
|
11
|
-
# their own SKILL.md files drive behavior for the single turn they're
|
|
12
|
-
# invoked.
|
|
13
|
-
#
|
|
14
|
-
# Silent-fails on every filesystem error.
|
|
15
|
-
|
|
16
|
-
set -u
|
|
17
|
-
|
|
18
|
-
input="$(cat || true)"
|
|
19
|
-
prompt=""
|
|
20
|
-
cwd=""
|
|
21
|
-
if [ -n "$input" ]; then
|
|
22
|
-
# Parse JSON via node (always available in Claude Code hook env).
|
|
23
|
-
# Emits two lines: prompt on line 1, cwd on line 2.
|
|
24
|
-
parsed="$(printf '%s' "$input" | node -e "
|
|
25
|
-
try {
|
|
26
|
-
const data = JSON.parse(require('fs').readFileSync(0, 'utf8'));
|
|
27
|
-
process.stdout.write((data.prompt || '') + '\\n' + (data.cwd || ''));
|
|
28
|
-
} catch { process.stdout.write('\\n'); }
|
|
29
|
-
" 2>/dev/null || printf '\n')"
|
|
30
|
-
prompt="$(printf '%s' "$parsed" | head -n 1)"
|
|
31
|
-
cwd="$(printf '%s' "$parsed" | tail -n +2)"
|
|
32
|
-
fi
|
|
33
|
-
|
|
34
|
-
PROJECT_ROOT="${cwd:-${CLAUDE_PROJECT_DIR:-$(pwd)}}"
|
|
35
|
-
FLAG_PATH="${PROJECT_ROOT}/.rulebook/.terse-mode"
|
|
36
|
-
CONFIG_DIR="${XDG_CONFIG_HOME:-$HOME/.config}/rulebook"
|
|
37
|
-
USER_CONFIG="${CONFIG_DIR}/config.json"
|
|
38
|
-
PROJECT_CONFIG="${PROJECT_ROOT}/.rulebook/rulebook.json"
|
|
39
|
-
|
|
40
|
-
VALID_MODES_RE='^(off|brief|terse|ultra|commit|review)$'
|
|
41
|
-
MAX_FLAG_BYTES=32
|
|
42
|
-
|
|
43
|
-
resolve_default_mode() {
|
|
44
|
-
if [ -n "${RULEBOOK_TERSE_MODE:-}" ]; then
|
|
45
|
-
local m="$(printf '%s' "$RULEBOOK_TERSE_MODE" | tr '[:upper:]' '[:lower:]' | tr -d '[:space:]')"
|
|
46
|
-
if [[ "$m" =~ $VALID_MODES_RE ]]; then printf '%s' "$m"; return; fi
|
|
47
|
-
fi
|
|
48
|
-
if [ -f "$PROJECT_CONFIG" ]; then
|
|
49
|
-
local m
|
|
50
|
-
m="$(node -e "
|
|
51
|
-
try {
|
|
52
|
-
const cfg = JSON.parse(require('fs').readFileSync(process.argv[1], 'utf8'));
|
|
53
|
-
if (cfg.terse && cfg.terse.defaultMode) process.stdout.write(String(cfg.terse.defaultMode));
|
|
54
|
-
} catch { }
|
|
55
|
-
" "$PROJECT_CONFIG" 2>/dev/null | tr '[:upper:]' '[:lower:]' | tr -d '[:space:]' || true)"
|
|
56
|
-
if [ -n "$m" ] && [[ "$m" =~ $VALID_MODES_RE ]]; then printf '%s' "$m"; return; fi
|
|
57
|
-
fi
|
|
58
|
-
if [ -f "$USER_CONFIG" ]; then
|
|
59
|
-
local m
|
|
60
|
-
m="$(node -e "
|
|
61
|
-
try {
|
|
62
|
-
const cfg = JSON.parse(require('fs').readFileSync(process.argv[1], 'utf8'));
|
|
63
|
-
if (cfg.terse && cfg.terse.defaultMode) process.stdout.write(String(cfg.terse.defaultMode));
|
|
64
|
-
} catch { }
|
|
65
|
-
" "$USER_CONFIG" 2>/dev/null | tr '[:upper:]' '[:lower:]' | tr -d '[:space:]' || true)"
|
|
66
|
-
if [ -n "$m" ] && [[ "$m" =~ $VALID_MODES_RE ]]; then printf '%s' "$m"; return; fi
|
|
67
|
-
fi
|
|
68
|
-
printf 'terse'
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
safe_write_flag() {
|
|
72
|
-
local content="$1"
|
|
73
|
-
local dir
|
|
74
|
-
dir="$(dirname "$FLAG_PATH")"
|
|
75
|
-
mkdir -p "$dir" 2>/dev/null || return 0
|
|
76
|
-
[ -L "$dir" ] && return 0
|
|
77
|
-
[ -L "$FLAG_PATH" ] && return 0
|
|
78
|
-
|
|
79
|
-
local tmp
|
|
80
|
-
tmp="$(mktemp "$dir/.terse-mode.XXXXXX" 2>/dev/null)" || return 0
|
|
81
|
-
{
|
|
82
|
-
umask 077
|
|
83
|
-
printf '%s' "$content" > "$tmp" 2>/dev/null || { rm -f "$tmp"; return 0; }
|
|
84
|
-
}
|
|
85
|
-
chmod 600 "$tmp" 2>/dev/null || true
|
|
86
|
-
mv -f "$tmp" "$FLAG_PATH" 2>/dev/null || rm -f "$tmp"
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
read_flag() {
|
|
90
|
-
# Symlink-safe, size-capped, whitelist-validated read.
|
|
91
|
-
[ ! -f "$FLAG_PATH" ] && return 1
|
|
92
|
-
[ -L "$FLAG_PATH" ] && return 1
|
|
93
|
-
local size
|
|
94
|
-
size="$(wc -c < "$FLAG_PATH" 2>/dev/null || echo "$MAX_FLAG_BYTES")"
|
|
95
|
-
[ "$size" -gt "$MAX_FLAG_BYTES" ] && return 1
|
|
96
|
-
|
|
97
|
-
local raw
|
|
98
|
-
raw="$(head -c "$MAX_FLAG_BYTES" "$FLAG_PATH" 2>/dev/null | tr '[:upper:]' '[:lower:]' | tr -d '[:space:]')"
|
|
99
|
-
if [[ "$raw" =~ $VALID_MODES_RE ]]; then
|
|
100
|
-
printf '%s' "$raw"
|
|
101
|
-
return 0
|
|
102
|
-
fi
|
|
103
|
-
return 1
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
default_mode="$(resolve_default_mode)"
|
|
107
|
-
lower_prompt="$(printf '%s' "$prompt" | tr '[:upper:]' '[:lower:]')"
|
|
108
|
-
|
|
109
|
-
# Parse intent. Order matters: deactivation wins over accidental
|
|
110
|
-
# activation, slash commands win over natural-language patterns.
|
|
111
|
-
new_mode=""
|
|
112
|
-
deactivate=0
|
|
113
|
-
|
|
114
|
-
# Slash commands
|
|
115
|
-
if [[ "$lower_prompt" == /rulebook-terse-commit* ]]; then
|
|
116
|
-
new_mode="commit"
|
|
117
|
-
elif [[ "$lower_prompt" == /rulebook-terse-review* ]]; then
|
|
118
|
-
new_mode="review"
|
|
119
|
-
elif [[ "$lower_prompt" == /rulebook-terse ]]; then
|
|
120
|
-
new_mode="$default_mode"
|
|
121
|
-
elif [[ "$lower_prompt" == /rulebook-terse\ * ]]; then
|
|
122
|
-
arg="$(printf '%s' "$lower_prompt" | awk '{print $2}')"
|
|
123
|
-
case "$arg" in
|
|
124
|
-
off) deactivate=1 ;;
|
|
125
|
-
brief|terse|ultra|commit|review) new_mode="$arg" ;;
|
|
126
|
-
*) : ;; # unknown subcommand → leave state unchanged
|
|
127
|
-
esac
|
|
128
|
-
fi
|
|
129
|
-
|
|
130
|
-
# Natural-language deactivation — checked first so "stop terse" wins.
|
|
131
|
-
if [ -z "$new_mode" ] && [ "$deactivate" -eq 0 ]; then
|
|
132
|
-
if echo "$prompt" | grep -qiE '\b(stop|disable|turn off|deactivate)\b.*\brulebook[- ]?terse\b' \
|
|
133
|
-
|| echo "$prompt" | grep -qiE '\brulebook[- ]?terse\b.*\b(stop|disable|turn off|deactivate)\b' \
|
|
134
|
-
|| echo "$prompt" | grep -qiE '\b(stop|disable) terse\b' \
|
|
135
|
-
|| echo "$prompt" | grep -qiE '\bnormal mode\b'; then
|
|
136
|
-
deactivate=1
|
|
137
|
-
fi
|
|
138
|
-
fi
|
|
139
|
-
|
|
140
|
-
# Natural-language activation
|
|
141
|
-
if [ -z "$new_mode" ] && [ "$deactivate" -eq 0 ]; then
|
|
142
|
-
if echo "$prompt" | grep -qiE '\b(activate|enable|turn on|start)\b.*\brulebook[- ]?terse\b' \
|
|
143
|
-
|| echo "$prompt" | grep -qiE '\brulebook[- ]?terse\b.*\b(mode|activate|enable|turn on|start)\b' \
|
|
144
|
-
|| echo "$prompt" | grep -qiE '\bbe terse\b' \
|
|
145
|
-
|| echo "$prompt" | grep -qiE '\bterse mode\b' \
|
|
146
|
-
|| echo "$prompt" | grep -qiE '\bless tokens?\b'; then
|
|
147
|
-
new_mode="$default_mode"
|
|
148
|
-
fi
|
|
149
|
-
fi
|
|
150
|
-
|
|
151
|
-
# Apply intent
|
|
152
|
-
if [ "$deactivate" -eq 1 ]; then
|
|
153
|
-
rm -f "$FLAG_PATH" 2>/dev/null || true
|
|
154
|
-
elif [ -n "$new_mode" ]; then
|
|
155
|
-
if [ "$new_mode" = "off" ]; then
|
|
156
|
-
rm -f "$FLAG_PATH" 2>/dev/null || true
|
|
157
|
-
else
|
|
158
|
-
safe_write_flag "$new_mode"
|
|
159
|
-
fi
|
|
160
|
-
fi
|
|
161
|
-
|
|
162
|
-
# Emit attention anchor for persistent modes only.
|
|
163
|
-
active_mode="$(read_flag || true)"
|
|
164
|
-
case "$active_mode" in
|
|
165
|
-
brief|terse|ultra)
|
|
166
|
-
if [ "$active_mode" = "brief" ]; then
|
|
167
|
-
keep_clause="Keep articles and full sentences."
|
|
168
|
-
else
|
|
169
|
-
keep_clause="Fragments OK."
|
|
170
|
-
fi
|
|
171
|
-
text="RULEBOOK-TERSE ACTIVE (${active_mode}). Drop filler/hedging/pleasantries. ${keep_clause} Code/tests/commits/security: write full. Quality-gate failures + destructive ops: write full."
|
|
172
|
-
# Emit hookSpecificOutput JSON via node — universal across platforms.
|
|
173
|
-
node -e "
|
|
174
|
-
const text = process.argv[1];
|
|
175
|
-
process.stdout.write(JSON.stringify({
|
|
176
|
-
hookSpecificOutput: {
|
|
177
|
-
hookEventName: 'UserPromptSubmit',
|
|
178
|
-
additionalContext: text
|
|
179
|
-
}
|
|
180
|
-
}));
|
|
181
|
-
" "$text" 2>/dev/null || true
|
|
182
|
-
;;
|
|
183
|
-
*)
|
|
184
|
-
# No active persistent mode, or commit/review sub-skill — no anchor.
|
|
185
|
-
:
|
|
186
|
-
;;
|
|
187
|
-
esac
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# Claude Code UserPromptSubmit hook for rulebook-terse (v5.4.0).
|
|
3
|
+
#
|
|
4
|
+
# Parses slash commands + natural-language activation/deactivation
|
|
5
|
+
# phrases in the user prompt, updates the project-local flag file,
|
|
6
|
+
# and emits a short (~45 token) attention anchor as hookSpecificOutput
|
|
7
|
+
# when a persistent mode is active — keeps the compression register in
|
|
8
|
+
# the model's attention on every user message.
|
|
9
|
+
#
|
|
10
|
+
# Independent sub-skill modes (commit / review) do NOT get the anchor:
|
|
11
|
+
# their own SKILL.md files drive behavior for the single turn they're
|
|
12
|
+
# invoked.
|
|
13
|
+
#
|
|
14
|
+
# Silent-fails on every filesystem error.
|
|
15
|
+
|
|
16
|
+
set -u
|
|
17
|
+
|
|
18
|
+
input="$(cat || true)"
|
|
19
|
+
prompt=""
|
|
20
|
+
cwd=""
|
|
21
|
+
if [ -n "$input" ]; then
|
|
22
|
+
# Parse JSON via node (always available in Claude Code hook env).
|
|
23
|
+
# Emits two lines: prompt on line 1, cwd on line 2.
|
|
24
|
+
parsed="$(printf '%s' "$input" | node -e "
|
|
25
|
+
try {
|
|
26
|
+
const data = JSON.parse(require('fs').readFileSync(0, 'utf8'));
|
|
27
|
+
process.stdout.write((data.prompt || '') + '\\n' + (data.cwd || ''));
|
|
28
|
+
} catch { process.stdout.write('\\n'); }
|
|
29
|
+
" 2>/dev/null || printf '\n')"
|
|
30
|
+
prompt="$(printf '%s' "$parsed" | head -n 1)"
|
|
31
|
+
cwd="$(printf '%s' "$parsed" | tail -n +2)"
|
|
32
|
+
fi
|
|
33
|
+
|
|
34
|
+
PROJECT_ROOT="${cwd:-${CLAUDE_PROJECT_DIR:-$(pwd)}}"
|
|
35
|
+
FLAG_PATH="${PROJECT_ROOT}/.rulebook/.terse-mode"
|
|
36
|
+
CONFIG_DIR="${XDG_CONFIG_HOME:-$HOME/.config}/rulebook"
|
|
37
|
+
USER_CONFIG="${CONFIG_DIR}/config.json"
|
|
38
|
+
PROJECT_CONFIG="${PROJECT_ROOT}/.rulebook/rulebook.json"
|
|
39
|
+
|
|
40
|
+
VALID_MODES_RE='^(off|brief|terse|ultra|commit|review)$'
|
|
41
|
+
MAX_FLAG_BYTES=32
|
|
42
|
+
|
|
43
|
+
resolve_default_mode() {
|
|
44
|
+
if [ -n "${RULEBOOK_TERSE_MODE:-}" ]; then
|
|
45
|
+
local m="$(printf '%s' "$RULEBOOK_TERSE_MODE" | tr '[:upper:]' '[:lower:]' | tr -d '[:space:]')"
|
|
46
|
+
if [[ "$m" =~ $VALID_MODES_RE ]]; then printf '%s' "$m"; return; fi
|
|
47
|
+
fi
|
|
48
|
+
if [ -f "$PROJECT_CONFIG" ]; then
|
|
49
|
+
local m
|
|
50
|
+
m="$(node -e "
|
|
51
|
+
try {
|
|
52
|
+
const cfg = JSON.parse(require('fs').readFileSync(process.argv[1], 'utf8'));
|
|
53
|
+
if (cfg.terse && cfg.terse.defaultMode) process.stdout.write(String(cfg.terse.defaultMode));
|
|
54
|
+
} catch { }
|
|
55
|
+
" "$PROJECT_CONFIG" 2>/dev/null | tr '[:upper:]' '[:lower:]' | tr -d '[:space:]' || true)"
|
|
56
|
+
if [ -n "$m" ] && [[ "$m" =~ $VALID_MODES_RE ]]; then printf '%s' "$m"; return; fi
|
|
57
|
+
fi
|
|
58
|
+
if [ -f "$USER_CONFIG" ]; then
|
|
59
|
+
local m
|
|
60
|
+
m="$(node -e "
|
|
61
|
+
try {
|
|
62
|
+
const cfg = JSON.parse(require('fs').readFileSync(process.argv[1], 'utf8'));
|
|
63
|
+
if (cfg.terse && cfg.terse.defaultMode) process.stdout.write(String(cfg.terse.defaultMode));
|
|
64
|
+
} catch { }
|
|
65
|
+
" "$USER_CONFIG" 2>/dev/null | tr '[:upper:]' '[:lower:]' | tr -d '[:space:]' || true)"
|
|
66
|
+
if [ -n "$m" ] && [[ "$m" =~ $VALID_MODES_RE ]]; then printf '%s' "$m"; return; fi
|
|
67
|
+
fi
|
|
68
|
+
printf 'terse'
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
safe_write_flag() {
|
|
72
|
+
local content="$1"
|
|
73
|
+
local dir
|
|
74
|
+
dir="$(dirname "$FLAG_PATH")"
|
|
75
|
+
mkdir -p "$dir" 2>/dev/null || return 0
|
|
76
|
+
[ -L "$dir" ] && return 0
|
|
77
|
+
[ -L "$FLAG_PATH" ] && return 0
|
|
78
|
+
|
|
79
|
+
local tmp
|
|
80
|
+
tmp="$(mktemp "$dir/.terse-mode.XXXXXX" 2>/dev/null)" || return 0
|
|
81
|
+
{
|
|
82
|
+
umask 077
|
|
83
|
+
printf '%s' "$content" > "$tmp" 2>/dev/null || { rm -f "$tmp"; return 0; }
|
|
84
|
+
}
|
|
85
|
+
chmod 600 "$tmp" 2>/dev/null || true
|
|
86
|
+
mv -f "$tmp" "$FLAG_PATH" 2>/dev/null || rm -f "$tmp"
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
read_flag() {
|
|
90
|
+
# Symlink-safe, size-capped, whitelist-validated read.
|
|
91
|
+
[ ! -f "$FLAG_PATH" ] && return 1
|
|
92
|
+
[ -L "$FLAG_PATH" ] && return 1
|
|
93
|
+
local size
|
|
94
|
+
size="$(wc -c < "$FLAG_PATH" 2>/dev/null || echo "$MAX_FLAG_BYTES")"
|
|
95
|
+
[ "$size" -gt "$MAX_FLAG_BYTES" ] && return 1
|
|
96
|
+
|
|
97
|
+
local raw
|
|
98
|
+
raw="$(head -c "$MAX_FLAG_BYTES" "$FLAG_PATH" 2>/dev/null | tr '[:upper:]' '[:lower:]' | tr -d '[:space:]')"
|
|
99
|
+
if [[ "$raw" =~ $VALID_MODES_RE ]]; then
|
|
100
|
+
printf '%s' "$raw"
|
|
101
|
+
return 0
|
|
102
|
+
fi
|
|
103
|
+
return 1
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
default_mode="$(resolve_default_mode)"
|
|
107
|
+
lower_prompt="$(printf '%s' "$prompt" | tr '[:upper:]' '[:lower:]')"
|
|
108
|
+
|
|
109
|
+
# Parse intent. Order matters: deactivation wins over accidental
|
|
110
|
+
# activation, slash commands win over natural-language patterns.
|
|
111
|
+
new_mode=""
|
|
112
|
+
deactivate=0
|
|
113
|
+
|
|
114
|
+
# Slash commands
|
|
115
|
+
if [[ "$lower_prompt" == /rulebook-terse-commit* ]]; then
|
|
116
|
+
new_mode="commit"
|
|
117
|
+
elif [[ "$lower_prompt" == /rulebook-terse-review* ]]; then
|
|
118
|
+
new_mode="review"
|
|
119
|
+
elif [[ "$lower_prompt" == /rulebook-terse ]]; then
|
|
120
|
+
new_mode="$default_mode"
|
|
121
|
+
elif [[ "$lower_prompt" == /rulebook-terse\ * ]]; then
|
|
122
|
+
arg="$(printf '%s' "$lower_prompt" | awk '{print $2}')"
|
|
123
|
+
case "$arg" in
|
|
124
|
+
off) deactivate=1 ;;
|
|
125
|
+
brief|terse|ultra|commit|review) new_mode="$arg" ;;
|
|
126
|
+
*) : ;; # unknown subcommand → leave state unchanged
|
|
127
|
+
esac
|
|
128
|
+
fi
|
|
129
|
+
|
|
130
|
+
# Natural-language deactivation — checked first so "stop terse" wins.
|
|
131
|
+
if [ -z "$new_mode" ] && [ "$deactivate" -eq 0 ]; then
|
|
132
|
+
if echo "$prompt" | grep -qiE '\b(stop|disable|turn off|deactivate)\b.*\brulebook[- ]?terse\b' \
|
|
133
|
+
|| echo "$prompt" | grep -qiE '\brulebook[- ]?terse\b.*\b(stop|disable|turn off|deactivate)\b' \
|
|
134
|
+
|| echo "$prompt" | grep -qiE '\b(stop|disable) terse\b' \
|
|
135
|
+
|| echo "$prompt" | grep -qiE '\bnormal mode\b'; then
|
|
136
|
+
deactivate=1
|
|
137
|
+
fi
|
|
138
|
+
fi
|
|
139
|
+
|
|
140
|
+
# Natural-language activation
|
|
141
|
+
if [ -z "$new_mode" ] && [ "$deactivate" -eq 0 ]; then
|
|
142
|
+
if echo "$prompt" | grep -qiE '\b(activate|enable|turn on|start)\b.*\brulebook[- ]?terse\b' \
|
|
143
|
+
|| echo "$prompt" | grep -qiE '\brulebook[- ]?terse\b.*\b(mode|activate|enable|turn on|start)\b' \
|
|
144
|
+
|| echo "$prompt" | grep -qiE '\bbe terse\b' \
|
|
145
|
+
|| echo "$prompt" | grep -qiE '\bterse mode\b' \
|
|
146
|
+
|| echo "$prompt" | grep -qiE '\bless tokens?\b'; then
|
|
147
|
+
new_mode="$default_mode"
|
|
148
|
+
fi
|
|
149
|
+
fi
|
|
150
|
+
|
|
151
|
+
# Apply intent
|
|
152
|
+
if [ "$deactivate" -eq 1 ]; then
|
|
153
|
+
rm -f "$FLAG_PATH" 2>/dev/null || true
|
|
154
|
+
elif [ -n "$new_mode" ]; then
|
|
155
|
+
if [ "$new_mode" = "off" ]; then
|
|
156
|
+
rm -f "$FLAG_PATH" 2>/dev/null || true
|
|
157
|
+
else
|
|
158
|
+
safe_write_flag "$new_mode"
|
|
159
|
+
fi
|
|
160
|
+
fi
|
|
161
|
+
|
|
162
|
+
# Emit attention anchor for persistent modes only.
|
|
163
|
+
active_mode="$(read_flag || true)"
|
|
164
|
+
case "$active_mode" in
|
|
165
|
+
brief|terse|ultra)
|
|
166
|
+
if [ "$active_mode" = "brief" ]; then
|
|
167
|
+
keep_clause="Keep articles and full sentences."
|
|
168
|
+
else
|
|
169
|
+
keep_clause="Fragments OK."
|
|
170
|
+
fi
|
|
171
|
+
text="RULEBOOK-TERSE ACTIVE (${active_mode}). Drop filler/hedging/pleasantries. ${keep_clause} Code/tests/commits/security: write full. Quality-gate failures + destructive ops: write full."
|
|
172
|
+
# Emit hookSpecificOutput JSON via node — universal across platforms.
|
|
173
|
+
node -e "
|
|
174
|
+
const text = process.argv[1];
|
|
175
|
+
process.stdout.write(JSON.stringify({
|
|
176
|
+
hookSpecificOutput: {
|
|
177
|
+
hookEventName: 'UserPromptSubmit',
|
|
178
|
+
additionalContext: text
|
|
179
|
+
}
|
|
180
|
+
}));
|
|
181
|
+
" "$text" 2>/dev/null || true
|
|
182
|
+
;;
|
|
183
|
+
*)
|
|
184
|
+
# No active persistent mode, or commit/review sub-skill — no anchor.
|
|
185
|
+
:
|
|
186
|
+
;;
|
|
187
|
+
esac
|
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
<!-- RULEBOOK:START -->
|
|
2
|
-
# Continue.dev — Code Assistant Rules
|
|
3
|
-
|
|
4
|
-
## Context Loading
|
|
5
|
-
- Always read AGENTS.md before making changes
|
|
6
|
-
- Check `.rulebook/specs/` for relevant spec files
|
|
7
|
-
|
|
8
|
-
## Code Standards
|
|
9
|
-
- Match existing code style and conventions
|
|
10
|
-
- Prefer editing existing files over creating new ones
|
|
11
|
-
- Add types for all new parameters and return values
|
|
12
|
-
|
|
13
|
-
## Testing
|
|
14
|
-
- Write tests for every new function
|
|
15
|
-
- Run existing tests after changes to verify no regressions
|
|
16
|
-
<!-- RULEBOOK:END -->
|
|
1
|
+
<!-- RULEBOOK:START -->
|
|
2
|
+
# Continue.dev — Code Assistant Rules
|
|
3
|
+
|
|
4
|
+
## Context Loading
|
|
5
|
+
- Always read AGENTS.md before making changes
|
|
6
|
+
- Check `.rulebook/specs/` for relevant spec files
|
|
7
|
+
|
|
8
|
+
## Code Standards
|
|
9
|
+
- Match existing code style and conventions
|
|
10
|
+
- Prefer editing existing files over creating new ones
|
|
11
|
+
- Add types for all new parameters and return values
|
|
12
|
+
|
|
13
|
+
## Testing
|
|
14
|
+
- Write tests for every new function
|
|
15
|
+
- Run existing tests after changes to verify no regressions
|
|
16
|
+
<!-- RULEBOOK:END -->
|
|
@@ -1,37 +1,37 @@
|
|
|
1
|
-
<!-- COPILOT:START -->
|
|
2
|
-
# GitHub Copilot Rules
|
|
3
|
-
|
|
4
|
-
**Tool**: GitHub's AI pair programmer (inline + chat)
|
|
5
|
-
|
|
6
|
-
## Quick Start
|
|
7
|
-
|
|
8
|
-
Copilot reads:
|
|
9
|
-
- `.github/copilot-instructions.md` (generated by `rulebook init`)
|
|
10
|
-
- Workspace context (open files)
|
|
11
|
-
|
|
12
|
-
## Usage
|
|
13
|
-
|
|
14
|
-
```bash
|
|
15
|
-
# In Copilot Chat:
|
|
16
|
-
"Follow @AGENTS.md. Implement [feature] with tests (95%+ coverage)."
|
|
17
|
-
|
|
18
|
-
# Inline suggestions:
|
|
19
|
-
Accept/reject based on AGENTS.md standards
|
|
20
|
-
```
|
|
21
|
-
|
|
22
|
-
## Modes
|
|
23
|
-
|
|
24
|
-
**Inline Completions**: Context-aware suggestions while typing
|
|
25
|
-
**Copilot Chat**: Ask questions, request implementations
|
|
26
|
-
**Workspace Agent** (Labs): Multi-file autonomous mode
|
|
27
|
-
|
|
28
|
-
## Workflow
|
|
29
|
-
|
|
30
|
-
1. Rulebook generates `.github/copilot-instructions.md` → references AGENTS.md
|
|
31
|
-
2. Keep AGENTS.md open for context
|
|
32
|
-
3. Use `@workspace` to include project context
|
|
33
|
-
4. Reference `@AGENTS.md` explicitly in chat
|
|
34
|
-
|
|
35
|
-
**Critical**: Generated `copilot-instructions.md` points Copilot to AGENTS.md standards.
|
|
36
|
-
|
|
37
|
-
<!-- COPILOT:END -->
|
|
1
|
+
<!-- COPILOT:START -->
|
|
2
|
+
# GitHub Copilot Rules
|
|
3
|
+
|
|
4
|
+
**Tool**: GitHub's AI pair programmer (inline + chat)
|
|
5
|
+
|
|
6
|
+
## Quick Start
|
|
7
|
+
|
|
8
|
+
Copilot reads:
|
|
9
|
+
- `.github/copilot-instructions.md` (generated by `rulebook init`)
|
|
10
|
+
- Workspace context (open files)
|
|
11
|
+
|
|
12
|
+
## Usage
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
# In Copilot Chat:
|
|
16
|
+
"Follow @AGENTS.md. Implement [feature] with tests (95%+ coverage)."
|
|
17
|
+
|
|
18
|
+
# Inline suggestions:
|
|
19
|
+
Accept/reject based on AGENTS.md standards
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## Modes
|
|
23
|
+
|
|
24
|
+
**Inline Completions**: Context-aware suggestions while typing
|
|
25
|
+
**Copilot Chat**: Ask questions, request implementations
|
|
26
|
+
**Workspace Agent** (Labs): Multi-file autonomous mode
|
|
27
|
+
|
|
28
|
+
## Workflow
|
|
29
|
+
|
|
30
|
+
1. Rulebook generates `.github/copilot-instructions.md` → references AGENTS.md
|
|
31
|
+
2. Keep AGENTS.md open for context
|
|
32
|
+
3. Use `@workspace` to include project context
|
|
33
|
+
4. Reference `@AGENTS.md` explicitly in chat
|
|
34
|
+
|
|
35
|
+
**Critical**: Generated `copilot-instructions.md` points Copilot to AGENTS.md standards.
|
|
36
|
+
|
|
37
|
+
<!-- COPILOT:END -->
|
|
@@ -1,23 +1,23 @@
|
|
|
1
|
-
<!-- RULEBOOK:START -->
|
|
2
|
-
# GitHub Copilot — Project Instructions
|
|
3
|
-
|
|
4
|
-
## Code Style
|
|
5
|
-
- Use TypeScript with strict mode
|
|
6
|
-
- Follow existing naming conventions (camelCase functions, PascalCase classes)
|
|
7
|
-
- Prefer `async/await` over callbacks or raw Promises
|
|
8
|
-
|
|
9
|
-
## Architecture
|
|
10
|
-
- Follow the module structure described in AGENTS.md
|
|
11
|
-
- Keep functions small and focused (single responsibility)
|
|
12
|
-
- Use dependency injection over direct imports where possible
|
|
13
|
-
|
|
14
|
-
## Testing
|
|
15
|
-
- Write Vitest tests for all new functions
|
|
16
|
-
- Place tests in `tests/` directory, not alongside source files
|
|
17
|
-
- Mock external dependencies in unit tests
|
|
18
|
-
|
|
19
|
-
## Security
|
|
20
|
-
- Never commit credentials or API keys
|
|
21
|
-
- Validate all external input at system boundaries
|
|
22
|
-
- Follow OWASP top 10 guidelines
|
|
23
|
-
<!-- RULEBOOK:END -->
|
|
1
|
+
<!-- RULEBOOK:START -->
|
|
2
|
+
# GitHub Copilot — Project Instructions
|
|
3
|
+
|
|
4
|
+
## Code Style
|
|
5
|
+
- Use TypeScript with strict mode
|
|
6
|
+
- Follow existing naming conventions (camelCase functions, PascalCase classes)
|
|
7
|
+
- Prefer `async/await` over callbacks or raw Promises
|
|
8
|
+
|
|
9
|
+
## Architecture
|
|
10
|
+
- Follow the module structure described in AGENTS.md
|
|
11
|
+
- Keep functions small and focused (single responsibility)
|
|
12
|
+
- Use dependency injection over direct imports where possible
|
|
13
|
+
|
|
14
|
+
## Testing
|
|
15
|
+
- Write Vitest tests for all new functions
|
|
16
|
+
- Place tests in `tests/` directory, not alongside source files
|
|
17
|
+
- Mock external dependencies in unit tests
|
|
18
|
+
|
|
19
|
+
## Security
|
|
20
|
+
- Never commit credentials or API keys
|
|
21
|
+
- Validate all external input at system boundaries
|
|
22
|
+
- Follow OWASP top 10 guidelines
|
|
23
|
+
<!-- RULEBOOK:END -->
|
package/templates/ides/CURSOR.md
CHANGED
|
@@ -1,43 +1,43 @@
|
|
|
1
|
-
<!-- CURSOR:START -->
|
|
2
|
-
# Cursor IDE Rules
|
|
3
|
-
|
|
4
|
-
**IDE**: AI-first code editor with Agent mode and Composer
|
|
5
|
-
|
|
6
|
-
## Quick Start
|
|
7
|
-
|
|
8
|
-
Cursor automatically reads:
|
|
9
|
-
- `.cursorrules` (generated by `rulebook init`)
|
|
10
|
-
- `AGENTS.md` (via `@AGENTS.md` references)
|
|
11
|
-
|
|
12
|
-
## Usage
|
|
13
|
-
|
|
14
|
-
```bash
|
|
15
|
-
# In Cursor chat/composer:
|
|
16
|
-
"Follow @AGENTS.md. Implement [feature] with tests (95%+ coverage)."
|
|
17
|
-
|
|
18
|
-
# Agent mode (Ctrl+Shift+K):
|
|
19
|
-
Use for complex multi-file changes
|
|
20
|
-
Reference @AGENTS.md for standards
|
|
21
|
-
|
|
22
|
-
# Composer (Cmd+I):
|
|
23
|
-
Use for quick edits
|
|
24
|
-
Reference @AGENTS.md when needed
|
|
25
|
-
```
|
|
26
|
-
|
|
27
|
-
## Features
|
|
28
|
-
|
|
29
|
-
- **Auto-context**: Reads .cursorrules automatically
|
|
30
|
-
- **@ Mentions**: Use `@AGENTS.md` to include standards
|
|
31
|
-
- **Agent Mode**: Autonomous multi-step implementations
|
|
32
|
-
- **Composer**: Quick inline edits
|
|
33
|
-
|
|
34
|
-
## Workflow
|
|
35
|
-
|
|
36
|
-
1. Rulebook generates `.cursorrules` pointing to AGENTS.md
|
|
37
|
-
2. Use `@AGENTS.md` in prompts for explicit reference
|
|
38
|
-
3. Agent/Composer follows standards automatically
|
|
39
|
-
4. Review changes and run quality checks
|
|
40
|
-
|
|
41
|
-
**Critical**: `.cursorrules` ensures Cursor follows AGENTS.md by default.
|
|
42
|
-
|
|
43
|
-
<!-- CURSOR:END -->
|
|
1
|
+
<!-- CURSOR:START -->
|
|
2
|
+
# Cursor IDE Rules
|
|
3
|
+
|
|
4
|
+
**IDE**: AI-first code editor with Agent mode and Composer
|
|
5
|
+
|
|
6
|
+
## Quick Start
|
|
7
|
+
|
|
8
|
+
Cursor automatically reads:
|
|
9
|
+
- `.cursorrules` (generated by `rulebook init`)
|
|
10
|
+
- `AGENTS.md` (via `@AGENTS.md` references)
|
|
11
|
+
|
|
12
|
+
## Usage
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
# In Cursor chat/composer:
|
|
16
|
+
"Follow @AGENTS.md. Implement [feature] with tests (95%+ coverage)."
|
|
17
|
+
|
|
18
|
+
# Agent mode (Ctrl+Shift+K):
|
|
19
|
+
Use for complex multi-file changes
|
|
20
|
+
Reference @AGENTS.md for standards
|
|
21
|
+
|
|
22
|
+
# Composer (Cmd+I):
|
|
23
|
+
Use for quick edits
|
|
24
|
+
Reference @AGENTS.md when needed
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## Features
|
|
28
|
+
|
|
29
|
+
- **Auto-context**: Reads .cursorrules automatically
|
|
30
|
+
- **@ Mentions**: Use `@AGENTS.md` to include standards
|
|
31
|
+
- **Agent Mode**: Autonomous multi-step implementations
|
|
32
|
+
- **Composer**: Quick inline edits
|
|
33
|
+
|
|
34
|
+
## Workflow
|
|
35
|
+
|
|
36
|
+
1. Rulebook generates `.cursorrules` pointing to AGENTS.md
|
|
37
|
+
2. Use `@AGENTS.md` in prompts for explicit reference
|
|
38
|
+
3. Agent/Composer follows standards automatically
|
|
39
|
+
4. Review changes and run quality checks
|
|
40
|
+
|
|
41
|
+
**Critical**: `.cursorrules` ensures Cursor follows AGENTS.md by default.
|
|
42
|
+
|
|
43
|
+
<!-- CURSOR:END -->
|
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
<!-- RULEBOOK:START -->
|
|
2
|
-
# Gemini CLI — Project Directives
|
|
3
|
-
|
|
4
|
-
## Code Generation Rules
|
|
5
|
-
- Generate TypeScript with strict mode enabled
|
|
6
|
-
- Follow existing file and function naming conventions
|
|
7
|
-
- Always add error handling for async operations
|
|
8
|
-
- Generate tests alongside implementation code
|
|
9
|
-
|
|
10
|
-
## Quality Standards
|
|
11
|
-
- All code must pass TypeScript type-check
|
|
12
|
-
- All code must pass ESLint without warnings
|
|
13
|
-
- Test coverage must meet project thresholds
|
|
14
|
-
|
|
15
|
-
## Project Context
|
|
16
|
-
See AGENTS.md for full project architecture and team conventions.
|
|
17
|
-
<!-- RULEBOOK:END -->
|
|
1
|
+
<!-- RULEBOOK:START -->
|
|
2
|
+
# Gemini CLI — Project Directives
|
|
3
|
+
|
|
4
|
+
## Code Generation Rules
|
|
5
|
+
- Generate TypeScript with strict mode enabled
|
|
6
|
+
- Follow existing file and function naming conventions
|
|
7
|
+
- Always add error handling for async operations
|
|
8
|
+
- Generate tests alongside implementation code
|
|
9
|
+
|
|
10
|
+
## Quality Standards
|
|
11
|
+
- All code must pass TypeScript type-check
|
|
12
|
+
- All code must pass ESLint without warnings
|
|
13
|
+
- Test coverage must meet project thresholds
|
|
14
|
+
|
|
15
|
+
## Project Context
|
|
16
|
+
See AGENTS.md for full project architecture and team conventions.
|
|
17
|
+
<!-- RULEBOOK:END -->
|