@nolrm/contextkit 0.12.15 → 0.12.17

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/README.md CHANGED
@@ -213,6 +213,14 @@ Pass multiple tasks to `/squad` and it automatically runs in batch mode:
213
213
  # Phase 2: dev→test→review pipeline runs in parallel per task
214
214
  ```
215
215
 
216
+ **Model routing (Claude Code only):** Set `model_routing: true` in `.contextkit/squad/config.md` to have `/squad-auto` automatically use Claude Haiku for Dev and Test phases. Architect and Review always run on your primary model. Saves ~35% tokens with no quality loss — the standards files and Review gate maintain quality.
217
+
218
+ ```markdown
219
+ # .contextkit/squad/config.md
220
+ checkpoint: po
221
+ model_routing: true # dev + test → Haiku, architect + review → primary model
222
+ ```
223
+
216
224
  ### Feedback Loop
217
225
 
218
226
  Any downstream role can raise questions for an upstream role. When this happens, the pipeline pauses and directs you to the right command:
@@ -295,7 +303,7 @@ Hooks are optional and can be skipped with `ck install --no-hooks`.
295
303
  ```bash
296
304
  # Installation & Setup
297
305
  ck install # set up .contextkit + pick AI tool interactively
298
- ck install claude # set up .contextkit + Claude (no prompt)
306
+ ck install claude # set up .contextkit + Claude, or add Claude to an existing install
299
307
  ck claude # add Claude Code integration (CLAUDE.md + rules)
300
308
  ck cursor # add Cursor integration (scoped .mdc rules)
301
309
  ck copilot # add GitHub Copilot integration
package/bin/contextkit.js CHANGED
@@ -27,7 +27,7 @@ program
27
27
  .option('--non-interactive', 'Skip interactive prompts')
28
28
  .action(async (platform, options) => {
29
29
  try {
30
- await install({ ...options, ...(platform ? { platform, fullInstall: true } : { fullInstall: true }) });
30
+ await install({ ...options, ...(platform ? { platform } : { fullInstall: true }) });
31
31
  } catch (error) {
32
32
  console.error(chalk.red('Installation failed:'), error.message);
33
33
  process.exit(1);
@@ -9,6 +9,7 @@ const DownloadManager = require('../utils/download');
9
9
  const ProjectDetector = require('../utils/project-detector');
10
10
  const GitHooksManager = require('../utils/git-hooks');
11
11
  const StatusManager = require('../utils/status-manager');
12
+ const { printBanner } = require('../utils/banner');
12
13
 
13
14
  class InstallCommand {
14
15
  constructor() {
@@ -69,6 +70,7 @@ class InstallCommand {
69
70
  }
70
71
 
71
72
  // Full installation
73
+ printBanner();
72
74
  console.log(chalk.magenta('🎵 Installing ContextKit...'));
73
75
  console.log('');
74
76
 
@@ -6,6 +6,7 @@ const path = require('path');
6
6
  const DownloadManager = require('../utils/download');
7
7
  const ProjectDetector = require('../utils/project-detector');
8
8
  const GitHooksManager = require('../utils/git-hooks');
9
+ const { printBanner } = require('../utils/banner');
9
10
 
10
11
  class UpdateCommand {
11
12
  constructor() {
@@ -16,6 +17,7 @@ class UpdateCommand {
16
17
  }
17
18
 
18
19
  async update(options = {}) {
20
+ printBanner();
19
21
  console.log(chalk.magenta('🔄 Updating ContextKit...'));
20
22
 
21
23
  // Check if ContextKit is installed
@@ -0,0 +1,47 @@
1
+ const chalk = require('chalk');
2
+
3
+ // ── ASCII art ──────────────────────────────────────────────────────────────
4
+
5
+ const LINES = [
6
+ ' ______ __ __ __ __ _ __ ',
7
+ ' / ____/ ____ ____ / /_ ___ _ __ / /_ / //_/ (_) / /_ ',
8
+ ' / / / __ \\ / __ \\ / __/ / _ \\ | |/_/ / __/ / ,< / / / __/ ',
9
+ '/ /___ / /_/ / / / / / / /_ / __/ _> < / /_ / /| | / / / /_ ',
10
+ '\\____/ \\____/ /_/ /_/ \\__/ \\___/ /_/|_| \\__/ /_/ |_| /_/ \\__/ ',
11
+ ];
12
+
13
+ // ── Color helpers ──────────────────────────────────────────────────────────
14
+
15
+ /**
16
+ * Convert HSL (h: 0–360, s: 0–100, l: 0–100) to [r, g, b] (0–255).
17
+ * Standard algorithm — no dependencies.
18
+ */
19
+ function hslToRgb(h, s, l) {
20
+ s /= 100;
21
+ l /= 100;
22
+ const k = n => (n + h / 30) % 12;
23
+ const a = s * Math.min(l, 1 - l);
24
+ const f = n => l - a * Math.max(-1, Math.min(k(n) - 3, Math.min(9 - k(n), 1)));
25
+ return [Math.round(f(0) * 255), Math.round(f(8) * 255), Math.round(f(4) * 255)];
26
+ }
27
+
28
+ // ── Banner ─────────────────────────────────────────────────────────────────
29
+
30
+ function printBanner() {
31
+ const maxLen = Math.max(...LINES.map(l => l.length));
32
+
33
+ console.log('');
34
+ LINES.forEach(line => {
35
+ const colored = line.split('').map((char, i) => {
36
+ if (char === ' ') return ' ';
37
+ // Cycle hues 20–290°: warm red → yellow → green → cyan → blue
38
+ const hue = (i / maxLen) * 270 + 20;
39
+ const [r, g, b] = hslToRgb(hue, 100, 65);
40
+ return chalk.rgb(r, g, b)(char);
41
+ }).join('');
42
+ console.log(colored);
43
+ });
44
+ console.log('');
45
+ }
46
+
47
+ module.exports = { printBanner, hslToRgb };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nolrm/contextkit",
3
- "version": "0.12.15",
3
+ "version": "0.12.17",
4
4
  "description": "ContextKit - Context Engineering for AI Development. Provide rich context to AI through structured MD files with standards, code guides, and documentation. Works with Cursor, Claude, Aider, VS Code Copilot, and more.",
5
5
  "main": "lib/index.js",
6
6
  "bin": {