@sanity-labs/oclif-plugin-skills-flag 0.1.3 → 0.2.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/README.md CHANGED
@@ -40,11 +40,47 @@ my-cli functions test --skill
40
40
  The second command uses `skills/functions-test.md`. A single-command CLI uses `skills/index.md`.
41
41
  Include `skills` in the CLI's npm `files` list if it has one.
42
42
 
43
+ ## Configuration
44
+
45
+ Add `oclif-plugin-skills-flag` at the top level of the CLI's `package.json` to change the runtime
46
+ behavior:
47
+
48
+ ```json
49
+ {
50
+ "oclif-plugin-skills-flag": {
51
+ "flag": "agents",
52
+ "aliases": ["agent-help"],
53
+ "directory": "docs/agents",
54
+ "fallThroughOnMissingSkill": false,
55
+ "missingSkillMessage": "No agent instructions are available."
56
+ }
57
+ }
58
+ ```
59
+
60
+ | Option | Type | Default | Description |
61
+ | --- | --- | --- | --- |
62
+ | `flag` | string | `"llms"` | Main flag name, without leading dashes |
63
+ | `aliases` | string[] | `["skill"]` | Additional names; one-character aliases use a single dash |
64
+ | `directory` | string | `"skills"` | Skills directory relative to the CLI package root |
65
+ | `fallThroughOnMissingSkill` | boolean | `false` | Let oclif continue processing when the skill file is missing |
66
+ | `missingSkillMessage` | string | Command-specific message with the expected file path | Error shown when the skill file is missing |
67
+
68
+ Configuration belongs to the CLI package that owns the command. If one oclif CLI is installed as a
69
+ plugin in another, each CLI can use different flag names and directories for its own commands.
70
+ Include the configured directory in the CLI's npm `files` list if it has one.
71
+
72
+ When `fallThroughOnMissingSkill` is `true`, it takes precedence over `missingSkillMessage`. The hook
73
+ returns without printing an error, and oclif continues its normal command lifecycle. A strict
74
+ command that calls `this.parse()` reports an undeclared skills flag as nonexistent and prints error
75
+ help. A command can instead declare the flag or use non-strict parsing to handle it. Consumers that
76
+ enable fallthrough are responsible for handling or rejecting the flag.
77
+
43
78
  ## Show the flag in help
44
79
 
45
80
  An oclif plugin cannot add flags to the host commands' generated help. The hook still recognizes
46
- both flags before oclif parses the command. To advertise `--llms`, add the exported config to the
47
- CLI's existing base command:
81
+ the configured names before oclif parses the command, but they do not appear in help automatically.
82
+ To advertise the default `--llms` flag, add the exported definition to the CLI's existing base
83
+ command and set `hidden` to `false`:
48
84
 
49
85
  ```ts
50
86
  import {Command, Flags} from '@oclif/core'
@@ -53,18 +89,48 @@ import {llmsFlagConfig} from '@sanity-labs/oclif-plugin-skills-flag'
53
89
  export abstract class BaseCommand extends Command {
54
90
  static baseFlags = {
55
91
  ...super.baseFlags,
56
- llms: Flags.boolean(llmsFlagConfig),
92
+ llms: Flags.boolean({...llmsFlagConfig, hidden: false}),
57
93
  }
58
94
  }
59
95
  ```
60
96
 
61
97
  The plugin handles the flag, so command implementations do not need to read `flags.llms`.
62
98
 
99
+ For custom names, create a matching definition:
100
+
101
+ ```ts
102
+ import {Command, Flags} from '@oclif/core'
103
+ import {createSkillsFlagDefinition} from '@sanity-labs/oclif-plugin-skills-flag'
104
+
105
+ const skillsFlag = createSkillsFlagDefinition(
106
+ {
107
+ flag: 'agents',
108
+ aliases: ['agent-help'],
109
+ },
110
+ {
111
+ description: 'Show instructions for coding agents',
112
+ hidden: false,
113
+ },
114
+ )
115
+
116
+ export abstract class BaseCommand extends Command {
117
+ static baseFlags = {
118
+ ...super.baseFlags,
119
+ [skillsFlag.name]: Flags.boolean(skillsFlag.definition),
120
+ }
121
+ }
122
+ ```
123
+
124
+ The names passed to `createSkillsFlagDefinition` must match the package configuration. `hidden` and
125
+ `description` affect only the flag definition owned by the host CLI; they do not change runtime
126
+ plugin behavior.
127
+
63
128
  ## Limitations
64
129
 
65
130
  - The plugin targets oclif v4.
66
- - `--llms` and `--skill` take precedence over same-named host flags.
67
- - The init hook writes the skill and exits immediately. Later oclif lifecycle hooks do not run.
131
+ - When a matching skill exists, configured flag names take precedence over same-named host flags.
132
+ - When a matching skill exists, the init hook writes it and exits immediately. Later oclif
133
+ lifecycle hooks do not run.
68
134
 
69
135
  ## Development
70
136
 
@@ -1,4 +1,5 @@
1
1
  import type { Hook } from "@oclif/core";
2
+ import { type SkillsFlagConfig } from "../skills.ts";
2
3
  export interface SkillsFlagRuntime {
3
4
  exit(code: number): never;
4
5
  write(output: string): void;
@@ -8,6 +9,7 @@ export interface SkillsFlagOptions {
8
9
  bin: string;
9
10
  commandExists(commandId: string): boolean;
10
11
  commandId: string | undefined;
12
+ config: SkillsFlagConfig;
11
13
  error(message: string): void;
12
14
  isSingleCommandCLI: boolean;
13
15
  root: string;
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/hooks/init.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AAQvC,MAAM,WAAW,iBAAiB;IAChC,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK,CAAA;IACzB,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;CAC5B;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,EAAE,CAAA;IACd,GAAG,EAAE,MAAM,CAAA;IACX,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAA;IACzC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAA;IAC7B,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,kBAAkB,EAAE,OAAO,CAAA;IAC3B,IAAI,EAAE,MAAM,CAAA;CACb;AAWD,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,iBAAiB,EAC1B,OAAO,GAAE,iBAAkC,GAC1C,OAAO,CAAC,IAAI,CAAC,CAkBf;AAED,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,IAUhB,CAAA;eAEc,IAAI"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/hooks/init.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,EAML,KAAK,gBAAgB,EAEtB,MAAM,cAAc,CAAA;AAIrB,MAAM,WAAW,iBAAiB;IAChC,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK,CAAA;IACzB,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;CAC5B;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,EAAE,CAAA;IACd,GAAG,EAAE,MAAM,CAAA;IACX,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAA;IACzC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAA;IAC7B,MAAM,EAAE,gBAAgB,CAAA;IACxB,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,kBAAkB,EAAE,OAAO,CAAA;IAC3B,IAAI,EAAE,MAAM,CAAA;CACb;AAWD,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,iBAAiB,EAC1B,OAAO,GAAE,iBAAkC,GAC1C,OAAO,CAAC,IAAI,CAAC,CAyBf;AAED,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,IA6ChB,CAAA;eAEc,IAAI"}
@@ -1,5 +1,7 @@
1
1
  import { writeFileSync } from "node:fs";
2
- import { commandSkillFilename, ensureFinalNewline, hasSkillsFlag, readCommandSkill, } from "../skills.js";
2
+ import { join } from "node:path";
3
+ import { commandSkillFilename, ensureFinalNewline, hasSkillsFlag, readCommandSkill, resolveSkillsFlagConfig, skillsFlagConfigKey, } from "../skills.js";
4
+ const SKILLS_FLAG_PLUGIN_NAME = "@sanity-labs/oclif-plugin-skills-flag";
3
5
  const processRuntime = {
4
6
  exit(code) {
5
7
  process.exit(code);
@@ -9,30 +11,59 @@ const processRuntime = {
9
11
  },
10
12
  };
11
13
  export async function handleSkillsFlag(options, runtime = processRuntime) {
12
- if (!hasSkillsFlag(options.argv))
14
+ if (!hasSkillsFlag(options.argv, options.config))
13
15
  return;
14
16
  if (!options.commandId || !options.commandExists(options.commandId))
15
17
  return;
16
18
  const skillCommandId = options.isSingleCommandCLI ? "" : options.commandId;
17
19
  const filename = commandSkillFilename(skillCommandId);
18
- const skill = await readCommandSkill(skillCommandId, options.root);
20
+ const skill = await readCommandSkill(skillCommandId, options.root, options.config.directory);
19
21
  if (skill === undefined) {
22
+ if (options.config.fallThroughOnMissingSkill)
23
+ return;
20
24
  const commandName = skillCommandId.replaceAll(":", " ") || options.bin;
21
- options.error(`No agent guidance is available for \`${commandName}\`.\nAdd it at skills/${filename}.`);
25
+ options.error(options.config.missingSkillMessage ??
26
+ `No agent guidance is available for \`${commandName}\`.\nAdd it at ${join(options.config.directory, filename)}.`);
22
27
  return;
23
28
  }
24
29
  runtime.write(ensureFinalNewline(skill));
25
30
  runtime.exit(0);
26
31
  }
27
32
  const hook = async ({ argv, config, context, id }) => {
33
+ if (!id)
34
+ return;
35
+ // oclif runs transitive init hooks across the assembled CLI, so find the command's actual owner.
36
+ const command = config.findCommand(id);
37
+ const commandPlugin = command?.pluginName
38
+ ? config.plugins.get(command.pluginName)
39
+ : undefined;
40
+ // A child CLI's dependency on this plugin must not opt the parent CLI's commands in.
41
+ if (!commandPlugin?.pjson.oclif.plugins?.includes(SKILLS_FLAG_PLUGIN_NAME)) {
42
+ return;
43
+ }
44
+ // Command shape and skill files belong to the owner, not necessarily the outer host CLI.
45
+ const commandDiscovery = commandPlugin.pjson.oclif.commands;
46
+ const isSingleCommandCLI = typeof commandDiscovery !== "string" &&
47
+ commandDiscovery?.strategy === "single" &&
48
+ Boolean(commandDiscovery.target);
49
+ let skillsFlagConfig;
50
+ try {
51
+ skillsFlagConfig = resolveSkillsFlagConfig(commandPlugin.pjson[skillsFlagConfigKey]);
52
+ }
53
+ catch (error) {
54
+ const message = error instanceof Error ? error.message : String(error);
55
+ context.error(`Invalid skills flag configuration in ${commandPlugin.name}: ${message}`, { code: "E_SKILLS_FLAG_CONFIG" });
56
+ return;
57
+ }
28
58
  await handleSkillsFlag({
29
59
  argv,
30
60
  bin: config.bin,
31
61
  commandExists: (commandId) => config.findCommand(commandId) !== undefined,
32
62
  commandId: id,
63
+ config: skillsFlagConfig,
33
64
  error: (message) => context.error(message, { code: "E_SKILL_NOT_FOUND" }),
34
- isSingleCommandCLI: config.isSingleCommandCLI,
35
- root: config.root,
65
+ isSingleCommandCLI,
66
+ root: commandPlugin.root,
36
67
  });
37
68
  };
38
69
  export default hook;
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/hooks/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAEvC,OAAO,EACL,oBAAoB,EACpB,kBAAkB,EAClB,aAAa,EACb,gBAAgB,GACjB,MAAM,cAAc,CAAA;AAiBrB,MAAM,cAAc,GAAsB;IACxC,IAAI,CAAC,IAAI;QACP,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACpB,CAAC;IACD,KAAK,CAAC,MAAM;QACV,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,CAAA;IAC1C,CAAC;CACF,CAAA;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,OAA0B,EAC1B,OAAO,GAAsB,cAAc;IAE3C,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC;QAAE,OAAM;IACxC,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,SAAS,CAAC;QAAE,OAAM;IAE3E,MAAM,cAAc,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAA;IAC1E,MAAM,QAAQ,GAAG,oBAAoB,CAAC,cAAc,CAAC,CAAA;IACrD,MAAM,KAAK,GAAG,MAAM,gBAAgB,CAAC,cAAc,EAAE,OAAO,CAAC,IAAI,CAAC,CAAA;IAElE,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,MAAM,WAAW,GAAG,cAAc,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,OAAO,CAAC,GAAG,CAAA;QACtE,OAAO,CAAC,KAAK,CACX,wCAAwC,WAAW,yBAAyB,QAAQ,GAAG,CACxF,CAAA;QACD,OAAM;IACR,CAAC;IAED,OAAO,CAAC,KAAK,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAA;IACxC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AACjB,CAAC;AAED,MAAM,IAAI,GAAc,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE;IAC9D,MAAM,gBAAgB,CAAC;QACrB,IAAI;QACJ,GAAG,EAAE,MAAM,CAAC,GAAG;QACf,aAAa,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,KAAK,SAAS;QACzE,SAAS,EAAE,EAAE;QACb,KAAK,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,CAAC;QACzE,kBAAkB,EAAE,MAAM,CAAC,kBAAkB;QAC7C,IAAI,EAAE,MAAM,CAAC,IAAI;KAClB,CAAC,CAAA;AACJ,CAAC,CAAA;AAED,eAAe,IAAI,CAAA"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/hooks/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AACvC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAEhC,OAAO,EACL,oBAAoB,EACpB,kBAAkB,EAClB,aAAa,EACb,gBAAgB,EAChB,uBAAuB,EAEvB,mBAAmB,GACpB,MAAM,cAAc,CAAA;AAErB,MAAM,uBAAuB,GAAG,uCAAuC,CAAA;AAkBvE,MAAM,cAAc,GAAsB;IACxC,IAAI,CAAC,IAAI;QACP,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACpB,CAAC;IACD,KAAK,CAAC,MAAM;QACV,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,CAAA;IAC1C,CAAC;CACF,CAAA;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,OAA0B,EAC1B,OAAO,GAAsB,cAAc;IAE3C,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC;QAAE,OAAM;IACxD,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,SAAS,CAAC;QAAE,OAAM;IAE3E,MAAM,cAAc,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAA;IAC1E,MAAM,QAAQ,GAAG,oBAAoB,CAAC,cAAc,CAAC,CAAA;IACrD,MAAM,KAAK,GAAG,MAAM,gBAAgB,CAClC,cAAc,EACd,OAAO,CAAC,IAAI,EACZ,OAAO,CAAC,MAAM,CAAC,SAAS,CACzB,CAAA;IAED,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,IAAI,OAAO,CAAC,MAAM,CAAC,yBAAyB;YAAE,OAAM;QAEpD,MAAM,WAAW,GAAG,cAAc,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,OAAO,CAAC,GAAG,CAAA;QACtE,OAAO,CAAC,KAAK,CACX,OAAO,CAAC,MAAM,CAAC,mBAAmB;YAChC,wCAAwC,WAAW,kBAAkB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,QAAQ,CAAC,GAAG,CACnH,CAAA;QACD,OAAM;IACR,CAAC;IAED,OAAO,CAAC,KAAK,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAA;IACxC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AACjB,CAAC;AAED,MAAM,IAAI,GAAc,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE;IAC9D,IAAI,CAAC,EAAE;QAAE,OAAM;IAEf,iGAAiG;IACjG,MAAM,OAAO,GAAG,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAA;IACtC,MAAM,aAAa,GAAG,OAAO,EAAE,UAAU;QACvC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC;QACxC,CAAC,CAAC,SAAS,CAAA;IAEb,qFAAqF;IACrF,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,QAAQ,CAAC,uBAAuB,CAAC,EAAE,CAAC;QAC3E,OAAM;IACR,CAAC;IAED,yFAAyF;IACzF,MAAM,gBAAgB,GAAG,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAA;IAC3D,MAAM,kBAAkB,GACtB,OAAO,gBAAgB,KAAK,QAAQ;QACpC,gBAAgB,EAAE,QAAQ,KAAK,QAAQ;QACvC,OAAO,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAA;IAElC,IAAI,gBAAkC,CAAA;IACtC,IAAI,CAAC;QACH,gBAAgB,GAAG,uBAAuB,CACxC,aAAa,CAAC,KAAK,CAAC,mBAAmB,CAAC,CACzC,CAAA;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QACtE,OAAO,CAAC,KAAK,CACX,wCAAwC,aAAa,CAAC,IAAI,KAAK,OAAO,EAAE,EACxE,EAAE,IAAI,EAAE,sBAAsB,EAAE,CACjC,CAAA;QACD,OAAM;IACR,CAAC;IAED,MAAM,gBAAgB,CAAC;QACrB,IAAI;QACJ,GAAG,EAAE,MAAM,CAAC,GAAG;QACf,aAAa,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,KAAK,SAAS;QACzE,SAAS,EAAE,EAAE;QACb,MAAM,EAAE,gBAAgB;QACxB,KAAK,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,CAAC;QACzE,kBAAkB;QAClB,IAAI,EAAE,aAAa,CAAC,IAAI;KACzB,CAAC,CAAA;AACJ,CAAC,CAAA;AAED,eAAe,IAAI,CAAA"}
package/dist/index.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- export { commandSkillFilename, ensureFinalNewline, hasSkillsFlag, llmsFlagConfig, readCommandSkill, } from "./skills.ts";
1
+ export { commandSkillFilename, createSkillsFlagDefinition, ensureFinalNewline, hasSkillsFlag, llmsFlagConfig, readCommandSkill, resolveSkillsFlagConfig, type SkillsFlagConfig, type SkillsFlagConfigInput, type SkillsFlagDefinition, type SkillsFlagDefinitionOptions, skillsFlagConfigKey, } from "./skills.ts";
2
2
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EACpB,kBAAkB,EAClB,aAAa,EACb,cAAc,EACd,gBAAgB,GACjB,MAAM,aAAa,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EACpB,0BAA0B,EAC1B,kBAAkB,EAClB,aAAa,EACb,cAAc,EACd,gBAAgB,EAChB,uBAAuB,EACvB,KAAK,gBAAgB,EACrB,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,EACzB,KAAK,2BAA2B,EAChC,mBAAmB,GACpB,MAAM,aAAa,CAAA"}
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- export { commandSkillFilename, ensureFinalNewline, hasSkillsFlag, llmsFlagConfig, readCommandSkill, } from "./skills.js";
1
+ export { commandSkillFilename, createSkillsFlagDefinition, ensureFinalNewline, hasSkillsFlag, llmsFlagConfig, readCommandSkill, resolveSkillsFlagConfig, skillsFlagConfigKey, } from "./skills.js";
2
2
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EACpB,kBAAkB,EAClB,aAAa,EACb,cAAc,EACd,gBAAgB,GACjB,MAAM,aAAa,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EACpB,0BAA0B,EAC1B,kBAAkB,EAClB,aAAa,EACb,cAAc,EACd,gBAAgB,EAChB,uBAAuB,EAKvB,mBAAmB,GACpB,MAAM,aAAa,CAAA"}
package/dist/skills.d.ts CHANGED
@@ -1,9 +1,39 @@
1
+ export declare const skillsFlagConfigKey = "oclif-plugin-skills-flag";
2
+ export interface SkillsFlagConfig {
3
+ aliases: string[];
4
+ directory: string;
5
+ fallThroughOnMissingSkill: boolean;
6
+ flag: string;
7
+ missingSkillMessage?: string;
8
+ }
9
+ export interface SkillsFlagConfigInput {
10
+ aliases?: readonly string[];
11
+ directory?: string;
12
+ fallThroughOnMissingSkill?: boolean;
13
+ flag?: string;
14
+ missingSkillMessage?: string;
15
+ }
16
+ export interface SkillsFlagDefinition {
17
+ definition: {
18
+ aliases: string[];
19
+ description: string;
20
+ hidden: boolean;
21
+ };
22
+ name: string;
23
+ }
24
+ export interface SkillsFlagDefinitionOptions {
25
+ description?: string;
26
+ hidden?: boolean;
27
+ }
28
+ export declare function resolveSkillsFlagConfig(input?: unknown): SkillsFlagConfig;
29
+ export declare function createSkillsFlagDefinition(config?: SkillsFlagConfigInput, options?: SkillsFlagDefinitionOptions): SkillsFlagDefinition;
1
30
  export declare const llmsFlagConfig: {
2
31
  aliases: string[];
3
32
  description: string;
33
+ hidden: boolean;
4
34
  };
5
35
  export declare function commandSkillFilename(commandId: string): string;
6
36
  export declare function ensureFinalNewline(input: string): string;
7
- export declare function hasSkillsFlag(argv: string[]): boolean;
8
- export declare function readCommandSkill(commandId: string, root: string): Promise<string | undefined>;
37
+ export declare function hasSkillsFlag(argv: string[], config?: Pick<SkillsFlagConfig, "aliases" | "flag">): boolean;
38
+ export declare function readCommandSkill(commandId: string, root: string, directory?: string): Promise<string | undefined>;
9
39
  //# sourceMappingURL=skills.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"skills.d.ts","sourceRoot":"","sources":["../src/skills.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,cAAc;IACzB,OAAO;IACP,WAAW;CACZ,CAAA;AAED,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAc9D;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAExD;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAOrD;AAED,wBAAsB,gBAAgB,CACpC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAS7B"}
1
+ {"version":3,"file":"skills.d.ts","sourceRoot":"","sources":["../src/skills.ts"],"names":[],"mappings":"AAkBA,eAAO,MAAM,mBAAmB,6BAA6B,CAAA;AAE7D,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,yBAAyB,EAAE,OAAO,CAAA;IAClC,IAAI,EAAE,MAAM,CAAA;IACZ,mBAAmB,CAAC,EAAE,MAAM,CAAA;CAC7B;AAED,MAAM,WAAW,qBAAqB;IACpC,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,yBAAyB,CAAC,EAAE,OAAO,CAAA;IACnC,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,mBAAmB,CAAC,EAAE,MAAM,CAAA;CAC7B;AAED,MAAM,WAAW,oBAAoB;IACnC,UAAU,EAAE;QACV,OAAO,EAAE,MAAM,EAAE,CAAA;QACjB,WAAW,EAAE,MAAM,CAAA;QACnB,MAAM,EAAE,OAAO,CAAA;KAChB,CAAA;IACD,IAAI,EAAE,MAAM,CAAA;CACb;AAED,MAAM,WAAW,2BAA2B;IAC1C,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB;AAkCD,wBAAgB,uBAAuB,CACrC,KAAK,GAAE,OAAmB,GACzB,gBAAgB,CAyDlB;AAED,wBAAgB,0BAA0B,CACxC,MAAM,GAAE,qBAA0B,EAClC,OAAO,GAAE,2BAAgC,GACxC,oBAAoB,CAoBtB;AAED,eAAO,MAAM,cAAc;aAlId,MAAM,EAAE;iBACJ,MAAM;YACX,OAAO;CAgIkD,CAAA;AAErE,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAc9D;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAExD;AAED,wBAAgB,aAAa,CAC3B,IAAI,EAAE,MAAM,EAAE,EACd,MAAM,GAAE,IAAI,CACV,gBAAgB,EAChB,SAAS,GAAG,MAAM,CACU,GAC7B,OAAO,CAcT;AAED,wBAAsB,gBAAgB,CACpC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EACZ,SAAS,SAAuC,GAC/C,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAa7B"}
package/dist/skills.js CHANGED
@@ -1,11 +1,102 @@
1
1
  import { readFile } from "node:fs/promises";
2
- import { join } from "node:path";
3
- const SKILLS_DIRECTORY = "skills";
4
- const SKILLS_FLAGS = new Set(["--llms", "--skill"]);
5
- export const llmsFlagConfig = {
2
+ import { join, posix, win32 } from "node:path";
3
+ const DEFAULT_DESCRIPTION = "Show agent-oriented guidance for this command";
4
+ const DEFAULT_SKILLS_FLAG_CONFIG = {
6
5
  aliases: ["skill"],
7
- description: "Show agent-oriented guidance for this command",
6
+ directory: "skills",
7
+ fallThroughOnMissingSkill: false,
8
+ flag: "llms",
8
9
  };
10
+ const SKILLS_FLAG_CONFIG_OPTIONS = new Set([
11
+ "aliases",
12
+ "directory",
13
+ "fallThroughOnMissingSkill",
14
+ "flag",
15
+ "missingSkillMessage",
16
+ ]);
17
+ export const skillsFlagConfigKey = "oclif-plugin-skills-flag";
18
+ function validateFlagName(value, kind) {
19
+ if (typeof value !== "string" ||
20
+ value.length === 0 ||
21
+ value.startsWith("-") ||
22
+ /[\s=\0]/u.test(value)) {
23
+ throw new TypeError(`Invalid flag ${kind}: expected a name without leading dashes, whitespace, or "="`);
24
+ }
25
+ return value;
26
+ }
27
+ function validateSkillsDirectory(value) {
28
+ if (typeof value !== "string" ||
29
+ value.length === 0 ||
30
+ value.includes("\0") ||
31
+ posix.isAbsolute(value) ||
32
+ win32.isAbsolute(value) ||
33
+ value.split(/[\\/]/u).includes("..")) {
34
+ throw new TypeError("Invalid skills directory: expected a relative path without parent traversal");
35
+ }
36
+ return value;
37
+ }
38
+ export function resolveSkillsFlagConfig(input = undefined) {
39
+ if (input !== undefined &&
40
+ (typeof input !== "object" || input === null || Array.isArray(input))) {
41
+ throw new TypeError("Skills flag configuration must be an object");
42
+ }
43
+ const options = (input ?? {});
44
+ for (const option of Object.keys(options)) {
45
+ if (!SKILLS_FLAG_CONFIG_OPTIONS.has(option)) {
46
+ throw new TypeError(`Unknown configuration option: ${option}`);
47
+ }
48
+ }
49
+ const flag = validateFlagName(options.flag ?? DEFAULT_SKILLS_FLAG_CONFIG.flag, "name");
50
+ const aliasesInput = options.aliases ?? [
51
+ ...DEFAULT_SKILLS_FLAG_CONFIG.aliases,
52
+ ];
53
+ if (!Array.isArray(aliasesInput)) {
54
+ throw new TypeError("Skills flag aliases must be an array");
55
+ }
56
+ const aliases = aliasesInput.map((alias) => validateFlagName(alias, "alias"));
57
+ const names = [flag, ...aliases];
58
+ if (new Set(names).size !== names.length) {
59
+ throw new TypeError("Duplicate flag name in flag or aliases");
60
+ }
61
+ const missingSkillMessage = options.missingSkillMessage;
62
+ if (missingSkillMessage !== undefined &&
63
+ (typeof missingSkillMessage !== "string" ||
64
+ missingSkillMessage.length === 0)) {
65
+ throw new TypeError("Missing skill message must be a non-empty string");
66
+ }
67
+ const fallThroughOnMissingSkill = options.fallThroughOnMissingSkill ??
68
+ DEFAULT_SKILLS_FLAG_CONFIG.fallThroughOnMissingSkill;
69
+ if (typeof fallThroughOnMissingSkill !== "boolean") {
70
+ throw new TypeError("Fall through on missing skill must be a boolean");
71
+ }
72
+ return {
73
+ aliases,
74
+ directory: validateSkillsDirectory(options.directory ?? DEFAULT_SKILLS_FLAG_CONFIG.directory),
75
+ fallThroughOnMissingSkill,
76
+ flag,
77
+ ...(missingSkillMessage === undefined ? {} : { missingSkillMessage }),
78
+ };
79
+ }
80
+ export function createSkillsFlagDefinition(config = {}, options = {}) {
81
+ const resolved = resolveSkillsFlagConfig(config);
82
+ const description = options.description ?? DEFAULT_DESCRIPTION;
83
+ const hidden = options.hidden ?? true;
84
+ if (typeof description !== "string") {
85
+ throw new TypeError("Flag description must be a string");
86
+ }
87
+ if (typeof hidden !== "boolean") {
88
+ throw new TypeError("Flag visibility must be a boolean");
89
+ }
90
+ return {
91
+ definition: {
92
+ aliases: resolved.aliases,
93
+ description,
94
+ hidden,
95
+ },
96
+ name: resolved.flag,
97
+ };
98
+ }
99
+ export const llmsFlagConfig = createSkillsFlagDefinition().definition;
9
100
  export function commandSkillFilename(commandId) {
10
101
  const filename = commandId.replaceAll(":", "-") || "index";
11
102
  if (filename === "." ||
@@ -20,17 +111,21 @@ export function commandSkillFilename(commandId) {
20
111
  export function ensureFinalNewline(input) {
21
112
  return input.endsWith("\n") ? input : `${input}\n`;
22
113
  }
23
- export function hasSkillsFlag(argv) {
114
+ export function hasSkillsFlag(argv, config = DEFAULT_SKILLS_FLAG_CONFIG) {
115
+ const flags = new Set([
116
+ `--${config.flag}`,
117
+ ...config.aliases.map((alias) => alias.length === 1 ? `-${alias}` : `--${alias}`),
118
+ ]);
24
119
  for (const argument of argv) {
25
120
  if (argument === "--")
26
121
  return false;
27
- if (SKILLS_FLAGS.has(argument))
122
+ if (flags.has(argument))
28
123
  return true;
29
124
  }
30
125
  return false;
31
126
  }
32
- export async function readCommandSkill(commandId, root) {
33
- const path = join(root, SKILLS_DIRECTORY, commandSkillFilename(commandId));
127
+ export async function readCommandSkill(commandId, root, directory = DEFAULT_SKILLS_FLAG_CONFIG.directory) {
128
+ const path = join(root, validateSkillsDirectory(directory), commandSkillFilename(commandId));
34
129
  try {
35
130
  return await readFile(path, "utf8");
36
131
  }
@@ -1 +1 @@
1
- {"version":3,"file":"skills.js","sourceRoot":"","sources":["../src/skills.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAC3C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAEhC,MAAM,gBAAgB,GAAG,QAAQ,CAAA;AACjC,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAA;AAEnD,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,OAAO,EAAE,CAAC,OAAO,CAAC;IAClB,WAAW,EAAE,+CAA+C;CAC7D,CAAA;AAED,MAAM,UAAU,oBAAoB,CAAC,SAAiB;IACpD,MAAM,QAAQ,GAAG,SAAS,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,OAAO,CAAA;IAE1D,IACE,QAAQ,KAAK,GAAG;QAChB,QAAQ,KAAK,IAAI;QACjB,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC;QACtB,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC;QACvB,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EACvB,CAAC;QACD,MAAM,IAAI,SAAS,CAAC,6BAA6B,SAAS,EAAE,CAAC,CAAA;IAC/D,CAAC;IAED,OAAO,GAAG,QAAQ,KAAK,CAAA;AACzB,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,KAAa;IAC9C,OAAO,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,CAAA;AACpD,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,IAAc;IAC1C,KAAK,MAAM,QAAQ,IAAI,IAAI,EAAE,CAAC;QAC5B,IAAI,QAAQ,KAAK,IAAI;YAAE,OAAO,KAAK,CAAA;QACnC,IAAI,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC;YAAE,OAAO,IAAI,CAAA;IAC7C,CAAC;IAED,OAAO,KAAK,CAAA;AACd,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,SAAiB,EACjB,IAAY;IAEZ,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,gBAAgB,EAAE,oBAAoB,CAAC,SAAS,CAAC,CAAC,CAAA;IAE1E,IAAI,CAAC;QACH,OAAO,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;IACrC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ;YAAE,OAAM;QAC9D,MAAM,KAAK,CAAA;IACb,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"skills.js","sourceRoot":"","sources":["../src/skills.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sanity-labs/oclif-plugin-skills-flag",
3
- "version": "0.1.3",
3
+ "version": "0.2.1",
4
4
  "description": "Expose per-command Markdown to coding agents through an oclif flag",
5
5
  "author": "Sanity",
6
6
  "license": "MIT",