| 1 | --- |
| 2 | title: Customize |
| 3 | description: 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 |
| 7 | can reach, and what they bring with them. It has three parts, each in two |
| 8 | halves: **Yours**, what the workspace has, and **Discover**, what it can |
| 9 | add. |
| 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 | |
| 17 | Everything installable keeps the formats and the names the open ecosystem |
| 18 | uses. A marketplace is a repository with `.claude-plugin/marketplace.json`; |
| 19 | a plugin is a folder with `skills/`, `agents/`, `commands/` and `.mcp.json`; |
| 20 | a skill is a `SKILL.md` folder. g1t reads them exactly as Claude Code does |
| 21 | and invents no format of its own, so a plugin written for Claude Code |
| 22 | installs here unchanged, and what a workspace customizes reaches Claude |
| 23 | Code when it [runs on a g1t runner](#what-a-run-gets). |
| 24 | |
| 25 | Open Customize from **Apps** at the foot of the rail (the Apps page and |
| 26 | the 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 | |
| 33 | Every member of a workspace browses Customize. Only its **owners** add |
| 34 | marketplaces, install plugins, connect connectors and decide which agents |
| 35 | get what, because each of those reaches the workspace's data or spends |
| 36 | its money. Everyone else sees **Request** where an owner sees **Install** |
| 37 | or **Connect**, and asks (see [requests](#requests)). Writing and |
| 38 | importing skills stays with owners and team maintainers, as in the |
| 39 | [skill library](/guides/agent-skills/#who-can-do-what). |
| 40 | |
| 41 | Every page has a search, filters by category, by source (which |
| 42 | marketplace) 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 → |
| 48 | Skills**: g1t's foundational skills, the skills your workspace wrote, |
| 49 | imported or saved from a session, and the skills installed plugins brought. |
| 50 | Writing, 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 |
| 54 | reads publish, one card per skill, with the plugin and the marketplace it |
| 55 | comes from. Each card says whether your library has it already, and |
| 56 | whether 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 | |
| 61 | 1. Open **Customize → Skills → Discover** and find the skill, by name or |
| 62 | by what it does. |
| 63 | 2. Choose **Add**. g1t installs the plugin that carries it, at its current |
| 64 | commit, and the plugin's skills join the library. |
| 65 | 3. 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 | |
| 71 | A skill does nothing until it is available to someone. Owners can turn any |
| 72 | skill off for one agent from its **Skills** tab, as with every skill. |
| 73 | |
| 74 | ### Skills from plugins |
| 75 | |
| 76 | A 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 |
| 78 | each agent's Skills tab and in the agent's own instructions. Agents call it |
| 79 | with `use_skill` by that name, or by its bare name when only one plugin |
| 80 | brings a skill called that. A plain name always means the workspace's own |
| 81 | skill 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 | |
| 92 | When a plugin is **switched off**, its skills leave every agent that had |
| 93 | them at once, and come back when it is switched on. When it is |
| 94 | **uninstalled**, its skills and their attachments go. **Update** reads the |
| 95 | plugin again at its marketplace's current listing: each skill gets a new |
| 96 | version, and every attachment follows it. |
| 97 | |
| 98 | ## Connectors |
| 99 | |
| 100 | A **connector** is an MCP server the workspace connects once, then gives |
| 101 | to agents. **Connectors → Yours** lists the ones your workspace has, each |
| 102 | with its state and how many tools it offers, beside g1t's own integrations |
| 103 | connected here (GitHub, Linear, Jira, Sentry, Datadog, model providers and |
| 104 | the rest), which keep their own [setup pages](/guides/integrations/). |
| 105 | |
| 106 | **Connectors → Discover** is the [directory](/guides/integrations/#the-directory): |
| 107 | every tool g1t connects to, by category. A tool that publishes a remote |
| 108 | MCP server (Linear, Notion, Sentry, Stripe, Figma, Supabase, Cloudflare |
| 109 | and 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 | |
| 121 | Two connectors with the same name get numbered. A workspace keeps at most |
| 122 | 50. |
| 123 | |
| 124 | ### Signing in |
| 125 | |
| 126 | Each connector signs in the way its server asks. A directory card says |
| 127 | which, 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 | |
| 135 | A server that doesn't register clients on its own can't be signed in with |
| 136 | the browser from g1t; when it takes a key instead, add it by address with |
| 137 | a key. A server that answers a sign-in with `401` or `403` is marked, and |
| 138 | the 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 | |
| 149 | A server that speaks only the older event-stream transport isn't listed |
| 150 | until it serves the current one. |
| 151 | |
| 152 | On g1t.sh the sealing key is set. On a g1t you run yourself, the agents |
| 153 | service's `CONNECTORS_KEY` seals connectors' keys and tokens; without it, |
| 154 | open 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 | |
| 166 | Only a connected connector reaches agents. One in any other state is |
| 167 | listed, with what it needs, and gives agents nothing until it is fixed. |
| 168 | |
| 169 | ### Tools and what agents may do with them |
| 170 | |
| 171 | When a connector connects, g1t lists the server's tools and keeps the |
| 172 | first 40. Each becomes an ability on every agent that has the connector, |
| 173 | offered as `<connector>__<tool>`, with the arguments the server |
| 174 | describes, under the same [levels](/guides/agent-abilities/#the-levels) |
| 175 | as 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 | |
| 182 | A call carries the connector's sign-in. If the sign-in can't be renewed, |
| 183 | the agent is told that an owner needs to sign the connector in again, and |
| 184 | the connector shows **Problem**. Levels, Ask-first cards and the |
| 185 | [audit log](/guides/audit-log/) work exactly as for an agent's own MCP |
| 186 | servers. |
| 187 | |
| 188 | ### Who gets a connector |
| 189 | |
| 190 | A connector reaches agents through **grants**, which work like a skill's |
| 191 | attachments. 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 | |
| 199 | The same grant twice is one. An agent's **Abilities** tab lists each |
| 200 | connector that reaches it under **Connectors**, with how it has it (every |
| 201 | agent, a team, this agent) and a level for each tool, beside the MCP |
| 202 | servers added to that agent alone, marked **Only this agent**. See |
| 203 | [agent abilities](/guides/agent-abilities/#connectors). |
| 204 | |
| 205 | ### Manage a connector |
| 206 | |
| 207 | On 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 | |
| 217 | Adding, keying, signing in and out, granting, taking back and removing a |
| 218 | connector are in the audit log under `customize/connectors/<name>`. |
| 219 | |
| 220 | ## Plugins |
| 221 | |
| 222 | A **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 |
| 224 | them, and keeps the rest for Claude Code on a runner. |
| 225 | |
| 226 | ### Marketplaces |
| 227 | |
| 228 | Every workspace starts with three marketplaces, built in, kept current by |
| 229 | g1t 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 | |
| 237 | Owners 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 | |
| 248 | The marketplace is named as its `marketplace.json` names itself, unless |
| 249 | you give another name. Names Claude Code keeps for its own marketplaces |
| 250 | (and `g1t`) are refused, so `name@claude-plugins-official` always means |
| 251 | the real thing. A workspace reads at most 20 marketplaces of its own; a |
| 252 | `marketplace.json` is at most 4 MB. |
| 253 | |
| 254 | A marketplace's manifest is read when it is added, again when it is older |
| 255 | than six hours and someone opens Discover, and on **Read it again**. |
| 256 | When it can't be read, the marketplace stays listed with the problem, so |
| 257 | it can be read again later. **Remove** takes a marketplace off the |
| 258 | workspace; plugins installed from it stay installed. |
| 259 | |
| 260 | ### Where plugins come from |
| 261 | |
| 262 | Each 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 | |
| 275 | Private GitHub repositories aren't read yet. A plugin read here holds at |
| 276 | most 2,000 files and 24 MB together; a file over 2 MB is left out and |
| 277 | named on the plugin's page. Claude Code on a runner fetches the plugin |
| 278 | whole 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 |
| 283 | category, 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 | |
| 292 | A plugin's page, `…/-/customize/plugins/<name@marketplace>`, shows its |
| 293 | README, its marketplace and who owns it, its manifest (name, version, |
| 294 | license, repository), and what it brings: skills, agents, commands, MCP |
| 295 | servers, 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 | |
| 300 | 1. Open the plugin's page and choose **Install**. Owners only. |
| 301 | 2. 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. |
| 304 | 3. 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 | |
| 315 | The plugin's files aren't copied into g1t beyond its skills and |
| 316 | subagents. 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 | |
| 327 | A workspace installs at most 100 plugins. Installing, updating, switching on and |
| 328 | off and uninstalling are in the audit log under |
| 329 | `customize/plugins/<name@marketplace>`, and adding or removing a |
| 330 | marketplace under `customize/marketplaces/<name>`. |
| 331 | |
| 332 | ### What g1t is building |
| 333 | |
| 334 | g1t's own marketplace, `g1t`, is where g1t's own plugins are listed as |
| 335 | they are released. The ones announced are marked **Soon** and can't be |
| 336 | installed 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 | |
| 349 | g1t reads the files below exactly as Claude Code does, and ignores keys it |
| 350 | doesn't know, so a plugin never needs a g1t version. Paths are inside the |
| 351 | repository 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 | |
| 363 | Each 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 |
| 377 | only `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 | |
| 398 | The [skill format](/guides/agent-skills/#the-skill-format), unchanged: |
| 399 | YAML 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 | |
| 411 | A 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 | |
| 442 | A server's name is letters, digits, dots, underscores and hyphens, at |
| 443 | most 64. |
| 444 | |
| 445 | ## Requests |
| 446 | |
| 447 | Anyone who isn't an owner asks for what they need from the same place an |
| 448 | owner would add it: |
| 449 | |
| 450 | 1. Choose **Request** on a plugin, a skill from Discover, or a connector. |
| 451 | 2. Check what you are asking for: the dialog shows where it comes from and |
| 452 | that it is available. |
| 453 | 3. Say why you want it, if you like (280 characters), and choose |
| 454 | **Send request**. |
| 455 | |
| 456 | Every owner is notified. The button then reads **Requested**, and **Your |
| 457 | requests** lists it until an owner answers; you are notified when one does. |
| 458 | You can't ask twice for the same thing while a request is waiting, and you |
| 459 | can have 20 waiting at once. |
| 460 | |
| 461 | Owners 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 | |
| 470 | Answered 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 |
| 473 | own integrations). When an agent needs a connector or an integration that |
| 474 | isn't connected, it posts a **Request** card in the conversation that |
| 475 | opens the same request (see |
| 476 | [when something is missing](/guides/agent-abilities/#when-something-is-missing)). |
| 477 | Open requests also appear on owners' |
| 478 | [Home](/guides/home/#where-youre-needed). |
| 479 | |
| 480 | ## What a run gets |
| 481 | |
| 482 | When Claude Code runs a job on a [g1t runner](/guides/self-hosted-runners/), |
| 483 | it is given what the workspace customized, as the job's agent would have |
| 484 | it: every installed plugin that is switched on, to fetch at its pinned |
| 485 | commit; the library's own skills that reach the agent, as files; and the |
| 486 | connected connectors that reach it, with what signs them in. The runner |
| 487 | writes the plugins to disk and starts Claude Code with each as a plugin |
| 488 | directory, puts the skills where it reads them, and merges the connectors |
| 489 | into its MCP configuration. See |
| 490 | [what a run gets from Customize](/guides/self-hosted-runners/#what-a-run-gets-from-customize). |
| 491 | |
| 492 | Chat replies and [sessions](/guides/agent-sessions/) on g1t get the same |
| 493 | things in their own way: skills through `use_skill`, connectors as |
| 494 | abilities with levels. |
| 495 | |
| 496 | ## API |
| 497 | |
| 498 | Customize is in the REST API under `/workspaces/{workspace}/customize/…` |
| 499 | and in the MCP server as the `customize` tool, one action per thing an |
| 500 | owner does here: marketplaces, Discover, plugins and installs (installing, |
| 501 | switching off, updating and uninstalling), connectors with their keys and |
| 502 | grants. Reading needs `workspace:read`; adding, installing, connecting and |
| 503 | granting need `workspace:admin`, as a person who owns the workspace. |
| 504 | Signing a connector in with OAuth needs a browser, so it stays on the |
| 505 | site. The bundle a runner reads, |
| 506 | `GET /workspaces/{workspace}/customize/bundle`, needs `agents:run` and is |
| 507 | read with a job's agent token, since it carries the connectors' sign-ins. |
| 508 | See 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. |