clawskills-mcp 0.3.3 → 0.3.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  An MCP (Model Context Protocol) server that exposes [ClawSkills](https://github.com/Shanksg/clawskills) API integration skill docs to AI agents.
4
4
 
5
- ClawSkills contains structured Markdown guides for 13 SaaS APIs (Salesforce, HubSpot, GitHub, Jira, Stripe, Notion, Slack, and more) covering auth, rate limits, pagination, error handling, and recipes — everything an agent needs to make reliable API calls.
5
+ ClawSkills currently contains 14 structured Markdown skill docs for SaaS APIs such as Salesforce, HubSpot, GitHub, Jira, Stripe, Notion, Slack, and Linear. Each skill tracks its own API version and `Last validated` date, while `clawskills-mcp` has its own npm version for the server itself.
6
6
 
7
7
  ---
8
8
 
@@ -107,6 +107,7 @@ Skills are bundled inside the npm package — no `SKILLS_DIR` configuration need
107
107
  - `github` — GitHub REST API + GraphQL
108
108
  - `hubspot` — HubSpot CRM API
109
109
  - `jira` — Jira Cloud REST API
110
+ - `linear` — Linear GraphQL API
110
111
  - `monday` — Monday.com GraphQL API
111
112
  - `notion` — Notion REST API (Pages, Databases, Blocks)
112
113
  - `salesforce` — Salesforce REST API
package/dist/index.js CHANGED
@@ -13,8 +13,22 @@ const __dirname = path.dirname(fileURLToPath(import.meta.url));
13
13
  function resolveSkillsDir() {
14
14
  if (process.env.SKILLS_DIR)
15
15
  return process.env.SKILLS_DIR;
16
- // From dist/index.js → ../../skills (or src/index.ts → ../../skills)
17
- return path.resolve(__dirname, "../skills");
16
+ // Prefer the repo-root skills directory in local development, but fall back
17
+ // to the bundled package copy for published installs.
18
+ const candidates = [
19
+ path.resolve(__dirname, "../../skills"),
20
+ path.resolve(__dirname, "../skills"),
21
+ ];
22
+ for (const candidate of candidates) {
23
+ if (fs.existsSync(candidate))
24
+ return candidate;
25
+ }
26
+ return candidates[0];
27
+ }
28
+ function resolvePackageVersion() {
29
+ const packageJsonPath = path.resolve(__dirname, "../package.json");
30
+ const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, "utf-8"));
31
+ return packageJson.version ?? "0.0.0";
18
32
  }
19
33
  function loadSkills(skillsDir) {
20
34
  const skills = new Map();
@@ -145,13 +159,14 @@ function skillSummary(content) {
145
159
  // ---------------------------------------------------------------------------
146
160
  // Exports for testing
147
161
  // ---------------------------------------------------------------------------
148
- export { loadSkills, extractSection, findSkill, searchSkills, skillSummary };
162
+ export { resolveSkillsDir, resolvePackageVersion, loadSkills, extractSection, findSkill, searchSkills, skillSummary };
149
163
  // ---------------------------------------------------------------------------
150
164
  // MCP Server setup
151
165
  // ---------------------------------------------------------------------------
152
166
  const SKILLS_DIR = resolveSkillsDir();
167
+ const PACKAGE_VERSION = resolvePackageVersion();
153
168
  const skills = loadSkills(SKILLS_DIR);
154
- const server = new Server({ name: "clawskills-mcp", version: "0.1.0" }, { capabilities: { tools: {} } });
169
+ const server = new Server({ name: "clawskills-mcp", version: PACKAGE_VERSION }, { capabilities: { tools: {} } });
155
170
  // List tools
156
171
  server.setRequestHandler(ListToolsRequestSchema, async () => ({
157
172
  tools: [
@@ -3,7 +3,7 @@ import * as fs from "fs";
3
3
  import * as os from "os";
4
4
  import * as path from "path";
5
5
  import { fileURLToPath } from "url";
6
- import { loadSkills, extractSection, findSkill, searchSkills, skillSummary } from "./index.js";
6
+ import { resolveSkillsDir, resolvePackageVersion, loadSkills, extractSection, findSkill, searchSkills, skillSummary } from "./index.js";
7
7
  const __dirname = path.dirname(fileURLToPath(import.meta.url));
8
8
  const REAL_SKILLS_DIR = path.resolve(__dirname, "../../skills");
9
9
  // ---------------------------------------------------------------------------
@@ -77,6 +77,23 @@ describe("loadSkills", () => {
77
77
  });
78
78
  });
79
79
  // ---------------------------------------------------------------------------
80
+ // Environment and package metadata
81
+ // ---------------------------------------------------------------------------
82
+ describe("resolveSkillsDir", () => {
83
+ it("prefers the canonical repo-root skills directory", () => {
84
+ expect(path.basename(resolveSkillsDir())).toBe("skills");
85
+ expect(loadSkills(resolveSkillsDir()).has("linear")).toBe(true);
86
+ expect(loadSkills(resolveSkillsDir()).has("stripe")).toBe(true);
87
+ });
88
+ });
89
+ describe("resolvePackageVersion", () => {
90
+ it("matches package.json", () => {
91
+ const packageJsonPath = path.resolve(__dirname, "../package.json");
92
+ const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, "utf-8"));
93
+ expect(resolvePackageVersion()).toBe(packageJson.version);
94
+ });
95
+ });
96
+ // ---------------------------------------------------------------------------
80
97
  // findSkill
81
98
  // ---------------------------------------------------------------------------
82
99
  describe("findSkill", () => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "clawskills-mcp",
3
- "version": "0.3.3",
3
+ "version": "0.3.5",
4
4
  "description": "MCP server exposing ClawSkills API integration skill docs to AI agents",
5
5
  "license": "MIT",
6
6
  "author": "ClawSkills Contributors",
package/skills/ROADMAP.md CHANGED
@@ -12,26 +12,26 @@ This skill set enables end-to-end automation and integration across the most com
12
12
 
13
13
  ---
14
14
 
15
- ## Current state (as of 2026-03-01)
15
+ ## Current state (as of 2026-03-10)
16
16
 
17
17
  ### What's shipped
18
18
 
19
19
  | Layer | Status |
20
20
  |-------|--------|
21
- | **11 skill docs** — Monday.com, Salesforce, Jira, Dynamics 365, HubSpot, ServiceNow, Zendesk, Asana, GitHub, Figma, Slack | ✅ Live |
22
- | **MCP server** — `clawskills-mcp` v0.2.3 on npm; `list_skills`, `get_skill`, `search_skills` | ✅ Live |
21
+ | **14 skill docs** — Monday.com, Salesforce, Jira, Dynamics 365, HubSpot, ServiceNow, Zendesk, Asana, GitHub, Figma, Slack, Stripe, Notion, Linear | ✅ Live |
22
+ | **MCP server** — `clawskills-mcp` v0.3.4 on npm; `list_skills`, `get_skill`, `search_skills` | ✅ Live |
23
23
  | **CI pipeline** — build + test on every push/PR via `ci.yml` | ✅ Live |
24
24
  | **Release automation** — `release.yml` workflow_dispatch → bump, tag, npm publish via OIDC | ✅ Live |
25
- | **Test suite** — Vitest unit tests + real-skills validation (required sections, ≥5 KB, all 11 tools) | ✅ Live |
25
+ | **Test suite** — Vitest unit tests + real-skills validation (required sections, ≥5 KB, all 14 tools) | ✅ Live |
26
26
  | **Public repo readiness** — MIT license, `.gitignore`, full `package.json` metadata | ✅ Ready |
27
27
 
28
28
  ### Content coverage by original phase
29
29
 
30
30
  | Phase | Theme | Status |
31
31
  |-------|-------|--------|
32
- | Phase 1 — Foundation (Auth + Core CRUD) | Auth flows, basic CRUD, retry patterns | ✅ Complete — all 11 tools |
33
- | Phase 2 — High-Frequency Workflows | 6–12 recipes per tool | ✅ Complete — all 11 tools |
34
- | Phase 3 — Event-Driven & Real-Time | Webhook setup, signature verification, event handling | ✅ Complete — all 11 tools |
32
+ | Phase 1 — Foundation (Auth + Core CRUD) | Auth flows, basic CRUD, retry patterns | ✅ Complete — all 14 tools |
33
+ | Phase 2 — High-Frequency Workflows | 6–12 recipes per tool | ✅ Complete — all 14 tools |
34
+ | Phase 3 — Event-Driven & Real-Time | Webhook setup, signature verification, event handling | ✅ Complete — all 14 tools |
35
35
  | Phase 4 — Bulk & Advanced Operations | Batch APIs, large-volume patterns | ⚠️ Partial — documented for most tools; not all have >500-record examples |
36
36
  | Phase 5 — Cross-Tool Orchestration | Multi-system recipes spanning 2+ tools | ❌ Not started — patterns listed in INDEX.md but no dedicated recipes |
37
37
 
@@ -39,31 +39,9 @@ This skill set enables end-to-end automation and integration across the most com
39
39
 
40
40
  ## Next development phase
41
41
 
42
- ### Priority 1 — Content expansion: 3 new skills
42
+ ### Priority 1 — Freshness and accuracy pipeline
43
43
 
44
- Each new skill follows the 11-section template, lives on a `skill/<name>` branch, and is validated by CI before merge.
45
-
46
- | Skill | Why | Key areas to cover |
47
- |-------|-----|--------------------|
48
- | **Stripe** | Most common payments API; revenue-critical workflows missing from current library | Webhooks (event types + signature), Checkout Sessions, subscriptions, refunds, idempotency keys, Connect (multi-account) |
49
- | **Notion** | Knowledge base + lightweight PM; high demand for doc/wiki automation | Pages API, Databases + filters + sorts, Blocks API (rich text), Search, cursor pagination |
50
- | **Linear** | Fast-growing engineering tool, increasingly replacing Jira at startups | Issues, Projects, Teams, Cycles, GraphQL API, webhooks, OAuth + PAT auth |
51
-
52
- **Order:** Stripe → Notion → Linear (payments coverage is the biggest gap).
53
-
54
- **Acceptance criteria for each:**
55
- - [ ] All 11 required sections present (CI enforces)
56
- - [ ] `Last validated:` date in header
57
- - [ ] Auth section has working `curl` example tested against sandbox/dev environment
58
- - [ ] At least 8 recipes with request/response examples
59
- - [ ] Rate limits verified against official docs
60
- - [ ] INDEX.md and README.md updated
61
-
62
- ---
63
-
64
- ### Priority 2 — Freshness CI pipeline (the moat)
65
-
66
- A weekly automated check that skill docs aren't stale and that key API patterns still work.
44
+ Now that the core 14-skill library exists, the next moat is keeping it accurate as vendor APIs change.
67
45
 
68
46
  **Phase A — Staleness detection (low-effort, high-value):**
69
47
  - Parse `Last validated:` date from each `skill.md` header
@@ -71,7 +49,7 @@ A weekly automated check that skill docs aren't stale and that key API patterns
71
49
  - Open a GitHub issue automatically when a doc exceeds the threshold
72
50
  - Deliverable: `.github/workflows/freshness.yml` (weekly cron, `0 9 * * 1`) + `scripts/check-freshness.ts`
73
51
 
74
- **Phase B — Live smoke tests (medium-effort, highest-value — the real moat):**
52
+ **Phase B — Live smoke tests (medium-effort, highest-value):**
75
53
  - For each tool, maintain a minimal test that hits: auth endpoint + one read
76
54
  - Run weekly against sandbox environments using stored credentials (GitHub Secrets)
77
55
  - Failure creates a doc-review issue with the tool name and failing assertion
@@ -84,12 +62,28 @@ A weekly automated check that skill docs aren't stale and that key API patterns
84
62
 
85
63
  ---
86
64
 
65
+ ### Priority 2 — Packaging and distribution hygiene
66
+
67
+ The repo now needs tighter alignment between the canonical `skills/` directory, the bundled npm package contents, and the docs that describe them.
68
+
69
+ - Eliminate stale bundled skill copies during local development
70
+ - Ensure the MCP server reports the package version rather than a hardcoded value
71
+ - Add a CI check that the packaged `mcp-server/skills` tree matches root `skills/`
72
+ - Add a CI/doc check that skill counts and package versions referenced in README/ROADMAP stay current
73
+
74
+ **Acceptance criteria:**
75
+ - [ ] `npm run build` and `npm start` use the same skill set locally and in published packages
76
+ - [ ] The server-reported version matches `mcp-server/package.json`
77
+ - [ ] CI fails if docs or packaged skill copies drift from the canonical source
78
+
79
+ ---
80
+
87
81
  ### Priority 3 — Distribution
88
82
 
89
83
  | Channel | Status | Next action |
90
84
  |---------|--------|-------------|
91
85
  | GitHub (public) | Ready to flip | Make repo public |
92
- | npm (`clawskills-mcp`) | ✅ Live — v0.2.3 | Maintain via `release.yml` |
86
+ | npm (`clawskills-mcp`) | ✅ Live — v0.3.4 | Maintain via `release.yml` |
93
87
  | MCP registry listings | Not submitted | Submit to glama.ai, mcp.so, smithery.ai after public launch |
94
88
  | Docs website | Planned | Mintlify — fastest path to SEO-friendly browsable docs |
95
89
  | Lane A vs B | TBD | Revisit after first traction signals from public launch |
@@ -98,7 +92,7 @@ A weekly automated check that skill docs aren't stale and that key API patterns
98
92
 
99
93
  ### Priority 4 — Complete Phase 4 & 5 gaps
100
94
 
101
- These are lower priority than new skills but worth finishing:
95
+ These are lower priority than freshness and packaging work, but worth finishing:
102
96
 
103
97
  **Phase 4 gaps (Bulk operations):**
104
98
  - Salesforce Bulk API v2: end-to-end CSV ingest tested at ≥500 rows with error-row reporting