Pick any line to see why it is the way it is: the commit, the pull request and issue it came from, and what the agent was thinking.
| Customize replaces the Marketplace on the site and the phone: three tabs, Skills, Connectors and Plugins, each with Yours and Discover, a search and the owners' Add menu, all kept in the address. Skills' Yours is the library (drafts, each skill with an inline Available to control that attaches it to every agent, a team or one, g1t's foundational skills, and the repository it follows); its Discover lists every skill in every marketplace's plugins, grouped by marketplace, and Add installs the plugin that brings one. Connectors' Yours is the workspace's MCP servers with their state, tools, where they reach and what an owner does with them (sign in or out, a key, list tools again, remove), beside the integrations the workspace has connected; its Discover is the directory, MCP servers first and connected in a step (the browser signs in, a key is pasted, or neither), then g1t's integrations, each person's own, and what is coming; a connector has a page, a connect page by directory entry or address, and the sign-in's return lands on it. Plugins' Yours is what the workspace installed with what each brought, its switch, Update when the marketplace moved on, and Uninstall; its Discover is every plugin, narrowed by category and marketplace and sorted by marketplace or name, with g1t's announced ones muted as Soon; a plugin's page renders its README and lists its skills (given to agents from there), its subagents (Hire opens the new-agent form filled from one), its servers and what only Claude Code uses. Marketplaces have a page; requests moved under Customize and name plugins, skills and connectors. Apps lists installed plugins and connectors beside integrations, ⌘K, the Apps page, the phone's More and the breadcrumbs say Customize, and the Marketplace's and the skill library's old addresses redirect. An agent's Abilities tab shows the connectors that reach it as Connectors, with per-tool levels, and keeps Add an MCP server under Only this agent; Templates lists the agents installed plugins bring; an agent's Skills tab says which plugin a skill came from. The phone's deep links open Customize's tabs. | 1 | import { pluginRef } from "@g1t/contracts/claude-plugin"; |
| The phone app: Chat in full with phone notifications, plus Code and Customize (#4) | 2 | import { connectorPath, connectorsFor } from "@g1t/contracts/connectors"; |
| 3 | import { CUSTOMIZE, type CustomizeSection, customizePath } from "@g1t/contracts/customize"; | |
| 4 | import { FIRST_PARTY_EXTENSIONS } from "@g1t/contracts/marketplace"; | |
| 5 | import { FOUNDATIONAL_SKILLS } from "@g1t/contracts/skills"; | |
| 6 | ||
| 7 | /** | |
| 8 | * Customize on the phone: Skills, Connectors and Plugins | |
| 9 | * (packages/contracts/src/customize.ts). What is listed comes from the | |
| 10 | * catalogs every g1t ships with; a workspace's own library, connections | |
| 11 | * and installs are read on the site for now, and added here once the API | |
| Customize replaces the Marketplace on the site and the phone: three tabs, Skills, Connectors and Plugins, each with Yours and Discover, a search and the owners' Add menu, all kept in the address. Skills' Yours is the library (drafts, each skill with an inline Available to control that attaches it to every agent, a team or one, g1t's foundational skills, and the repository it follows); its Discover lists every skill in every marketplace's plugins, grouped by marketplace, and Add installs the plugin that brings one. Connectors' Yours is the workspace's MCP servers with their state, tools, where they reach and what an owner does with them (sign in or out, a key, list tools again, remove), beside the integrations the workspace has connected; its Discover is the directory, MCP servers first and connected in a step (the browser signs in, a key is pasted, or neither), then g1t's integrations, each person's own, and what is coming; a connector has a page, a connect page by directory entry or address, and the sign-in's return lands on it. Plugins' Yours is what the workspace installed with what each brought, its switch, Update when the marketplace moved on, and Uninstall; its Discover is every plugin, narrowed by category and marketplace and sorted by marketplace or name, with g1t's announced ones muted as Soon; a plugin's page renders its README and lists its skills (given to agents from there), its subagents (Hire opens the new-agent form filled from one), its servers and what only Claude Code uses. Marketplaces have a page; requests moved under Customize and name plugins, skills and connectors. Apps lists installed plugins and connectors beside integrations, ⌘K, the Apps page, the phone's More and the breadcrumbs say Customize, and the Marketplace's and the skill library's old addresses redirect. An agent's Abilities tab shows the connectors that reach it as Connectors, with per-tool levels, and keeps Add an MCP server under Only this agent; Templates lists the agents installed plugins bring; an agent's Skills tab says which plugin a skill came from. The phone's deep links open Customize's tabs. | 12 | * serves them. Every item opens where the site shows it: a connector on |
| 13 | * Connectors' Discover (an MCP server on its connect page), g1t's own | |
| 14 | * announced plugins on their pages in the `g1t` marketplace. | |
| The phone app: Chat in full with phone notifications, plus Code and Customize (#4) | 15 | */ |
| 16 | ||
| 17 | export type CustomizeItem = { | |
| 18 | id: string; | |
| 19 | name: string; | |
| 20 | description: string; | |
| 21 | /** Available, Soon, or what else a listing says about itself. */ | |
| 22 | status: "available" | "soon" | "built-in"; | |
| 23 | /** A group to list it under. */ | |
| 24 | group: string; | |
| 25 | /** The site page that sets it up, for this workspace. */ | |
| 26 | sitePath: string; | |
| 27 | }; | |
| 28 | ||
| 29 | export function customizeItems(section: CustomizeSection, workspace: string): CustomizeItem[] { | |
| 30 | const fallback = customizePath(section, workspace); | |
| 31 | if (section === "skills") { | |
| 32 | return FOUNDATIONAL_SKILLS.map((skill) => ({ | |
| 33 | id: skill.id, | |
| 34 | name: skill.name, | |
| 35 | description: skill.description, | |
| 36 | status: "built-in" as const, | |
| 37 | group: "In every agent", | |
| 38 | sitePath: fallback, | |
| 39 | })); | |
| 40 | } | |
| 41 | if (section === "connectors") { | |
| 42 | return connectorsFor("workspace").map((connector) => ({ | |
| 43 | id: connector.id, | |
| 44 | name: connector.name, | |
| 45 | description: connector.description, | |
| 46 | status: connector.status, | |
| 47 | group: connector.status === "available" ? "Connect now" : "Coming", | |
| Customize replaces the Marketplace on the site and the phone: three tabs, Skills, Connectors and Plugins, each with Yours and Discover, a search and the owners' Add menu, all kept in the address. Skills' Yours is the library (drafts, each skill with an inline Available to control that attaches it to every agent, a team or one, g1t's foundational skills, and the repository it follows); its Discover lists every skill in every marketplace's plugins, grouped by marketplace, and Add installs the plugin that brings one. Connectors' Yours is the workspace's MCP servers with their state, tools, where they reach and what an owner does with them (sign in or out, a key, list tools again, remove), beside the integrations the workspace has connected; its Discover is the directory, MCP servers first and connected in a step (the browser signs in, a key is pasted, or neither), then g1t's integrations, each person's own, and what is coming; a connector has a page, a connect page by directory entry or address, and the sign-in's return lands on it. Plugins' Yours is what the workspace installed with what each brought, its switch, Update when the marketplace moved on, and Uninstall; its Discover is every plugin, narrowed by category and marketplace and sorted by marketplace or name, with g1t's announced ones muted as Soon; a plugin's page renders its README and lists its skills (given to agents from there), its subagents (Hire opens the new-agent form filled from one), its servers and what only Claude Code uses. Marketplaces have a page; requests moved under Customize and name plugins, skills and connectors. Apps lists installed plugins and connectors beside integrations, ⌘K, the Apps page, the phone's More and the breadcrumbs say Customize, and the Marketplace's and the skill library's old addresses redirect. An agent's Abilities tab shows the connectors that reach it as Connectors, with per-tool levels, and keeps Add an MCP server under Only this agent; Templates lists the agents installed plugins bring; an agent's Skills tab says which plugin a skill came from. The phone's deep links open Customize's tabs. | 48 | sitePath: connector.href ? connectorPath(connector.href, workspace) : `${fallback}?view=discover&directory=${encodeURIComponent(connector.id)}`, |
| The phone app: Chat in full with phone notifications, plus Code and Customize (#4) | 49 | })); |
| 50 | } | |
| 51 | return FIRST_PARTY_EXTENSIONS.map((extension) => ({ | |
| 52 | id: extension.id, | |
| 53 | name: extension.name, | |
| 54 | description: extension.tagline, | |
| 55 | status: extension.status, | |
| 56 | group: `${extension.publisher.name} · ${extension.category}`, | |
| Customize replaces the Marketplace on the site and the phone: three tabs, Skills, Connectors and Plugins, each with Yours and Discover, a search and the owners' Add menu, all kept in the address. Skills' Yours is the library (drafts, each skill with an inline Available to control that attaches it to every agent, a team or one, g1t's foundational skills, and the repository it follows); its Discover lists every skill in every marketplace's plugins, grouped by marketplace, and Add installs the plugin that brings one. Connectors' Yours is the workspace's MCP servers with their state, tools, where they reach and what an owner does with them (sign in or out, a key, list tools again, remove), beside the integrations the workspace has connected; its Discover is the directory, MCP servers first and connected in a step (the browser signs in, a key is pasted, or neither), then g1t's integrations, each person's own, and what is coming; a connector has a page, a connect page by directory entry or address, and the sign-in's return lands on it. Plugins' Yours is what the workspace installed with what each brought, its switch, Update when the marketplace moved on, and Uninstall; its Discover is every plugin, narrowed by category and marketplace and sorted by marketplace or name, with g1t's announced ones muted as Soon; a plugin's page renders its README and lists its skills (given to agents from there), its subagents (Hire opens the new-agent form filled from one), its servers and what only Claude Code uses. Marketplaces have a page; requests moved under Customize and name plugins, skills and connectors. Apps lists installed plugins and connectors beside integrations, ⌘K, the Apps page, the phone's More and the breadcrumbs say Customize, and the Marketplace's and the skill library's old addresses redirect. An agent's Abilities tab shows the connectors that reach it as Connectors, with per-tool levels, and keeps Add an MCP server under Only this agent; Templates lists the agents installed plugins bring; an agent's Skills tab says which plugin a skill came from. The phone's deep links open Customize's tabs. | 57 | sitePath: customizePath("plugins", workspace, encodeURIComponent(pluginRef(extension.id, "g1t"))), |
| The phone app: Chat in full with phone notifications, plus Code and Customize (#4) | 58 | })); |
| 59 | } | |
| 60 | ||
| 61 | export { CUSTOMIZE, customizePath, type CustomizeSection }; |
This file's history is long; its oldest lines are credited to the oldest commit read.