readme-generate
從原始碼分析自動生成雙語 README。當使用者請求為專案建立 README、需要從程式碼庫生成 README.md(英文)和 README.zh.md(中文)、或希望為其函式庫/套件建立一致的多語言文件時使用。
ソース情報
- リポジトリ
- agenvoy/skill-readme-generate
- ソースの最終更新活動
- 2026年10月7日 10:43
- 検出された SKILL.md の言語
- 中国語
- スター
- 5
- フォーク
- 0
インストール方法
デフォルトでは、最初にソースを確認する Prompt が選択されています。直接コマンドに切り替えるか、ローカルコピーをダウンロードすることもできます。
ソースファイルを確認
インストールを決める前に、SKILL.md と SkillsMP に表示されている付属ファイルをお読みください。
SKILL.md を表示中
SKILL.md
ソースの指示 · 読み取り専用プレビュー- name
- readme-generate
- description
- 從原始碼分析自動生成雙語 README。當使用者請求為專案建立 README、需要從程式碼庫生成 README.md(英文)和 README.zh.md(中文)、或希望為其函式庫/套件建立一致的多語言文件時使用。
# README 產生器
透過分析專案原始碼來生成專業的雙語 README 文件。
## 指令語法
```
/readme-generate [private] [LICENSE_TYPE] [REPO_PATH]
```
### 參數(全部為選填)
| 參數 | 格式 | 範例 | 行為 |
|-----------|--------|---------|----------|
| `private` | 關鍵字 | `private` | 生成時不包含徽章和星標歷史 |
| `LICENSE_TYPE` | 授權識別碼 | `MIT`、`Apache-2.0` | 生成 LICENSE 檔案 |
| `REPO_PATH` | `github.com/{owner}/{repo}` | `github.com/foo/bar` | 覆蓋預設的擁有者/儲存庫 |
### 參數偵測規則
| 模式 | 偵測為 |
|---------|-------------|
| `private`(不區分大小寫) | `PRIVATE_MODE` 旗標 |
| 包含 `github.com/` | `REPO_PATH` |
| 符合已知授權類型(不區分大小寫) | `LICENSE_TYPE` |
**順序獨立**:參數可以任意順序出現。
### 支援的 LICENSE 類型
| 類型 | 別名(不區分大小寫) |
|------|----------------------------|
| MIT | `mit` |
| Apache-2.0 | `apache`、`apache2`、`apache-2.0` |
| GPL-3.0 | `gpl`、`gpl3`、`gpl-3.0` |
| BSD-3-Clause | `bsd`、`bsd3`、`bsd-3-clause` |
| ISC | `isc` |
| Unlicense | `unlicense`、`public-domain` |
| Proprietary | `proprietary`(隱含 `private` 模式) |
### 範例
```bash
/readme-generate # 全部重生成 + MIT(若無 LICENSE)
/readme-generate MIT # 全部重生成 + MIT LICENSE
/readme-generate private # 全部重生成,不含徽章/星標歷史
/readme-generate private MIT # 私有模式 + MIT LICENSE
/readme-generate proprietary # 私有模式 + Proprietary LICENSE
/readme-generate github.com/foo/bar # 全部重生成,使用自訂儲存庫路徑
```
---
## Step 0:作者設定(強制性 - 第一步)
**在執行任何動作前,必須先載入或建立作者設定。所有載入與建立都透過 `scripts/setup_config.py` 腳本完成。**
下文指令中的 `{skill_dir}` 為本 `SKILL.md` 所在目錄的絕對路徑,依當前執行環境實際載入位置代入。
### 設定檔位置
```
~/.skill-readme-generate.json
```
### 設定檔格式
```json
{
"author_name": "張三 John Doe",
"author_email": "dev@example.com",
"author_url": "https://linkedin.com/in/johndoe",
"github_owner": "johndoe"
}
```
### 執行協議(必須嚴格遵守)
**Step 0.1:檢查設定檔**
```bash
python3 {skill_dir}/scripts/setup_config.py check
```
| Exit Code | stdout | 意義 | 下一步 |
|-----------|--------|------|--------|
| `0` | 單行 JSON | 設定存在且完整 | 解析 JSON,載入 `{author_name}`、`{author_email}`、`{author_url}`、`{github_owner}`,跳到 Step 1 |
| `1` | (無) | 設定缺失或欄位不完整 | 進入 Step 0.2 |
**Step 0.2:收集使用者輸入**
當 Step 0.1 回傳 exit code `1` 時,**必須向使用者詢問**下列四個欄位(順序固定,全部必填):
| 欄位 | 提示文字 | 範例 |
|------|----------|------|
| `author_name` | 作者姓名(顯示於版權頁尾與 LICENSE) | `張三 John Doe` |
| `author_email` | 聯絡 Email | `dev@example.com` |
| `author_url` | 個人連結(LinkedIn、GitHub、個人網站皆可) | `https://linkedin.com/in/johndoe` |
| `github_owner` | GitHub 使用者名稱(用於預設 `{owner}`) | `johndoe` |
**Step 0.3:寫入設定**
將使用者的四個答案按順序傳給腳本的 `write` 子指令:
```bash
python3 {skill_dir}/scripts/setup_config.py write \
"{author_name}" "{author_email}" "{author_url}" "{github_owner}"
```
腳本會將設定寫入 `~/.skill-readme-generate.json` 並將該 JSON 印到 stdout(供 agent 解析載入)。後續執行可直接由 Step 0.1 讀取,不再詢問。
### 手動初始化(使用者自行執行)
使用者可在終端直接執行腳本以互動方式建立設定(適合首次設定或手動重置):
```bash
python3 {skill_dir}/scripts/setup_config.py
```
若檔案已存在,腳本會直接印出現有設定;若不存在則以 `input()` 逐欄詢問。
### 覆蓋機制
- 若指令列傳入 `REPO_PATH`(含 `github.com/{owner}/{repo}`),則 `{owner}` 使用指令列的值,其餘作者欄位仍從設定檔取得
- 使用者可隨時手動編輯 `~/.skill-readme-generate.json` 更新資訊,或刪除該檔以觸發重新設定
---
## 關鍵:必要輸出
**務必生成六個檔案:**
| 檔案 | 語言 | 用途 |
|------|----------|---------|
| `README.md` | 英文 | 主要文件(精簡,特色驅動) |
| `doc/README.zh.md` | 繁體中文(ZH-TW) | 中文文件(精簡,特色驅動) |
| `doc/doc.md` | 英文 | 詳細技術文件(安裝、使用、參考) |
| `doc/doc.zh.md` | 繁體中文(ZH-TW) | 中文詳細技術文件 |
| `doc/architecture.md` | 英文 | 詳細架構圖(完整 Mermaid) |
| `doc/architecture.zh.md` | 繁體中文(ZH-TW) | 中文詳細架構圖 |
**README 負責吸引人,doc 負責教會人,architecture 負責畫清楚。**
---
## 參數(從專案中提取)
| 參數 | 來源 | 範例 |
|-------|--------|---------|
| `{owner}` | `REPO_PATH` 覆蓋 > `~/.skill-readme-generate.json` 的 `github_owner` > `git remote` | `johndoe` |
| `{author_name}` | `~/.skill-readme-generate.json` 的 `author_name` | `張三 John Doe` |
| `{author_email}` | `~/.skill-readme-generate.json` 的 `author_email` | `dev@example.com` |
| `{author_url}` | `~/.skill-readme-generate.json` 的 `author_url` | `https://linkedin.com/in/johndoe` |
| `{date}` | 生成當日 `date +%Y-%m-%d`(Author 區段 contrib.rocks 的 `cache_bust`) | `2026-09-16` |
| `{updated}` | 各輸出檔的最後更新日期,見「最後更新日期」 | `2026-10-06` |
| `{repo}` | `REPO_PATH` 覆蓋或資料夾名稱或 `git remote get-url origin` | `go-scheduler` |
| `{package}` | `package.json` name、`go.mod` module、`pyproject.toml` name | `@aspect/utils` |
| `{year}` | 現有 README 年份或 `git log --reverse --format=%ai \| head -1` 或當前年份 | `2024` |
**優先順序**:指令列 `REPO_PATH` > `~/.skill-readme-generate.json` > 本地 git remote > 資料夾名稱
---
## 工作流程
```
0. 作者設定 → `scripts/setup_config.py check` 讀取 ~/.skill-readme-generate.json;缺失則詢問使用者後以 `write` 子指令建立
1. 解析 → 從指令中提取 PRIVATE_MODE、LICENSE_TYPE、REPO_PATH
2. 分析 → 在目標專案上執行 analyze_project.py
3. 提取 → 從專案取得 {repo}、{package}、{year}(或使用 REPO_PATH 覆蓋)
4. 檢視 → 檢查現有文件、LICENSE、範例;讀 `CHANGELOG.md`,「破壞性變更」全部項目逐項比對既有產物,命中即直接修改;回應中列出命中項與改動
5. 選特色 → 從分析結果中提煉出所有精妙且具代表性的專案特色
6. 生成 readme → 先建立 doc/README.zh.md,再翻譯為 README.md
7. 生成 doc → 先建立 doc/doc.zh.md,再翻譯為 doc/doc.md
8. 生成 architecture → 先建立 doc/architecture.zh.md,再翻譯為 doc/architecture.md
9. 授權 → 若指定 LICENSE_TYPE → 使用指定類型;若無 LICENSE 檔案且未指定 → 預設生成 MIT LICENSE
10. 驗證 → 依「驗證檢查清單」逐項確認
11. 儲存 → README.md 寫入專案根目錄;其餘檔案寫入 doc/ 子目錄(自動建立)
12. SEO → 以專案根執行 `/seo-optimize`:GitHub repo description/topics/homepage(R9),有 `wiki-worker/` 一併檢查(見順序 3「搭配 `/seo-optimize`」)
```
---
## 步驟 1:分析專案
```bash
python3 {skill_dir}/scripts/analyze_project.py /path/to/project
```
輸出:包含語言、名稱、版本、類型、函式、相依性的 JSON。
---
## 步驟 2:提取參數
```bash
# 如果提供 REPO_PATH,解析它:
# github.com/owner/repo → {owner}=owner, {repo}=repo
# 否則回退到:
# 取得儲存庫名稱
basename $(pwd)
# 或
git remote get-url origin | sed 's/.*\/\([^\/]*\)\.git/\1/'
# 取得首次提交年份
git log --reverse --format=%ai | head -1 | cut -d'-' -f1
# 取得套件名稱(Node.js)
jq -r '.name' package.json
# 取得模組名稱(Go)
sed -n 's/^module //p' go.mod
```
---
## 步驟 3:提煉專案特色
**這是整份 README 的核心。** 從分析結果中識別出所有精妙且能區分此專案的特色。
### 特色選擇原則
| 優先級 | 類型 | 範例 |
|--------|------|------|
| 最高 | 解決的核心問題 | 「透過統一 Agent 介面支援 5 家 AI 後端」 |
| 高 | 獨特的技術手段 | 「安全指令執行:rm 自動移至 .Trash」 |
| 中 | 開發者體驗差異 | 「互動式確認機制,支援 --allow 跳過」 |
| 低 | 通用能力 | 「支援多種語言」(太泛,避免) |
### 規則
- **數量限制:3–5 個**。少於 3 個代表提煉不夠深入,超過 5 個會稀釋焦點
- 若候選特色超過 5 個,**依優先級表合併或刪除**,保留最具區分度的 3–5 個
- 每個特色:一行標題(≤15 字)+ **一句話說明**(簡潔扼要)
- **不提供 code snippet** — 純文字描述核心價值
- **不做細節展開** — 不列舉子功能、不解釋實作細節、不提供參數說明
---
## 步驟 4:生成中文版本
**使用精確的區段順序建立 `README.zh.md`:**
### 區段順序(強制性)
| 順序 | 區段 | 必要 | 公開模式 | 私有模式 |
|-------|---------|----------|-------------|--------------|
| 0 | LLM 生成通知 + `***` | **是** | ✓ | ✓ |
| 1 | 置中封面圖片 | 否 | ✓ | **跳過** |
| 2 | 置中標語 + 置中徽章 + `***` | **是**(私有模式跳過) | 標語 + 徽章 | **跳過** |
| 3 | 簡短描述 | **是** | ✓ | ✓ |
| 4 | 目錄 | **是** | ✓ | ✓ |
| 5 | 功能特點(3–5 個精妙特色,list 呈現)| **是** | ✓ | ✓ |
| 6 | 架構(僅與特色相關)| 否 | ✓ | ✓ |
| 7 | 授權 | **是**(公開模式) | ✓ | **跳過** |
| 8 | 作者 | **是**(公開模式) | ✓ | **跳過** |
| 9 | 星標歷史 | 否 | ✓ | **跳過** |
| 10 | 版權頁尾 | 否 | ✓ | ✓ |
---
## 強制性區段(完全複製)
### 最後更新日期(六個輸出檔皆適用)
每個輸出檔開頭標示該檔的最後更新日期 `{updated}`:
| 檔案 | 位置 | EN | ZH |
|---|---|---|---|
| `README.md`/`doc/README.zh.md` | 檔案第一行(順序 0 之前),後接空行 | `Last updated: {updated}` | `最後更新:{updated}` |
| `doc/doc*.md`/`doc/architecture*.md` | `# 標題` 下一行,後接空行(h1 維持第一行) | 同上 | 同上 |
`{updated}` 取值:除日期行外的內容與既有檔相同 → 沿用既有日期並跳過寫入;內容有變或為新檔 → 生成當日 `{date}`。EN/ZH 各自判斷。
**為何:** 日期代表內容最後變動日,重生成沒有實質改動時換日期只會產生無意義的 diff,也讓讀者誤判內容新鮮度。文件站首頁鏡像 README 時會移除這一行,改由 `build.js` 依內容雜湊產生日期(與 sitemap `lastmod` 同值)。
### 順序 0:LLM 生成通知 + 分隔線
**英文(README.md):**
```markdown
> [!NOTE]
> This README was generated by [SKILL](https://github.com/agenvoy/skill-readme-generate), get the ZH version from [here](./doc/README.zh.md).
***
```
**中文(README.zh.md):**
```markdown
> [!NOTE]
> 此 README 由 [SKILL](https://github.com/agenvoy/skill-readme-generate) 生成,英文版請參閱 [這裡](../README.md)。
***
```
GitHubで見るこの SKILL.md は非常に大きいため、SkillsMP では最初のセクションだけを表示しています。 GitHubで見る