@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,197 +1,197 @@
|
|
|
1
|
-
#!/usr/bin/env bash
|
|
2
|
-
# Claude Code SessionStart hook for rulebook-terse (v5.4.0).
|
|
3
|
-
#
|
|
4
|
-
# Resolves the active intensity mode, writes it to the project-local
|
|
5
|
-
# flag file via a symlink-safe path, reads the installed SKILL.md,
|
|
6
|
-
# filters the intensity table + example rows down to the active
|
|
7
|
-
# level only, and emits the filtered body to stdout — Claude Code
|
|
8
|
-
# injects SessionStart stdout as hidden `additionalContext`.
|
|
9
|
-
#
|
|
10
|
-
# Contract matches `.rulebook/specs/RULEBOOK_TERSE.md`. Silent-fails
|
|
11
|
-
# on every filesystem error so a broken hook never blocks session
|
|
12
|
-
# start.
|
|
13
|
-
#
|
|
14
|
-
# Configuration resolution (first match wins):
|
|
15
|
-
# 1. RULEBOOK_TERSE_MODE env var
|
|
16
|
-
# 2. $PROJECT_ROOT/.rulebook/rulebook.json → terse.defaultMode
|
|
17
|
-
# 3. $XDG_CONFIG_HOME/rulebook/config.json → terse.defaultMode
|
|
18
|
-
# 4. ~/.config/rulebook/config.json → terse.defaultMode
|
|
19
|
-
# 5. "terse"
|
|
20
|
-
|
|
21
|
-
set -u
|
|
22
|
-
|
|
23
|
-
# Hook input may arrive on stdin as JSON — read it if present so we
|
|
24
|
-
# can resolve PROJECT_ROOT from the `cwd` field (Claude Code may
|
|
25
|
-
# invoke the hook from a sub-directory of the project).
|
|
26
|
-
input=""
|
|
27
|
-
if [ ! -t 0 ]; then
|
|
28
|
-
input="$(cat)"
|
|
29
|
-
fi
|
|
30
|
-
|
|
31
|
-
PROJECT_ROOT=""
|
|
32
|
-
if [ -n "$input" ]; then
|
|
33
|
-
PROJECT_ROOT="$(printf '%s' "$input" | node -e "
|
|
34
|
-
try {
|
|
35
|
-
const data = JSON.parse(require('fs').readFileSync(0, 'utf8'));
|
|
36
|
-
process.stdout.write(data.cwd || '');
|
|
37
|
-
} catch { }
|
|
38
|
-
" 2>/dev/null || true)"
|
|
39
|
-
fi
|
|
40
|
-
[ -z "$PROJECT_ROOT" ] && PROJECT_ROOT="${CLAUDE_PROJECT_DIR:-$(pwd)}"
|
|
41
|
-
|
|
42
|
-
FLAG_PATH="${PROJECT_ROOT}/.rulebook/.terse-mode"
|
|
43
|
-
CONFIG_DIR="${XDG_CONFIG_HOME:-$HOME/.config}/rulebook"
|
|
44
|
-
USER_CONFIG="${CONFIG_DIR}/config.json"
|
|
45
|
-
PROJECT_CONFIG="${PROJECT_ROOT}/.rulebook/rulebook.json"
|
|
46
|
-
|
|
47
|
-
VALID_MODES_RE='^(off|brief|terse|ultra|commit|review)$'
|
|
48
|
-
|
|
49
|
-
resolve_mode() {
|
|
50
|
-
# 1. Env var
|
|
51
|
-
if [ -n "${RULEBOOK_TERSE_MODE:-}" ]; then
|
|
52
|
-
local m="$(printf '%s' "$RULEBOOK_TERSE_MODE" | tr '[:upper:]' '[:lower:]' | tr -d '[:space:]')"
|
|
53
|
-
if [[ "$m" =~ $VALID_MODES_RE ]]; then
|
|
54
|
-
printf '%s' "$m"
|
|
55
|
-
return
|
|
56
|
-
fi
|
|
57
|
-
fi
|
|
58
|
-
|
|
59
|
-
# 2. Project config
|
|
60
|
-
if [ -f "$PROJECT_CONFIG" ]; then
|
|
61
|
-
local m
|
|
62
|
-
m="$(node -e "
|
|
63
|
-
try {
|
|
64
|
-
const cfg = JSON.parse(require('fs').readFileSync(process.argv[1], 'utf8'));
|
|
65
|
-
if (cfg.terse && cfg.terse.defaultMode) process.stdout.write(String(cfg.terse.defaultMode));
|
|
66
|
-
} catch { }
|
|
67
|
-
" "$PROJECT_CONFIG" 2>/dev/null | tr '[:upper:]' '[:lower:]' | tr -d '[:space:]' || true)"
|
|
68
|
-
if [ -n "$m" ] && [[ "$m" =~ $VALID_MODES_RE ]]; then
|
|
69
|
-
printf '%s' "$m"
|
|
70
|
-
return
|
|
71
|
-
fi
|
|
72
|
-
fi
|
|
73
|
-
|
|
74
|
-
# 3. User config
|
|
75
|
-
if [ -f "$USER_CONFIG" ]; then
|
|
76
|
-
local m
|
|
77
|
-
m="$(node -e "
|
|
78
|
-
try {
|
|
79
|
-
const cfg = JSON.parse(require('fs').readFileSync(process.argv[1], 'utf8'));
|
|
80
|
-
if (cfg.terse && cfg.terse.defaultMode) process.stdout.write(String(cfg.terse.defaultMode));
|
|
81
|
-
} catch { }
|
|
82
|
-
" "$USER_CONFIG" 2>/dev/null | tr '[:upper:]' '[:lower:]' | tr -d '[:space:]' || true)"
|
|
83
|
-
if [ -n "$m" ] && [[ "$m" =~ $VALID_MODES_RE ]]; then
|
|
84
|
-
printf '%s' "$m"
|
|
85
|
-
return
|
|
86
|
-
fi
|
|
87
|
-
fi
|
|
88
|
-
|
|
89
|
-
printf 'terse'
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
# Symlink-safe flag-file write. Refuses if target or parent is a
|
|
93
|
-
# symlink; creates with 0600 via umask + atomic temp+rename.
|
|
94
|
-
safe_write_flag() {
|
|
95
|
-
local content="$1"
|
|
96
|
-
local dir
|
|
97
|
-
dir="$(dirname "$FLAG_PATH")"
|
|
98
|
-
|
|
99
|
-
mkdir -p "$dir" 2>/dev/null || return 0
|
|
100
|
-
|
|
101
|
-
# Refuse if parent is itself a symlink.
|
|
102
|
-
[ -L "$dir" ] && return 0
|
|
103
|
-
# Refuse if target already exists as a symlink.
|
|
104
|
-
[ -L "$FLAG_PATH" ] && return 0
|
|
105
|
-
|
|
106
|
-
local tmp
|
|
107
|
-
tmp="$(mktemp "$dir/.terse-mode.XXXXXX" 2>/dev/null)" || return 0
|
|
108
|
-
{
|
|
109
|
-
umask 077
|
|
110
|
-
printf '%s' "$content" > "$tmp" 2>/dev/null || { rm -f "$tmp"; return 0; }
|
|
111
|
-
}
|
|
112
|
-
chmod 600 "$tmp" 2>/dev/null || true
|
|
113
|
-
mv -f "$tmp" "$FLAG_PATH" 2>/dev/null || rm -f "$tmp"
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
mode="$(resolve_mode)"
|
|
117
|
-
|
|
118
|
-
# "off" → unlink the flag and exit cleanly (no hidden-context emission).
|
|
119
|
-
if [ "$mode" = "off" ]; then
|
|
120
|
-
rm -f "$FLAG_PATH" 2>/dev/null || true
|
|
121
|
-
exit 0
|
|
122
|
-
fi
|
|
123
|
-
|
|
124
|
-
safe_write_flag "$mode"
|
|
125
|
-
|
|
126
|
-
# Locate the SKILL.md. Prefer the installed copy; fall back to the
|
|
127
|
-
# repo-local template when running inside the Rulebook source tree.
|
|
128
|
-
SKILL_PATHS=(
|
|
129
|
-
"${PROJECT_ROOT}/.claude/skills/rulebook-terse/SKILL.md"
|
|
130
|
-
"${PROJECT_ROOT}/templates/skills/core/rulebook-terse/SKILL.md"
|
|
131
|
-
)
|
|
132
|
-
|
|
133
|
-
skill_body=""
|
|
134
|
-
for p in "${SKILL_PATHS[@]}"; do
|
|
135
|
-
if [ -f "$p" ]; then
|
|
136
|
-
skill_body="$(cat "$p" 2>/dev/null || true)"
|
|
137
|
-
break
|
|
138
|
-
fi
|
|
139
|
-
done
|
|
140
|
-
|
|
141
|
-
# Emit the payload. When no SKILL.md is found, fall back to a
|
|
142
|
-
# minimal hardcoded ruleset — matches the Caveman pattern for
|
|
143
|
-
# standalone installs without templates.
|
|
144
|
-
if [ -z "$skill_body" ]; then
|
|
145
|
-
cat <<EOF
|
|
146
|
-
RULEBOOK-TERSE MODE ACTIVE — level: ${mode}
|
|
147
|
-
|
|
148
|
-
## Persistence
|
|
149
|
-
ACTIVE EVERY RESPONSE once set. Off only via "/rulebook-terse off", "normal mode", or session end.
|
|
150
|
-
|
|
151
|
-
## Rules
|
|
152
|
-
Drop filler (just, really, basically), pleasantries, hedging. Keep technical terms exact. Code blocks byte-for-byte unchanged.
|
|
153
|
-
|
|
154
|
-
## Auto-Clarity
|
|
155
|
-
Full prose for: security warnings, destructive-op confirmations, quality-gate failures, multi-step sequences, user confusion.
|
|
156
|
-
|
|
157
|
-
## Boundaries
|
|
158
|
-
Code/tests/commits/specs: unchanged.
|
|
159
|
-
EOF
|
|
160
|
-
exit 0
|
|
161
|
-
fi
|
|
162
|
-
|
|
163
|
-
# Header + filtered body. Filtering:
|
|
164
|
-
# - Strip YAML frontmatter (everything up through the second `---`).
|
|
165
|
-
# - Intensity-table rows `| **<level>** | ...` — keep only the active one.
|
|
166
|
-
# - Example lines `- **<level>**: "..."` — keep only the active one.
|
|
167
|
-
# - All other lines pass through unchanged.
|
|
168
|
-
#
|
|
169
|
-
# Uses `node -e` for portability — BSD awk (macOS default) does not
|
|
170
|
-
# support the 3-arg `match(str, re, array)` form that gawk ships with.
|
|
171
|
-
printf 'RULEBOOK-TERSE MODE ACTIVE — level: %s\n\n' "$mode"
|
|
172
|
-
|
|
173
|
-
printf '%s' "$skill_body" | node -e "
|
|
174
|
-
let body = '';
|
|
175
|
-
process.stdin.setEncoding('utf8');
|
|
176
|
-
process.stdin.on('data', (c) => { body += c; });
|
|
177
|
-
process.stdin.on('end', () => {
|
|
178
|
-
const active = process.argv[1];
|
|
179
|
-
// Strip YAML frontmatter.
|
|
180
|
-
const stripped = body.replace(/^---\s*\n[\s\S]*?\n---\s*\n/, '');
|
|
181
|
-
const out = [];
|
|
182
|
-
for (const line of stripped.split('\n')) {
|
|
183
|
-
const tableRow = line.match(/^\s*\|\s*\*\*([^*]+)\*\*\s*\|/);
|
|
184
|
-
if (tableRow) {
|
|
185
|
-
if (tableRow[1] === active) out.push(line);
|
|
186
|
-
continue;
|
|
187
|
-
}
|
|
188
|
-
const exampleLine = line.match(/^\s*-\s*\*\*([^*]+)\*\*\s*:/);
|
|
189
|
-
if (exampleLine) {
|
|
190
|
-
if (exampleLine[1] === active) out.push(line);
|
|
191
|
-
continue;
|
|
192
|
-
}
|
|
193
|
-
out.push(line);
|
|
194
|
-
}
|
|
195
|
-
process.stdout.write(out.join('\n'));
|
|
196
|
-
});
|
|
197
|
-
" "$mode"
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# Claude Code SessionStart hook for rulebook-terse (v5.4.0).
|
|
3
|
+
#
|
|
4
|
+
# Resolves the active intensity mode, writes it to the project-local
|
|
5
|
+
# flag file via a symlink-safe path, reads the installed SKILL.md,
|
|
6
|
+
# filters the intensity table + example rows down to the active
|
|
7
|
+
# level only, and emits the filtered body to stdout — Claude Code
|
|
8
|
+
# injects SessionStart stdout as hidden `additionalContext`.
|
|
9
|
+
#
|
|
10
|
+
# Contract matches `.rulebook/specs/RULEBOOK_TERSE.md`. Silent-fails
|
|
11
|
+
# on every filesystem error so a broken hook never blocks session
|
|
12
|
+
# start.
|
|
13
|
+
#
|
|
14
|
+
# Configuration resolution (first match wins):
|
|
15
|
+
# 1. RULEBOOK_TERSE_MODE env var
|
|
16
|
+
# 2. $PROJECT_ROOT/.rulebook/rulebook.json → terse.defaultMode
|
|
17
|
+
# 3. $XDG_CONFIG_HOME/rulebook/config.json → terse.defaultMode
|
|
18
|
+
# 4. ~/.config/rulebook/config.json → terse.defaultMode
|
|
19
|
+
# 5. "terse"
|
|
20
|
+
|
|
21
|
+
set -u
|
|
22
|
+
|
|
23
|
+
# Hook input may arrive on stdin as JSON — read it if present so we
|
|
24
|
+
# can resolve PROJECT_ROOT from the `cwd` field (Claude Code may
|
|
25
|
+
# invoke the hook from a sub-directory of the project).
|
|
26
|
+
input=""
|
|
27
|
+
if [ ! -t 0 ]; then
|
|
28
|
+
input="$(cat)"
|
|
29
|
+
fi
|
|
30
|
+
|
|
31
|
+
PROJECT_ROOT=""
|
|
32
|
+
if [ -n "$input" ]; then
|
|
33
|
+
PROJECT_ROOT="$(printf '%s' "$input" | node -e "
|
|
34
|
+
try {
|
|
35
|
+
const data = JSON.parse(require('fs').readFileSync(0, 'utf8'));
|
|
36
|
+
process.stdout.write(data.cwd || '');
|
|
37
|
+
} catch { }
|
|
38
|
+
" 2>/dev/null || true)"
|
|
39
|
+
fi
|
|
40
|
+
[ -z "$PROJECT_ROOT" ] && PROJECT_ROOT="${CLAUDE_PROJECT_DIR:-$(pwd)}"
|
|
41
|
+
|
|
42
|
+
FLAG_PATH="${PROJECT_ROOT}/.rulebook/.terse-mode"
|
|
43
|
+
CONFIG_DIR="${XDG_CONFIG_HOME:-$HOME/.config}/rulebook"
|
|
44
|
+
USER_CONFIG="${CONFIG_DIR}/config.json"
|
|
45
|
+
PROJECT_CONFIG="${PROJECT_ROOT}/.rulebook/rulebook.json"
|
|
46
|
+
|
|
47
|
+
VALID_MODES_RE='^(off|brief|terse|ultra|commit|review)$'
|
|
48
|
+
|
|
49
|
+
resolve_mode() {
|
|
50
|
+
# 1. Env var
|
|
51
|
+
if [ -n "${RULEBOOK_TERSE_MODE:-}" ]; then
|
|
52
|
+
local m="$(printf '%s' "$RULEBOOK_TERSE_MODE" | tr '[:upper:]' '[:lower:]' | tr -d '[:space:]')"
|
|
53
|
+
if [[ "$m" =~ $VALID_MODES_RE ]]; then
|
|
54
|
+
printf '%s' "$m"
|
|
55
|
+
return
|
|
56
|
+
fi
|
|
57
|
+
fi
|
|
58
|
+
|
|
59
|
+
# 2. Project config
|
|
60
|
+
if [ -f "$PROJECT_CONFIG" ]; then
|
|
61
|
+
local m
|
|
62
|
+
m="$(node -e "
|
|
63
|
+
try {
|
|
64
|
+
const cfg = JSON.parse(require('fs').readFileSync(process.argv[1], 'utf8'));
|
|
65
|
+
if (cfg.terse && cfg.terse.defaultMode) process.stdout.write(String(cfg.terse.defaultMode));
|
|
66
|
+
} catch { }
|
|
67
|
+
" "$PROJECT_CONFIG" 2>/dev/null | tr '[:upper:]' '[:lower:]' | tr -d '[:space:]' || true)"
|
|
68
|
+
if [ -n "$m" ] && [[ "$m" =~ $VALID_MODES_RE ]]; then
|
|
69
|
+
printf '%s' "$m"
|
|
70
|
+
return
|
|
71
|
+
fi
|
|
72
|
+
fi
|
|
73
|
+
|
|
74
|
+
# 3. User config
|
|
75
|
+
if [ -f "$USER_CONFIG" ]; then
|
|
76
|
+
local m
|
|
77
|
+
m="$(node -e "
|
|
78
|
+
try {
|
|
79
|
+
const cfg = JSON.parse(require('fs').readFileSync(process.argv[1], 'utf8'));
|
|
80
|
+
if (cfg.terse && cfg.terse.defaultMode) process.stdout.write(String(cfg.terse.defaultMode));
|
|
81
|
+
} catch { }
|
|
82
|
+
" "$USER_CONFIG" 2>/dev/null | tr '[:upper:]' '[:lower:]' | tr -d '[:space:]' || true)"
|
|
83
|
+
if [ -n "$m" ] && [[ "$m" =~ $VALID_MODES_RE ]]; then
|
|
84
|
+
printf '%s' "$m"
|
|
85
|
+
return
|
|
86
|
+
fi
|
|
87
|
+
fi
|
|
88
|
+
|
|
89
|
+
printf 'terse'
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
# Symlink-safe flag-file write. Refuses if target or parent is a
|
|
93
|
+
# symlink; creates with 0600 via umask + atomic temp+rename.
|
|
94
|
+
safe_write_flag() {
|
|
95
|
+
local content="$1"
|
|
96
|
+
local dir
|
|
97
|
+
dir="$(dirname "$FLAG_PATH")"
|
|
98
|
+
|
|
99
|
+
mkdir -p "$dir" 2>/dev/null || return 0
|
|
100
|
+
|
|
101
|
+
# Refuse if parent is itself a symlink.
|
|
102
|
+
[ -L "$dir" ] && return 0
|
|
103
|
+
# Refuse if target already exists as a symlink.
|
|
104
|
+
[ -L "$FLAG_PATH" ] && return 0
|
|
105
|
+
|
|
106
|
+
local tmp
|
|
107
|
+
tmp="$(mktemp "$dir/.terse-mode.XXXXXX" 2>/dev/null)" || return 0
|
|
108
|
+
{
|
|
109
|
+
umask 077
|
|
110
|
+
printf '%s' "$content" > "$tmp" 2>/dev/null || { rm -f "$tmp"; return 0; }
|
|
111
|
+
}
|
|
112
|
+
chmod 600 "$tmp" 2>/dev/null || true
|
|
113
|
+
mv -f "$tmp" "$FLAG_PATH" 2>/dev/null || rm -f "$tmp"
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
mode="$(resolve_mode)"
|
|
117
|
+
|
|
118
|
+
# "off" → unlink the flag and exit cleanly (no hidden-context emission).
|
|
119
|
+
if [ "$mode" = "off" ]; then
|
|
120
|
+
rm -f "$FLAG_PATH" 2>/dev/null || true
|
|
121
|
+
exit 0
|
|
122
|
+
fi
|
|
123
|
+
|
|
124
|
+
safe_write_flag "$mode"
|
|
125
|
+
|
|
126
|
+
# Locate the SKILL.md. Prefer the installed copy; fall back to the
|
|
127
|
+
# repo-local template when running inside the Rulebook source tree.
|
|
128
|
+
SKILL_PATHS=(
|
|
129
|
+
"${PROJECT_ROOT}/.claude/skills/rulebook-terse/SKILL.md"
|
|
130
|
+
"${PROJECT_ROOT}/templates/skills/core/rulebook-terse/SKILL.md"
|
|
131
|
+
)
|
|
132
|
+
|
|
133
|
+
skill_body=""
|
|
134
|
+
for p in "${SKILL_PATHS[@]}"; do
|
|
135
|
+
if [ -f "$p" ]; then
|
|
136
|
+
skill_body="$(cat "$p" 2>/dev/null || true)"
|
|
137
|
+
break
|
|
138
|
+
fi
|
|
139
|
+
done
|
|
140
|
+
|
|
141
|
+
# Emit the payload. When no SKILL.md is found, fall back to a
|
|
142
|
+
# minimal hardcoded ruleset — matches the Caveman pattern for
|
|
143
|
+
# standalone installs without templates.
|
|
144
|
+
if [ -z "$skill_body" ]; then
|
|
145
|
+
cat <<EOF
|
|
146
|
+
RULEBOOK-TERSE MODE ACTIVE — level: ${mode}
|
|
147
|
+
|
|
148
|
+
## Persistence
|
|
149
|
+
ACTIVE EVERY RESPONSE once set. Off only via "/rulebook-terse off", "normal mode", or session end.
|
|
150
|
+
|
|
151
|
+
## Rules
|
|
152
|
+
Drop filler (just, really, basically), pleasantries, hedging. Keep technical terms exact. Code blocks byte-for-byte unchanged.
|
|
153
|
+
|
|
154
|
+
## Auto-Clarity
|
|
155
|
+
Full prose for: security warnings, destructive-op confirmations, quality-gate failures, multi-step sequences, user confusion.
|
|
156
|
+
|
|
157
|
+
## Boundaries
|
|
158
|
+
Code/tests/commits/specs: unchanged.
|
|
159
|
+
EOF
|
|
160
|
+
exit 0
|
|
161
|
+
fi
|
|
162
|
+
|
|
163
|
+
# Header + filtered body. Filtering:
|
|
164
|
+
# - Strip YAML frontmatter (everything up through the second `---`).
|
|
165
|
+
# - Intensity-table rows `| **<level>** | ...` — keep only the active one.
|
|
166
|
+
# - Example lines `- **<level>**: "..."` — keep only the active one.
|
|
167
|
+
# - All other lines pass through unchanged.
|
|
168
|
+
#
|
|
169
|
+
# Uses `node -e` for portability — BSD awk (macOS default) does not
|
|
170
|
+
# support the 3-arg `match(str, re, array)` form that gawk ships with.
|
|
171
|
+
printf 'RULEBOOK-TERSE MODE ACTIVE — level: %s\n\n' "$mode"
|
|
172
|
+
|
|
173
|
+
printf '%s' "$skill_body" | node -e "
|
|
174
|
+
let body = '';
|
|
175
|
+
process.stdin.setEncoding('utf8');
|
|
176
|
+
process.stdin.on('data', (c) => { body += c; });
|
|
177
|
+
process.stdin.on('end', () => {
|
|
178
|
+
const active = process.argv[1];
|
|
179
|
+
// Strip YAML frontmatter.
|
|
180
|
+
const stripped = body.replace(/^---\s*\n[\s\S]*?\n---\s*\n/, '');
|
|
181
|
+
const out = [];
|
|
182
|
+
for (const line of stripped.split('\n')) {
|
|
183
|
+
const tableRow = line.match(/^\s*\|\s*\*\*([^*]+)\*\*\s*\|/);
|
|
184
|
+
if (tableRow) {
|
|
185
|
+
if (tableRow[1] === active) out.push(line);
|
|
186
|
+
continue;
|
|
187
|
+
}
|
|
188
|
+
const exampleLine = line.match(/^\s*-\s*\*\*([^*]+)\*\*\s*:/);
|
|
189
|
+
if (exampleLine) {
|
|
190
|
+
if (exampleLine[1] === active) out.push(line);
|
|
191
|
+
continue;
|
|
192
|
+
}
|
|
193
|
+
out.push(line);
|
|
194
|
+
}
|
|
195
|
+
process.stdout.write(out.join('\n'));
|
|
196
|
+
});
|
|
197
|
+
" "$mode"
|