You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Works for `gitlab.com` and any self-hosted instance whose hostname starts with `gitlab.`.
68
68
69
-
```console
70
-
$ export GITLAB_TOKEN=glpat-...
71
-
$ kst sync --config kasetto.yaml
69
+
```bash
70
+
export GITLAB_TOKEN=glpat-...
71
+
kst sync --config kasetto.yaml
72
72
```
73
73
74
74
### Bitbucket Cloud
@@ -105,9 +105,9 @@ All three are checked in order — the first one found is used for any Gitea-fam
105
105
106
106
Authentication also applies when you fetch a config via `--config <url>`. The token is chosen based on the URL hostname, using the same detection rules above.
Use `--dry-run` to check that sources resolve and that the plan matches expectations without touching disk:
16
+
17
+
```bash
18
+
kst sync --dry-run
19
+
```
20
+
21
+
### JSON Output for CI Logs
22
+
23
+
Use `--json` for structured logs:
24
+
25
+
```bash
26
+
kst sync --dry-run --json
27
+
```
28
+
29
+
### Avoid TUIs in Non-Interactive Environments
30
+
31
+
Kasetto will avoid interactive UIs when it detects non-interactive output, but you can force it:
32
+
33
+
- Set `NO_TUI=1`
34
+
- Or use `--plain` / `--quiet` as needed
35
+
36
+
```bash
37
+
NO_TUI=1 kst sync --dry-run --plain
38
+
```
39
+
40
+
## Exit Codes
41
+
42
+
Kasetto is designed to keep going when individual skills are missing/broken in a source, but failures that prevent reading sources/configs are treated as errors.
43
+
44
+
If you're depending on strict enforcement in CI, pair `--dry-run` with `--json` and enforce policy in the CI step based on the report.
45
+
46
+
## GitHub Actions Example
47
+
48
+
This validates a repo's `kasetto.yaml` (project scope) without writing changes:
49
+
50
+
```yaml
51
+
name: kasetto
52
+
53
+
on:
54
+
pull_request:
55
+
push:
56
+
branches: [main]
57
+
58
+
jobs:
59
+
validate:
60
+
runs-on: ubuntu-latest
61
+
steps:
62
+
- uses: actions/checkout@v4
63
+
64
+
- name: Install kasetto
65
+
run: curl -fsSL https://raw.githubusercontent.com/pivoshenko/kasetto/main/scripts/install.sh | sh
Great for sharing a single config across a team without checking it into every repository.
@@ -132,7 +132,7 @@ If you set both, `destination` wins. Use `agent` for convenience with [supported
132
132
133
133
Use `destination` when targeting an agent that isn't in the supported list.
134
134
135
-
## Scope: Global vs Project
135
+
## Scope: Global Vs Project
136
136
137
137
By default, skills are installed globally into the agent's home-directory path. Add `scope: project` to your config, or pass `--project` on the command line, to install into the current project directory instead.
**When you need this:** You have a quick "what happens if…" question about syncing skills or MCP servers.
4
+
5
+
## Will Kasetto Overwrite My MCP Entries?
6
+
7
+
No. MCP merges are **additive** and existing server entries are **never overwritten**. See [How Sync Works](./how-sync-works.md#mcp-servers-discovery-and-additive-merge).
8
+
9
+
## What Happens When Two Sources Define The Same MCP Server Name?
10
+
11
+
**First write wins** based on config order. Later sources with the same server name are skipped. See [How Sync Works](./how-sync-works.md#edge-cases).
0 commit comments