@stigmer/plugin-package 3.34.0 → 3.36.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.
Files changed (148) hide show
  1. package/client/archive.d.ts.map +1 -1
  2. package/client/archive.js.map +1 -1
  3. package/client/builtin.d.ts.map +1 -1
  4. package/client/builtin.js.map +1 -1
  5. package/client/ignore/defaults.d.ts.map +1 -1
  6. package/client/ignore/defaults.js.map +1 -1
  7. package/client/ignore/match.d.ts.map +1 -1
  8. package/client/ignore/match.js.map +1 -1
  9. package/client/ignore/matcher.d.ts.map +1 -1
  10. package/client/ignore/matcher.js.map +1 -1
  11. package/client/ignore/pattern.d.ts.map +1 -1
  12. package/client/ignore/pattern.js.map +1 -1
  13. package/client/prepare.d.ts.map +1 -1
  14. package/client/prepare.js.map +1 -1
  15. package/client/presentation.d.ts.map +1 -1
  16. package/client/presentation.js.map +1 -1
  17. package/client/refs.d.ts.map +1 -1
  18. package/client/refs.js.map +1 -1
  19. package/client/release.d.ts.map +1 -1
  20. package/client/release.js.map +1 -1
  21. package/client/reroot.d.ts.map +1 -1
  22. package/client/reroot.js.map +1 -1
  23. package/client/select.d.ts.map +1 -1
  24. package/client/select.js.map +1 -1
  25. package/client/vocabulary.d.ts.map +1 -1
  26. package/client/vocabulary.js.map +1 -1
  27. package/client.d.ts.map +1 -1
  28. package/client.js.map +1 -1
  29. package/detect.d.ts.map +1 -1
  30. package/detect.js.map +1 -1
  31. package/dialects/claude.d.ts.map +1 -1
  32. package/dialects/claude.js.map +1 -1
  33. package/dialects/codex.d.ts.map +1 -1
  34. package/dialects/codex.js.map +1 -1
  35. package/dialects/cursor.d.ts.map +1 -1
  36. package/dialects/cursor.js.map +1 -1
  37. package/dialects/manifest.d.ts.map +1 -1
  38. package/dialects/manifest.js.map +1 -1
  39. package/dialects/open.d.ts.map +1 -1
  40. package/dialects/open.js.map +1 -1
  41. package/documents.d.ts.map +1 -1
  42. package/documents.js.map +1 -1
  43. package/files.d.ts.map +1 -1
  44. package/files.js.map +1 -1
  45. package/frontmatter.d.ts.map +1 -1
  46. package/frontmatter.js.map +1 -1
  47. package/index.d.ts.map +1 -1
  48. package/index.js.map +1 -1
  49. package/marketplace/messages.d.ts.map +1 -1
  50. package/marketplace/messages.js.map +1 -1
  51. package/marketplace/outcome.d.ts.map +1 -1
  52. package/marketplace/outcome.js.map +1 -1
  53. package/marketplace/read-marketplace.d.ts.map +1 -1
  54. package/marketplace/read-marketplace.js.map +1 -1
  55. package/messages.d.ts.map +1 -1
  56. package/messages.js.map +1 -1
  57. package/normalise/ignored.d.ts.map +1 -1
  58. package/normalise/ignored.js.map +1 -1
  59. package/normalise/mcp-servers.d.ts.map +1 -1
  60. package/normalise/mcp-servers.js.map +1 -1
  61. package/normalise/overlay.d.ts.map +1 -1
  62. package/normalise/overlay.js.map +1 -1
  63. package/normalise/skills.d.ts.map +1 -1
  64. package/normalise/skills.js.map +1 -1
  65. package/normalise/sub-agents.d.ts.map +1 -1
  66. package/normalise/sub-agents.js.map +1 -1
  67. package/normalise/variables.d.ts.map +1 -1
  68. package/normalise/variables.js.map +1 -1
  69. package/outcome.d.ts.map +1 -1
  70. package/outcome.js.map +1 -1
  71. package/package.json +1 -1
  72. package/placeholders.d.ts.map +1 -1
  73. package/placeholders.js.map +1 -1
  74. package/presentation.d.ts.map +1 -1
  75. package/presentation.js.map +1 -1
  76. package/read-plugin-package.d.ts.map +1 -1
  77. package/read-plugin-package.js.map +1 -1
  78. package/testing.d.ts.map +1 -1
  79. package/testing.js.map +1 -1
  80. package/types.d.ts.map +1 -1
  81. package/types.js.map +1 -1
  82. package/src/__test-utils__/directory-files.ts +0 -29
  83. package/src/__test-utils__/read.ts +0 -55
  84. package/src/__tests__/adversarial.test.ts +0 -434
  85. package/src/__tests__/client-ignore.test.ts +0 -133
  86. package/src/__tests__/client-prepare.test.ts +0 -163
  87. package/src/__tests__/client-refs.test.ts +0 -101
  88. package/src/__tests__/client-select-archive.test.ts +0 -150
  89. package/src/__tests__/detect.test.ts +0 -144
  90. package/src/__tests__/files.test.ts +0 -119
  91. package/src/__tests__/fixtures/cursor-plugins/.cursor-plugin/marketplace.json +0 -412
  92. package/src/__tests__/fixtures/cursor-plugins/NOTICE +0 -27
  93. package/src/__tests__/fixtures/cursor-plugins/advisor/.cursor-plugin/plugin.json +0 -33
  94. package/src/__tests__/fixtures/cursor-plugins/advisor/CHANGELOG.md +0 -8
  95. package/src/__tests__/fixtures/cursor-plugins/advisor/LICENSE +0 -21
  96. package/src/__tests__/fixtures/cursor-plugins/advisor/README.md +0 -87
  97. package/src/__tests__/fixtures/cursor-plugins/advisor/agents/advisor-subagent.md +0 -48
  98. package/src/__tests__/fixtures/cursor-plugins/advisor/assets/avatar.png +0 -0
  99. package/src/__tests__/fixtures/cursor-plugins/advisor/hooks/capture-response.sh +0 -20
  100. package/src/__tests__/fixtures/cursor-plugins/advisor/hooks/hooks.json +0 -27
  101. package/src/__tests__/fixtures/cursor-plugins/advisor/hooks/lib.sh +0 -61
  102. package/src/__tests__/fixtures/cursor-plugins/advisor/hooks/mark-pending.sh +0 -27
  103. package/src/__tests__/fixtures/cursor-plugins/advisor/hooks/record-consult.sh +0 -41
  104. package/src/__tests__/fixtures/cursor-plugins/advisor/hooks/stop-hook.sh +0 -48
  105. package/src/__tests__/fixtures/cursor-plugins/advisor/skills/advisor/SKILL.md +0 -123
  106. package/src/__tests__/fixtures/cursor-plugins/advisor/skills/advisor/references/briefing-template.md +0 -44
  107. package/src/__tests__/fixtures/cursor-plugins/github/.cursor-plugin/plugin.json +0 -45
  108. package/src/__tests__/fixtures/cursor-plugins/github/CHANGELOG.md +0 -9
  109. package/src/__tests__/fixtures/cursor-plugins/github/LICENSE +0 -21
  110. package/src/__tests__/fixtures/cursor-plugins/github/README.md +0 -64
  111. package/src/__tests__/fixtures/cursor-plugins/github/assets/logo.svg +0 -0
  112. package/src/__tests__/fixtures/cursor-plugins/github/mcp.json +0 -11
  113. package/src/__tests__/fixtures/cursor-plugins/playwright/.cursor-plugin/plugin.json +0 -35
  114. package/src/__tests__/fixtures/cursor-plugins/playwright/CHANGELOG.md +0 -8
  115. package/src/__tests__/fixtures/cursor-plugins/playwright/LICENSE +0 -21
  116. package/src/__tests__/fixtures/cursor-plugins/playwright/README.md +0 -46
  117. package/src/__tests__/fixtures/cursor-plugins/playwright/assets/logo.svg +0 -0
  118. package/src/__tests__/fixtures/cursor-plugins/playwright/mcp.json +0 -8
  119. package/src/__tests__/fixtures/cursor-plugins/salesforce/.cursor-plugin/plugin.json +0 -48
  120. package/src/__tests__/fixtures/cursor-plugins/salesforce/CHANGELOG.md +0 -10
  121. package/src/__tests__/fixtures/cursor-plugins/salesforce/LICENSE +0 -21
  122. package/src/__tests__/fixtures/cursor-plugins/salesforce/README.md +0 -95
  123. package/src/__tests__/fixtures/cursor-plugins/salesforce/assets/logo.svg +0 -0
  124. package/src/__tests__/fixtures/cursor-plugins/salesforce/mcp.json +0 -12
  125. package/src/__tests__/fixtures/cursor-plugins/thermos/.cursor-plugin/plugin.json +0 -32
  126. package/src/__tests__/fixtures/cursor-plugins/thermos/CHANGELOG.md +0 -8
  127. package/src/__tests__/fixtures/cursor-plugins/thermos/LICENSE +0 -21
  128. package/src/__tests__/fixtures/cursor-plugins/thermos/README.md +0 -70
  129. package/src/__tests__/fixtures/cursor-plugins/thermos/agents/thermo-nuclear-code-quality-review-subagent.md +0 -23
  130. package/src/__tests__/fixtures/cursor-plugins/thermos/agents/thermo-nuclear-review-subagent.md +0 -28
  131. package/src/__tests__/fixtures/cursor-plugins/thermos/assets/logo.png +0 -0
  132. package/src/__tests__/fixtures/cursor-plugins/thermos/skills/thermo-nuclear-code-quality-review/SKILL.md +0 -192
  133. package/src/__tests__/fixtures/cursor-plugins/thermos/skills/thermo-nuclear-review/SKILL.md +0 -51
  134. package/src/__tests__/fixtures/cursor-plugins/thermos/skills/thermos/SKILL.md +0 -21
  135. package/src/__tests__/fixtures/cursor-plugins/xero/.cursor-plugin/plugin.json +0 -53
  136. package/src/__tests__/fixtures/cursor-plugins/xero/CHANGELOG.md +0 -9
  137. package/src/__tests__/fixtures/cursor-plugins/xero/LICENSE +0 -21
  138. package/src/__tests__/fixtures/cursor-plugins/xero/README.md +0 -79
  139. package/src/__tests__/fixtures/cursor-plugins/xero/assets/logo.png +0 -0
  140. package/src/__tests__/fixtures/cursor-plugins/xero/mcp.json +0 -16
  141. package/src/__tests__/fixtures.test.ts +0 -198
  142. package/src/__tests__/marketplace.test.ts +0 -378
  143. package/src/__tests__/mcp-servers.test.ts +0 -120
  144. package/src/__tests__/overlay-and-ignored.test.ts +0 -65
  145. package/src/__tests__/presentation.test.ts +0 -186
  146. package/src/__tests__/skills.test.ts +0 -89
  147. package/src/__tests__/sub-agents.test.ts +0 -111
  148. package/src/__tests__/variables.test.ts +0 -94
@@ -1,119 +0,0 @@
1
- /**
2
- * Pins the reader contract and the path discipline: lexical containment of
3
- * listed and declared paths, the sorted in-memory reader, the index's
4
- * directory queries, BOM stripping, and the two-sided document cap (the
5
- * declared size before a read, the returned length after, so a reader that
6
- * under-declares cannot smuggle bytes past the cap).
7
- */
8
-
9
- import { describe, expect, it } from "vitest";
10
-
11
- import {
12
- decodeUtf8,
13
- inMemoryPluginFiles,
14
- isContainedPath,
15
- PLUGIN_DOCUMENT_LIMITS,
16
- PluginFileIndex,
17
- type PluginFiles,
18
- resolveDeclaredPath,
19
- } from "../files.js";
20
- import { readPluginPackage } from "../read-plugin-package.js";
21
- import { openPlugin } from "../testing.js";
22
- import { kindsOf, read } from "../__test-utils__/read.js";
23
-
24
- describe("isContainedPath", () => {
25
- it("accepts plugin-relative POSIX paths", () => {
26
- expect(isContainedPath("plugin.json")).toBe(true);
27
- expect(isContainedPath("skills/a/SKILL.md")).toBe(true);
28
- expect(isContainedPath(".cursor-plugin/plugin.json")).toBe(true);
29
- });
30
-
31
- it("refuses absolute, parent, dot, empty-segment and backslash paths", () => {
32
- for (const path of ["", "/etc/passwd", "../x", "a/../b", "a/./b", "a//b", "a\\b", "a/"]) {
33
- expect(isContainedPath(path), path).toBe(false);
34
- }
35
- });
36
- });
37
-
38
- describe("resolveDeclaredPath", () => {
39
- it("normalises ./-prefixed directories and files, and the root spellings", () => {
40
- expect(resolveDeclaredPath("./skills/")).toEqual({ ok: true, path: "skills" });
41
- expect(resolveDeclaredPath("./agents/reviewer.md")).toEqual({ ok: true, path: "agents/reviewer.md" });
42
- expect(resolveDeclaredPath(".")).toEqual({ ok: true, path: "" });
43
- expect(resolveDeclaredPath("./")).toEqual({ ok: true, path: "" });
44
- });
45
-
46
- it("refuses a bare, an escaping and a glob path, each with its own kind", () => {
47
- expect(resolveDeclaredPath("skills/")).toEqual({ ok: false, kind: "path-not-relative" });
48
- expect(resolveDeclaredPath("./../other")).toEqual({ ok: false, kind: "path-escapes-root" });
49
- expect(resolveDeclaredPath("./skills/**/*.md")).toEqual({ ok: false, kind: "path-glob-unsupported" });
50
- });
51
- });
52
-
53
- describe("inMemoryPluginFiles and PluginFileIndex", () => {
54
- const files = inMemoryPluginFiles(
55
- new Map<string, string>([
56
- ["skills/b/SKILL.md", "b"],
57
- ["skills/a/SKILL.md", "a"],
58
- ["skills/a/scripts/run.sh", "run"],
59
- ["plugin.json", "{}"],
60
- ["agents/x.md", "x"],
61
- ]),
62
- );
63
- const index = new PluginFileIndex(files);
64
-
65
- it("lists entries sorted by path with their byte sizes", () => {
66
- expect(files.entries.map((e) => e.path)).toEqual([
67
- "agents/x.md",
68
- "plugin.json",
69
- "skills/a/SKILL.md",
70
- "skills/a/scripts/run.sh",
71
- "skills/b/SKILL.md",
72
- ]);
73
- expect(files.entries.find((e) => e.path === "skills/a/scripts/run.sh")?.size).toBe(3);
74
- });
75
-
76
- it("answers directory queries from the sorted list", () => {
77
- expect(index.childDirectories("")).toEqual(["agents", "skills"]);
78
- expect(index.childDirectories("skills")).toEqual(["a", "b"]);
79
- expect(index.childFiles("")).toEqual(["plugin.json"]);
80
- expect(index.filesUnder("skills/a")).toEqual(["skills/a/SKILL.md", "skills/a/scripts/run.sh"]);
81
- expect(index.isDirectory("skills/a/scripts")).toBe(true);
82
- expect(index.isDirectory("nope")).toBe(false);
83
- });
84
-
85
- it("throws on a read of an unlisted path (a reader contract violation, not plugin content)", () => {
86
- expect(() => files.read("missing")).toThrow(/not listed/);
87
- });
88
- });
89
-
90
- describe("decodeUtf8", () => {
91
- it("strips a leading byte-order mark and nothing else", () => {
92
- expect(decodeUtf8(new Uint8Array([0xef, 0xbb, 0xbf, 0x7b, 0x7d]))).toBe("{}");
93
- expect(decodeUtf8(new TextEncoder().encode("a\ufeffb"))).toBe("a\ufeffb");
94
- });
95
- });
96
-
97
- describe("document caps", () => {
98
- it("refuses a manifest over its declared-size cap before reading it", () => {
99
- const huge = `{"name":"x","pad":"${"a".repeat(PLUGIN_DOCUMENT_LIMITS.manifest)}"}`;
100
- const files = openPlugin({ files: { "plugin.json": huge } });
101
- const outcome = read(files);
102
- expect(kindsOf(outcome).errors).toEqual(["document-too-large", "manifest-name-missing"]);
103
- });
104
-
105
- it("refuses a document whose reader returned more bytes than it declared", () => {
106
- const manifest = JSON.stringify({ $schema: "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json", name: "x" });
107
- const lying: PluginFiles = {
108
- entries: [{ path: "plugin.json", size: 1 }],
109
- read: () => new TextEncoder().encode(manifest.padEnd(PLUGIN_DOCUMENT_LIMITS.manifest + 1, " ")),
110
- };
111
- const outcome = readPluginPackage(lying);
112
- expect(kindsOf(outcome).errors).toEqual(["document-too-large", "manifest-name-missing"]);
113
- });
114
-
115
- it("refuses a listed path outside the root", () => {
116
- const files = openPlugin({ files: { "../escape.txt": "x" } });
117
- expect(kindsOf(read(files)).errors).toEqual(["path-uncontained"]);
118
- });
119
- });
@@ -1,412 +0,0 @@
1
- {
2
- "name": "cursor-plugins",
3
- "owner": {
4
- "name": "Cursor",
5
- "email": "plugins@cursor.com"
6
- },
7
- "metadata": {
8
- "description": "Official Cursor plugin marketplace: developer tools, framework rules, MCP integrations, and agent skills"
9
- },
10
- "plugins": [
11
- {
12
- "name": "teaching",
13
- "source": "teaching",
14
- "description": "Skill mapping, practice plans, and learning retrospectives."
15
- },
16
- {
17
- "name": "continual-learning",
18
- "source": "continual-learning",
19
- "description": "Incremental transcript-driven memory updates for AGENTS.md using high-signal bullet points only."
20
- },
21
- {
22
- "name": "cursor-team-kit",
23
- "source": "cursor-team-kit",
24
- "description": "Internal team workflows for CI, code review, shipping, local automation, and verification."
25
- },
26
- {
27
- "name": "thermos",
28
- "source": "thermos",
29
- "description": "Thermo-nuclear branch review: deep security/correctness audits, harsh code-quality rubrics, parallel subagents, thermos orchestration, and optional merge-ready PR flows."
30
- },
31
- {
32
- "name": "create-plugin",
33
- "source": "create-plugin",
34
- "description": "Scaffold and validate new agent plugins."
35
- },
36
- {
37
- "name": "ralph-loop",
38
- "source": "ralph-loop",
39
- "description": "Iterative self-referential AI loops using the Ralph Wiggum technique."
40
- },
41
- {
42
- "name": "agent-compatibility",
43
- "source": "agent-compatibility",
44
- "description": "CLI-backed repo compatibility scans plus agents that audit startup, validation, and docs against reality."
45
- },
46
- {
47
- "name": "cli-for-agent",
48
- "source": "cli-for-agent",
49
- "description": "Patterns for designing CLIs that coding agents can run reliably: flags, help with examples, pipelines, errors, idempotency, dry-run."
50
- },
51
- {
52
- "name": "pr-review-canvas",
53
- "source": "pr-review-canvas",
54
- "description": "Render PR diffs as review canvases grouped by importance."
55
- },
56
- {
57
- "name": "docs-canvas",
58
- "source": "docs-canvas",
59
- "description": "Render documentation as a navigable canvas."
60
- },
61
- {
62
- "name": "cursor-sdk",
63
- "source": "cursor-sdk",
64
- "description": "Build apps, scripts, and automations with the TypeScript SDK."
65
- },
66
- {
67
- "name": "orchestrate",
68
- "source": "orchestrate",
69
- "description": "Fan large tasks out across parallel cloud agents with planners, workers, verifiers, and structured handoffs."
70
- },
71
- {
72
- "name": "pstack",
73
- "source": "pstack",
74
- "description": "if you want to go fast, go deep first. pstack helps you write less, but higher quality code. rigorous agent workflows you can parallelize with confidence."
75
- },
76
- {
77
- "name": "grok-voice",
78
- "source": "grok-voice",
79
- "description": "Add Grok voice to an app: realtime speech-to-speech, speech-to-text dictation, text-to-speech read-aloud, and a log-driven fix loop for voice sessions."
80
- },
81
- {
82
- "name": "advisor",
83
- "source": "advisor",
84
- "description": "Consult a stronger model before major decisions, when stuck, and before declaring done."
85
- },
86
- {
87
- "name": "gmail",
88
- "source": "third_party/gmail",
89
- "description": "Search, read, draft, and manage email."
90
- },
91
- {
92
- "name": "google-drive",
93
- "source": "third_party/google-drive",
94
- "description": "Search, read, create, and share files."
95
- },
96
- {
97
- "name": "google-calendar",
98
- "source": "third_party/google-calendar",
99
- "description": "Search events and schedule meetings."
100
- },
101
- {
102
- "name": "gong",
103
- "source": "third_party/gong",
104
- "description": "Pull account summaries, deal insights, and call briefs."
105
- },
106
- {
107
- "name": "salesforce",
108
- "source": "third_party/salesforce",
109
- "description": "Query, create, and update records in your org."
110
- },
111
- {
112
- "name": "playwright",
113
- "source": "third_party/playwright",
114
- "description": "Navigate, click, screenshot, and test in a real browser."
115
- },
116
- {
117
- "name": "github",
118
- "source": "third_party/github",
119
- "description": "Manage repos, issues, pull requests, and Actions."
120
- },
121
- {
122
- "name": "ashby",
123
- "source": "third_party/ashby",
124
- "description": "Search candidates, prep interviews, and manage pipeline tasks."
125
- },
126
- {
127
- "name": "hubspot",
128
- "source": "third_party/hubspot",
129
- "description": "Search and update contacts, companies, deals, and tickets."
130
- },
131
- {
132
- "name": "intercom",
133
- "source": "third_party/intercom",
134
- "description": "Search conversations, contacts, and Help Center articles."
135
- },
136
- {
137
- "name": "zoom",
138
- "source": "third_party/zoom",
139
- "description": "Search meetings, pull transcripts, and work with Zoom Docs."
140
- },
141
- {
142
- "name": "x",
143
- "source": "third_party/x",
144
- "description": "Search posts, read timelines, pull trends, manage bookmarks, and access X Chat."
145
- },
146
- {
147
- "name": "clay",
148
- "source": "third_party/clay",
149
- "description": "Enrich people and companies, run AI research agents."
150
- },
151
- {
152
- "name": "circleback",
153
- "source": "third_party/circleback",
154
- "description": "Search meetings, transcripts, action items, and emails."
155
- },
156
- {
157
- "name": "docusign",
158
- "source": "third_party/docusign",
159
- "description": "Manage envelopes, templates, workflows, and agreements."
160
- },
161
- {
162
- "name": "navan",
163
- "source": "third_party/navan",
164
- "description": "Query expenses, travel bookings, policies, and cards."
165
- },
166
- {
167
- "name": "profound",
168
- "source": "third_party/profound",
169
- "description": "Track AI visibility, sentiment, and citations."
170
- },
171
- {
172
- "name": "juicebox",
173
- "source": "third_party/juicebox",
174
- "description": "Query recruiting analytics, shortlists, and sourcing agents."
175
- },
176
- {
177
- "name": "outreach",
178
- "source": "third_party/outreach",
179
- "description": "Search sequences, prospects, and Kaia meetings."
180
- },
181
- {
182
- "name": "amplemarket",
183
- "source": "third_party/amplemarket",
184
- "description": "Search people and companies, enrich leads, run sequences."
185
- },
186
- {
187
- "name": "klaviyo",
188
- "source": "third_party/klaviyo",
189
- "description": "Manage profiles, segments, campaigns, and flows."
190
- },
191
- {
192
- "name": "customer-io",
193
- "source": "third_party/customer-io",
194
- "description": "Build campaigns, manage segments, and query people."
195
- },
196
- {
197
- "name": "mailerlite",
198
- "source": "third_party/mailerlite",
199
- "description": "Manage subscribers, groups, campaigns, and automations."
200
- },
201
- {
202
- "name": "brevo",
203
- "source": "third_party/brevo",
204
- "description": "Manage contacts, email and SMS campaigns, and CRM deals."
205
- },
206
- {
207
- "name": "typeform",
208
- "source": "third_party/typeform",
209
- "description": "Build forms, analyze responses, and manage contacts."
210
- },
211
- {
212
- "name": "jotform",
213
- "source": "third_party/jotform",
214
- "description": "Create and edit forms, then read submissions."
215
- },
216
- {
217
- "name": "semrush",
218
- "source": "third_party/semrush",
219
- "description": "Research keywords, backlinks, traffic, and competitors."
220
- },
221
- {
222
- "name": "ahrefs",
223
- "source": "third_party/ahrefs",
224
- "description": "Research keywords, backlinks, rankings, and site health."
225
- },
226
- {
227
- "name": "godaddy",
228
- "source": "third_party/godaddy",
229
- "description": "Brainstorm domain names and check availability."
230
- },
231
- {
232
- "name": "upwork",
233
- "source": "third_party/upwork",
234
- "description": "Search talent, post jobs, and manage contracts."
235
- },
236
- {
237
- "name": "workable",
238
- "source": "third_party/workable",
239
- "description": "Search candidates, move pipelines, and manage HR records."
240
- },
241
- {
242
- "name": "brex",
243
- "source": "third_party/brex",
244
- "description": "Query expenses, receipts, bills, cards, and travel."
245
- },
246
- {
247
- "name": "mercury",
248
- "source": "third_party/mercury",
249
- "description": "Read balances, transactions, statements, and cards."
250
- },
251
- {
252
- "name": "todoist",
253
- "source": "third_party/todoist",
254
- "description": "Create, find, and complete tasks and projects."
255
- },
256
- {
257
- "name": "calendly",
258
- "source": "third_party/calendly",
259
- "description": "Check availability and book, cancel, or reschedule."
260
- },
261
- {
262
- "name": "smartsheet",
263
- "source": "third_party/smartsheet",
264
- "description": "Query and update sheets, rows, and workspaces."
265
- },
266
- {
267
- "name": "wrike",
268
- "source": "third_party/wrike",
269
- "description": "Search projects, create tasks, and post comments."
270
- },
271
- {
272
- "name": "coda",
273
- "source": "third_party/coda",
274
- "description": "Search docs, read pages, and update tables."
275
- },
276
- {
277
- "name": "guru",
278
- "source": "third_party/guru",
279
- "description": "Search company knowledge and draft verified answers."
280
- },
281
- {
282
- "name": "fireflies",
283
- "source": "third_party/fireflies",
284
- "description": "Search meeting transcripts, summaries, and action items."
285
- },
286
- {
287
- "name": "otter",
288
- "source": "third_party/otter",
289
- "description": "Search meeting history and pull full transcripts."
290
- },
291
- {
292
- "name": "fathom",
293
- "source": "third_party/fathom",
294
- "description": "Search meetings and pull transcripts and summaries."
295
- },
296
- {
297
- "name": "craft",
298
- "source": "third_party/craft",
299
- "description": "Search, create, and update documents and daily notes."
300
- },
301
- {
302
- "name": "mem",
303
- "source": "third_party/mem",
304
- "description": "Capture, search, and organize notes and collections."
305
- },
306
- {
307
- "name": "readwise",
308
- "source": "third_party/readwise",
309
- "description": "Search highlights and Reader documents, save articles."
310
- },
311
- {
312
- "name": "similarweb",
313
- "source": "third_party/similarweb",
314
- "description": "Analyze website traffic, audiences, and competitors."
315
- },
316
- {
317
- "name": "xero",
318
- "source": "third_party/xero",
319
- "description": "Read and write invoices, contacts, reports, and payroll."
320
- },
321
- {
322
- "name": "outlook",
323
- "source": "third_party/outlook",
324
- "description": "Search, read, and send Microsoft Outlook email, and look up contacts."
325
- },
326
- {
327
- "name": "outlook-calendar",
328
- "source": "third_party/outlook-calendar",
329
- "description": "List, create, update, and cancel Microsoft Outlook calendar events."
330
- },
331
- {
332
- "name": "onedrive",
333
- "source": "third_party/onedrive",
334
- "description": "Browse, search, and read Microsoft OneDrive files."
335
- },
336
- {
337
- "name": "sharepoint",
338
- "source": "third_party/sharepoint",
339
- "description": "Search and read Microsoft SharePoint sites, document libraries, files, and lists."
340
- },
341
- {
342
- "name": "teams",
343
- "source": "third_party/teams",
344
- "description": "Search, read, and send Microsoft Teams chats and channel messages."
345
- },
346
- {
347
- "name": "finance",
348
- "source": "third_party/finance",
349
- "description": "Securely connect your accounts so Grok can help with questions about your spending, subscriptions, balances, and investments.",
350
- "minClientVersions": {
351
- "cursor": "never",
352
- "grokbot": "0.49.0",
353
- "sand": "0.49.0"
354
- }
355
- },
356
- {
357
- "name": "x-ads",
358
- "source": "third_party/x-ads",
359
- "description": "Manage ad campaigns, create ads, track conversions, and pull performance stats."
360
- },
361
- {
362
- "name": "attio",
363
- "source": "third_party/attio",
364
- "description": "Search and update CRM records, lists, notes, and tasks."
365
- },
366
- {
367
- "name": "hunter",
368
- "source": "third_party/hunter",
369
- "description": "Find and verify emails, discover companies, and save leads."
370
- },
371
- {
372
- "name": "gamma",
373
- "source": "third_party/gamma",
374
- "description": "Generate presentations, documents, and webpages."
375
- },
376
- {
377
- "name": "webull",
378
- "source": "third_party/webull",
379
- "description": "View accounts, positions, orders, watchlists, and market data."
380
- },
381
- {
382
- "name": "sp-global",
383
- "source": "third_party/sp-global",
384
- "description": "Query S&P Capital IQ financials, prices, and transcripts."
385
- },
386
- {
387
- "name": "interactive-brokers",
388
- "source": "third_party/interactive-brokers",
389
- "description": "Review positions, balances, P&L, and draft trade instructions."
390
- },
391
- {
392
- "name": "meltwater",
393
- "source": "third_party/meltwater",
394
- "description": "Search media and social mentions and pull analytics."
395
- },
396
- {
397
- "name": "daloopa",
398
- "source": "third_party/daloopa",
399
- "description": "Pull source-linked fundamentals, KPIs, filings, and prices."
400
- },
401
- {
402
- "name": "excalidraw",
403
- "source": "third_party/excalidraw",
404
- "description": "Draw and export hand-drawn diagrams from chat."
405
- },
406
- {
407
- "name": "google-cloud-bigquery",
408
- "source": "third_party/google-cloud-bigquery",
409
- "description": "Explore datasets and tables and run SQL queries."
410
- }
411
- ]
412
- }
@@ -1,27 +0,0 @@
1
- Vendored test fixtures from the Cursor plugins repository.
2
-
3
- Source: https://github.com/cursor/plugins
4
- Commit: c1c0a32
5
- License: each plugin directory carries its own LICENSE file (MIT License,
6
- Copyright Cursor), vendored beside it unchanged.
7
-
8
- Directories and their paths in the source repository:
9
-
10
- thermos/ <- thermos/
11
- advisor/ <- advisor/
12
- github/ <- third_party/github/
13
- xero/ <- third_party/xero/
14
- playwright/ <- third_party/playwright/
15
- salesforce/ <- third_party/salesforce/
16
-
17
- .cursor-plugin/marketplace.json <- .cursor-plugin/marketplace.json
18
- (the whole 79-entry catalogue; the marketplace tests mount the six
19
- directories above at their source paths and expect the other 73 entries
20
- to be reported as directories the tree does not hold)
21
-
22
- Every text file is a byte-for-byte copy of the source at that commit. The
23
- image files (assets/*.png, assets/*.svg) are zero-byte placeholders of the
24
- same name: the reader never opens them (a logo is an ignored component), and
25
- the tests pin only that they are listed and never read. Nothing under this
26
- directory is formatted, linted or edited; a change here is a re-vendoring at
27
- a new commit and updates this notice.
@@ -1,33 +0,0 @@
1
- {
2
- "name": "advisor",
3
- "displayName": "Advisor",
4
- "version": "1.0.0",
5
- "description": "Consult a stronger model at key checkpoints: before major decisions, when stuck on an error, and before declaring a task done. The advisor gets a full briefing plus the conversation transcript, returns guidance, and the main model keeps doing the work.",
6
- "author": {
7
- "name": "Cursor",
8
- "email": "plugins@cursor.com"
9
- },
10
- "homepage": "https://github.com/cursor/plugins/tree/main/advisor",
11
- "repository": "https://github.com/cursor/plugins",
12
- "license": "MIT",
13
- "logo": "assets/avatar.png",
14
- "keywords": [
15
- "advisor",
16
- "second-opinion",
17
- "grok",
18
- "multi-model",
19
- "subagents",
20
- "review",
21
- "quality"
22
- ],
23
- "category": "developer-tools",
24
- "tags": [
25
- "agents",
26
- "quality",
27
- "review",
28
- "automation"
29
- ],
30
- "skills": "./skills/",
31
- "agents": "./agents/",
32
- "hooks": "./hooks/hooks.json"
33
- }
@@ -1,8 +0,0 @@
1
- # Changelog
2
-
3
- ## 1.0.0
4
-
5
- - Initial Advisor plugin release.
6
- - Skill: `advisor` (`/advisor [model|off|status|ask ...|nudge on|off]`), usable as a Custom Mode.
7
- - Agent: `advisor-subagent`, a read-only subagent pinned to Grok 4.6 at xhigh effort by default (any model via `/advisor <model>`) that returns a verdict and guidance.
8
- - Hooks: track edits since the last consult, log each consult to `.cursor/advisor/log.md`, and nudge a pre-completion consult at the end of a turn.
@@ -1,21 +0,0 @@
1
- MIT License
2
-
3
- Copyright (c) 2026 Cursor
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.