Universal Installer Skill
The successor to skill-installer. Installs the whole fleet contribution surface
into agent-tool directories by copy (default) or symlink (--symlink), in
one entry point per artifact type:
- Skills, skill-graphs, skill-workflows — into each target tool's skill directory
(unchanged behavior from
skill-installer; every capability below is additive).
- Ontologies + system prompts — the other two legs of the
agent_utilities.*_providers entry-point federation (CONCEPT:AU-KG.ontology.federation-provider-leg /
CONCEPT:AU-OS.deployment.modular-skill-prompt-contribution), materialized into the canonical
agent-utilities XDG tree ($XDG_DATA_HOME/agent-utilities/{prompts,ontologies}/<provider>/…)
so the KG/epistemic-graph side can ingest them — see "Ontology & prompt
installation" below.
- graph-os + fleet MCP wiring — generates/patches supported JSON clients
with a portable installed
graph-os stdio entry (or a remote URL), plus one
entry per auto-detected agents/* MCP server — see
"MCP server wiring" below.
- Per-package auto-detection, including installing directly from an
agents/* project checkout that isn't pip-installed yet (--from-package).
Prefer --symlink for skills/skill-graphs (unchanged from skill-installer):
links each skill to the installed package instead of copying, so there are no
duplicate files on disk and every skill auto-updates on pip install -U.
Ontologies and prompts are always copied (they are consumed as data by
agent-utilities/epistemic-graph, not executed in place).
Refactor-safe (symlink mode). A --symlink install repoints a moved skill's
stale link to its new source and prunes broken links left by a renamed/removed
skill on a full install (--no-prune to disable) — unchanged from skill-installer.
Supported Tools
OS-aware; kept in parity across the skill-directory leg and the MCP-config leg so one
bootstrap wires both.
Skill/skill-graph directories (--tool):
- Claude Code:
~/.claude/skills/
- Windsurf:
~/.codeium/windsurf/skills/
- OpenCode:
~/.config/opencode/skills/
- OpenClaw:
~/.openclaw/skills/
- Antigravity:
~/.gemini/antigravity/skills/
- Codex:
~/.codex/skills/
- Devin:
~/.config/devin/skills/
- Cursor:
~/.cursor/skills/
- Grok Code (
grok / grok-code): ~/.grok/skills/
- Zed:
~/.config/zed/skills/
- agent-utilities / agent-terminal-ui (canonical XDG store):
$XDG_DATA_HOME/agent-utilities/skills/
— always kept current on every global install (opt out with --no-xdg).
MCP config files (same --tool key, MCP-config leg): Claude Code (~/.claude.json),
Claude Desktop, Windsurf, OpenCode, Antigravity, Devin, Codex, Cursor
(~/.cursor/mcp.json), and agent-utilities/agent-terminal-ui — the full set the bundled
mcp-installer supports (extended with Cursor, previously skill-only-parity).
merge, never overwrite, unless --force.
Per-agent frontmatter adaptation (Codex) — unchanged from skill-installer:
canonical SKILL.md stays Claude-native; installing into Codex's flat-discovery,
restricted-frontmatter ~/.codex/skills demotes non-Codex keys into metadata,
sanitizes description, forces a copy (never symlink), and promotes nested
sub-skills + skill-graphs to the target's top level. Full contract table in
STANDARDS.md §5. (The old skill-installer → universal-skill-installer
Codex name-collision rename is gone — the skill itself is no longer named
skill-installer, so the collision with Codex's own built-in no longer applies.)
Tools
install_skills (skills / skill-graphs / skill-workflows)
Unchanged interface from skill-installer — see full flag reference below. Both
universal-skills and skill-graphs should be pip-installed first:
pip install universal-skills
pip install skill-graphs
Arguments
--tool: Target tool (claude, claude-desktop, windsurf, opencode, openclaw,
antigravity, codex, devin, cursor, grok, zed, agent-utilities,
agent-terminal-ui, or a custom path).
--all-detected / --all: Install into every detected / every known tool.
--interactive / -i: Interactively pick target tools, source providers, AND
the graph-os MCP wiring mode (new — see below). Auto-enabled on a bare
TTY-attached invocation.
--providers: Comma-separated skill/prompt/ontology providers to install from
(universal-skills and/or installed agent-package names). Default: all.
--from-package <path>: Install directly from an agents/* project checkout
that is not yet pip-installed — parses its pyproject.toml
agent_utilities.{skill,prompt,ontology}_providers entry-points and installs
straight from the checkout's source tree. See "Per-package auto-detection".
--skills, --group, --force, --symlink/--link, --layer,
--install-skill-graphs, --no-prune, --no-xdg, --validate: unchanged
from skill-installer (see below for the full description of each).
--no-ontologies / --no-prompts: Skip the ontology / prompt install leg
(both run by default — see below).
--graph-os {stdio,remote,skip}: How to wire graph-os into the target's MCP
config (default stdio; interactive picker asks if not given and a TTY is
attached). See "MCP server wiring".
--graph-os-url <url>: Remote graph-os URL, required when --graph-os remote.
--no-mcp: Skip MCP config wiring entirely (skills/ontologies/prompts only).
# RECOMMENDED for Claude: symlink the atomic layer, wire graph-os + fleet MCP servers
install-universal --tool claude --symlink --layer atomic --graph-os stdio
# Install everything into every detected tool (interactive picker if TTY-attached)
install-universal --all-detected --symlink
# Wire a remote graph-os instead of the installed local stdio launcher
install-universal --tool claude --graph-os remote --graph-os-url https://graph-os.example.com/mcp
# Install directly from an unreleased agents/* checkout (skills+prompts+ontology)
install-universal --tool claude --from-package ${AGENT_UTILITIES_WORKSPACE_ROOT}/agent-packages/agents/gitlab-api
Invoke via the install-universal console entry point (installed with the
package). The legacy install-skills console entry (from skill-installer)
still works and now points at this same implementation — no functionality lost.
Ontology & prompt installation (new)
agent-utilities already defines the full three-leg federation — agent_utilities. skill_providers / .prompt_providers / .ontology_providers entry-points,
resolved by agent_utilities.core.providers and materialized by
agent_utilities.core.unified_install.install_unified() into
$XDG_DATA_HOME/agent-utilities/{skills,prompts,ontologies}/<provider>/…. This
skill's job on the ontology/prompt legs is to make sure that materialization
happens as part of the SAME install run a user already runs for skills, without
requiring a separate agent-utilities install invocation:
- If
agent_utilities is importable, install_unified() is called directly
(best fidelity — reuses AU's own federation-aware logic, including AU's own
base ontologies/prompts).
- Otherwise (agent-utilities not installed in this environment), a local,
dependency-free fallback in
scripts/providers.py resolves the same
agent_utilities.prompt_providers / agent_utilities.ontology_providers
entry-points and copies each provider's *.json prompts / *.ttl (+
shapes/*.ttl) ontology files into the same XDG layout directly — same
target tree, no agent-utilities import required (mirrors the existing
skill-provider fallback pattern already used for skills).
Ontologies/prompts always land in the XDG tree (never in a per-tool skill
directory — Claude Code etc. don't consume .ttl/prompt JSON directly); only
the skills/skill-graphs leg is tool-specific. Skip with --no-ontologies /
--no-prompts.
Per-package auto-detection (new)
When an agents/* package is already pip-installed, its skills/prompts/
ontologies are picked up automatically through the standard entry-point
discovery above — nothing new to invoke.
When it is not yet installed (a checkout you're developing against, e.g.
agent-packages/agents/<pkg>), pass --from-package <path>:
scripts/from_package.py reads that package's pyproject.toml directly
(stdlib tomllib, no network/pip needed) for its
[project.entry-points."agent_utilities.skill_providers"] /
.prompt_providers / .ontology_providers tables, resolves each value
(<module>.skills etc.) to a source directory inside the checkout, and installs
from there through the same skill/ontology/prompt install paths as a normal
provider — named by the package's [project].name.
MCP server wiring (new)
Reuses the bundled mcp-installer skill's config-merge machinery
(merge_mcp_configs / install_mcp_config — never overwrites unrelated
mcpServers entries, backs up the target file before merging) rather than
re-implementing it. scripts/mcp_setup.py builds two kinds of entries and
merges them into a supported JSON client's MCP config file. Codex remains a
skill-install target, but is intentionally skipped by this JSON leg. Register
GraphOS in Codex through agent-utilities' setup-config codex command (or the
equivalent codex mcp add graph-os -- graph-os --transport stdio) so Codex owns
its config.toml entry and no env, secret, working directory, or machine path
is copied.
graph-os:
--graph-os stdio (default): wires the installed portable launcher as
"command": "graph-os", "args": ["--transport", "stdio"]. Runtime
topology and state resolve through AgentConfig, not client env fields.
--graph-os remote --graph-os-url <url>: wires {"url": "<url>"} — the
Streamable-HTTP/remote shape every agents/* README documents as the
alternative to stdio.
--graph-os skip: no graph-os entry is written.
- Auto-detected
agents/* servers — for every provider discovered on this
install run (pip-installed or --from-package) that also declares an
[project.scripts] *-mcp entry point, adds
"command": "uvx", "args": ["--from", "<pkg>[mcp]", "<pkg>-mcp"], "env": {"MCP_TOOL_MODE": "condensed"} — the universal shape. Per-package tool
toggles (<X>TOOL) and auth env vars are package-specific and are not
guessed; the merged entry is a ready-to-fill-in starting point, matching
what that package's own README documents.
Interactive decision point. --interactive/bare-TTY invocation asks,
per the picker in install.py's _run_interactive(): "Wire graph-os as (1)
local stdio (installed console script), (2) a remote instance (enter URL), or (3)
skip?" — mirrors the tool/provider pickers already there. Non-interactively,
--graph-os defaults to stdio (never silently skipped, since a graph-os
entry is the common case) unless --no-mcp is given.
Ontology / skill / prompt auto-extension hook for the KG (new, partial)
After each install run (fleet-provider or --from-package), the installer
writes a small JSON manifest —
$XDG_DATA_HOME/agent-utilities/install-manifest.json — recording, per
provider, which artifact types and how many were (re)installed this run and
when. This is the "make the artifacts discoverable" half of KG
auto-extension: any provider whose skills/prompts/ontologies changed is now
sitting in the canonical XDG tree the KG ingestion pipeline already scans.
What this skill does NOT do (by design — this is the graph-os/epistemic-graph
side's job, not the installer's): actually parse the manifest, mint KG nodes, or
call source_sync. The installer prints the exact follow-up
(source_sync source=all mode=delta via the graph-os MCP connection, or the
agent-utilities-source-integration skill) rather than invoking it itself —
invoking a heavy KG-ingestion tool from inside a lightweight file-copy installer
would couple the two concerns and require a live graph-os connection this skill
has no business assuming. If a graph-os-side counterpart wants to consume
install-manifest.json directly (rather than re-scanning the whole XDG tree),
that consumer is not yet built — flagged as a deferred follow-up.
Best Practices
- Prefer
--symlink for the skill/skill-graph leg on any host you'll keep
pip install -U-ing.
- Run with
--interactive (or bare, TTY-attached) the first time on a new host —
it walks tools, providers, AND the graph-os wiring decision in one pass.
- Use
--from-package while developing a new agents/* connector, before it's
released to pip — no need to pip install -e first.
- After any run that changed provider content, follow the printed
source_sync
hint so the KG picks up the new/changed skills, prompts, and ontology.
Resources
scripts/install.py — skill/skill-graph install core (unchanged logic from
skill-installer) + the new --from-package/--graph-os/ontology-prompt CLI
wiring.
scripts/adapters.py — per-agent-tool SKILL.md frontmatter contracts
(unchanged).
scripts/providers.py — ontology/prompt entry-point discovery + XDG
materialization (agent-utilities-import fast path + dependency-free fallback).
scripts/from_package.py — parse an agents/* checkout's pyproject.toml
entry-points and install directly from source.
scripts/mcp_setup.py — graph-os + fleet MCP config generation, merged via
the bundled mcp-installer.
1---2name: universal-installer3description: Install and wire the whole fleet contribution surface into an agent tool in one step: skills, skill-graphs, skill-workflows, ontologies, and system prompts — plus generating/patching supported JSON-client MCP configuration to wire graph-os (portable local stdio, or a remote instance) and auto-detected agents/* MCP server. Supports installing from pip-installed providers or directly from an agents/* project checkout. Use when the user wants to install skills or ontologies or prompts into Windsurf, Claude Code, OpenCode, Antigravity, Codex, Devin, Cursor, or a custom agent path, or wants an agent tool wired up end-to-end (skills + MCP servers) in one command. Do NOT use for creating or editing skill/ontology/prompt content — use skill-builder / skill-workflow-builder / skill-graph-builder for that.4license: MIT5---6# Universal Installer Skill78The successor to `skill-installer`. Installs the **whole fleet contribution surface**9into agent-tool directories by **copy** (default) or **symlink** (`--symlink`), in10one entry point per artifact type:1112- **Skills, skill-graphs, skill-workflows** — into each target tool's skill directory13 (unchanged behavior from `skill-installer`; every capability below is additive).14- **Ontologies + system prompts** — the other two legs of the15 `agent_utilities.*_providers` entry-point federation (CONCEPT:AU-KG.ontology.federation-provider-leg /16 CONCEPT:AU-OS.deployment.modular-skill-prompt-contribution), materialized into the canonical17 agent-utilities XDG tree (`$XDG_DATA_HOME/agent-utilities/{prompts,ontologies}/<provider>/…`)18 so the KG/epistemic-graph side can ingest them — see "Ontology & prompt19 installation" below.20- **graph-os + fleet MCP wiring** — generates/patches supported JSON clients21 with a portable installed `graph-os` stdio entry (or a remote URL), plus one22 entry per auto-detected `agents/*` MCP server — see23 "MCP server wiring" below.24- **Per-package auto-detection**, including installing directly from an25 `agents/*` project checkout that isn't pip-installed yet (`--from-package`).2627> **Prefer `--symlink`** for skills/skill-graphs (unchanged from `skill-installer`):28> links each skill to the installed package instead of copying, so there are no29> duplicate files on disk and every skill auto-updates on `pip install -U`.30> Ontologies and prompts are always **copied** (they are consumed as data by31> agent-utilities/epistemic-graph, not executed in place).3233> **Refactor-safe (symlink mode).** A `--symlink` install repoints a moved skill's34> stale link to its new source and prunes broken links left by a renamed/removed35> skill on a full install (`--no-prune` to disable) — unchanged from `skill-installer`.3637## Supported Tools3839OS-aware; kept in parity across the skill-directory leg and the MCP-config leg so one40bootstrap wires both.4142**Skill/skill-graph directories** (`--tool`):43- **Claude Code**: `~/.claude/skills/`44- **Windsurf**: `~/.codeium/windsurf/skills/`45- **OpenCode**: `~/.config/opencode/skills/`46- **OpenClaw**: `~/.openclaw/skills/`47- **Antigravity**: `~/.gemini/antigravity/skills/`48- **Codex**: `~/.codex/skills/`49- **Devin**: `~/.config/devin/skills/`50- **Cursor**: `~/.cursor/skills/`51- **Grok Code** (`grok` / `grok-code`): `~/.grok/skills/`52- **Zed**: `~/.config/zed/skills/`53- **agent-utilities / agent-terminal-ui** (canonical XDG store): `$XDG_DATA_HOME/agent-utilities/skills/`54 — always kept current on every global install (opt out with `--no-xdg`).5556**MCP config files** (same `--tool` key, MCP-config leg): Claude Code (`~/.claude.json`),57Claude Desktop, Windsurf, OpenCode, Antigravity, Devin, Codex, Cursor58(`~/.cursor/mcp.json`), and agent-utilities/agent-terminal-ui — the full set the bundled59`mcp-installer` supports (extended with **Cursor**, previously skill-only-parity).60`merge`, never overwrite, unless `--force`.6162**Per-agent frontmatter adaptation (Codex)** — unchanged from `skill-installer`:63canonical `SKILL.md` stays Claude-native; installing into Codex's flat-discovery,64restricted-frontmatter `~/.codex/skills` demotes non-Codex keys into `metadata`,65sanitizes `description`, forces a copy (never symlink), and promotes nested66sub-skills + skill-graphs to the target's top level. Full contract table in67`STANDARDS.md` §5. (The old `skill-installer` → `universal-skill-installer`68Codex name-collision rename is gone — the skill itself is no longer named69`skill-installer`, so the collision with Codex's own built-in no longer applies.)7071## Tools7273### install_skills (skills / skill-graphs / skill-workflows)7475Unchanged interface from `skill-installer` — see full flag reference below. Both76`universal-skills` and `skill-graphs` should be pip-installed first:77```bash78pip install universal-skills79pip install skill-graphs80```8182#### Arguments83- `--tool`: Target tool (claude, claude-desktop, windsurf, opencode, openclaw,84 antigravity, codex, devin, cursor, grok, zed, agent-utilities,85 agent-terminal-ui, or a custom path).86- `--all-detected` / `--all`: Install into every detected / every known tool.87- `--interactive` / `-i`: Interactively pick target tools, source providers, AND88 the graph-os MCP wiring mode (new — see below). Auto-enabled on a bare89 TTY-attached invocation.90- `--providers`: Comma-separated skill/prompt/ontology providers to install from91 (`universal-skills` and/or installed agent-package names). Default: all.92- `--from-package <path>`: Install directly from an `agents/*` project checkout93 that is **not yet pip-installed** — parses its `pyproject.toml`94 `agent_utilities.{skill,prompt,ontology}_providers` entry-points and installs95 straight from the checkout's source tree. See "Per-package auto-detection".96- `--skills`, `--group`, `--force`, `--symlink`/`--link`, `--layer`,97 `--install-skill-graphs`, `--no-prune`, `--no-xdg`, `--validate`: unchanged98 from `skill-installer` (see below for the full description of each).99- `--no-ontologies` / `--no-prompts`: Skip the ontology / prompt install leg100 (both run by default — see below).101- `--graph-os {stdio,remote,skip}`: How to wire graph-os into the target's MCP102 config (default `stdio`; interactive picker asks if not given and a TTY is103 attached). See "MCP server wiring".104- `--graph-os-url <url>`: Remote graph-os URL, required when `--graph-os remote`.105- `--no-mcp`: Skip MCP config wiring entirely (skills/ontologies/prompts only).106107```bash108# RECOMMENDED for Claude: symlink the atomic layer, wire graph-os + fleet MCP servers109install-universal --tool claude --symlink --layer atomic --graph-os stdio110111# Install everything into every detected tool (interactive picker if TTY-attached)112install-universal --all-detected --symlink113114# Wire a remote graph-os instead of the installed local stdio launcher115install-universal --tool claude --graph-os remote --graph-os-url https://graph-os.example.com/mcp116117# Install directly from an unreleased agents/* checkout (skills+prompts+ontology)118install-universal --tool claude --from-package ${AGENT_UTILITIES_WORKSPACE_ROOT}/agent-packages/agents/gitlab-api119```120121> Invoke via the `install-universal` console entry point (installed with the122> package). The legacy `install-skills` console entry (from `skill-installer`)123> still works and now points at this same implementation — no functionality lost.124125## Ontology & prompt installation (new)126127agent-utilities already defines the full three-leg federation — `agent_utilities.128skill_providers` / `.prompt_providers` / `.ontology_providers` entry-points,129resolved by `agent_utilities.core.providers` and materialized by130`agent_utilities.core.unified_install.install_unified()` into131`$XDG_DATA_HOME/agent-utilities/{skills,prompts,ontologies}/<provider>/…`. This132skill's job on the ontology/prompt legs is to make sure that materialization133happens as part of the SAME install run a user already runs for skills, without134requiring a separate `agent-utilities install` invocation:135136- If `agent_utilities` is importable, `install_unified()` is called directly137 (best fidelity — reuses AU's own federation-aware logic, including AU's own138 base ontologies/prompts).139- Otherwise (agent-utilities not installed in this environment), a local,140 dependency-free fallback in `scripts/providers.py` resolves the same141 `agent_utilities.prompt_providers` / `agent_utilities.ontology_providers`142 entry-points and copies each provider's `*.json` prompts / `*.ttl` (+143 `shapes/*.ttl`) ontology files into the same XDG layout directly — same144 target tree, no agent-utilities import required (mirrors the existing145 skill-provider fallback pattern already used for skills).146147Ontologies/prompts always land in the XDG tree (never in a per-tool skill148directory — Claude Code etc. don't consume `.ttl`/prompt JSON directly); only149the skills/skill-graphs leg is tool-specific. Skip with `--no-ontologies` /150`--no-prompts`.151152## Per-package auto-detection (new)153154When an `agents/*` package is **already pip-installed**, its skills/prompts/155ontologies are picked up automatically through the standard entry-point156discovery above — nothing new to invoke.157158When it is **not yet installed** (a checkout you're developing against, e.g.159`agent-packages/agents/<pkg>`), pass `--from-package <path>`:160`scripts/from_package.py` reads that package's `pyproject.toml` directly161(stdlib `tomllib`, no network/pip needed) for its162`[project.entry-points."agent_utilities.skill_providers"]` /163`.prompt_providers` / `.ontology_providers` tables, resolves each value164(`<module>.skills` etc.) to a source directory inside the checkout, and installs165from there through the same skill/ontology/prompt install paths as a normal166provider — named by the package's `[project].name`.167168## MCP server wiring (new)169170Reuses the bundled **`mcp-installer`** skill's config-merge machinery171(`merge_mcp_configs` / `install_mcp_config` — never overwrites unrelated172`mcpServers` entries, backs up the target file before merging) rather than173re-implementing it. `scripts/mcp_setup.py` builds two kinds of entries and174merges them into a supported JSON client's MCP config file. Codex remains a175skill-install target, but is intentionally skipped by this JSON leg. Register176GraphOS in Codex through agent-utilities' `setup-config codex` command (or the177equivalent `codex mcp add graph-os -- graph-os --transport stdio`) so Codex owns178its `config.toml` entry and no env, secret, working directory, or machine path179is copied.1801811. **`graph-os`**:182 - `--graph-os stdio` (default): wires the installed portable launcher as183 `"command": "graph-os", "args": ["--transport", "stdio"]`. Runtime184 topology and state resolve through AgentConfig, not client env fields.185 - `--graph-os remote --graph-os-url <url>`: wires `{"url": "<url>"}` — the186 Streamable-HTTP/remote shape every `agents/*` README documents as the187 alternative to stdio.188 - `--graph-os skip`: no graph-os entry is written.1892. **Auto-detected `agents/*` servers** — for every provider discovered on this190 install run (pip-installed or `--from-package`) that also declares an191 `[project.scripts]` `*-mcp` entry point, adds192 `"command": "uvx", "args": ["--from", "<pkg>[mcp]", "<pkg>-mcp"], "env":193 {"MCP_TOOL_MODE": "condensed"}` — the universal shape. Per-package tool194 toggles (`<X>TOOL`) and auth env vars are package-specific and are **not**195 guessed; the merged entry is a ready-to-fill-in starting point, matching196 what that package's own README documents.197198**Interactive decision point.** `--interactive`/bare-TTY invocation asks,199per the picker in `install.py`'s `_run_interactive()`: *"Wire graph-os as (1)200local stdio (installed console script), (2) a remote instance (enter URL), or (3)201skip?"* — mirrors the tool/provider pickers already there. Non-interactively,202`--graph-os` defaults to `stdio` (never silently skipped, since a graph-os203entry is the common case) unless `--no-mcp` is given.204205## Ontology / skill / prompt auto-extension hook for the KG (new, partial)206207After each install run (fleet-provider or `--from-package`), the installer208writes a small JSON manifest —209`$XDG_DATA_HOME/agent-utilities/install-manifest.json` — recording, per210provider, which artifact types and how many were (re)installed this run and211when. This is the "make the artifacts **discoverable**" half of KG212auto-extension: any provider whose skills/prompts/ontologies changed is now213sitting in the canonical XDG tree the KG ingestion pipeline already scans.214215**What this skill does NOT do** (by design — this is the graph-os/epistemic-graph216side's job, not the installer's): actually parse the manifest, mint KG nodes, or217call `source_sync`. The installer prints the exact follow-up218(`source_sync source=all mode=delta` via the graph-os MCP connection, or the219`agent-utilities-source-integration` skill) rather than invoking it itself —220invoking a heavy KG-ingestion tool from inside a lightweight file-copy installer221would couple the two concerns and require a live graph-os connection this skill222has no business assuming. If a graph-os-side counterpart wants to consume223`install-manifest.json` directly (rather than re-scanning the whole XDG tree),224that consumer is **not yet built** — flagged as a deferred follow-up.225226## Best Practices227228- Prefer `--symlink` for the skill/skill-graph leg on any host you'll keep229 `pip install -U`-ing.230- Run with `--interactive` (or bare, TTY-attached) the first time on a new host —231 it walks tools, providers, AND the graph-os wiring decision in one pass.232- Use `--from-package` while developing a new `agents/*` connector, before it's233 released to pip — no need to `pip install -e` first.234- After any run that changed provider content, follow the printed `source_sync`235 hint so the KG picks up the new/changed skills, prompts, and ontology.236237## Resources238- `scripts/install.py` — skill/skill-graph install core (unchanged logic from239 `skill-installer`) + the new `--from-package`/`--graph-os`/ontology-prompt CLI240 wiring.241- `scripts/adapters.py` — per-agent-tool `SKILL.md` frontmatter contracts242 (unchanged).243- `scripts/providers.py` — ontology/prompt entry-point discovery + XDG244 materialization (agent-utilities-import fast path + dependency-free fallback).245- `scripts/from_package.py` — parse an `agents/*` checkout's `pyproject.toml`246 entry-points and install directly from source.247- `scripts/mcp_setup.py` — graph-os + fleet MCP config generation, merged via248 the bundled `mcp-installer`.