@creator-notes/cnotes 0.21.1 → 0.23.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/dist/cn.js CHANGED
@@ -9,6 +9,7 @@ import { refreshInstalledSkills } from "./lib/install-skill.js";
9
9
  import { registerAuthCommands } from "./commands/auth.js";
10
10
  import { registerConfigCommands } from "./commands/config.js";
11
11
  import { registerWorkspaceCommands } from "./commands/workspace.js";
12
+ import { registerUpgradeCommand } from "./commands/upgrade.js";
12
13
  import { registerNotesCommands } from "./commands/notes.js";
13
14
  import { registerVersionsCommands } from "./commands/versions.js";
14
15
  import { registerCanvasCommands } from "./commands/canvas.js";
@@ -24,6 +25,7 @@ import { registerSchemaCommand } from "./commands/schema.js";
24
25
  import { registerThemeCommands } from "./commands/theme.js";
25
26
  import { registerOperationsCommands } from "./commands/operations.js";
26
27
  import { registerFeedbackCommands } from "./commands/feedback.js";
28
+ import { registerSkillsCommands } from "./commands/skills.js";
27
29
  import { registerClaudeHookCommand } from "./commands/claude-hook.js";
28
30
  import { loadConfig, getServerConfig } from "./lib/auth-store.js";
29
31
  import { handleError } from "./lib/errors.js";
@@ -43,6 +45,7 @@ Examples:
43
45
  $ cnotes notes get MEETING-12 PRD-3 IDEA-7
44
46
  $ cnotes search semantic "user retention" --limit 5
45
47
  $ cnotes canvas place <canvasId> --spec ./layout.json
48
+ $ cnotes skills install fat-marker # add the storyboard skill to your agent
46
49
  $ cnotes notes list --fields displayId,title,type # trim output to chosen keys
47
50
  $ cnotes schema --json # describe types, relationships, exit codes
48
51
 
@@ -58,6 +61,7 @@ registerInitCommand(program);
58
61
  registerAuthCommands(program);
59
62
  registerConfigCommands(program);
60
63
  registerWorkspaceCommands(program);
64
+ registerUpgradeCommand(program);
61
65
  registerNotesCommands(program);
62
66
  registerVersionsCommands(program);
63
67
  registerCanvasCommands(program);
@@ -72,6 +76,7 @@ registerSchemaCommand(program);
72
76
  registerThemeCommands(program);
73
77
  registerOperationsCommands(program);
74
78
  registerFeedbackCommands(program);
79
+ registerSkillsCommands(program);
75
80
  registerClaudeHookCommand(program);
76
81
  // Default action: show help + first-run hint when invoked with no arguments
77
82
  program.action(() => {
package/dist/cn.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cn.js","sourceRoot":"","sources":["../src/cn.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cn.js","sourceRoot":"","sources":["../src/cn.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from "commander";
2
+ export declare function registerSkillsCommands(program: Command): void;
3
+ //# sourceMappingURL=skills.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skills.d.ts","sourceRoot":"","sources":["../../src/commands/skills.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAiCpC,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAqF7D"}
@@ -0,0 +1,96 @@
1
+ import { resolveBaseConfig } from "../lib/config.js";
2
+ import { handleError, ValidationError } from "../lib/errors.js";
3
+ import { outputJson } from "../lib/output.js";
4
+ import { SKILL_CATALOG, SKILL_TARGETS, resolveCatalogSkill, hasAgentConfigDir, installSkillFolder, skillTargetLabel, } from "../lib/install-skill.js";
5
+ /**
6
+ * Decide which agents to install for. An explicit `--agent` wins; otherwise
7
+ * install for every agent the user already uses (its config dir exists), and
8
+ * if they use neither yet, set both up so the skill is there whichever harness
9
+ * they fire up first.
10
+ */
11
+ function resolveTargets(agentOpt) {
12
+ if (agentOpt) {
13
+ const a = agentOpt.trim().toLowerCase();
14
+ if (a === "all")
15
+ return [...SKILL_TARGETS];
16
+ if (a === "claude" || a === "codex")
17
+ return [a];
18
+ throw new ValidationError(`Unknown --agent "${agentOpt}". Use claude, codex, or all.`);
19
+ }
20
+ const detected = SKILL_TARGETS.filter(hasAgentConfigDir);
21
+ return detected.length ? detected : [...SKILL_TARGETS];
22
+ }
23
+ export function registerSkillsCommands(program) {
24
+ const skills = program
25
+ .command("skills")
26
+ .description("Install bundled agent skills (e.g. fat-marker flows) into Claude Code or Codex");
27
+ skills
28
+ .command("list")
29
+ .description("List the skills this CLI can install")
30
+ .action(() => {
31
+ const cfg = resolveBaseConfig(program.opts());
32
+ if (cfg.json) {
33
+ outputJson(SKILL_CATALOG.map((s) => ({
34
+ name: s.name,
35
+ aliases: s.aliases,
36
+ label: s.label,
37
+ description: s.description,
38
+ auto: s.auto,
39
+ })));
40
+ return;
41
+ }
42
+ console.log("Installable skills:\n");
43
+ for (const s of SKILL_CATALOG) {
44
+ const aka = s.aliases.length ? ` (aka ${s.aliases.join(", ")})` : "";
45
+ console.log(` ${s.name}${aka}`);
46
+ console.log(` ${s.description}`);
47
+ if (s.auto)
48
+ console.log(" auto-installed by `cnotes init`");
49
+ console.log("");
50
+ }
51
+ console.log("Install one with: cnotes skills install <name>");
52
+ });
53
+ skills
54
+ .command("install <name>")
55
+ .description("Install a bundled skill into your agent's skills dir")
56
+ .option("--agent <agent>", "Which agent to install for: claude, codex, or all (default: auto-detect)")
57
+ .addHelpText("after", `
58
+ Examples:
59
+ $ cnotes skills install fat-marker
60
+ $ cnotes skills install fat-marker --agent codex
61
+ $ cnotes skills install fat-marker --agent all`)
62
+ .action((name, options) => {
63
+ const cfg = resolveBaseConfig(program.opts());
64
+ try {
65
+ const skill = resolveCatalogSkill(name);
66
+ if (!skill) {
67
+ const known = SKILL_CATALOG.map((s) => s.name).join(", ");
68
+ throw new ValidationError(`Unknown skill "${name}". Available: ${known}.`);
69
+ }
70
+ const targets = resolveTargets(options.agent);
71
+ const results = targets.map((t) => installSkillFolder(skill.name, t));
72
+ if (cfg.json) {
73
+ outputJson({ skill: skill.name, results });
74
+ return;
75
+ }
76
+ for (const r of results) {
77
+ const label = skillTargetLabel(r.target);
78
+ if (r.alreadyUpToDate) {
79
+ console.log(`✓ ${skill.label} already up to date for ${label} (${r.destPath})`);
80
+ }
81
+ else {
82
+ console.log(`✓ Installed ${skill.label} for ${label} → ${r.destPath}`);
83
+ }
84
+ }
85
+ // fat-marker also needs an authed workspace to place its filmstrip.
86
+ if (skill.name === "fat-marker-flows") {
87
+ console.log("");
88
+ console.log('Next: cnotes auth login then ask your agent to "fat-marker this flow".');
89
+ }
90
+ }
91
+ catch (error) {
92
+ handleError(error, cfg.json);
93
+ }
94
+ });
95
+ }
96
+ //# sourceMappingURL=skills.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skills.js","sourceRoot":"","sources":["../../src/commands/skills.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import { Command } from "commander";
2
+ /**
3
+ * `cnotes upgrade` (alias `cnotes trial`)
4
+ *
5
+ * CLI and API writes require a Pro workspace. When a write hits the free-plan
6
+ * gate (exit code 8, serverCode subscription_required), this command lets the
7
+ * workspace OWNER unblock themselves in one step: it starts the one-time,
8
+ * 7-day, no-credit-card Pro trial on the active workspace, then they re-run
9
+ * their command. If the trial was already used, it points at (and, for an
10
+ * interactive human, opens) the billing page to subscribe with a card.
11
+ */
12
+ export declare function registerUpgradeCommand(program: Command): void;
13
+ //# sourceMappingURL=upgrade.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upgrade.d.ts","sourceRoot":"","sources":["../../src/commands/upgrade.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAepC;;;;;;;;;GASG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAqF7D"}
@@ -0,0 +1,83 @@
1
+ import { ApiClient } from "../lib/api-client.js";
2
+ import { resolveConfig } from "../lib/config.js";
3
+ import { handleError, ApiError } from "../lib/errors.js";
4
+ import { outputJson } from "../lib/output.js";
5
+ /**
6
+ * `cnotes upgrade` (alias `cnotes trial`)
7
+ *
8
+ * CLI and API writes require a Pro workspace. When a write hits the free-plan
9
+ * gate (exit code 8, serverCode subscription_required), this command lets the
10
+ * workspace OWNER unblock themselves in one step: it starts the one-time,
11
+ * 7-day, no-credit-card Pro trial on the active workspace, then they re-run
12
+ * their command. If the trial was already used, it points at (and, for an
13
+ * interactive human, opens) the billing page to subscribe with a card.
14
+ */
15
+ export function registerUpgradeCommand(program) {
16
+ program
17
+ .command("upgrade")
18
+ .alias("trial")
19
+ .description("Start the free 7-day Pro trial on the active workspace (no credit card) so CLI/API writes work")
20
+ .addHelpText("after", `
21
+ Examples:
22
+ $ cnotes upgrade # start the free Pro trial on the active workspace
23
+ $ cnotes upgrade -w <id> # target a specific workspace
24
+ $ cnotes upgrade --json # machine-readable result
25
+
26
+ Notes:
27
+ CLI and API writes require Pro. This starts the one-time, 7-day, no-credit-card
28
+ trial on your active workspace, then you can retry your command. Only the
29
+ workspace owner can start the trial. If the trial is already used, you'll be
30
+ pointed to the billing page to subscribe ($49/mo).
31
+ `)
32
+ .action(async () => {
33
+ const opts = program.opts();
34
+ const cfg = resolveConfig(opts); // requires a token + an active workspace
35
+ const api = new ApiClient(cfg.serverUrl, cfg.token);
36
+ const billingUrl = `${cfg.serverUrl.replace(/\/$/, "")}/workspace/${cfg.workspaceId}/billing`;
37
+ try {
38
+ const res = await api.post(`/api/workspaces/${cfg.workspaceId}/trial`, {});
39
+ if (cfg.json) {
40
+ outputJson(res);
41
+ return;
42
+ }
43
+ if (res.outcome === "already_active") {
44
+ console.log("This workspace is already on Pro (or has an active trial). CLI and API writes are unlocked. " +
45
+ "Re-run your command; if it still fails, it is not a billing issue.");
46
+ return;
47
+ }
48
+ const ends = res.trialEndsAt
49
+ ? new Date(res.trialEndsAt).toLocaleDateString()
50
+ : undefined;
51
+ console.log(`Pro trial started${ends ? `, active until ${ends}` : ""}. ` +
52
+ `This is your one free 7-day trial and cannot be restarted. ` +
53
+ `CLI and API writes are unlocked. Re-run your command.`);
54
+ }
55
+ catch (error) {
56
+ // Trial already used: the only path is a card subscription (browser-only
57
+ // Stripe checkout). For an interactive human, open the billing page;
58
+ // otherwise fall through to the standard error handling so agents get a
59
+ // clean exit code + the upgrade URL in the hint.
60
+ if (error instanceof ApiError &&
61
+ error.serverCode === "trial_used" &&
62
+ process.stdout.isTTY &&
63
+ !cfg.json) {
64
+ // Use the CLI's own origin (cfg.serverUrl), not the server-built
65
+ // upgradeUrl, which derives from appUrl() and can point at the wrong
66
+ // host on self-hosted/dev where NEXT_PUBLIC_APP_URL is unset.
67
+ const url = billingUrl;
68
+ console.log("Your free Pro trial has already been used on this workspace.");
69
+ console.log(`Opening the billing page to subscribe: ${url}`);
70
+ try {
71
+ const open = (await import("open")).default;
72
+ await open(url);
73
+ }
74
+ catch {
75
+ /* headless — the printed URL is the fallback */
76
+ }
77
+ return;
78
+ }
79
+ handleError(error, cfg.json);
80
+ }
81
+ });
82
+ }
83
+ //# sourceMappingURL=upgrade.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upgrade.js","sourceRoot":"","sources":["../../src/commands/upgrade.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAW9C;;;;;;;;;GASG;AACH,MAAM,UAAU,sBAAsB,CAAC,OAAgB;IACrD,OAAO;SACJ,OAAO,CAAC,SAAS,CAAC;SAClB,KAAK,CAAC,OAAO,CAAC;SACd,WAAW,CACV,gGAAgG,CACjG;SACA,WAAW,CACV,OAAO,EACP;;;;;;;;;;;CAWL,CACI;SACA,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;QAC5B,MAAM,GAAG,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,yCAAyC;QAC1E,MAAM,GAAG,GAAG,IAAI,SAAS,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;QACpD,MAAM,UAAU,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,cAAc,GAAG,CAAC,WAAW,UAAU,CAAC;QAE9F,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,IAAI,CACxB,mBAAmB,GAAG,CAAC,WAAW,QAAQ,EAC1C,EAAE,CACH,CAAC;YAEF,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;gBACb,UAAU,CAAC,GAAG,CAAC,CAAC;gBAChB,OAAO;YACT,CAAC;YAED,IAAI,GAAG,CAAC,OAAO,KAAK,gBAAgB,EAAE,CAAC;gBACrC,OAAO,CAAC,GAAG,CACT,8FAA8F;oBAC5F,oEAAoE,CACvE,CAAC;gBACF,OAAO;YACT,CAAC;YAED,MAAM,IAAI,GAAG,GAAG,CAAC,WAAW;gBAC1B,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,kBAAkB,EAAE;gBAChD,CAAC,CAAC,SAAS,CAAC;YACd,OAAO,CAAC,GAAG,CACT,oBAAoB,IAAI,CAAC,CAAC,CAAC,kBAAkB,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI;gBAC1D,6DAA6D;gBAC7D,uDAAuD,CAC1D,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,yEAAyE;YACzE,qEAAqE;YACrE,wEAAwE;YACxE,iDAAiD;YACjD,IACE,KAAK,YAAY,QAAQ;gBACzB,KAAK,CAAC,UAAU,KAAK,YAAY;gBACjC,OAAO,CAAC,MAAM,CAAC,KAAK;gBACpB,CAAC,GAAG,CAAC,IAAI,EACT,CAAC;gBACD,iEAAiE;gBACjE,qEAAqE;gBACrE,8DAA8D;gBAC9D,MAAM,GAAG,GAAG,UAAU,CAAC;gBACvB,OAAO,CAAC,GAAG,CACT,8DAA8D,CAC/D,CAAC;gBACF,OAAO,CAAC,GAAG,CAAC,0CAA0C,GAAG,EAAE,CAAC,CAAC;gBAC7D,IAAI,CAAC;oBACH,MAAM,IAAI,GAAG,CAAC,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;oBAC5C,MAAM,IAAI,CAAC,GAAG,CAAC,CAAC;gBAClB,CAAC;gBAAC,MAAM,CAAC;oBACP,gDAAgD;gBAClD,CAAC;gBACD,OAAO;YACT,CAAC;YACD,WAAW,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -95,7 +95,7 @@ export class ApiError extends CliError {
95
95
  const hint = typeof body.hint === "string"
96
96
  ? body.hint
97
97
  : serverCode === "subscription_required"
98
- ? "This workspace needs Pro for CLI/API writes. Start a free trial on its billing page, then retry."
98
+ ? "This workspace is on the free plan. Run `cnotes upgrade` to start a free 7-day Pro trial (no card), then retry."
99
99
  : hintForStatus(status, baseMsg, resource);
100
100
  super(msg, exitCode, hint);
101
101
  this.status = status;
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/lib/errors.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/lib/errors.ts"],"names":[],"mappings":"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"}
@@ -30,6 +30,34 @@ export declare function hasAgentConfigDir(target: SkillTarget): boolean;
30
30
  export declare function skillAlreadyInstalled(target?: SkillTarget): boolean;
31
31
  /** True if a target still has the old `cn` skill installed. */
32
32
  export declare function legacySkillInstalled(target: SkillTarget): boolean;
33
+ /**
34
+ * A skill the user can install with `cnotes skills install <name>`.
35
+ *
36
+ * Unlike the auto-installed `cnotes` skill (a single SKILL.md), catalog skills
37
+ * can be whole folders — e.g. `fat-marker-flows` ships SKILL.md plus an
38
+ * `examples/` set of reference keyframes the skill tells the agent to read.
39
+ * The source folder lives at `<package>/skills/<name>/`.
40
+ */
41
+ export interface CatalogSkill {
42
+ /** Canonical name = the folder agents discover it under (skills/<name>/). */
43
+ name: string;
44
+ /** Extra names accepted on the CLI (case-insensitive). */
45
+ aliases: string[];
46
+ label: string;
47
+ description: string;
48
+ /** True for skills `cnotes init` auto-installs (the cnotes skill itself). */
49
+ auto: boolean;
50
+ }
51
+ export declare const SKILL_CATALOG: CatalogSkill[];
52
+ /** Resolve a CLI-provided name/alias to a catalog skill (case-insensitive). */
53
+ export declare function resolveCatalogSkill(query: string): CatalogSkill | undefined;
54
+ /**
55
+ * Copy a bundled skill *folder* (SKILL.md plus any assets) into a target
56
+ * agent's skills dir. Overwrites an existing copy so re-running upgrades it.
57
+ * "Up to date" is judged cheaply by comparing the SKILL.md bytes — the version
58
+ * bumps that file whenever the skill changes.
59
+ */
60
+ export declare function installSkillFolder(name: string, target: SkillTarget): SkillInstallResult;
33
61
  /**
34
62
  * Refresh ALREADY-installed skill copies if the bundled copy has changed.
35
63
  *
@@ -1 +1 @@
1
- {"version":3,"file":"install-skill.d.ts","sourceRoot":"","sources":["../../src/lib/install-skill.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAOH,mDAAmD;AACnD,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,OAAO,CAAC;AAE7C,eAAO,MAAM,aAAa,EAAE,WAAW,EAAwB,CAAC;AAEhE,sEAAsE;AACtE,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CAE5D;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,WAAW,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAOD,kEAAkE;AAClE,wBAAgB,mBAAmB,IAAI,MAAM,CAG5C;AAED,6DAA6D;AAC7D,wBAAgB,gBAAgB,CAAC,MAAM,GAAE,WAAsB,GAAG,MAAM,CAEvE;AAED,0EAA0E;AAC1E,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAE9D;AAED,iEAAiE;AACjE,wBAAgB,qBAAqB,CAAC,MAAM,GAAE,WAAsB,GAAG,OAAO,CAE7E;AAOD,+DAA+D;AAC/D,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAEjE;AAoBD;;;;;;;;;GASG;AACH,wBAAgB,sBAAsB,IAAI,kBAAkB,EAAE,CAc7D;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,MAAM,GAAE,WAAsB,GAAG,kBAAkB,CAgB/E"}
1
+ {"version":3,"file":"install-skill.d.ts","sourceRoot":"","sources":["../../src/lib/install-skill.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAOH,mDAAmD;AACnD,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,OAAO,CAAC;AAE7C,eAAO,MAAM,aAAa,EAAE,WAAW,EAAwB,CAAC;AAEhE,sEAAsE;AACtE,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CAE5D;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,WAAW,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAOD,kEAAkE;AAClE,wBAAgB,mBAAmB,IAAI,MAAM,CAG5C;AAED,6DAA6D;AAC7D,wBAAgB,gBAAgB,CAAC,MAAM,GAAE,WAAsB,GAAG,MAAM,CAEvE;AAED,0EAA0E;AAC1E,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAE9D;AAED,iEAAiE;AACjE,wBAAgB,qBAAqB,CAAC,MAAM,GAAE,WAAsB,GAAG,OAAO,CAE7E;AAOD,+DAA+D;AAC/D,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAEjE;AAwBD;;;;;;;GAOG;AACH,MAAM,WAAW,YAAY;IAC3B,6EAA6E;IAC7E,IAAI,EAAE,MAAM,CAAC;IACb,0DAA0D;IAC1D,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,6EAA6E;IAC7E,IAAI,EAAE,OAAO,CAAC;CACf;AAED,eAAO,MAAM,aAAa,EAAE,YAAY,EAiBvC,CAAC;AAEF,+EAA+E;AAC/E,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAK3E;AAaD;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,kBAAkB,CAiBxF;AAED;;;;;;;;;GASG;AACH,wBAAgB,sBAAsB,IAAI,kBAAkB,EAAE,CAc7D;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,MAAM,GAAE,WAAsB,GAAG,kBAAkB,CAgB/E"}
@@ -9,7 +9,7 @@
9
9
  * At runtime this file lives at <package>/dist/lib/install-skill.js, so the
10
10
  * skill source is two directories up.
11
11
  */
12
- import { copyFileSync, existsSync, mkdirSync, readFileSync, rmSync } from "fs";
12
+ import { copyFileSync, cpSync, existsSync, mkdirSync, readFileSync, rmSync } from "fs";
13
13
  import { dirname, resolve } from "path";
14
14
  import { homedir } from "os";
15
15
  import { fileURLToPath } from "url";
@@ -66,6 +66,56 @@ function filesAreIdentical(a, b) {
66
66
  return false;
67
67
  }
68
68
  }
69
+ export const SKILL_CATALOG = [
70
+ {
71
+ name: "cnotes",
72
+ aliases: [],
73
+ label: "CreatorNotes CLI",
74
+ description: "Drive notes, canvases, search, and relationships from the terminal.",
75
+ auto: true,
76
+ },
77
+ {
78
+ name: "fat-marker-flows",
79
+ aliases: ["fat-marker", "fatmarker", "fat-markers", "fatmarkers"],
80
+ label: "Fat-marker flows",
81
+ description: "Storyboard a UI flow as rough Shape Up 'broad-strokes' keyframes and lay them on a canvas as a left-to-right filmstrip.",
82
+ auto: false,
83
+ },
84
+ ];
85
+ /** Resolve a CLI-provided name/alias to a catalog skill (case-insensitive). */
86
+ export function resolveCatalogSkill(query) {
87
+ const q = query.trim().toLowerCase();
88
+ return SKILL_CATALOG.find((s) => s.name.toLowerCase() === q || s.aliases.some((a) => a.toLowerCase() === q));
89
+ }
90
+ /** Where a bundled skill's source folder lives inside the installed package. */
91
+ function bundledSkillDir(name) {
92
+ const __dirname = dirname(fileURLToPath(import.meta.url));
93
+ return resolve(__dirname, "..", "..", "skills", name);
94
+ }
95
+ /** Where a skill folder should be copied for a given agent. */
96
+ function skillFolderDest(name, target) {
97
+ return resolve(agentConfigDir(target), "skills", name);
98
+ }
99
+ /**
100
+ * Copy a bundled skill *folder* (SKILL.md plus any assets) into a target
101
+ * agent's skills dir. Overwrites an existing copy so re-running upgrades it.
102
+ * "Up to date" is judged cheaply by comparing the SKILL.md bytes — the version
103
+ * bumps that file whenever the skill changes.
104
+ */
105
+ export function installSkillFolder(name, target) {
106
+ const source = bundledSkillDir(name);
107
+ if (!existsSync(source)) {
108
+ throw new Error(`Bundled skill "${name}" not found at ${source}`);
109
+ }
110
+ const dest = skillFolderDest(name, target);
111
+ const upToDate = existsSync(dest) &&
112
+ filesAreIdentical(resolve(source, "SKILL.md"), resolve(dest, "SKILL.md"));
113
+ if (!upToDate) {
114
+ mkdirSync(dirname(dest), { recursive: true });
115
+ cpSync(source, dest, { recursive: true });
116
+ }
117
+ return { target, installed: !upToDate, destPath: dest, alreadyUpToDate: upToDate };
118
+ }
69
119
  /**
70
120
  * Refresh ALREADY-installed skill copies if the bundled copy has changed.
71
121
  *
@@ -1 +1 @@
1
- {"version":3,"file":"install-skill.js","sourceRoot":"","sources":["../../src/lib/install-skill.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"install-skill.js","sourceRoot":"","sources":["../../src/lib/install-skill.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@creator-notes/cnotes",
3
- "version": "0.21.1",
3
+ "version": "0.23.0",
4
4
  "description": "CLI for CreatorNotes — create notes, build canvases, search knowledge from the terminal",
5
5
  "type": "module",
6
6
  "bin": {
@@ -0,0 +1,194 @@
1
+ ---
2
+ name: fat-marker-flows
3
+ description: Generate Shape Up "fat-marker" broad-strokes mockup keyframes of a UI flow with an image model, then lay them on a CreatorNotes canvas as a left-to-right user-journey filmstrip. Use when the user wants to SEE a proposed flow ("mock this up", "show me what it would look like", "fat-marker / broad-strokes sketch", "fat marker mockup", "keyframes", "storyboard the flow", "user journey on the canvas") rather than read about it.
4
+ ---
5
+
6
+ # Fat-Marker Flows (Shape Up broad-strokes keyframes on a canvas)
7
+
8
+ Turn a described flow into a small set of deliberately rough sketch images, one per key moment, and place them on a CreatorNotes canvas as a numbered left-to-right journey. The output helps a reader *feel* the interaction without anyone mistaking it for finished design.
9
+
10
+ ---
11
+
12
+ ## The fidelity principle (do not skip)
13
+
14
+ Use **fat-marker / broad-strokes fidelity** (from Shape Up). Thick hand-drawn marker, rough boxes, handwritten labels, almost no detail. This is intentional:
15
+
16
+ - It makes people react to the **shape of the flow**, not fonts, spacing, or color.
17
+ - It signals "this is still wet clay, push back on it," which polished mockups suppress.
18
+ - It is fast and cheap to regenerate when the shape changes.
19
+
20
+ Resist the urge to make it pretty. If it looks like a real screenshot, you have failed the brief.
21
+
22
+ ---
23
+
24
+ ## Reference examples (look at these first)
25
+
26
+ `examples/` holds a real six-frame journey produced with this skill (the CreatorNotes "Home canvas as a multi-view lens" flow). **Read a couple of them before generating** to calibrate the target fidelity and the coral-accent discipline:
27
+
28
+ - `01-timeline-view.png` — the starting state, with the `Timeline · Manual · By theme · +` tab chrome
29
+ - `02-switch-manual-drag.png` — a card mid-drag with a dashed "was-here" outline and a coral drag arrow
30
+ - `03-flip-back-nothing-lost.png` — back to Timeline, the card returned, coral check
31
+ - `04-by-theme-zoom-out.png` — clustered theme blobs
32
+ - `05-ask-for-a-view.png` — prompt bar plus a dashed Preview with Save/Discard
33
+ - `06-save-as-lens.png` — a new named tab added to the switcher
34
+
35
+ What to copy from them: the same window + tab row in every frame, one coral-highlighted change per frame, a circled number, a handwritten title, and a one-line caption stating the step's promise.
36
+
37
+ ---
38
+
39
+ ## Step 0 — Scope ONE flow and list the keyframes
40
+
41
+ A keyframe is a **key moment in a single flow**, not a screen inventory. Before generating:
42
+
43
+ 1. Pick one flow (e.g. "drag a portal, flip back, save a view"). Don't mix flows.
44
+ 2. List 4–7 keyframes. Each is a state where **something changed** from the prior frame.
45
+ 3. Decide the **shared chrome** that stays identical across every frame (same window, same tab bar, same panel). Only the changed thing differs frame to frame. Consistent chrome is what makes the set read as one continuous journey.
46
+ 4. For each frame, write: a circled number, a short title, what the user just did, the one element to highlight, and a one-line caption that states the *promise* of that step.
47
+
48
+ Keep captions free of em dashes (house style).
49
+
50
+ ---
51
+
52
+ ## Step 1 — The reusable style preamble
53
+
54
+ Prepend this verbatim to every frame's prompt so the set is visually consistent:
55
+
56
+ ```
57
+ Fat-marker product sketch in the Shape Up "broad strokes" style: thick black marker
58
+ on off-white paper, deliberately rough and low-fidelity, hand-drawn rectangles and
59
+ handwritten labels, like a quick whiteboard wireframe. NOT a polished UI: no gradients,
60
+ no realistic chrome, no photorealism, no fine detail. Use ONE accent color, a warm
61
+ coral-pink, and ONLY on the single active or changed element. Lots of whitespace. It
62
+ should read as one storyboard keyframe that shows the SHAPE of an interaction, not its
63
+ visual design.
64
+ ```
65
+
66
+ (The coral accent matches the CreatorNotes brand. Swap the accent if the project's brand differs, but keep it to ONE color used only on the changed element.)
67
+
68
+ Then add the frame-specific content: the circled number, the title, the shared chrome (describe it the same way every frame), and the one thing that changed. Be concrete and literal so the model draws the right boxes and labels.
69
+
70
+ ---
71
+
72
+ ## Step 2 — Generate (test one, then batch)
73
+
74
+ Generate each frame with `cnotes files gen-image`: it produces the image with an image model
75
+ **and stores it in the workspace**, returning a ready-to-use URL. No local API key and no repo
76
+ checkout needed. The prompt goes on **stdin** (so you don't escape quotes); use `--aspect 16:9`
77
+ for screen-like frames and `--json` so you can read `.storageId` and `.fullUrl`.
78
+
79
+ ```bash
80
+ WS=<workspaceId> # e.g. your Private workspace for internal work
81
+ mkdir -p /tmp/mockups && cd /tmp/mockups
82
+
83
+ # Frame 1 — generate, capture the JSON, then LOOK at it before batching the rest.
84
+ cnotes files gen-image --aspect 16:9 -w "$WS" --json <<'PROMPT' > kf1.json
85
+ <style preamble>
86
+
87
+ Content of this frame:
88
+ - A hand-drawn circled number "1" in the top-left corner.
89
+ - Handwritten title across the top: "...".
90
+ - <shared chrome described literally>
91
+ - <the one highlighted/changed element, in coral>
92
+ - A handwritten caption along the bottom: "...".
93
+ PROMPT
94
+
95
+ # Download the pixels and Read them to confirm the style landed.
96
+ cnotes files get "$(node -e 'console.log(JSON.parse(require("fs").readFileSync("kf1.json","utf8")).storageId)')" -o /tmp/mockups/kf1.png
97
+ ```
98
+
99
+ **Always generate frame 1 first and look at it** (Read `/tmp/mockups/kf1.png`) to confirm the
100
+ fidelity lands before spending calls on the rest. Once it's right, generate the remaining frames
101
+ the same way (one `gen-image` call each), re-pasting the same style preamble and the same chrome
102
+ description in every frame. Collect each frame's `.fullUrl`, **in frame order**, into `urls.txt`:
103
+
104
+ ```bash
105
+ # Repeat per frame; appends the fullUrl in order.
106
+ cnotes files gen-image --aspect 16:9 -w "$WS" --json <<'PROMPT' \
107
+ | node -e 'let s="";process.stdin.on("data",d=>s+=d).on("end",()=>console.log(JSON.parse(s).fullUrl))' >> urls.txt
108
+ <style preamble + this frame's content>
109
+ PROMPT
110
+ ```
111
+
112
+ Then look at every frame and check: same chrome across all, coral only on the changed thing,
113
+ numbers in order, captions legible, the sequence tells the story.
114
+
115
+ > **Admins** generate server-side with no local key. **Everyone else** adds `--byo-key` after
116
+ > setting `GOOGLE_GENERATIVE_AI_API_KEY` (get a key at ai.google.dev): the image is then generated
117
+ > on the local machine and uploaded, and the key never leaves it. See `cnotes files gen-image --help`.
118
+
119
+ ---
120
+
121
+ ## Step 3 — Place on the canvas as a journey filmstrip
122
+
123
+ Use the `cnotes` CLI. Wrap the canvas writes in an operation. Step 2 already stored each image and
124
+ gave you a `fullUrl` per frame (in `urls.txt`, frame order), so there is **no separate upload
125
+ step** — just place the URLs as a horizontal stack (the filmstrip) with a header above.
126
+
127
+ ```bash
128
+ WS=<workspaceId>
129
+ CANVAS=<canvasId>
130
+ cd /tmp/mockups # where urls.txt from Step 2 lives
131
+
132
+ cnotes operations begin -w "$WS" --prompt "Add fat-marker user-journey keyframes for <flow>" --json >/dev/null
133
+ # urls.txt already holds one fullUrl per line, in frame order, from Step 2.
134
+ ```
135
+
136
+ Build a `place` spec where each frame is a `richtext` item whose content is just `![Keyframe N](<fullUrl>)`, wrapped in a horizontal stack, with a header richtext above it:
137
+
138
+ ```js
139
+ // build-journey.js — writes journey.json
140
+ const fs = require('fs');
141
+ const urls = fs.readFileSync('urls.txt','utf8').trim().split('\n');
142
+ const imgs = urls.map((u,i)=>({kind:'item',type:'richtext',size:'medium',key:`kf${i+1}`,content:`![Keyframe ${i+1}](${u})`}));
143
+ const spec = { root: { kind:'stack', axis:'vertical', gap:'medium', align:'start', items:[
144
+ {kind:'item',type:'richtext',size:'medium',content:'# User journey: <flow>\n\nFat-marker keyframes (broad strokes). Read left to right, 1 to N. Coral marks the active or changed thing.'},
145
+ {kind:'stack', axis:'horizontal', gap:'medium', align:'start', items:imgs},
146
+ ]}};
147
+ fs.writeFileSync('journey.json', JSON.stringify(spec));
148
+ ```
149
+
150
+ ```bash
151
+ node build-journey.js
152
+ cnotes canvas place $CANVAS -w $WS --spec ./journey.json --json > placed.json
153
+ ```
154
+
155
+ ---
156
+
157
+ ## Step 4 — Position the band (the bulk-move offset trick)
158
+
159
+ `cnotes canvas place` **ignores an absolute origin** and appends the new block *below* existing content. To put the filmstrip somewhere specific (e.g. a hero band above the title), read the returned positions, compute one uniform offset, and `bulk-move` the whole group so the relative layout is preserved:
160
+
161
+ ```js
162
+ // move-to-top.js
163
+ const fs=require('fs'); const p=require('./placed.json'); const items=p.items||[];
164
+ const minY=Math.min(...items.map(i=>i.positionY));
165
+ const dy=-1500-minY; // move the group's top edge to y = -1500 (above content at y=100)
166
+ const moves=items.map(i=>({nodeId:i.id,nodeType:'richtext',x:i.positionX,y:Math.round(i.positionY+dy)}));
167
+ fs.writeFileSync('moves.json',JSON.stringify(moves));
168
+ ```
169
+
170
+ ```bash
171
+ node move-to-top.js
172
+ cnotes canvas bulk-move $CANVAS -w $WS --moves "$(cat moves.json)"
173
+ cnotes operations end -w $WS
174
+ ```
175
+
176
+ ---
177
+
178
+ ## Gotchas (learned the hard way)
179
+
180
+ - **Edges cannot connect richtext/image nodes.** `cnotes canvas add-edge` / `place` edges between image stickies return a server error. Carry the sequence with the **circled numbers and left-to-right layout**, not drawn arrows. (If arrows are essential, use small numbered text stickies between frames as a workaround.)
181
+ - **`place` ignores absolute origin** and appends below existing content. Use the bulk-move offset trick above to reposition.
182
+ - **richtext size presets:** `large` ≈ 1680px wide, `medium` ≈ 1120px, `small` ≈ 560px. For a 6-frame filmstrip, `medium` is the sweet spot; `large` makes a ~11,000px strip nobody can pan.
183
+ - **Don't verify by grepping `![` in node content.** CreatorNotes converts the image markdown into a TipTap image node on save, so the raw content no longer contains `![`. Verify instead by counting richtext nodes / their positions (e.g. nodes with negative Y for a top band).
184
+ - **No local key needed (admin).** `cnotes files gen-image` generates server-side, so there's nothing to export. Non-admins pass `--byo-key` after setting `GOOGLE_GENERATIVE_AI_API_KEY`; the image is generated locally and the key never leaves the machine.
185
+ - **Internal/working mockups go in the Private workspace.** Use `-w <privateId>` and verify with `cnotes workspace current`.
186
+ - **One change per frame.** If two things differ between adjacent frames, split into two frames. Ambiguity about "what changed" is what makes a storyboard unreadable.
187
+
188
+ ---
189
+
190
+ ## When NOT to use this
191
+
192
+ - The user wants production-ready, pixel-accurate UI: use a real design tool, not fat-marker sketches.
193
+ - It's a single static screen with no flow: one sketch is fine, skip the journey scaffolding.
194
+ - The decision is still about the *problem*, not a solution shape: shape it in words first (see the shaping / framing-doc skills) before drawing keyframes of a solution you haven't chosen.