Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,15 @@
All notable changes are documented here. This project follows semantic
versioning for tagged releases.

## [0.1.2] - 2026-08-11

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Update citation metadata for the 0.1.2 release

This declares 0.1.2 as a dated release, but CITATION.cff still advertises version: 0.1.1. If v0.1.2 is tagged from this revision, citation tools and GitHub's citation UI will therefore provide stale release metadata; update the CFF version alongside the changelog, as was done for 0.1.1.

Useful? React with 👍 / 👎.


### 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
Expand All @@ -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
5 changes: 1 addition & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.

Expand Down Expand Up @@ -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.
Expand Down
5 changes: 1 addition & 4 deletions README.zh-CN.md
Original file line number Diff line number Diff line change
Expand Up @@ -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 靠后位置的可选隐私安全仓库活动图。

Expand Down Expand Up @@ -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)。
Expand Down
17 changes: 17 additions & 0 deletions skills/open-source-launch/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -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).
Expand Down
27 changes: 27 additions & 0 deletions skills/open-source-launch/references/readme-contract.md
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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})"
)


Expand Down
12 changes: 12 additions & 0 deletions skills/open-source-launch/tests/test_repository_pulse.py
Original file line number Diff line number Diff line change
Expand Up @@ -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()