@pascalcouturier/skill-builder-mcp 2.4.0 → 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/CHANGELOG.md CHANGED
@@ -9,6 +9,23 @@ The install line names the major version (`@2`), so restarting your AI tool or i
9
9
  fetches the newest release of that major (see **Updating** in the
10
10
  [README](./README.md#updating)).
11
11
 
12
+ ## 2.5.0
13
+
14
+ Measure and improve a project, and a faster security scan.
15
+
16
+ - **`analyze_project`** returns the analysis behind Skill Builder's project report: findings
17
+ with their evidence and sources, what each skill, agent and instructions file costs the context
18
+ of Claude Code, GitHub Copilot and Codex (characters exact, tokens as estimated ranges),
19
+ skills whose descriptions compete, which tools read each file and field, and test results.
20
+ - **`compare_analysis`** gives the before and after of a baseline, computed by Skill Builder, so
21
+ the AI tool reports the change instead of working it out.
22
+ - **`get_standards`** returns best practice per topic and per AI tool, each fact with its source
23
+ and the date it was checked.
24
+ - **`/optimize-skill`** measures, fixes what is safe, asks about the rest, measures again and
25
+ reports the change. **`download_export`** can download the project report.
26
+ - **The secret scan** reads each line once, so very long lines no longer slow it down. Its
27
+ results are unchanged.
28
+
12
29
  ## 2.4.0
13
30
 
14
31
  Best practice for writing skills, agents and instructions, and tests.
package/README.md CHANGED
@@ -210,72 +210,75 @@ The AI can do what you can do in the app, except anything to do with the cloud (
210
210
  sync, the AI check, the community library). Tools marked **asks** wait for your confirmation
211
211
  in Skill Builder.
212
212
 
213
- | Tool | What it does | Asks |
214
- | ---------------------------- | ------------------------------------------------------------------------------------------- | ------------- |
215
- | `get_status` | What is open: project, skill or agent, file, unsaved changes | |
216
- | `list_sessions` | Search, filter, sort and page projects | |
217
- | `get_session` | A project's skills and agents, files and links | |
218
- | `get_document` | A skill or agent with every block (uids, types, values) | |
219
- | `read_file` | The markdown a file produces, or a script's text | |
220
- | `list_block_types` | Block types and their fields | |
221
- | `list_templates` | Templates for new skills, agents and rules, with best practice for writing them | |
222
- | `list_library` | Built-in skills and your library items | |
223
- | `get_library_item` | One library item with its files, scan result and versions | |
224
- | `validate` | The checks (errors, warnings, info), with one-click fixes | |
225
- | `check_files` | Check skill or agent files you send (spec, security, syntax); stores nothing | |
226
- | `use_skill` | Use a skill, agent, rule or instructions the person shared: main file, then files on demand | first use |
227
- | `preview_export` | The files the zip would contain (ready for a project, or plain folders) | |
228
- | `list_versions` | Saved versions | |
229
- | `diff_versions` | Line changes between versions or against the working copy | |
230
- | `get_canvas` | The canvas graph | |
231
- | `create_session` | New project | |
232
- | `open_session` | Show a project, skill or agent, or file in the app | |
233
- | `update_session` | Rename, change author or description | |
234
- | `duplicate_session` | Copy a project | |
235
- | `delete_session` | Delete a project and its versions | asks |
236
- | `add_document` | Add a skill or agent, optionally from a template | |
237
- | `update_document` | Set name, description, licence, allowed tools, model… | |
238
- | `duplicate_document` | Copy a skill or agent | |
239
- | `remove_document` | Delete a skill or agent | asks |
240
- | `write_project_instructions` | Create or update AGENTS.md and CLAUDE.md from your repository (`/init-agents-md`) | |
241
- | `start_repository_import` | Start importing your repository's AI files into a new project (`/import-project`) | |
242
- | `add_repository_files` | Send the repository's files, up to 50 per call | |
243
- | `finish_repository_import` | Scan, build and save the new project; return the summary | |
244
- | `add_block` | Add a block with values at a position | |
245
- | `update_block` | Change block values, collapse or expand | |
246
- | `move_block` | Up, down, or to another file | |
247
- | `duplicate_block` | Copy a block | |
248
- | `remove_block` | Remove a block | |
249
- | `convert_block` | Turn a block into Custom markdown | |
250
- | `break_down_block` | Split Custom markdown into built-in blocks | |
251
- | `extract_block_to_file` | Move a long block into a new reference file | |
252
- | `add_file` | Add a reference, script or asset, optionally in a folder | |
253
- | `write_code_file` | Write a script or data file (scanned, never run) | |
254
- | `add_files` | Add several supporting files by path (scanned like uploads) | |
255
- | `move_file` | Move a file to another folder of its skill (`scripts/test`) | |
256
- | `rename_file` | Rename a reference | |
257
- | `remove_file` | Delete a file | asks |
258
- | `connect` | Link an agent to a skill, or point a reference or Resource link block | |
259
- | `disconnect` | Remove such a link | |
260
- | `add_from_library` | Add a library skill or agent to the project | |
261
- | `update_evaluation` | Save tests for a skill or agent, or the results of running them (`/evaluate-skill`) | |
262
- | `apply_fix` | Apply a fix from `validate` | |
263
- | `save_version` | Save a version (bump suggested from the changes) | |
264
- | `restore_version` | Replace the working copy with a version | asks |
265
- | `download_export` | Download the zip in the browser, for the AI tools you choose | |
266
- | `download_backup` | Download a backup in the browser | |
267
- | `tidy_canvas` | Tidy the canvas layout | |
268
- | `undo_ai_changes` | Same as **Undo AI changes** | if you edited |
269
- | `save_block_type` | Create or edit a custom block type | |
270
- | `delete_block_type` | Delete a custom block type | asks |
271
- | `add_library_item` | Add your own skill or agent to the library from markdown | if warnings |
272
- | `update_library_item` | Edit a library item (saved as a new version) | |
273
- | `restore_library_version` | Bring back an older version of a library item | |
274
- | `copy_builtin_to_library` | Make an editable copy of a built-in skill | |
275
- | `set_library_hidden` | Hide or show a built-in skill | |
276
- | `remove_library_item` | Delete a library item | asks |
277
- | `import_from_github` | List and import skills and agents from a public GitHub repo | if warnings |
278
- | `set_preferences` | Default author, Blocks or Canvas view, block matching on import | |
213
+ | Tool | What it does | Asks |
214
+ | ---------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | ------------- |
215
+ | `get_status` | What is open: project, skill or agent, file, unsaved changes | |
216
+ | `list_sessions` | Search, filter, sort and page projects | |
217
+ | `get_session` | A project's skills and agents, files and links | |
218
+ | `get_document` | A skill or agent with every block (uids, types, values) | |
219
+ | `read_file` | The markdown a file produces, or a script's text | |
220
+ | `list_block_types` | Block types and their fields | |
221
+ | `list_templates` | Templates for new skills, agents and rules, with best practice for writing them | |
222
+ | `list_library` | Built-in skills and your library items | |
223
+ | `get_library_item` | One library item with its files, scan result and versions | |
224
+ | `validate` | The checks (errors, warnings, info), with one-click fixes | |
225
+ | `check_files` | Check skill or agent files you send (spec, security, syntax); stores nothing | |
226
+ | `analyze_project` | The project report's analysis: findings with evidence, context cost per AI tool (tokens as estimates), competition, portability, tests | |
227
+ | `compare_analysis` | Before and after a baseline from `analyze_project`, computed by Skill Builder | |
228
+ | `get_standards` | Best practice per topic and per AI tool, with sources and dates | |
229
+ | `use_skill` | Use a skill, agent, rule or instructions the person shared: main file, then files on demand | first use |
230
+ | `preview_export` | The files the zip would contain (ready for a project, or plain folders) | |
231
+ | `list_versions` | Saved versions | |
232
+ | `diff_versions` | Line changes between versions or against the working copy | |
233
+ | `get_canvas` | The canvas graph | |
234
+ | `create_session` | New project | |
235
+ | `open_session` | Show a project, skill or agent, or file in the app | |
236
+ | `update_session` | Rename, change author or description | |
237
+ | `duplicate_session` | Copy a project | |
238
+ | `delete_session` | Delete a project and its versions | asks |
239
+ | `add_document` | Add a skill or agent, optionally from a template | |
240
+ | `update_document` | Set name, description, licence, allowed tools, model… | |
241
+ | `duplicate_document` | Copy a skill or agent | |
242
+ | `remove_document` | Delete a skill or agent | asks |
243
+ | `write_project_instructions` | Create or update AGENTS.md and CLAUDE.md from your repository (`/init-agents-md`) | |
244
+ | `start_repository_import` | Start importing your repository's AI files into a new project (`/import-project`) | |
245
+ | `add_repository_files` | Send the repository's files, up to 50 per call | |
246
+ | `finish_repository_import` | Scan, build and save the new project; return the summary | |
247
+ | `add_block` | Add a block with values at a position | |
248
+ | `update_block` | Change block values, collapse or expand | |
249
+ | `move_block` | Up, down, or to another file | |
250
+ | `duplicate_block` | Copy a block | |
251
+ | `remove_block` | Remove a block | |
252
+ | `convert_block` | Turn a block into Custom markdown | |
253
+ | `break_down_block` | Split Custom markdown into built-in blocks | |
254
+ | `extract_block_to_file` | Move a long block into a new reference file | |
255
+ | `add_file` | Add a reference, script or asset, optionally in a folder | |
256
+ | `write_code_file` | Write a script or data file (scanned, never run) | |
257
+ | `add_files` | Add several supporting files by path (scanned like uploads) | |
258
+ | `move_file` | Move a file to another folder of its skill (`scripts/test`) | |
259
+ | `rename_file` | Rename a reference | |
260
+ | `remove_file` | Delete a file | asks |
261
+ | `connect` | Link an agent to a skill, or point a reference or Resource link block | |
262
+ | `disconnect` | Remove such a link | |
263
+ | `add_from_library` | Add a library skill or agent to the project | |
264
+ | `update_evaluation` | Save tests for a skill or agent, or the results of running them (`/evaluate-skill`) | |
265
+ | `apply_fix` | Apply a fix from `validate` | |
266
+ | `save_version` | Save a version (bump suggested from the changes) | |
267
+ | `restore_version` | Replace the working copy with a version | asks |
268
+ | `download_export` | Download the zip in the browser, for the AI tools you choose, or the project report | |
269
+ | `download_backup` | Download a backup in the browser | |
270
+ | `tidy_canvas` | Tidy the canvas layout | |
271
+ | `undo_ai_changes` | Same as **Undo AI changes** | if you edited |
272
+ | `save_block_type` | Create or edit a custom block type | |
273
+ | `delete_block_type` | Delete a custom block type | asks |
274
+ | `add_library_item` | Add your own skill or agent to the library from markdown | if warnings |
275
+ | `update_library_item` | Edit a library item (saved as a new version) | |
276
+ | `restore_library_version` | Bring back an older version of a library item | |
277
+ | `copy_builtin_to_library` | Make an editable copy of a built-in skill | |
278
+ | `set_library_hidden` | Hide or show a built-in skill | |
279
+ | `remove_library_item` | Delete a library item | asks |
280
+ | `import_from_github` | List and import skills and agents from a public GitHub repo | if warnings |
281
+ | `set_preferences` | Default author, Blocks or Canvas view, block matching on import | |
279
282
 
280
283
  Edits carry the project's revision. If you changed the project since the AI last read it,
281
284
  the edit is refused and the AI reads it again, so it never overwrites your work by accident.
package/SECURITY.md CHANGED
@@ -122,9 +122,9 @@ commands, edit files). Treat any tool's output as untrusted, including this one'
122
122
 
123
123
  ```bash
124
124
  # What it contains, and its checksum
125
- npm pack @pascalcouturier/skill-builder-mcp@2.4.0
126
- tar -tzf pascalcouturier-skill-builder-mcp-2.4.0.tgz
127
- npm view @pascalcouturier/skill-builder-mcp@2.4.0 dist.integrity
125
+ npm pack @pascalcouturier/skill-builder-mcp@2.5.0
126
+ tar -tzf pascalcouturier-skill-builder-mcp-2.5.0.tgz
127
+ npm view @pascalcouturier/skill-builder-mcp@2.5.0 dist.integrity
128
128
 
129
129
  # That the registry signed it (in a project that installs it)
130
130
  npm audit signatures
@@ -146,7 +146,7 @@ the approved GitHub Actions workflow (no npm token exists).
146
146
 
147
147
  This means a release reaches you without you reviewing it first. If you want to review each one
148
148
  (for example in a company), put an exact version after the `@` in your AI tool's settings, such as
149
- `@2.4.0`, and update it yourself; Skill Builder still shows when your connector is out of date.
149
+ `@2.5.0`, and update it yourself; Skill Builder still shows when your connector is out of date.
150
150
  Use the commands above to look at any release before you run it.
151
151
 
152
152
  ## Reporting a problem
package/dist/cli.js CHANGED
@@ -7845,7 +7845,7 @@ var StdioServerTransport = class {
7845
7845
  };
7846
7846
  var package_default = {
7847
7847
  name: "@pascalcouturier/skill-builder-mcp",
7848
- version: "2.4.0",
7848
+ version: "2.5.0",
7849
7849
  description: "Connect AI tools (GitHub Copilot, Claude Code, Codex, Cursor, Claude Desktop) to Skill Builder open in your browser, over MCP.",
7850
7850
  license: "MIT",
7851
7851
  author: "Pascal Couturier (https://pascalcouturier.com)",
@@ -11732,32 +11732,32 @@ var SOURCES = {
11732
11732
  "claude-code-skills": {
11733
11733
  title: "Claude Code: skills",
11734
11734
  url: "https://code.claude.com/docs/en/skills",
11735
- checked: "2026-10-11"
11735
+ checked: "2026-10-12"
11736
11736
  },
11737
11737
  "claude-code-subagents": {
11738
11738
  title: "Claude Code: subagents",
11739
11739
  url: "https://code.claude.com/docs/en/sub-agents",
11740
- checked: "2026-10-11"
11740
+ checked: "2026-10-12"
11741
11741
  },
11742
11742
  "claude-code-memory": {
11743
11743
  title: "Claude Code: CLAUDE.md, AGENTS.md and rules",
11744
11744
  url: "https://code.claude.com/docs/en/memory",
11745
- checked: "2026-10-11"
11745
+ checked: "2026-10-12"
11746
11746
  },
11747
11747
  "vscode-skills": {
11748
11748
  title: "VS Code (GitHub Copilot): agent skills",
11749
11749
  url: "https://code.visualstudio.com/docs/agent-customization/agent-skills",
11750
- checked: "2026-10-11"
11750
+ checked: "2026-10-12"
11751
11751
  },
11752
11752
  "vscode-agents": {
11753
11753
  title: "VS Code (GitHub Copilot): custom agents",
11754
11754
  url: "https://code.visualstudio.com/docs/agent-customization/custom-agents",
11755
- checked: "2026-10-11"
11755
+ checked: "2026-10-12"
11756
11756
  },
11757
11757
  "vscode-instructions": {
11758
11758
  title: "VS Code (GitHub Copilot): custom instructions",
11759
11759
  url: "https://code.visualstudio.com/docs/agent-customization/custom-instructions",
11760
- checked: "2026-10-11"
11760
+ checked: "2026-10-12"
11761
11761
  },
11762
11762
  "github-skills": {
11763
11763
  title: "GitHub Docs: adding agent skills for Copilot",
@@ -11774,6 +11774,16 @@ var SOURCES = {
11774
11774
  url: "https://cursor.com/docs/context/rules",
11775
11775
  checked: "2026-10-11"
11776
11776
  },
11777
+ "codex-source": {
11778
+ title: "OpenAI Codex source: how skills and AGENTS.md are loaded",
11779
+ url: "https://github.com/openai/codex/tree/a9b0815167c27ab13719dd12d13b63e02b70d221/codex-rs",
11780
+ checked: "2026-10-12"
11781
+ },
11782
+ "vscode-copilot-source": {
11783
+ title: "VS Code (GitHub Copilot) source: tools per request",
11784
+ url: "https://github.com/microsoft/vscode/blob/c480e9e49e2a116c458518ecbdec56d50e4af3d2/extensions/copilot/src/platform/configuration/common/configurationService.ts",
11785
+ checked: "2026-10-12"
11786
+ },
11777
11787
  "skill-creator": {
11778
11788
  title: "Anthropic skill-creator: testing skills",
11779
11789
  url: "https://github.com/anthropics/skills/tree/main/skills/skill-creator",
@@ -11787,6 +11797,31 @@ var cite = (...ids) => ids.map((id) => ({
11787
11797
  url: SOURCES[id].url
11788
11798
  }));
11789
11799
  cite("agent-skills-spec", "anthropic-best-practices", "claude-code-skills", "vscode-skills"), cite("claude-code-subagents", "vscode-agents"), cite("agents-md", "claude-code-memory", "vscode-instructions"), cite("vscode-instructions", "claude-code-memory", "cursor-rules"), cite("skill-creator", "anthropic-best-practices");
11800
+ [
11801
+ "Context cost, from what is paid most often to least:",
11802
+ "1. Every request: skill and agent names and descriptions, AGENTS.md / CLAUDE.md, rules without paths. Keep descriptions to the main use case and trigger words; move procedures out of AGENTS.md into skills; give rules paths.",
11803
+ "2. When a skill or agent is used: SKILL.md or the agent body. Keep SKILL.md under 500 lines; move long sections that only some tasks need into reference files that SKILL.md links with when to read them.",
11804
+ "3. When read: reference files. Free until needed; start long ones with a table of contents.",
11805
+ "4. Preloaded by agents (Claude Code): the full text of each skill in an agent’s skills list, every time it starts. Preload only skills the agent always needs.",
11806
+ "Characters are exact; token counts are estimates. Never present a token estimate as exact."
11807
+ ].join("\n");
11808
+ [
11809
+ "Optimise a skill, agent or the whole project in Skill Builder:",
11810
+ "1. Baseline: call analyze_project (keep the baselineId it returns). If the item has tests, run them first (/evaluate-skill, or the evaluation guidance) so you can compare.",
11811
+ "2. Read the findings with their evidence and reasons. Fix errors and warnings first, then the suggestions that apply. Findings with a fix can be applied with apply_fix; those marked safe only correct a link, name or path.",
11812
+ "3. For changes to wording or structure (descriptions, moving sections into reference files, merging competing skills), propose the change and ask the person before rewriting.",
11813
+ "4. After the changes, run the tests again if there are any, then call compare_analysis with the baselineId.",
11814
+ "5. Report what compare_analysis returned, numbers as they are: characters saved per AI tool, findings cleared and added, test results before and after. Token counts are estimates. Never compute or estimate a change yourself.",
11815
+ "6. Do not save a version unless the person asks."
11816
+ ].join("\n");
11817
+ [
11818
+ "To make one skill work in Claude Code, GitHub Copilot and Codex:",
11819
+ "- Use the fields every tool reads: name (lowercase, hyphens, the folder name) and description (under 1,024 characters, main use case first).",
11820
+ "- Fields such as argument-hint, user-invocable and disable-model-invocation are read by Claude Code and Copilot only; Codex ignores them. claude.ai uploads refuse fields outside the specification.",
11821
+ "- Install skills where each tool looks: .claude/skills (Claude Code, Copilot), .agents/skills (Codex, Copilot), or .github/skills (Copilot). A project export from Skill Builder lays them out for the tools you choose.",
11822
+ "- Agents: Claude Code and Copilot read .claude/agents; Copilot also reads .github/agents. How Codex reads agents was not verified.",
11823
+ "- AGENTS.md is read by Copilot and Codex, and by Claude Code through a CLAUDE.md that imports it. Codex reads at most 32 KiB."
11824
+ ].join("\n");
11790
11825
  //#endregion
11791
11826
  //#region ../../src/core/bridge/prompts.ts
11792
11827
  /**
@@ -12120,6 +12155,71 @@ var bridgeTools = {
12120
12155
  aiReview: boolean().default(true).describe("Include the AI review rubric.")
12121
12156
  })
12122
12157
  }),
12158
+ analyze_project: tool({
12159
+ name: "analyze_project",
12160
+ title: "Analyse project",
12161
+ kind: "read",
12162
+ description: "Analyses the project the way its report in Skill Builder does: a scorecard by area, every finding with its evidence, reason and source, what each skill, agent and instructions file costs the context of Claude Code, GitHub Copilot and Codex (characters exact, tokens as estimated ranges), skills whose descriptions compete, which tools read each file and its fields, and test results. Filter with area, tool, documentId and kind to get only what you need. Keep the baselineId it returns and call compare_analysis after your changes to get the before and after. Errors and warnings follow published rules; suggestions are heuristics shown with their evidence: check them before acting." + DATA_NOTE,
12163
+ input: strictObject({
12164
+ sessionId: sessionRef,
12165
+ area: _enum([
12166
+ "structure",
12167
+ "discoverability",
12168
+ "context",
12169
+ "clarity",
12170
+ "safety",
12171
+ "portability"
12172
+ ]).optional().describe("Only findings in this area."),
12173
+ tool: _enum([
12174
+ "claude",
12175
+ "copilot",
12176
+ "codex"
12177
+ ]).optional().describe("Only this AI tool: its budget, and findings that concern it."),
12178
+ documentId: id.optional().describe("Only findings and budget lines about this item."),
12179
+ kind: _enum([
12180
+ "error",
12181
+ "warning",
12182
+ "suggestion"
12183
+ ]).optional().describe("Only findings of this kind."),
12184
+ sections: array(_enum([
12185
+ "findings",
12186
+ "budget",
12187
+ "overlaps",
12188
+ "portability",
12189
+ "tests"
12190
+ ])).max(5).optional().describe("Which parts to return. Default: all of them.")
12191
+ })
12192
+ }),
12193
+ compare_analysis: tool({
12194
+ name: "compare_analysis",
12195
+ title: "Compare with baseline",
12196
+ kind: "read",
12197
+ description: "Compares the project now with a baseline from analyze_project: characters (and estimated tokens) on every request per AI tool, findings cleared and added, and test results before and after. Skill Builder computes every number: report them to the person as they are, and never compute or estimate a change yourself. Baselines last until the tab is closed.",
12198
+ input: strictObject({ baselineId: string().min(1).max(60).describe("From analyze_project.") })
12199
+ }),
12200
+ get_standards: tool({
12201
+ name: "get_standards",
12202
+ title: "Get best practice",
12203
+ kind: "read",
12204
+ description: "Best practice for writing skills, agents, AGENTS.md and rules, checked against each AI tool's documentation (Codex: its source code), with the source and the date of every fact. topic: skill, agent, instructions, rule, evaluation (testing), optimize (the routine for improving a project with analyze_project and compare_analysis), portability (making one file work in Claude Code, Copilot and Codex) or context (what costs context and how to cut it). Pass tool for the facts about one AI tool. Call it before you write or rewrite a skill, agent or instructions file.",
12205
+ input: strictObject({
12206
+ topic: _enum([
12207
+ "skill",
12208
+ "agent",
12209
+ "instructions",
12210
+ "rule",
12211
+ "evaluation",
12212
+ "optimize",
12213
+ "portability",
12214
+ "context"
12215
+ ]),
12216
+ tool: _enum([
12217
+ "claude",
12218
+ "copilot",
12219
+ "codex"
12220
+ ]).optional()
12221
+ })
12222
+ }),
12123
12223
  check_files: tool({
12124
12224
  name: "check_files",
12125
12225
  title: "Check skill files",
@@ -12621,11 +12721,12 @@ var bridgeTools = {
12621
12721
  name: "download_export",
12622
12722
  title: "Download zip",
12623
12723
  kind: "write",
12624
- description: "Downloads the project as a zip in the user's browser, laid out like preview_export with the same format and providers. The user is asked to confirm in the app.",
12724
+ description: "Downloads the project as a zip in the user's browser, laid out like preview_export with the same format and providers, or with report its analysis report (as in analyze_project). The user is asked to confirm in the app.",
12625
12725
  input: strictObject({
12626
12726
  sessionId: sessionRef,
12627
12727
  format: exportFormat,
12628
- providers: exportProviders
12728
+ providers: exportProviders,
12729
+ report: _enum(["html", "markdown"]).optional().describe("Download the project report instead of the zip: one branded HTML file, or Markdown.")
12629
12730
  })
12630
12731
  }),
12631
12732
  download_backup: tool({
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pascalcouturier/skill-builder-mcp",
3
- "version": "2.4.0",
3
+ "version": "2.5.0",
4
4
  "description": "Connect AI tools (GitHub Copilot, Claude Code, Codex, Cursor, Claude Desktop) to Skill Builder open in your browser, over MCP.",
5
5
  "license": "MIT",
6
6
  "author": "Pascal Couturier (https://pascalcouturier.com)",