Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
作者提供的说明(英文原文)
i18n for coding agents: extract, check and translate an app's text, with drafts a person approves
这三项永远不会合并成一个分数:意见、测量和人气是不同的东西。
我们还没有为它写通俗的介绍。下面是我们从注册中心读取到的事实。
选择你使用的 AI 应用,然后复制设置。
你需要
你用的是哪个应用?
在上方选择你的应用。我们会记住它,下次按钮会显示“安装到 …”。
打开 Claude Desktop → Settings → Developer → Edit Config,把下面的内容粘贴到 claude_desktop_config.json
{
"mcpServers": {
"verbaly": {
"command": "npx",
"args": [
"-y",
"@verbaly/mcp"
]
}
}
}在终端中运行这条命令
claude mcp add verbaly -- npx -y @verbaly/mcp粘贴到项目中的 .cursor/mcp.json,或 ~/.cursor/mcp.json
{
"mcpServers": {
"verbaly": {
"command": "npx",
"args": [
"-y",
"@verbaly/mcp"
]
}
}
}浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。
粘贴到项目中的 .vscode/mcp.json
{
"servers": {
"verbaly": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@verbaly/mcp"
]
}
}
}浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。
这个服务器在你的电脑上运行,而 ChatGPT 只能连接互联网上的服务器。请选择其他应用。
你的选择通过 Cookie 保存在这台设备上,无需账户。
这些设置是根据作者在注册中心的条目生成的。如果 README 的写法不同,请以 README 为准。
它在你的电脑上运行;安装后,工具列表会显示在你的 AI 应用中。
我们检查的是任何人都能看到的信息;我们没有阅读代码。不适用的检查项不计入总数。 · 检查于 2026年11月7日
注册名称已通过 GitHub 账户 AronSoto 验证,该账户拥有此仓库
我们还没有从 GitHub 读取这个仓库
我们还没有从 GitHub 读取这个仓库
它在你的电脑上运行,没有互联网端点
在你的电脑上运行,改用本地设置
它在你的电脑上运行;我们只能读取互联网端点的工具列表
与注册中心里这个分类中所有活跃的服务器比较。只有当发布者拥有该仓库时,星标数才计入。
它在 1 项适用的基础检查中通过了 1 项。我们没有阅读代码。在添加密钥或令牌之前,请先看看这个服务器要求哪些权限,并使用只具备所需权限的密钥。
注册中心没有列出必需的密钥,不过有些服务器会在首次使用时要求你登录。
它在你的电脑上运行。你的 AI 应用会在需要时启动它,数据不会经过作者的服务器(除非它自己调用在线服务)。
GitHub 仓库最后更新于–,最新版本(0.79.0)于4天前进入注册中心。
支持 MCP 的应用,例如 Claude Desktop、Claude Code、Cursor 和 VS Code。你的电脑上还需要有 Node.js。
同一分类中有:Spec Driven Development, Remote Desktop Commander, Starreel
同一分类中其他作者的服务器,按星标数排序。
如何看卡片:★ GitHub 星标i三大支柱:评价 · 检查 · 使用情况i更新 = 最新版本发布到注册中心的时间i
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.
Turn a script into a finished, downloadable short-drama episode — via MCP or REST.
按原文从作者的仓库复制。PopNx MCP 没有审查或背书其内容。HTML、图片和脚本已被移除。链接会离开本站。
Write your text in the code. Ship it in every language.
An i18n compiler and a tiny runtime for React, Vue, Svelte, Next.js, Nuxt, SvelteKit, Astro and plain HTML.
No key files to keep in sync, params typed from the text, and a CI gate that stops broken translations.
Most i18n tools ask you to invent a key for every sentence, write it in a file per language and keep the files in step with the code by hand. Verbaly turns that around:
// with key files: name it, write it in en.json, es.json, pt.json, keep them in sync
t('dashboard.welcome_back', { name });
// with Verbaly: write the sentence where it is used tWelcome back, ${name};
// and the compiler writes a stable key and a typed call for you t('ESsQIvlA', { name });
The runtime that ships is 3.35 KB gzip with zero dependencies, measured on every release by a gate in this repo (pnpm --filter verbaly size).
pnpm add verbaly @verbaly/vite
pnpm add -D @verbaly/compiler # the verbaly command: init, extract, check npx verbaly init
// vite.config.ts
import verbaly from '@verbaly/vite';
export default { plugins: [verbaly()] };
// anywhere in your app: extracted and typed on save
import { t, setLocale } from 'verbaly/app';
tHello ${name}; await setLocale('es'); // loads only the Spanish module
verbaly/app is your project's own module: the plugin writes it from your config, with your languages and catalogs already in it. Next.js, Nuxt, SvelteKit and Astro have their own one-line setup: pick yours in the row above, or read the full docs at https://verbaly-web.vercel.app/docs.
✍️ No key files You write the sentence. The compiler names it and keeps every language file in step with your code. 🧷 Typed from the text {name} , plurals, currency and dates come from the message itself, so a wrong or missing param fails to compile. 🛑 Broken ones never ship verbaly check catches a missing translation, and one that lost a {param} , a tag or a plural case, in plain words.
🪶 Small and fast Zero dependencies, one module per language, and a hot path benchmarked against i18next on every release. 🔄 Any workflow Plain JSON, XLIFF, CSV and gettext PO for translators, Android and iOS exports, and AI drafts a person approves. 🤖 Agent ready An MCP server, an Agent Skill and llms.txt , with drafts an agent can write but never approve.
npx verbaly-studio
Studio serves your project over localhost: what is missing, what is broken, what a machine wrote and where each text lives in your code. Your JSON files are the database and git is the history, a save runs the same validations as verbaly check, and it never edits your source text.
| Verbaly | i18next | Lingui | Paraglide | typesafe-i18n | |
|---|---|---|---|---|---|
| Type-safe keys & params | ✅ inferred from text | plugin/manual | partial | ✅ | ✅ |
| Runtime size (gzip) | 3.35KB, zero deps | 13.6KB (19.0 +react) | 2.2KB (3.3 +react) | compiled | 1.2KB |
| Setup | 1 Vite plugin | heavy config | macros + Babel/SWC | inlang project | generator |
| Key maintenance | none, extracted | by hand | extract → compile step | by hand | by hand |
| Dynamic / CMS content | ✅ real runtime path | ✅ | ✅ | ⚠️ weak | ✅ |
| Plain HTML (no framework) | ✅ DOM interpreter | ❌ | ❌ | ❌ | ❌ |
| Missing-translation gate | ✅ fails CI only | runtime warning | CI step | ✅ | ❌ |
| Broken-translation gate | ✅ fails CI only | ❌ | ❌ | ❌ | ❌ |
| Catalog format | plain JSON | JSON | PO/JSON | inlang format | TS files |
Sizes are min+gzip of each library's main entry with React external, measured with the same method on 2026-10-15.
claude mcp add verbaly -- npx -y @verbaly/mcp
The MCP server gives your agent the whole cycle as tools, with structured output and resources to read your config and catalogs. Machine translations stay drafts until a person approves them (verbaly review --approve, or Studio): approving is deliberately not a tool. The Agent Skill teaches the write, extract, check and translate cycle (npx degit AronSoto/verbaly/skills/verbaly .claude/skills/verbaly), and the docs publish llms.txt.
| Package | What it is |
|---|---|
verbaly | The runtime: t, Intl formats, locale helpers and the DOM interpreter |
@verbaly/compiler | Extraction, typed codegen, the gate and the verbaly command |
@verbaly/vite · @verbaly/unplugin | Bundler plugins: Vite, and webpack, Rollup, esbuild and Rspack |
@verbaly/react · @verbaly/vue · @verbaly/svelte | Framework adapters: hooks or composables plus |
@verbaly/next · @verbaly/nuxt · @verbaly/sveltekit | Server rendering: the language per request, hydration with no flash |
@verbaly/astro | Astro integration: .astro extraction and a static build per language |
@verbaly/mcp | MCP server: the translation cycle as tools for an agent |
@verbaly/studio | The local review panel above |
All of them share one version number, and every release is published from CI with npm provenance.
Editor: see the text behind a key on hover
Generated keys are hashes, so t('a1B2c3D4') in a diff tells you nothing. The i18n-ally extension shows the real text inline once you point it at your catalogs. Two files, no Verbaly config changes:
.vscode/settings.json
{
"i18n-ally.localesPaths": ["locales"], "i18n-ally.keystyle": "flat", "i18n-ally.sourceLanguage": "en", "i18n-ally.display
只显示了开头部分;其余内容请在仓库中阅读