latchkey 2.4.3 → 2.5.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/README.md +5 -0
- package/dist/skills/generic/SKILL.md +114 -0
- package/dist/skills/generic/latchkey/SKILL.md +114 -0
- package/dist/skills/openclaw/SKILL.md +106 -0
- package/dist/skills/openclaw/latchkey/SKILL.md +106 -0
- package/dist/src/skillMd.js +2 -2
- package/dist/src/skillMd.js.map +1 -1
- package/package.json +7 -3
package/README.md
CHANGED
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
# Latchkey
|
|
2
2
|
|
|
3
|
+
[](https://npmjs.com/package/your-pkg)
|
|
4
|
+
[](https://github.com/imbue-ai/latchkey/actions)
|
|
5
|
+
[](LICENSE)
|
|
6
|
+
[](https://npmjs.com/package/latchkey)
|
|
7
|
+
|
|
3
8
|
Inject API credentials into local agent requests.
|
|
4
9
|
|
|
5
10
|
## Quick example
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: latchkey
|
|
3
|
+
description: Interact with third-party or self-hosted services (Slack, Google Workspace, Dropbox, GitHub, Linear, Coolify...) using their HTTP APIs on the user's behalf.
|
|
4
|
+
compatibility: Requires node.js, curl and latchkey (npm install -g latchkey). A desktop/GUI environment is required for the browser functionality.
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Latchkey
|
|
8
|
+
|
|
9
|
+
## Instructions
|
|
10
|
+
|
|
11
|
+
Latchkey is a CLI tool that automatically injects credentials into curl commands. Credentials (mostly API tokens) can be either manually managed or, for some services, Latchkey can open a browser login pop-up window and extract API credentials from the session.
|
|
12
|
+
|
|
13
|
+
Use this skill when the user asks you to work on their behalf with services that have HTTP APIs, like AWS, GitLab, Google Drive, Discord or others.
|
|
14
|
+
|
|
15
|
+
Usage:
|
|
16
|
+
|
|
17
|
+
1. **Use `latchkey curl`** instead of regular `curl` for supported services.
|
|
18
|
+
2. **Pass through all regular curl arguments** - latchkey is a transparent wrapper.
|
|
19
|
+
3. **Check for `latchkey services list`** to get a list of supported services. Use `--viable` to only show the currently configured ones.
|
|
20
|
+
4. **Use `latchkey services info <service_name>`** to get information about a specific service (auth options, credentials status, API docs links, special requirements, etc.).
|
|
21
|
+
5. **If necessary, ask the user to configure credentials first.** Tell the user to run `latchkey auth set` on the machine where latchkey is installed (using the setCredentialsExample from the `services info` command).
|
|
22
|
+
6. **Alternatively, let the user log in with the browser.** If supported for the given service, run `latchkey auth browser <service_name>` to open a browser login pop-up window.
|
|
23
|
+
7. **Look for the newest documentation of the desired public API online.** If using the `browser` auth command, avoid bot-only endpoints.
|
|
24
|
+
8. **Do not initiate a new login if the credentials status is `valid` or `unknown`** - the user might just not have the necessary permissions for the action you're trying to do.
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
## Examples
|
|
28
|
+
|
|
29
|
+
### Make an authenticated curl request
|
|
30
|
+
```bash
|
|
31
|
+
latchkey curl [curl arguments]
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
### Creating a Slack channel
|
|
35
|
+
```bash
|
|
36
|
+
latchkey curl -X POST 'https://slack.com/api/conversations.create' \
|
|
37
|
+
-H 'Content-Type: application/json' \
|
|
38
|
+
-d '{"name":"my-channel"}'
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
(Notice that `-H 'Authorization: Bearer` is not present in the invocation.)
|
|
42
|
+
|
|
43
|
+
### Getting Discord user info
|
|
44
|
+
```bash
|
|
45
|
+
latchkey curl 'https://discord.com/api/v10/users/@me'
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
### Detect expired credentials and force a new login to Discord
|
|
49
|
+
```bash
|
|
50
|
+
latchkey services info discord # Check the "credentialStatus" field - shows "invalid"
|
|
51
|
+
latchkey auth browser discord
|
|
52
|
+
latchkey curl 'https://discord.com/api/v10/users/@me'
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
Only do this when you notice that your previous call ended up not being authenticated (HTTP 401 or 403).
|
|
56
|
+
|
|
57
|
+
### List usable services
|
|
58
|
+
|
|
59
|
+
```bash
|
|
60
|
+
latchkey services list --viable
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
Lists services that either have stored credentials or can be authenticated via a browser.
|
|
64
|
+
|
|
65
|
+
### Get service-specific info
|
|
66
|
+
```bash
|
|
67
|
+
latchkey services info slack
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
Returns auth options, credentials status, and developer notes
|
|
71
|
+
about the service. If `browser` is not present in the
|
|
72
|
+
`authOptions` field, the service requires the user to directly
|
|
73
|
+
set API credentials via `latchkey auth set` or `latchkey auth
|
|
74
|
+
set-nocurl` before making requests.
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
## Storing credentials
|
|
78
|
+
|
|
79
|
+
Aside from the `latchkey auth browser` case, it is the user's responsibility to supply credentials.
|
|
80
|
+
The user would typically do something like this:
|
|
81
|
+
|
|
82
|
+
```bash
|
|
83
|
+
latchkey auth set my-gitlab-instance -H "PRIVATE-TOKEN: <token>"
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
When credentials cannot be expressed as static curl arguments, the user would use the `set-nocurl` subcommand. For example:
|
|
87
|
+
|
|
88
|
+
```bash
|
|
89
|
+
latchkey auth set-nocurl aws <access-key-id> <secret-access-key>
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
If a service doesn't appear with the `--viable` flag, it may
|
|
93
|
+
still be supported; the user just hasn't provided the
|
|
94
|
+
credentials yet. `latchkey service info <service_name>` can be
|
|
95
|
+
used to see how to provide credentials for a specific service.
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
## Notes
|
|
99
|
+
|
|
100
|
+
- All curl arguments are passed through unchanged
|
|
101
|
+
- Return code, stdout and stderr are passed back from curl
|
|
102
|
+
- Credentials are always stored encrypted and are never transmitted anywhere beyond the endpoints specified by the actual curl calls.
|
|
103
|
+
|
|
104
|
+
## Currently supported services
|
|
105
|
+
|
|
106
|
+
Latchkey currently offers varying levels of support for the
|
|
107
|
+
following services: AWS, Calendly, Coolify, Discord, Dropbox, Figma, GitHub, GitLab,
|
|
108
|
+
Gmail, Google Analytics, Google Calendar, Google Docs, Google Drive, Google Sheets,
|
|
109
|
+
Linear, Mailchimp, Notion, Sentry, Slack, Stripe, Telegram, Umami, Yelp, Zoom, and more.
|
|
110
|
+
|
|
111
|
+
### User-registered services
|
|
112
|
+
|
|
113
|
+
Note for humans: users can also add limited support for new services
|
|
114
|
+
at runtime using the `latchkey services register` command.
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: latchkey
|
|
3
|
+
description: Interact with third-party or self-hosted services (Slack, Google Workspace, Dropbox, GitHub, Linear, Coolify...) using their HTTP APIs on the user's behalf.
|
|
4
|
+
compatibility: Requires node.js, curl and latchkey (npm install -g latchkey). A desktop/GUI environment is required for the browser functionality.
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Latchkey
|
|
8
|
+
|
|
9
|
+
## Instructions
|
|
10
|
+
|
|
11
|
+
Latchkey is a CLI tool that automatically injects credentials into curl commands. Credentials (mostly API tokens) can be either manually managed or, for some services, Latchkey can open a browser login pop-up window and extract API credentials from the session.
|
|
12
|
+
|
|
13
|
+
Use this skill when the user asks you to work on their behalf with services that have HTTP APIs, like AWS, GitLab, Google Drive, Discord or others.
|
|
14
|
+
|
|
15
|
+
Usage:
|
|
16
|
+
|
|
17
|
+
1. **Use `latchkey curl`** instead of regular `curl` for supported services.
|
|
18
|
+
2. **Pass through all regular curl arguments** - latchkey is a transparent wrapper.
|
|
19
|
+
3. **Check for `latchkey services list`** to get a list of supported services. Use `--viable` to only show the currently configured ones.
|
|
20
|
+
4. **Use `latchkey services info <service_name>`** to get information about a specific service (auth options, credentials status, API docs links, special requirements, etc.).
|
|
21
|
+
5. **If necessary, ask the user to configure credentials first.** Tell the user to run `latchkey auth set` on the machine where latchkey is installed (using the setCredentialsExample from the `services info` command).
|
|
22
|
+
6. **Alternatively, let the user log in with the browser.** If supported for the given service, run `latchkey auth browser <service_name>` to open a browser login pop-up window.
|
|
23
|
+
7. **Look for the newest documentation of the desired public API online.** If using the `browser` auth command, avoid bot-only endpoints.
|
|
24
|
+
8. **Do not initiate a new login if the credentials status is `valid` or `unknown`** - the user might just not have the necessary permissions for the action you're trying to do.
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
## Examples
|
|
28
|
+
|
|
29
|
+
### Make an authenticated curl request
|
|
30
|
+
```bash
|
|
31
|
+
latchkey curl [curl arguments]
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
### Creating a Slack channel
|
|
35
|
+
```bash
|
|
36
|
+
latchkey curl -X POST 'https://slack.com/api/conversations.create' \
|
|
37
|
+
-H 'Content-Type: application/json' \
|
|
38
|
+
-d '{"name":"my-channel"}'
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
(Notice that `-H 'Authorization: Bearer` is not present in the invocation.)
|
|
42
|
+
|
|
43
|
+
### Getting Discord user info
|
|
44
|
+
```bash
|
|
45
|
+
latchkey curl 'https://discord.com/api/v10/users/@me'
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
### Detect expired credentials and force a new login to Discord
|
|
49
|
+
```bash
|
|
50
|
+
latchkey services info discord # Check the "credentialStatus" field - shows "invalid"
|
|
51
|
+
latchkey auth browser discord
|
|
52
|
+
latchkey curl 'https://discord.com/api/v10/users/@me'
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
Only do this when you notice that your previous call ended up not being authenticated (HTTP 401 or 403).
|
|
56
|
+
|
|
57
|
+
### List usable services
|
|
58
|
+
|
|
59
|
+
```bash
|
|
60
|
+
latchkey services list --viable
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
Lists services that either have stored credentials or can be authenticated via a browser.
|
|
64
|
+
|
|
65
|
+
### Get service-specific info
|
|
66
|
+
```bash
|
|
67
|
+
latchkey services info slack
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
Returns auth options, credentials status, and developer notes
|
|
71
|
+
about the service. If `browser` is not present in the
|
|
72
|
+
`authOptions` field, the service requires the user to directly
|
|
73
|
+
set API credentials via `latchkey auth set` or `latchkey auth
|
|
74
|
+
set-nocurl` before making requests.
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
## Storing credentials
|
|
78
|
+
|
|
79
|
+
Aside from the `latchkey auth browser` case, it is the user's responsibility to supply credentials.
|
|
80
|
+
The user would typically do something like this:
|
|
81
|
+
|
|
82
|
+
```bash
|
|
83
|
+
latchkey auth set my-gitlab-instance -H "PRIVATE-TOKEN: <token>"
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
When credentials cannot be expressed as static curl arguments, the user would use the `set-nocurl` subcommand. For example:
|
|
87
|
+
|
|
88
|
+
```bash
|
|
89
|
+
latchkey auth set-nocurl aws <access-key-id> <secret-access-key>
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
If a service doesn't appear with the `--viable` flag, it may
|
|
93
|
+
still be supported; the user just hasn't provided the
|
|
94
|
+
credentials yet. `latchkey service info <service_name>` can be
|
|
95
|
+
used to see how to provide credentials for a specific service.
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
## Notes
|
|
99
|
+
|
|
100
|
+
- All curl arguments are passed through unchanged
|
|
101
|
+
- Return code, stdout and stderr are passed back from curl
|
|
102
|
+
- Credentials are always stored encrypted and are never transmitted anywhere beyond the endpoints specified by the actual curl calls.
|
|
103
|
+
|
|
104
|
+
## Currently supported services
|
|
105
|
+
|
|
106
|
+
Latchkey currently offers varying levels of support for the
|
|
107
|
+
following services: AWS, Calendly, Coolify, Discord, Dropbox, Figma, GitHub, GitLab,
|
|
108
|
+
Gmail, Google Analytics, Google Calendar, Google Docs, Google Drive, Google Sheets,
|
|
109
|
+
Linear, Mailchimp, Notion, Sentry, Slack, Stripe, Telegram, Umami, Yelp, Zoom, and more.
|
|
110
|
+
|
|
111
|
+
### User-registered services
|
|
112
|
+
|
|
113
|
+
Note for humans: users can also add limited support for new services
|
|
114
|
+
at runtime using the `latchkey services register` command.
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: latchkey
|
|
3
|
+
description: Interact with arbitrary third-party or self-hosted services (AWS, Slack, Google Drive, Dropbox, GitHub, GitLab, Linear, Coolify...) using their HTTP APIs.
|
|
4
|
+
compatibility: Requires node.js, curl and latchkey (npm install -g latchkey).
|
|
5
|
+
metadata: {"openclaw":{"emoji":"🔑","requires":{"bins":["latchkey"]},"install":[{"id":"node","kind":"node","package":"latchkey","bins":["latchkey"],"label":"Install Latchkey (npm)"}]}}
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Latchkey
|
|
9
|
+
|
|
10
|
+
## Instructions
|
|
11
|
+
|
|
12
|
+
Latchkey is a CLI tool that automatically injects credentials into curl commands. Credentials (mostly API tokens) need to be manually managed by the user.
|
|
13
|
+
|
|
14
|
+
Use this skill when the user asks you to work with services that have HTTP APIs, like AWS, Coolify, GitLab, Google Drive, Discord or others.
|
|
15
|
+
|
|
16
|
+
Usage:
|
|
17
|
+
|
|
18
|
+
1. **Use `latchkey curl`** instead of regular `curl` for supported services.
|
|
19
|
+
2. **Pass through all regular curl arguments** - latchkey is a transparent wrapper.
|
|
20
|
+
3. **Check for `latchkey services list`** to get a list of supported services. Use `--viable` to only show the currently configured ones.
|
|
21
|
+
4. **Use `latchkey services info <service_name>`** to get information about a specific service (auth options, credentials status, API docs links, special requirements, etc.).
|
|
22
|
+
5. **If necessary, ask the user to configure credentials first.** Tell the user to run `latchkey auth set` on the machine where latchkey is installed (using the setCredentialsExample from the `services info` command).
|
|
23
|
+
6. **Look for the newest documentation of the desired public API online.**
|
|
24
|
+
7. **Do not initiate a new login if the credentials status is `valid` or `unknown`** - the user might just not have the necessary permissions for the action you're trying to do.
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
## Examples
|
|
28
|
+
|
|
29
|
+
### Make an authenticated curl request
|
|
30
|
+
```bash
|
|
31
|
+
latchkey curl [curl arguments]
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
### Creating a Slack channel
|
|
35
|
+
```bash
|
|
36
|
+
latchkey curl -X POST 'https://slack.com/api/conversations.create' \
|
|
37
|
+
-H 'Content-Type: application/json' \
|
|
38
|
+
-d '{"name":"my-channel"}'
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
(Notice that `-H 'Authorization: Bearer` is not present in the invocation.)
|
|
42
|
+
|
|
43
|
+
### Getting Discord user info
|
|
44
|
+
```bash
|
|
45
|
+
latchkey curl 'https://discord.com/api/v10/users/@me'
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
### Detect expired credentials
|
|
49
|
+
```bash
|
|
50
|
+
latchkey services info discord # Check the "credentialStatus" field - shows "invalid"
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
### List usable services
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
latchkey services list --viable
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
Lists services that have stored credentials.
|
|
60
|
+
|
|
61
|
+
### Get service-specific info
|
|
62
|
+
```bash
|
|
63
|
+
latchkey services info slack
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
Returns auth options, credentials status, and developer notes
|
|
67
|
+
about the service.
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
## Storing credentials
|
|
71
|
+
|
|
72
|
+
It is the user's responsibility to supply credentials. The user would typically do something like this:
|
|
73
|
+
|
|
74
|
+
```bash
|
|
75
|
+
latchkey auth set my-gitlab-instance -H "PRIVATE-TOKEN: <token>"
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
When credentials cannot be expressed as static curl arguments, the user would use the `set-nocurl` subcommand. For example:
|
|
79
|
+
|
|
80
|
+
```bash
|
|
81
|
+
latchkey auth set-nocurl aws <access-key-id> <secret-access-key>
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
If a service doesn't appear with the `--viable` flag, it may
|
|
85
|
+
still be supported; the user just hasn't provided the
|
|
86
|
+
credentials yet. `latchkey service info <service_name>` can be
|
|
87
|
+
used to see how to provide credentials for a specific service.
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
## Notes
|
|
91
|
+
|
|
92
|
+
- All curl arguments are passed through unchanged
|
|
93
|
+
- Return code, stdout and stderr are passed back from curl
|
|
94
|
+
- Credentials are always stored encrypted and are never transmitted anywhere beyond the endpoints specified by the actual curl calls.
|
|
95
|
+
|
|
96
|
+
## Currently supported services
|
|
97
|
+
|
|
98
|
+
Latchkey currently offers varying levels of support for the
|
|
99
|
+
following services: AWS, Calendly, Coolify, Discord, Dropbox, Figma, GitHub, GitLab,
|
|
100
|
+
Gmail, Google Analytics, Google Calendar, Google Docs, Google Drive, Google Sheets,
|
|
101
|
+
Linear, Mailchimp, Notion, Sentry, Slack, Stripe, Telegram, Umami, Yelp, Zoom, and more.
|
|
102
|
+
|
|
103
|
+
### User-registered services
|
|
104
|
+
|
|
105
|
+
Note for humans: users can also add limited support for new services
|
|
106
|
+
at runtime using the `latchkey services register` command.
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: latchkey
|
|
3
|
+
description: Interact with arbitrary third-party or self-hosted services (AWS, Slack, Google Drive, Dropbox, GitHub, GitLab, Linear, Coolify...) using their HTTP APIs.
|
|
4
|
+
compatibility: Requires node.js, curl and latchkey (npm install -g latchkey).
|
|
5
|
+
metadata: {"openclaw":{"emoji":"🔑","requires":{"bins":["latchkey"]},"install":[{"id":"node","kind":"node","package":"latchkey","bins":["latchkey"],"label":"Install Latchkey (npm)"}]}}
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Latchkey
|
|
9
|
+
|
|
10
|
+
## Instructions
|
|
11
|
+
|
|
12
|
+
Latchkey is a CLI tool that automatically injects credentials into curl commands. Credentials (mostly API tokens) need to be manually managed by the user.
|
|
13
|
+
|
|
14
|
+
Use this skill when the user asks you to work with services that have HTTP APIs, like AWS, Coolify, GitLab, Google Drive, Discord or others.
|
|
15
|
+
|
|
16
|
+
Usage:
|
|
17
|
+
|
|
18
|
+
1. **Use `latchkey curl`** instead of regular `curl` for supported services.
|
|
19
|
+
2. **Pass through all regular curl arguments** - latchkey is a transparent wrapper.
|
|
20
|
+
3. **Check for `latchkey services list`** to get a list of supported services. Use `--viable` to only show the currently configured ones.
|
|
21
|
+
4. **Use `latchkey services info <service_name>`** to get information about a specific service (auth options, credentials status, API docs links, special requirements, etc.).
|
|
22
|
+
5. **If necessary, ask the user to configure credentials first.** Tell the user to run `latchkey auth set` on the machine where latchkey is installed (using the setCredentialsExample from the `services info` command).
|
|
23
|
+
6. **Look for the newest documentation of the desired public API online.**
|
|
24
|
+
7. **Do not initiate a new login if the credentials status is `valid` or `unknown`** - the user might just not have the necessary permissions for the action you're trying to do.
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
## Examples
|
|
28
|
+
|
|
29
|
+
### Make an authenticated curl request
|
|
30
|
+
```bash
|
|
31
|
+
latchkey curl [curl arguments]
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
### Creating a Slack channel
|
|
35
|
+
```bash
|
|
36
|
+
latchkey curl -X POST 'https://slack.com/api/conversations.create' \
|
|
37
|
+
-H 'Content-Type: application/json' \
|
|
38
|
+
-d '{"name":"my-channel"}'
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
(Notice that `-H 'Authorization: Bearer` is not present in the invocation.)
|
|
42
|
+
|
|
43
|
+
### Getting Discord user info
|
|
44
|
+
```bash
|
|
45
|
+
latchkey curl 'https://discord.com/api/v10/users/@me'
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
### Detect expired credentials
|
|
49
|
+
```bash
|
|
50
|
+
latchkey services info discord # Check the "credentialStatus" field - shows "invalid"
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
### List usable services
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
latchkey services list --viable
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
Lists services that have stored credentials.
|
|
60
|
+
|
|
61
|
+
### Get service-specific info
|
|
62
|
+
```bash
|
|
63
|
+
latchkey services info slack
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
Returns auth options, credentials status, and developer notes
|
|
67
|
+
about the service.
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
## Storing credentials
|
|
71
|
+
|
|
72
|
+
It is the user's responsibility to supply credentials. The user would typically do something like this:
|
|
73
|
+
|
|
74
|
+
```bash
|
|
75
|
+
latchkey auth set my-gitlab-instance -H "PRIVATE-TOKEN: <token>"
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
When credentials cannot be expressed as static curl arguments, the user would use the `set-nocurl` subcommand. For example:
|
|
79
|
+
|
|
80
|
+
```bash
|
|
81
|
+
latchkey auth set-nocurl aws <access-key-id> <secret-access-key>
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
If a service doesn't appear with the `--viable` flag, it may
|
|
85
|
+
still be supported; the user just hasn't provided the
|
|
86
|
+
credentials yet. `latchkey service info <service_name>` can be
|
|
87
|
+
used to see how to provide credentials for a specific service.
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
## Notes
|
|
91
|
+
|
|
92
|
+
- All curl arguments are passed through unchanged
|
|
93
|
+
- Return code, stdout and stderr are passed back from curl
|
|
94
|
+
- Credentials are always stored encrypted and are never transmitted anywhere beyond the endpoints specified by the actual curl calls.
|
|
95
|
+
|
|
96
|
+
## Currently supported services
|
|
97
|
+
|
|
98
|
+
Latchkey currently offers varying levels of support for the
|
|
99
|
+
following services: AWS, Calendly, Coolify, Discord, Dropbox, Figma, GitHub, GitLab,
|
|
100
|
+
Gmail, Google Analytics, Google Calendar, Google Docs, Google Drive, Google Sheets,
|
|
101
|
+
Linear, Mailchimp, Notion, Sentry, Slack, Stripe, Telegram, Umami, Yelp, Zoom, and more.
|
|
102
|
+
|
|
103
|
+
### User-registered services
|
|
104
|
+
|
|
105
|
+
Note for humans: users can also add limited support for new services
|
|
106
|
+
at runtime using the `latchkey services register` command.
|
package/dist/src/skillMd.js
CHANGED
|
@@ -7,13 +7,13 @@ async function getSkillMdPath() {
|
|
|
7
7
|
try {
|
|
8
8
|
// @ts-expect-error - Bun-specific import attribute
|
|
9
9
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
|
10
|
-
const mod = await import('../
|
|
10
|
+
const mod = await import('../skills/generic/latchkey/SKILL.md', {
|
|
11
11
|
with: { type: 'text' },
|
|
12
12
|
});
|
|
13
13
|
return mod.default;
|
|
14
14
|
}
|
|
15
15
|
catch {
|
|
16
|
-
return resolve(import.meta.dirname, '../
|
|
16
|
+
return resolve(import.meta.dirname, '../skills/generic/latchkey/SKILL.md');
|
|
17
17
|
}
|
|
18
18
|
}
|
|
19
19
|
//# sourceMappingURL=skillMd.js.map
|
package/dist/src/skillMd.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skillMd.js","sourceRoot":"","sources":["../../src/skillMd.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,MAAM,CAAC,KAAK,UAAU,iBAAiB;IACrC,OAAO,YAAY,CAAC,MAAM,cAAc,EAAE,EAAE,OAAO,CAAC,CAAC;AACvD,CAAC;AAED,KAAK,UAAU,cAAc;IAC3B,IAAI,CAAC;QACH,mDAAmD;QACnD,mEAAmE;QACnE,MAAM,GAAG,GAAwB,MAAM,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"skillMd.js","sourceRoot":"","sources":["../../src/skillMd.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,MAAM,CAAC,KAAK,UAAU,iBAAiB;IACrC,OAAO,YAAY,CAAC,MAAM,cAAc,EAAE,EAAE,OAAO,CAAC,CAAC;AACvD,CAAC;AAED,KAAK,UAAU,cAAc;IAC3B,IAAI,CAAC;QACH,mDAAmD;QACnD,mEAAmE;QACnE,MAAM,GAAG,GAAwB,MAAM,MAAM,CAAC,qCAAqC,EAAE;YACnF,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;SACvB,CAAC,CAAC;QACH,OAAO,GAAG,CAAC,OAAO,CAAC;IACrB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,qCAAqC,CAAC,CAAC;IAC7E,CAAC;AACH,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "latchkey",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.5.0",
|
|
4
4
|
"description": "A CLI tool that injects API credentials into curl requests to third-party services",
|
|
5
5
|
"author": "Imbue <hynek@imbue.com>",
|
|
6
6
|
"repository": {
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
],
|
|
25
25
|
"scripts": {
|
|
26
26
|
"prepublishOnly": "npm run build",
|
|
27
|
-
"build": "tsc && node -e \"require('fs').cpSync('
|
|
27
|
+
"build": "tsc && node -e \"require('fs').cpSync('skills', 'dist/skills', {recursive:true})\" ",
|
|
28
28
|
"dev": "tsc --watch",
|
|
29
29
|
"lint": "eslint src tests scripts",
|
|
30
30
|
"lint:fix": "eslint src tests scripts --fix",
|
|
@@ -43,7 +43,8 @@
|
|
|
43
43
|
"credentials",
|
|
44
44
|
"authentication",
|
|
45
45
|
"agents",
|
|
46
|
-
"imbue"
|
|
46
|
+
"imbue",
|
|
47
|
+
"pi-package"
|
|
47
48
|
],
|
|
48
49
|
"license": "MIT",
|
|
49
50
|
"engines": {
|
|
@@ -63,5 +64,8 @@
|
|
|
63
64
|
"typescript": "^5.3.0",
|
|
64
65
|
"typescript-eslint": "^8.53.1",
|
|
65
66
|
"vitest": "^4.0.18"
|
|
67
|
+
},
|
|
68
|
+
"pi": {
|
|
69
|
+
"skills": ["./skills/generic"]
|
|
66
70
|
}
|
|
67
71
|
}
|