{"slug": "show-hn-algebras-harness-localize-apps-games-from-claude-code", "title": "Show HN: Algebras Harness – Localize Apps/Games from Claude Code", "summary": "Algebras released the Algebras Harness, an MCP-based localization workflow that lets coding agents including Claude Code, Cursor, Codex, Windsurf and GitHub Copilot translate apps and games, run automated QA and write fluency scores to fluency_report.csv. The agent connects to the MCP server at https://platform.algebras.ai/api/mcp using an ALGEBRAS_API_KEY, follows one of five project-type flows (games, edtech, fintech, saas, general), and leaves results on a new git branch named algebras/localize-<date> for review. Fluency scoring is offered at four settings — none, isolated, context and both — with approximate per-string cost of N, 2N+10, N+10 and 2N+20 tokens for an N-word string, and Algebras notes the scores are a self-check of the agent's own translation rather than an independent review.", "body_md": "AI-powered localization workflow with automated QA and real-time fluency scoring via [Algebras](https://platform.algebras.ai).\n\nWorks with Claude Code, Cursor, Codex, Windsurf, GitHub Copilot, or any agent that supports MCP tools.\n\n**AI agents:** asked to localize a project with Algebras? Read **[AGENTS.md](https://github.com/algebras-ai/algebras-agent/blob/main/AGENTS.md)** and follow it step by step. In short:\n\n- Read the API key from\n`ALGEBRAS_API_KEY` (environment or `.env`).- Connect the MCP server\n`https://platform.algebras.ai/api/mcp` with header `x-api-key: <key>`.- Use the\n`Project type:` flow from [`plugin/PROJECT_TYPES.md`](https://github.com/algebras-ai/algebras-agent/blob/main/plugin/PROJECT_TYPES.md) (`games`, `edtech`, `fintech`, `saas`, or `general`).- Run the workflow in\n[`plugin/CLAUDE.md`](https://github.com/algebras-ai/algebras-agent/blob/main/plugin/CLAUDE.md): onboard → glossary → translate → qa.\n\n1. \nOpen **[platform.algebras.ai/translation/agent](https://platform.algebras.ai/translation/agent)** , create an API key, and save it as`ALGEBRAS_API_KEY` in your project's environment or`.env` .\n2. \nOpen your repo in Claude Code, Codex, Cursor, Windsurf, Copilot, or any coding agent, and paste the prompt from that page: \n\n```\nLocalize this project with Algebras.\nFollow the instructions in https://github.com/algebras-ai/algebras-agent\nUse the API key from ALGEBRAS_API_KEY.\nProject type: <games|edtech|fintech|saas|general>\nUse the <type> flow from the agent instructions.\n```\n\n3. \nThe agent connects to Algebras, builds your localization context, translates, runs QA, and leaves the result on a new git branch ( `algebras/localize-<date>` ) for you to review like any other change.\n\nTo install the agent permanently in your tool instead (plugin or MCP config), see [Install](#install).\n\n| Type | Use it for | The flow emphasizes | \n|---|---|---|\n| `games` | Games | UI, quests, item names, lore | \n| `edtech` | Education products | Lessons, quizzes, course pages | \n| `fintech` | Payments, banking, wallets, insurance | Money states, fees, disclaimers, statements | \n| `saas` | Software products | App UI, emails, help center | \n| `general` | Any other project | Detected from your files, per file | \n\nEach flow is defined in [`plugin/PROJECT_TYPES.md`](https://github.com/algebras-ai/algebras-agent/blob/main/plugin/PROJECT_TYPES.md).\n\nDuring onboarding the agent asks which fluency checks to run, and records the answer in `project.json` (add e.g. `Fluency: context` to the prompt to answer up front):\n\n| Setting | What is scored | Approx. cost per string of N words | \n|---|---|---|\n| `none` | Nothing | N | \n| `isolated` | A no-glossary translation, scored on its own (context-free) | 2N + 10 | \n| `context` | The written translation, scored with its neighbor strings and approved choices (context-aware) | N + 10 | \n| `both` | Both scores | 2N + 20 | \n\nScores land in `fluency_report.csv`. They are a self-check of the agent's own translation, not an independent review.\n\nPut any brief, style guide, character list, glossary, or screenshots in the project folder next to the translation files. Any file name is fine — the agent classifies files by their contents. What to include, and which facts each target language forces, is in [`plugin/CONTEXT_REQUIREMENTS.md`](https://github.com/algebras-ai/algebras-agent/blob/main/plugin/CONTEXT_REQUIREMENTS.md). Missing context doesn't block translation: the agent asks at most five questions and writes the rest to `client_questions.md` for you to forward to the client.\n\n| **Glossary** | Extracted from your code and UI strings, checked against established translations, and confirmed by you. Stored on the Algebras platform. | \n| **Translation memory** | Translations already in your repo are kept and reused as the reference for terminology and style. They aren't translated again. | \n| **Context files** | Specs, docs, lore and style guides found in your repo are classified by what they cover and read before glossary extraction and each translation batch. | \n| **Context facts** | Who speaks, to whom, formal or informal, what a placeholder stands for — recorded only from a cited source ( `context_pack.json` ,`context_facts.jsonl` ). Open points go to`client_questions.md` , and the translation avoids committing to them. | \n| **Screenshots** | Screenshots already in your repo are linked to strings by column or file name and used as context. Automatic capture is coming soon. | \n\n**Note:** Plugin commands require the Claude Code CLI (`claude` in your terminal). They are not available in the Claude Code web app or desktop app.\n\nRun these commands in the Claude Code CLI from your project directory:\n\n```\nclaude plugin marketplace add algebras-ai/algebras-agent\nclaude plugin install algebras-agent@algebras-agent\n```\n\nThen start an interactive session and run the setup skill — it opens your browser for the API key, copies workflow files into your project, and saves the key to `.env`:\n\n```\nclaude\n/algebras-agent:setup\n```\n\nThe MCP server connects automatically once the plugin has your API key (declared in `plugin.json`). If you need to reconfigure the key later:\n\n```\n/plugin configure algebras-agent\n/reload-plugins\n```\n\nAdd the Algebras plugin marketplace, then install the plugin from Codex:\n\n```\ncodex plugin marketplace add algebras-ai/algebras-agent\ncodex\n```\n\nInside Codex, open the plugin browser:\n\n```\n/plugins\n```\n\nInstall `algebras-agent`, then run the setup skill:\n\n```\n$setup\n```\n\nRestart Codex when prompted. You can verify the Algebras MCP server from:\n\n```\n/mcp\n```\n\nThe plugin does not start the MCP server until setup saves your Algebras API key. If `/mcp` shows an unauthenticated `algebras` startup error from an earlier install, remove the old plugin install or delete the stale `algebras` MCP entry, run `$setup`, and restart Codex.\n\nRun from your project root:\n\n```\ncurl -fsSL https://platform.algebras.ai/install | bash\n```\n\nThe script opens your browser for the API key, downloads the workflow files, and writes the MCP config automatically (`.cursor/mcp.json`, `.windsurf/mcp.json`, or `~/.codex/config.toml`).\n\nIf your agent isn't auto-detected, pass `--agent` explicitly:\n\n```\ncurl -fsSL https://platform.algebras.ai/install | bash -s -- --agent cursor\ncurl -fsSL https://platform.algebras.ai/install | bash -s -- --agent windsurf\ncurl -fsSL https://platform.algebras.ai/install | bash -s -- --agent codex\n```\n\nOnce installed, open your project in your agent and send:\n\n```\nTranslate this project.\n```\n\nAdd a project type to pick a flow, e.g. `Translate this project. Project type: saas`. Or paste the full prompt from the [Quick start](#quick-start) — it works with or without the install step.\n\nThe agent onboards your project, builds a glossary, translates, and runs QA, asking you to confirm at each step. In a git repository it works on its own branch and commits the result at the end.\n\n| File | Purpose | \n|---|---|\n| `CLAUDE.md` | Workflow for Claude Code and Claude Desktop | \n| `AGENTS.md` | Workflow for OpenAI Codex / Agents | \n| `.cursorrules` | Workflow for Cursor | \n| `.windsurfrules` | Workflow for Windsurf | \n| `.github/copilot-instructions.md` | Workflow for GitHub Copilot | \n| `PROJECT_TYPES.md` | The `games` ,`edtech` ,`fintech` ,`saas` and`general` flows | \n| `CONTEXT_REQUIREMENTS.md` | Client context the agent expects, the fact model, and which facts each target language forces | \n| `COMMON_MISTAKES.md` | Error taxonomy from real-world LQA | \n| `skills/<phase>/SKILL.md` | The phases: `onboard` ,`glossary` ,`translate` ,`qa` , plus optional`glossary-dedupe` | \n\n[`AGENTS.md`](https://github.com/algebras-ai/algebras-agent/blob/main/AGENTS.md) at the repository root is the entry point for agents that follow this repo's URL without installing anything.\n\nAutomate translation in any repo's CI pipeline — no manual setup required.\n\n1. \nAdd these secrets in your repo: **Settings → Secrets and variables → Actions** Secret Value `ALGEBRAS_API_KEY` From [platform.algebras.ai/api-keys](https://platform.algebras.ai/api-keys)`ANTHROPIC_API_KEY` From [console.anthropic.com](https://console.anthropic.com)\n2. \nCopy `.github/workflows/translate.example.yml` from this repo into your project's`.github/workflows/` and adjust the`paths` trigger to match your locale files.\n3. \nPush to `main` (or trigger via**Actions → Translate → Run workflow** ).\n\nOn each run the action:\n\n1. Downloads the latest workflow prompt files from this repo\n2. Checks `project.json` — exits early if all strings are already translated (`skip-if-complete: true` )\n3. Writes a temporary MCP config pointing to the Algebras platform\n4. Installs the Claude CLI and runs it non-interactively against your project\n5. The agent runs the full workflow: **Onboard → Glossary → Translate → QA** (skips phases that are already done)\n6. Detects changed files via `git diff` ; commits and pushes (or opens a PR)\n\n| Input | Default | Description | \n|---|---|---|\n| `algebras-api-key` | — | **Required.** Algebras API key | \n| `llm-provider` | `anthropic` | `anthropic` or`gemini` | \n| `anthropic-api-key` | — | Required if provider is `anthropic` | \n| `gemini-api-key` | — | Required if provider is `gemini` | \n| `algebras-platform-url` | `https://platform.algebras.ai` | Override for self-hosted | \n| `commit-changes` | `true` | Commit translated files | \n| `create-pr` | `false` | Open a PR instead of pushing directly | \n| `skip-if-complete` | `true` | Exit early if nothing needs translating | \n| `project-type` | `general` | Flow from `PROJECT_TYPES.md` :`games` ,`edtech` ,`fintech` ,`saas` , or`general` | \n| `fluency` | `isolated` | Fluency checks: `none` ,`isolated` (context-free),`context` (context-aware), or`both` | \n| `min-fluency-score` | *(empty)* | Fail if any string scores below this (1–10) | \n\n```\n- uses: algebras-ai/algebras-agent/.github/actions/algebras-translate@main\n  with:\n    algebras-api-key: ${{ secrets.ALGEBRAS_API_KEY }}\n    anthropic-api-key: ${{ secrets.ANTHROPIC_API_KEY }}\n    commit-changes: \"true\"\n    create-pr: \"false\"\n```\n\n- Python 3.10+ (for QA tools)\n- An [Algebras](https://platform.algebras.ai) account", "url": "https://wpnews.pro/news/show-hn-algebras-harness-localize-apps-games-from-claude-code", "canonical_source": "https://github.com/algebras-ai/algebras-agent", "published_at": "2026-10-20 13:04:59+00:00", "updated_at": "2026-10-20 13:17:42.381503+00:00", "lang": "en", "topics": ["ai-agents", "agent-protocols", "ai-tools", "developer-tools", "artificial-intelligence"], "entities": ["Algebras", "Algebras Harness", "Claude Code", "Cursor", "Codex", "Windsurf", "GitHub Copilot", "Model Context Protocol"], "also_reported_by": [], "alternates": {"html": "https://wpnews.pro/news/show-hn-algebras-harness-localize-apps-games-from-claude-code", "markdown": "https://wpnews.pro/news/show-hn-algebras-harness-localize-apps-games-from-claude-code.md", "text": "https://wpnews.pro/news/show-hn-algebras-harness-localize-apps-games-from-claude-code.txt", "jsonld": "https://wpnews.pro/news/show-hn-algebras-harness-localize-apps-games-from-claude-code.jsonld"}}