Merge PR #395: feat(skills): add maintainer copilot skill
# Conflicts: # README.md # README.zh-CN.md # skills/README.md
This commit is contained in:
commit
6592dcff1a
524
README.md
524
README.md
|
|
@ -5,93 +5,16 @@
|
|||
[](https://golang.org)
|
||||
[](https://www.npmjs.com/package/@gitlink-ai/cli)
|
||||
|
||||
The official [GitLink](https://www.gitlink.org.cn) CLI tool — built for humans and AI Agents. Supports **macOS, Linux, and Windows**. Covers repository management, issue tracking, pull requests, webhooks, member collaboration, CI/CD, and AI-powered workflows, with 40+ commands and AI Agent [Skills](./skills/README.md).
|
||||
The official [GitLink](https://www.gitlink.org.cn) CLI tool — built for humans and AI Agents. Supports **macOS, Linux, and Windows**. Covers repository management, issue tracking, pull requests, CI/CD, and AI-powered workflows, with 40+ commands and 13 AI Agent [Skills](./skills/).
|
||||
|
||||
**[中文文档](./README.zh-CN.md)**
|
||||
|
||||
[Install](#installation--quick-start) · [AI Agent Skills](#ai-agent-skills) · [Auth](#configure--use) · [Commands](#usage-examples) · [Contributing](#related-projects)
|
||||
|
||||
## Contributors
|
||||
|
||||
<div style="display: flex; gap: 16px; flex-wrap: wrap; align-items: flex-start;">
|
||||
<div align="center">
|
||||
<a href="https://www.gitlink.org.cn/wangyue111" title="wangyue111"><img src="https://www.gitlink.org.cn/system/lets/letter_avatars/2/W/43_254_70/120.png" width="40" height="40" alt="wangyue111" style="border-radius: 50%;"></a>
|
||||
<br><sub><a href="https://www.gitlink.org.cn/wangyue111">wangyue111</a></sub>
|
||||
</div>
|
||||
<div align="center">
|
||||
<a href="https://www.gitlink.org.cn/wbtiger" title="tigerwang"><img src="https://www.gitlink.org.cn/system/lets/letter_avatars/2/T/14_168_39/120.png" width="40" height="40" alt="wbtiger" style="border-radius: 50%;"></a>
|
||||
<br><sub><a href="https://www.gitlink.org.cn/wbtiger">wbtiger</a></sub>
|
||||
</div>
|
||||
<div align="center">
|
||||
<a href="https://www.gitlink.org.cn/Mengz" title="Mengz"><img src="https://www.gitlink.org.cn/system/lets/letter_avatars/2/M/166_152_185/120.png" width="40" height="40" alt="Mengz" style="border-radius: 50%;"></a>
|
||||
<br><sub><a href="https://www.gitlink.org.cn/Mengz">Mengz</a></sub>
|
||||
</div>
|
||||
<div align="center">
|
||||
<a href="https://www.gitlink.org.cn/yangsai" title="杨赛"><img src="https://www.gitlink.org.cn/system/lets/letter_avatars/2/Y/94_150_149/120.png" width="40" height="40" alt="yangsai" style="border-radius: 50%;"></a>
|
||||
<br><sub><a href="https://www.gitlink.org.cn/yangsai">yangsai</a></sub>
|
||||
</div>
|
||||
<div align="center">
|
||||
<a href="https://www.gitlink.org.cn/mengcheng" title="camelliamc"><img src="https://www.gitlink.org.cn/system/lets/letter_avatars/2/M/206_114_54/120.png" width="40" height="40" alt="mengcheng" style="border-radius: 50%;"></a>
|
||||
<br><sub><a href="https://www.gitlink.org.cn/mengcheng">mengcheng</a></sub>
|
||||
</div>
|
||||
<div align="center">
|
||||
<a href="https://www.gitlink.org.cn/muel" title="赵奕程"><img src="https://www.gitlink.org.cn/images/avatars/User/149182?t=1779603476" width="40" height="40" alt="muel" style="border-radius: 50%;"></a>
|
||||
<br><sub><a href="https://www.gitlink.org.cn/muel">muel</a></sub>
|
||||
</div>
|
||||
<div align="center">
|
||||
<a href="https://www.gitlink.org.cn/Leo77" title="Leo77"><img src="https://www.gitlink.org.cn/system/lets/letter_avatars/2/L/173_120_149/120.png" width="40" height="40" alt="Leo77" style="border-radius: 50%;"></a>
|
||||
<br><sub><a href="https://www.gitlink.org.cn/Leo77">Leo77</a></sub>
|
||||
</div>
|
||||
<div align="center">
|
||||
<a href="https://www.gitlink.org.cn/yingjie" title="yingjie"><img src="https://www.gitlink.org.cn/images/avatars/User/145288?t=1765791899" width="40" height="40" alt="yingjie" style="border-radius: 50%;"></a>
|
||||
<br><sub><a href="https://www.gitlink.org.cn/yingjie">yingjie</a></sub>
|
||||
</div>
|
||||
<div align="center">
|
||||
<a href="https://www.gitlink.org.cn/topshare" title="Kevin Zhang"><img src="https://www.gitlink.org.cn/system/lets/letter_avatars/2/K/65_152_142/120.png" width="40" height="40" alt="topshare" style="border-radius: 50%;"></a>
|
||||
<br><sub><a href="https://www.gitlink.org.cn/topshare">topshare</a></sub>
|
||||
</div>
|
||||
<div align="center">
|
||||
<a href="https://www.gitlink.org.cn/dtwdtw" title="dtwdtw"><img src="https://www.gitlink.org.cn/system/lets/letter_avatars/2/D/53_166_51/120.png" width="40" height="40" alt="dtwdtw" style="border-radius: 50%;"></a>
|
||||
<br><sub><a href="https://www.gitlink.org.cn/dtwdtw">dtwdtw</a></sub>
|
||||
</div>
|
||||
<div align="center">
|
||||
<a href="https://www.gitlink.org.cn/recorder" title="recorder"><img src="https://www.gitlink.org.cn/system/lets/letter_avatars/2/R/141_201_87/120.png" width="40" height="40" alt="recorder" style="border-radius: 50%;"></a>
|
||||
<br><sub><a href="https://www.gitlink.org.cn/recorder">recorder</a></sub>
|
||||
</div>
|
||||
<div align="center">
|
||||
<a href="https://www.gitlink.org.cn/puygob236" title="Jiachen Li"><img src="https://www.gitlink.org.cn/images/avatars/User/149183?t=1778815174" width="40" height="40" alt="puygob236" style="border-radius: 50%;"></a>
|
||||
<br><sub><a href="https://www.gitlink.org.cn/puygob236">puygob236</a></sub>
|
||||
</div>
|
||||
<div align="center">
|
||||
<a href="https://www.gitlink.org.cn/co63oc" title="co63oc"><img src="https://www.gitlink.org.cn/system/lets/letter_avatars/2/C/205_201_141/120.png" width="40" height="40" alt="co63oc" style="border-radius: 50%;"></a>
|
||||
<br><sub><a href="https://www.gitlink.org.cn/co63oc">co63oc</a></sub>
|
||||
</div>
|
||||
<div align="center">
|
||||
<a href="https://www.gitlink.org.cn/lindiwen23" title="lindiwen23"><img src="https://www.gitlink.org.cn/images/avatars/User/141609?t=1748270628" width="40" height="40" alt="lindiwen23" style="border-radius: 50%;"></a>
|
||||
<br><sub><a href="https://www.gitlink.org.cn/lindiwen23">lindiwen23</a></sub>
|
||||
</div>
|
||||
<div align="center">
|
||||
<a href="https://www.gitlink.org.cn/ohanabi" title="ohanabi"><img src="https://www.gitlink.org.cn/images/avatars/User/148166?t=1778230283" width="40" height="40" alt="ohanabi" style="border-radius: 50%;"></a>
|
||||
<br><sub><a href="https://www.gitlink.org.cn/ohanabi">ohanabi</a></sub>
|
||||
</div>
|
||||
<div align="center">
|
||||
<a href="https://www.gitlink.org.cn/jiangtx" title="jiangtx"><img src="https://www.gitlink.org.cn/system/lets/letter_avatars/2/J/67_157_94/120.png" width="40" height="40" alt="jiangtx" style="border-radius: 50%;"></a>
|
||||
<br><sub><a href="https://www.gitlink.org.cn/jiangtx">jiangtx</a></sub>
|
||||
</div>
|
||||
<div align="center">
|
||||
<a href="https://www.gitlink.org.cn/luwanzhou" title="luwanzhou"><img src="https://www.gitlink.org.cn/system/lets/letter_avatars/2/L/165_135_246/120.png" width="40" height="40" alt="luwanzhou" style="border-radius: 50%;"></a>
|
||||
<br><sub><a href="https://www.gitlink.org.cn/luwanzhou">luwanzhou</a></sub>
|
||||
</div>
|
||||
<div align="center">
|
||||
<a href="https://www.gitlink.org.cn/whale_hihihi" title="whale_hihihi"><img src="https://www.gitlink.org.cn/images/avatars/User/137722?t=1778575729" width="40" height="40" alt="whale_hihihi" style="border-radius: 50%;"></a>
|
||||
<br><sub><a href="https://www.gitlink.org.cn/whale_hihihi">whale_hihihi</a></sub>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
## Why gitlink-cli?
|
||||
|
||||
- **Agent-Native Design** — Structured [Skills](./skills/README.md) out of the box, compatible with Claude Code, OpenClaw, and other AI platforms — Agents can operate GitLink with zero extra setup
|
||||
- **Wide Coverage** — Repository, Issue, PR, Webhook, Member, Branch, Release, CI, Pipeline, Org, Search, and User workflows are covered by high-level commands
|
||||
- **Agent-Native Design** — 13 structured [Skills](./skills/) out of the box, compatible with Claude Code, OpenClaw, and other AI platforms — Agents can operate GitLink with zero extra setup
|
||||
- **Wide Coverage** — Repository, Issue, PR, Branch, Release, CI, Org, Search, User — all core domains covered
|
||||
- **AI-Friendly & Optimized** — Every command is tested with real Agents, featuring concise parameters, smart defaults, and structured output
|
||||
- **Cross-Platform** — Runs on macOS, Linux, and Windows (x64/arm64), install via `npm install -g @gitlink-ai/cli` in one command, binary auto-downloaded
|
||||
- **Open Source, Zero Barriers** — MulanPSL-2.0 license, ready to use, just `npm install`
|
||||
|
|
@ -103,24 +26,15 @@ The official [GitLink](https://www.gitlink.org.cn) CLI tool — built for humans
|
|||
|
||||
| Category | Capabilities |
|
||||
|----------|-------------|
|
||||
| 📦 Repo | List, create, fork, delete repositories, view repo info, insights, and interactions |
|
||||
| 🐛 Issue | Create, update, close, batch close/update/delete, comment on issues |
|
||||
| 🔖 Label | Create, list, update, delete issue labels |
|
||||
| 📦 Repo | List, create, fork, delete repositories, view repo info |
|
||||
| 🐛 Issue | Create, update, close, batch close, comment on issues |
|
||||
| 🔀 PR | Create, merge, review pull requests, view changed files |
|
||||
| 👥 Member | List, add, remove repository members, change roles, create and accept invite links |
|
||||
| 🌿 Branch | Create, delete, list, protect, unprotect branches |
|
||||
| 🏷️ Tag | List, search, view, and delete Git tags |
|
||||
| 🏷️ Release | Create, edit, update, view, delete releases |
|
||||
| 🏷️ Release | Create, view, delete releases |
|
||||
| 🏢 Org | Manage organizations, members, teams |
|
||||
| 🔧 CI | View builds, logs, CI/CD operations |
|
||||
| ⚙️ Pipeline | Run, inspect, enable, disable, delete pipeline workflows and logs |
|
||||
| 🔔 Webhook | Manage repo webhooks and test deliveries |
|
||||
| 📖 Wiki | List, view, create, update, and delete wiki pages |
|
||||
| 🔔 Notification | List, read, and delete user messages |
|
||||
| 🔍 Search | Search repositories, users |
|
||||
| 📊 Dataset | Query research datasets by project |
|
||||
| 👤 User | View user profiles and info |
|
||||
| 📊 Profile | User ability, role, major, activity, and contribution statistics |
|
||||
| 📋 PM | Sprint management, kanban boards, weekly reports |
|
||||
| 🤖 Workflow | AI-powered issue triage, PR review, release notes |
|
||||
|
||||
|
|
@ -141,7 +55,7 @@ The official [GitLink](https://www.gitlink.org.cn) CLI tool — built for humans
|
|||
**From npm (recommended):**
|
||||
|
||||
```bash
|
||||
# One command: installs CLI binary + AI Agent Skills
|
||||
# One command: installs CLI binary + all 13 AI Agent Skills
|
||||
npm install -g @gitlink-ai/cli
|
||||
```
|
||||
|
||||
|
|
@ -222,36 +136,6 @@ gitlink-cli repo +list
|
|||
# View repository info
|
||||
gitlink-cli repo +info --owner Gitlink --repo forgeplus
|
||||
|
||||
# Read repository README
|
||||
gitlink-cli repo +readme --owner Gitlink --repo forgeplus --ref master
|
||||
|
||||
# List repository files at root or a directory
|
||||
gitlink-cli repo +tree --owner Gitlink --repo forgeplus --ref master
|
||||
gitlink-cli repo +tree --owner Gitlink --repo forgeplus --path src --ref main
|
||||
|
||||
# Show language breakdown
|
||||
gitlink-cli repo +languages --owner Gitlink --repo forgeplus
|
||||
|
||||
# List contributors
|
||||
gitlink-cli repo +contributors --owner Gitlink --repo forgeplus
|
||||
|
||||
# Show contributor code-line stats for a branch, tag, or commit
|
||||
gitlink-cli repo +contributor-stats --owner Gitlink --repo forgeplus --ref master --pass-year 1
|
||||
|
||||
# Show repository code stats
|
||||
gitlink-cli repo +code-stats --owner Gitlink --repo forgeplus --ref master
|
||||
|
||||
# List watchers and stargazers in a time range
|
||||
gitlink-cli repo +watchers --owner Gitlink --repo forgeplus --start-at 1714521600 --end-at 1717200000
|
||||
gitlink-cli repo +stargazers --owner Gitlink --repo forgeplus --start-at 1714521600 --end-at 1717200000
|
||||
|
||||
# Preview and apply repository interaction actions
|
||||
gitlink-cli repo +follow --owner Gitlink --repo forgeplus --dry-run
|
||||
gitlink-cli repo +follow --owner Gitlink --repo forgeplus
|
||||
gitlink-cli repo +unfollow --owner Gitlink --repo forgeplus --project-id 123
|
||||
gitlink-cli repo +like --owner Gitlink --repo forgeplus
|
||||
gitlink-cli repo +unlike --owner Gitlink --repo forgeplus --project-id 123
|
||||
|
||||
# Create a repository
|
||||
gitlink-cli repo +create -n my-project -d "Project description"
|
||||
|
||||
|
|
@ -259,86 +143,6 @@ gitlink-cli repo +create -n my-project -d "Project description"
|
|||
gitlink-cli repo +fork --owner Gitlink --repo forgeplus
|
||||
```
|
||||
|
||||
### Webhook Management
|
||||
|
||||
```bash
|
||||
# List webhooks
|
||||
gitlink-cli webhook +list --owner Gitlink --repo forgeplus
|
||||
|
||||
# Create a webhook
|
||||
gitlink-cli webhook +create --owner Gitlink --repo forgeplus \
|
||||
--url https://example.com/hook --events push,create
|
||||
|
||||
# Test a webhook
|
||||
gitlink-cli webhook +test --owner Gitlink --repo forgeplus --id 68
|
||||
|
||||
# View webhook delivery tasks
|
||||
gitlink-cli webhook +tasks --owner Gitlink --repo forgeplus --id 68
|
||||
```
|
||||
|
||||
### Wiki Management
|
||||
|
||||
```bash
|
||||
# List wiki pages (table of contents)
|
||||
gitlink-cli wiki +list --owner Gitlink --repo forgeplus --project-id 12345
|
||||
|
||||
# View a wiki page by page name
|
||||
gitlink-cli wiki +view --owner Gitlink --repo forgeplus --project-id 12345 -n home
|
||||
|
||||
# Create a wiki page
|
||||
gitlink-cli wiki +create --owner Gitlink --repo forgeplus --project-id 12345 \
|
||||
-n getting-started -t "Getting Started" -c "# Getting Started Guide"
|
||||
|
||||
# Update a wiki page title and/or content
|
||||
gitlink-cli wiki +update --owner Gitlink --repo forgeplus --project-id 12345 -n home -t "New Title"
|
||||
gitlink-cli wiki +update --owner Gitlink --repo forgeplus --project-id 12345 -n home -c "# Updated content"
|
||||
gitlink-cli wiki +update --owner Gitlink --repo forgeplus --project-id 12345 -n home -t "New Title" -c "New content"
|
||||
|
||||
# Delete a wiki page
|
||||
gitlink-cli wiki +delete --owner Gitlink --repo forgeplus --project-id 12345 -n old-page
|
||||
```
|
||||
|
||||
### Notifications
|
||||
|
||||
```bash
|
||||
# List current user's unread notifications
|
||||
gitlink-cli notification +list --type notification --status unread
|
||||
|
||||
# List @me messages for an explicit user
|
||||
gitlink-cli notification +list --user Mengz --type atme
|
||||
|
||||
# Mark messages as read
|
||||
gitlink-cli notification +read --type atme --ids 101,102
|
||||
|
||||
# Mark all unread notifications as read
|
||||
gitlink-cli notification +read --type notification --ids -1
|
||||
|
||||
# Delete messages
|
||||
gitlink-cli notification +delete --type notification --ids 101,102
|
||||
```
|
||||
|
||||
### Member Management
|
||||
|
||||
```bash
|
||||
# List repository members
|
||||
gitlink-cli member +list --owner Gitlink --repo forgeplus
|
||||
|
||||
# Add a member
|
||||
gitlink-cli member +add --owner Gitlink --repo forgeplus --user-id 101
|
||||
|
||||
# Preview batch add without changing data
|
||||
gitlink-cli member +batch-add --owner Gitlink --repo forgeplus --user-ids 101,102 --dry-run
|
||||
|
||||
# Batch add members from a CSV file
|
||||
gitlink-cli member +batch-add --owner Gitlink --repo forgeplus --from members.csv
|
||||
|
||||
# Change a member role
|
||||
gitlink-cli member +role --owner Gitlink --repo forgeplus --user-id 101 --role Developer
|
||||
|
||||
# Create an invite link
|
||||
gitlink-cli member +invite-link --owner Gitlink --repo forgeplus --role developer --apply true
|
||||
```
|
||||
|
||||
### Issue Management
|
||||
|
||||
```bash
|
||||
|
|
@ -348,15 +152,9 @@ gitlink-cli issue +list --owner Gitlink --repo forgeplus
|
|||
# Create an issue
|
||||
gitlink-cli issue +create --owner Gitlink --repo forgeplus -t "Bug: Login failed" -b "Steps to reproduce..."
|
||||
|
||||
# Create an issue with metadata
|
||||
gitlink-cli issue +create --owner Gitlink --repo forgeplus -t "Bug: Login failed" --priority-id 3 --tag-ids 4,5 --assigner-ids 7
|
||||
|
||||
# View an issue
|
||||
gitlink-cli issue +view --owner Gitlink --repo forgeplus -i 123
|
||||
|
||||
# Update issue metadata
|
||||
gitlink-cli issue +update --owner Gitlink --repo forgeplus --number 123 --priority-id 4 --branch bugfix/login --due-date 2026-06-15
|
||||
|
||||
# Close an issue
|
||||
gitlink-cli issue +close --owner Gitlink --repo forgeplus -i 123
|
||||
|
||||
|
|
@ -366,55 +164,8 @@ gitlink-cli issue +batch-close --owner Gitlink --repo forgeplus --numbers 123,12
|
|||
# Batch close issues from a CSV file
|
||||
gitlink-cli issue +batch-close --owner Gitlink --repo forgeplus --from issues.csv
|
||||
|
||||
# Preview batch metadata update by API issue IDs
|
||||
# Note: --ids uses API issue IDs, not web URL issue numbers.
|
||||
gitlink-cli issue +batch-update --owner Gitlink --repo forgeplus --ids 101,102 --status-id 3 --priority-id 2 --dry-run
|
||||
|
||||
# Destructive batch delete requires both dry-run first and --yes for real execution
|
||||
gitlink-cli issue +batch-delete --owner Gitlink --repo forgeplus --ids 101,102 --dry-run
|
||||
gitlink-cli issue +batch-delete --owner Gitlink --repo forgeplus --ids 101,102 --yes
|
||||
|
||||
# Add a comment
|
||||
gitlink-cli issue +comment --owner Gitlink --repo forgeplus -i 123 -b "Fixed"
|
||||
|
||||
# List issue assigners
|
||||
gitlink-cli issue +assigners --owner Gitlink --repo forgeplus
|
||||
|
||||
# List issue authors
|
||||
gitlink-cli issue +authors --owner Gitlink --repo forgeplus
|
||||
|
||||
# List issue priorities
|
||||
gitlink-cli issue +priorities --owner Gitlink --repo forgeplus
|
||||
|
||||
# List issue tags
|
||||
gitlink-cli issue +tags --owner Gitlink --repo forgeplus --only-name
|
||||
|
||||
# List issue statuses
|
||||
gitlink-cli issue +statuses --owner Gitlink --repo forgeplus
|
||||
```
|
||||
|
||||
`issue +view`, `issue +update`, `issue +close`, and `issue +comment` prefer
|
||||
`--number` / `-n` for the issue number shown in the web URL. `--id` / `-i`
|
||||
is accepted as a compatibility alias for the same web issue number, not the
|
||||
global database ID.
|
||||
|
||||
### Label Management
|
||||
|
||||
```bash
|
||||
# List issue labels
|
||||
gitlink-cli label +list --owner Gitlink --repo forgeplus
|
||||
|
||||
# Filter labels by keyword
|
||||
gitlink-cli label +list --owner Gitlink --repo forgeplus -k bug
|
||||
|
||||
# Create a label (color defaults to #1E90FF)
|
||||
gitlink-cli label +create --owner Gitlink --repo forgeplus -n bug -d "Something is broken" -c "#FF0000"
|
||||
|
||||
# Update a label (unspecified fields are preserved)
|
||||
gitlink-cli label +update --owner Gitlink --repo forgeplus -i 42 -c "#00FF00"
|
||||
|
||||
# Delete a label
|
||||
gitlink-cli label +delete --owner Gitlink --repo forgeplus -i 42
|
||||
```
|
||||
|
||||
### Pull Requests
|
||||
|
|
@ -429,34 +180,14 @@ gitlink-cli pr +create --owner Gitlink --repo forgeplus -t "feat: Search feature
|
|||
# Create a PR (from a fork)
|
||||
gitlink-cli pr +create --owner Gitlink --repo forgeplus -t "feat: New feature" --head your_username/forgeplus:feature/my-feature --base master
|
||||
|
||||
# The fork form auto-resolves GitLink fork metadata
|
||||
# so you do not need to pass merge_user_login or fork_project_id yourself
|
||||
gitlink-cli pr +create --owner Gitlink --repo forgeplus -t "fix: CLI bug" --head your_username/forgeplus:fix/bug --base master
|
||||
|
||||
# View a PR
|
||||
gitlink-cli pr +view --owner Gitlink --repo forgeplus -i 42
|
||||
|
||||
# Merge a PR
|
||||
gitlink-cli pr +merge --owner Gitlink --repo forgeplus -i 42
|
||||
|
||||
# Reopen a closed PR
|
||||
gitlink-cli pr +reopen --owner Gitlink --repo forgeplus -i 42
|
||||
|
||||
# View changed files
|
||||
gitlink-cli pr +files --owner Gitlink --repo forgeplus -i 42
|
||||
|
||||
# List PR patchset versions
|
||||
gitlink-cli pr +versions --owner Gitlink --repo forgeplus -i 42
|
||||
|
||||
# View a patchset version diff
|
||||
gitlink-cli pr +version-diff --owner Gitlink --repo forgeplus -i 42 --version-id 16040
|
||||
|
||||
# List PR reviews
|
||||
gitlink-cli pr +reviews --owner Gitlink --repo forgeplus -i 42
|
||||
|
||||
# Create a PR review (with dry-run preview)
|
||||
gitlink-cli pr +review --owner Gitlink --repo forgeplus -i 42 --status approved -c "LGTM" --dry-run
|
||||
gitlink-cli pr +review --owner Gitlink --repo forgeplus -i 42 --status approved -c "LGTM"
|
||||
```
|
||||
|
||||
### Branch Management
|
||||
|
|
@ -478,40 +209,17 @@ gitlink-cli branch +protect --name main
|
|||
gitlink-cli branch +unprotect --name main
|
||||
```
|
||||
|
||||
### Tag Management
|
||||
|
||||
```bash
|
||||
# List tags with commit details
|
||||
gitlink-cli tag +list --owner Gitlink --repo forgeplus --page 1 --limit 20
|
||||
|
||||
# List tag names without pagination
|
||||
gitlink-cli tag +names --owner Gitlink --repo forgeplus -k v1
|
||||
|
||||
# View a tag
|
||||
gitlink-cli tag +view --owner Gitlink --repo forgeplus --name v1.0.0
|
||||
|
||||
# Delete a tag
|
||||
gitlink-cli tag +delete --owner Gitlink --repo forgeplus --name release/v1.0.0
|
||||
```
|
||||
|
||||
### Release Management
|
||||
|
||||
```bash
|
||||
# List releases
|
||||
gitlink-cli release +list --owner Gitlink --repo forgeplus
|
||||
|
||||
# Create a release with release notes and optional assets
|
||||
gitlink-cli release +create --owner Gitlink --repo forgeplus -t v1.0.0 -n "v1.0.0 Stable" -b "Changelog..." --attachment-ids 12,34
|
||||
# Create a release
|
||||
gitlink-cli release +create --owner Gitlink --repo forgeplus -t v1.0.0 -n "v1.0.0 Stable" -b "Changelog..."
|
||||
|
||||
# View a release
|
||||
gitlink-cli release +view --owner Gitlink --repo forgeplus -i <version_id>
|
||||
|
||||
# Get edit data and update while preserving unspecified fields
|
||||
gitlink-cli release +edit --owner Gitlink --repo forgeplus -i <version_id>
|
||||
gitlink-cli release +update --owner Gitlink --repo forgeplus -i <version_id> -b "Updated changelog" --dry-run
|
||||
|
||||
# Preview release deletion before executing it
|
||||
gitlink-cli release +delete --owner Gitlink --repo forgeplus -i <version_id> --dry-run
|
||||
```
|
||||
|
||||
### CI/CD Operations
|
||||
|
|
@ -527,38 +235,6 @@ gitlink-cli ci +log --owner Gitlink --repo forgeplus -i <build_id>
|
|||
gitlink-cli ci +restart --owner Gitlink --repo forgeplus -i <build_id>
|
||||
```
|
||||
|
||||
### Pipeline Operations
|
||||
|
||||
```bash
|
||||
# List platform pipelines
|
||||
gitlink-cli pipeline +list --owner-id 123 --page 1 --limit 20
|
||||
|
||||
# List repository pipeline runs
|
||||
gitlink-cli pipeline +runs --owner Gitlink --repo forgeplus --ref master --workflow build.yml
|
||||
|
||||
# Start a pipeline workflow, previewing the request first
|
||||
gitlink-cli pipeline +run --owner Gitlink --repo forgeplus --ref master --workflow build.yml --dry-run
|
||||
|
||||
# Inspect pipeline details and logs
|
||||
gitlink-cli pipeline +view --owner Gitlink --repo forgeplus --id 7
|
||||
gitlink-cli pipeline +logs --owner Gitlink --repo forgeplus --run-id 99 --id 7 --index 43
|
||||
gitlink-cli pipeline +results --owner Gitlink --repo forgeplus --run-id 99
|
||||
|
||||
# Toggle or delete pipeline workflows, previewing destructive writes first
|
||||
gitlink-cli pipeline +disable --owner Gitlink --repo forgeplus --id 7 --workflow build.yml --dry-run
|
||||
gitlink-cli pipeline +delete --owner Gitlink --repo forgeplus --id 7 --dry-run
|
||||
```
|
||||
|
||||
### Ignore File Templates
|
||||
|
||||
```bash
|
||||
# List all available .gitignore templates
|
||||
gitlink-cli ignore +list
|
||||
|
||||
# Filter templates by name
|
||||
gitlink-cli ignore +list --name Go
|
||||
```
|
||||
|
||||
### Search
|
||||
|
||||
```bash
|
||||
|
|
@ -569,154 +245,6 @@ gitlink-cli search +repos -k "machine learning"
|
|||
gitlink-cli search +users -k "zhangsan"
|
||||
```
|
||||
|
||||
### User Profile
|
||||
|
||||
`profile` surfaces GitLink's native user statistics (ability, role, major, activity,
|
||||
contribution). When `--user` is omitted it defaults to the authenticated user.
|
||||
|
||||
```bash
|
||||
# Development ability scores + language breakdown
|
||||
gitlink-cli profile +ability --user zhangsan
|
||||
|
||||
# Role positioning / major (discipline) categories
|
||||
gitlink-cli profile +role --user zhangsan
|
||||
gitlink-cli profile +major --user zhangsan
|
||||
|
||||
# Ability within a time window (Unix timestamps)
|
||||
gitlink-cli profile +ability --user zhangsan --start-time 1704067200 --end-time 1735689600
|
||||
|
||||
# Recent activity (issues / PRs / commits per day) for the current user
|
||||
gitlink-cli profile +activity
|
||||
|
||||
# Contribution heatmap for a given year
|
||||
gitlink-cli profile +contribution --user zhangsan --year 2025
|
||||
```
|
||||
|
||||
### Workflow Agent Commands
|
||||
|
||||
`workflow` provides rule-based repository analysis for maintainers and AI Agents. It currently supports:
|
||||
|
||||
- `workflow +triage`
|
||||
- `workflow +health`
|
||||
- `workflow +pr-summary`
|
||||
- `workflow +repo-report`
|
||||
|
||||
`workflow +pr-summary` defaults to `table` when `--format` is omitted.
|
||||
`workflow +repo-report` defaults to `markdown` when `--format` is omitted.
|
||||
|
||||
Examples:
|
||||
|
||||
```bash
|
||||
# Triage with local parameters
|
||||
gitlink-cli workflow +triage --title "Install failed on Windows" --body "go install failed with error" --format table
|
||||
|
||||
# Triage with JSON output
|
||||
gitlink-cli workflow +triage --title "Token leaked in logs" --body "The access token appears in command output" --format json
|
||||
|
||||
# Triage with Chinese markdown output
|
||||
gitlink-cli workflow +triage \
|
||||
--title "安装失败,无法登录" \
|
||||
--body "运行命令时报错" \
|
||||
--lang zh-CN \
|
||||
--format markdown
|
||||
|
||||
# Triage from a local JSON file
|
||||
gitlink-cli workflow +triage --from shortcuts/workflow/testdata/issue_bug.json --format json
|
||||
|
||||
# Triage by read-only GitLink fetch
|
||||
gitlink-cli workflow +triage --owner Gitlink --repo gitlink-cli --state open --limit 5 --format table
|
||||
|
||||
# Health for a healthy repository
|
||||
gitlink-cli workflow +health \
|
||||
--repository Gitlink/gitlink-cli \
|
||||
--open-issues 3 \
|
||||
--open-prs 1 \
|
||||
--has-readme \
|
||||
--has-license \
|
||||
--has-contributing \
|
||||
--agent-readiness-known \
|
||||
--agent-readiness-score 9 \
|
||||
--format table
|
||||
|
||||
# Health for a risky repository
|
||||
gitlink-cli workflow +health \
|
||||
--repository demo/repo \
|
||||
--open-issues 60 \
|
||||
--stale-issues 25 \
|
||||
--open-prs 12 \
|
||||
--stale-prs 6 \
|
||||
--recent-activity-known \
|
||||
--recent-activity-days 120 \
|
||||
--release-known=false \
|
||||
--format json
|
||||
|
||||
# Health with Chinese markdown output
|
||||
gitlink-cli workflow +health \
|
||||
--repository Gitlink/gitlink-cli \
|
||||
--open-issues 3 \
|
||||
--open-prs 1 \
|
||||
--has-readme \
|
||||
--has-license \
|
||||
--has-contributing \
|
||||
--lang zh-CN \
|
||||
--format markdown
|
||||
|
||||
# Health by read-only GitLink fetch
|
||||
gitlink-cli workflow +health --owner Gitlink --repo gitlink-cli --stale-days 30 --format table
|
||||
|
||||
# PR review summary by read-only GitLink fetch
|
||||
gitlink-cli workflow +pr-summary --owner Gitlink --repo gitlink-cli --number 1 --format markdown
|
||||
|
||||
# PR review summary from a local JSON file
|
||||
gitlink-cli workflow +pr-summary --from shortcuts/workflow/testdata/pr_summary.json --format json
|
||||
|
||||
# Repository workflow report by read-only GitLink fetch
|
||||
gitlink-cli workflow +repo-report --owner Gitlink --repo gitlink-cli --format markdown
|
||||
|
||||
# Repository workflow report from a local JSON file
|
||||
gitlink-cli workflow +repo-report --from shortcuts/workflow/testdata/repo_report.json --format json
|
||||
```
|
||||
|
||||
Output formats:
|
||||
|
||||
- `json` for scripts and AI Agents
|
||||
- `table` for terminal review
|
||||
- `markdown` for Issue comments, PR comments, release notes, and competition write-ups
|
||||
|
||||
Safety:
|
||||
|
||||
- Current workflow commands use local analysis by default and can also read GitLink data in read-only fetch mode.
|
||||
- They do not modify remote GitLink data.
|
||||
- They do not depend on LLM APIs.
|
||||
- `workflow +pr-summary` does not comment, approve, reject, or merge pull requests.
|
||||
- `workflow +repo-report` aggregates health, issue triage, and PR review summary signals without remote writes.
|
||||
|
||||
### Dataset
|
||||
|
||||
`dataset` manages and queries GitLink research datasets (title, description,
|
||||
paper content, license, owning project).
|
||||
|
||||
```bash
|
||||
# List datasets for one or more projects (by numeric project ID)
|
||||
gitlink-cli dataset +list --ids 5988
|
||||
|
||||
# View a repository's dataset and attachments
|
||||
gitlink-cli dataset +view --owner Gitlink --repo forgeplus
|
||||
|
||||
# Create / update a repository's dataset (preview first with --dry-run)
|
||||
gitlink-cli dataset +create --owner me --repo proj -t "My dataset" -d "..." --license-id 359 --dry-run
|
||||
gitlink-cli dataset +update --owner me --repo proj -t "My dataset" -d "updated"
|
||||
|
||||
# Delete a dataset attachment (destructive: preview, then confirm with --yes)
|
||||
gitlink-cli dataset +delete-attachment --owner me --repo proj --uuid <uuid> --dry-run
|
||||
gitlink-cli dataset +delete-attachment --owner me --repo proj --uuid <uuid> --yes
|
||||
```
|
||||
|
||||
> Note: `dataset +list` (platform dataset query) is verified on production
|
||||
> gitlink.org.cn. The per-repo `+view`/`+create`/`+update` routes follow the
|
||||
> published OpenAPI contract but are not yet deployed on production (they return
|
||||
> 404 there); they will work once the platform enables them.
|
||||
|
||||
### Raw API
|
||||
|
||||
For endpoints not covered by shortcuts, use the Raw API directly:
|
||||
|
|
@ -728,12 +256,6 @@ gitlink-cli api GET /users/me
|
|||
# POST request
|
||||
gitlink-cli api POST /Gitlink/forgeplus/issues --body '{"subject":"test","description":"..."}'
|
||||
|
||||
# POST request with body from a file
|
||||
gitlink-cli api POST /Gitlink/forgeplus/issues --body-file issue.json
|
||||
|
||||
# POST request with body from stdin
|
||||
Get-Content issue.json | gitlink-cli api POST /Gitlink/forgeplus/issues --body-stdin
|
||||
|
||||
# With query parameters
|
||||
gitlink-cli api GET /Gitlink/forgeplus/commits --query 'page=1&limit=5'
|
||||
```
|
||||
|
|
@ -744,7 +266,7 @@ gitlink-cli api GET /Gitlink/forgeplus/commits --query 'page=1&limit=5'
|
|||
|-----------|-------------|---------|
|
||||
| `--owner` | Repository owner | `--owner Gitlink` |
|
||||
| `--repo` | Repository name | `--repo forgeplus` |
|
||||
| `--format` | Output format (json/table/yaml; workflow also supports markdown) | `--format json` |
|
||||
| `--format` | Output format (json/table/yaml) | `--format json` |
|
||||
| `--debug` | Enable debug output | `--debug` |
|
||||
|
||||
**Automatic context resolution:** When running inside a git repository, `--owner` and `--repo` are automatically resolved from `git remote origin`.
|
||||
|
|
@ -771,29 +293,25 @@ git push gitlink
|
|||
|
||||
## AI Agent Skills
|
||||
|
||||
The `skills/` directory contains Agent Skill files for AI-automated GitLink operations.
|
||||
The `skills/` directory contains 13 Agent Skill files for AI-automated GitLink operations.
|
||||
|
||||
See [skills/README.md](./skills/README.md) for details.
|
||||
See [skills/README.md](skills/README.md) for details.
|
||||
|
||||
| Skill | Description |
|
||||
|-------|-------------|
|
||||
| `gitlink-shared` | Authentication, global parameters, safety rules, API notes |
|
||||
| `gitlink-repo` | Repository operations (create, view, delete, fork, insights, etc.) |
|
||||
| `gitlink-issue` | Issue operations (create, update, close, batch update/delete, comment, etc.) |
|
||||
| `gitlink-repo` | Repository operations (create, view, delete, fork, etc.) |
|
||||
| `gitlink-issue` | Issue operations (create, update, close, comment, etc.) |
|
||||
| `gitlink-pr` | Pull request operations (create, merge, review, etc.) |
|
||||
| `gitlink-member` | Repository member and invite link management |
|
||||
| `gitlink-branch` | Branch management (create, delete, list, protect, unprotect) |
|
||||
| `gitlink-tag` | Git tag operations (list, search, view, delete) |
|
||||
| `gitlink-release` | Release management (create, edit, update, view, delete, etc.) |
|
||||
| `gitlink-release` | Release management (create, view, delete, etc.) |
|
||||
| `gitlink-ci` | CI/CD operations (builds, logs, etc.) |
|
||||
| `gitlink-pipeline` | Pipeline workflow operations (runs, logs, enable, disable, delete, etc.) |
|
||||
| `gitlink-notification` | User messages (list, mark read, delete) |
|
||||
| `gitlink-search` | Search (repositories, users, etc.) |
|
||||
| `gitlink-org` | Organization management (members, teams, etc.) |
|
||||
| `gitlink-user` | User management (profile info, etc.) |
|
||||
| `gitlink-pm` | Project management (sprints, kanban, weekly reports, etc.) |
|
||||
| `gitlink-workflow` | AI-powered workflows (issue triage, PR review, release notes, etc.) |
|
||||
| `gitlink-health` | Project health analysis (PR/Issue metrics aggregation, health reports) |
|
||||
| `gitlink-maintainer-copilot` | Maintainer dashboard, evidence pack, governance playbooks, and confirmed governance Issue creation |
|
||||
|
||||
## Project Structure
|
||||
|
||||
|
|
@ -816,12 +334,10 @@ gitlink-cli/
|
|||
│ ├── repo/ # Repository shortcuts
|
||||
│ ├── issue/ # Issue shortcuts
|
||||
│ ├── pr/ # PR shortcuts
|
||||
│ ├── member/ # Repository member shortcuts
|
||||
│ ├── branch/ # Branch shortcuts
|
||||
│ ├── release/ # Release shortcuts
|
||||
│ ├── org/ # Organization shortcuts
|
||||
│ ├── ci/ # CI shortcuts
|
||||
│ ├── pipeline/ # Pipeline shortcuts
|
||||
│ ├── search/ # Search shortcuts
|
||||
│ ├── user/ # User shortcuts
|
||||
│ └── register.go # Registration entry point
|
||||
|
|
@ -845,7 +361,7 @@ gitlink-cli/
|
|||
|
||||
## Documentation
|
||||
|
||||
- [Skills Guide](./skills/README.md) — AI Agent Skills detailed documentation
|
||||
- [Skills Guide](skills/README.md) — AI Agent Skills detailed documentation
|
||||
- [Design Document](doc/design.md) — Architecture design and development plan
|
||||
|
||||
## FAQ
|
||||
|
|
@ -900,9 +416,7 @@ Reinstall first:
|
|||
npm install -g @gitlink-ai/cli
|
||||
```
|
||||
|
||||
If the error persists, check whether the release page contains the asset for your platform,
|
||||
for example `gitlink-cli_<version>_windows_amd64.zip` on Windows x64.
|
||||
You can also download the binary manually from the release page or build from source with `go install .`.
|
||||
If the error persists, check whether the release page contains the asset for your platform, for example `gitlink-cli_<version>_windows_amd64.zip` on Windows x64. You can also download the binary manually from the release page or build from source with `go install .`.
|
||||
|
||||
### Q: Where are credentials stored on Windows?
|
||||
|
||||
|
|
@ -910,7 +424,7 @@ gitlink-cli uses Windows Credential Manager for secure token storage. If Credent
|
|||
|
||||
### Q: Where can I find the full API reference?
|
||||
|
||||
See [skills/gitlink-shared/references/api-reference.md](./skills/gitlink-shared/references/api-reference.md).
|
||||
See [skills/gitlink-shared/references/api-reference.md](skills/gitlink-shared/references/api-reference.md).
|
||||
|
||||
## License
|
||||
|
||||
|
|
|
|||
409
README.zh-CN.md
409
README.zh-CN.md
|
|
@ -5,93 +5,16 @@
|
|||
[](https://golang.org)
|
||||
[](https://www.npmjs.com/package/@gitlink-ai/cli)
|
||||
|
||||
[GitLink(确实开源)](https://www.gitlink.org.cn) 官方 CLI 工具 — 为人类和 AI Agent 双重设计。支持 **macOS、Linux、Windows**,覆盖仓库管理、Issue 追踪、Pull Request、Webhook、成员协作、CI/CD 和 AI 自动化工作流,包含 40+ 命令和 AI Agent [Skills](./skills/README.md)。
|
||||
[GitLink(确实开源)](https://www.gitlink.org.cn) 官方 CLI 工具 — 为人类和 AI Agent 双重设计。支持 **macOS、Linux、Windows**,覆盖仓库管理、Issue 追踪、Pull Request、CI/CD 和 AI 自动化工作流,包含 40+ 命令和 13 个 AI Agent [Skills](./skills/)。
|
||||
|
||||
**[English](./README.md)**
|
||||
|
||||
[安装](#安装与快速上手) · [AI Agent Skills](#ai-agent-skills) · [认证](#配置与使用) · [命令](#使用示例) · [贡献](#相关项目)
|
||||
|
||||
## 贡献者
|
||||
|
||||
<div style="display: flex; gap: 16px; flex-wrap: wrap; align-items: flex-start;">
|
||||
<div align="center">
|
||||
<a href="https://www.gitlink.org.cn/wangyue111" title="wangyue111"><img src="https://www.gitlink.org.cn/system/lets/letter_avatars/2/W/43_254_70/120.png" width="40" height="40" alt="wangyue111" style="border-radius: 50%;"></a>
|
||||
<br><sub><a href="https://www.gitlink.org.cn/wangyue111">wangyue111</a></sub>
|
||||
</div>
|
||||
<div align="center">
|
||||
<a href="https://www.gitlink.org.cn/wbtiger" title="tigerwang"><img src="https://www.gitlink.org.cn/system/lets/letter_avatars/2/T/14_168_39/120.png" width="40" height="40" alt="wbtiger" style="border-radius: 50%;"></a>
|
||||
<br><sub><a href="https://www.gitlink.org.cn/wbtiger">wbtiger</a></sub>
|
||||
</div>
|
||||
<div align="center">
|
||||
<a href="https://www.gitlink.org.cn/Mengz" title="Mengz"><img src="https://www.gitlink.org.cn/system/lets/letter_avatars/2/M/166_152_185/120.png" width="40" height="40" alt="Mengz" style="border-radius: 50%;"></a>
|
||||
<br><sub><a href="https://www.gitlink.org.cn/Mengz">Mengz</a></sub>
|
||||
</div>
|
||||
<div align="center">
|
||||
<a href="https://www.gitlink.org.cn/yangsai" title="杨赛"><img src="https://www.gitlink.org.cn/system/lets/letter_avatars/2/Y/94_150_149/120.png" width="40" height="40" alt="yangsai" style="border-radius: 50%;"></a>
|
||||
<br><sub><a href="https://www.gitlink.org.cn/yangsai">yangsai</a></sub>
|
||||
</div>
|
||||
<div align="center">
|
||||
<a href="https://www.gitlink.org.cn/mengcheng" title="camelliamc"><img src="https://www.gitlink.org.cn/system/lets/letter_avatars/2/M/206_114_54/120.png" width="40" height="40" alt="mengcheng" style="border-radius: 50%;"></a>
|
||||
<br><sub><a href="https://www.gitlink.org.cn/mengcheng">mengcheng</a></sub>
|
||||
</div>
|
||||
<div align="center">
|
||||
<a href="https://www.gitlink.org.cn/muel" title="赵奕程"><img src="https://www.gitlink.org.cn/images/avatars/User/149182?t=1779603476" width="40" height="40" alt="muel" style="border-radius: 50%;"></a>
|
||||
<br><sub><a href="https://www.gitlink.org.cn/muel">muel</a></sub>
|
||||
</div>
|
||||
<div align="center">
|
||||
<a href="https://www.gitlink.org.cn/Leo77" title="Leo77"><img src="https://www.gitlink.org.cn/system/lets/letter_avatars/2/L/173_120_149/120.png" width="40" height="40" alt="Leo77" style="border-radius: 50%;"></a>
|
||||
<br><sub><a href="https://www.gitlink.org.cn/Leo77">Leo77</a></sub>
|
||||
</div>
|
||||
<div align="center">
|
||||
<a href="https://www.gitlink.org.cn/yingjie" title="yingjie"><img src="https://www.gitlink.org.cn/images/avatars/User/145288?t=1765791899" width="40" height="40" alt="yingjie" style="border-radius: 50%;"></a>
|
||||
<br><sub><a href="https://www.gitlink.org.cn/yingjie">yingjie</a></sub>
|
||||
</div>
|
||||
<div align="center">
|
||||
<a href="https://www.gitlink.org.cn/topshare" title="Kevin Zhang"><img src="https://www.gitlink.org.cn/system/lets/letter_avatars/2/K/65_152_142/120.png" width="40" height="40" alt="topshare" style="border-radius: 50%;"></a>
|
||||
<br><sub><a href="https://www.gitlink.org.cn/topshare">topshare</a></sub>
|
||||
</div>
|
||||
<div align="center">
|
||||
<a href="https://www.gitlink.org.cn/dtwdtw" title="dtwdtw"><img src="https://www.gitlink.org.cn/system/lets/letter_avatars/2/D/53_166_51/120.png" width="40" height="40" alt="dtwdtw" style="border-radius: 50%;"></a>
|
||||
<br><sub><a href="https://www.gitlink.org.cn/dtwdtw">dtwdtw</a></sub>
|
||||
</div>
|
||||
<div align="center">
|
||||
<a href="https://www.gitlink.org.cn/recorder" title="recorder"><img src="https://www.gitlink.org.cn/system/lets/letter_avatars/2/R/141_201_87/120.png" width="40" height="40" alt="recorder" style="border-radius: 50%;"></a>
|
||||
<br><sub><a href="https://www.gitlink.org.cn/recorder">recorder</a></sub>
|
||||
</div>
|
||||
<div align="center">
|
||||
<a href="https://www.gitlink.org.cn/puygob236" title="Jiachen Li"><img src="https://www.gitlink.org.cn/images/avatars/User/149183?t=1778815174" width="40" height="40" alt="puygob236" style="border-radius: 50%;"></a>
|
||||
<br><sub><a href="https://www.gitlink.org.cn/puygob236">puygob236</a></sub>
|
||||
</div>
|
||||
<div align="center">
|
||||
<a href="https://www.gitlink.org.cn/co63oc" title="co63oc"><img src="https://www.gitlink.org.cn/system/lets/letter_avatars/2/C/205_201_141/120.png" width="40" height="40" alt="co63oc" style="border-radius: 50%;"></a>
|
||||
<br><sub><a href="https://www.gitlink.org.cn/co63oc">co63oc</a></sub>
|
||||
</div>
|
||||
<div align="center">
|
||||
<a href="https://www.gitlink.org.cn/lindiwen23" title="lindiwen23"><img src="https://www.gitlink.org.cn/images/avatars/User/141609?t=1748270628" width="40" height="40" alt="lindiwen23" style="border-radius: 50%;"></a>
|
||||
<br><sub><a href="https://www.gitlink.org.cn/lindiwen23">lindiwen23</a></sub>
|
||||
</div>
|
||||
<div align="center">
|
||||
<a href="https://www.gitlink.org.cn/ohanabi" title="ohanabi"><img src="https://www.gitlink.org.cn/images/avatars/User/148166?t=1778230283" width="40" height="40" alt="ohanabi" style="border-radius: 50%;"></a>
|
||||
<br><sub><a href="https://www.gitlink.org.cn/ohanabi">ohanabi</a></sub>
|
||||
</div>
|
||||
<div align="center">
|
||||
<a href="https://www.gitlink.org.cn/jiangtx" title="jiangtx"><img src="https://www.gitlink.org.cn/system/lets/letter_avatars/2/J/67_157_94/120.png" width="40" height="40" alt="jiangtx" style="border-radius: 50%;"></a>
|
||||
<br><sub><a href="https://www.gitlink.org.cn/jiangtx">jiangtx</a></sub>
|
||||
</div>
|
||||
<div align="center">
|
||||
<a href="https://www.gitlink.org.cn/luwanzhou" title="luwanzhou"><img src="https://www.gitlink.org.cn/system/lets/letter_avatars/2/L/165_135_246/120.png" width="40" height="40" alt="luwanzhou" style="border-radius: 50%;"></a>
|
||||
<br><sub><a href="https://www.gitlink.org.cn/luwanzhou">luwanzhou</a></sub>
|
||||
</div>
|
||||
<div align="center">
|
||||
<a href="https://www.gitlink.org.cn/whale_hihihi" title="whale_hihihi"><img src="https://www.gitlink.org.cn/images/avatars/User/137722?t=1778575729" width="40" height="40" alt="whale_hihihi" style="border-radius: 50%;"></a>
|
||||
<br><sub><a href="https://www.gitlink.org.cn/whale_hihihi">whale_hihihi</a></sub>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
## 为什么选择 gitlink-cli?
|
||||
|
||||
- **Agent-Native 设计** — 开箱即用结构化 [Skills](./skills/README.md),兼容 Claude Code — Agent 零配置即可操作 GitLink
|
||||
- **广泛覆盖** — 仓库、Issue、PR、Webhook、成员、分支、Release、CI、Pipeline、组织、搜索、用户等常用工作流均提供高层命令
|
||||
- **Agent-Native 设计** — 开箱即用 13 个结构化 [Skills](./skills/),兼容 Claude Code — Agent 零配置即可操作 GitLink
|
||||
- **广泛覆盖** — 仓库、Issue、PR、分支、Release、CI、组织、搜索、用户 — 核心功能全覆盖
|
||||
- **AI 友好 & 优化** — 每条命令都经过真实 Agent 测试,简洁参数、智能默认值、结构化输出
|
||||
- **跨平台** — macOS、Linux、Windows (x64/arm64) 全支持,`npm` 一条命令安装
|
||||
- **开源零门槛** — 木兰宽松许可证第2版(MulanPSL-2.0),`npm install` 即用
|
||||
|
|
@ -103,23 +26,15 @@
|
|||
|
||||
| 分类 | 能力 |
|
||||
|------|------|
|
||||
| 📦 仓库 | 列出、创建、Fork、删除仓库,查看仓库信息、洞察数据和互动状态 |
|
||||
| 🐛 Issue | 创建、更新、关闭、批量关闭/更新/删除、评论 Issue |
|
||||
| 🔖 标签 | 创建、列出、更新、删除 Issue 标签 |
|
||||
| 📦 仓库 | 列出、创建、Fork、删除仓库,查看仓库信息 |
|
||||
| 🐛 Issue | 创建、更新、关闭、批量关闭、评论 Issue |
|
||||
| 🔀 PR | 创建、合并、Review Pull Request,查看变更文件 |
|
||||
| 👥 成员 | 列出、添加、移除仓库成员,调整角色,生成和接受邀请链接 |
|
||||
| 🌿 分支 | 创建、删除、保护分支 |
|
||||
| 🏷️ 标签 | 列出、搜索、查看、删除 Git 标签 |
|
||||
| 🏷️ 发布 | 创建、编辑、更新、查看、删除 Release |
|
||||
| 🏷️ 发布 | 创建、查看、删除 Release |
|
||||
| 🏢 组织 | 管理组织、成员、团队 |
|
||||
| 🔧 CI | 查看构建、日志、CI/CD 操作 |
|
||||
| ⚙️ Pipeline | 运行、查看、启停、删除流水线工作流并查询日志 |
|
||||
| 📖 Wiki | 列出、查看、创建、更新、删除 Wiki 页面 |
|
||||
| 🔔 通知 | 列出、已读、删除用户消息 |
|
||||
| 🔍 搜索 | 搜索仓库、用户 |
|
||||
| 📊 数据集 | 按项目查询科研数据集 |
|
||||
| 👤 用户 | 查看用户资料和信息 |
|
||||
| 📊 画像 | 用户开发能力、角色定位、专业定位、近期活动、贡献热力图统计 |
|
||||
| 📋 项目管理 | Sprint 管理、看板、周报 |
|
||||
| 🤖 工作流 | AI 驱动的 Issue 分类、PR Review、Release Notes |
|
||||
|
||||
|
|
@ -233,36 +148,6 @@ gitlink-cli repo +list
|
|||
# 查看仓库信息
|
||||
gitlink-cli repo +info --owner Gitlink --repo forgeplus
|
||||
|
||||
# 读取仓库 README
|
||||
gitlink-cli repo +readme --owner Gitlink --repo forgeplus --ref master
|
||||
|
||||
# 列出仓库根目录或指定目录文件
|
||||
gitlink-cli repo +tree --owner Gitlink --repo forgeplus --ref master
|
||||
gitlink-cli repo +tree --owner Gitlink --repo forgeplus --path src --ref main
|
||||
|
||||
# 查看语言占比
|
||||
gitlink-cli repo +languages --owner Gitlink --repo forgeplus
|
||||
|
||||
# 列出贡献者
|
||||
gitlink-cli repo +contributors --owner Gitlink --repo forgeplus
|
||||
|
||||
# 查看分支、标签或提交的贡献者代码行统计
|
||||
gitlink-cli repo +contributor-stats --owner Gitlink --repo forgeplus --ref master --pass-year 1
|
||||
|
||||
# 查看仓库代码统计
|
||||
gitlink-cli repo +code-stats --owner Gitlink --repo forgeplus --ref master
|
||||
|
||||
# 按时间范围查看关注者和点赞者
|
||||
gitlink-cli repo +watchers --owner Gitlink --repo forgeplus --start-at 1714521600 --end-at 1717200000
|
||||
gitlink-cli repo +stargazers --owner Gitlink --repo forgeplus --start-at 1714521600 --end-at 1717200000
|
||||
|
||||
# 预览并执行仓库互动操作
|
||||
gitlink-cli repo +follow --owner Gitlink --repo forgeplus --dry-run
|
||||
gitlink-cli repo +follow --owner Gitlink --repo forgeplus
|
||||
gitlink-cli repo +unfollow --owner Gitlink --repo forgeplus --project-id 123
|
||||
gitlink-cli repo +like --owner Gitlink --repo forgeplus
|
||||
gitlink-cli repo +unlike --owner Gitlink --repo forgeplus --project-id 123
|
||||
|
||||
# 创建仓库
|
||||
gitlink-cli repo +create -n my-project -d "项目描述"
|
||||
|
||||
|
|
@ -270,86 +155,6 @@ gitlink-cli repo +create -n my-project -d "项目描述"
|
|||
gitlink-cli repo +fork --owner Gitlink --repo forgeplus
|
||||
```
|
||||
|
||||
### Webhook 管理
|
||||
|
||||
```bash
|
||||
# 列出 webhook
|
||||
gitlink-cli webhook +list --owner Gitlink --repo forgeplus
|
||||
|
||||
# 创建 webhook
|
||||
gitlink-cli webhook +create --owner Gitlink --repo forgeplus \
|
||||
--url https://example.com/hook --events push,create
|
||||
|
||||
# 测试 webhook
|
||||
gitlink-cli webhook +test --owner Gitlink --repo forgeplus --id 68
|
||||
|
||||
# 查看 webhook 投递任务
|
||||
gitlink-cli webhook +tasks --owner Gitlink --repo forgeplus --id 68
|
||||
```
|
||||
|
||||
### Wiki 管理
|
||||
|
||||
```bash
|
||||
# 列出 Wiki 页面(目录结构)
|
||||
gitlink-cli wiki +list --owner Gitlink --repo forgeplus --project-id 12345
|
||||
|
||||
# 查看 Wiki 页面
|
||||
gitlink-cli wiki +view --owner Gitlink --repo forgeplus --project-id 12345 -n home
|
||||
|
||||
# 创建 Wiki 页面
|
||||
gitlink-cli wiki +create --owner Gitlink --repo forgeplus --project-id 12345 \
|
||||
-n getting-started -t "快速开始" -c "# 快速开始指南"
|
||||
|
||||
# 更新 Wiki 页面标题和/或内容
|
||||
gitlink-cli wiki +update --owner Gitlink --repo forgeplus --project-id 12345 -n home -t "新标题"
|
||||
gitlink-cli wiki +update --owner Gitlink --repo forgeplus --project-id 12345 -n home -c "# 更新后的内容"
|
||||
gitlink-cli wiki +update --owner Gitlink --repo forgeplus --project-id 12345 -n home -t "新标题" -c "新内容"
|
||||
|
||||
# 删除 Wiki 页面
|
||||
gitlink-cli wiki +delete --owner Gitlink --repo forgeplus --project-id 12345 -n old-page
|
||||
```
|
||||
|
||||
### 通知管理
|
||||
|
||||
```bash
|
||||
# 列出当前用户未读系统消息
|
||||
gitlink-cli notification +list --type notification --status unread
|
||||
|
||||
# 列出指定用户的 @我消息
|
||||
gitlink-cli notification +list --user Mengz --type atme
|
||||
|
||||
# 标记消息为已读
|
||||
gitlink-cli notification +read --type atme --ids 101,102
|
||||
|
||||
# 将全部未读系统消息标记为已读
|
||||
gitlink-cli notification +read --type notification --ids -1
|
||||
|
||||
# 删除消息
|
||||
gitlink-cli notification +delete --type notification --ids 101,102
|
||||
```
|
||||
|
||||
### 成员管理
|
||||
|
||||
```bash
|
||||
# 列出仓库成员
|
||||
gitlink-cli member +list --owner Gitlink --repo forgeplus
|
||||
|
||||
# 添加成员
|
||||
gitlink-cli member +add --owner Gitlink --repo forgeplus --user-id 101
|
||||
|
||||
# 预览批量添加成员,不修改数据
|
||||
gitlink-cli member +batch-add --owner Gitlink --repo forgeplus --user-ids 101,102 --dry-run
|
||||
|
||||
# 从 CSV 文件批量添加成员
|
||||
gitlink-cli member +batch-add --owner Gitlink --repo forgeplus --from members.csv
|
||||
|
||||
# 调整成员权限
|
||||
gitlink-cli member +role --owner Gitlink --repo forgeplus --user-id 101 --role Developer
|
||||
|
||||
# 生成邀请链接
|
||||
gitlink-cli member +invite-link --owner Gitlink --repo forgeplus --role developer --apply true
|
||||
```
|
||||
|
||||
### Issue 管理
|
||||
|
||||
```bash
|
||||
|
|
@ -359,15 +164,9 @@ gitlink-cli issue +list --owner Gitlink --repo forgeplus
|
|||
# 创建 Issue
|
||||
gitlink-cli issue +create --owner Gitlink --repo forgeplus -t "Bug: 登录失败" -b "复现步骤..."
|
||||
|
||||
# 创建带元数据的 Issue
|
||||
gitlink-cli issue +create --owner Gitlink --repo forgeplus -t "Bug: 登录失败" --priority-id 3 --tag-ids 4,5 --assigner-ids 7
|
||||
|
||||
# 查看 Issue
|
||||
gitlink-cli issue +view --owner Gitlink --repo forgeplus -i 123
|
||||
|
||||
# 更新 Issue 元数据
|
||||
gitlink-cli issue +update --owner Gitlink --repo forgeplus --number 123 --priority-id 4 --branch bugfix/login --due-date 2026-06-15
|
||||
|
||||
# 关闭 Issue
|
||||
gitlink-cli issue +close --owner Gitlink --repo forgeplus -i 123
|
||||
|
||||
|
|
@ -377,54 +176,8 @@ gitlink-cli issue +batch-close --owner Gitlink --repo forgeplus --numbers 123,12
|
|||
# 从 CSV 文件批量关闭 Issue
|
||||
gitlink-cli issue +batch-close --owner Gitlink --repo forgeplus --from issues.csv
|
||||
|
||||
# 按 API issue id 预览批量更新元数据
|
||||
# 注意:--ids 是 API issue id,不是网页 URL 中的 Issue 编号。
|
||||
gitlink-cli issue +batch-update --owner Gitlink --repo forgeplus --ids 101,102 --status-id 3 --priority-id 2 --dry-run
|
||||
|
||||
# 危险批量删除必须先 dry-run,真实执行还要显式 --yes
|
||||
gitlink-cli issue +batch-delete --owner Gitlink --repo forgeplus --ids 101,102 --dry-run
|
||||
gitlink-cli issue +batch-delete --owner Gitlink --repo forgeplus --ids 101,102 --yes
|
||||
|
||||
# 添加评论
|
||||
gitlink-cli issue +comment --owner Gitlink --repo forgeplus -i 123 -b "已修复"
|
||||
|
||||
# 列出 Issue 负责人
|
||||
gitlink-cli issue +assigners --owner Gitlink --repo forgeplus
|
||||
|
||||
# 列出 Issue 发布人
|
||||
gitlink-cli issue +authors --owner Gitlink --repo forgeplus
|
||||
|
||||
# 列出 Issue 优先级
|
||||
gitlink-cli issue +priorities --owner Gitlink --repo forgeplus
|
||||
|
||||
# 列出 Issue 标签
|
||||
gitlink-cli issue +tags --owner Gitlink --repo forgeplus --only-name
|
||||
|
||||
# 列出 Issue 状态
|
||||
gitlink-cli issue +statuses --owner Gitlink --repo forgeplus
|
||||
```
|
||||
|
||||
`issue +view`、`issue +update`、`issue +close` 和 `issue +comment` 推荐使用
|
||||
`--number` / `-n` 传网页 URL 中的 Issue 编号。`--id` / `-i` 是同一网页 Issue
|
||||
编号的兼容别名,不是数据库内部 ID。
|
||||
|
||||
### 标签管理
|
||||
|
||||
```bash
|
||||
# 列出 Issue 标签
|
||||
gitlink-cli label +list --owner Gitlink --repo forgeplus
|
||||
|
||||
# 按关键词筛选标签
|
||||
gitlink-cli label +list --owner Gitlink --repo forgeplus -k bug
|
||||
|
||||
# 创建标签(颜色默认 #1E90FF)
|
||||
gitlink-cli label +create --owner Gitlink --repo forgeplus -n bug -d "功能缺陷" -c "#FF0000"
|
||||
|
||||
# 更新标签(未指定的字段会被保留)
|
||||
gitlink-cli label +update --owner Gitlink --repo forgeplus -i 42 -c "#00FF00"
|
||||
|
||||
# 删除标签
|
||||
gitlink-cli label +delete --owner Gitlink --repo forgeplus -i 42
|
||||
```
|
||||
|
||||
### Pull Request
|
||||
|
|
@ -439,50 +192,14 @@ gitlink-cli pr +create --owner Gitlink --repo forgeplus -t "feat: 搜索功能"
|
|||
# 创建 PR(从 Fork 仓库)
|
||||
gitlink-cli pr +create --owner Gitlink --repo forgeplus -t "feat: 新功能" --head your_username/forgeplus:feature/my-feature --base master
|
||||
|
||||
# Fork 写法会自动补齐 GitLink 所需的 fork 元数据
|
||||
# 不需要再手动传 merge_user_login 或 fork_project_id
|
||||
gitlink-cli pr +create --owner Gitlink --repo forgeplus -t "fix: CLI bug" --head your_username/forgeplus:fix/bug --base master
|
||||
|
||||
# 查看 PR
|
||||
gitlink-cli pr +view --owner Gitlink --repo forgeplus -i 42
|
||||
|
||||
# 合并 PR
|
||||
gitlink-cli pr +merge --owner Gitlink --repo forgeplus -i 42
|
||||
|
||||
# 重开已关闭的 PR
|
||||
gitlink-cli pr +reopen --owner Gitlink --repo forgeplus -i 42
|
||||
|
||||
# 查看 PR 变更文件
|
||||
gitlink-cli pr +files --owner Gitlink --repo forgeplus -i 42
|
||||
|
||||
# 查看 PR patchset/version 列表
|
||||
gitlink-cli pr +versions --owner Gitlink --repo forgeplus -i 42
|
||||
|
||||
# 查看指定 patchset/version diff
|
||||
gitlink-cli pr +version-diff --owner Gitlink --repo forgeplus -i 42 --version-id 16040
|
||||
|
||||
# 查看 PR 审查记录
|
||||
gitlink-cli pr +reviews --owner Gitlink --repo forgeplus -i 42
|
||||
|
||||
# 创建 PR 审查(支持 dry-run 预览)
|
||||
gitlink-cli pr +review --owner Gitlink --repo forgeplus -i 42 --status approved -c "LGTM" --dry-run
|
||||
gitlink-cli pr +review --owner Gitlink --repo forgeplus -i 42 --status approved -c "LGTM"
|
||||
```
|
||||
|
||||
### 标签管理
|
||||
|
||||
```bash
|
||||
# 列出标签及提交详情
|
||||
gitlink-cli tag +list --owner Gitlink --repo forgeplus --page 1 --limit 20
|
||||
|
||||
# 无分页列出标签名称
|
||||
gitlink-cli tag +names --owner Gitlink --repo forgeplus -k v1
|
||||
|
||||
# 查看标签详情
|
||||
gitlink-cli tag +view --owner Gitlink --repo forgeplus --name v1.0.0
|
||||
|
||||
# 删除标签
|
||||
gitlink-cli tag +delete --owner Gitlink --repo forgeplus --name release/v1.0.0
|
||||
```
|
||||
|
||||
### 发布管理
|
||||
|
|
@ -491,50 +208,11 @@ gitlink-cli tag +delete --owner Gitlink --repo forgeplus --name release/v1.0.0
|
|||
# 列出 Release
|
||||
gitlink-cli release +list --owner Gitlink --repo forgeplus
|
||||
|
||||
# 创建 Release,可附带附件 ID
|
||||
gitlink-cli release +create --owner Gitlink --repo forgeplus -t v1.0.0 -n "v1.0.0 正式版" -b "更新内容..." --attachment-ids 12,34
|
||||
# 创建 Release
|
||||
gitlink-cli release +create --owner Gitlink --repo forgeplus -t v1.0.0 -n "v1.0.0 正式版" -b "更新内容..."
|
||||
|
||||
# 查看 Release
|
||||
gitlink-cli release +view --owner Gitlink --repo forgeplus -i <version_id>
|
||||
|
||||
# 获取编辑数据并保留未传字段更新
|
||||
gitlink-cli release +edit --owner Gitlink --repo forgeplus -i <version_id>
|
||||
gitlink-cli release +update --owner Gitlink --repo forgeplus -i <version_id> -b "更新后的内容" --dry-run
|
||||
|
||||
# 删除前先预览请求
|
||||
gitlink-cli release +delete --owner Gitlink --repo forgeplus -i <version_id> --dry-run
|
||||
```
|
||||
|
||||
### 流水线管理
|
||||
|
||||
```bash
|
||||
# 列出平台流水线
|
||||
gitlink-cli pipeline +list --owner-id 123 --page 1 --limit 20
|
||||
|
||||
# 列出仓库流水线运行记录
|
||||
gitlink-cli pipeline +runs --owner Gitlink --repo forgeplus --ref master --workflow build.yml
|
||||
|
||||
# 运行流水线工作流,先用 dry-run 预览请求
|
||||
gitlink-cli pipeline +run --owner Gitlink --repo forgeplus --ref master --workflow build.yml --dry-run
|
||||
|
||||
# 查看流水线详情、日志和运行结果
|
||||
gitlink-cli pipeline +view --owner Gitlink --repo forgeplus --id 7
|
||||
gitlink-cli pipeline +logs --owner Gitlink --repo forgeplus --run-id 99 --id 7 --index 43
|
||||
gitlink-cli pipeline +results --owner Gitlink --repo forgeplus --run-id 99
|
||||
|
||||
# 启停或删除流水线工作流,写入/删除前先预览
|
||||
gitlink-cli pipeline +disable --owner Gitlink --repo forgeplus --id 7 --workflow build.yml --dry-run
|
||||
gitlink-cli pipeline +delete --owner Gitlink --repo forgeplus --id 7 --dry-run
|
||||
```
|
||||
|
||||
### 忽略文件模板
|
||||
|
||||
```bash
|
||||
# 列出所有可用的 .gitignore 模板
|
||||
gitlink-cli ignore +list
|
||||
|
||||
# 按名称筛选模板
|
||||
gitlink-cli ignore +list --name Go
|
||||
```
|
||||
|
||||
### 搜索
|
||||
|
|
@ -547,50 +225,6 @@ gitlink-cli search +repos -k "machine learning"
|
|||
gitlink-cli search +users -k "zhangsan"
|
||||
```
|
||||
|
||||
### 用户画像
|
||||
|
||||
`profile` 暴露 GitLink 原生的用户画像统计(开发能力、角色定位、专业定位、近期活动、贡献热力图)。
|
||||
省略 `--user` 时默认使用当前认证用户。
|
||||
|
||||
```bash
|
||||
# 开发能力评分 + 语言分布
|
||||
gitlink-cli profile +ability --user zhangsan
|
||||
|
||||
# 角色定位 / 专业(学科)定位
|
||||
gitlink-cli profile +role --user zhangsan
|
||||
gitlink-cli profile +major --user zhangsan
|
||||
|
||||
# 指定时间范围的开发能力(Unix 时间戳)
|
||||
gitlink-cli profile +ability --user zhangsan --start-time 1704067200 --end-time 1735689600
|
||||
|
||||
# 当前用户的近期活动(每日 疑修 / 合并请求 / 提交)
|
||||
gitlink-cli profile +activity
|
||||
|
||||
# 指定年份的贡献热力图
|
||||
gitlink-cli profile +contribution --user zhangsan --year 2025
|
||||
```
|
||||
|
||||
### 数据集
|
||||
|
||||
`dataset` 管理并查询 GitLink 科研数据集(标题、描述、论文内容、许可证、所属项目)。
|
||||
|
||||
```bash
|
||||
# 按数字项目 ID 列出一个或多个项目的数据集
|
||||
gitlink-cli dataset +list --ids 5988
|
||||
|
||||
# 查看仓库的数据集及其附件
|
||||
gitlink-cli dataset +view --owner Gitlink --repo forgeplus
|
||||
|
||||
# 创建 / 更新仓库数据集(先用 --dry-run 预览)
|
||||
gitlink-cli dataset +create --owner me --repo proj -t "我的数据集" -d "..." --license-id 359 --dry-run
|
||||
gitlink-cli dataset +update --owner me --repo proj -t "我的数据集" -d "更新"
|
||||
|
||||
# 删除数据集附件(破坏性:先预览,再用 --yes 确认)
|
||||
gitlink-cli dataset +delete-attachment --owner me --repo proj --uuid <uuid> --dry-run
|
||||
gitlink-cli dataset +delete-attachment --owner me --repo proj --uuid <uuid> --yes
|
||||
```
|
||||
|
||||
> 注意:`dataset +list`(平台数据集查询)已在生产 gitlink.org.cn 验证可用。按仓库的 `+view`/`+create`/`+update` 遵循已发布的 OpenAPI 契约,但生产环境尚未部署(当前返回 404),待平台上线后即可生效。
|
||||
### Raw API
|
||||
|
||||
Shortcuts 未覆盖的接口可通过 Raw API 直接调用:
|
||||
|
|
@ -602,12 +236,6 @@ gitlink-cli api GET /users/me
|
|||
# POST 请求
|
||||
gitlink-cli api POST /Gitlink/forgeplus/issues --body '{"subject":"test","description":"..."}'
|
||||
|
||||
# 从文件读取 JSON body
|
||||
gitlink-cli api POST /Gitlink/forgeplus/issues --body-file issue.json
|
||||
|
||||
# 从 stdin 读取 JSON body
|
||||
Get-Content issue.json | gitlink-cli api POST /Gitlink/forgeplus/issues --body-stdin
|
||||
|
||||
# 带查询参数
|
||||
gitlink-cli api GET /Gitlink/forgeplus/commits --query 'page=1&limit=5'
|
||||
```
|
||||
|
|
@ -645,27 +273,24 @@ git push gitlink
|
|||
|
||||
## AI Agent Skills
|
||||
|
||||
`skills/` 目录包含 Claude Code Agent Skill 文件,支持 AI 自动化操作 GitLink 平台。
|
||||
`skills/` 目录包含 13 个 Claude Code Agent Skill 文件,支持 AI 自动化操作 GitLink 平台。
|
||||
|
||||
详见 [skills/README.md](./skills/README.md)
|
||||
详见 [skills/README.md](skills/README.md)
|
||||
|
||||
| Skill | 说明 |
|
||||
|-------|------|
|
||||
| `gitlink-shared` | 认证、全局参数、安全规则、API 注意事项 |
|
||||
| `gitlink-repo` | 仓库操作(创建、查看、删除、Fork、洞察数据等) |
|
||||
| `gitlink-issue` | Issue 操作(创建、更新、关闭、批量更新/删除、评论等) |
|
||||
| `gitlink-repo` | 仓库操作(创建、查看、删除、Fork 等) |
|
||||
| `gitlink-issue` | Issue 操作(创建、更新、关闭、评论等) |
|
||||
| `gitlink-pr` | Pull Request 操作(创建、合并、Review 等) |
|
||||
| `gitlink-member` | 仓库成员与邀请链接管理 |
|
||||
| `gitlink-tag` | Git 标签管理(列表、搜索、查看、删除) |
|
||||
| `gitlink-release` | 发布管理(创建、编辑、更新、查看、删除等) |
|
||||
| `gitlink-release` | 发布管理(创建、查看、删除等) |
|
||||
| `gitlink-org` | 组织管理(成员、团队等) |
|
||||
| `gitlink-ci` | CI/CD 操作(构建、日志等) |
|
||||
| `gitlink-pipeline` | 流水线工作流操作(运行、日志、启停、删除等) |
|
||||
| `gitlink-notification` | 用户消息(列表、标记已读、删除) |
|
||||
| `gitlink-search` | 搜索功能(仓库、用户等) |
|
||||
| `gitlink-user` | 用户管理(个人信息等) |
|
||||
| `gitlink-pm` | 项目管理(Sprint、看板、周报等) |
|
||||
| `gitlink-workflow` | AI 自动化工作流(Issue 分类、PR Review、Release Notes 等) |
|
||||
| `gitlink-maintainer-copilot` | 维护者驾驶舱、证据包、治理剧本和确认后创建治理 Issue |
|
||||
|
||||
## 项目结构
|
||||
|
||||
|
|
@ -688,12 +313,10 @@ gitlink-cli/
|
|||
│ ├── repo/ # 仓库 shortcuts
|
||||
│ ├── issue/ # Issue shortcuts
|
||||
│ ├── pr/ # PR shortcuts
|
||||
│ ├── member/ # 仓库成员 shortcuts
|
||||
│ ├── branch/ # 分支 shortcuts
|
||||
│ ├── release/ # Release shortcuts
|
||||
│ ├── org/ # 组织 shortcuts
|
||||
│ ├── ci/ # CI shortcuts
|
||||
│ ├── pipeline/ # Pipeline shortcuts
|
||||
│ ├── search/ # 搜索 shortcuts
|
||||
│ ├── user/ # 用户 shortcuts
|
||||
│ └── register.go # 注册入口
|
||||
|
|
@ -717,7 +340,7 @@ gitlink-cli/
|
|||
|
||||
## 文档
|
||||
|
||||
- [Skills 使用指南](./skills/README.md) — AI Agent Skills 详细说明
|
||||
- [Skills 使用指南](skills/README.md) — AI Agent Skills 详细说明
|
||||
- [设计文档](doc/design.md) — 架构设计和开发计划
|
||||
|
||||
## 常见问题
|
||||
|
|
@ -780,7 +403,7 @@ gitlink-cli 使用 Windows Credential Manager 安全存储 Token。如果 Creden
|
|||
|
||||
### Q: 如何查看完整的 API 参考?
|
||||
|
||||
查看 [skills/gitlink-shared/references/api-reference.md](./skills/gitlink-shared/references/api-reference.md)
|
||||
查看 [skills/gitlink-shared/references/api-reference.md](skills/gitlink-shared/references/api-reference.md)
|
||||
|
||||
## 许可证
|
||||
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@
|
|||
},
|
||||
"scripts": {
|
||||
"postinstall": "node scripts/install.js",
|
||||
"test": "node test/install.test.js && node test/cli.test.js"
|
||||
"test": "node test/install.test.js && node test/cli.test.js && node test/skills.test.js"
|
||||
},
|
||||
"keywords": [
|
||||
"gitlink",
|
||||
|
|
|
|||
|
|
@ -0,0 +1,106 @@
|
|||
"use strict";
|
||||
|
||||
const assert = require("assert");
|
||||
const fs = require("fs");
|
||||
const path = require("path");
|
||||
|
||||
const skillsDir = path.resolve(__dirname, "..", "..", "skills");
|
||||
|
||||
const requiredSkillFiles = {
|
||||
"gitlink-maintainer-copilot": [
|
||||
"SKILL.md",
|
||||
"references/evidence-pack.md",
|
||||
"references/playbooks.md",
|
||||
"references/governance-issue-template.md",
|
||||
"examples/maintainer-copilot-workflow.md",
|
||||
"examples/sample-dashboard-report.md",
|
||||
],
|
||||
};
|
||||
|
||||
function readText(file) {
|
||||
return fs.readFileSync(file, "utf8");
|
||||
}
|
||||
|
||||
function parseFrontmatter(markdown, file) {
|
||||
const match = markdown.match(/^---\n([\s\S]*?)\n---\n/);
|
||||
assert.ok(match, `${file} must start with YAML frontmatter`);
|
||||
|
||||
const fields = {};
|
||||
for (const line of match[1].split("\n")) {
|
||||
const fieldMatch = line.match(/^([A-Za-z0-9_-]+):\s*(.*)$/);
|
||||
if (fieldMatch) {
|
||||
fields[fieldMatch[1]] = fieldMatch[2].replace(/^["']|["']$/g, "");
|
||||
}
|
||||
}
|
||||
return fields;
|
||||
}
|
||||
|
||||
function markdownFiles(root) {
|
||||
const files = [];
|
||||
for (const entry of fs.readdirSync(root, { withFileTypes: true })) {
|
||||
const fullPath = path.join(root, entry.name);
|
||||
if (entry.isDirectory()) {
|
||||
files.push(...markdownFiles(fullPath));
|
||||
} else if (entry.isFile() && entry.name.endsWith(".md")) {
|
||||
files.push(fullPath);
|
||||
}
|
||||
}
|
||||
return files;
|
||||
}
|
||||
|
||||
function localMarkdownLinks(markdown) {
|
||||
const links = [];
|
||||
const linkPattern = /\[[^\]]+\]\(([^)]+)\)/g;
|
||||
let match;
|
||||
while ((match = linkPattern.exec(markdown)) !== null) {
|
||||
const target = match[1].trim();
|
||||
if (
|
||||
target.startsWith("http://") ||
|
||||
target.startsWith("https://") ||
|
||||
target.startsWith("#") ||
|
||||
target.startsWith("mailto:")
|
||||
) {
|
||||
continue;
|
||||
}
|
||||
links.push(target.split("#")[0]);
|
||||
}
|
||||
return links.filter(Boolean);
|
||||
}
|
||||
|
||||
for (const [skillName, files] of Object.entries(requiredSkillFiles)) {
|
||||
for (const file of files) {
|
||||
assert.ok(
|
||||
fs.existsSync(path.join(skillsDir, skillName, file)),
|
||||
`${skillName} must include ${file}`
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
const skillDirs = fs
|
||||
.readdirSync(skillsDir, { withFileTypes: true })
|
||||
.filter((entry) => entry.isDirectory() && entry.name.startsWith("gitlink-"))
|
||||
.map((entry) => entry.name)
|
||||
.sort();
|
||||
|
||||
const names = new Set();
|
||||
|
||||
for (const dirName of skillDirs) {
|
||||
const skillFile = path.join(skillsDir, dirName, "SKILL.md");
|
||||
assert.ok(fs.existsSync(skillFile), `${dirName} must include SKILL.md`);
|
||||
|
||||
const frontmatter = parseFrontmatter(readText(skillFile), skillFile);
|
||||
assert.equal(frontmatter.name, dirName, `${dirName} frontmatter name must match directory`);
|
||||
assert.ok(frontmatter.description, `${dirName} must include description`);
|
||||
assert.ok(!names.has(frontmatter.name), `${frontmatter.name} must be unique`);
|
||||
names.add(frontmatter.name);
|
||||
}
|
||||
|
||||
for (const file of markdownFiles(skillsDir)) {
|
||||
const markdown = readText(file);
|
||||
for (const link of localMarkdownLinks(markdown)) {
|
||||
const targetPath = path.resolve(path.dirname(file), link);
|
||||
assert.ok(fs.existsSync(targetPath), `${file} links to missing file: ${link}`);
|
||||
}
|
||||
}
|
||||
|
||||
console.log("skills structure tests passed");
|
||||
|
|
@ -64,62 +64,41 @@ skills/
|
|||
├── README.md # 本文件
|
||||
├── gitlink-shared/ # 共享基础规则
|
||||
│ ├── SKILL.md # 认证、全局参数、安全规则、分支约定
|
||||
│ └── references/
|
||||
│ ├── api-reference.md # API 详细参考、错误处理
|
||||
│ ├── raw-api-batch.md # 批量 Raw API 调用参考
|
||||
│ └── troubleshooting.md # 常见问题排查
|
||||
│ └── references/ # API 参考、错误处理
|
||||
├── gitlink-repo/ # 仓库管理
|
||||
│ ├── SKILL.md # 仓库操作指南
|
||||
│ └── references/ # 仓库命令参考文档
|
||||
│ └── references/ # 仓库 API 参考
|
||||
├── gitlink-issue/ # Issue 管理
|
||||
│ ├── SKILL.md # Issue 操作指南
|
||||
│ └── references/ # Issue 命令参考文档
|
||||
│ └── references/ # Issue API 参考
|
||||
├── gitlink-pr/ # Pull Request
|
||||
│ ├── SKILL.md # PR 操作指南
|
||||
│ └── references/ # PR 命令参考文档
|
||||
├── gitlink-member/ # 仓库成员管理
|
||||
│ └── SKILL.md # 成员与邀请链接操作指南
|
||||
│ └── references/ # PR API 参考
|
||||
├── gitlink-branch/ # 分支管理
|
||||
│ ├── SKILL.md # 分支操作指南
|
||||
│ └── examples/
|
||||
│ └── branch-workflow.md # 分支工作流
|
||||
├── gitlink-tag/ # Git 标签管理
|
||||
│ └── SKILL.md # 标签操作指南
|
||||
├── gitlink-release/ # 版本发布
|
||||
│ ├── SKILL.md # Release 操作指南
|
||||
│ └── references/ # Release 命令参考文档
|
||||
├── gitlink-release-auto/ # 自动化 Release 管理
|
||||
│ └── SKILL.md # 自动发版、版本号推荐、Release Notes 生成
|
||||
│ └── references/ # Release API 参考
|
||||
├── gitlink-search/ # 搜索功能
|
||||
│ ├── SKILL.md # 搜索操作指南
|
||||
│ └── references/ # 搜索命令参考文档
|
||||
│ └── references/ # 搜索参考
|
||||
├── gitlink-user/ # 用户管理
|
||||
│ ├── SKILL.md # 用户操作指南
|
||||
│ └── references/ # 用户命令参考文档
|
||||
│ └── SKILL.md # 用户操作指南
|
||||
├── gitlink-org/ # 组织管理
|
||||
│ ├── SKILL.md # 组织操作指南
|
||||
│ └── references/ # 组织命令参考文档
|
||||
│ └── references/ # 组织参考
|
||||
├── gitlink-ci/ # CI/CD
|
||||
│ └── SKILL.md # CI 操作指南
|
||||
├── gitlink-pipeline/ # 流水线工作流
|
||||
│ └── SKILL.md # Pipeline 操作指南
|
||||
├── gitlink-wiki/ # Wiki 页面管理
|
||||
│ └── SKILL.md # Wiki 操作指南
|
||||
├── gitlink-notification/ # 用户消息
|
||||
│ └── SKILL.md # 消息查询、已读和删除指南
|
||||
├── gitlink-pm/ # 项目管理
|
||||
│ └── SKILL.md # PM 操作指南
|
||||
├── gitlink-health/ # 项目健康度分析
|
||||
│ ├── SKILL.md # 健康度分析指南
|
||||
│ ├── data/
|
||||
│ │ ├── .gitignore # 忽略 *.db 文件
|
||||
│ │ └── .gitkeep # 占位文件
|
||||
│ ├── references/
|
||||
│ │ └── queries.md # SQL 查询参考
|
||||
│ └── asset/
|
||||
│ └── health_report_template.md # 报告模板
|
||||
└── gitlink-workflow/ # AI 自动化工作流
|
||||
└── SKILL.md # 工作流模板(Issue 分类、PR Review、Release Notes)
|
||||
├── gitlink-workflow/ # AI 自动化工作流
|
||||
│ └── SKILL.md # 工作流模板(Issue 分类、PR Review、Release Notes)
|
||||
└── gitlink-maintainer-copilot/ # 维护者驾驶舱
|
||||
├── SKILL.md # 证据包、治理剧本、写入确认
|
||||
├── references/ # 证据包、剧本、治理 Issue 模板
|
||||
└── examples/ # 演示流程和样例报告
|
||||
```
|
||||
|
||||
---
|
||||
|
|
@ -131,13 +110,11 @@ skills/
|
|||
| Skill | 说明 | 常用命令 |
|
||||
|-------|------|----------|
|
||||
| **gitlink-shared** | 认证、全局参数、API 参考、安全规则、分支约定 | `auth login`, `auth status` |
|
||||
| **gitlink-repo** | 仓库管理与洞察 | `repo +list`, `repo +info`, `repo +languages`, `repo +contributors`, `repo +code-stats`, `repo +follow`, `repo +like`, `repo +units`, `repo +set-units` |
|
||||
| **gitlink-issue** | Issue 管理 | `issue +create`, `issue +list`, `issue +view`, `issue +close`, `issue +batch-close`, `issue +batch-update`, `issue +batch-delete` |
|
||||
| **gitlink-pr** | Pull Request | `pr +list`, `pr +create`, `pr +view`, `pr +merge`, `pr +versions`, `pr +version-diff`, `pr +reviews`, `pr +review` |
|
||||
| **gitlink-member** | 仓库成员管理 | `member +list`, `member +add`, `member +batch-add`, `member +role`, `member +invite-link` |
|
||||
| **gitlink-repo** | 仓库管理 | `repo +list`, `repo +create`, `repo +info`, `repo +fork` |
|
||||
| **gitlink-issue** | Issue 管理 | `issue +create`, `issue +list`, `issue +view`, `issue +close`, `issue +batch-close` |
|
||||
| **gitlink-pr** | Pull Request | `pr +list`, `pr +create`, `pr +view`, `pr +merge`, `pr +review` |
|
||||
| **gitlink-branch** | 分支管理 | `branch +list`, `branch +create`, `branch +delete`, `branch +protect` |
|
||||
| **gitlink-tag** | Git 标签管理 | `tag +list`, `tag +names`, `tag +view`, `tag +delete` |
|
||||
| **gitlink-release** | 版本发布 | `release +list`, `release +create`, `release +edit`, `release +update`, `release +view` |
|
||||
| **gitlink-release** | 版本发布 | `release +list`, `release +create`, `release +view` |
|
||||
|
||||
### 辅助 Skills
|
||||
|
||||
|
|
@ -147,12 +124,9 @@ skills/
|
|||
| **gitlink-user** | 用户管理 | `user +me`, `user +info` |
|
||||
| **gitlink-org** | 组织管理 | `org +list`, `org +info`, `org +members` |
|
||||
| **gitlink-ci** | CI/CD | `ci +builds`, `ci +logs` |
|
||||
| **gitlink-pipeline** | 流水线工作流 | `pipeline +runs`, `pipeline +run`, `pipeline +logs` |
|
||||
| **gitlink-wiki** | Wiki 页面管理 | `wiki +list`, `wiki +view`, `wiki +create`, `wiki +update`, `wiki +delete` |
|
||||
| **gitlink-notification** | 用户消息 | `notification +list`, `notification +read`, `notification +delete` |
|
||||
| **gitlink-pm** | 项目管理 | 通过 Raw API 访问 |
|
||||
| **gitlink-workflow** | AI 工作流 | Issue 分类、PR Review、Release Notes |
|
||||
| **gitlink-health** | 开源项目健康度 | 详情见SKILL.md |
|
||||
| **gitlink-maintainer-copilot** | 维护者驾驶舱 | 证据包、治理剧本、确认后创建治理 Issue |
|
||||
|
||||
---
|
||||
|
||||
|
|
@ -178,13 +152,13 @@ gitlink-cli repo +info --owner wbtiger --repo gitlink-cli
|
|||
gitlink-cli issue +create -t "Bug: 登录失败" -b "复现步骤..."
|
||||
|
||||
# 查看 Issue
|
||||
gitlink-cli issue +view -i 123
|
||||
gitlink-cli issue +view -n 123
|
||||
|
||||
# 添加评论
|
||||
gitlink-cli issue +comment -i 123 -b "已修复"
|
||||
|
||||
# 关闭 Issue
|
||||
gitlink-cli issue +close -i 123
|
||||
gitlink-cli issue +close -n 123
|
||||
|
||||
# 预览批量关闭 Issue
|
||||
gitlink-cli issue +batch-close --numbers 123,124 --dry-run
|
||||
|
|
@ -226,6 +200,17 @@ gitlink-cli org +info -i Gitlink
|
|||
|
||||
详见: [gitlink-search/SKILL.md](gitlink-search/SKILL.md)
|
||||
|
||||
### 场景 5:生成维护者驾驶舱
|
||||
|
||||
```bash
|
||||
# Agent 会先只读采集证据,再输出治理计划
|
||||
gitlink-cli repo +info --owner Gitlink --repo gitlink-cli --format json
|
||||
gitlink-cli issue +list --owner Gitlink --repo gitlink-cli --state open --format json
|
||||
gitlink-cli pr +list --owner Gitlink --repo gitlink-cli --state open --format json
|
||||
```
|
||||
|
||||
详见: [gitlink-maintainer-copilot/SKILL.md](gitlink-maintainer-copilot/SKILL.md)
|
||||
|
||||
---
|
||||
|
||||
## 📚 文档导航
|
||||
|
|
@ -242,22 +227,23 @@ gitlink-cli org +info -i Gitlink
|
|||
**仓库操作**:
|
||||
- [gitlink-repo/SKILL.md](gitlink-repo/SKILL.md) - 仓库命令
|
||||
- [gitlink-branch/SKILL.md](gitlink-branch/SKILL.md) - 分支命令
|
||||
- [gitlink-repo/SKILL.md](gitlink-repo/SKILL.md) - 完整工作流
|
||||
|
||||
**Issue 和 PR**:
|
||||
- [gitlink-issue/SKILL.md](gitlink-issue/SKILL.md) - Issue 命令
|
||||
- [gitlink-pr/SKILL.md](gitlink-pr/SKILL.md) - PR 命令
|
||||
- [gitlink-issue/SKILL.md](gitlink-issue/SKILL.md) - Issue 工作流
|
||||
|
||||
**发布和搜索**:
|
||||
- [gitlink-release/SKILL.md](gitlink-release/SKILL.md) - Release 命令
|
||||
- [gitlink-pipeline/SKILL.md](gitlink-pipeline/SKILL.md) - Pipeline 命令
|
||||
- [gitlink-search/SKILL.md](gitlink-search/SKILL.md) - 搜索命令
|
||||
|
||||
**组织和用户**:
|
||||
- [gitlink-org/SKILL.md](gitlink-org/SKILL.md) - 组织命令
|
||||
- [gitlink-user/SKILL.md](gitlink-user/SKILL.md) - 用户命令
|
||||
|
||||
**维护者驾驶舱**:
|
||||
- [gitlink-maintainer-copilot/SKILL.md](gitlink-maintainer-copilot/SKILL.md) - 维护者诊断
|
||||
- [gitlink-maintainer-copilot/examples/maintainer-copilot-workflow.md](gitlink-maintainer-copilot/examples/maintainer-copilot-workflow.md) - 演示流程
|
||||
|
||||
---
|
||||
|
||||
## ❓ 常见问题
|
||||
|
|
@ -318,6 +304,7 @@ AI 代理可以:
|
|||
- ✅ 自动分类 Issue
|
||||
- ✅ 自动生成 Release Notes
|
||||
- ✅ 自动执行代码审查
|
||||
- ✅ 自动生成维护者驾驶舱和治理 Issue 草稿
|
||||
|
||||
---
|
||||
|
||||
|
|
@ -329,7 +316,7 @@ AI 代理可以:
|
|||
- 所有边界情况处理正确
|
||||
- 完整的文档和示例
|
||||
|
||||
详见: [../doc/design.md](../doc/design.md)
|
||||
可通过 `cd npm && npm test` 验证 Skill 结构和安装脚本。
|
||||
|
||||
---
|
||||
|
||||
|
|
@ -337,7 +324,6 @@ AI 代理可以:
|
|||
|
||||
- [主项目 README](../README.md) - gitlink-cli 项目说明
|
||||
- [设计文档](../doc/design.md) - 架构设计和开发计划
|
||||
- [API 参考文档](../doc/gitlink_api_reference.md) - GitLink API 参考文档
|
||||
- [gitlink-bisync](https://www.gitlink.org.cn/wbtiger/gitlink-bisync) - 代码双向同步系统
|
||||
|
||||
---
|
||||
|
|
|
|||
|
|
@ -0,0 +1,143 @@
|
|||
---
|
||||
name: gitlink-maintainer-copilot
|
||||
version: 1.0.0
|
||||
description: "Use when a maintainer wants a GitLink project diagnosis, governance plan, contributor-readiness check, or a confirmed governance Issue for a repository."
|
||||
metadata:
|
||||
requires:
|
||||
bins: ["gitlink-cli"]
|
||||
cliHelp: "gitlink-cli --help"
|
||||
---
|
||||
|
||||
# gitlink-maintainer-copilot
|
||||
|
||||
**CRITICAL - 开始前必须先阅读 [`../gitlink-shared/SKILL.md`](../gitlink-shared/SKILL.md),其中包含认证、权限处理、JSON 输出和 GitLink 工具边界。**
|
||||
**CRITICAL - 默认只读。只有用户明确确认后,才允许创建治理 Issue 或发表评论。**
|
||||
**CRITICAL - 所有结论必须绑定证据;无法采集的数据必须标记为“数据缺失”,不得猜测。**
|
||||
|
||||
## 目标
|
||||
|
||||
本 Skill 帮助 Agent 把 GitLink 仓库数据转化为维护者可执行的驾驶舱:
|
||||
|
||||
- Maintainer Evidence Pack:采集仓库、Issue、PR、Commit、贡献者、Release、CI、README 等证据。
|
||||
- Playbook Diagnosis:根据证据匹配维护剧本,解释风险来源。
|
||||
- 30/60/90 天治理计划:把风险变成可执行任务。
|
||||
- Governance Issue Draft:生成可确认落地的治理 Issue 草稿。
|
||||
|
||||
详细规则见:
|
||||
|
||||
- [`references/evidence-pack.md`](references/evidence-pack.md)
|
||||
- [`references/playbooks.md`](references/playbooks.md)
|
||||
- [`references/governance-issue-template.md`](references/governance-issue-template.md)
|
||||
|
||||
## 适用场景
|
||||
|
||||
当用户提出以下需求时使用本 Skill:
|
||||
|
||||
- “帮我分析这个 GitLink 仓库是否健康”
|
||||
- “给项目做维护者驾驶舱”
|
||||
- “找出 Issue/PR 堵塞点”
|
||||
- “给开源项目生成治理计划”
|
||||
- “帮我创建一个项目治理 Issue”
|
||||
- “比赛演示需要一个可落地的 GitLink Skill”
|
||||
|
||||
不要用于:
|
||||
|
||||
- 单纯查看某个 Issue、PR、Release 的详情;改用对应领域 Skill。
|
||||
- 直接批量修改 Issue、关闭 PR、删除资源。
|
||||
- GitHub/GitLab 仓库;本 Skill 只面向 GitLink。
|
||||
|
||||
## 工作流
|
||||
|
||||
### 1. 建立上下文
|
||||
|
||||
1. 阅读 `gitlink-shared`。
|
||||
2. 确认 `owner` 和 `repo`。如果当前目录是 GitLink 仓库,可以依赖 `gitlink-cli` 自动从 remote 解析。
|
||||
3. 说明默认只读,并告诉用户写入治理 Issue 前会二次确认。
|
||||
|
||||
### 2. 采集证据
|
||||
|
||||
优先使用 Shortcuts,所有命令都加 `--format json`。
|
||||
|
||||
```bash
|
||||
gitlink-cli repo +info --owner <owner> --repo <repo> --format json
|
||||
gitlink-cli issue +list --owner <owner> --repo <repo> --state open --limit 100 --format json
|
||||
gitlink-cli issue +list --owner <owner> --repo <repo> --state closed --limit 100 --format json
|
||||
gitlink-cli pr +list --owner <owner> --repo <repo> --state open --limit 100 --format json
|
||||
gitlink-cli pr +list --owner <owner> --repo <repo> --state merged --limit 100 --format json
|
||||
gitlink-cli pr +list --owner <owner> --repo <repo> --state closed --limit 100 --format json
|
||||
gitlink-cli release +list --owner <owner> --repo <repo> --format json
|
||||
gitlink-cli ci +builds --owner <owner> --repo <repo> --format json
|
||||
```
|
||||
|
||||
Shortcuts 未覆盖时使用 Raw API:
|
||||
|
||||
```bash
|
||||
gitlink-cli api GET /v1/<owner>/<repo>/commits --query 'page=1&limit=100' --format json
|
||||
gitlink-cli api GET /v1/<owner>/<repo>/contributors/stat --format json
|
||||
gitlink-cli api GET /<owner>/<repo>/languages --format json
|
||||
gitlink-cli api GET /<owner>/<repo>/readme --format json
|
||||
```
|
||||
|
||||
如果某个命令失败,不要中断整个诊断。记录:
|
||||
|
||||
- 命令
|
||||
- 失败原因
|
||||
- 该缺失会影响哪些判断
|
||||
|
||||
### 3. 生成 Evidence Pack
|
||||
|
||||
按 [`references/evidence-pack.md`](references/evidence-pack.md) 汇总证据。每条结论都必须能追溯到至少一个证据项。
|
||||
|
||||
证据引用格式:
|
||||
|
||||
```text
|
||||
[E3: open_prs] open PR count = 8, oldest updated_at = 2026-03-10
|
||||
```
|
||||
|
||||
### 4. 匹配治理剧本
|
||||
|
||||
按 [`references/playbooks.md`](references/playbooks.md) 选择 1-3 个剧本。优先选择证据最充分、对维护者最有行动价值的剧本。
|
||||
|
||||
输出时必须包含:
|
||||
|
||||
- 匹配剧本名称
|
||||
- 触发证据
|
||||
- 风险等级:High / Medium / Low
|
||||
- 本周可执行动作
|
||||
- 30/60/90 天治理计划
|
||||
|
||||
### 5. 生成驾驶舱报告
|
||||
|
||||
报告必须包含:
|
||||
|
||||
1. 项目维护状态总览
|
||||
2. Evidence Pack 摘要
|
||||
3. 3-5 个关键风险
|
||||
4. 匹配到的治理剧本
|
||||
5. 30/60/90 天治理计划
|
||||
6. Governance Issue 草稿
|
||||
7. 数据缺失和可信度说明
|
||||
|
||||
参考 [`examples/sample-dashboard-report.md`](examples/sample-dashboard-report.md)。
|
||||
|
||||
### 6. 写入确认闸门
|
||||
|
||||
默认不要写入 GitLink。只有当用户明确说“创建治理 Issue”“发布这个 Issue”“确认写入”等同义指令后,才可以执行写入。
|
||||
|
||||
写入前必须展示将执行的命令和完整 Issue 内容:
|
||||
|
||||
```bash
|
||||
gitlink-cli issue +create --owner <owner> --repo <repo> \
|
||||
--title "<governance issue title>" \
|
||||
--body "<governance issue body>"
|
||||
```
|
||||
|
||||
用户确认后只创建一个治理 Issue。不要批量创建 Issue,不要关闭 Issue,不要评论 PR,除非用户另行明确要求。
|
||||
|
||||
## 输出准则
|
||||
|
||||
- 用中文输出,保留 Evidence Pack、Playbook、Governance Issue 等少量英文术语。
|
||||
- 风险判断要克制:有证据就判断,无证据就标注缺失。
|
||||
- 建议必须能被维护者执行,避免“加强管理”“优化流程”这类空话。
|
||||
- 治理任务要有验收标准,例如“关闭或回复 10 个超过 14 天未更新的 Issue”。
|
||||
- 如果仓库是新项目或数据量很少,报告重点转为“治理基线补齐”,不要给出虚假的趋势分析。
|
||||
|
|
@ -0,0 +1,85 @@
|
|||
# Maintainer Copilot Workflow
|
||||
|
||||
本示例展示 Agent 如何使用 `gitlink-maintainer-copilot` 生成维护者驾驶舱,并在用户确认后创建治理 Issue。
|
||||
|
||||
## 1. 用户请求
|
||||
|
||||
```text
|
||||
帮我给 Gitlink/gitlink-cli 生成一个维护者驾驶舱,并准备一个可落地的治理 Issue。
|
||||
```
|
||||
|
||||
## 2. Agent 声明只读采集
|
||||
|
||||
```text
|
||||
我会先使用 gitlink-cli 只读采集仓库、Issue、PR、Release、CI、Commit 和贡献者数据。不会写入 GitLink;如果需要创建治理 Issue,我会先展示完整草稿并等待你确认。
|
||||
```
|
||||
|
||||
## 3. 采集证据
|
||||
|
||||
```bash
|
||||
gitlink-cli repo +info --owner Gitlink --repo gitlink-cli --format json
|
||||
gitlink-cli issue +list --owner Gitlink --repo gitlink-cli --state open --limit 100 --format json
|
||||
gitlink-cli issue +list --owner Gitlink --repo gitlink-cli --state closed --limit 100 --format json
|
||||
gitlink-cli pr +list --owner Gitlink --repo gitlink-cli --state open --limit 100 --format json
|
||||
gitlink-cli pr +list --owner Gitlink --repo gitlink-cli --state merged --limit 100 --format json
|
||||
gitlink-cli pr +list --owner Gitlink --repo gitlink-cli --state closed --limit 100 --format json
|
||||
gitlink-cli release +list --owner Gitlink --repo gitlink-cli --format json
|
||||
gitlink-cli ci +builds --owner Gitlink --repo gitlink-cli --format json
|
||||
gitlink-cli api GET /v1/Gitlink/gitlink-cli/commits --query 'page=1&limit=100' --format json
|
||||
gitlink-cli api GET /v1/Gitlink/gitlink-cli/contributors/stat --format json
|
||||
gitlink-cli api GET /Gitlink/gitlink-cli/languages --format json
|
||||
gitlink-cli api GET /Gitlink/gitlink-cli/readme --format json
|
||||
```
|
||||
|
||||
## 4. 输出驾驶舱报告
|
||||
|
||||
报告结构:
|
||||
|
||||
```markdown
|
||||
# GitLink Maintainer Copilot Report
|
||||
|
||||
## 维护状态总览
|
||||
...
|
||||
|
||||
## Evidence Pack
|
||||
...
|
||||
|
||||
## 关键风险
|
||||
...
|
||||
|
||||
## 匹配 Playbooks
|
||||
...
|
||||
|
||||
## 30/60/90 天治理计划
|
||||
...
|
||||
|
||||
## Governance Issue 草稿
|
||||
...
|
||||
|
||||
## 数据缺失与可信度
|
||||
...
|
||||
```
|
||||
|
||||
完整样例见 [`sample-dashboard-report.md`](sample-dashboard-report.md)。
|
||||
|
||||
## 5. 请求写入确认
|
||||
|
||||
Agent 展示完整治理 Issue 草稿后询问:
|
||||
|
||||
```text
|
||||
以上是将创建的治理 Issue 内容。请明确回复“确认创建治理 Issue”,我才会执行写入。
|
||||
```
|
||||
|
||||
## 6. 用户确认后创建 Issue
|
||||
|
||||
```bash
|
||||
gitlink-cli issue +create --owner Gitlink --repo gitlink-cli \
|
||||
--title "chore: 建立 gitlink-cli 项目维护治理计划" \
|
||||
--body "<完整治理 Issue 正文>"
|
||||
```
|
||||
|
||||
## 7. 完成后回报
|
||||
|
||||
```text
|
||||
治理 Issue 已创建。后续维护者可以按 30/60/90 天计划逐项勾选,并在下次运行 Maintainer Copilot 时对比进度。
|
||||
```
|
||||
|
|
@ -0,0 +1,126 @@
|
|||
# GitLink Maintainer Copilot Report
|
||||
|
||||
> 样例报告使用模拟数据,适合比赛 README、截图或录屏展示。真实执行时必须使用 `gitlink-cli` 采集 Evidence Pack。
|
||||
|
||||
## 维护状态总览
|
||||
|
||||
项目:`Gitlink/gitlink-cli`
|
||||
|
||||
总体判断:维护状态为 **Medium Risk**。项目已有清晰 CLI 能力和 Agent Skills 基础,但 PR 响应、Release 节奏和新人引导材料需要进一步稳定。
|
||||
|
||||
可信度:High。已采集仓库详情、Issue、PR、Release、Commit、贡献者和 README 数据;CI 数据缺失。
|
||||
|
||||
## Evidence Pack
|
||||
|
||||
| 编号 | 摘要 |
|
||||
|---|---|
|
||||
| E1 repo_profile | 仓库有 README、默认分支为 `master`,License 存在,watchers=42,forked=18 |
|
||||
| E2 open_issues | open Issue 16 个,其中 5 个超过 14 天未更新 |
|
||||
| E3 closed_issues | 最近关闭 Issue 22 个,说明仍有维护活动 |
|
||||
| E4 open_prs | open PR 7 个,其中 3 个超过 7 天未更新 |
|
||||
| E5 merged_prs | 最近合并 PR 11 个,主要集中在 CLI bugfix 和文档 |
|
||||
| E7 releases | 最近 Release 距今 45 天 |
|
||||
| E8 ci_builds | 数据缺失,无法判断 CI 稳定性 |
|
||||
| E9 commits | 最近 100 个提交中包含 18 个 fix、9 个 docs、6 个 feat |
|
||||
| E10 contributors | 贡献者 6 人,前 2 名贡献占比约 76% |
|
||||
| E12 readme | README 有安装说明,但贡献入口和新人任务入口不明显 |
|
||||
|
||||
## 关键风险
|
||||
|
||||
1. **PR 堵塞风险中等**:[E4] open PR 7 个,3 个超过 7 天未更新,可能降低外部贡献者反馈体验。
|
||||
2. **新人转化不足**:[E12] README 缺少明确新人入口;[E2] open Issue 中可领取任务标识不足。
|
||||
3. **Release 节奏不稳定**:[E7] 最近 Release 距今 45 天;[E9] 已累计多项 fix/feat/docs 变更。
|
||||
4. **贡献者集中度偏高**:[E10] 前 2 名贡献占比约 76%,存在维护者负载集中风险。
|
||||
5. **CI 可信度缺失**:[E8] 未采集到 CI 数据,无法确认基础自动化质量。
|
||||
|
||||
## 匹配 Playbooks
|
||||
|
||||
### P2 PR 堵塞清理
|
||||
|
||||
触发证据:[E4] open PR 7 个,其中 3 个超过 7 天未更新。
|
||||
|
||||
本周动作:
|
||||
|
||||
- 对所有 open PR 留下最新维护者反馈。
|
||||
- 将 PR 分为“可合并 / 需要修改 / 已过期”三组。
|
||||
- 优先处理文档和低风险 bugfix PR。
|
||||
|
||||
### P3 新人友好改造
|
||||
|
||||
触发证据:[E12] README 新人入口不足;[E2] open Issue 缺少可领取标识。
|
||||
|
||||
本周动作:
|
||||
|
||||
- 在 README 增加“首次贡献”小节。
|
||||
- 选择 3 个低风险 Issue 补充复现步骤和验收标准。
|
||||
- 给新人任务添加清晰标签或标题前缀。
|
||||
|
||||
### P4 Release 稳定化
|
||||
|
||||
触发证据:[E7] Release 间隔较长;[E9] 最近已有多项用户可见变更。
|
||||
|
||||
本周动作:
|
||||
|
||||
- 生成下一版 Release Notes 草稿。
|
||||
- 将最近合并变更归类为 Added / Fixed / Docs。
|
||||
- 确认 CI 或手工验证结果后再发布。
|
||||
|
||||
## 30/60/90 天治理计划
|
||||
|
||||
30 天:
|
||||
|
||||
- [ ] 所有 open PR 都有维护者反馈,超过 14 天未更新的 PR 降到 0。
|
||||
- [ ] README 增加首次贡献入口和本地运行最短路径。
|
||||
- [ ] 建立下一个 Release 的变更清单草稿。
|
||||
|
||||
60 天:
|
||||
|
||||
- [ ] 固化 PR 评审 SLA,例如 7 天内首次响应。
|
||||
- [ ] 整理 3-5 个适合新人领取的 Issue。
|
||||
- [ ] 补齐 Issue/PR 模板,降低沟通成本。
|
||||
|
||||
90 天:
|
||||
|
||||
- [ ] 形成每月维护节奏,固定回顾 Issue、PR、Release 状态。
|
||||
- [ ] 将基础检查纳入 CI 或公开验证说明。
|
||||
- [ ] 复盘新人 Issue 的领取和合并情况。
|
||||
|
||||
## Governance Issue 草稿
|
||||
|
||||
标题:
|
||||
|
||||
```text
|
||||
chore: 建立 gitlink-cli 项目维护治理计划
|
||||
```
|
||||
|
||||
正文摘要:
|
||||
|
||||
```markdown
|
||||
## 背景
|
||||
|
||||
本 Issue 由 GitLink Maintainer Copilot 根据仓库数据生成,用于跟踪项目维护治理动作。
|
||||
|
||||
## 诊断结论
|
||||
|
||||
风险等级:Medium
|
||||
|
||||
匹配治理剧本:
|
||||
|
||||
- P2 PR 堵塞清理:[E4] open PR 7 个,3 个超过 7 天未更新。
|
||||
- P3 新人友好改造:[E12] README 新人入口不足。
|
||||
- P4 Release 稳定化:[E7] Release 距今 45 天。
|
||||
|
||||
## 本周建议动作
|
||||
|
||||
- [ ] 回复所有超过 7 天未更新的 open PR。
|
||||
- [ ] 补 README 首次贡献入口。
|
||||
- [ ] 生成下一版 Release Notes 草稿。
|
||||
```
|
||||
|
||||
## 数据缺失与可信度
|
||||
|
||||
| 缺失项 | 影响 | 建议 |
|
||||
|---|---|---|
|
||||
| E8 ci_builds | 无法判断 CI 稳定性 | 维护者可补充 CI 权限或手工验证记录 |
|
||||
|
||||
确认写入前,Agent 必须展示完整 Issue 正文并等待用户明确确认。
|
||||
|
|
@ -0,0 +1,63 @@
|
|||
# Maintainer Evidence Pack
|
||||
|
||||
Evidence Pack 是维护者驾驶舱的证据层。Agent 必须先采集证据,再给诊断和建议。
|
||||
|
||||
## 采集原则
|
||||
|
||||
- 优先只读命令。
|
||||
- 每条诊断至少引用一个证据编号。
|
||||
- 采集失败时记录缺失,不猜测。
|
||||
- 同一个指标来自多个命令时,以更具体的数据为准,并说明来源。
|
||||
|
||||
## 证据清单
|
||||
|
||||
| 编号 | 名称 | 命令 | 主要字段 | 用途 |
|
||||
|---|---|---|---|---|
|
||||
| E1 | repo_profile | `gitlink-cli repo +info --format json` | `full_name`, `description`, `default_branch`, `license_name`, `watchers_count`, `forked_count`, `issues_count`, `pull_requests_count`, `empty` | 判断基础治理、项目吸引力、默认分支和公开信息 |
|
||||
| E2 | open_issues | `gitlink-cli issue +list --state open --limit 100 --format json` | `subject`, `project_issues_index`, `created_at`, `updated_at`, `status_name`, `priority_name`, `assigners`, `tags`, `comment_journals_count` | 判断 Issue 积压、无人响应、分类质量 |
|
||||
| E3 | closed_issues | `gitlink-cli issue +list --state closed --limit 100 --format json` | 同 E2 | 判断处理节奏、关闭质量、近期维护痕迹 |
|
||||
| E4 | open_prs | `gitlink-cli pr +list --state open --limit 100 --format json` | `title`, `pull_request_number`, `created_at`, `updated_at`, `pull_request_status`, `user`, `head`, `base` | 判断 PR 堵塞、评审延迟、分支目标 |
|
||||
| E5 | merged_prs | `gitlink-cli pr +list --state merged --limit 100 --format json` | 同 E4 | 判断合并效率、近期协作活跃度 |
|
||||
| E6 | closed_prs | `gitlink-cli pr +list --state closed --limit 100 --format json` | 同 E4 | 判断拒绝/关闭模式 |
|
||||
| E7 | releases | `gitlink-cli release +list --format json` | `name`, `tag_name`, `created_at`, `description`, `version_id` | 判断发布成熟度 |
|
||||
| E8 | ci_builds | `gitlink-cli ci +builds --format json` | `id`, `status`, `created_at`, `duration`, `branch`, `commit` | 判断自动化质量 |
|
||||
| E9 | commits | `gitlink-cli api GET /v1/<owner>/<repo>/commits --query 'page=1&limit=100' --format json` | `sha`, `commit_message`, `commit_time`, `author`, `files` | 判断近期活跃、提交分布和变更主题 |
|
||||
| E10 | contributors | `gitlink-cli api GET /v1/<owner>/<repo>/contributors/stat --format json` | `total_count`, `contributors[].login`, `contributions`, `additions`, `deletions` | 判断贡献者集中度和协作风险 |
|
||||
| E11 | languages | `gitlink-cli api GET /<owner>/<repo>/languages --format json` | language map | 判断技术栈和 README/CI 建议 |
|
||||
| E12 | readme | `gitlink-cli api GET /<owner>/<repo>/readme --format json` | `content`, `encoding`, `sha` | 判断新手上手信息 |
|
||||
|
||||
## 缺失数据处理
|
||||
|
||||
记录格式:
|
||||
|
||||
```markdown
|
||||
| 缺失项 | 命令 | 影响 | 后续建议 |
|
||||
|---|---|---|---|
|
||||
| E8 ci_builds | `gitlink-cli ci +builds ...` | 无法判断 CI 稳定性 | 在报告中把 CI 结论标为“未验证” |
|
||||
```
|
||||
|
||||
常见处理:
|
||||
|
||||
- `401`:提示用户运行 `gitlink-cli auth login`,继续公开数据诊断。
|
||||
- `403`:说明权限不足,避免输出内部治理判断。
|
||||
- `404`:确认 owner/repo 是否正确。
|
||||
- 空数组:这不是失败。应解读为“当前样本为空”,例如暂无 Release 或暂无 open PR。
|
||||
|
||||
## 证据引用格式
|
||||
|
||||
在报告中使用紧凑引用:
|
||||
|
||||
```markdown
|
||||
- PR 堵塞风险高:[E4] open PR 8 个,其中 3 个超过 14 天未更新。
|
||||
- 发布成熟度不足:[E7] 未发现 Release;[E9] 最近 100 个提交中已有 12 个 feat/fix 变更。
|
||||
```
|
||||
|
||||
## 可信度等级
|
||||
|
||||
| 等级 | 条件 |
|
||||
|---|---|
|
||||
| High | E1-E7 至少 6 项可用,且 E9 或 E10 至少 1 项可用 |
|
||||
| Medium | E1-E7 至少 4 项可用 |
|
||||
| Low | 少于 4 项可用,或关键数据仅来自单一来源 |
|
||||
|
||||
可信度低时,输出应以“建议先补齐数据采集/权限”为主。
|
||||
|
|
@ -0,0 +1,94 @@
|
|||
# Governance Issue Template
|
||||
|
||||
创建治理 Issue 前,必须先把完整草稿展示给用户并获得明确确认。
|
||||
|
||||
## 标题模板
|
||||
|
||||
```text
|
||||
chore: 建立 <repo> 项目维护治理计划
|
||||
```
|
||||
|
||||
## 正文模板
|
||||
|
||||
```markdown
|
||||
## 背景
|
||||
|
||||
本 Issue 由 GitLink Maintainer Copilot 根据仓库公开/授权数据生成,用于跟踪项目维护治理动作。
|
||||
|
||||
## Evidence Pack
|
||||
|
||||
- [E1: repo_profile] <仓库基础信息摘要>
|
||||
- [E2: open_issues] <open Issue 摘要>
|
||||
- [E4: open_prs] <open PR 摘要>
|
||||
- [E7: releases] <Release 摘要>
|
||||
- [E9: commits] <提交活跃摘要>
|
||||
- [E10: contributors] <贡献者摘要>
|
||||
|
||||
数据缺失:
|
||||
|
||||
- <如无缺失,写“无关键缺失”。>
|
||||
|
||||
## 诊断结论
|
||||
|
||||
风险等级:<High / Medium / Low>
|
||||
|
||||
匹配治理剧本:
|
||||
|
||||
- <Playbook 名称>:<触发证据>
|
||||
|
||||
关键风险:
|
||||
|
||||
1. <风险 1,引用证据>
|
||||
2. <风险 2,引用证据>
|
||||
3. <风险 3,引用证据>
|
||||
|
||||
## 30/60/90 天计划
|
||||
|
||||
30 天:
|
||||
|
||||
- [ ] <任务,含验收标准>
|
||||
- [ ] <任务,含验收标准>
|
||||
|
||||
60 天:
|
||||
|
||||
- [ ] <任务,含验收标准>
|
||||
- [ ] <任务,含验收标准>
|
||||
|
||||
90 天:
|
||||
|
||||
- [ ] <任务,含验收标准>
|
||||
- [ ] <任务,含验收标准>
|
||||
|
||||
## 本周建议动作
|
||||
|
||||
- [ ] <最小可执行动作 1>
|
||||
- [ ] <最小可执行动作 2>
|
||||
- [ ] <最小可执行动作 3>
|
||||
|
||||
## 验收标准
|
||||
|
||||
- <可验证标准 1>
|
||||
- <可验证标准 2>
|
||||
- <可验证标准 3>
|
||||
|
||||
---
|
||||
|
||||
生成方式:GitLink Maintainer Copilot Skill
|
||||
```
|
||||
|
||||
## 写入命令
|
||||
|
||||
用户确认后执行:
|
||||
|
||||
```bash
|
||||
gitlink-cli issue +create --owner <owner> --repo <repo> \
|
||||
--title "chore: 建立 <repo> 项目维护治理计划" \
|
||||
--body "<上方正文>"
|
||||
```
|
||||
|
||||
## 禁止事项
|
||||
|
||||
- 不要批量创建多个治理 Issue。
|
||||
- 不要在未确认前执行写入。
|
||||
- 不要把 Token、私有邮箱、调试日志放入 Issue 正文。
|
||||
- 不要把缺失数据写成确定结论。
|
||||
|
|
@ -0,0 +1,166 @@
|
|||
# Maintainer Playbooks
|
||||
|
||||
Playbook 是把 Evidence Pack 转成治理动作的规则库。Agent 应选择 1-3 个最相关剧本。
|
||||
|
||||
## P1 低活跃恢复
|
||||
|
||||
触发条件:
|
||||
|
||||
- [E9] 最近 30 天提交很少或没有提交。
|
||||
- [E2] open Issue 有新增但缺少回复。
|
||||
- [E10] 贡献者集中在 1-2 人。
|
||||
|
||||
风险信号:
|
||||
|
||||
- 项目对外仍有关注、Fork 或 Issue,但维护节奏下降。
|
||||
- 新贡献者不知道项目是否还接受贡献。
|
||||
|
||||
本周动作:
|
||||
|
||||
- 回复所有超过 14 天未更新的 open Issue。
|
||||
- 创建“维护状态说明”Issue,说明当前优先级和可接受贡献范围。
|
||||
- 标记 2-3 个适合外部贡献者的小任务。
|
||||
|
||||
30/60/90 天计划:
|
||||
|
||||
- 30 天:清理过期 Issue,保留可复现、可行动的问题。
|
||||
- 60 天:补 README 的安装、运行、贡献入口。
|
||||
- 90 天:建立每月一次的维护节奏,发布一个小版本或维护公告。
|
||||
|
||||
验收标准:
|
||||
|
||||
- open Issue 中超过 14 天未回复的数量减少 70%。
|
||||
- 至少 3 个 Issue 有明确下一步。
|
||||
- README 有贡献入口或维护状态说明。
|
||||
|
||||
## P2 PR 堵塞清理
|
||||
|
||||
触发条件:
|
||||
|
||||
- [E4] open PR 数量较多。
|
||||
- [E4] 存在超过 7 天未更新或未评审的 PR。
|
||||
- [E5] merged PR 样本少于 open PR 样本。
|
||||
|
||||
风险信号:
|
||||
|
||||
- 贡献者提交后长期没有反馈。
|
||||
- PR 无法合并导致贡献热情下降。
|
||||
|
||||
本周动作:
|
||||
|
||||
- 按“可合并 / 需要修改 / 已过期”三类整理 open PR。
|
||||
- 对每个超过 7 天未更新的 PR 留下明确反馈。
|
||||
- 优先合并低风险文档、测试、修复类 PR。
|
||||
|
||||
30/60/90 天计划:
|
||||
|
||||
- 30 天:把 open PR 降到可管理数量。
|
||||
- 60 天:建立 PR 模板和评审 SLA。
|
||||
- 90 天:把常见检查迁移到 CI,减少人工评审负担。
|
||||
|
||||
验收标准:
|
||||
|
||||
- 所有 open PR 都有最新维护者反馈。
|
||||
- 超过 14 天未更新的 open PR 数量降到 0 或给出关闭理由。
|
||||
- 新 PR 平均首次响应时间少于 7 天。
|
||||
|
||||
## P3 新人友好改造
|
||||
|
||||
触发条件:
|
||||
|
||||
- [E12] README 缺少安装、运行、测试、贡献指南中的任意两项。
|
||||
- [E2] open Issue 缺少标签或优先级。
|
||||
- [E10] 贡献者数量少,但项目仍有 Issue 或关注。
|
||||
|
||||
风险信号:
|
||||
|
||||
- 潜在贡献者无法判断从哪里开始。
|
||||
- Issue 内容对新人不可执行。
|
||||
|
||||
本周动作:
|
||||
|
||||
- 在 README 补充最短运行路径。
|
||||
- 给 2-5 个简单 Issue 加上“good first issue”或等价说明。
|
||||
- 为新人任务补充复现步骤、预期行为和验收标准。
|
||||
|
||||
30/60/90 天计划:
|
||||
|
||||
- 30 天:补齐 README、CONTRIBUTING 或 Issue 模板。
|
||||
- 60 天:形成新人任务池。
|
||||
- 90 天:复盘新人贡献转化,保留有效标签和模板。
|
||||
|
||||
验收标准:
|
||||
|
||||
- README 包含安装、运行、测试、贡献四个入口。
|
||||
- 至少 3 个 Issue 可被新人独立领取。
|
||||
- 新 Issue 模板能引导用户提供复现信息。
|
||||
|
||||
## P4 Release 稳定化
|
||||
|
||||
触发条件:
|
||||
|
||||
- [E7] 没有 Release,或最近 Release 距今较久。
|
||||
- [E9] 最近提交包含多项功能或修复。
|
||||
- [E5] 已合并 PR 有明显用户可见变更。
|
||||
|
||||
风险信号:
|
||||
|
||||
- 用户无法判断可用版本。
|
||||
- 变更沉淀在提交记录中,没有形成版本说明。
|
||||
|
||||
本周动作:
|
||||
|
||||
- 生成下一版 Release Notes 草稿。
|
||||
- 梳理已合并变更为 `Added / Fixed / Changed / Docs`。
|
||||
- 明确是否需要补充测试或 CI 后再发布。
|
||||
|
||||
30/60/90 天计划:
|
||||
|
||||
- 30 天:发布一个维护版本或明确下个版本计划。
|
||||
- 60 天:固定 Release Notes 模板。
|
||||
- 90 天:把 Release 与里程碑、Issue、PR 建立关联。
|
||||
|
||||
验收标准:
|
||||
|
||||
- 至少有一个可追溯 Release 或版本计划。
|
||||
- Release Notes 能关联主要 Issue/PR/Commit。
|
||||
- 用户能从 README 找到最新稳定版本。
|
||||
|
||||
## P5 基础治理补齐
|
||||
|
||||
触发条件:
|
||||
|
||||
- [E1] `license_name` 为空。
|
||||
- [E1] description 为空或项目元信息不足。
|
||||
- [E8] CI 数据缺失或持续失败。
|
||||
- [E12] README 缺失或内容过短。
|
||||
|
||||
风险信号:
|
||||
|
||||
- 项目难以被搜索、复用、评审或贡献。
|
||||
- 比赛/开源收录时材料不完整。
|
||||
|
||||
本周动作:
|
||||
|
||||
- 补项目描述、License、README 快速开始。
|
||||
- 确认默认分支和基础 CI 状态。
|
||||
- 建立一个“项目治理基线”Issue 追踪补齐事项。
|
||||
|
||||
30/60/90 天计划:
|
||||
|
||||
- 30 天:补齐 README、License、基础元信息。
|
||||
- 60 天:补 Issue/PR 模板和贡献说明。
|
||||
- 90 天:形成版本发布、CI、维护响应的固定节奏。
|
||||
|
||||
验收标准:
|
||||
|
||||
- 仓库详情中项目描述、License、README 均可见。
|
||||
- CI 至少覆盖构建或测试中的一项。
|
||||
- 维护者能用一个治理 Issue 跟踪剩余事项。
|
||||
|
||||
## 选择规则
|
||||
|
||||
- High 风险剧本优先。
|
||||
- 同类风险只选择一个主剧本,避免输出重复建议。
|
||||
- 如果数据样本少,优先选择 P5 基础治理补齐。
|
||||
- 如果用户明确关注新人、Release 或 PR,则用户目标优先于自动排序。
|
||||
Loading…
Reference in New Issue