skillett 0.1.7 → 0.2.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.
@@ -0,0 +1,5 @@
1
+ export declare function feedback(options: {
2
+ title?: string;
3
+ body?: string;
4
+ category?: string;
5
+ }): Promise<void>;
@@ -0,0 +1,61 @@
1
+ import ora from "ora";
2
+ import { loadApiKey } from "../lib/config.js";
3
+ import { skillettFetch } from "../lib/api.js";
4
+ const VALID_CATEGORIES = ["bug_report", "integration_request", "feature_request", "improvement", "other"];
5
+ export async function feedback(options) {
6
+ const apiKey = loadApiKey();
7
+ if (!apiKey) {
8
+ console.error(JSON.stringify({
9
+ error: "not_authenticated",
10
+ message: "Run `skillett login` first.",
11
+ }));
12
+ process.exit(1);
13
+ }
14
+ if (!options.title) {
15
+ console.error(JSON.stringify({
16
+ error: "missing_field",
17
+ message: "Title is required. Use --title \"Your feedback title\"",
18
+ }));
19
+ process.exit(1);
20
+ }
21
+ if (!options.body) {
22
+ console.error(JSON.stringify({
23
+ error: "missing_field",
24
+ message: "Body is required. Use --body \"Describe your feedback\"",
25
+ }));
26
+ process.exit(1);
27
+ }
28
+ const category = options.category && VALID_CATEGORIES.includes(options.category)
29
+ ? options.category
30
+ : "other";
31
+ const isTTY = process.stdout.isTTY;
32
+ const spinner = isTTY ? ora({ text: " Submitting feedback…" }).start() : null;
33
+ try {
34
+ const res = await skillettFetch("/v1/feedback", apiKey, {
35
+ method: "POST",
36
+ body: JSON.stringify({
37
+ title: options.title,
38
+ body: options.body,
39
+ category,
40
+ }),
41
+ });
42
+ spinner?.stop();
43
+ const data = await res.json();
44
+ if (res.ok) {
45
+ console.log(JSON.stringify({ status: 201, data }, null, 2));
46
+ }
47
+ else {
48
+ console.error(JSON.stringify({ status: res.status, ...data }, null, 2));
49
+ process.exit(1);
50
+ }
51
+ }
52
+ catch (err) {
53
+ spinner?.stop();
54
+ console.error(JSON.stringify({
55
+ error: "network_error",
56
+ message: err.message,
57
+ status: 0,
58
+ }));
59
+ process.exit(2);
60
+ }
61
+ }
package/dist/index.js CHANGED
@@ -10,54 +10,56 @@ import { connect } from "./commands/connect.js";
10
10
  import { disconnect } from "./commands/disconnect.js";
11
11
  import { pull } from "./commands/pull.js";
12
12
  import { seed } from "./commands/seed.js";
13
- const HELP_TEXT = `
14
- Skillett Agent Skills Platform
15
-
16
- Connect and use external services (GitHub, Slack, Gmail, etc.) through CLI commands.
17
-
18
- COMMANDS
19
-
20
- skillett login Authenticate with Skillett (opens browser)
21
- skillett login --key <key> Authenticate with an API key directly
22
- skillett status Show current user, connections, and API key info
23
- skillett skills List available integrations and connection status
24
- skillett skills <integration> List all endpoints for an integration
25
- skillett skills <integ> <name> Show full docs for a specific endpoint
26
- skillett run <integ> <name> Execute an endpoint
27
- skillett connect <integration> Connect an integration (opens browser for OAuth)
28
- skillett disconnect <integ> Disconnect an integration
29
- skillett pull <integration> Download skill docs locally for faster agent context
30
- skillett help Show this help message
31
-
32
- QUICK START
33
-
34
- skillett login # authenticate
35
- skillett skills # see what's available
36
- skillett run github create_issue \\
37
- --repo acme/webapp --title "Fix login bug" # execute
38
-
39
- PASSING PARAMETERS
40
-
41
- As flags: skillett run github create_issue --repo acme/webapp --title "Bug"
42
- As JSON: skillett run github create_issue '{"repo":"acme/webapp","title":"Bug"}'
43
-
44
- CONFIGURATION
45
-
46
- Skillett stores config in a .env file in the current working directory.
47
- All commands must be run from the same directory where you ran \`skillett login\`.
48
-
49
- Stored variables:
50
- SKILLETT_API_KEY Your API key (starts with sk_)
51
- SKILLETT_PLATFORM Detected platform (claude, cursor, windsurf, generic)
52
- SKILLETT_API_URL API base URL (default: https://api.skillett.dev)
53
-
54
- You can also set SKILLETT_API_KEY as an environment variable instead of
55
- using the .env file: SKILLETT_API_KEY=sk_... skillett status
56
-
57
- OUTPUT
58
-
59
- All commands output JSON to stdout. Errors include an "error" field.
60
- Exit code 0 = success, non-zero = failure.
13
+ import { feedback } from "./commands/feedback.js";
14
+ const HELP_TEXT = `
15
+ Skillett — Agent Skills Platform
16
+
17
+ Connect and use external services (GitHub, Slack, Gmail, etc.) through CLI commands.
18
+
19
+ COMMANDS
20
+
21
+ skillett login Authenticate with Skillett (opens browser)
22
+ skillett login --key <key> Authenticate with an API key directly
23
+ skillett status Show current user, connections, and API key info
24
+ skillett skills List available integrations and connection status
25
+ skillett skills <integration> List all endpoints for an integration
26
+ skillett skills <integ> <name> Show full docs for a specific endpoint
27
+ skillett run <integ> <name> Execute an endpoint
28
+ skillett connect <integration> Connect an integration (opens browser for OAuth)
29
+ skillett disconnect <integ> Disconnect an integration
30
+ skillett pull <integration> Download skill docs locally for faster agent context
31
+ skillett feedback Submit feedback (bug report, feature request, etc.)
32
+ skillett help Show this help message
33
+
34
+ QUICK START
35
+
36
+ skillett login # authenticate
37
+ skillett skills # see what's available
38
+ skillett run github create_issue \\
39
+ --repo acme/webapp --title "Fix login bug" # execute
40
+
41
+ PASSING PARAMETERS
42
+
43
+ As flags: skillett run github create_issue --repo acme/webapp --title "Bug"
44
+ As JSON: skillett run github create_issue '{"repo":"acme/webapp","title":"Bug"}'
45
+
46
+ CONFIGURATION
47
+
48
+ Skillett stores config in a .env file in the current working directory.
49
+ All commands must be run from the same directory where you ran \`skillett login\`.
50
+
51
+ Stored variables:
52
+ SKILLETT_API_KEY Your API key (starts with sk_)
53
+ SKILLETT_PLATFORM Detected platform (claude, cursor, windsurf, generic)
54
+ SKILLETT_API_URL API base URL (default: https://api.skillett.dev)
55
+
56
+ You can also set SKILLETT_API_KEY as an environment variable instead of
57
+ using the .env file: SKILLETT_API_KEY=sk_... skillett status
58
+
59
+ OUTPUT
60
+
61
+ All commands output JSON to stdout. Errors include an "error" field.
62
+ Exit code 0 = success, non-zero = failure.
61
63
  `;
62
64
  const program = new Command();
63
65
  program
@@ -95,9 +97,11 @@ program
95
97
  .argument("<integration>", "Integration slug (e.g. github)")
96
98
  .argument("<endpoint>", "Endpoint name (e.g. create_issue)")
97
99
  .allowUnknownOption(true)
98
- .action((integration, endpoint, _opts, cmd) => {
99
- // Pass remaining args (--flags and positional JSON) to the run handler
100
- const extraArgs = cmd.args.slice(2);
100
+ .allowExcessArguments(true)
101
+ .action((integration, endpoint) => {
102
+ // Grab everything after "run <integration> <endpoint>" from raw argv
103
+ const runIdx = process.argv.indexOf("run");
104
+ const extraArgs = runIdx >= 0 ? process.argv.slice(runIdx + 3) : [];
101
105
  return run(integration, endpoint, extraArgs);
102
106
  });
103
107
  program
@@ -116,6 +120,13 @@ program
116
120
  .argument("<integration>", "Integration slug (e.g. github)")
117
121
  .option("--path <dir>", "Custom output directory")
118
122
  .action(pull);
123
+ program
124
+ .command("feedback")
125
+ .description("Submit feedback (bug report, feature request, etc.)")
126
+ .option("--title <title>", "Feedback title")
127
+ .option("--body <body>", "Feedback description")
128
+ .option("--category <category>", "Category: bug_report, integration_request, feature_request, improvement, other")
129
+ .action(feedback);
119
130
  program
120
131
  .command("seed", { hidden: true })
121
132
  .argument("<skill-folder>", "Path to skill folder")
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "skillett",
3
- "version": "0.1.7",
3
+ "version": "0.2.0",
4
4
  "description": "Skillett CLI — Agent Skills Platform",
5
5
  "type": "module",
6
6
  "bin": {