Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 12 additions & 12 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -21,37 +21,37 @@
"@eslint/js": "^10.0.1",
"@fontsource/roboto": "^5.2.10",
"@fontsource/spectral": "^5.2.8",
"@lucide/svelte": "^1.14.0",
"@lucide/svelte": "^1.16.0",
"@maiertech/sveltekit-helpers": "^0.51.2",
"@playwright/test": "^1.59.1",
"@playwright/test": "^1.60.0",
"@stackblitz/sdk": "^1.11.0",
"@sveltejs/adapter-node": "^5.5.4",
"@sveltejs/enhanced-img": "^0.10.4",
"@sveltejs/kit": "^2.59.1",
"@sveltejs/kit": "^2.61.1",
"@sveltejs/vite-plugin-svelte": "^7.1.2",
"@tailwindcss/vite": "^4.3.0",
"@types/node": "^25.6.2",
"@types/node": "^25.9.1",
"d3-array": "^3.2.4",
"dotenv": "^17.4.2",
"eslint": "^10.3.0",
"eslint": "^10.4.0",
"eslint-config-prettier": "^10.1.8",
"eslint-plugin-svelte": "^3.17.1",
"globals": "^17.6.0",
"mdsvex": "^0.12.7",
"mode-watcher": "^1.1.0",
"prettier": "^3.8.3",
"prettier-plugin-svelte": "^3.5.1",
"prettier-plugin-svelte": "^3.5.2",
"prettier-plugin-tailwindcss": "^0.8.0",
"shiki": "^4.0.2",
"simple-icons": "^16.18.1",
"svelte": "^5.55.5",
"shiki": "^4.1.0",
"simple-icons": "^16.21.0",
"svelte": "^5.55.9",
"svelte-check": "^4.4.8",
"sveltekit-embed": "^0.0.22",
"tailwind-merge": "^3.5.0",
"tailwind-merge": "^3.6.0",
"tailwindcss": "^4.3.0",
"typescript": "^6.0.3",
"typescript-eslint": "^8.59.2",
"vite": "^8.0.11",
"typescript-eslint": "^8.59.4",
"vite": "^8.0.14",
"zod": "^4.4.3"
}
}
992 changes: 496 additions & 496 deletions pnpm-lock.yaml

Large diffs are not rendered by default.

11 changes: 11 additions & 0 deletions src/routes/guides/claude/+page.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
---
title: Claude guide
description: How setup and configure Claude Code.
---

## Directories

| Directory | Type | Description |
| ------------------ | --------- | --------------------------------------------------------- |
| `.claude/skills` | workspace | Claude code does not read skills from `.agents/skills`. |
| `~/.claude/skills` | global | Claude code does not read skills from `~/.agents/skills`. |
72 changes: 72 additions & 0 deletions src/routes/guides/mcp/+page.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
---
title: MCP guide
description: How to setup and configure MCP servers.
---

In the [Skills guide](/guides/skills) I mentioned that the `.agents/skills` workspace directory is a
convention that many agents honor. Unfortunately, there is no such standardization for MCP servers.

## How do I configure MCP servers?

1. **Option 1 (agent-vendor-specific workspace config):** Add an agent-vendor-specific config to
your workspace. You will have to add one config per agent, e.g. `.vibe/config.toml` for Mistral
Vibe. Since you cannot share MCP server configs across agents, you will have to add multiple
workspace configs if you want to use multiple agents. If you configure an MCP server for Zed by
adding it to `.zed/settings.json` in your workspace, you can at least share the MCP server config
with every model supported by the Zed agent.

2. **Option 2 (agent-vendor-specific global configs):** Every agent vendor offers a custom way to
configure an MCP server globally in your home directory. Again, you have to add one config per
agent vendor. Like before, you can add MCP servers to `~/.config/zed/settings.json`, which makes
them available to every model supported by the Zed agent.

3. **Option 3 (use MCP server extensions):** A selection of MCP servers can be installed as
extensions in Zed. This makes them available globally to the Zed agent and all supported models.

## Configuration examples

### Svelte MCP server

This MCP server makes most sense when configured in a workspace. For Zed, you need to add
`.zed/settings.json` to your workspace with the following config:

```json
{
"context_servers": {
"Svelte": {
"command": "npx",
"args": ["-y", "@sveltejs/mcp"]
}
}
}
```

For Mistral Vibe support, you need to add `.vibe/config.toml` with the following config:

```toml
[[mcp_servers]]
name = "Svelte"
transport = "stdio"
command = "npx"
args = ["-y", "@sveltejs/mcp"]
```

### GitHub MCP server

This one is not project-specific and should be added globally. You can install it as an extension in
Zed. This results in this config in `~/.config/zed/settings.json`:

```json
"context_servers": {
"mcp-server-github": {
"enabled": true,
"remote": false,
"settings": {
"github_personal_access_token": "token",
},
},
},
```

Token permissions depend on what you want to do with the MCP server. Start with `repo` permissions
for read-only access.
37 changes: 37 additions & 0 deletions src/routes/guides/mistral/+page.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
---
title: Mistral guide
description: How setup and configure Mistral.
---

## Mistral Vibe CLI

Install with `brew install mistral-vibe`. Generate an API key
[here](https://console.mistral.ai/codestral/cli). This creates an API key of type `Vibe`, which you
can manage [here](https://admin.mistral.ai/organization/api-keys).

Then run

```sh
vibe --setup
```

and paste the generated API key when prompted.

## Use Mistral Vibe with Zed

You have two options for using Mistral Vibe with Zed:

1. Install Mistral Vibe from the Zed ACP registry. With the configuration from the previous step,
there is nothing else you need to configure.
2. You can also use Mistral with Zed's agent. Create an API key
[here](https://admin.mistral.ai/organization/workspaces?profile_dialog=api-keys) and copy it into
the Mistral config (Zed LLM Providers).

## Directories

| Directory | Type | Description |
| ---------------- | --------- | ------------------------------- |
| `.agents/skills` | workspace | Cross-harness skills directory. |
| `~/.vibe/skills` | global | Global skills directory. |
| `.vibe/mcp` | workspace | Workspace MCP directory. |
| `~/.vibe/mcp` | global | Global MCP directory. |
63 changes: 39 additions & 24 deletions src/routes/guides/skills/+page.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,47 +3,53 @@ title: Skills guide
description: How to manage agentic skills.
---

## Install skills
## Installing skills

You can install skills from [skills.sh](https://skills.sh) with `npx skills add`. You need to be
mindful that skills can be malicious. Your first instinct should be to distrust any skill for which
you cannot corroborate that it is legit. You should also always read the skill to verify that it
does not do anything fishy. There is no harm in installing a skill, but before letting it loose on
your AI, you really need to verify that it is safe to use.
You can install skills from [skills.sh](https://skills.sh) with the Skills CLI using
`npx skills add` and `npx skills add -g`. `npx skills` does not require anything installed locally.
Starting with Node v26, you can install the Skills CLI via Homebrew for better performance:
`brew install skills`. If you opt for this method, you do not need the `npx` prefix in all commands
listed on this page.

You need to be mindful that skills can be malicious. Your first instinct should be to distrust any
skill for which you cannot corroborate that it is legit. You should also always read the skill to
verify that it does not do anything fishy. There is no harm in installing a skill, but before
letting it loose on your agent, you really need to verify that it is safe to use.

Let's take the [official Svelte skills](https://svelte.dev/docs/ai/skills) as an example. On the
[Svelte skills page on skills.sh](https://skills.sh/sveltejs/ai-tools) you can double check from
[Svelte skills page on skills.sh](https://skills.sh/sveltejs/ai-tools) you can double-check from
which repository the skills will be installed. Since the
[repository is managed by the Svelte team](https://skills.sh/sveltejs/ai-tools), you can be
confident that these skills are legit and you can use the command from skills.sh to install them.

## Installation directory
## Where should I install my skills?

Directories in which agents look for skills are a mess:
Project-specific skills should be installed into your workspace in directory `.agents/skills` if you
want to share them with your team. When you install workspace skills into `.agents/skills`, chances
are that your agent will be able to discover them (there are notable exceptions, e.g. Claude Code).

| Directory | Type | Description |
| :--------------------- | :------ | :---------------------------------------------------- |
| `.agents/skills` | project | Visible by Zed agent and other agents but not Claude. |
| `~/.agents/skills` | global | Neither visible by Zed agent nor Claude. |
| `.claude/skills` | project | Visible by Claude Code only. |
| `~/.claude/skills` | global | Visible by Claude Code only. |
| `~/.config/zed/skills` | global | Visible by Zed agent only. |
Skills that are not project-specific (global skills) should be installed into your home directory.
For global skills, there is even less support for the `~/.agents/skills` directory, e.g. Claude Code
and the Zed agent do not read skills from this directory.

As a workaround, you can install skills globally into `~/.agents/skills` and create the following
symbolic links:
As a workaround, you can install global skills into `~/.agents/skills` and create a symbolic link to
whatever directory your agent requires:

- `ln -s ~/.agents/skills ~/.config/zed/skills`
- `ln -s ~/.agents/skills ~/.claude/skills`
| Agent | Symbolic link |
| ------------ | --------------------------------------------- |
| Claude Code | `ln -s ~/.agents/skills ~/.claude/skills` |
| Mistral Vibe | `ln -s ~/.agents/skills ~/.vibe/skills` |
| Zed agent | `ln -s ~/.agents/skills ~/.config/zed/skills` |

## List skills

Use `npx skills` to manage agent skills. Run
Run

```bash
npx skills list
```

to list installed project skills. Run
to list installed workspace skills. Run

```bash
npx skills list -g
Expand All @@ -59,7 +65,7 @@ Run
npx skills update
```

to update installed skills. You will be prompted if you would like to update project skills or
to update installed skills. You will be prompted if you would like to update workspace skills or
global skills.

## Remove skills
Expand All @@ -70,10 +76,19 @@ Run
npx skills remove
```

to remove a project skill. Run
to remove a workspace skill. Run

```bash
npx skills remove -g
```

to remove a global skill.

## Skills I use

| Skill | Type | Link |
| ------------------------- | --------- | -------------------------------------------------------------------------- |
| modern-web-guidance | global | https://www.skills.sh/googlechrome/modern-web-guidance/modern-web-guidance |
| nuxt-ui | workspace | https://www.skills.sh/nuxt/ui/nuxt-ui |
| svelte-code-writer | workspace | https://www.skills.sh/sveltejs/ai-tools/svelte-code-writer |
| svelte-core-bestpractices | workspace | https://www.skills.sh/sveltejs/ai-tools/svelte-core-bestpractices |
13 changes: 10 additions & 3 deletions src/routes/guides/zed/+page.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,13 @@ title: Zed guide
description: How to use Zed for agentic coding.
---

## Directories

| Directory | Type | Description |
| ---------------------- | --------- | ------------------------------------------------------------- |
| `.agents/skills` | workspace | Hooray, the Zed agent reads skills from a standard directory. |
| `~/.config/zed/skills` | global | Zed agent does not read skills from `~/.agents/skills`. |

## Shortcuts

| Shortcut | Description |
Expand Down Expand Up @@ -44,9 +51,9 @@ example, not all agents support code reviews in which you can accept or reject c

## Worktrees

Since v1, worktree support in Zed is actually usable. Using Git worktrees to isolate workspaces
within the same project is seamless. Click the branch name at the top to create a headless worktree.
Then add a branch.
Since v1, worktree support in Zed is usable. Using Git worktrees to isolate workspaces within the
same project is seamless. Click the branch name at the top to create a headless worktree. Then add a
branch.

Zed keeps all worktrees in a configurable folder. However, it is opinionated about how worktrees are
organized within that folder. But since you can switch between worktrees in the UI, you don't need
Expand Down
1 change: 1 addition & 0 deletions svelte.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ const highlighter = await createHighlighter({
'markdown',
'svelte',
'text',
'toml',
'typescript',
'yaml',
'xml'
Expand Down