diff --git a/CHANGELOG.md b/CHANGELOG.md index 80f44c5..24256af 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,15 @@ All notable changes are documented here. This project follows semantic versioning for tagged releases. +## [0.1.2] - 2026-08-11 + +### Changed + +- Added a multilingual README quality gate that requires natural target-language + writing plus semantic parity with the canonical document. +- Stopped generating generic GitHub Traffic disclaimer paragraphs beneath + Repository Pulse in either English or translated READMEs. + ## [0.1.1] - 2026-08-11 ### Changed @@ -23,5 +32,6 @@ versioning for tagged releases. - Token-safe Repository Pulse installer and white-background SVG renderer. - English and Simplified Chinese repository documentation. +[0.1.2]: https://github.com/JNHFlow21/open-source-launch/compare/v0.1.1...v0.1.2 [0.1.1]: https://github.com/JNHFlow21/open-source-launch/compare/v0.1.0...v0.1.1 [0.1.0]: https://github.com/JNHFlow21/open-source-launch/releases/tag/v0.1.0 diff --git a/README.md b/README.md index 8de2fde..d162d75 100644 --- a/README.md +++ b/README.md @@ -112,7 +112,7 @@ release, and live readback path. ### Public repository productization - LICENSE, SECURITY, CONTRIBUTING, CI, releases, and support routes that match the real maintenance model; -- evidence-backed English README plus synchronized translations when needed; +- evidence-backed canonical README plus synchronized, natural translations that read as native product pages; - focused GitHub description, topics, social preview, natural search language, and stable citation routes; - optional privacy-safe repository activity chart near the end of the README. @@ -239,9 +239,6 @@ that could expose a credential, private repository, personal data, or exploit. [![Repository Pulse for JNHFlow21/open-source-launch](https://raw.githubusercontent.com/JNHFlow21/open-source-launch/metrics/repository-metrics.svg)](https://github.com/JNHFlow21/open-source-launch) -GitHub Traffic values are a dated rolling 14-day owner snapshot; public stars, -forks, and commits refresh automatically. - ## Contributing, security, and license - Read [CONTRIBUTING.md](CONTRIBUTING.md) before opening a pull request. diff --git a/README.zh-CN.md b/README.zh-CN.md index 2947537..5a2113b 100644 --- a/README.zh-CN.md +++ b/README.zh-CN.md @@ -107,7 +107,7 @@ https://github.com/JNHFlow21/open-source-launch/tree/main/skills/open-source-lau ### 公共仓库产品化 - 与实际维护模式相符的 LICENSE、SECURITY、CONTRIBUTING、CI、Release 和支持入口; -- 有证据支撑的英文主 README,以及按需同步的翻译; +- 有证据支撑的主 README,以及内容同步、表达自然、可以独立阅读的多语言版本; - 聚焦的仓库描述、Topics、Social Preview、自然搜索语言和稳定引用路径; - 放在 README 靠后位置的可选隐私安全仓库活动图。 @@ -228,9 +228,6 @@ python3 -m compileall -q skills/open-source-launch [![JNHFlow21/open-source-launch Repository Pulse](https://raw.githubusercontent.com/JNHFlow21/open-source-launch/metrics/repository-metrics.svg)](https://github.com/JNHFlow21/open-source-launch) -GitHub Traffic 数值是带日期的 14 天滚动 Owner 快照;公开 Stars、Forks 和 -Commits 会自动刷新。 - ## 贡献、安全与许可证 - 提交 PR 前请阅读 [CONTRIBUTING.md](CONTRIBUTING.md)。 diff --git a/skills/open-source-launch/SKILL.md b/skills/open-source-launch/SKILL.md index 74d236a..f9e25bd 100644 --- a/skills/open-source-launch/SKILL.md +++ b/skills/open-source-launch/SKILL.md @@ -154,6 +154,23 @@ Default order: Keep product activity charts near the end. Stars, clone counts, and visitor counters are supporting social proof, not proof that the product works. +For multilingual repositories, treat every README as a real landing page, not +as machine-translated exhaust: + +- keep section order, capability claims, commands, examples, links, maturity, + and trust boundaries synchronized with the canonical README; +- translate meaning and user intent rather than English syntax; use natural + terminology, sentence rhythm, and headings for the target language; +- remove duplicated explanation, internal-maintainer context, and operational + detail that does not help a new user reach first value; +- never let a hard-coded release number or configuration rule drift in only one + language; +- review each translation on its own, then run a cross-language parity pass. + +Do not append generic prose beneath Repository Pulse. Its SVG already labels +the metric window, snapshot date, and refresh behavior. Add surrounding prose +only when the repository has a project-specific caveat the chart cannot show. + ## Phase 6 — Improve discovery without SEO theater Read [`references/discovery-contract.md`](references/discovery-contract.md). diff --git a/skills/open-source-launch/references/readme-contract.md b/skills/open-source-launch/references/readme-contract.md index ad40a66..02754db 100644 --- a/skills/open-source-launch/references/readme-contract.md +++ b/skills/open-source-launch/references/readme-contract.md @@ -32,6 +32,33 @@ belong above product proof or the quick start. audience; place a language switch first and synchronize critical claims in stable siblings such as `README.zh-CN.md`. +## Multilingual quality gate + +A translated README must work as an independent product page for a native +reader. Do not accept a literal, sentence-by-sentence translation merely +because every English paragraph has a counterpart. + +For each maintained language: + +1. preserve the canonical section order, capability matrix, commands, example + outputs, links, maturity, costs, and trust boundaries; +2. rewrite headings and prose in natural target-language syntax and established + technical terminology; +3. keep the shortest useful explanation and move exhaustive implementation + detail to shared reference docs; +4. remove maintainer-only machine context, duplicated setup guidance, and stale + hard-coded versions; +5. render the document, validate code fences/tables/links, and compare it with + the canonical README for semantic—not necessarily line-for-line—parity. + +For Simplified Chinese, prefer direct Chinese developer prose over translated +English noun stacks or mixed-language headings. Keep product and protocol names +in English only when that is the familiar ecosystem term. + +Repository Pulse is self-describing. By default, place only the linked SVG in +the activity section; do not generate a generic English or Chinese paragraph +about Traffic windows, automatic refresh, or whether clones prove adoption. + ## Avoid - badge walls, decorative traffic counters, or Star History as product proof; diff --git a/skills/open-source-launch/scripts/install_repository_pulse.py b/skills/open-source-launch/scripts/install_repository_pulse.py index 3e09374..08f5fda 100755 --- a/skills/open-source-launch/scripts/install_repository_pulse.py +++ b/skills/open-source-launch/scripts/install_repository_pulse.py @@ -157,8 +157,7 @@ def readme_snippet(repository: str) -> str: repository_url = f"https://github.com/{owner}/{name}" return ( "## Repository activity\n\n" - f"[![Repository Pulse for {repository}]({raw_url})]({repository_url})\n\n" - "GitHub Traffic values are a dated rolling 14-day owner snapshot; public stars, forks, and commits refresh automatically." + f"[![Repository Pulse for {repository}]({raw_url})]({repository_url})" ) diff --git a/skills/open-source-launch/tests/test_repository_pulse.py b/skills/open-source-launch/tests/test_repository_pulse.py index 892141b..70a00f9 100644 --- a/skills/open-source-launch/tests/test_repository_pulse.py +++ b/skills/open-source-launch/tests/test_repository_pulse.py @@ -118,6 +118,18 @@ def test_workflow_uses_ephemeral_token_and_no_pull_request_trigger(self) -> None self.assertNotIn("secrets.", workflow) self.assertNotIn("pull_request:", workflow) + def test_readme_snippet_contains_only_heading_and_linked_chart(self) -> None: + snippet = INSTALL.readme_snippet("owner/demo") + + self.assertEqual( + snippet, + "## Repository activity\n\n" + "[![Repository Pulse for owner/demo](https://raw.githubusercontent.com/owner/demo/metrics/repository-metrics.svg)]" + "(https://github.com/owner/demo)", + ) + self.assertNotIn("GitHub Traffic values", snippet) + self.assertNotIn("proof", snippet.lower()) + if __name__ == "__main__": unittest.main()