Claude Code plugins for working with Fluree AI — connecting
to your stack, driving the fluree CLI, and generating datasets to load into it.
This repository is a Claude Code plugin marketplace. Add it once, then install any plugin inside it from Claude Code — either the Claude Desktop app (Code mode) or the Claude Code CLI in a terminal.
Have a Fluree AI stack and want Claude Code working against it? Jump to Installation, install fluree-companion, then run
/fluree-companion:connect.
Three plugins, and the mental model behind them: your stack, the CLI that drives it,
and data to put in it. Install the ones that match what you're doing — they're independent,
and fluree-companion + fluree-cli are designed to be used together.
| Plugin | What it does | Docs |
|---|---|---|
| fluree-companion | Connects Claude Code to your Fluree AI (Solo) stack and works against it — capability discovery, the human-approved device login, Space MCP registration, and playbooks that read your stack's own version-pinned docs instead of guessing. Includes /fluree-companion:connect. |
README |
| fluree-cli | Teaches Claude Code to drive the fluree CLI safely and well — probe-first use of the binary's embedded docs, destructive-op and credential safety rails, and Fluree AI (Solo) remote workflows. Includes /fluree-cli:setup. |
README |
| fluree-dataset-generator | Interviews you about a domain and generates a complete, validated JSON-LD dataset (RDF model + realistic instance data) ready to load into a Fluree knowledge graph. | README |
Why a plugin rather than a hosted service: every Fluree AI stack is its own deployment running
its own release. So the plugins carry choreography — how to connect, what order to do things
in, what not to do — while the knowledge itself stays in your stack and in your fluree binary,
where it always matches the version you're actually running.
Marketplace name: fluree-plugins (this is what you reference when installing — see below).
New to this? Here's the whole mental model in four bullets — once it clicks, the steps below are obvious:
- Claude Code is Anthropic's agentic assistant. It runs in two places that share the
same plugin system: the Claude Desktop app (flip the top toggle to
Code) and the Claude Code CLI in a terminal. Everything in this repo works in both. - A marketplace is just a GitHub repo (like this one) that lists plugins. You add a marketplace once.
- A plugin bundles capabilities — most commonly skills, but also slash commands, subagents, hooks, or MCP servers. You install the plugins you want from a marketplace.
- A skill is a packaged set of instructions that teaches Claude to do one job well. Skills auto-trigger when your request matches their purpose, or you can invoke one explicitly. You don't "run" a skill like a program — you just talk to Claude, and the skill steers how it responds.
So the entire flow is: add this marketplace → install a plugin → ask Claude to do the thing (or pick the skill from a menu). Installed plugins persist across sessions, so you only do the first two steps once.
Want the official background? See Anthropic's docs on discovering & installing plugins and skills.
Installing is two steps: (1) add this marketplace, then (2) install a plugin from it. You only add the marketplace once; afterward you can install/update plugins freely.
/plugin marketplace add fluree/claude-plugins
/plugin install fluree-companion@fluree-plugins
/plugin install fluree-cli@fluree-plugins
/plugin install fluree-dataset-generator@fluree-plugins
Notes:
- The
owner/reposhorthand works for public GitHub repos. Claude Code reads.claude-plugin/marketplace.jsonfrom the repo root. - The
@fluree-pluginssuffix is required and is the marketplace name (thenamefield inmarketplace.json), not the repo name. - Prefer a menu? Run
/pluginto open a tabbed UI — Discover (browse/install), Installed (enable/disable/uninstall), Marketplaces (add/update), Errors. - If a freshly-added plugin isn't found, refresh with
/plugin marketplace update fluree-plugins.
The click-by-click flow for non-CLI folks. The Desktop UI evolves, so treat the exact button labels below as a snapshot — if one differs in your version, the underlying sequence is always the same:
switch to
Code→ add this marketplace from GitHub → install the plugin → invoke its skill.
- Open Claude Desktop, updated enough that the top of the app shows the
Chat | Cowork | Codetoggle. - Click
Codeto switch to the desktop version of Claude Code. - Click
Select Folderand choose a folder Claude Code may write to — e.g.~/Desktop/ClaudeCode/. - Near the input area, find the permission setting (usually
Ask Permissions). Keep it on in general. If you're using Claude Code only for these demo plugins, you can switch it toAuto accept editsso they run without you approving every file write. - Click the
+icon by the input →Add Plugin(or, if you already have plugins,Plugins→Manage Plugins). - Click
Browse Plugins. (Don't see it? Next toPersonal Pluginsclick+, thenBrowse Plugins.) - In the modal, you'll see tabs
By Anthropic | Your organization | Personal— clickPersonal. - Click the
+icon to add a plugin repository →Add marketplace from GitHub. - Type
fluree/claude-pluginsand clickSync. - A card appears for each plugin in this marketplace. Hover the one you want and click
Install. Once installed, the button changes toManage. - Back out to the main session with
Codeselected at the top — you're ready to use it.
To pre-register the marketplace and auto-enable plugins for a project or team, add to
.claude/settings.json (project) or ~/.claude/settings.json (user):
{
"extraKnownMarketplaces": {
"fluree-plugins": {
"source": { "source": "github", "repo": "fluree/claude-plugins" }
}
},
"enabledPlugins": {
"fluree-companion@fluree-plugins": true,
"fluree-cli@fluree-plugins": true
}
}The object key (fluree-plugins) is the marketplace name users reference in /plugin
commands. Project-scoped marketplaces prompt users to trust them before loading.
Once installed, each plugin contributes a Skill that you can invoke three ways:
- Ask in plain English — skills auto-trigger on intent, e.g. "connect Claude Code to my Fluree stack", "generate a demo insurance dataset for Fluree", or "query this ledger from the CLI." You don't have to name the plugin.
- Desktop menu —
+→ Plugins → <plugin> → Skills (inserts the skill's slash command, then press Enter). - CLI slash command —
/fluree-companion:connectto set up a stack connection,/fluree-cli:setupto set up the binary, or/fluree-dataset-generator:fluree-dataset-generatorto generate data. (The skills auto-trigger; these are the explicit entry points.)
Each plugin's own README has the full usage guide — the stack companion's connection choreography and contract checks in plugins/fluree-companion/README.md, what the CLI skill enforces and how it stays in sync with the binary in plugins/fluree-cli/README.md, and the dataset generator's interview questions, scale guidance, and load instructions in plugins/fluree-dataset-generator/README.md.
| Action | CLI |
|---|---|
| Open the plugin UI | /plugin |
| Update this marketplace | /plugin marketplace update fluree-plugins |
| Update an installed plugin | re-run /plugin install fluree-companion@fluree-plugins |
| Enable / disable / uninstall | /plugin → Installed tab |
In Claude Desktop, the Manage button on a plugin card (or Plugins → Manage Plugins)
covers update/disable/uninstall.
claude-plugins/
├── .claude-plugin/
│ └── marketplace.json # marketplace manifest (name: "fluree-plugins")
├── .github/workflows/ci.yml # validate --strict, version sync, contract checks
├── scripts/
│ ├── check-version-sync.mjs # marketplace ↔ plugin.json version invariant
│ ├── check-cli-contract.mjs # cli-facts vs the fluree CLI's release manifest
│ └── check-stack-facts.mjs # stack-facts vs solo's router endpoint manifest
└── plugins/
├── fluree-companion/
│ ├── .claude-plugin/
│ │ └── plugin.json
│ ├── README.md
│ ├── commands/connect.md # /fluree-companion:connect
│ ├── contract/
│ │ ├── stack-facts.json # every stack path/slug/tool the plugin names
│ │ └── cli-facts.json # the fluree commands its choreography names
│ └── skills/
│ └── fluree-companion/
│ ├── SKILL.md # stack-first operating doctrine
│ └── references/ # connect choreography, stack knowledge, playbooks
├── fluree-cli/
│ ├── .claude-plugin/
│ │ └── plugin.json
│ ├── README.md
│ ├── .mcp.json # auto-connects `fluree mcp serve --toolsets docs`
│ ├── commands/setup.md # /fluree-cli:setup
│ ├── contract/cli-facts.json # every CLI fact the plugin hard-codes (CI-checked)
│ └── skills/
│ └── fluree-cli/
│ ├── SKILL.md # probe-first operating doctrine
│ └── references/ # workflows, remote/Fluree AI, policy, troubleshooting
└── fluree-dataset-generator/
├── .claude-plugin/
│ └── plugin.json # plugin manifest (name, version, author)
├── README.md # plugin usage guide
└── skills/
└── fluree-dataset-generator/
├── SKILL.md # the skill's instructions to Claude
└── scripts/ # Python validators run during generation
Both companions defer their reference material to a producer — the fluree binary's embedded
docs, and your stack's own served docs — so they can't go stale when either one ships a new
release. The few facts their prose does hard-code live in a contract/ file per plugin and
are validated in CI against an artifact the producer publishes: cli-facts.json against the
fluree-cli-manifest.json release asset from fluree/db, and stack-facts.json against the
generated router endpoint manifest from fluree/solo. If a release changes something a plugin
says, CI fails here before a user hits it.
- Create
plugins/<plugin-name>/with a.claude-plugin/plugin.json:{ "name": "<plugin-name>", "description": "<one-liner>", "version": "1.0.0", "author": { "name": "Fluree Dev Rel" } } - Add the plugin's capabilities — e.g. a Skill under
skills/<skill-name>/SKILL.md(plus any bundled scripts), or commands/agents/hooks per the plugin reference. - Register it in
.claude-plugin/marketplace.jsonunderplugins:{ "name": "<plugin-name>", "source": "./plugins/<plugin-name>", "description": "<one-liner>", "version": "1.0.0" } - Write a
plugins/<plugin-name>/README.mdand link it from the table above. - Commit, push, and have testers run
/plugin marketplace update fluree-pluginsto pull it.
Keep version in plugin.json and marketplace.json in sync, and bump it on changes so
users get updates.
- Claude Code plugin docs: https://code.claude.com/docs/en/discover-plugins
- Maintained by Fluree Dev Rel.