Skills, plugins, and MCP servers
The Skills & plugins view lists the skills, plugins, MCP servers, and connectors that each harness on this device has configured, in one place. Use it to find where a skill lives, compare copies across harnesses, and read earlier versions of a skill. From the CLI you can also check why a skill failed to load in a session and import Claude plugin eval results.
- App
- Skills & plugins
- CLI
hansard skills
Browse the inventory in the app
Section titled “Browse the inventory in the app”- Select Skills & plugins in the dock. The page shows the latest scan and the time it ran. Tabs across the top switch between All, Skills, Plugins, MCP servers, and Connectors, and show how many of each match your filters. Each type’s heading says in one line what that type is.
- Narrow the list with Search (names, descriptions, and source paths), Harness, Type, and Scope. Type offers Skills, Plugins & extensions, MCP servers, and Connectors, and stays in step with the tabs. Scope offers Global and Project.
- Expand an entry to see a table of its copies. Each row is one file and
shows every harness that uses it, the scope, whether the copy is
Configured or Disabled, and its source file. When a harness reads
the file from another harness’s folder or the shared
.agentsfolder, the row names that folder. Hover over a shortened path to see it in full. - To read a skill’s current instructions, select Read skill on a copy.
- To rescan this device, select Scan now.
Each entry takes one row with its name, the start of its description, and an icon for every harness that has a copy. A line under the name says what the entry is, which harnesses use it, and where it comes from, such as “Skill for Codex, from the Adobe plugin” or “Skill for Warp, from Claude Code’s folder”. Entries with the same name and type are grouped, and each copy keeps its own source, status, and scope. A shared name does not mean the copies have the same content. Tags mark entries configured in a project and entries that are disabled everywhere.
Plugins appear as their own entries, including plugins that contain only hooks, commands, or rules. A plugin’s details show its Version and the component types it Includes. Extensions and packages also show their Type, and Files notes a plugin whose files are missing or whose install location Hansard can’t determine. Skills and MCP servers inside a plugin also appear as separate entries. A Codex plugin whose package name is an opaque ID shows the display name from its manifest, with the package name under Name. Hansard never runs plugin code and never shows plugin configuration values.
Harnesses, at the bottom of the page, counts each harness’s skills, plugins, MCP servers, and connectors, says where its skills come from (for example, “No skills of its own. Reads skills from Codex and Claude Code”), and notes what Hansard can’t see for that harness. Select a harness’s name to show only what it uses; a summary of that harness then sits above the list, with Show all harnesses to go back. Hansard reads configuration files on this device only. It doesn’t check sign-ins, whether servers respond, or anything kept only in the cloud. Problems a scan ran into, such as a file it could not parse, are collected in the scan warnings notice below the table.
Review a skill’s history in the app
Section titled “Review a skill’s history in the app”Hansard saves a copy of a skill’s files each time a scan finds that they changed, so you can see what a skill said at an earlier date.
- In Skills & plugins, find the skill and select History on a copy.
- Under Revision history, select a revision in the timeline. Each step shows its capture time, short hash, file count, and size, and Current marks the latest. When the skill has more than one file, choose a File.
- Select Snapshot to read the file as it was, or Changes to compare it with the previous revision.
Capture times show when a scan saw a revision, not which revision a session used. History starts with the first scan that sees a skill. Versions that changed before then cannot be recovered.
Find an integration
Section titled “Find an integration”Select Integrations at the top of Skills & plugins, or choose Integrations in the command palette. The picker lists agents, MCP servers, apps, plugins, skills, and services, with a search field. Select one to see what it adds, switch it on or off, or open its settings.
Share them with every agent
Section titled “Share them with every agent”Hansard lets each agent use the skills, MCP servers, and plugins that the other
agents installed. For example, Claude Code can call Codex’s Computer Use, and
Codex can use a Claude Code skill. Shared tools appear under Hansard’s entry in
each agent’s tool list, and skills arrive through one use_skill tool.
- In Skills & plugins, use Share with all agents to turn sharing on or off, and an item’s All agents switch to share one item or keep it back.
- Select an item to open its page. Set each tool to Allow, Ask each time, or Off, review the apps it was approved for, and stop the servers it runs. The page also shows the item’s uses in the last 30 days and in all, the agents that used it, its last use, and a chart of uses per day over 90 days, counted from archived conversations.
- To change what one conversation can use, open the conversation’s Actions menu and select Plugins and skills. The change also covers the helpers that the conversation starts.
When Codex is signed in with ChatGPT, its app connectors are shared the same way, and a connector tool that is not marked read-only asks before each call.
A tool that can run code, control your computer, or change cloud services asks before each use until you allow it, whatever agent or permission mode calls it. The request appears in the agent’s own prompt when the agent can show one. Otherwise the app shows Approval needed in its title bar, and the request also waits in Review. Items with such tools are marked Recommended off, and they stay on until you turn them off.
An approval can cover one call, one conversation and its helpers, or every agent. A changed tool definition requires approval again. Project MCP servers are shared only after their own agent approved them. Hansard takes a conversation’s identity from its connection, never from tool arguments.
No shared server starts until an agent calls it. A separate bridge process runs one copy per conversation and stops it after 15 idle minutes. Restarting the shared MCP host does not stop work in those servers. Codex connector calls go through the Codex app server, so connector tokens stay in Codex.
When tool descriptions exceed 24 KB, tools that can run code or control the computer remain listed. Other tools move behind search and a pair of call tools for each server.
Control sharing from the CLI
Section titled “Control sharing from the CLI”hansard bridge listhansard bridge off <item>hansard bridge on <item> --conversation <provider>:<session-id>hansard bridge tool <item> <tool> allowhansard bridge load <item>hansard bridge approvalshansard bridge pendingTool modes are allow, ask, off, and default. pending lists requests
waiting for approval. Run hansard help bridge for the approval controls.
hansard bridge disable turns sharing off for every conversation.
hansard bridge enable turns it on. Setting HANSARD_PLUGIN_BRIDGE=0 in the
watcher’s environment disables the bridge for its shared MCP host. Guided
setup and hansard init also offer the sharing choice.
Keep plugins in Hansard
Section titled “Keep plugins in Hansard”Hansard can also keep its own copy of a plugin and turn it on for the
environments of a project, without changing any agent’s settings. To add one,
open the project in Projects and select Add plugin in its Plugins
section. The plugin can come from a marketplace your agents already use, a
GitHub repository (owner/repo) or git URL, or a folder on this device. See
Projects and coordinators.
A plugin Hansard keeps has its own page in Skills & plugins:
| Section | What it shows |
|---|---|
| Provides | The plugin’s skills, commands, hooks, and MCP servers. |
| Use | How often your agents used it, By agent or By item, counted from your archived conversations. With Claude Code activity on, how fast its MCP servers answered. |
| Environments | The environments that turn it on. Agents started in them get it. |
| Agents | How each agent gets the plugin at launch, or that it reads the plugin from its own settings. |
Personal Sync carries the plugins Hansard keeps to your other devices. A plugin added on another device shows Install until this device has a copy. Remove, at the top of the page, stops every environment on all your devices from getting it and deletes Hansard’s copy. A plugin added from a folder keeps its folder.
Manage skills from the CLI
Section titled “Manage skills from the CLI”hansard skills backuphansard skills list --provider claude_codehansard skills history <skill-id>hansard skills show <skill-id> --revision <hash> --file references/guide.md| Command | What it does |
|---|---|
hansard skills backup |
Scans this device and saves new skill revisions. |
hansard skills list |
Lists archived skills with their revision counts, including skills whose files were deleted. --provider filters by harness. |
hansard skills history <id> |
Lists a skill’s revisions. |
hansard skills show <id> |
Prints the skill’s main file. --revision picks an earlier revision, and --file picks another file from the skill’s folder. |
hansard skills failures <session-id> |
Lists the skills a session tried to load and which loads failed. |
Every command accepts --json.
Check why a skill failed to load
Section titled “Check why a skill failed to load”Skill loading failures are available only from the CLI:
hansard skills failures <session-id>The command lists each skill load it found in the archived session and links every failed load to the matching events in the transcript. It reports what happened in that session. It does not judge whether the skill caused later problems.
Import Claude plugin eval results
Section titled “Import Claude plugin eval results”Import and review results from claude plugin eval runs from the CLI. Hansard
reads existing results. It does not run evaluations.
hansard eval import claude-plugin ./aggregate-result.jsonhansard eval listhansard eval show <id>To tie a result to one archived revision of a skill, add both --skill <id>
and --revision <hash> when you import it. You choose this link yourself.
Hansard does not verify which files the evaluated agent loaded, and an import’s
link cannot be changed later.
- Importing the same file again does nothing.
hansard eval listfilters by--skill,--revision, and--model, and--limitcaps the count.hansard eval showprints the full record, including run errors and grader evidence. It accepts an ID prefix.- Incomplete runs, runs with errors, and runs that skipped paid graders are flagged so you can leave them out of comparisons.
Eval results stay in your local archive. They are not synced and do not count toward activity statistics.
What each harness reports
Section titled “What each harness reports”| Harness | What the scan finds |
|---|---|
| Codex | Skills, MCP servers, installed plugins, and connectors that plugins declare. |
| Claude Code | Skills, MCP servers, installed plugins, and project MCP entries. Project approval and managed settings are not checked. |
| Claude Desktop | MCP servers, installed desktop extensions, and registered Cowork skills. |
| GitHub Copilot | CLI skills, MCP servers, and installed CLI plugins. IDE extensions and built-in servers are not checked. |
| Antigravity | Desktop and CLI skills, including single-file Markdown skills, local plugins, and project .agents folders. |
| OpenCode | Skills, MCP servers, declared plugins, and local plugin files. Remote configuration is not fetched. |
| Factory | Local and project skills, MCP servers, and declared plugins. |
| Grok Build | MCP servers and skills, when Grok Build has its own configuration. Plugin registries and custom skill paths are not checked. |
| Devin, Windsurf | Local skills and MCP servers. Cloud skill catalogs are not fetched. |
| Cursor, Gemini CLI | Skill and MCP configuration files. Hansard does not run either CLI. |
| Warp | Skills in ~/.warp/skills and in the other agents’ skill folders Warp reads: the shared .agents folder and the Claude Code, Codex, Cursor, Gemini, Copilot, Factory, and OpenCode folders, globally and in projects. Rules and MCP servers saved in Warp are not listed. |
| Amp | Skills in ~/.config/amp/skills, the shared .agents folders, Claude Code skill folders, and folders listed in amp.skills.path, following Amp’s opt-out settings, plus MCP servers in its settings. Skills from Claude Code plugins and skill repositories are not listed. |
Project entries come from folders where you have run agents and from projects you configured in Hansard. Harnesses without any entries are hidden. Other harnesses are not scanned, so a missing harness or a zero count does not mean nothing is configured.
How to read the results
Section titled “How to read the results”- Configured and Disabled describe the configuration file. They do not show whether a session loaded the skill or whether an MCP server is running.
- A connector shows what a plugin declares. It says nothing about sign-in, permissions, or account access.
- Some agents also load skills from another agent’s folder or from the shared
.agentsfolder. Hansard lists those skills under each agent that loads them and names the folder they come from. Grok Build, OpenCode, Warp, and Amp get these skills only once the agent itself is set up on this device. An agent reading another agent’s folder loads onlyskills/<name>/SKILL.md, so nested folders and built-in.systemskills stay with their owner. - A plugin’s Files line reads Missing files when its folder is gone and Install location unknown when Hansard can’t find where it is installed. Plugins with their files in place have no Files line.
- Commands, agents, hooks, and rules appear as parts of a plugin, not as separate entries. Plugin caches that are not installed are not listed.
The inventory never includes MCP launch arguments, environment values, headers, or server URLs. Scans read local files only. They do not start any harness or connect to any server.
How scans work
Section titled “How scans work”- The page shows the most recent scan right away. Opening the page starts a new scan in the background when the last one is missing or out of date.
- While the watcher runs, it scans every 15 minutes.
- Each scan replaces the previous inventory, so removed entries disappear. If a scan fails, the previous inventory stays and the page shows the error.
- A source that does not answer within two seconds is skipped and listed in the scan warnings notice at the bottom of the page.
- The inventory and skill history stay on this device and are not synced.
Each skill revision holds up to 512 files, 8 MiB per file, and 32 MiB in total.
Hidden files, node_modules, and __pycache__ folders are skipped. A revision
that hits a limit is marked as a partial snapshot.
A revision stores only the files that changed; the others share the copy an earlier revision saved. Each skill keeps its last 100 revisions. Past that, older revisions that repeat a newer one’s files go first, then the oldest. A revision you tied an eval result to is always kept. A plugin’s skills keep one history as the plugin updates. Claude Desktop installs a plugin once for each account and device, and each installation keeps its own history.
Troubleshooting
Section titled “Troubleshooting”Scan now is missing, or the page says scanning requires a local writable
viewer. Remote and read-only connections can view the last scan but cannot
start one. Open the app on the device itself, or run hansard skills backup.
Read skill or History is missing. Skill text and history are available only from a local connection to the app. Remote connections show the inventory without file contents.
Read skill shows no text. Hansard displays UTF-8 skill files up to 1 MiB.