@keystrokehq/skills 0.0.2 → 0.0.4

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 (44) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/README.md +23 -15
  3. package/package.json +3 -10
  4. package/{keystroke-agent-authoring → src/keystroke-agent-authoring}/SKILL.md +4 -4
  5. package/{keystroke-agent-authoring → src/keystroke-agent-authoring}/references/messaging-gateways.md +7 -7
  6. package/{keystroke-agent-authoring → src/keystroke-agent-authoring}/references/patterns.md +5 -5
  7. package/{keystroke-agent-authoring → src/keystroke-agent-authoring}/references/prebuilt-integrations.md +78 -78
  8. package/{keystroke-agent-authoring → src/keystroke-agent-authoring}/references/sandbox-and-mcp.md +2 -2
  9. package/{keystroke-agent-authoring → src/keystroke-agent-authoring}/references/source-map.md +1 -1
  10. package/{keystroke-agent-authoring → src/keystroke-agent-authoring}/references/testing.md +4 -4
  11. package/{keystroke-cli-workspace → src/keystroke-cli-workspace}/SKILL.md +1 -1
  12. package/{keystroke-cli-workspace → src/keystroke-cli-workspace}/references/command-map.md +3 -3
  13. package/{keystroke-cli-workspace → src/keystroke-cli-workspace}/references/project-lifecycle.md +1 -1
  14. package/{keystroke-credential-binding → src/keystroke-credential-binding}/SKILL.md +43 -108
  15. package/{keystroke-credential-binding → src/keystroke-credential-binding}/references/patterns.md +38 -66
  16. package/{keystroke-credential-binding → src/keystroke-credential-binding}/references/source-map.md +9 -9
  17. package/{keystroke-trigger-authoring → src/keystroke-trigger-authoring}/references/patterns.md +8 -4
  18. package/{keystroke-trigger-authoring → src/keystroke-trigger-authoring}/references/source-map.md +2 -3
  19. package/{keystroke-trigger-authoring → src/keystroke-trigger-authoring}/references/testing.md +2 -2
  20. package/{keystroke-workflow-authoring → src/keystroke-workflow-authoring}/SKILL.md +2 -2
  21. package/{keystroke-workflow-authoring → src/keystroke-workflow-authoring}/references/prebuilt-integrations.md +65 -65
  22. package/{keystroke-workflow-authoring → src/keystroke-workflow-authoring}/references/runtime-helpers.md +3 -3
  23. package/{keystroke-workflow-authoring → src/keystroke-workflow-authoring}/references/source-map.md +1 -1
  24. package/{keystroke-workflow-authoring → src/keystroke-workflow-authoring}/references/testing.md +5 -4
  25. package/keystroke-agent-authoring/evals/evals.json +0 -29
  26. package/keystroke-cli-workspace/evals/evals.json +0 -23
  27. package/keystroke-credential-binding/evals/evals.json +0 -29
  28. package/keystroke-data-toolkit/evals/evals.json +0 -23
  29. package/keystroke-task-authoring/evals/evals.json +0 -23
  30. package/keystroke-trigger-authoring/evals/evals.json +0 -29
  31. package/keystroke-workflow-as-tool-debugging/evals/evals.json +0 -23
  32. package/keystroke-workflow-authoring/evals/evals.json +0 -29
  33. /package/{AGENTS-blurb.md → src/AGENTS.md} +0 -0
  34. /package/{keystroke-cli-workspace → src/keystroke-cli-workspace}/references/credentials-and-connect.md +0 -0
  35. /package/{keystroke-credential-binding → src/keystroke-credential-binding}/references/cli.md +0 -0
  36. /package/{keystroke-data-toolkit → src/keystroke-data-toolkit}/SKILL.md +0 -0
  37. /package/{keystroke-data-toolkit → src/keystroke-data-toolkit}/references/usage.md +0 -0
  38. /package/{keystroke-task-authoring → src/keystroke-task-authoring}/SKILL.md +0 -0
  39. /package/{keystroke-task-authoring → src/keystroke-task-authoring}/references/patterns.md +0 -0
  40. /package/{keystroke-task-authoring → src/keystroke-task-authoring}/references/source-map.md +0 -0
  41. /package/{keystroke-trigger-authoring → src/keystroke-trigger-authoring}/SKILL.md +0 -0
  42. /package/{keystroke-workflow-as-tool-debugging → src/keystroke-workflow-as-tool-debugging}/SKILL.md +0 -0
  43. /package/{keystroke-workflow-as-tool-debugging → src/keystroke-workflow-as-tool-debugging}/references/playbook.md +0 -0
  44. /package/{keystroke-workflow-authoring → src/keystroke-workflow-authoring}/references/patterns.md +0 -0
package/CHANGELOG.md ADDED
@@ -0,0 +1,27 @@
1
+ # @keystrokehq/skills
2
+
3
+ ## 0.0.4
4
+
5
+ ### Patch Changes
6
+
7
+ - bb9fea0: Fix: Removing callbacks from triggers (except polling)
8
+
9
+ ## 0.0.3
10
+
11
+ ### Patch Changes
12
+
13
+ - c4870ce: Update public package references and authoring guidance for the provider-name integration packages.
14
+
15
+ ## 0.0.2
16
+
17
+ ### Patch Changes
18
+
19
+ - 761d44e: Add `keystroke workflows run` for manually invoking workflows from a project's current deployment, including input and workflow globals parsing plus wait/follow support.
20
+
21
+ Update Keystroke CLI and workflow authoring skills with guidance for deployed workflow manual runs.
22
+
23
+ ## 0.0.1
24
+
25
+ ### Patch Changes
26
+
27
+ - 2ff9004: Publish Keystroke skills as an npm package and let the CLI use its installed skills package as a fallback when syncing skills into projects.
package/README.md CHANGED
@@ -19,34 +19,42 @@ The packaged skills are:
19
19
 
20
20
  ## Editing
21
21
 
22
- Edit the source files in `packages/skills/`.
22
+ Edit shipped skill content in `packages/skills/src/`.
23
23
 
24
- Do not treat local editor skill directories as the source of truth for these packaged skills. Edit the canonical files in `packages/skills/` first, then use the Keystroke CLI skill sync flow when local `.cursor/skills` or `.claude/skills` copies need to be refreshed.
24
+ Do not treat local editor skill directories as the source of truth for these packaged skills. Edit the canonical files in `packages/skills/src/` first, then use the Keystroke CLI skill sync flow when project-installed skill copies need to be refreshed.
25
+
26
+ Evaluation prompts and notes live in `packages/skills/evals/`. They are repo-only authoring assets and are not published to npm or copied into user projects.
25
27
 
26
28
  ## Structure
27
29
 
28
- Each skill follows this structure:
30
+ The publishable package content follows this structure:
29
31
 
30
32
  ```text
31
- <skill-name>/
32
- ├── SKILL.md
33
- ├── references/
34
- │ ├── source-map.md
35
- │ └── ...
36
- └── evals/
37
- └── evals.json
33
+ src/
34
+ ├── AGENTS.md
35
+ ├── <skill-name>/
36
+ │ ├── SKILL.md
37
+ │ └── references/
38
+ │ ├── source-map.md
39
+ └── ...
40
+ └── ...
38
41
  ```
39
42
 
43
+ - `src/AGENTS.md` is the Keystroke project context written or appended to project-root `AGENTS.md` by `keystroke init`.
40
44
  - `SKILL.md` stays concise and procedural.
41
45
  - `references/` holds longer examples, source maps, and gotchas.
42
- - `evals/evals.json` stores the initial evaluation prompts used with `.agents/skills/skill-creator/`.
46
+ - `evals/<skill-name>/evals.json` stores the initial evaluation prompts used with `.agents/skills/skill-creator/`.
43
47
 
44
48
  ## Wiring
45
49
 
46
- These packaged skills are intended to be copied into local editor skill directories through the Keystroke CLI:
50
+ These packaged skills are installed into project agent skill directories through the Keystroke CLI:
47
51
 
48
- - packaged skills are authored here
49
- - `keystroke skills sync` copies them into `.cursor/skills` and `.claude/skills`
52
+ - packaged skills are authored in `src/`
53
+ - `keystroke init` always copies them into the canonical project path `.agents/skills`
54
+ - `keystroke init --agent <agent> --method symlink` provisions selected agent-specific paths by linking back to `.agents/skills`
55
+ - `keystroke init --agent <agent> --method copy` provisions selected agent-specific paths with independent copies
56
+ - `keystroke skills sync` refreshes an existing project using the same `--agent` and `--method` flags
57
+ - eval assets stay in `evals/` and are excluded from published packages and synced project skills
50
58
 
51
59
  If the discovery story changes later, update this package and the sync flow together. Until then, edit the packaged skills here first.
52
60
 
@@ -57,7 +65,7 @@ Because these are repo-authored local skills rather than externally installed sk
57
65
  Draft and refine these skills with the existing `.agents/skills/skill-creator/` workflow:
58
66
 
59
67
  1. Draft the skill
60
- 2. Add realistic eval prompts to `evals/evals.json`
68
+ 2. Add realistic eval prompts to `evals/<skill-name>/evals.json`
61
69
  3. Run at least one evaluation pass
62
70
  4. Revise the skill based on results
63
71
  5. Improve the `description` once the body is stable
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@keystrokehq/skills",
3
- "version": "0.0.2",
3
+ "version": "0.0.4",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "publishConfig": {
@@ -9,15 +9,8 @@
9
9
  },
10
10
  "files": [
11
11
  "README.md",
12
- "AGENTS-blurb.md",
13
- "keystroke-workflow-authoring",
14
- "keystroke-agent-authoring",
15
- "keystroke-data-toolkit",
16
- "keystroke-workflow-as-tool-debugging",
17
- "keystroke-credential-binding",
18
- "keystroke-trigger-authoring",
19
- "keystroke-task-authoring",
20
- "keystroke-cli-workspace"
12
+ "CHANGELOG.md",
13
+ "src"
21
14
  ],
22
15
  "scripts": {
23
16
  "build": "node -e \"process.exit(0)\"",
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: keystroke-agent-authoring
3
- description: Build Keystroke agents with @keystrokehq/core plus provider credentials from @keystroke/integration-ai. Use when the user wants to author, refactor, explain, or test Keystroke agent code, tool code, messaging gateways, sandboxed coding agents, MCP servers, or agent credential wiring.
3
+ description: Build Keystroke agents with @keystrokehq/core plus provider credentials from @keystrokehq/ai. Use when the user wants to author, refactor, explain, or test Keystroke agent code, tool code, messaging gateways, sandboxed coding agents, MCP servers, or agent credential wiring.
4
4
  ---
5
5
 
6
6
  # Keystroke Agent Authoring
@@ -64,7 +64,7 @@ export const lookupCustomerTool = new Tool({
64
64
  `support.agent.ts`
65
65
 
66
66
  ```ts
67
- import { anthropic } from '@keystroke/integration-ai';
67
+ import { anthropic } from '@keystrokehq/ai';
68
68
  import { Agent } from '@keystrokehq/core';
69
69
  import { lookupCustomerTool } from './lookup-customer.tool';
70
70
 
@@ -87,7 +87,7 @@ Teach this mental model clearly:
87
87
  - an agent is an LLM-driven worker
88
88
  - a `Tool` is the agent-facing alias for `Operation`
89
89
  - authored agents use `new Agent({...})` from `@keystrokehq/core`
90
- - AI provider credentials such as `anthropic` and `openai` come from `@keystroke/integration-ai`
90
+ - AI provider credentials such as `anthropic` and `openai` come from `@keystrokehq/ai`
91
91
  - agents operate through conversations and agent runs, not workflow trigger attachments
92
92
  - workflows can call agents, but workflows still own orchestration
93
93
  - agents can use workflows as tools; sync workflows return inline and suspending workflows yield/resume
@@ -168,7 +168,7 @@ Teach these rules explicitly:
168
168
  - Keep each exported messaging gateway in its own `*.gateway.ts` file.
169
169
  - Keep tool selection aligned with the agent’s job.
170
170
  - Do not wrap an existing integration operation in a redundant custom tool.
171
- - Use `CredentialSet` for custom secrets and use provider credential sets from `@keystroke/integration-ai` for model auth.
171
+ - Use `CredentialSet` for custom secrets and use provider credential sets from `@keystrokehq/ai` for model auth.
172
172
  - Do not use `process.env` in authored agent or tool code.
173
173
  - Expect the default agent sandbox to be persistent.
174
174
  - Create a custom `Sandbox` only when the default sandbox needs customization.
@@ -85,14 +85,14 @@ Key differences from the platform gateway:
85
85
  - `appRef` identifies which user-created app this gateway connects to
86
86
  - the credential set typically requires more fields because the user supplies all auth values
87
87
 
88
- ## Prebuilt gateway helpers from `@keystroke/integration-slack`
88
+ ## Prebuilt gateway helpers from `@keystrokehq/slack`
89
89
 
90
90
  Integration packages ship prebuilt gateway factories so users don't need to wire credential sets manually. Prefer these over hand-constructing a `MessagingGateway` with `@keystrokehq/core` when the provider has one available.
91
91
 
92
92
  ### Platform gateway (prebuilt)
93
93
 
94
94
  ```ts
95
- import { slackPlatformGateway } from '@keystroke/integration-slack/platform';
95
+ import { slackPlatformGateway } from '@keystrokehq/slack/platform';
96
96
 
97
97
  export const supportGateway = slackPlatformGateway();
98
98
  ```
@@ -110,7 +110,7 @@ export const supportGateway = slackPlatformGateway({
110
110
  ### Custom app gateway (prebuilt)
111
111
 
112
112
  ```ts
113
- import { slackCustomGateway } from '@keystroke/integration-slack/custom';
113
+ import { slackCustomGateway } from '@keystrokehq/slack/custom';
114
114
 
115
115
  export const salesGateway = slackCustomGateway({
116
116
  appRef: 'sales-bot',
@@ -137,9 +137,9 @@ export const salesGateway = slackCustomGateway({
137
137
  Using a prebuilt gateway:
138
138
 
139
139
  ```ts
140
- import { anthropic } from '@keystroke/integration-ai';
140
+ import { anthropic } from '@keystrokehq/ai';
141
141
  import { Agent } from '@keystrokehq/core';
142
- import { slackPlatformGateway } from '@keystroke/integration-slack/platform';
142
+ import { slackPlatformGateway } from '@keystrokehq/slack/platform';
143
143
 
144
144
  export const supportAgent = new Agent({
145
145
  id: 'support-agent',
@@ -154,7 +154,7 @@ export const supportAgent = new Agent({
154
154
  Or importing a gateway from its own file:
155
155
 
156
156
  ```ts
157
- import { anthropic } from '@keystroke/integration-ai';
157
+ import { anthropic } from '@keystrokehq/ai';
158
158
  import { Agent } from '@keystrokehq/core';
159
159
  import { supportSlackGateway } from './support-slack.gateway';
160
160
 
@@ -227,7 +227,7 @@ Use `appRef` only with `mode: 'custom'` to identify which user-created app insta
227
227
 
228
228
  Integration packages and `core` export gateway factory functions so users don't need to construct gateways manually:
229
229
 
230
- - **Slack**: `slackPlatformGateway()` from `@keystroke/integration-slack/platform`, `slackCustomGateway()` from `@keystroke/integration-slack/custom`
230
+ - **Slack**: `slackPlatformGateway()` from `@keystrokehq/slack/platform`, `slackCustomGateway()` from `@keystrokehq/slack/custom`
231
231
  - **GitHub**: `githubPlatformGateway()` from `@keystrokehq/core`
232
232
 
233
233
  Use these when the helper fits. Fall back to `new MessagingGateway({...})` when no helper exists for the provider or the credential set needs to differ.
@@ -17,7 +17,7 @@ File layout reminder:
17
17
  ## Minimal `Agent`
18
18
 
19
19
  ```ts
20
- import { anthropic } from '@keystroke/integration-ai';
20
+ import { anthropic } from '@keystrokehq/ai';
21
21
  import { Agent } from '@keystrokehq/core';
22
22
 
23
23
  export const summarizer = new Agent({
@@ -38,7 +38,7 @@ This is the smallest runnable authored agent:
38
38
  ## `Agent` with optional fields
39
39
 
40
40
  ```ts
41
- import { anthropic } from '@keystroke/integration-ai';
41
+ import { anthropic } from '@keystrokehq/ai';
42
42
  import { Agent, CredentialSet } from '@keystrokehq/core';
43
43
  import { z } from 'zod';
44
44
 
@@ -93,7 +93,7 @@ The same example could also be written with `new Operation({...})` if the unit i
93
93
  ## Workflow Tool
94
94
 
95
95
  ```ts
96
- import { anthropic } from '@keystroke/integration-ai';
96
+ import { anthropic } from '@keystrokehq/ai';
97
97
  import { Agent, Workflow } from '@keystrokehq/core';
98
98
  import { z } from 'zod';
99
99
  import { lookupCustomerTool } from './lookup-customer.tool';
@@ -267,7 +267,7 @@ Use `stream(...)` when the caller wants incremental events such as:
267
267
  ## Agent hooks
268
268
 
269
269
  ```ts
270
- import { anthropic } from '@keystroke/integration-ai';
270
+ import { anthropic } from '@keystrokehq/ai';
271
271
  import { Agent } from '@keystrokehq/core';
272
272
 
273
273
  export const guardedAgent = new Agent({
@@ -378,7 +378,7 @@ const toolManifest = formatTicketTool.toManifest();
378
378
  ## `skills`
379
379
 
380
380
  ```ts
381
- import { anthropic } from '@keystroke/integration-ai';
381
+ import { anthropic } from '@keystrokehq/ai';
382
382
  import { Agent } from '@keystrokehq/core';
383
383
 
384
384
  export const codingAgent = new Agent({
@@ -18,14 +18,14 @@ Important distinction:
18
18
  Install the package that exports the operation:
19
19
 
20
20
  ```sh
21
- pnpm add @keystroke/integration-slack
21
+ pnpm add @keystrokehq/slack
22
22
  ```
23
23
 
24
24
  Import the named operation you want:
25
25
 
26
26
  ```ts
27
- import { sendMessage } from '@keystroke/integration-slack/platform/messages';
28
- import { anthropic } from '@keystroke/integration-ai';
27
+ import { sendMessage } from '@keystrokehq/slack/platform/messages';
28
+ import { anthropic } from '@keystrokehq/ai';
29
29
  import { Agent } from '@keystrokehq/core';
30
30
  ```
31
31
 
@@ -44,24 +44,24 @@ const notifierAgent = new Agent({
44
44
 
45
45
  Replace `sendMessage` with any of the integration operation exports listed below.
46
46
 
47
- ## `@keystroke/integration-ai`
47
+ ## `@keystrokehq/ai`
48
48
 
49
49
  Install:
50
50
 
51
51
  ```sh
52
- pnpm add @keystroke/integration-ai
52
+ pnpm add @keystrokehq/ai
53
53
  ```
54
54
 
55
55
  ### Generated operations
56
56
 
57
- Prefer subpath imports from `@keystroke/integration-ai/generate`.
57
+ Prefer subpath imports from `@keystrokehq/ai/generate`.
58
58
 
59
59
  Import and use:
60
60
 
61
61
  ```ts
62
- import { anthropic } from '@keystroke/integration-ai';
62
+ import { anthropic } from '@keystrokehq/ai';
63
63
  import { Agent } from '@keystrokehq/core';
64
- import { generateObject, generateText } from '@keystroke/integration-ai/generate';
64
+ import { generateObject, generateText } from '@keystrokehq/ai/generate';
65
65
 
66
66
  const researchAgent = new Agent({
67
67
  id: 'research-agent',
@@ -82,23 +82,23 @@ const researchAgent = new Agent({
82
82
  - `anthropic`: Anthropic credential set.
83
83
  - `openai`: OpenAI credential set.
84
84
 
85
- ## `@keystroke/integration-apollo`
85
+ ## `@keystrokehq/apollo`
86
86
 
87
87
  Install:
88
88
 
89
89
  ```sh
90
- pnpm add @keystroke/integration-apollo
90
+ pnpm add @keystrokehq/apollo
91
91
  ```
92
92
 
93
- Prefer domain subpath imports such as `@keystroke/integration-apollo/accounts` or `@keystroke/integration-apollo/contacts`.
93
+ Prefer domain subpath imports such as `@keystrokehq/apollo/accounts` or `@keystrokehq/apollo/contacts`.
94
94
 
95
95
  Import and use:
96
96
 
97
97
  ```ts
98
- import { anthropic } from '@keystroke/integration-ai';
98
+ import { anthropic } from '@keystrokehq/ai';
99
99
  import { Agent } from '@keystrokehq/core';
100
- import { createAccount } from '@keystroke/integration-apollo/accounts';
101
- import { searchContacts } from '@keystroke/integration-apollo/contacts';
100
+ import { createAccount } from '@keystrokehq/apollo/accounts';
101
+ import { searchContacts } from '@keystrokehq/apollo/contacts';
102
102
 
103
103
  const salesAgent = new Agent({
104
104
  id: 'sales-agent',
@@ -158,22 +158,22 @@ const salesAgent = new Agent({
158
158
  - `createTasks`: Create Apollo tasks.
159
159
  - `searchTasks`: Search Apollo tasks.
160
160
 
161
- ## `@keystroke/integration-attio`
161
+ ## `@keystrokehq/attio`
162
162
 
163
163
  Install:
164
164
 
165
165
  ```sh
166
- pnpm add @keystroke/integration-attio
166
+ pnpm add @keystrokehq/attio
167
167
  ```
168
168
 
169
- Prefer domain subpath imports such as `@keystroke/integration-attio/records` or `@keystroke/integration-attio/lists`.
169
+ Prefer domain subpath imports such as `@keystrokehq/attio/records` or `@keystrokehq/attio/lists`.
170
170
 
171
171
  Import and use:
172
172
 
173
173
  ```ts
174
- import { anthropic } from '@keystroke/integration-ai';
174
+ import { anthropic } from '@keystrokehq/ai';
175
175
  import { Agent } from '@keystrokehq/core';
176
- import { createRecord, queryRecords } from '@keystroke/integration-attio/records';
176
+ import { createRecord, queryRecords } from '@keystrokehq/attio/records';
177
177
 
178
178
  const crmAgent = new Agent({
179
179
  id: 'crm-agent',
@@ -225,18 +225,18 @@ const crmAgent = new Agent({
225
225
  - `listTasks`: List Attio tasks.
226
226
  - `updateTask`: Update an Attio task.
227
227
 
228
- ## `@keystroke/integration-daytona`
228
+ ## `@keystrokehq/daytona`
229
229
 
230
230
  Install:
231
231
 
232
232
  ```sh
233
- pnpm add @keystroke/integration-daytona
233
+ pnpm add @keystrokehq/daytona
234
234
  ```
235
235
 
236
236
  Import example:
237
237
 
238
238
  ```ts
239
- import { DaytonaSandbox } from '@keystroke/integration-daytona';
239
+ import { DaytonaSandbox } from '@keystrokehq/daytona';
240
240
  ```
241
241
 
242
242
  This package does not currently export agent operations.
@@ -247,23 +247,23 @@ It exports sandbox helpers instead:
247
247
  - `DaytonaSandbox`: Create a Daytona-backed sandbox for agents.
248
248
  - `DaytonaSandboxProvider`: Configure the Daytona sandbox provider.
249
249
 
250
- ## `@keystroke/integration-github`
250
+ ## `@keystrokehq/github`
251
251
 
252
252
  Install:
253
253
 
254
254
  ```sh
255
- pnpm add @keystroke/integration-github
255
+ pnpm add @keystrokehq/github
256
256
  ```
257
257
 
258
- Prefer domain subpath imports such as `@keystroke/integration-github/issues`, `@keystroke/integration-github/pull-requests`, or `@keystroke/integration-github/repos`.
258
+ Prefer domain subpath imports such as `@keystrokehq/github/issues`, `@keystrokehq/github/pull-requests`, or `@keystrokehq/github/repos`.
259
259
 
260
260
  Import and use:
261
261
 
262
262
  ```ts
263
- import { anthropic } from '@keystroke/integration-ai';
263
+ import { anthropic } from '@keystrokehq/ai';
264
264
  import { Agent } from '@keystrokehq/core';
265
- import { getIssue } from '@keystroke/integration-github/issues';
266
- import { listPullRequests } from '@keystroke/integration-github/pull-requests';
265
+ import { getIssue } from '@keystrokehq/github/issues';
266
+ import { listPullRequests } from '@keystrokehq/github/pull-requests';
267
267
 
268
268
  const githubAgent = new Agent({
269
269
  id: 'github-agent',
@@ -289,24 +289,24 @@ Common operation groups:
289
289
 
290
290
  The package also exposes `connection`, `client`, and `schemas` support surfaces on explicit subpaths. Keep internal provider-app wiring off agent-facing imports.
291
291
 
292
- ## `@keystroke/integration-google`
292
+ ## `@keystrokehq/google`
293
293
 
294
294
  Install:
295
295
 
296
296
  ```sh
297
- pnpm add @keystroke/integration-google
297
+ pnpm add @keystrokehq/google
298
298
  ```
299
299
 
300
- Prefer domain subpath imports such as `@keystroke/integration-google/gmail`, `@keystroke/integration-google/sheets`, or `@keystroke/integration-google/calendar`.
300
+ Prefer domain subpath imports such as `@keystrokehq/google/gmail`, `@keystrokehq/google/sheets`, or `@keystrokehq/google/calendar`.
301
301
 
302
302
  Import and use:
303
303
 
304
304
  ```ts
305
- import { anthropic } from '@keystroke/integration-ai';
305
+ import { anthropic } from '@keystrokehq/ai';
306
306
  import { Agent } from '@keystrokehq/core';
307
- import { listCalendarEventsTool, createCalendarEventTool } from '@keystroke/integration-google/calendar';
308
- import { getEmailTool, sendEmailTool } from '@keystroke/integration-google/gmail';
309
- import { readSpreadsheetTabTool } from '@keystroke/integration-google/sheets';
307
+ import { listCalendarEventsTool, createCalendarEventTool } from '@keystrokehq/google/calendar';
308
+ import { getEmailTool, sendEmailTool } from '@keystrokehq/google/gmail';
309
+ import { readSpreadsheetTabTool } from '@keystrokehq/google/sheets';
310
310
 
311
311
  const googleAgent = new Agent({
312
312
  id: 'google-agent',
@@ -343,25 +343,25 @@ const googleAgent = new Agent({
343
343
 
344
344
  This package also exports polling triggers (`gmailNewUnreadInboxEmails`, `calendarNewOrUpdatedEvents`) and non-Tool workflow step variants (`sendEmail`, `getEmail`, `listEmails`, `labelEmail`, `createSpreadsheet`, `addSpreadsheetTab`, `readSpreadsheetTab`, `writeSpreadsheetRange`, `listCalendars`, `listCalendarEvents`, `getCalendarEvent`, `createCalendarEvent`, `updateCalendarEvent`, `deleteCalendarEvent`). Those step variants are not agent tools.
345
345
 
346
- ## `@keystroke/integration-hubspot`
346
+ ## `@keystrokehq/hubspot`
347
347
 
348
348
  Install:
349
349
 
350
350
  ```sh
351
- pnpm add @keystroke/integration-hubspot
351
+ pnpm add @keystrokehq/hubspot
352
352
  ```
353
353
 
354
- Prefer explicit subpaths such as `@keystroke/integration-hubspot/connection`,
355
- `@keystroke/integration-hubspot/triggers`, and domain paths like
356
- `@keystroke/integration-hubspot/companies` or `@keystroke/integration-hubspot/contacts`.
354
+ Prefer explicit subpaths such as `@keystrokehq/hubspot/connection`,
355
+ `@keystrokehq/hubspot/triggers`, and domain paths like
356
+ `@keystrokehq/hubspot/companies` or `@keystrokehq/hubspot/contacts`.
357
357
 
358
358
  Import and use:
359
359
 
360
360
  ```ts
361
- import { anthropic } from '@keystroke/integration-ai';
361
+ import { anthropic } from '@keystrokehq/ai';
362
362
  import { Agent } from '@keystrokehq/core';
363
- import { createCompany } from '@keystroke/integration-hubspot/companies';
364
- import { searchContacts } from '@keystroke/integration-hubspot/contacts';
363
+ import { createCompany } from '@keystrokehq/hubspot/companies';
364
+ import { searchContacts } from '@keystrokehq/hubspot/contacts';
365
365
 
366
366
  const hubspotAgent = new Agent({
367
367
  id: 'hubspot-agent',
@@ -411,23 +411,23 @@ const hubspotAgent = new Agent({
411
411
 
412
412
  This package also exports triggers, verification helpers, and example workflows from its root entrypoint. Those are not agent tools.
413
413
 
414
- ## `@keystroke/integration-kalshi`
414
+ ## `@keystrokehq/kalshi`
415
415
 
416
416
  Install:
417
417
 
418
418
  ```sh
419
- pnpm add @keystroke/integration-kalshi
419
+ pnpm add @keystrokehq/kalshi
420
420
  ```
421
421
 
422
- Prefer domain subpath imports such as `@keystroke/integration-kalshi/markets` or `@keystroke/integration-kalshi/portfolio`.
422
+ Prefer domain subpath imports such as `@keystrokehq/kalshi/markets` or `@keystrokehq/kalshi/portfolio`.
423
423
 
424
424
  Import and use:
425
425
 
426
426
  ```ts
427
- import { anthropic } from '@keystroke/integration-ai';
427
+ import { anthropic } from '@keystrokehq/ai';
428
428
  import { Agent } from '@keystrokehq/core';
429
- import { getMarkets } from '@keystroke/integration-kalshi/markets';
430
- import { createOrder } from '@keystroke/integration-kalshi/portfolio';
429
+ import { getMarkets } from '@keystrokehq/kalshi/markets';
430
+ import { createOrder } from '@keystrokehq/kalshi/portfolio';
431
431
 
432
432
  const traderAgent = new Agent({
433
433
  id: 'trader-agent',
@@ -571,22 +571,22 @@ const traderAgent = new Agent({
571
571
 
572
572
  This package also exports triggers and plain helper functions such as `getTopOfBook` and `listActiveMarkets`. Those helpers are not agent operations unless you wrap them yourself.
573
573
 
574
- ## `@keystroke/integration-linear`
574
+ ## `@keystrokehq/linear`
575
575
 
576
576
  Install:
577
577
 
578
578
  ```sh
579
- pnpm add @keystroke/integration-linear
579
+ pnpm add @keystrokehq/linear
580
580
  ```
581
581
 
582
- Prefer domain subpath imports such as `@keystroke/integration-linear/issues` or `@keystroke/integration-linear/users`.
582
+ Prefer domain subpath imports such as `@keystrokehq/linear/issues` or `@keystrokehq/linear/users`.
583
583
 
584
584
  Import and use:
585
585
 
586
586
  ```ts
587
- import { anthropic } from '@keystroke/integration-ai';
587
+ import { anthropic } from '@keystrokehq/ai';
588
588
  import { Agent } from '@keystrokehq/core';
589
- import { createIssue, searchIssues } from '@keystroke/integration-linear/issues';
589
+ import { createIssue, searchIssues } from '@keystrokehq/linear/issues';
590
590
 
591
591
  const triageAgent = new Agent({
592
592
  id: 'triage-agent',
@@ -653,23 +653,23 @@ const triageAgent = new Agent({
653
653
  - `deleteWebhook`: Delete a Linear webhook.
654
654
  - `listWebhooks`: List Linear webhooks.
655
655
 
656
- ## `@keystroke/integration-perplexity`
656
+ ## `@keystrokehq/perplexity`
657
657
 
658
658
  Install:
659
659
 
660
660
  ```sh
661
- pnpm add @keystroke/integration-perplexity
661
+ pnpm add @keystrokehq/perplexity
662
662
  ```
663
663
 
664
- Prefer subpath imports such as `@keystroke/integration-perplexity/search`, `@keystroke/integration-perplexity/stream`, and `@keystroke/integration-perplexity/generate`.
664
+ Prefer subpath imports such as `@keystrokehq/perplexity/search`, `@keystrokehq/perplexity/stream`, and `@keystrokehq/perplexity/generate`.
665
665
 
666
666
  Import and use:
667
667
 
668
668
  ```ts
669
- import { anthropic } from '@keystroke/integration-ai';
669
+ import { anthropic } from '@keystrokehq/ai';
670
670
  import { Agent } from '@keystrokehq/core';
671
- import { generateText } from '@keystroke/integration-perplexity/generate';
672
- import { research, search } from '@keystroke/integration-perplexity/search';
671
+ import { generateText } from '@keystrokehq/perplexity/generate';
672
+ import { research, search } from '@keystrokehq/perplexity/search';
673
673
 
674
674
  const researchAgent = new Agent({
675
675
  id: 'perplexity-research-agent',
@@ -686,23 +686,23 @@ const researchAgent = new Agent({
686
686
  - `search`: Run a Perplexity search query.
687
687
  - `streamSearch`: Stream Perplexity search results.
688
688
 
689
- ## `@keystroke/integration-polymarket`
689
+ ## `@keystrokehq/polymarket`
690
690
 
691
691
  Install:
692
692
 
693
693
  ```sh
694
- pnpm add @keystroke/integration-polymarket
694
+ pnpm add @keystrokehq/polymarket
695
695
  ```
696
696
 
697
- Prefer domain subpath imports such as `@keystroke/integration-polymarket/markets` or `@keystroke/integration-polymarket/discovery`.
697
+ Prefer domain subpath imports such as `@keystrokehq/polymarket/markets` or `@keystrokehq/polymarket/discovery`.
698
698
 
699
699
  Import and use:
700
700
 
701
701
  ```ts
702
- import { anthropic } from '@keystroke/integration-ai';
702
+ import { anthropic } from '@keystrokehq/ai';
703
703
  import { Agent } from '@keystrokehq/core';
704
- import { getMarket } from '@keystroke/integration-polymarket/markets';
705
- import { search } from '@keystroke/integration-polymarket/discovery';
704
+ import { getMarket } from '@keystrokehq/polymarket/markets';
705
+ import { search } from '@keystrokehq/polymarket/discovery';
706
706
 
707
707
  const marketAgent = new Agent({
708
708
  id: 'market-agent',
@@ -761,23 +761,23 @@ const marketAgent = new Agent({
761
761
  - `getPriceHistory`: Fetch historical price data for a market.
762
762
  - `listPrices`: List prices across markets.
763
763
 
764
- ## `@keystroke/integration-scrapin`
764
+ ## `@keystrokehq/scrapin`
765
765
 
766
766
  Install:
767
767
 
768
768
  ```sh
769
- pnpm add @keystroke/integration-scrapin
769
+ pnpm add @keystrokehq/scrapin
770
770
  ```
771
771
 
772
- Prefer domain subpath imports such as `@keystroke/integration-scrapin/persons` or `@keystroke/integration-scrapin/companies`.
772
+ Prefer domain subpath imports such as `@keystrokehq/scrapin/persons` or `@keystrokehq/scrapin/companies`.
773
773
 
774
774
  Import and use:
775
775
 
776
776
  ```ts
777
- import { anthropic } from '@keystroke/integration-ai';
777
+ import { anthropic } from '@keystrokehq/ai';
778
778
  import { Agent } from '@keystrokehq/core';
779
- import { getCompanyProfile } from '@keystroke/integration-scrapin/companies';
780
- import { searchPersons } from '@keystroke/integration-scrapin/persons';
779
+ import { getCompanyProfile } from '@keystrokehq/scrapin/companies';
780
+ import { searchPersons } from '@keystrokehq/scrapin/persons';
781
781
 
782
782
  const prospectingAgent = new Agent({
783
783
  id: 'prospecting-agent',
@@ -820,23 +820,23 @@ const prospectingAgent = new Agent({
820
820
  - `resolvePersonByEmail`: Resolve a person from an email address.
821
821
  - `searchPersons`: Search people.
822
822
 
823
- ## `@keystroke/integration-slack`
823
+ ## `@keystrokehq/slack`
824
824
 
825
825
  Install:
826
826
 
827
827
  ```sh
828
- pnpm add @keystroke/integration-slack
828
+ pnpm add @keystrokehq/slack
829
829
  ```
830
830
 
831
- Prefer mode/domain imports such as `@keystroke/integration-slack/platform/messages` or `@keystroke/integration-slack/platform/users`.
831
+ Prefer mode/domain imports such as `@keystrokehq/slack/platform/messages` or `@keystrokehq/slack/platform/users`.
832
832
 
833
833
  Import and use:
834
834
 
835
835
  ```ts
836
- import { anthropic } from '@keystroke/integration-ai';
836
+ import { anthropic } from '@keystrokehq/ai';
837
837
  import { Agent } from '@keystrokehq/core';
838
- import { sendMessage } from '@keystroke/integration-slack/platform/messages';
839
- import { listUsers } from '@keystroke/integration-slack/platform/users';
838
+ import { sendMessage } from '@keystrokehq/slack/platform/messages';
839
+ import { listUsers } from '@keystrokehq/slack/platform/users';
840
840
 
841
841
  const slackAgent = new Agent({
842
842
  id: 'slack-agent',