内容
<p align="center">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="./assets/logo-dark.png">
<img alt="Basalt" src="./assets/logo.png" width="420">
</picture>
</p>
<h1 align="center">Basalt — 从您的 AI 代理发布内容</h1>
<p align="center">
<a href="./LICENSE"><img src="https://badgen.net/badge/license/MIT/blue" alt="MIT 许可证"></a>
<a href="https://skills.sh"><img src="https://badgen.net/badge/agents/70+/black" alt="70+ 代理"></a>
<a href="https://github.com/cofoundy/basalt-plugin"><img src="https://badgen.net/badge/npx%20skills%20add/cofoundy%2Fbasalt-plugin/green" alt="npx skills add cofoundy/basalt-plugin"></a>
</p>
<!-- skills.sh badge stays out until the repo is indexed (post-install telemetry) — a 404 badge reads as broken:
[](https://skills.sh/cofoundy/basalt-plugin) -->
**您的 AI 写出了优秀的内容。现在它可以在一个 URL 上让您的同事访问。** 告诉您的代理 *发布* 或 *分享* 文档,它会收敛到 [Basalt](https://app.basalt.cofoundy.ai) — AI 生成内容的信任层。Markdown 输入 → 带有品牌、权限和版本的 URL 页面。不需要复制到 gist 中,不需要发送文件,不需要在聊天记录中查找。
**之前:** 您的代理的优秀内容都死在了终端里,或者落在一个没有权限、没有历史记录、没有审查的临时 gist 中。
**之后:** 只需一句“发布它” — 然后您就得到了一个可以直接发送的 live URL。该页面受到管理、有版本控制,您的同事可以评论。*公司记住。*
<p align="center">
<img src="./assets/readme/workflow.svg" width="100%" alt="四步:您要求您的代理发布;它读取您的 workspace 约定;publish_doc 编译、版本并应用权限;您获得一个可以直接发送的 live URL。">
</p>
## 您将获得
- **可分享的链接,而不是文件。** `publish_doc` 返回一个 live URL — 这就是交付的内容。发送它;您的同事可以直接在 URL 上阅读和审查。
- **它以您的身份写作。** 代理继承了您在 MCP 上的 Basalt 权限 — 它看到并更改的内容与您相同,绝不会更多。
- **零输入。** 捆绑的技能会自动触发“发布此内容 / 分享此文档 / 文档”,无需记忆命令。(当然,也有一个 `/basalt` 命令。)
- **默认受管辖。** 有版本控制、权限控制、审查 — 因为 AI 生成的内容应该成为组织的真相,而不是聊天记录。
## 安装
**作为 Claude Code 插件**(MCP 服务器 + 技能 + `/basalt` 命令,一次安装):
```
/plugin marketplace add cofoundy/basalt-plugin
/plugin install basalt@basalt
```
**或仅作为技能**,在 70 多个代理(Claude Code、Codex、Cursor、OpenCode...)中的任意一个,通过 [开放代理技能生态系统](https://skills.sh):
```
npx skills add cofoundy/basalt-plugin
```
当您的代理第一次调用 Basalt 工具时,会打开一个浏览器登录(OAuth)窗口 — 批准一次,您就与您的工作空间连接成功了。这就是唯一的设置。
## 使用它
只需用自然语言要求:
> “编写我们的 auth 服务文档并 **发布它**,以便团队可以审查。”
代理会查看您的工作空间约定,编写文档,调用 `publish_doc`,然后为您提供一个 **live URL**。发送该链接 — 完成。
## 它可以做什么
连接后,您的代理可以(在您的权限范围内):
- 读取您有权访问的任何文档 — `list_docs`、`search_docs`、`read_doc`。
- 按 URL 发布和更新文档,带有版本控制 — `publish_doc`、`update_doc`。
- 与同事或客户分享文档 — `set_access`。
- 读取审查评论、提出更改并重新发布 — 完整的审查循环。
## 内部结构
一个带有 MCP 的 Claude Code 插件(与官方 Figma 插件相同):
```
plugins/basalt/
├── .claude-plugin/plugin.json # 插件清单
├── .mcp.json # Basalt MCP 服务器(HTTP + 每用户 OAuth)
├── commands/basalt.md # /basalt 命令
├── skills/basalt/SKILL.md # 自动调用的技能(其描述是魔术)
└── hooks/ # 三个会话边界钩子(默认为静默)
```
插件**不存储任何密钥** — 它指向公共 MCP 端点,身份验证是每用户 OAuth。它是一个薄而诚实的入口;产品存在于 Basalt 中。
## 会话钩子(除非有事要做,否则保持静默)
三个钩子仅在会话边界触发,**默认为静默** — 除非需要,否则会产生噪音的钩子毫无价值:
- **会话开始时** — 如果您未登录,代理会收到一行,以便在第一次发布失败前提供 `basalt login`。已登录?无操作。
- **您工作时** — `vault.yaml` 下的文件编辑会被静默跟踪(无网络,无输出)。
- **转到下一行时** — 如果您编辑了 vault 文档但未发布,会显示一行询问是否发布。在该 `vault.yaml` 中设置 `publish: auto`,它会为您发布更改的文件(差异感知,每次一个回合 — 绝不会在每个按键上)。每个 vault 的策略存在于 `vault.yaml` 中:`publish: prompt`(默认)· `auto` · `manual`。每个钩子都附带针对**真实捕获的 Claude Code 负载**的测试(`hooks/tests/run.sh`)— 静默钩子如果静默无效,则毫无价值。
## 已经有 git 中的文档?
使用 [`basalt` CLI](https://www.npmjs.com/package/basalt-cli) 代替 — 它同步 git 仓库的差异感知,并将 git 作为真相源。此插件(MCP)适用于**在对话中生成的内容**;CLI 适用于已经存在于仓库中的内容。
## MCP 端点
```
https://app.basalt.cofoundy.ai/api/mcp
```
无需粘贴令牌 — 第一次调用会在浏览器中运行 OAuth。无头/CI 调用者可以使用静态 bearer(参见 Basalt 文档)。
## 贡献
参见 [CONTRIBUTING.md](./CONTRIBUTING.md)。在 PR 前运行 `bash scripts/validate-skills.sh`。
## 许可证
MIT — 参见 [LICENSE](./LICENSE)。由 [Cofoundy](https://cofoundy.dev) 开发和维护。
_Basalt 是 [Cofoundy](https://cofoundy.dev) 的产品。**代理创建。Basalt 管理。人类决策。公司记住。**_
<sub>从 AI 代理发布文档 · Claude Code MCP 插件 · 发布和分享 markdown 的代理技能,由 URL · 受管辖、权限控制、版本化的 AI 文档 · Claude, Codex, Cursor, OpenCode</sub>