@hivehub/rulebook 4.4.1 → 5.1.1
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-plugin/plugin.json +1 -1
- package/README.md +68 -8
- package/dist/cli/commands.d.ts.map +1 -1
- package/dist/cli/commands.js +86 -0
- package/dist/cli/commands.js.map +1 -1
- package/dist/core/agent-template-engine.d.ts +51 -0
- package/dist/core/agent-template-engine.d.ts.map +1 -0
- package/dist/core/agent-template-engine.js +285 -0
- package/dist/core/agent-template-engine.js.map +1 -0
- package/dist/core/complexity-detector.d.ts +36 -0
- package/dist/core/complexity-detector.d.ts.map +1 -0
- package/dist/core/complexity-detector.js +254 -0
- package/dist/core/complexity-detector.js.map +1 -0
- package/dist/core/config-manager.d.ts.map +1 -1
- package/dist/core/config-manager.js +7 -8
- package/dist/core/config-manager.js.map +1 -1
- package/dist/core/generator.d.ts +1 -0
- package/dist/core/generator.d.ts.map +1 -1
- package/dist/core/generator.js +21 -3
- package/dist/core/generator.js.map +1 -1
- package/dist/core/indexer/background-indexer.d.ts +2 -2
- package/dist/core/indexer/background-indexer.d.ts.map +1 -1
- package/dist/core/indexer/background-indexer.js +55 -61
- package/dist/core/indexer/background-indexer.js.map +1 -1
- package/dist/core/rule-engine.d.ts +64 -0
- package/dist/core/rule-engine.d.ts.map +1 -0
- package/dist/core/rule-engine.js +333 -0
- package/dist/core/rule-engine.js.map +1 -0
- package/dist/core/task-manager.d.ts +4 -0
- package/dist/core/task-manager.d.ts.map +1 -1
- package/dist/core/task-manager.js +39 -24
- package/dist/core/task-manager.js.map +1 -1
- package/dist/index.js +182 -0
- package/dist/index.js.map +1 -1
- package/dist/mcp/rulebook-server.d.ts +6 -0
- package/dist/mcp/rulebook-server.d.ts.map +1 -1
- package/dist/mcp/rulebook-server.js +394 -49
- package/dist/mcp/rulebook-server.js.map +1 -1
- package/dist/memory/hnsw-index.d.ts +6 -1
- package/dist/memory/hnsw-index.d.ts.map +1 -1
- package/dist/memory/hnsw-index.js +133 -18
- package/dist/memory/hnsw-index.js.map +1 -1
- package/dist/memory/memory-manager.d.ts +2 -0
- package/dist/memory/memory-manager.d.ts.map +1 -1
- package/dist/memory/memory-manager.js +16 -7
- package/dist/memory/memory-manager.js.map +1 -1
- package/dist/memory/memory-store.d.ts +15 -3
- package/dist/memory/memory-store.d.ts.map +1 -1
- package/dist/memory/memory-store.js +327 -274
- package/dist/memory/memory-store.js.map +1 -1
- package/dist/types.d.ts +17 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +8 -3
- package/templates/agents/compiler/codegen-debugger.md +34 -0
- package/templates/agents/compiler/stdlib-engineer.md +28 -0
- package/templates/agents/compiler/test-coverage-guardian.md +31 -0
- package/templates/agents/game-engine/cpp-core-expert.md +35 -0
- package/templates/agents/game-engine/render-engineer.md +22 -0
- package/templates/agents/game-engine/shader-engineer.md +38 -0
- package/templates/agents/game-engine/systems-integration.md +43 -0
- package/templates/agents/generic/code-reviewer.md +41 -0
- package/templates/agents/generic/docs-writer.md +25 -0
- package/templates/agents/generic/project-manager.md +36 -0
- package/templates/agents/generic/researcher.md +34 -0
- package/templates/agents/generic/test-engineer.md +41 -0
- package/templates/agents/implementer.md +8 -4
- package/templates/agents/mobile/platform-specialist.md +22 -0
- package/templates/agents/mobile/ui-engineer.md +22 -0
- package/templates/agents/tester.md +7 -4
- package/templates/agents/web-app/api-designer.md +22 -0
- package/templates/agents/web-app/backend-engineer.md +30 -0
- package/templates/agents/web-app/database-engineer.md +22 -0
- package/templates/agents/web-app/frontend-engineer.md +29 -0
- package/templates/agents/web-app/security-reviewer.md +32 -0
- package/templates/core/AGENT_AUTOMATION.md +8 -0
- package/templates/core/RULEBOOK.md +12 -0
- package/templates/core/TIER1_PROHIBITIONS.md +154 -0
- package/templates/core/TOKEN_OPTIMIZATION.md +49 -0
- package/templates/git/GIT_WORKFLOW.md +35 -0
- package/templates/rules/follow-task-sequence.md +36 -0
- package/templates/rules/git-safety.md +29 -0
- package/templates/rules/incremental-implementation.md +56 -0
- package/templates/rules/incremental-tests.md +29 -0
- package/templates/rules/no-deferred.md +31 -0
- package/templates/rules/no-shortcuts.md +30 -0
- package/templates/rules/research-first.md +30 -0
- package/templates/rules/sequential-editing.md +21 -0
- package/templates/rules/session-workflow.md +24 -0
- package/templates/rules/task-decomposition.md +32 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "rulebook",
|
|
3
3
|
"description": "Standardize AI-generated projects with Ralph autonomous loop, persistent memory, and quality gates. Supports 28 languages, 17 frameworks, 13 MCP modules, and 20 services.",
|
|
4
|
-
"version": "
|
|
4
|
+
"version": "5.1.1",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "HiveLLM"
|
|
7
7
|
}
|
package/README.md
CHANGED
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
[](https://github.com/hivellm/rulebook/actions/workflows/build.yml)
|
|
12
12
|
[](https://github.com/hivellm/rulebook/actions/workflows/lint.yml)
|
|
13
13
|
|
|
14
|
-
>
|
|
14
|
+
> Tool-agnostic AI development framework. Standardize projects across Claude Code, Cursor, Gemini, Codex, Windsurf, Copilot with automated templates, quality gates, persistent memory, and framework detection for 28 languages, 17 frameworks, 13 MCP modules, and 20 services.
|
|
15
15
|
|
|
16
16
|
---
|
|
17
17
|
|
|
@@ -23,7 +23,7 @@ Large Language Models (LLMs) for software development need **clear directives**
|
|
|
23
23
|
|
|
24
24
|
- 📋 **Comprehensive Rule Sets**: Language-specific guidelines (TypeScript, Rust, Python, etc.), framework conventions (NestJS, Django, React), testing standards, linting rules, spell-checking, CI/CD pipelines, Git hooks, and version control best practices
|
|
25
25
|
- 🤖 **Ralph Autonomous Loop**: Multi-iteration AI agent task solving with quality gates (type-check, lint, tests, coverage), iteration tracking, learnings extraction, and graceful pause/resume
|
|
26
|
-
- 🧠 **Persistent Memory**: Context that survives across AI sessions with hybrid BM25+HNSW search,
|
|
26
|
+
- 🧠 **Persistent Memory**: Context that survives across AI sessions with hybrid BM25+HNSW search, native SQLite with WASM fallback
|
|
27
27
|
- 🎯 **Normalized Deliverables**: Ensures consistent code quality across all AI-generated outputs
|
|
28
28
|
- 🛡️ **Error Reduction**: Catches issues early through automated quality gates and pre-commit/pre-push hooks
|
|
29
29
|
- ⚙️ **Process Automation**: Automates repetitive tasks like formatting, testing, and deployment
|
|
@@ -35,23 +35,83 @@ By giving LLMs a clear "rulebook" to follow, you ensure that every piece of gene
|
|
|
35
35
|
## Quick Start
|
|
36
36
|
|
|
37
37
|
```bash
|
|
38
|
-
# New project — auto-detects languages,
|
|
38
|
+
# New project — auto-detects languages, tools, and complexity
|
|
39
39
|
npx @hivehub/rulebook@latest init
|
|
40
40
|
|
|
41
|
+
# Target specific AI tools
|
|
42
|
+
npx @hivehub/rulebook@latest init --tools claude-code,cursor,gemini
|
|
43
|
+
|
|
44
|
+
# Assess project complexity before configuring
|
|
45
|
+
npx @hivehub/rulebook@latest assess
|
|
46
|
+
|
|
41
47
|
# Minimal setup (essentials only)
|
|
42
48
|
npx @hivehub/rulebook@latest init --minimal
|
|
43
49
|
|
|
44
50
|
# Lean mode — AGENTS.md as <3KB index (fast AI loading)
|
|
45
51
|
npx @hivehub/rulebook@latest init --lean
|
|
46
52
|
|
|
47
|
-
# Update existing project
|
|
53
|
+
# Update existing project (re-projects rules to all detected tools)
|
|
48
54
|
npx @hivehub/rulebook@latest update
|
|
55
|
+
|
|
56
|
+
# Manage canonical rules
|
|
57
|
+
npx @hivehub/rulebook@latest rules list # List rules by tier
|
|
58
|
+
npx @hivehub/rulebook@latest rules add no-shortcuts # Install from library
|
|
59
|
+
npx @hivehub/rulebook@latest rules project # Project to all tools
|
|
49
60
|
```
|
|
50
61
|
|
|
51
62
|
## What's New
|
|
52
63
|
|
|
53
64
|
See the full [CHANGELOG](CHANGELOG.md) for details.
|
|
54
65
|
|
|
66
|
+
### v5.1.0 — Incremental Implementation & Knowledge Base Integration
|
|
67
|
+
|
|
68
|
+
Born from real-world experience: AI agents that implement everything at once produce cascading errors. This release makes **step-by-step implementation** and **knowledge base usage** mandatory for all agents.
|
|
69
|
+
|
|
70
|
+
**New Tier 1 Rule: `incremental-implementation`**
|
|
71
|
+
- Decompose, implement ONE step, test/verify, repeat
|
|
72
|
+
- **3-attempt restart rule**: if stuck 3 times on the same error, STOP, record anti-pattern, restart from scratch
|
|
73
|
+
- "The line between persistence and stubbornness is thin"
|
|
74
|
+
|
|
75
|
+
**Knowledge Base as Mandatory Workflow**
|
|
76
|
+
- All agents now check `.rulebook/knowledge/` BEFORE implementing
|
|
77
|
+
- All agents record patterns/anti-patterns AFTER completing
|
|
78
|
+
- Code reviewers validate against known patterns and anti-patterns
|
|
79
|
+
- Project managers track KB health and remind agents to record learnings
|
|
80
|
+
|
|
81
|
+
**41 New Memory Store Tests**
|
|
82
|
+
- Comprehensive CRUD, FTS5 search, sessions, persistence, code nodes
|
|
83
|
+
- sql.js fallback validation (for environments without native build tools)
|
|
84
|
+
|
|
85
|
+
### v5.0.0 — Multi-Tool AI Framework
|
|
86
|
+
|
|
87
|
+
The biggest release yet. Rulebook becomes a **tool-agnostic AI development framework** — same quality directives for every AI tool, with graceful degradation.
|
|
88
|
+
|
|
89
|
+
**One Source, Multiple Projections**
|
|
90
|
+
- Canonical rules live in `.rulebook/rules/` with YAML frontmatter
|
|
91
|
+
- `rulebook update` projects them to **6 tool formats simultaneously**:
|
|
92
|
+
- Claude Code (`.claude/rules/*.md`), Cursor (`.cursor/rules/*.mdc`), Gemini (`GEMINI.md`), Copilot (`.github/copilot-instructions.md`), Windsurf (`.windsurf/rules/`), Continue.dev (`.continue/rules/`)
|
|
93
|
+
|
|
94
|
+
**Adaptive Agent Framework**
|
|
95
|
+
- 15 agent templates across 5 project types (game-engine, compiler, web-app, mobile, generic)
|
|
96
|
+
- Claude Code: full agents with memory directories
|
|
97
|
+
- Cursor: contextual `.mdc` rules activated by file glob patterns
|
|
98
|
+
- Gemini/Codex: inline conditional sections
|
|
99
|
+
|
|
100
|
+
**8 Tier 1 Prohibitions** (auto-installed, universal)
|
|
101
|
+
- No shortcuts/stubs/TODOs, git safety allow-list, no delete without authorization, research-first, sequential editing, no deferred tasks, follow task sequence, **incremental implementation** (step by step, restart if stuck)
|
|
102
|
+
|
|
103
|
+
**Project Complexity Detection**
|
|
104
|
+
- `rulebook assess` — auto-detects LOC, languages, structure
|
|
105
|
+
- Calibrated init: small projects get Tier 1 only, large/complex projects get full agent framework + Tier 2 rules
|
|
106
|
+
|
|
107
|
+
**Critical Performance Fixes**
|
|
108
|
+
- Replaced sql.js (WASM) with better-sqlite3 (native) — eliminates 100-500MB memory copies per save
|
|
109
|
+
- Replaced fs.watch with chokidar — stops node_modules event flood
|
|
110
|
+
- HNSW search optimized with MinHeap/MaxHeap (~100x faster)
|
|
111
|
+
|
|
112
|
+
**New MCP Tools**: `rulebook_session_start`, `rulebook_session_end`, `rulebook_rules_list`, `rulebook_blockers`
|
|
113
|
+
**New CLI**: `rulebook assess`, `rulebook rules list|add|project`, `rulebook task blockers|blocked-by`
|
|
114
|
+
|
|
55
115
|
### v4.4.0 — Context Intelligence Layer
|
|
56
116
|
|
|
57
117
|
- 🧠 **Decision Records**: `rulebook decision create|list|show|supersede` — Architecture Decision Records with auto-numbering and status lifecycle
|
|
@@ -131,7 +191,7 @@ Every time you open a new tab or restart your editor, the AI loses all context a
|
|
|
131
191
|
### How It Works
|
|
132
192
|
|
|
133
193
|
```
|
|
134
|
-
Session 1: "
|
|
194
|
+
Session 1: "Chose event sourcing over CRUD for the audit trail"
|
|
135
195
|
→ Saved to memory automatically
|
|
136
196
|
|
|
137
197
|
Session 2 (new tab, days later):
|
|
@@ -142,8 +202,8 @@ Session 2 (new tab, days later):
|
|
|
142
202
|
|
|
143
203
|
| Component | Technology | Purpose |
|
|
144
204
|
|-----------|-----------|---------|
|
|
145
|
-
| **Storage** |
|
|
146
|
-
| **Keyword Search** | BM25 | Fast exact-match scoring |
|
|
205
|
+
| **Storage** | better-sqlite3 (native) with sql.js fallback | Fast native SQLite with WAL journal; falls back to WASM if no build tools |
|
|
206
|
+
| **Keyword Search** | BM25 via FTS5 | Fast exact-match scoring |
|
|
147
207
|
| **Vector Search** | HNSW index | Semantic similarity matching |
|
|
148
208
|
| **Embeddings** | TF-IDF + FNV1a hashing | 256-dim vectors, pure TypeScript, no API calls |
|
|
149
209
|
| **Ranking** | Reciprocal Rank Fusion | Combines BM25 + vector scores |
|
|
@@ -336,7 +396,7 @@ Cross-project operations (search, task listing) are explicit and deliberate.
|
|
|
336
396
|
- Graceful pause/resume capabilities
|
|
337
397
|
- Complete iteration history and metrics
|
|
338
398
|
- 6 CLI commands + 4 MCP tools
|
|
339
|
-
- 🧠 **Persistent Memory**: Context that survives across AI sessions — hybrid BM25+HNSW search, auto-capture,
|
|
399
|
+
- 🧠 **Persistent Memory**: Context that survives across AI sessions — hybrid BM25+HNSW search, auto-capture, native SQLite with WASM fallback
|
|
340
400
|
- 🔍 **Auto-Detection**: Detects languages, frameworks, MCP modules, and services from your project files
|
|
341
401
|
- 📁 **Modular Architecture**: Templates in `/.rulebook/` directory — smaller AGENTS.md, on-demand loading
|
|
342
402
|
- 🔗 **Git Hook Automation**: Pre-commit/pre-push hooks with language-aware quality checks
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../src/cli/commands.ts"],"names":[],"mappings":"AAgEA,wBAAsB,WAAW,CAAC,OAAO,EAAE;IACzC,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACjC,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../src/cli/commands.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/commands.js
CHANGED
|
@@ -54,6 +54,10 @@ export async function initCommand(options) {
|
|
|
54
54
|
const spinner = ora('Detecting project structure...').start();
|
|
55
55
|
const detection = await detectProject(cwd);
|
|
56
56
|
spinner.succeed('Project detection complete');
|
|
57
|
+
// Assess project complexity for calibrated generation (v5)
|
|
58
|
+
const { assessComplexity } = await import('../core/complexity-detector.js');
|
|
59
|
+
const complexity = assessComplexity(cwd);
|
|
60
|
+
console.log(chalk.gray(` Complexity: ${complexity.tier.toUpperCase()} (${complexity.metrics.estimatedLoc.toLocaleString()} LOC, ${complexity.metrics.languageCount} languages)`));
|
|
57
61
|
// Show detection results
|
|
58
62
|
if (detection.languages.length > 0) {
|
|
59
63
|
console.log(chalk.green('\n✓ Detected languages:'));
|
|
@@ -265,6 +269,43 @@ export async function initCommand(options) {
|
|
|
265
269
|
// Write AGENTS.md
|
|
266
270
|
await writeFile(agentsPath, finalContent);
|
|
267
271
|
console.log(chalk.green(`\n✅ AGENTS.md written to ${agentsPath}`));
|
|
272
|
+
// Install canonical rules based on complexity tier (v5)
|
|
273
|
+
{
|
|
274
|
+
const { installRule, projectRules } = await import('../core/rule-engine.js');
|
|
275
|
+
const { getTemplatesDir } = await import('../core/generator.js');
|
|
276
|
+
const templatesDir = getTemplatesDir();
|
|
277
|
+
// Tier 1 rules — always installed
|
|
278
|
+
const tier1Rules = ['no-shortcuts', 'git-safety', 'sequential-editing', 'research-first', 'follow-task-sequence', 'incremental-implementation'];
|
|
279
|
+
// Tier 2 rules — installed for medium+ complexity
|
|
280
|
+
const tier2Rules = ['task-decomposition', 'incremental-tests', 'no-deferred', 'session-workflow'];
|
|
281
|
+
const rulesToInstall = [...tier1Rules];
|
|
282
|
+
if (complexity.recommendations.tier2Rules) {
|
|
283
|
+
rulesToInstall.push(...tier2Rules);
|
|
284
|
+
}
|
|
285
|
+
let installedCount = 0;
|
|
286
|
+
for (const name of rulesToInstall) {
|
|
287
|
+
const result = await installRule(cwd, name, templatesDir);
|
|
288
|
+
if (result)
|
|
289
|
+
installedCount++;
|
|
290
|
+
}
|
|
291
|
+
if (installedCount > 0) {
|
|
292
|
+
console.log(chalk.gray(` • Installed ${installedCount} canonical rules to .rulebook/rules/`));
|
|
293
|
+
}
|
|
294
|
+
// Project rules to detected tools
|
|
295
|
+
const ruleResult = await projectRules(cwd, {
|
|
296
|
+
claudeCode: existsSync(path.join(cwd, '.claude')) || existsSync(path.join(cwd, 'CLAUDE.md')),
|
|
297
|
+
cursor: detection.cursor?.detected,
|
|
298
|
+
gemini: detection.geminiCli?.detected,
|
|
299
|
+
windsurf: detection.windsurf?.detected,
|
|
300
|
+
copilot: detection.githubCopilot?.detected,
|
|
301
|
+
continueDev: detection.continueDev?.detected,
|
|
302
|
+
});
|
|
303
|
+
const totalProjected = ruleResult.claudeCode.length + ruleResult.cursor.length + ruleResult.gemini.length +
|
|
304
|
+
ruleResult.copilot.length + ruleResult.windsurf.length + ruleResult.continueDev.length;
|
|
305
|
+
if (totalProjected > 0) {
|
|
306
|
+
console.log(chalk.gray(` • Projected rules to ${totalProjected} tool-specific files`));
|
|
307
|
+
}
|
|
308
|
+
}
|
|
268
309
|
// Show Cursor MDC feedback
|
|
269
310
|
if (detection.cursor?.detected) {
|
|
270
311
|
if (detection.cursor.hasMdcRules) {
|
|
@@ -1588,6 +1629,51 @@ async function updateSingleProject(cwd, options) {
|
|
|
1588
1629
|
const mergedContent = await mergeFullAgents(detection.existingAgents, config, cwd);
|
|
1589
1630
|
await writeFile(agentsPath, mergedContent);
|
|
1590
1631
|
mergeSpinner.succeed('AGENTS.md updated');
|
|
1632
|
+
// Install + project canonical rules to all detected tools (v5 rule engine)
|
|
1633
|
+
// On update: if .rulebook/rules/ is empty (v4 project), auto-install based on complexity
|
|
1634
|
+
{
|
|
1635
|
+
const { projectRules, installRule, loadCanonicalRules } = await import('../core/rule-engine.js');
|
|
1636
|
+
const existingRules = await loadCanonicalRules(cwd);
|
|
1637
|
+
if (existingRules.length === 0) {
|
|
1638
|
+
// v4 project upgrading to v5 — install canonical rules based on complexity
|
|
1639
|
+
const { assessComplexity } = await import('../core/complexity-detector.js');
|
|
1640
|
+
const { getTemplatesDir } = await import('../core/generator.js');
|
|
1641
|
+
const complexity = assessComplexity(cwd);
|
|
1642
|
+
const templatesDir = getTemplatesDir();
|
|
1643
|
+
const tier1 = ['no-shortcuts', 'git-safety', 'sequential-editing', 'research-first', 'follow-task-sequence', 'incremental-implementation'];
|
|
1644
|
+
const tier2 = ['task-decomposition', 'incremental-tests', 'no-deferred', 'session-workflow'];
|
|
1645
|
+
const toInstall = [...tier1];
|
|
1646
|
+
if (complexity.recommendations.tier2Rules) {
|
|
1647
|
+
toInstall.push(...tier2);
|
|
1648
|
+
}
|
|
1649
|
+
let installed = 0;
|
|
1650
|
+
for (const name of toInstall) {
|
|
1651
|
+
const result = await installRule(cwd, name, templatesDir);
|
|
1652
|
+
if (result)
|
|
1653
|
+
installed++;
|
|
1654
|
+
}
|
|
1655
|
+
if (installed > 0) {
|
|
1656
|
+
console.log(chalk.gray(` • Installed ${installed} v5 canonical rules (${complexity.tier} project, ${complexity.metrics.estimatedLoc.toLocaleString()} LOC)`));
|
|
1657
|
+
}
|
|
1658
|
+
}
|
|
1659
|
+
const ruleResult = await projectRules(cwd, {
|
|
1660
|
+
claudeCode: existsSync(path.join(cwd, '.claude')) || existsSync(path.join(cwd, 'CLAUDE.md')),
|
|
1661
|
+
cursor: detection.cursor?.detected,
|
|
1662
|
+
gemini: detection.geminiCli?.detected,
|
|
1663
|
+
windsurf: detection.windsurf?.detected,
|
|
1664
|
+
copilot: detection.githubCopilot?.detected,
|
|
1665
|
+
continueDev: detection.continueDev?.detected,
|
|
1666
|
+
});
|
|
1667
|
+
const totalProjected = ruleResult.claudeCode.length +
|
|
1668
|
+
ruleResult.cursor.length +
|
|
1669
|
+
ruleResult.gemini.length +
|
|
1670
|
+
ruleResult.copilot.length +
|
|
1671
|
+
ruleResult.windsurf.length +
|
|
1672
|
+
ruleResult.continueDev.length;
|
|
1673
|
+
if (totalProjected > 0) {
|
|
1674
|
+
console.log(chalk.gray(` • Projected ${totalProjected} canonical rules to detected tools`));
|
|
1675
|
+
}
|
|
1676
|
+
}
|
|
1591
1677
|
// Show multi-tool config feedback (update command)
|
|
1592
1678
|
if (detection.geminiCli?.detected) {
|
|
1593
1679
|
console.log(chalk.gray(' • Gemini CLI config updated: GEMINI.md'));
|