Claude Code plugins and CLI tools for research, recall, refactoring, and developer automation.
Tribe started in this repository, but it has outgrown the bearly toolbox
boundary. The reusable coordination system is moving to its own repository:
github.com/beorn/tribe.
Target split:
| Surface | Future home | What it owns |
|---|---|---|
| Tribe product/docs | beorn/tribe |
Top-level architecture, install docs, protocol docs |
| Wire client | npm tribe-wire, bin tribe |
Unix-socket client, MCP stdio adapter, protocol CLI (tribe mcp, tribe send, tribe status) |
| Daemon | npm tribe-daemon, bin tribe-daemon |
Broker process, SQLite state, daemon plugin runtime |
| Claude Code integration | Tribe repo plugin package | Thin host integration and autostart wiring |
| km tent/SOP | km repo | @chief, @agent/N, beads, worktrees, integration workflow |
During the transition, the source still lives under plugins/tribe/ and
packages/tribe-client/ in this repository. New integration work should use
the target names above and avoid adding more Tribe-specific surface area to
bearly.
Install the marketplace, then pick the plugins you want:
# Add marketplace (one time)
claude plugin marketplace add beorn/bearly
# Install plugins
claude plugin install llm@bearly # Multi-LLM research
claude plugin install recall@bearly # Session history search
claude plugin install batch-refactor@bearly # Batch rename/refactor
claude plugin install github@bearly # GitHub notifications| Plugin | Type | What |
|---|---|---|
| github | MCP channel | GitHub notifications — build failures, PR activity, push events as channel messages |
| llm | CLI skill | Multi-LLM research — deep research, second opinions, multi-model debate |
| recall | CLI skill | Session history search — FTS5-indexed search with LLM synthesis and file recovery |
| batch-refactor | CLI skill | Batch rename, refactor, and migrate across files with confidence-based auto-apply |
| Plugin | Status | What |
|---|---|---|
| tribe | moving to beorn/tribe |
Cross-session coordination for agent sessions |
The marketplace is defined by .claude-plugin/marketplace.json; each
listed plugin carries its own .claude-plugin/plugin.json
manifest, which is the source of truth for that plugin's version.
Tribe (and any other MCP-channel plugin) can be wired into Claude Code two ways — one source, two routes:
- Marketplace route — for external users.
claude plugin marketplace add beorn/bearlythenclaude plugin install tribe@bearly. Claude Code resolves the plugin from this repo and caches it. - Inline
.mcp.jsonroute — for developers who vendor bearly as a git submodule. The host repo's.mcp.jsonpoints anmcpServersentry directly atvendor/bearly/plugins/tribe/server.ts. This always tracks the vendored submodule commit — no marketplace cache to go stale. (km uses this route.) The plugin'sserver.tsis a thin wrapper that imports@bearly/tribe-client/stdio; this is the pre-split workspace package. The target standalone package name istribe-wirewith atribebinary.
Do not enable both routes for the same plugin in one project — two tribe MCP registrations shadow
each other, and the cached marketplace copy can drift from the vendored source.
Some directories under plugins/ are internal-only — libraries or folded-away tools, not
installable Claude Code plugins. They have no .claude-plugin/plugin.json and are intentionally
absent from marketplace.json:
| Directory | Status |
|---|---|
plugins/injection-envelope |
Internal library (@bearly/injection-envelope, private) — prompt-injection defense |
plugins/shared-mcp |
Internal library (@bearly/shared-mcp, private) — shared MCP wire used by tribe etc. |
plugins/tty |
Retired — terminal-testing MCP folded into termless mcp (@termless/cli); no longer ships here |
Available via bun tools/<tool>.ts:
bun tools/llm.ts ask "question" # Ask other LLMs
bun tools/llm.ts ask --deep "topic" # Deep research with web search
bun tools/recall.ts "query" # Search session history
bun tools/refactor.ts --help # Batch refactoring CLI| Tool | What |
|---|---|
tools/worktree.ts |
Git worktree management with submodule support |
Three sibling packages on top of alien-signals. Each solves one data shape well; they compose for real apps.
| Your data is… | Reach for | What it gives you |
|---|---|---|
| A plain value (cursor, count, toggle) | alien-signals (upstream) |
The primitive. signal(value), computed(fn), effect(fn). Everything below builds on this. |
| A list that changes over time (rows, cards, todos) | alien-projections |
createProjection(list, { key, map, filter, sort }) — when one row changes, only that row re-computes. |
| An async fetch (API call, file load, DB query) | alien-resources |
createResource(fetcher) — .loading() / .error() / .refetch() + auto-cancels stale requests. |
| A tree / hierarchy (folders, outlines, nested UI) | alien-trees |
createTree(...) — "does any descendant have X?" / "inherit Y from any ancestor?" in O(1). |
A list of async-fetched trees of plain values uses all four together. For React apps, @silvery/signals bundles the whole family + hooks.
| Package | What |
|---|---|
| vitest-silvery-dots | Streaming dot reporter for Vitest, built with Silvery |
bun install
bun run typecheckgit submodule add git@github.com:beorn/bearly.git vendor/bearlyMIT