@shrkcrft/cli 0.1.0-alpha.2 → 0.1.0-alpha.20

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.
Files changed (228) hide show
  1. package/dist/audit/knowledge-audit-llm.d.ts +19 -0
  2. package/dist/audit/knowledge-audit-llm.d.ts.map +1 -0
  3. package/dist/audit/knowledge-audit-llm.js +164 -0
  4. package/dist/audit/knowledge-audit.d.ts +61 -0
  5. package/dist/audit/knowledge-audit.d.ts.map +1 -0
  6. package/dist/audit/knowledge-audit.js +203 -0
  7. package/dist/audit/knowledge-fix-plan-llm.d.ts +11 -0
  8. package/dist/audit/knowledge-fix-plan-llm.d.ts.map +1 -0
  9. package/dist/audit/knowledge-fix-plan-llm.js +141 -0
  10. package/dist/audit/knowledge-fix-plan.d.ts +41 -0
  11. package/dist/audit/knowledge-fix-plan.d.ts.map +1 -0
  12. package/dist/audit/knowledge-fix-plan.js +125 -0
  13. package/dist/audit/pipeline-audit-llm.d.ts +11 -0
  14. package/dist/audit/pipeline-audit-llm.d.ts.map +1 -0
  15. package/dist/audit/pipeline-audit-llm.js +134 -0
  16. package/dist/audit/pipeline-audit.d.ts +69 -0
  17. package/dist/audit/pipeline-audit.d.ts.map +1 -0
  18. package/dist/audit/pipeline-audit.js +166 -0
  19. package/dist/audit/templates-audit-llm.d.ts +19 -0
  20. package/dist/audit/templates-audit-llm.d.ts.map +1 -0
  21. package/dist/audit/templates-audit-llm.js +207 -0
  22. package/dist/audit/templates-audit.d.ts +63 -0
  23. package/dist/audit/templates-audit.d.ts.map +1 -0
  24. package/dist/audit/templates-audit.js +171 -0
  25. package/dist/audit/templates-fix-plan-llm.d.ts +19 -0
  26. package/dist/audit/templates-fix-plan-llm.d.ts.map +1 -0
  27. package/dist/audit/templates-fix-plan-llm.js +162 -0
  28. package/dist/audit/templates-fix-plan.d.ts +37 -0
  29. package/dist/audit/templates-fix-plan.d.ts.map +1 -0
  30. package/dist/audit/templates-fix-plan.js +174 -0
  31. package/dist/command-registry.d.ts +28 -0
  32. package/dist/command-registry.d.ts.map +1 -1
  33. package/dist/command-registry.js +91 -1
  34. package/dist/commands/ai-status.command.d.ts +19 -0
  35. package/dist/commands/ai-status.command.d.ts.map +1 -0
  36. package/dist/commands/ai-status.command.js +94 -0
  37. package/dist/commands/api-diff.command.d.ts +11 -0
  38. package/dist/commands/api-diff.command.d.ts.map +1 -0
  39. package/dist/commands/api-diff.command.js +144 -0
  40. package/dist/commands/apply.command.d.ts.map +1 -1
  41. package/dist/commands/apply.command.js +10 -2
  42. package/dist/commands/arch.command.d.ts +9 -0
  43. package/dist/commands/arch.command.d.ts.map +1 -0
  44. package/dist/commands/arch.command.js +186 -0
  45. package/dist/commands/ask.command.d.ts.map +1 -1
  46. package/dist/commands/ask.command.js +10 -9
  47. package/dist/commands/cache-align.command.d.ts +12 -0
  48. package/dist/commands/cache-align.command.d.ts.map +1 -0
  49. package/dist/commands/cache-align.command.js +78 -0
  50. package/dist/commands/check.command.d.ts.map +1 -1
  51. package/dist/commands/check.command.js +19 -2
  52. package/dist/commands/code-intel.command.d.ts +18 -0
  53. package/dist/commands/code-intel.command.d.ts.map +1 -0
  54. package/dist/commands/code-intel.command.js +146 -0
  55. package/dist/commands/codemod.command.d.ts.map +1 -1
  56. package/dist/commands/codemod.command.js +27 -6
  57. package/dist/commands/command-catalog.d.ts +15 -3
  58. package/dist/commands/command-catalog.d.ts.map +1 -1
  59. package/dist/commands/command-catalog.js +387 -34
  60. package/dist/commands/commands.command.d.ts.map +1 -1
  61. package/dist/commands/commands.command.js +4 -4
  62. package/dist/commands/completion.command.d.ts +10 -0
  63. package/dist/commands/completion.command.d.ts.map +1 -0
  64. package/dist/commands/completion.command.js +121 -0
  65. package/dist/commands/compress.command.d.ts +8 -0
  66. package/dist/commands/compress.command.d.ts.map +1 -0
  67. package/dist/commands/compress.command.js +147 -0
  68. package/dist/commands/constructs.command.d.ts.map +1 -1
  69. package/dist/commands/constructs.command.js +89 -23
  70. package/dist/commands/context.command.d.ts.map +1 -1
  71. package/dist/commands/context.command.js +121 -1
  72. package/dist/commands/contract-gate.command.d.ts.map +1 -1
  73. package/dist/commands/contract-gate.command.js +5 -1
  74. package/dist/commands/delegate.command.d.ts +65 -0
  75. package/dist/commands/delegate.command.d.ts.map +1 -0
  76. package/dist/commands/delegate.command.js +657 -0
  77. package/dist/commands/deps-audit.command.d.ts +23 -0
  78. package/dist/commands/deps-audit.command.d.ts.map +1 -0
  79. package/dist/commands/deps-audit.command.js +270 -0
  80. package/dist/commands/dev.command.d.ts.map +1 -1
  81. package/dist/commands/dev.command.js +5 -1
  82. package/dist/commands/diff-check.command.d.ts +30 -0
  83. package/dist/commands/diff-check.command.d.ts.map +1 -0
  84. package/dist/commands/diff-check.command.js +210 -0
  85. package/dist/commands/doctor.command.d.ts.map +1 -1
  86. package/dist/commands/doctor.command.js +162 -10
  87. package/dist/commands/export.command.d.ts.map +1 -1
  88. package/dist/commands/export.command.js +76 -3
  89. package/dist/commands/framework.command.d.ts +12 -0
  90. package/dist/commands/framework.command.d.ts.map +1 -0
  91. package/dist/commands/framework.command.js +180 -0
  92. package/dist/commands/gate.command.d.ts +15 -0
  93. package/dist/commands/gate.command.d.ts.map +1 -0
  94. package/dist/commands/gate.command.js +300 -0
  95. package/dist/commands/gen.command.d.ts.map +1 -1
  96. package/dist/commands/gen.command.js +13 -1
  97. package/dist/commands/graph-code-subverbs.d.ts +33 -0
  98. package/dist/commands/graph-code-subverbs.d.ts.map +1 -0
  99. package/dist/commands/graph-code-subverbs.js +1366 -0
  100. package/dist/commands/graph.command.d.ts.map +1 -1
  101. package/dist/commands/graph.command.js +31 -2
  102. package/dist/commands/help.command.d.ts +4 -3
  103. package/dist/commands/help.command.d.ts.map +1 -1
  104. package/dist/commands/help.command.js +86 -18
  105. package/dist/commands/helper.command.js +1 -1
  106. package/dist/commands/impact.command.d.ts.map +1 -1
  107. package/dist/commands/impact.command.js +171 -1
  108. package/dist/commands/import.command.d.ts.map +1 -1
  109. package/dist/commands/import.command.js +121 -5
  110. package/dist/commands/ingest.command.d.ts.map +1 -1
  111. package/dist/commands/ingest.command.js +5 -1
  112. package/dist/commands/init.command.d.ts.map +1 -1
  113. package/dist/commands/init.command.js +174 -7
  114. package/dist/commands/knowledge-author.command.d.ts.map +1 -1
  115. package/dist/commands/knowledge-author.command.js +9 -0
  116. package/dist/commands/knowledge-propose.command.d.ts.map +1 -1
  117. package/dist/commands/knowledge-propose.command.js +4 -2
  118. package/dist/commands/knowledge.command.d.ts.map +1 -1
  119. package/dist/commands/knowledge.command.js +26 -3
  120. package/dist/commands/migrate.command.d.ts +13 -0
  121. package/dist/commands/migrate.command.d.ts.map +1 -0
  122. package/dist/commands/migrate.command.js +152 -0
  123. package/dist/commands/move-plan.command.d.ts +23 -0
  124. package/dist/commands/move-plan.command.d.ts.map +1 -0
  125. package/dist/commands/move-plan.command.js +360 -0
  126. package/dist/commands/packs-new.d.ts +1 -1
  127. package/dist/commands/packs-new.d.ts.map +1 -1
  128. package/dist/commands/packs-new.js +5 -36
  129. package/dist/commands/packs.command.d.ts.map +1 -1
  130. package/dist/commands/packs.command.js +2 -10
  131. package/dist/commands/plan-context.command.d.ts +11 -0
  132. package/dist/commands/plan-context.command.d.ts.map +1 -0
  133. package/dist/commands/plan-context.command.js +85 -0
  134. package/dist/commands/preflight.command.d.ts.map +1 -1
  135. package/dist/commands/preflight.command.js +15 -0
  136. package/dist/commands/profiles.command.js +4 -4
  137. package/dist/commands/recommend.command.d.ts +6 -0
  138. package/dist/commands/recommend.command.d.ts.map +1 -1
  139. package/dist/commands/recommend.command.js +119 -5
  140. package/dist/commands/release.command.js +13 -13
  141. package/dist/commands/rule-graph-subverbs.d.ts +3 -0
  142. package/dist/commands/rule-graph-subverbs.d.ts.map +1 -0
  143. package/dist/commands/rule-graph-subverbs.js +132 -0
  144. package/dist/commands/rules.command.d.ts.map +1 -1
  145. package/dist/commands/rules.command.js +20 -3
  146. package/dist/commands/scaffold-validate.command.d.ts +22 -0
  147. package/dist/commands/scaffold-validate.command.d.ts.map +1 -0
  148. package/dist/commands/scaffold-validate.command.js +215 -0
  149. package/dist/commands/search-structural.command.d.ts +18 -0
  150. package/dist/commands/search-structural.command.d.ts.map +1 -0
  151. package/dist/commands/search-structural.command.js +376 -0
  152. package/dist/commands/search.command.js +1 -1
  153. package/dist/commands/smart-context.command.d.ts +67 -0
  154. package/dist/commands/smart-context.command.d.ts.map +1 -0
  155. package/dist/commands/smart-context.command.js +4728 -0
  156. package/dist/commands/spike.command.d.ts +22 -0
  157. package/dist/commands/spike.command.d.ts.map +1 -0
  158. package/dist/commands/spike.command.js +235 -0
  159. package/dist/commands/surface.command.d.ts +1 -0
  160. package/dist/commands/surface.command.d.ts.map +1 -1
  161. package/dist/commands/surface.command.js +10 -3
  162. package/dist/commands/task-context.command.d.ts.map +1 -1
  163. package/dist/commands/task-context.command.js +5 -17
  164. package/dist/commands/task.command.d.ts.map +1 -1
  165. package/dist/commands/task.command.js +8 -2
  166. package/dist/commands/template-quality.command.d.ts.map +1 -1
  167. package/dist/commands/template-quality.command.js +39 -3
  168. package/dist/commands/templates.command.d.ts.map +1 -1
  169. package/dist/commands/templates.command.js +37 -2
  170. package/dist/commands/tests.command.d.ts.map +1 -1
  171. package/dist/commands/tests.command.js +13 -2
  172. package/dist/commands/watch.command.d.ts +26 -0
  173. package/dist/commands/watch.command.d.ts.map +1 -0
  174. package/dist/commands/watch.command.js +456 -0
  175. package/dist/dashboard/code-intelligence-data.d.ts +33 -0
  176. package/dist/dashboard/code-intelligence-data.d.ts.map +1 -0
  177. package/dist/dashboard/code-intelligence-data.js +329 -0
  178. package/dist/dashboard/dashboard-api-server.d.ts.map +1 -1
  179. package/dist/dashboard/dashboard-api-server.js +256 -2
  180. package/dist/dashboard/knowledge-ask.d.ts +4 -0
  181. package/dist/dashboard/knowledge-ask.d.ts.map +1 -0
  182. package/dist/dashboard/knowledge-ask.js +112 -0
  183. package/dist/env/load-dotenv.d.ts +15 -0
  184. package/dist/env/load-dotenv.d.ts.map +1 -0
  185. package/dist/env/load-dotenv.js +70 -0
  186. package/dist/export/claude-commands-export.d.ts +60 -0
  187. package/dist/export/claude-commands-export.d.ts.map +1 -0
  188. package/dist/export/claude-commands-export.js +276 -0
  189. package/dist/export/export-formats.d.ts +1 -1
  190. package/dist/export/export-formats.d.ts.map +1 -1
  191. package/dist/export/export-formats.js +139 -12
  192. package/dist/index.d.ts +3 -0
  193. package/dist/index.d.ts.map +1 -1
  194. package/dist/index.js +3 -0
  195. package/dist/init/init-templates.d.ts.map +1 -1
  196. package/dist/init/init-templates.js +133 -113
  197. package/dist/init/paths-advisory.d.ts +20 -0
  198. package/dist/init/paths-advisory.d.ts.map +1 -0
  199. package/dist/init/paths-advisory.js +88 -0
  200. package/dist/main.d.ts.map +1 -1
  201. package/dist/main.js +331 -17
  202. package/dist/output/ccr-store-config.d.ts +18 -0
  203. package/dist/output/ccr-store-config.d.ts.map +1 -0
  204. package/dist/output/ccr-store-config.js +41 -0
  205. package/dist/output/format-output.d.ts.map +1 -1
  206. package/dist/output/format-output.js +6 -1
  207. package/dist/output/output-compression.d.ts +15 -0
  208. package/dist/output/output-compression.d.ts.map +1 -0
  209. package/dist/output/output-compression.js +60 -0
  210. package/dist/output/resolve-compress-type.d.ts +22 -0
  211. package/dist/output/resolve-compress-type.d.ts.map +1 -0
  212. package/dist/output/resolve-compress-type.js +21 -0
  213. package/dist/output/watch-loop.d.ts +9 -1
  214. package/dist/output/watch-loop.d.ts.map +1 -1
  215. package/dist/output/watch-loop.js +13 -3
  216. package/dist/schemas/json-schemas.d.ts +384 -36
  217. package/dist/schemas/json-schemas.d.ts.map +1 -1
  218. package/dist/schemas/json-schemas.js +247 -36
  219. package/dist/surface/profiles.d.ts.map +1 -1
  220. package/dist/surface/profiles.js +54 -9
  221. package/dist/surface/surface-config-writer.d.ts.map +1 -1
  222. package/dist/surface/surface-config-writer.js +23 -11
  223. package/dist/validation/run-validation-loop.d.ts.map +1 -1
  224. package/dist/validation/run-validation-loop.js +5 -1
  225. package/package.json +35 -21
  226. package/dist/commands/plugin.command.d.ts +0 -11
  227. package/dist/commands/plugin.command.d.ts.map +0 -1
  228. package/dist/commands/plugin.command.js +0 -394
@@ -8,23 +8,41 @@
8
8
  import { existsSync, mkdirSync, writeFileSync } from 'node:fs';
9
9
  import * as nodePath from 'node:path';
10
10
  import { affectedFromCheckReport, buildCodemodAssistReport, inspectSharkcraft, parseCustomCheckReportFromFile, renderCodemodAssistMarkdown, } from '@shrkcrft/inspector';
11
- import { flagBool, flagString, flagList, resolveCwd, } from "../command-registry.js";
11
+ import { formatRuleCompact } from '@shrkcrft/rules';
12
+ import { flagBool, flagNumber, flagString, flagList, resolveCwd, } from "../command-registry.js";
12
13
  import { asJson, header } from "../output/format-output.js";
13
14
  async function loadRule(args) {
14
15
  const ruleId = flagString(args, 'rule');
15
16
  if (!ruleId) {
16
- process.stderr.write('Missing --rule <ruleId>\n');
17
+ process.stderr.write('Missing --rule <ruleId>. Run `shrk codemod list` to see available rule ids.\n');
17
18
  return null;
18
19
  }
19
20
  const cwd = resolveCwd(args);
20
21
  const inspection = await inspectSharkcraft({ cwd });
21
22
  const rule = inspection.ruleService.get(ruleId);
22
23
  if (!rule) {
23
- process.stderr.write(`No rule with id "${ruleId}".\n`);
24
+ process.stderr.write(`No rule with id "${ruleId}". Run \`shrk codemod list\` to see available rule ids.\n`);
24
25
  return null;
25
26
  }
26
27
  return { rule, cwd };
27
28
  }
29
+ /** `shrk codemod list` — enumerate the rule ids codemod-assist accepts. */
30
+ async function listRules(args) {
31
+ const inspection = await inspectSharkcraft({ cwd: resolveCwd(args) });
32
+ let rules = inspection.ruleService.list();
33
+ const top = flagNumber(args, 'top');
34
+ if (top !== undefined && top > 0) {
35
+ rules = [...rules].sort((a, b) => a.id.localeCompare(b.id)).slice(0, top);
36
+ }
37
+ if (flagBool(args, 'json')) {
38
+ process.stdout.write(asJson(rules.map((r) => ({ id: r.id, type: r.type, priority: r.priority, title: r.title }))) + '\n');
39
+ return 0;
40
+ }
41
+ process.stdout.write(header(`Codemod rules (${rules.length})`));
42
+ for (const r of rules)
43
+ process.stdout.write(formatRuleCompact(r) + '\n');
44
+ return 0;
45
+ }
28
46
  async function gatherAffected(args) {
29
47
  const fromReport = flagString(args, 'from-report');
30
48
  const out = [];
@@ -57,14 +75,17 @@ function writeAssistOutputs(cwd, ruleId, markdown, scriptTemplate) {
57
75
  export const codemodCommand = {
58
76
  name: 'codemod',
59
77
  description: 'Codemod-assist (NOT a codemod engine). Inventory + risk grouping + checklist + project-script template. Never rewrites source.',
60
- usage: 'shrk codemod <inventory|plan|checklist> --rule <ruleId> [--from-report <path>] [--targets a,b,c] [--write-preview] [--json]',
78
+ usage: 'shrk codemod <list|inventory|plan|checklist> --rule <ruleId> [--from-report <path>] [--targets a,b,c] [--write-preview] [--json]',
61
79
  async run(args) {
62
80
  const sub = args.positional[0] ?? 'plan';
63
- if (!['inventory', 'plan', 'checklist'].includes(sub)) {
64
- process.stderr.write('Usage: shrk codemod <inventory|plan|checklist> --rule <ruleId>\n');
81
+ if (!['list', 'inventory', 'plan', 'checklist'].includes(sub)) {
82
+ process.stderr.write('Usage: shrk codemod <list|inventory|plan|checklist> --rule <ruleId>\n');
65
83
  return 2;
66
84
  }
67
85
  const inner = { ...args, positional: args.positional.slice(1) };
86
+ // `list` enumerates rule ids and needs no --rule.
87
+ if (sub === 'list')
88
+ return listRules(inner);
68
89
  const loaded = await loadRule(inner);
69
90
  if (!loaded)
70
91
  return 1;
@@ -236,9 +236,13 @@ export declare function commandLifecycle(e: ICommandCatalogEntry): CommandLifecy
236
236
  /**
237
237
  * Default-help visibility rule. Honors an explicit
238
238
  * {@link ICommandCatalogEntry.showInDefaultHelp} when set; otherwise
239
- * primary + common are visible and advanced / machine / internal / legacy
240
- * are hidden. Deprecated and retired commands are always hidden by
241
- * default regardless of surface.
239
+ * the {@link PRIMARY_VERBS_ALLOWLIST} gates membership in the visible
240
+ * surface (primary + common entries whose top-level verb pays rent
241
+ * make the cut; everything else is hidden from `--full-help`).
242
+ *
243
+ * Deprecated, retired, aliased commands and anything in the
244
+ * {@link R46_OVERLAY} are always hidden regardless of allowlist
245
+ * membership.
242
246
  */
243
247
  export declare function defaultShowInHelp(e: ICommandCatalogEntry): boolean;
244
248
  /**
@@ -262,4 +266,12 @@ export interface ICommandSafetyMatrixRow {
262
266
  }
263
267
  export declare function buildCommandSafetyMatrix(): readonly ICommandSafetyMatrixRow[];
264
268
  export declare function renderCommandSafetyMatrixMarkdown(rows: readonly ICommandSafetyMatrixRow[]): string;
269
+ /**
270
+ * The set of TOP-LEVEL command verbs in the catalogue (the first token of each
271
+ * entry's `command`). The single source of truth for "is `shrk <verb>` a real
272
+ * command" checks — e.g. the contradictions doc-vs-CLI scan, which lives in the
273
+ * inspector layer and so receives this set by injection rather than importing
274
+ * the CLI.
275
+ */
276
+ export declare function cliCommandNameSet(): Set<string>;
265
277
  //# sourceMappingURL=command-catalog.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"command-catalog.d.ts","sourceRoot":"","sources":["../../src/commands/command-catalog.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"command-catalog.d.ts","sourceRoot":"","sources":["../../src/commands/command-catalog.ts"],"names":[],"mappings":"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"}
@@ -115,6 +115,16 @@ export const COMMAND_CATALOG = Object.freeze([
115
115
  intendedAudience: [CommandAudience.Human, CommandAudience.Agent, CommandAudience.Ci],
116
116
  taskRole: CommandTaskRole.Diagnose,
117
117
  }),
118
+ entry({
119
+ command: 'ai-status',
120
+ description: 'Report which AI provider shrk would use right now, with setup or upgrade hints. `--ping` verifies the provider actually responds.',
121
+ category: 'core',
122
+ safetyLevel: SafetyLevel.ReadOnly,
123
+ mcpAvailable: false,
124
+ surface: CommandSurface.Common,
125
+ intendedAudience: [CommandAudience.Human, CommandAudience.Agent],
126
+ taskRole: CommandTaskRole.Diagnose,
127
+ }),
118
128
  entry({
119
129
  command: 'context',
120
130
  description: 'Focused context for a task (rules / paths / templates). For "what should I do?" prefer `shrk recommend "<task>"`.',
@@ -256,13 +266,94 @@ export const COMMAND_CATALOG = Object.freeze([
256
266
  }),
257
267
  entry({
258
268
  command: 'graph',
259
- description: 'Knowledge graph nodes, edges, and shortest-path explanations.',
269
+ description: 'Knowledge graph plus code-intelligence subverbs (`index`, `status`, `search`, `context`, `impact`, `callers`, `cycles`, `unresolved`, `deps`, `why`, `export`).',
270
+ category: 'core',
271
+ safetyLevel: SafetyLevel.ReadOnly,
272
+ mcpAvailable: true,
273
+ surface: CommandSurface.Common,
274
+ taskRole: CommandTaskRole.Inspect,
275
+ }),
276
+ entry({
277
+ command: 'rule-graph',
278
+ description: 'Bridge the code graph to asset registries (boundary rules, path conventions, templates). Sub-verbs: index, status, for <file>.',
279
+ category: 'core',
280
+ safetyLevel: SafetyLevel.WritesSessionOnly,
281
+ mcpAvailable: true,
282
+ surface: CommandSurface.Common,
283
+ taskRole: CommandTaskRole.Inspect,
284
+ }),
285
+ entry({
286
+ command: 'search-structural',
287
+ description: 'Declarative AST pattern search over the project. Read-only; no rewrites in this round.',
288
+ category: 'core',
289
+ safetyLevel: SafetyLevel.ReadOnly,
290
+ mcpAvailable: true,
291
+ surface: CommandSurface.Common,
292
+ taskRole: CommandTaskRole.Inspect,
293
+ }),
294
+ entry({
295
+ command: 'plan-context',
296
+ description: 'Produce a deterministic, token-budgeted context pack (`sharkcraft.context-pack/v1`) for an AI coding agent.',
260
297
  category: 'core',
261
298
  safetyLevel: SafetyLevel.ReadOnly,
262
299
  mcpAvailable: true,
263
300
  surface: CommandSurface.Common,
301
+ taskRole: CommandTaskRole.Context,
302
+ }),
303
+ entry({
304
+ command: 'arch',
305
+ description: 'Architecture-guard checks (public-API misuse, barrel risks, cycle severity, project contracts).',
306
+ category: 'core',
307
+ safetyLevel: SafetyLevel.ReadOnly,
308
+ mcpAvailable: true,
309
+ surface: CommandSurface.Common,
310
+ taskRole: CommandTaskRole.Validate,
311
+ }),
312
+ entry({
313
+ command: 'framework',
314
+ description: 'Framework-aware extractors: NestJS controllers/modules/providers/routes, React components/hook usages. Sub-verbs: index, status, list, routes.',
315
+ category: 'core',
316
+ safetyLevel: SafetyLevel.WritesSessionOnly,
317
+ mcpAvailable: true,
318
+ surface: CommandSurface.Common,
264
319
  taskRole: CommandTaskRole.Inspect,
265
320
  }),
321
+ entry({
322
+ command: 'api-diff',
323
+ description: 'Compare the current public API surface to a baseline. Reports added / removed / kind-changed / moved symbols with breaking-change severity.',
324
+ category: 'core',
325
+ safetyLevel: SafetyLevel.ReadOnly,
326
+ mcpAvailable: true,
327
+ surface: CommandSurface.Common,
328
+ taskRole: CommandTaskRole.Validate,
329
+ }),
330
+ entry({
331
+ command: 'gate',
332
+ description: 'Aggregator quality-gate: graph freshness + architecture + impact-since-ref → one pass/fail. The pre-merge gate for AI-agent-authored changes.',
333
+ category: 'core',
334
+ safetyLevel: SafetyLevel.ReadOnly,
335
+ mcpAvailable: true,
336
+ surface: CommandSurface.Common,
337
+ taskRole: CommandTaskRole.Validate,
338
+ }),
339
+ entry({
340
+ command: 'migrate',
341
+ description: 'Run a multi-step migration: structural rewrites + shell + checks orchestrated as one replayable plan.',
342
+ category: 'core',
343
+ safetyLevel: SafetyLevel.WritesSource,
344
+ mcpAvailable: false,
345
+ surface: CommandSurface.Common,
346
+ taskRole: CommandTaskRole.Generate,
347
+ }),
348
+ entry({
349
+ command: 'code-intel',
350
+ description: 'One-shot view of code-intelligence doctor checks (graph, rule-graph, api-surface, quality-gate, migrations, architecture, impact, framework, structural-search, context-planner). Read-only.',
351
+ category: 'core',
352
+ safetyLevel: SafetyLevel.ReadOnly,
353
+ mcpAvailable: true,
354
+ surface: CommandSurface.Common,
355
+ taskRole: CommandTaskRole.Diagnose,
356
+ }),
266
357
  entry({
267
358
  command: 'check',
268
359
  description: 'Run validation checks across registries / packs / boundaries.',
@@ -291,6 +382,15 @@ export const COMMAND_CATALOG = Object.freeze([
291
382
  surface: CommandSurface.Common,
292
383
  taskRole: CommandTaskRole.Validate,
293
384
  }),
385
+ entry({
386
+ command: 'diff-check',
387
+ description: 'Self-check current git diff against boundary + import-hygiene rules. Single-call composite for agents to validate edits before declaring done. Read-only.',
388
+ category: 'core',
389
+ safetyLevel: SafetyLevel.ReadOnly,
390
+ mcpAvailable: true,
391
+ surface: CommandSurface.Common,
392
+ taskRole: CommandTaskRole.Validate,
393
+ }),
294
394
  entry({
295
395
  command: 'review',
296
396
  description: 'PR-review packet — changed files, affected rules, missing tests heuristic.',
@@ -338,6 +438,18 @@ export const COMMAND_CATALOG = Object.freeze([
338
438
  surface: CommandSurface.Common,
339
439
  taskRole: CommandTaskRole.Apply,
340
440
  }),
441
+ entry({
442
+ command: 'delegate',
443
+ description: 'Hand a mechanical edit to a local-LLM worker; the engine verifies the result and auto-reverts on failure (run|brief). Writes source only via --apply through the signed-plan + verify gate.',
444
+ category: 'core',
445
+ safetyLevel: SafetyLevel.WritesSource,
446
+ writesFiles: true,
447
+ writesSource: true,
448
+ requiresReview: true,
449
+ surface: CommandSurface.Advanced,
450
+ intendedAudience: [CommandAudience.Human, CommandAudience.Agent],
451
+ taskRole: CommandTaskRole.Apply,
452
+ }),
341
453
  // `shrk spec` intent artifact over plan/review/apply.
342
454
  entry({
343
455
  command: 'spec',
@@ -634,6 +746,11 @@ export const COMMAND_CATALOG = Object.freeze([
634
746
  category: 'task-context',
635
747
  safetyLevel: SafetyLevel.ReadOnly,
636
748
  mcpAvailable: true,
749
+ // Overlaps with `shrk task` (machine packet) and `shrk recommend`
750
+ // (human routing). Pointing at `task` as canonical so users who
751
+ // hit this via tab-complete see the canonical machine-pipe form.
752
+ overlapsWith: ['task', 'recommend'],
753
+ preferredCommand: 'shrk task "<task>"',
637
754
  }),
638
755
  entry({
639
756
  command: 'validate-change',
@@ -943,6 +1060,13 @@ export const COMMAND_CATALOG = Object.freeze([
943
1060
  safetyLevel: SafetyLevel.ReadOnly,
944
1061
  surface: CommandSurface.Common,
945
1062
  }),
1063
+ entry({
1064
+ command: 'completion',
1065
+ description: 'Print a sourcable shell-completion script for the `shrk` CLI (bash | zsh | fish). Pipe into your shell rc.',
1066
+ category: 'meta',
1067
+ safetyLevel: SafetyLevel.ReadOnly,
1068
+ surface: CommandSurface.Common,
1069
+ }),
946
1070
  entry({
947
1071
  command: 'explain',
948
1072
  description: 'Universal explainer: knowledge entry, rule, template, command id, or stderr blob.',
@@ -1007,7 +1131,7 @@ export const COMMAND_CATALOG = Object.freeze([
1007
1131
  // `commands doctor` is honest.
1008
1132
  entry({
1009
1133
  command: 'profiles',
1010
- description: 'List / inspect pack-contributed profiles (plugin-lifecycle, migration, conventions, …). Subcommands: list, get, doctor, search.',
1134
+ description: 'List / inspect pack-contributed profiles (migration, conventions, …). Subcommands: list, get, doctor, search.',
1011
1135
  category: 'core',
1012
1136
  safetyLevel: SafetyLevel.ReadOnly,
1013
1137
  mcpAvailable: true,
@@ -1080,6 +1204,104 @@ export const COMMAND_CATALOG = Object.freeze([
1080
1204
  category: 'core',
1081
1205
  safetyLevel: SafetyLevel.ReadOnly,
1082
1206
  }),
1207
+ entry({
1208
+ command: 'smart-context',
1209
+ description: 'Build deterministic context and ask an AI provider to synthesise an enriched brief (default), structured plan (--plan), or two-stage development plan (--ai-plan). Opt-in; defaults to Gemini. CLAUDE.md is auto-included in the seed.',
1210
+ category: 'core',
1211
+ safetyLevel: SafetyLevel.ReadOnly,
1212
+ taskRole: CommandTaskRole.Context,
1213
+ }),
1214
+ entry({
1215
+ command: 'smart-context plan-ahead',
1216
+ description: 'Batch-generate AI-backed plans for a queue of upcoming tasks and save each under .sharkcraft/smart-context/.',
1217
+ category: 'core',
1218
+ safetyLevel: SafetyLevel.ReadOnly,
1219
+ taskRole: CommandTaskRole.Context,
1220
+ }),
1221
+ entry({
1222
+ command: 'smart-context list',
1223
+ description: 'List saved smart-context entries under .sharkcraft/smart-context/.',
1224
+ category: 'core',
1225
+ safetyLevel: SafetyLevel.ReadOnly,
1226
+ taskRole: CommandTaskRole.Inspect,
1227
+ }),
1228
+ entry({
1229
+ command: 'smart-context show',
1230
+ description: 'Print a saved smart-context entry by slug.',
1231
+ category: 'core',
1232
+ safetyLevel: SafetyLevel.ReadOnly,
1233
+ taskRole: CommandTaskRole.Inspect,
1234
+ }),
1235
+ entry({
1236
+ command: 'smart-context embeddings-build',
1237
+ description: 'Build or incrementally refresh the semantic file index used by smart-context. Downloads the embedding model on first run.',
1238
+ category: 'core',
1239
+ safetyLevel: SafetyLevel.WritesSessionOnly,
1240
+ taskRole: CommandTaskRole.Context,
1241
+ }),
1242
+ entry({
1243
+ command: 'smart-context embeddings-status',
1244
+ description: 'Report semantic index freshness without loading the embedding model.',
1245
+ category: 'core',
1246
+ safetyLevel: SafetyLevel.ReadOnly,
1247
+ taskRole: CommandTaskRole.Inspect,
1248
+ }),
1249
+ entry({
1250
+ command: 'spike',
1251
+ description: 'Scaffold starter files for a saved smart-context plan\'s recommended MVP. Reads .sharkcraft/smart-context/<slug>.plan.json.',
1252
+ category: 'core',
1253
+ safetyLevel: SafetyLevel.WritesSource,
1254
+ taskRole: CommandTaskRole.Generate,
1255
+ }),
1256
+ entry({
1257
+ command: 'deps-audit',
1258
+ description: 'Compare declared package dependencies (package.json) with actually imported specifiers (graph). Reports missing + unused deps. Read-only.',
1259
+ category: 'core',
1260
+ safetyLevel: SafetyLevel.ReadOnly,
1261
+ taskRole: CommandTaskRole.Inspect,
1262
+ }),
1263
+ entry({
1264
+ command: 'scaffold-validate',
1265
+ description: 'Validate that the files in a saved generation plan exist on disk and look intact (size envelope + type match). Read-only.',
1266
+ category: 'core',
1267
+ safetyLevel: SafetyLevel.ReadOnly,
1268
+ taskRole: CommandTaskRole.Validate,
1269
+ }),
1270
+ entry({
1271
+ command: 'move-plan',
1272
+ description: 'Plan a file move: graph-traced importer rewrites, export touch-ups, cross-package warnings, rollback steps. Read-only.',
1273
+ category: 'core',
1274
+ safetyLevel: SafetyLevel.ReadOnly,
1275
+ taskRole: CommandTaskRole.Generate,
1276
+ }),
1277
+ entry({
1278
+ command: 'watch',
1279
+ description: 'Emit a focused-context packet on stdout JSONL each time the workspace changes. Designed to feed a parallel Claude agent.',
1280
+ category: 'core',
1281
+ safetyLevel: SafetyLevel.WritesSessionOnly,
1282
+ taskRole: CommandTaskRole.Context,
1283
+ }),
1284
+ entry({
1285
+ command: 'watch list',
1286
+ description: 'List active shrk-watch daemons (one per task slug).',
1287
+ category: 'core',
1288
+ safetyLevel: SafetyLevel.ReadOnly,
1289
+ taskRole: CommandTaskRole.Inspect,
1290
+ }),
1291
+ entry({
1292
+ command: 'watch stop',
1293
+ description: 'Stop a running shrk-watch daemon by slug.',
1294
+ category: 'core',
1295
+ safetyLevel: SafetyLevel.WritesSessionOnly,
1296
+ taskRole: CommandTaskRole.Config,
1297
+ }),
1298
+ entry({
1299
+ command: 'watch prune',
1300
+ description: 'Remove stale shrk-watch manifests whose owning processes are no longer alive.',
1301
+ category: 'core',
1302
+ safetyLevel: SafetyLevel.WritesSessionOnly,
1303
+ taskRole: CommandTaskRole.Config,
1304
+ }),
1083
1305
  entry({
1084
1306
  command: 'safety audit',
1085
1307
  description: 'Audit the SharkCraft safety model (commands, MCP, packs, plan signing).',
@@ -1285,6 +1507,48 @@ export const COMMAND_CATALOG = Object.freeze([
1285
1507
  intendedAudience: [CommandAudience.Human, CommandAudience.Ci],
1286
1508
  taskRole: CommandTaskRole.Inspect,
1287
1509
  }),
1510
+ entry({
1511
+ command: 'compress',
1512
+ description: 'Deterministically compress a blob (file or stdin) to cut tokens — JSON→table, logs/search/diffs→signal. Reversible via `shrk expand`.',
1513
+ category: 'core',
1514
+ safetyLevel: SafetyLevel.WritesSessionOnly,
1515
+ writesFiles: true,
1516
+ mcpAvailable: true,
1517
+ surface: CommandSurface.Common,
1518
+ intendedAudience: [CommandAudience.Agent, CommandAudience.Human],
1519
+ taskRole: CommandTaskRole.Context,
1520
+ }),
1521
+ entry({
1522
+ command: 'expand',
1523
+ description: 'Retrieve the full original a `shrk compress` run cached, by its `<<ccr:KEY>>` key.',
1524
+ category: 'core',
1525
+ safetyLevel: SafetyLevel.ReadOnly,
1526
+ mcpAvailable: true,
1527
+ surface: CommandSurface.Common,
1528
+ intendedAudience: [CommandAudience.Agent, CommandAudience.Human],
1529
+ taskRole: CommandTaskRole.Context,
1530
+ }),
1531
+ entry({
1532
+ command: 'align',
1533
+ description: 'Replace volatile tokens (UUIDs/JWTs/timestamps/hashes) with stable placeholders for KV-cache prefix stability; reversible via `shrk unalign`.',
1534
+ category: 'core',
1535
+ safetyLevel: SafetyLevel.WritesSessionOnly,
1536
+ writesFiles: true,
1537
+ mcpAvailable: true,
1538
+ surface: CommandSurface.Advanced,
1539
+ intendedAudience: [CommandAudience.Agent, CommandAudience.Human],
1540
+ taskRole: CommandTaskRole.Context,
1541
+ }),
1542
+ entry({
1543
+ command: 'unalign',
1544
+ description: 'Restore the original volatile tokens in aligned text using its `--map`.',
1545
+ category: 'core',
1546
+ safetyLevel: SafetyLevel.ReadOnly,
1547
+ mcpAvailable: true,
1548
+ surface: CommandSurface.Advanced,
1549
+ intendedAudience: [CommandAudience.Agent, CommandAudience.Human],
1550
+ taskRole: CommandTaskRole.Context,
1551
+ }),
1288
1552
  // ── Backend feature expansion ─────────────────────────────────────────
1289
1553
  entry({
1290
1554
  command: 'bundle create',
@@ -2316,7 +2580,7 @@ export const COMMAND_CATALOG = Object.freeze([
2316
2580
  }),
2317
2581
  entry({
2318
2582
  command: 'release smoke --matrix',
2319
- description: 'Run smoke scenarios across multiple repo targets (sharkcraft/dogfood/synthetic/adopter).',
2583
+ description: 'Run smoke scenarios across multiple repo targets (sharkcraft/dogfood/synthetic/consumer).',
2320
2584
  category: 'release',
2321
2585
  safetyLevel: SafetyLevel.WritesDraftsOnly,
2322
2586
  writesFiles: true,
@@ -2708,34 +2972,6 @@ export const COMMAND_CATALOG = Object.freeze([
2708
2972
  safetyLevel: SafetyLevel.ReadOnly,
2709
2973
  mcpAvailable: true,
2710
2974
  }),
2711
- entry({
2712
- command: 'plugin rename',
2713
- description: 'Plan-only plugin rename (profile-driven) — emits replace ops + manual folder rename checklist.',
2714
- category: 'lifecycle',
2715
- safetyLevel: SafetyLevel.WritesDraftsOnly,
2716
- mcpAvailable: true,
2717
- }),
2718
- entry({
2719
- command: 'plugin remove',
2720
- description: 'Plan-only destructive plugin remove (profile-driven) — destructive; requires human approval.',
2721
- category: 'lifecycle',
2722
- safetyLevel: SafetyLevel.WritesDraftsOnly,
2723
- mcpAvailable: true,
2724
- }),
2725
- entry({
2726
- command: 'plugin lifecycle list',
2727
- description: 'List plugins detected under the active profile roots and key-table. Read-only.',
2728
- category: 'lifecycle',
2729
- safetyLevel: SafetyLevel.ReadOnly,
2730
- mcpAvailable: false,
2731
- }),
2732
- entry({
2733
- command: 'plugin lifecycle inspect',
2734
- description: 'Inspect references to a plugin across the profile layers + key-table. Read-only.',
2735
- category: 'lifecycle',
2736
- safetyLevel: SafetyLevel.ReadOnly,
2737
- mcpAvailable: false,
2738
- }),
2739
2975
  entry({
2740
2976
  command: 'helper list',
2741
2977
  description: 'List available helper plan generators. Read-only.',
@@ -3137,12 +3373,102 @@ export function commandLifecycle(e) {
3137
3373
  return CommandLifecycle.Deprecated;
3138
3374
  return CommandLifecycle.Active;
3139
3375
  }
3376
+ /**
3377
+ * The "Primary verbs" allowlist — top-level commands that pay rent in
3378
+ * the default help surface. Everything else stays callable but is
3379
+ * hidden from `--full-help` and from MCP tool advertising; users find
3380
+ * them via `shrk surface list`, `shrk help <cmd>`, or `--full-help`.
3381
+ *
3382
+ * Picked to cover the canonical agent-flow journeys:
3383
+ * - bootstrap a repo, verify it
3384
+ * - get a brief / context / task packet for an agent
3385
+ * - generate safely (plan → apply → check)
3386
+ * - browse what shrk knows (rules / paths / templates / presets)
3387
+ * - inline the rules into the agent's prompt (export, mcp, dashboard)
3388
+ * - daily operations (review, impact, search, explain, why, surface)
3389
+ *
3390
+ * Anything not in this set falls back to the legacy
3391
+ * surface-tier-based visibility, with deprecated / retired / aliased
3392
+ * commands hidden regardless. Adding a verb here is the explicit
3393
+ * "this is rent-paying" decision.
3394
+ */
3395
+ const PRIMARY_VERBS_ALLOWLIST = new Set([
3396
+ // Bootstrap
3397
+ 'init',
3398
+ 'doctor',
3399
+ 'inspect',
3400
+ 'onboard',
3401
+ 'version',
3402
+ 'help',
3403
+ 'preflight',
3404
+ 'self-config',
3405
+ // Per-task
3406
+ 'brief',
3407
+ 'recommend',
3408
+ 'context',
3409
+ 'task',
3410
+ 'coverage',
3411
+ 'explain',
3412
+ 'why',
3413
+ 'search',
3414
+ 'impact',
3415
+ 'graph',
3416
+ 'code-intel',
3417
+ 'compress',
3418
+ 'expand',
3419
+ // Generate code safely
3420
+ 'gen',
3421
+ 'apply',
3422
+ 'check',
3423
+ 'quality',
3424
+ 'plan',
3425
+ 'fix',
3426
+ // Browse / inline
3427
+ 'knowledge',
3428
+ 'rules',
3429
+ 'templates',
3430
+ 'paths',
3431
+ 'import',
3432
+ 'export',
3433
+ // Architecture & quality gates
3434
+ 'drift',
3435
+ 'safety',
3436
+ // Run for an agent
3437
+ 'mcp',
3438
+ 'dashboard',
3439
+ // Ops
3440
+ 'surface',
3441
+ 'presets',
3442
+ 'review',
3443
+ 'packs',
3444
+ 'ci',
3445
+ 'commands',
3446
+ ]);
3447
+ function topLevelVerb(command) {
3448
+ // Strip leading `--cwd <dir>` / `--<flag>` tokens and angle-bracket
3449
+ // placeholders; the canonical first verb is whatever leads.
3450
+ const tokens = command.split(/\s+/);
3451
+ for (const t of tokens) {
3452
+ if (!t)
3453
+ continue;
3454
+ if (t.startsWith('--') || t.startsWith('-'))
3455
+ continue;
3456
+ if (t.startsWith('<') || t.startsWith('"'))
3457
+ continue;
3458
+ return t;
3459
+ }
3460
+ return command;
3461
+ }
3140
3462
  /**
3141
3463
  * Default-help visibility rule. Honors an explicit
3142
3464
  * {@link ICommandCatalogEntry.showInDefaultHelp} when set; otherwise
3143
- * primary + common are visible and advanced / machine / internal / legacy
3144
- * are hidden. Deprecated and retired commands are always hidden by
3145
- * default regardless of surface.
3465
+ * the {@link PRIMARY_VERBS_ALLOWLIST} gates membership in the visible
3466
+ * surface (primary + common entries whose top-level verb pays rent
3467
+ * make the cut; everything else is hidden from `--full-help`).
3468
+ *
3469
+ * Deprecated, retired, aliased commands and anything in the
3470
+ * {@link R46_OVERLAY} are always hidden regardless of allowlist
3471
+ * membership.
3146
3472
  */
3147
3473
  export function defaultShowInHelp(e) {
3148
3474
  if (e.showInDefaultHelp !== undefined)
@@ -3155,6 +3481,12 @@ export function defaultShowInHelp(e) {
3155
3481
  return false;
3156
3482
  if (lc === CommandLifecycle.Alias)
3157
3483
  return false;
3484
+ // Allowlist gate — the top-level verb must be one of the ~30
3485
+ // rent-paying verbs. Subcommands of an allowlisted verb inherit
3486
+ // visibility (so `check boundaries` shows under `check`).
3487
+ const verb = topLevelVerb(e.command);
3488
+ if (!PRIMARY_VERBS_ALLOWLIST.has(verb))
3489
+ return false;
3158
3490
  const surface = commandSurface(e);
3159
3491
  return surface === CommandSurface.Primary || surface === CommandSurface.Common;
3160
3492
  }
@@ -3240,3 +3572,24 @@ export function renderCommandSafetyMatrixMarkdown(rows) {
3240
3572
  }
3241
3573
  return lines.join('\n') + '\n';
3242
3574
  }
3575
+ /**
3576
+ * The set of TOP-LEVEL command verbs in the catalogue (the first token of each
3577
+ * entry's `command`). The single source of truth for "is `shrk <verb>` a real
3578
+ * command" checks — e.g. the contradictions doc-vs-CLI scan, which lives in the
3579
+ * inspector layer and so receives this set by injection rather than importing
3580
+ * the CLI.
3581
+ */
3582
+ export function cliCommandNameSet() {
3583
+ const out = new Set();
3584
+ for (const entry of COMMAND_CATALOG) {
3585
+ const top = entry.command.split(/\s+/)[0];
3586
+ if (top)
3587
+ out.add(top);
3588
+ for (const alias of entry.aliases) {
3589
+ const aliasTop = alias.split(/\s+/)[0];
3590
+ if (aliasTop)
3591
+ out.add(aliasTop);
3592
+ }
3593
+ }
3594
+ return out;
3595
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"commands.command.d.ts","sourceRoot":"","sources":["../../src/commands/commands.command.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"commands.command.d.ts","sourceRoot":"","sources":["../../src/commands/commands.command.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
- import { flagBool, flagString, } from "../command-registry.js";
1
+ import { flagBool, flagString } from "../command-registry.js";
2
2
  import { asJson, header } from "../output/format-output.js";
3
- import { COMMAND_CATALOG, CommandLifecycle, CommandSurface, R46_OVERLAY, SafetyLevel, buildCommandSafetyMatrix, commandLifecycle, commandSurface, commandTaskRole, defaultShowInHelp, renderCommandSafetyMatrixMarkdown, } from "./command-catalog.js";
4
- import { buildCommandTaxonomy, buildPrimaryCommandsReport, renderCommandTaxonomyMarkdown, renderCommandTaxonomyText, renderPrimaryCommandsText, } from '@shrkcrft/inspector';
3
+ import { buildCommandSafetyMatrix, COMMAND_CATALOG, CommandLifecycle, commandLifecycle, CommandSurface, commandSurface, commandTaskRole, defaultShowInHelp, R46_OVERLAY, renderCommandSafetyMatrixMarkdown, SafetyLevel } from "./command-catalog.js";
4
+ import { buildCommandTaxonomy, buildPrimaryCommandsReport, renderCommandTaxonomyMarkdown, renderCommandTaxonomyText, renderPrimaryCommandsText } from '@shrkcrft/inspector';
5
5
  export function makeCommandsCommand(registry) {
6
6
  return {
7
7
  name: 'commands',
@@ -589,7 +589,7 @@ export function buildCommandsUxReport() {
589
589
  // issue is clearly structural (none of these currently rise to error).
590
590
  for (const e of COMMAND_CATALOG) {
591
591
  const surface = commandSurface(e);
592
- // (a) primary commands should declare an audience (so adopters can see
592
+ // (a) primary commands should declare an audience (so consumers can see
593
593
  // who the command is for at a glance).
594
594
  if (surface === CommandSurface.Primary && (!e.intendedAudience || e.intendedAudience.length === 0)) {
595
595
  issues.push({