@kivimedia/kmhub 2.9.0 → 2.9.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kivimedia/kmhub",
3
- "version": "2.9.0",
3
+ "version": "2.9.1",
4
4
  "description": "KM Hub Terminal Mode. Installs the KM Hub MCP connector into your own Claude Code on your own machine, and ships the kmhub CLI that registers, updates and diagnoses it.",
5
5
  "keywords": [
6
6
  "kmhub",
@@ -1,5 +1,5 @@
1
1
  ---
2
- description: "The KM Hub day briefing: what needs you today, ranked, with the reason each thing is on the list. Use for /kmhub:briefing, or when the user says what needs me today, what have I got on, morning, catch me up, where are we, what should I do first, anything urgent, what did I miss, or opens a session with no specific task."
2
+ description: "The KM Hub day briefing: what needs you today, ranked, with the reason each thing is on the list. Use for /kmhub-briefing, or when the user says what needs me today, what have I got on, morning, catch me up, where are we, what should I do first, anything urgent, what did I miss, or opens a session with no specific task."
3
3
  disable-model-invocation: false
4
4
  ---
5
5
 
@@ -22,7 +22,7 @@ The ranking is deliberate. A new enquiry nobody has answered and a reply nobody
22
22
 
23
23
  - Read the `notes` array and the `complete` flag. When a part of the workspace could not be read, the briefing says which part. Pass that on rather than presenting a partial day as the whole day.
24
24
  - `counts.truncated` means there was more than you were shown. Say how many.
25
- - If `suggested_play` came back, offer it in one line and name `/kmhub:play`. Offer it; do not start it.
25
+ - If `suggested_play` came back, offer it in one line and name `/kmhub-play`. Offer it; do not start it.
26
26
 
27
27
  ## Then stop
28
28
 
package/prompts/luxury.md CHANGED
@@ -1,5 +1,5 @@
1
1
  ---
2
- description: "Explain and run the luxury plays: the brand and pricing family built from The Luxury Strategy. Use for /kmhub:luxury, or when the user asks what the luxury plays are, which one to run first, in what order, or says their prices feel too low, their website undersells them, they are thinking of discounting, adding a service, or wondering what to say about price on a call."
2
+ description: "Explain and run the luxury plays: the brand and pricing family built from The Luxury Strategy. Use for /kmhub-luxury, or when the user asks what the luxury plays are, which one to run first, in what order, or says their prices feel too low, their website undersells them, they are thinking of discounting, adding a service, or wondering what to say about price on a call."
3
3
  argument-hint: nothing for the tour, or the play to run
4
4
  disable-model-invocation: false
5
5
  ---
package/prompts/play.md CHANGED
@@ -1,5 +1,5 @@
1
1
  ---
2
- description: "Browse and run a KM Hub play: the operating method behind a named piece of work, leased one step at a time. Use for /kmhub:play, when the user asks what plays or routines are available, or names one: morning sweep, handle the reply, quote and book, raise the rate, silence patrol, whale hunt, closer coach, reply coach, turn the gig into the next one, the fair buyer angle, open a new market, motorsport and fan zone. Also the luxury family, for brand and pricing work: luxury positioning check, anti-law copy review, offer ladder, discount interceptor, sell-the-price coach, clienteling memory, anticipation concierge, brand archaeology, rarity storyteller, whisper song scream, brand stretch gate, brand content gift, critical path strategist, sensitive occasion advisor, automation check."
2
+ description: "Browse and run a KM Hub play: the operating method behind a named piece of work, leased one step at a time. Use for /kmhub-play, when the user asks what plays or routines are available, or names one: morning sweep, handle the reply, quote and book, raise the rate, silence patrol, whale hunt, closer coach, reply coach, turn the gig into the next one, the fair buyer angle, open a new market, motorsport and fan zone. Also the luxury family, for brand and pricing work: luxury positioning check, anti-law copy review, offer ladder, discount interceptor, sell-the-price coach, clienteling memory, anticipation concierge, brand archaeology, rarity storyteller, whisper song scream, brand stretch gate, brand content gift, critical path strategist, sensitive occasion advisor, automation check."
3
3
  argument-hint: the play to run, or nothing to see the catalogue
4
4
  disable-model-invocation: false
5
5
  ---
package/prompts/run.md CHANGED
@@ -1,5 +1,5 @@
1
1
  ---
2
- description: "Routes any KM Hub workspace request to the connected kmhub MCP tools. Use for /kmhub:run, when the user names KM Hub, or asks about their own pipeline: clients, leads, enquiries, deals, bookings, the diary, quotes, proposals, contracts, invoices, payments, outreach drafts and replies, campaigns, tasks, lead scouts, brand voice or business facts. Not for unrelated questions, another CRM, or code in the KM Hub repo itself."
2
+ description: "Routes any KM Hub workspace request to the connected kmhub MCP tools. Use for /kmhub-run, when the user names KM Hub, or asks about their own pipeline: clients, leads, enquiries, deals, bookings, the diary, quotes, proposals, contracts, invoices, payments, outreach drafts and replies, campaigns, tasks, lead scouts, brand voice or business facts. Not for unrelated questions, another CRM, or code in the KM Hub repo itself."
3
3
  argument-hint: what you want from your workspace
4
4
  disable-model-invocation: false
5
5
  ---
@@ -8,7 +8,7 @@ disable-model-invocation: false
8
8
 
9
9
  One router into a live, subscribed KM Hub workspace. Everything here happens through the connected `kmhub` MCP server. Nothing is answered from memory.
10
10
 
11
- The request is `$ARGUMENTS`, in the user's own words. Pass it through as they wrote it. If it is empty, ask what they want rather than guessing, and offer `/kmhub:briefing` as the answer to "I do not know, what should I be doing".
11
+ The request is `$ARGUMENTS`, in the user's own words. Pass it through as they wrote it. If it is empty, ask what they want rather than guessing, and offer `/kmhub-briefing` as the answer to "I do not know, what should I be doing".
12
12
 
13
13
  ## Before anything else
14
14
 
@@ -18,7 +18,7 @@ The request is `$ARGUMENTS`, in the user's own words. Pass it through as they wr
18
18
  ## Route it
19
19
 
20
20
  - **An open question about the day** ("what needs me today", "catch me up", "where are we", "anything urgent", "what did I miss"): call `km_briefing` and answer from what it returns. Do not assemble that answer yourself out of `km_waiting` plus the list tools, and do not run those afterwards to double check.
21
- - **A named piece of work** (a follow up sweep, a reply to handle, a quote, a rate rise, a silence check, a whale hunt): this is a play. Use `/kmhub:play`, or call `km_play_catalog` then `km_play_run`.
21
+ - **A named piece of work** (a follow up sweep, a reply to handle, a quote, a rate rise, a silence check, a whale hunt): this is a play. Use `/kmhub-play`, or call `km_play_catalog` then `km_play_run`.
22
22
  - **One specific thing** ("show me the Meister invoice", "who has not signed", "what is on Thursday"): go straight to the read tool for it. `km_get_*` for one record, `km_list_*` for a set.
23
23
  - **Anything the workspace should know** ("we now charge 2,500 for corporate"): `km_propose_business_fact`. It proposes, a human confirms.
24
24
 
@@ -32,5 +32,5 @@ The request is `$ARGUMENTS`, in the user's own words. Pass it through as they wr
32
32
  ## When it will not work
33
33
 
34
34
  - **402** means the workspace subscription is not active. Stop. Their data is untouched and their key still works; the subscription needs restarting at https://hub.kivimedia.co. Do not try another route.
35
- - **401 or 403** means the key is wrong, revoked, or missing a scope. Point them at `/kmhub:setup`.
35
+ - **401 or 403** means the key is wrong, revoked, or missing a scope. Point them at `/kmhub-setup`.
36
36
  - **The kmhub server is missing entirely** means the connector is not installed in this Claude Code. Point them at https://hub.kivimedia.co/terminal/ and stop. Never ask for a Claude password, a Claude token, or their Claude account.
package/prompts/setup.md CHANGED
@@ -1,5 +1,5 @@
1
1
  ---
2
- description: "Install or refresh the KM Hub rules pack, and check whether the KM Hub connection is current. Use for /kmhub:setup, when the user says set up my KM Hub rules, or asks whether their KM Hub connection, connector or rules are up to date, out of date, or need updating."
2
+ description: "Install or refresh the KM Hub rules pack, and check whether the KM Hub connection is current. Use for /kmhub-setup, when the user says set up my KM Hub rules, or asks whether their KM Hub connection, connector or rules are up to date, out of date, or need updating."
3
3
  disable-model-invocation: false
4
4
  ---
5
5
 
@@ -1,5 +1,5 @@
1
1
  ---
2
- description: "An honest, computed comparison of KM Hub Terminal Mode against Booked Solid's terminal, from live data rather than a slide. Use for /kmhub:vs-booked, or when the user asks how KM Hub compares to Booked, whether they should switch, what the difference is, or which one does more."
2
+ description: "An honest, computed comparison of KM Hub Terminal Mode against Booked Solid's terminal, from live data rather than a slide. Use for /kmhub-vs-booked, or when the user asks how KM Hub compares to Booked, whether they should switch, what the difference is, or which one does more."
3
3
  disable-model-invocation: false
4
4
  ---
5
5
 
@@ -1,5 +1,5 @@
1
1
  ---
2
- description: "A tour of everything KM Hub can do for this business, and honestly which parts work from the terminal. Use for /kmhub:what-can-you-do, or when the user asks what KM Hub can do, what else it does, whether it handles some area of their business, whether it replaces another tool they pay for, or says they did not know it could do something."
2
+ description: "A tour of everything KM Hub can do for this business, and honestly which parts work from the terminal. Use for /kmhub-what-can-you-do, or when the user asks what KM Hub can do, what else it does, whether it handles some area of their business, whether it replaces another tool they pay for, or says they did not know it could do something."
3
3
  argument-hint: an area to focus on, or nothing for the whole product
4
4
  disable-model-invocation: false
5
5
  ---
@@ -31,7 +31,7 @@ Do not apologise for the split either. Most of the product is reachable and the
31
31
 
32
32
  Lead with what is unusual and what they are probably not using. The interesting facts are that this is not a booking tool: it runs outbound campaigns, newsletters, SEO and AI-search visibility, reviews, payroll, job costing, inventory and a set of AI officers that make recommendations. If they are comparing KM Hub to something that only handles bookings, that comparison is the thing to correct, without naming a competitor unless they do.
33
33
 
34
- The other thing they are probably not using is the plays: the methods in `km_play_catalog`, including the fifteen luxury plays built from The Luxury Strategy, which cover pricing, the offer ladder, what the website says about price, discounting, scarcity and where the marketing effort goes. If the conversation turns to money, positioning or how the business is presented, name that family and offer the play that fits (`luxury-positioning-check` is an optional second opinion, never a prerequisite), or point at `/kmhub:luxury` for the tour.
34
+ The other thing they are probably not using is the plays: the methods in `km_play_catalog`, including the fifteen luxury plays built from The Luxury Strategy, which cover pricing, the offer ladder, what the website says about price, discounting, scarcity and where the marketing effort goes. If the conversation turns to money, positioning or how the business is presented, name that family and offer the play that fits (`luxury-positioning-check` is an optional second opinion, never a prerequisite), or point at `/kmhub-luxury` for the tour.
35
35
 
36
36
  ## Finish with one offer, not ten
37
37
 
package/prompts.mjs CHANGED
@@ -14,10 +14,11 @@
14
14
  * connected servers and lists them as `/mcp__kmhub__<name>`, so their presence in the
15
15
  * menu is the connection, not a copy of something that once described it.
16
16
  *
17
- * The file copies stay for now: `/kmhub-briefing` is a friendlier thing to say on a
18
- * call than `/mcp__kmhub__briefing`, and taking a name away from clients mid-flight is
19
- * a decision for Ziv, not a side effect of this file. prompts-parity.test.mjs holds the
20
- * two copies byte-identical so the friendlier name can never drift from the real one.
17
+ * The file copies stay: `/kmhub-briefing` is a friendlier thing to say on a call than
18
+ * `/mcp__kmhub__briefing`, and since installer 1.15.0 it is the one spelling Claude Code,
19
+ * Cursor and Grok Build share, because all three read ~/.claude/commands.
20
+ * src/lib/terminal-installer-copy.test.ts holds the two copies byte-identical so the
21
+ * friendlier name can never drift from the real one.
21
22
  */
22
23
  import { readFileSync, readdirSync } from 'node:fs';
23
24
  import { dirname, join } from 'node:path';
@@ -81,7 +82,7 @@ export function registerPrompts(server) {
81
82
 
82
83
  for (const prompt of loadPromptDefinitions()) {
83
84
  // Only ask for an argument where the command actually takes one. A required-looking
84
- // empty box on /kmhub__briefing would be a small lie about how the command works.
85
+ // empty box on /mcp__kmhub__briefing would be a small lie about how the command works.
85
86
  const argsSchema = prompt.argumentHint
86
87
  ? { input: z.string().optional().describe(prompt.argumentHint) }
87
88
  : undefined;
package/tools/compare.mjs CHANGED
@@ -8,7 +8,7 @@
8
8
  * 🚨 IT COUNTS KM HUB ONLY, ON PURPOSE. The API cannot see a competitor's product,
9
9
  * and a stored figure about somebody else's software is a claim nobody can
10
10
  * re-verify and nobody notices going stale. Booked is counted from the plugin
11
- * actually installed on the reader's machine, by the /kmhub:vs-booked command, or
11
+ * actually installed on the reader's machine, by the /kmhub-vs-booked command, or
12
12
  * it is reported as not installed. Never fill the gap from memory.
13
13
  *
14
14
  * The family contract this file follows is documented in ./README.md.
package/tools.mjs CHANGED
@@ -30,7 +30,7 @@ import { readdirSync, readFileSync } from 'node:fs';
30
30
  import { z } from 'zod';
31
31
 
32
32
  export const SERVER_NAME = 'kmhub';
33
- export const SERVER_VERSION = '2.9.0';
33
+ export const SERVER_VERSION = '2.9.1';
34
34
 
35
35
  export const DEFAULT_BASE =
36
36
  process.env.KMHUB_API_BASE ||