Skip to content

Where people and agents ship software together. The open-source git platform for the whole job: issues, agents, checks and deploys to the edge.

g1t.sh
515 linesCodeBlameRaw
1---
2title: Customize
3description: One place for what shapes how a workspace's agents work - Skills, Connectors and Plugins, each with what you have and what you can add. Everything installs in the formats Claude Code reads, so public marketplaces, plugins, skills, subagents and MCP servers work on g1t as they are, and what you customize reaches Claude Code when it runs on a g1t runner.
4---
5
6**Customize** is where a workspace shapes what its agents know, what they
7can reach, and what they bring with them. It has three parts, each in two
8halves: **Yours**, what the workspace has, and **Discover**, what it can
9add.
10
11| Part | What it holds |
12| --- | --- |
13| **Skills** | What agents know how to do: g1t's [foundational skills](/guides/agent-skills/#the-foundational-skills), your workspace's [skill library](/guides/agent-skills/#the-skill-library), and every skill published in a marketplace. |
14| **Connectors** | What agents can reach: MCP servers connected once and given to agents, and g1t's own [integrations](/guides/integrations/) (GitHub, trackers, alerts, model providers). |
15| **Plugins** | Skills, agents and connectors published together, from any marketplace in the open plugin format. |
16
17Everything installable keeps the formats and the names the open ecosystem
18uses. A marketplace is a repository with `.claude-plugin/marketplace.json`;
19a plugin is a folder with `skills/`, `agents/`, `commands/` and `.mcp.json`;
20a skill is a `SKILL.md` folder. g1t reads them exactly as Claude Code does
21and invents no format of its own, so a plugin written for Claude Code
22installs here unchanged, and what a workspace customizes reaches Claude
23Code when it [runs on a g1t runner](#what-a-run-gets).
24
25Open Customize from **Apps** at the foot of the rail (the Apps page and
26the launcher lead here), from **More** on a phone, or with
27<kbd>Ctrl</kbd> <kbd>K</kbd> and *Customize*. Its address is
28`g1t.sh/<workspace>/-/customize`; each part has its own, such as
29`…/-/customize/skills`. The old `…/-/marketplace` addresses arrive here.
30
31## Who adds things
32
33Every member of a workspace browses Customize. Only its **owners** add
34marketplaces, install plugins, connect connectors and decide which agents
35get what, because each of those reaches the workspace's data or spends
36its money. Everyone else sees **Request** where an owner sees **Install**
37or **Connect**, and asks (see [requests](#requests)). Writing and
38importing skills stays with owners and team maintainers, as in the
39[skill library](/guides/agent-skills/#who-can-do-what).
40
41Every page has a search, filters by category, by source (which
42marketplace) and by availability, and an **Add** menu: **Write a skill**,
43**Import**, **Add a marketplace** and **Add a connector by URL**.
44
45## Skills
46
47**Skills → Yours** is the skill library, the same one as **Agents →
48Skills**: g1t's foundational skills, the skills your workspace wrote,
49imported or saved from a session, and the skills installed plugins brought.
50Writing, importing, versions and the linked repository are in
51[agent skills](/guides/agent-skills/).
52
53**Skills → Discover** lists every skill the marketplaces your workspace
54reads publish, one card per skill, with the plugin and the marketplace it
55comes from. Each card says whether your library has it already, and
56whether the plugin it is in can be installed here (see
57[what g1t can read](#where-plugins-come-from)).
58
59### Add a skill from Discover
60
611. Open **Customize → Skills → Discover** and find the skill, by name or
62 by what it does.
632. Choose **Add**. g1t installs the plugin that carries it, at its current
64 commit, and the plugin's skills join the library.
653. Choose who gets it under **Available to**: every agent in the
66 workspace, a team (every agent on it), or one agent. This is a skill
67 [attachment](/guides/agent-skills/#the-skill-library), so the same
68 rules apply: owners attach anywhere, team maintainers on the teams they
69 maintain.
70
71A skill does nothing until it is available to someone. Owners can turn any
72skill off for one agent from its **Skills** tab, as with every skill.
73
74### Skills from plugins
75
76A skill a plugin brings is named `plugin:skill`, after the plugin's name
77(`pdf@anthropic-agent-skills` brings `pdf:pdf`), on the library's page, on
78each agent's Skills tab and in the agent's own instructions. Agents call it
79with `use_skill` by that name, or by its bare name when only one plugin
80brings a skill called that. A plain name always means the workspace's own
81skill first.
82
83| | A skill written here | A skill from a plugin |
84| --- | --- | --- |
85| Name | Lowercase letters, digits and single hyphens, at most 64 characters; the foundational skills' names are taken | As Claude Code takes it: letters, digits, dots, underscores and hyphens, at most 64, case kept; may reuse a foundational name, since it is always called as `plugin:name` |
86| Edited | In the editor, or from the linked repository | Read-only. It changes when the plugin is reinstalled at a newer commit, and leaves with the plugin |
87| Size | 1 MB and 200 files | 1.5 MB and 1,000 files kept here. A larger folder keeps its text and leaves its biggest files out, binaries first, each named on the plugin's page; Claude Code on a runner gets the whole plugin |
88| `description` | At most 1,024 characters | Kept as written; a longer one is shortened for the listing |
89| `tools:` | Only tools agents have are accepted | Tools agents don't have are kept aside rather than refused |
90| `commands/*.md` | — | Each command file becomes a one-file skill named after the file, its `description` (or first line) saying when to use it |
91
92When a plugin is **switched off**, its skills leave every agent that had
93them at once, and come back when it is switched on. When it is
94**uninstalled**, its skills and their attachments go. **Update** reads the
95plugin again at its marketplace's current listing: each skill gets a new
96version, and every attachment follows it.
97
98## Connectors
99
100A **connector** is an MCP server the workspace connects once, then gives
101to agents. **Connectors → Yours** lists the ones your workspace has, each
102with its state and how many tools it offers, beside g1t's own integrations
103connected here (GitHub, Linear, Jira, Sentry, Datadog, model providers and
104the rest), which keep their own [setup pages](/guides/integrations/).
105
106**Connectors → Discover** is the [directory](/guides/integrations/#the-directory):
107every tool g1t connects to, by category. A tool that publishes a remote
108MCP server (Linear, Notion, Sentry, Stripe, Figma, Supabase, Cloudflare
109and more) is connected from here; an integration g1t built itself
110(trackers, alerts, model providers) opens its own page; one marked
111**Soon** can be asked for.
112
113### Where a connector comes from
114
115| From | How |
116| --- | --- |
117| **The directory** | Choose the tool and **Connect**. g1t knows its address and how it signs in. |
118| **A plugin** | A plugin's `.mcp.json` names servers. Installing it adds each remote (`http` or `sse`) server as a connector, named *Plugin: server*, waiting for an owner to sign in or paste a key, unless it is open. A `stdio` server runs only where Claude Code runs, and is marked so. |
119| **An address** | **Add a connector by URL**: a name (2 to 32 lowercase letters, digits and hyphens) and an HTTPS address on a public host, with how it signs in. |
120
121Two connectors with the same name get numbered. A workspace keeps at most
12250.
123
124### Signing in
125
126Each connector signs in the way its server asks. A directory card says
127which, and anything to know first, such as where a key comes from:
128
129| Sign-in | What happens |
130| --- | --- |
131| **Browser** | OAuth. g1t finds the server's authorization server from the server's own metadata, registers itself as a client there when the server allows it, and sends you to sign in; the sign-in uses PKCE and comes back to g1t with a code, which g1t exchanges for tokens. Tokens are kept sealed and renewed before they expire. A sign-in that takes more than 15 minutes is started again. |
132| **Key** | A key an owner pastes, sent as a header (`Authorization` unless the server names another). The key is kept sealed and never shown again. |
133| **Open** | The server needs nothing. |
134
135A server that doesn't register clients on its own can't be signed in with
136the browser from g1t; when it takes a key instead, add it by address with
137a key. A server that answers a sign-in with `401` or `403` is marked, and
138the connector asks to be signed in again or for its key to be checked.
139
140#### What each directory server needs
141
142| Sign-in | Servers |
143| --- | --- |
144| **Browser**, with g1t registering itself as a client | Atlassian, Canva, Cloudflare, Figma, Hugging Face, Intercom, Linear, Neon, Notion, PayPal, PostHog, Sentry, Stripe, Supabase and Vercel |
145| **Browser**, but only for apps registered with them | Asana and HubSpot. g1t isn't registered with them yet, so signing in from here fails until it is; their cards say so |
146| **Key** | GitHub's MCP server (a personal access token) and Zapier (the token from its MCP settings), each pasted as `Bearer <token>` |
147| **Open** | Cloudflare docs, Context7, DeepWiki and Microsoft Learn |
148
149A server that speaks only the older event-stream transport isn't listed
150until it serves the current one.
151
152On g1t.sh the sealing key is set. On a g1t you run yourself, the agents
153service's `CONNECTORS_KEY` seals connectors' keys and tokens; without it,
154open servers work and nothing that signs in can be kept. See
155[run g1t yourself](/guides/self-hosting/).
156
157### States
158
159| State | What it means |
160| --- | --- |
161| **Connected** | Its tools were listed and agents that have it can use them. |
162| **Needs sign-in** | A browser sign-in hasn't been done, or was signed out. |
163| **Needs a key** | A key hasn't been pasted yet. |
164| **Problem** | Its last check or renewal failed; the connector says why. **List its tools again** checks again. |
165
166Only a connected connector reaches agents. One in any other state is
167listed, with what it needs, and gives agents nothing until it is fixed.
168
169### Tools and what agents may do with them
170
171When a connector connects, g1t lists the server's tools and keeps the
172first 40. Each becomes an ability on every agent that has the connector,
173offered as `<connector>__<tool>`, with the arguments the server
174describes, under the same [levels](/guides/agent-abilities/#the-levels)
175as every ability:
176
177- a tool the server marks read-only is a **read**, Alone by default;
178- any other tool, including one the server says nothing about, is a
179 **write outside g1t**, Ask first by default: the agent posts a card
180 saying what it would do, and waits for Allow or Deny.
181
182A call carries the connector's sign-in. If the sign-in can't be renewed,
183the agent is told that an owner needs to sign the connector in again, and
184the connector shows **Problem**. Levels, Ask-first cards and the
185[audit log](/guides/audit-log/) work exactly as for an agent's own MCP
186servers.
187
188### Who gets a connector
189
190A connector reaches agents through **grants**, which work like a skill's
191attachments. Open the connector and choose **Give to**:
192
193| Give to | Who gets it | Who can |
194| --- | --- | --- |
195| Every agent in the workspace | Every agent, `@g1t` included | Owners |
196| A team | Every agent on the team | Owners |
197| One agent | That agent | Owners |
198
199The same grant twice is one. An agent's **Abilities** tab lists each
200connector that reaches it under **Connectors**, with how it has it (every
201agent, a team, this agent) and a level for each tool, beside the MCP
202servers added to that agent alone, marked **Only this agent**. See
203[agent abilities](/guides/agent-abilities/#connectors).
204
205### Manage a connector
206
207On a connector's page, owners can:
208
209- **List its tools again**, to pick up a server that changed, or to check
210 one that showed a problem.
211- **Sign out** (browser sign-ins): the tokens go, and the connector needs a
212 sign-in again. **Replace the key** (keys): the new key is sealed and the
213 tools listed again.
214- **Take back** a grant, or **Remove** the connector, which removes every
215 grant with it. Uninstalling a plugin removes the connectors it brought.
216
217Adding, keying, signing in and out, granting, taking back and removing a
218connector are in the audit log under `customize/connectors/<name>`.
219
220## Plugins
221
222A **plugin** is a folder in the open plugin format, listed in a
223**marketplace**. Installing one spreads its parts to where g1t's agents use
224them, and keeps the rest for Claude Code on a runner.
225
226### Marketplaces
227
228Every workspace starts with three marketplaces, built in, kept current by
229g1t and not removable:
230
231| Marketplace | What it lists |
232| --- | --- |
233| `claude-plugins-official` | Anthropic's reviewed plugins: tools, connectors and skills from Anthropic and the companies behind them. |
234| `anthropic-agent-skills` | Anthropic's skills: documents, spreadsheets, presentations, PDFs, design, testing and more. |
235| `g1t` | g1t's own plugins: what g1t is building for what a team does besides code (see [what g1t is building](#what-g1t-is-building)). |
236
237Owners add more with **Add a marketplace**, from **Plugins** or
238`…/-/customize/marketplaces`, in the forms Claude Code's
239`plugin marketplace add` takes:
240
241| Type | Read as |
242| --- | --- |
243| `owner/repo`, `owner/repo#ref` or `owner/repo@ref` | A public repository on GitHub, or a repository on this g1t when `owner/repo` names one you can read |
244| A `github.com` address, with or without `.git` or `/tree/<ref>` | The same repository on GitHub |
245| A git address on this g1t | The repository here |
246| A link ending in `marketplace.json` | That file alone. Plugins it lists by a relative path can't be reached this way, so add such a marketplace by its repository instead |
247
248The marketplace is named as its `marketplace.json` names itself, unless
249you give another name. Names Claude Code keeps for its own marketplaces
250(and `g1t`) are refused, so `name@claude-plugins-official` always means
251the real thing. A workspace reads at most 20 marketplaces of its own; a
252`marketplace.json` is at most 4 MB.
253
254A marketplace's manifest is read when it is added, again when it is older
255than six hours and someone opens Discover, and on **Read it again**.
256When it can't be read, the marketplace stays listed with the problem, so
257it can be read again later. **Remove** takes a marketplace off the
258workspace; plugins installed from it stay installed.
259
260### Where plugins come from
261
262Each plugin entry in a marketplace says where its files are (Claude Code's
263`source`). g1t reads some of those places and not others:
264
265| Source | On g1t |
266| --- | --- |
267| A relative path inside the marketplace's repository | Read, when the marketplace is on GitHub or on this g1t |
268| `github` (`owner/repo`, with a `ref` or a `sha`) | Read: public repositories, at the commit the ref names |
269| `url` or `git-subdir` on github.com or on this g1t | Read |
270| `archive` (a zip over HTTPS, with an optional `sha256`) | Read; the checksum is checked when given |
271| `npm` | Listed as **Not available here**: g1t doesn't install from npm yet. It still works in Claude Code |
272| `command` | Listed as **Not available here**: it is produced by a command on the installing machine, which g1t can't run. It still works in Claude Code |
273| A git host other than GitHub or this g1t | Listed as **Not available here** |
274
275Private GitHub repositories aren't read yet. A plugin read here holds at
276most 2,000 files and 24 MB together; a file over 2 MB is left out and
277named on the plugin's page. Claude Code on a runner fetches the plugin
278whole for itself, so nothing is lost there.
279
280### Discover and a plugin's page
281
282**Plugins → Discover** lists every plugin every marketplace lists, by
283category, each with its availability:
284
285| Availability | What it means |
286| --- | --- |
287| **Available** | Installable now. Owners see **Install**; everyone else **Request**. |
288| **Installed**, or **Switched off** | The workspace has it. |
289| **Not available here** | g1t can't fetch it, with why (above). |
290| **Soon** | g1t's own, announced but not released. Nothing can be pressed. |
291
292A plugin's page, `…/-/customize/plugins/<name@marketplace>`, shows its
293README, its marketplace and who owns it, its manifest (name, version,
294license, repository), and what it brings: skills, agents, commands, MCP
295servers, and whether it carries hooks, LSP servers, output styles or
296`bin/`. Anything that couldn't be read is listed too.
297
298### Install a plugin
299
3001. Open the plugin's page and choose **Install**. Owners only.
3012. g1t fetches the plugin at a **pinned commit**: the commit the
302 marketplace's `sha` or `ref` names, or the head it is at now. The
303 install remembers that commit; the plugin never changes under you.
3043. Each part goes where g1t's agents use it:
305
306| In the plugin | Becomes |
307| --- | --- |
308| `skills/<name>/SKILL.md` | A library skill, `plugin:name`, read-only, ready to be made available to agents |
309| `commands/<name>.md` | A one-file skill, `plugin:name` |
310| `agents/<name>.md` | A template under **Agents → Templates → From plugins**, to [hire an agent from](/guides/agents/#role-templates) |
311| `.mcp.json` servers of type `http` or `sse` | A connector each, waiting for an owner to sign in or paste a key |
312| `.mcp.json` servers of type `stdio` | Marked **Claude Code only**; nothing on g1t's agents |
313| `hooks/hooks.json`, `.lsp.json`, `output-styles/`, `bin/` | Kept for Claude Code on a runner, which fetches the plugin whole at the same commit |
314
315The plugin's files aren't copied into g1t beyond its skills and
316subagents. A runner fetches them when a job runs (see
317[what a run gets](#what-a-run-gets)).
318
319### Switch off, uninstall and update
320
321| | |
322| --- | --- |
323| **Switch off** | The kill switch. The plugin's skills leave every agent at once, its agents leave Templates, the connectors it brought stop reaching agents, and runners stop getting it. **Switch on** brings them all back. |
324| **Uninstall** | Its skills and their attachments go, and the connectors it brought are removed. The record of who installed and removed it stays. |
325| **Update** | Shown as **Update available** when its marketplace lists a newer version or commit than the one installed. An install never moves on its own. **Update** reads the plugin again at that commit: its skills get new versions and their attachments follow, skills it no longer has are archived, its agents and connectors are refreshed (a connector it already brought is left as it is), and the install's version and commit move. |
326
327A workspace installs at most 100 plugins. Installing, updating, switching on and
328off and uninstalling are in the audit log under
329`customize/plugins/<name@marketplace>`, and adding or removing a
330marketplace under `customize/marketplaces/<name>`.
331
332### What g1t is building
333
334g1t's own marketplace, `g1t`, is where g1t's own plugins are listed as
335they are released. The ones announced are marked **Soon** and can't be
336installed until their first release:
337
338| Plugin | What it adds |
339| --- | --- |
340| **Mail** | Email on your own domain, with shared inboxes agents work in. |
341| **Support** | Conversations, escalations, macros and a knowledge base; bug reports become issues in Code. |
342| **CRM** | Accounts, deals by stage and a forecast, kept current by agents. |
343| **Recruiting** | Openings, candidates, scorecards and interview loops. Agents screen; people decide. |
344| **On-call** | Rotations, pages and incidents. |
345| **Helpdesk bridge**, **CRM bridge**, **ERP bridge** | Each bridges a system your team already runs, so agents work across it and g1t together. Anything that changes money or stock waits for a person. |
346
347## The formats
348
349g1t reads the files below exactly as Claude Code does, and ignores keys it
350doesn't know, so a plugin never needs a g1t version. Paths are inside the
351repository or the plugin's folder.
352
353### `.claude-plugin/marketplace.json`
354
355| Key | Required | What it is |
356| --- | --- | --- |
357| `name` | Yes | The marketplace's name: letters, digits, `.`, `_` and `-`, starting with a letter or digit, at most 64. Plugins are `name@marketplace` by it. |
358| `owner` | Yes | `{ "name", "email", "url" }`, or a name alone. |
359| `plugins` | Yes | The plugins it lists (below). An entry that can't be read is noted, not refused, and the others are listed. |
360| `description`, `version` | No | Shown on the marketplace. `metadata.description` and `metadata.version` are read too. |
361| `metadata.pluginRoot` | No | The folder bare plugin paths resolve under. |
362
363Each entry in `plugins`:
364
365| Key | Required | What it is |
366| --- | --- | --- |
367| `name` | Yes | The plugin's name, like `pr-review-toolkit`: letters, digits, `.`, `_` and `-`, at most 64. Listed once per marketplace. |
368| `source` | Yes | A relative path (`./plugins/pdf`), or an object: `{ "source": "github", "repo", "ref", "sha" }`, `url`, `git-subdir` (`url`, `path`), `archive` (`url`, `sha256`), `npm` (`package`, `version`), `command` (`command`). See [where plugins come from](#where-plugins-come-from). |
369| `description`, `version`, `author`, `homepage`, `repository`, `license`, `keywords`, `category`, `tags`, `displayName` | No | Shown on the card and the page. |
370| `skills`, `commands`, `agents` | No | Component paths, added to the plugin's standard folders. A skills-only plugin that names its skills here is listed in Discover's Skills without being fetched. |
371| `mcpServers` | No | Servers, in `.mcp.json`'s shape, for a plugin without a `plugin.json`. |
372| `strict` | No | `false` means the entry names its components outright and the standard folders aren't read, as a marketplace that keeps many plugins in one repository does. |
373
374### `.claude-plugin/plugin.json` and the plugin's layout
375
376`plugin.json` is optional: a folder with the layout alone is a plugin, and
377only `name` is required when the file is there.
378
379| Key | What it is |
380| --- | --- |
381| `name` | The plugin's name, as above. |
382| `displayName`, `version`, `description`, `author`, `homepage`, `repository`, `license`, `keywords` | Shown on the page. |
383| `skills`, `commands`, `agents`, `hooks` | Component paths besides the standard folders (`./` is kept off; `.` is the root). |
384| `mcpServers` | Servers inline, in `.mcp.json`'s shape, or a path to a file holding them. |
385| `lspServers` | Whether it brings LSP servers (Claude Code only). |
386
387| In the folder | What g1t does with it |
388| --- | --- |
389| `skills/<name>/SKILL.md` | A skill each |
390| `commands/*.md` | A one-file skill each |
391| `agents/*.md` | A hireable template each |
392| `.mcp.json` | Connectors (remote servers) |
393| `hooks/hooks.json`, `.lsp.json`, `output-styles/`, `bin/` | Kept for Claude Code on a runner |
394| `README.md` | Shown on the plugin's page |
395
396### `SKILL.md`
397
398The [skill format](/guides/agent-skills/#the-skill-format), unchanged:
399YAML front-matter, then the instructions.
400
401| Key | Required | What it is |
402| --- | --- | --- |
403| `name` | Yes (for a plugin's skill, the folder's name when absent) | The skill's name. |
404| `description` | Yes | When to use it, at most 1,024 characters. |
405| `license`, `compatibility`, `metadata`, `allowed-tools` | No | Kept as written; change nothing. |
406| `tools` | No | g1t's own key: the agent tools the skill uses. |
407| `requires_computer` | No | g1t's own key: `true` when the skill needs the agent's own computer. |
408
409### `agents/<name>.md`
410
411A subagent file: front-matter, then the system prompt as the body. Both
412`name` and `description` are required, and the body can't be empty.
413
414| Key | What it is | On g1t |
415| --- | --- | --- |
416| `name` | At most 256 characters, no colon, not starting with a hyphen | The template's name, `plugin:name` |
417| `description` | When to use it | The template's description |
418| `model` | The model it prefers | Kept with the template, for the agent's model limits |
419| `tools`, `disallowedTools` | Claude Code's or MCP tool names, as a list or separated by commas | Kept with the template; g1t's agents use g1t's own tools and abilities |
420| `skills`, `mcpServers`, `color` | Skills to preload, servers it uses, its colour | Kept as written |
421| The body | The system prompt | The agent's instructions when you hire from it |
422
423### `.mcp.json`
424
425```json
426{
427 "mcpServers": {
428 "linear": { "type": "http", "url": "https://mcp.linear.app/mcp" },
429 "search": { "type": "sse", "url": "https://example.com/sse", "headers": { "Authorization": "Bearer ${SEARCH_KEY}" } },
430 "local": { "command": "npx", "args": ["-y", "some-server"] }
431 }
432}
433```
434
435| Server | On g1t |
436| --- | --- |
437| `type: http` (or `streamable-http`) or `sse`, with a `url` | A connector. One whose `url` or `headers` reference a `${VARIABLE}` asks for a key; one without asks for a browser sign-in. |
438| `type: stdio`, or a `command` with no type | Claude Code only. |
439| A `url` with no `type` | Noted as a problem: a remote server says its type. |
440| `ws`, `sdk` | Not a connector. |
441
442A server's name is letters, digits, dots, underscores and hyphens, at
443most 64.
444
445## Requests
446
447Anyone who isn't an owner asks for what they need from the same place an
448owner would add it:
449
4501. Choose **Request** on a plugin, a skill from Discover, or a connector.
4512. Check what you are asking for: the dialog shows where it comes from and
452 that it is available.
4533. Say why you want it, if you like (280 characters), and choose
454 **Send request**.
455
456Every owner is notified. The button then reads **Requested**, and **Your
457requests** lists it until an owner answers; you are notified when one does.
458You can't ask twice for the same thing while a request is waiting, and you
459can have 20 waiting at once.
460
461Owners answer requests from **Requests** in Customize's header, at
462`…/-/customize/requests`, which shows how many are waiting:
463
464| | |
465| --- | --- |
466| **Install** or **Connect** | Opens where it is added. Installing a plugin, or signing a connector in, answers every request for it by itself. |
467| **Mark added** | After you added it another way. |
468| **Turn down** | The person who asked is told. They can ask again. |
469
470Answered requests stay listed for 30 days. A request names its listing as
471`plugin:<name@marketplace>`, `skill:<name@marketplace>/<skill>`,
472`connector:<id>` (from the directory) or `integration:<id>` (one of g1t's
473own integrations). When an agent needs a connector or an integration that
474isn't connected, it posts a **Request** card in the conversation that
475opens the same request (see
476[when something is missing](/guides/agent-abilities/#when-something-is-missing)).
477Open requests also appear on owners'
478[Home](/guides/home/#where-youre-needed).
479
480## What a run gets
481
482When Claude Code runs a job on a [g1t runner](/guides/self-hosted-runners/),
483it is given what the workspace customized, as the job's agent would have
484it: every installed plugin that is switched on, to fetch at its pinned
485commit; the library's own skills that reach the agent, as files; and the
486connected connectors that reach it, with what signs them in. The runner
487writes the plugins to disk and starts Claude Code with each as a plugin
488directory, puts the skills where it reads them, and merges the connectors
489into its MCP configuration. See
490[what a run gets from Customize](/guides/self-hosted-runners/#what-a-run-gets-from-customize).
491
492Chat replies and [sessions](/guides/agent-sessions/) on g1t get the same
493things in their own way: skills through `use_skill`, connectors as
494abilities with levels.
495
496## API
497
498Customize is in the REST API under `/workspaces/{workspace}/customize/…`
499and in the MCP server as the `customize` tool, one action per thing an
500owner does here: marketplaces, Discover, plugins and installs (installing,
501switching off, updating and uninstalling), connectors with their keys and
502grants. Reading needs `workspace:read`; adding, installing, connecting and
503granting need `workspace:admin`, as a person who owns the workspace.
504Signing a connector in with OAuth needs a browser, so it stays on the
505site. The bundle a runner reads,
506`GET /workspaces/{workspace}/customize/bundle`, needs `agents:run` and is
507read with a job's agent token, since it carries the connectors' sign-ins.
508See the [MCP tools](/reference/mcp/) and the [API reference](/reference/api/).
509
510## Next
511
512- [Agent skills](/guides/agent-skills/): the library, the skill format, versions and the linked repository.
513- [Agent abilities](/guides/agent-abilities/): the levels every connector's tools run under.
514- [Agents](/guides/agents/): hiring an agent from a plugin's template.
515- [Self-hosted runners](/guides/self-hosted-runners/): where what you customize reaches Claude Code.