diff --git a/README.md b/README.md index 09140388..d9486dbf 100644 --- a/README.md +++ b/README.md @@ -5,55 +5,624 @@ [![Go Version](https://img.shields.io/badge/Go-1.26%2B-blue.svg)](https://golang.org) [![npm version](https://img.shields.io/npm/v/@gitlink-ai/cli.svg)](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, CI/CD, and AI-powered workflows, with 40+ commands and 12 AI Agent [Skills](./skills/). +The official [GitLink](https://www.gitlink.org.cn) CLI tool — built for developers 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 **20+ AI Agent Skills**. **[中文文档](./README.zh-CN.md)** -[Install](#installation--quick-start) · [AI Agent Skills](#ai-agent-skills) · [Auth](#configure--use) · [Commands](#usage-examples) · [Contributing](#related-projects) +--- -## Why gitlink-cli? +## Project Overview -- **Agent-Native Design** — 12 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` -- **Up and Running in 3 Minutes** — Interactive login or `GITLINK_TOKEN` env var, from install to first API call in just 3 steps -- **Secure & Controllable** — OS-native keychain credential storage, `GITLINK_TOKEN` env var for CI/CD & non-interactive environments, auto git remote context resolution -- **Three-Layer Architecture** — Shortcuts (human & AI friendly) → Raw API (full coverage) → Config (configuration management) +This project delivers automation capabilities for the GitLink open-source collaboration platform across three sub-tasks. -## Features +### Sub-task 1: Extend and Enhance GitLink-CLI Capabilities (50%) + +> Focus: CLI feature expansion | Difficulty: Medium-High | Tech Stack: Go + +Build a robust, cross-platform, AI-friendly CLI tool covering the full GitLink platform. + +**Core Architecture — Three-Layer Design:** + +``` +Shortcuts (40+ commands) + → Clean commands for humans and AI Agents + → issue +create, pr +list, wiki +create ... + ↓ +Raw API (Full endpoint coverage) + → Direct GitLink OpenAPI calls + → api GET /users/me, api POST /.../issues ... + ↓ +Config & Auth (Configuration layer) + → Auth, context resolution, output formatting + → auth login, config init, --format json +``` + +**CLI Feature Matrix:** | Category | Capabilities | |----------|-------------| -| 📦 Repo | List, create, fork, delete repositories, view repo info | -| 🐛 Issue | Create, update, close, comment on issues, 6 batch operations (close/status/priority/assignee/label/create) | -| 📖 Wiki | View, create, update, delete Wiki pages | -| 🔀 PR | Create, merge, review pull requests, view changed files | -| 🌿 Branch | Create, delete, list, protect, unprotect branches | -| 🏷️ Release | Create, view, delete releases | -| 🔗 Webhook | Create, view, update, delete, test webhooks, configure automation triggers | -| 🏢 Org | Manage organizations, members, teams | -| 🔧 CI | View builds, logs, CI/CD operations | -| 🔍 Search | Search repositories, users | -| 👤 User | View user profiles and info | -| 📋 PM | Sprint management, kanban boards, weekly reports | -| 🤖 Workflow | AI-powered issue triage, PR review, release notes | +| Repo | List, create, fork, delete, view repo info | +| Issue | Create, update, close, comment, 6 batch operations (close/status/priority/assignee/label/create) | +| Wiki | View, create, update, delete Wiki pages | +| PR | Create, merge, review, view changed files | +| Branch | Create, delete, list, protect, unprotect | +| Release | Create, view, delete releases | +| Webhook | Create, view, update, delete, test webhooks | +| Org | Manage organizations, members, teams | +| CI | View builds, logs, CI/CD operations | +| Search | Search repositories, users | +| User | View user profiles | +| PM | Sprint management, kanban, weekly reports | +| Raw API | Call any GitLink OpenAPI endpoint directly | + +**Key Highlights:** + +- **Agent-Native Design** — Every command tested with real Agents: concise parameters, smart defaults, structured output +- **Cross-Platform** — macOS / Linux / Windows (x64/arm64), one-command install +- **Secure & Controllable** — OS-native keychain storage, `GITLINK_TOKEN` env var for CI/CD +- **Smart Context Resolution** — Auto-resolves owner/repo from `git remote origin` +- **Zero-Barrier Open Source** — MulanPSL-2.0, `npm install -g @gitlink-ai/cli` and go + +### Sub-task 2: Develop and Enrich GitLink Skills (20%) + +> Focus: Agent Skill Development | Difficulty: Medium | No Go required — Markdown + CLI calls + +Skills are structured knowledge bases designed for Claude Code and other AI Agents. Each Skill includes `SKILL.md` (command reference), `REFERENCE.md` (API reference), `TROUBLESHOOTING.md` (troubleshooting), and `examples/` (complete workflow examples). AI Agents can operate GitLink by reading Skills with zero manual documentation lookup. + +**Skills Directory Structure:** + +``` +skills/ +├── gitlink-shared/ # Auth, global params, safety rules, branch conventions +├── gitlink-repo/ # Repository management +├── gitlink-issue/ # Issue management +├── gitlink-pr/ # Pull Request +├── gitlink-branch/ # Branch management +├── gitlink-release/ # Release management +├── gitlink-wiki/ # Wiki management +├── gitlink-webhook/ # Webhook management +├── gitlink-org/ # Organization management +├── gitlink-user/ # User management +├── gitlink-ci/ # CI/CD +├── gitlink-search/ # Search functionality +├── gitlink-pm/ # Project management (Sprints / Kanban / Weekly Reports) +├── gitlink-team/ # Team management +├── gitlink-changelog/ # Release Notes / Changelog generation +├── gitlink-health/ # Project health reports (issue response time, PR merge efficiency, contributor activity) +├── gitlink-contrib/ # Contributor reports (statistics & rankings) +├── gitlink-compliance/ # Security & compliance (license scanning, secret detection, PII scanning) +├── gitlink-issue-triage/ # Issue auto-classification (tracker/priority/labels) +├── gitlink-onboard/ # New contributor onboarding (Good First Issue identification & welcome comments) +├── gitlink-workflow/ # AI workflow orchestration (issue triage, PR review, release notes) +├── gitlink-code-review/ # Intelligent code review (four-dimension scoring, structured review comments) +├── gitlink-research/ # Research assistance (project insights, trend tracking, compliance & reproducibility, collaboration matching, citation generation) +└── gitlink-code-insight/ # Feature panorama (all Shortcuts cataloged with descriptions & examples) +``` + +**All Skills at a Glance:** + +| Skill | Description | Typical Commands | +|-------|-------------|-----------------| +| **gitlink-shared** | Auth, global params, API reference, safety rules | `auth login`, `auth status` | +| **gitlink-repo** | Repository management | `repo +list`, `repo +create`, `repo +info`, `repo +fork` | +| **gitlink-issue** | Issue management | `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 management | `branch +list`, `branch +create`, `branch +delete`, `branch +protect` | +| **gitlink-release** | Release management | `release +list`, `release +create`, `release +view` | +| **gitlink-wiki** | Wiki management | `wiki +list`, `wiki +view`, `wiki +create`, `wiki +update`, `wiki +delete` | +| **gitlink-webhook** | Webhook management | `webhook +list`, `webhook +create`, `webhook +test` | +| **gitlink-org** | Organization management | `org +list`, `org +info`, `org +members` | +| **gitlink-user** | User management | `user +me`, `user +info` | +| **gitlink-ci** | CI/CD | `ci +builds`, `ci +logs` | +| **gitlink-search** | Search functionality | `search +repos`, `search +users` | +| **gitlink-pm** | Project management | Sprint mgmt, kanban, weekly reports (via Raw API) | +| **gitlink-team** | Team management | `team +list`, `team +create`, `team +add-member` | +| **gitlink-changelog** | Release Notes generation | Auto-collect commits/PRs/Issues, generate structured changelogs | +| **gitlink-health** | Project health reports | Issue response time, PR merge efficiency, contributor activity stats | +| **gitlink-contrib** | Contributor reports | `contrib +report` | +| **gitlink-compliance** | Security & compliance | `compliance +scan`, `compliance +secrets`, `compliance +license` | +| **gitlink-issue-triage** | Issue auto-classification | Auto-detect tracker/priority/labels, generate audit reports | +| **gitlink-onboard** | New contributor onboarding | `onboard +welcome` | +| **gitlink-workflow** | AI workflow orchestration | Issue triage, PR review, repo setup, sprint reports | +| **gitlink-code-review** | Intelligent code review | Four-dimension scoring (quality/security/performance/maintainability) with auto-published reviews | +| **gitlink-research** | Research assistance | Project insights, trend tracking, compliance & reproducibility, collaboration matching, citation generation | +| **gitlink-code-insight** | Feature panorama | Complete Shortcuts catalog with descriptions & examples | + +**How AI Agents Use Skills:** + +``` +User: "Create an Issue on GitLink for me" + ↓ +AI Agent reads gitlink-issue/SKILL.md + ↓ +AI Agent executes: gitlink-cli issue +create -t "..." -b "..." + ↓ +Done! +``` + +AI Agents can automatically: create/manage Issues, create/merge PRs, publish Releases, manage Wiki, triage Issues, generate Release Notes, perform code reviews, and more. + +### Sub-task 3: Build End-to-End Automation Workflows (20%) + +> Focus: Compose existing capabilities to solve real problems | Difficulty: Low-Medium | No low-level coding required + +Combine gitlink-cli commands and Skills into complete, reproducible automation scenarios. Workflows are orchestrated via Shell/PowerShell scripts and support AI Agent-driven execution. + +--- + +**Five Automation Workflows at a Glance:** + +| # | Scenario | Script | Steps | Problem Solved | +|---|----------|--------|-------|---------------| +| 1 | Community Ops Automation | `01-community-ops.sh` | 7 | Untriaged issue backlog, manual weekly reports, manual Release Notes | +| 2 | Code Quality Gatekeeper | `02-code-quality-gatekeeper.sh` | 7 | Low PR review efficiency, inconsistent quality standards, AI code review | +| 3 | One-Click Project Init | `03-project-init.sh` | 8 | Repetitive new project setup, manual README/License/CI/Issue/Milestone config | +| 4 | Multi-Repo Collaboration | `04-multi-repo-collab.sh` | 7 | Scattered cross-repo status, lack of unified dashboard | +| 5 | Contributor Growth System | `05-contributor-growth.sh` | 6 | Hard-to-track contributor activity, lack of incentive mechanisms | + +--- + +### Scenario 1: Community Ops Automation + +**Script**: `workflows/01-community-ops.sh` + +**Workflow**: + +``` +issue +list → Fetch all open Issues + ↓ +Classify by keyword: Bug / Feature / Question / Docs + ↓ +issue +label-add → Auto-apply labels + ↓ +repo +members → Get repository member list +issue +update → Rotate assignment to members + ↓ +pr +list → Count PRs merged this week +issue +list → Count Issues closed this week + ↓ +wiki +create → Publish community weekly report to Wiki + ↓ +release +create → Auto-generate Release Notes +``` + +**Chained Commands**: + +| Step | Command | Purpose | +|------|---------|---------| +| 1 | `issue +list` | Fetch all open Issues | +| 2 | `issue +label-add` | Apply labels by category (bug/feature/question/documentation) | +| 3 | `repo +members` | Fetch repository member list | +| 4 | `issue +update` | Assign owners to Bug/Feature Issues | +| 5 | `pr +list` | Count PRs merged this week | +| 6 | `wiki +create` | Publish community weekly report | +| 7 | `release +create` | Auto-generate Release Notes | + +**Output Value**: Label-based filtering (repo Issues page filterable by label), clear ownership (every Issue has an assignee), Wiki weekly report (team & community can track weekly progress in Wiki), Release Notes (no manual changelog compilation at release time). + +**How to Run**: + +```bash +bash workflows/01-community-ops.sh --owner your-org --repo your-repo +bash workflows/01-community-ops.sh --owner zzx-coder --repo gitlink-cli +``` + +--- + +### Scenario 2: Code Quality Gatekeeper + +**Script**: `workflows/02-code-quality-gatekeeper.sh` + +**Workflow**: + +``` +pr +list → Fetch all open PRs + ↓ +pr +view → Read PR details +pr +files → Get changed file list +pr +diff → Get code diff + ↓ +Load gitlink-code-review Skill: + - Review dimensions & check items + - Scoring rubric (90-100 Excellent, 75-89 Good, ...) + - Issue severity levels (CRITICAL/HIGH/MEDIUM/LOW) + ↓ +┌─────────────────────────────────────────┐ +│ AI Code Review (Claude + Skill) │ +│ Four-Dimension Scoring (25 each, 100 total):│ +│ - Code Quality: complexity, naming, comments│ +│ - Security: SQL injection, XSS, secrets │ +│ - Performance: loop efficiency, resource leaks, N+1│ +│ - Maintainability: duplication, SRP, coupling │ +│ │ +│ Output: │ +│ - Structured issue list (severity+file+│ +│ rule+description+suggestion) │ +│ - Positive practices (positive_notes) │ +│ - Recommendations (recommendations) │ +│ - Total score + PASS/FAIL │ +└─────────────────────────────────────────┘ + ↓ +api POST /reviews → Publish review comments on PR + ↓ +ci +builds → Check CI build status + ↓ +pr +merge → Score >= threshold AND CI passes → auto-merge +``` + +**Sample AI Review Output**: + +``` +Overall Score: 88 / 100 +Code Quality: 23 / 25 +Security: 25 / 25 +Performance: 20 / 25 +Maintainability: 20 / 25 + +Issues Found: + - [LOW] quality: PR entries use (@author) format, commit entries use + (author) without @ prefix — unify to (@author) format + - [LOW] maintainability: Example contributor list updated but full + changelog link still points to old repo + +Positive Notes: + + Change intent is clear, all modified files consistently follow the requirement + + Change scope is reasonable — only docs and examples, no logic changes, minimal risk + +Recommendations: + > Unify author annotation format between PR and commit entries + > Add fallback handling docs for empty author field in collect-data.md +``` + +**Chained Commands**: + +| Step | Command | Purpose | +|------|---------|---------| +| 1 | `pr +list` | Fetch open PR list | +| 2 | `pr +view` | Read PR details (title, author, status) | +| 3 | `pr +files` | Get changed file list | +| 4 | `pr +diff` | Get code diff content | +| 5 | `gitlink-code-review` | Load Skill review dimensions, checks, scoring rubric | +| 6 | `claude -p` | AI performs four-dimension code review per Skill methodology | +| 7 | `api POST .../reviews` | Publish review comments to PR | +| 8 | `pr +merge` | Auto-merge when score >= threshold and CI passes | + +**Output Value**: Structured scoring (every PR gets a 0-100 quality score, team can set a unified merge bar), AI issue checklist (auto-identifies security risks, perf issues, code quality problems), PR comments (review results posted directly on PR), auto-merge (high-quality PRs merged without manual clicks). + +**How to Run**: + +```bash +# Review all open PRs +bash workflows/02-code-quality-gatekeeper.sh --owner your-org --repo your-repo + +# Review a specific PR +bash workflows/02-code-quality-gatekeeper.sh --owner your-org --repo your-repo --pr-id 42 + +# Custom quality threshold (default: 80) +bash workflows/02-code-quality-gatekeeper.sh --owner your-org --repo your-repo --threshold 70 + +# Dry-run mode (no actual merge) +bash workflows/02-code-quality-gatekeeper.sh --owner your-org --repo your-repo --dry-run + +# Example +bash workflows/02-code-quality-gatekeeper.sh --owner zzx-coder --repo gitlink-cli --pr-id 20 +``` + +--- + +### Scenario 3: One-Click Project Init + +**Script**: `workflows/03-project-init.sh` / `03-project-init.ps1` + +**Workflow**: + +``` +repo +create → Create repository + ↓ +git clone → Clone empty repo locally + ↓ +Generate files → README.md (language template) + LICENSE (MIT) + + CONTRIBUTING.md + .gitlink-ci.yml + ↓ +git add/commit/push → Push scaffolding files to repo + ↓ +milestone +create × 3 → Create project milestones: + - v0.1.0 - MVP + - v0.2.0 - Feature Complete + - v1.0.0 - Production Ready + ↓ +issue +create × 5 → Create initial task Issues (with labels): + - Set up CI/CD pipeline + - Write project documentation + - Establish code review process + - Add unit tests + - Configure dependency management + ↓ +branch +protect → Protect master branch + ↓ +release +create → Create v0.1.0 initial release +``` + +**Chained Commands**: + +| Step | Command | Purpose | +|------|---------|---------| +| 1 | `repo +create` | Create new repository | +| 2 | `git clone` | Clone empty repo to local temp directory | +| 3 | File generation | Generate README.md / LICENSE / CONTRIBUTING.md / .gitlink-ci.yml | +| 4 | `git add/commit/push` | Push scaffolding files to master | +| 5 | `milestone +create` | Create 3 project milestones (MVP → Production) | +| 6 | `issue +create` | Create 5 initial Issues with labels | +| 7 | `branch +protect` | Set master branch protection rules | +| 8 | `release +create` | Create v0.1.0 initial release | + +**Output Value**: Turnkey setup (post-clone repo already has README, LICENSE, CI config — start developing immediately), real repo files (README/LICENSE/CONTRIBUTING/CI are actual files, not Wiki pages), milestone roadmap (MVP to Production path already established), standardized Issues (key tasks created, team can claim directly), branch protection (prevents direct push to master, enforces PR workflow), first Release (version management from day one). + +**How to Run**: + +```bash +# Go project +bash workflows/03-project-init.sh --owner your-org --name my-go-app --description "My Go app" --lang go + +# Python project (private) +bash workflows/03-project-init.sh --owner your-org --name my-api --description "REST API service" --lang python --private + +# Node.js project +bash workflows/03-project-init.sh --owner your-org --name my-web --description "Web frontend" --lang node + +# Java project +bash workflows/03-project-init.sh --owner your-org --name my-service --description "Microservice" --lang java +``` + +--- + +### Scenario 4: Multi-Repo Collaboration + +**Script**: `workflows/04-multi-repo-collab.sh` / `04-multi-repo-collab.ps1` + +**Workflow**: + +``` +repo +list → List all repos in the organization + ↓ +For each repo: + issue +list → Get open/closed Issue counts + pr +list → Get open/merged PR counts + release +list → Get latest release & date + ↓ +Compute health score (aligned with gitlink-health Skill · 100-point deduction model): + Core metrics (75 pts): Issue resolution rate < 50% → -25, PR merge rate < 50% → -25, no recent activity → -25 + Auxiliary metrics (25 pts): Open Issues > 20 → -10, Open PRs > 10 → -10, no release > 30 days → -5 + Five-grade rating: Excellent (≥90) → Good (≥70) → Moderate (≥50) → Needs Attention (≥30) → Critical (<30) + ↓ +Generate HTML dashboard: + - Overview cards: repo count, total open Issues, total open PRs, total activity + - Detail table: per-repo Issue/PR/Release status + collapsible details + - Health color bands: green=Excellent / blue=Good / yellow=Moderate / orange=Needs Attention / red=Critical + ↓ +(Optional) release +create → Create same-version Release across all repos +``` + +**Chained Commands**: + +| Step | Command | Purpose | +|------|---------|---------| +| 1 | `repo +list` | List all repos in the organization | +| 2 | `issue +list` | Fetch Issue data per repo | +| 3 | `pr +list` | Fetch PR data per repo | +| 4 | `release +list` | Fetch latest release per repo | +| 5 | Generate HTML | Output visual dashboard | +| 6 | `release +create` | (Optional) Coordinated release | + +**Output Value**: Unified view (one HTML page shows health status of all org repos), health alerts (Open Issues > 10 → orange, > 20 → red), coordinated releases (sync multiple related repos with one command), shareable (HTML file can be sent to team or deployed internally). + +**How to Run**: + +```bash +# Scan all org repos +bash workflows/04-multi-repo-collab.sh --org your-org + +# Specific repos only +bash workflows/04-multi-repo-collab.sh --org your-org --repos "repo-a,repo-b,repo-c" + +# Dashboard + coordinated release +bash workflows/04-multi-repo-collab.sh --org your-org --release v2.0.0 + +# Custom output file + detail limit +bash workflows/04-multi-repo-collab.sh --org your-org --output my-dashboard.html --detail-limit 10 + +# Dry-run mode +bash workflows/04-multi-repo-collab.sh --org your-org --dry-run + +# Example +bash workflows/04-multi-repo-collab.sh --org zzx-coder +``` + +Generates `dashboard.html` in the current directory — open in browser to view. + +--- + +### Scenario 5: Contributor Growth System + +**Script**: `workflows/05-contributor-growth.sh` + +**Workflow**: + +``` +contrib +report → Generate HTML contribution report with ECharts pie chart + ↓ +issue +list → Count Issue activity +pr +list → Count PR activity +api GET /contributors → Get commit counts & API stats + ↓ +Compute contribution score (AHP Weighted Model): + - Code changes: 30% (normalized) + - PRs merged: 25% (normalized) + - Issues created/resolved: 15% (normalized) + - Issue comments: 15% (normalized) + - Team member: 15% (binary yes/no) + → Weighted sum yields 0-100 composite score + ↓ +Assign badges: + Champion >= 80 pts + Core Contributor >= 60 pts + Active Contributor >= 40 pts + Contributor >= 20 pts + Newcomer < 20 pts + ↓ +(Optional) issue +create → Auto-create badge-award Issue + ↓ +wiki +create → Publish leaderboard to Wiki +``` + +**Chained Commands**: + +| Step | Command | Purpose | +|------|---------|---------| +| 1 | `contrib +report` | Generate HTML contribution report (with ECharts) | +| 2 | `issue +list` | Count open/closed Issue activity | +| 3 | `pr +list` | Count open/merged PR activity | +| 4 | `api GET /contributors` | Get API-level contributor stats | +| 5 | `issue +create` | (Optional) Auto-award badges | +| 6 | `wiki +create` | Publish leaderboard to Wiki | + +**Output Value**: HTML contribution report (visual contribution distribution for team meetings), contributor leaderboard (quantifies each person's contribution, publicly transparent), Wiki leaderboard (permanent record, contributors can check rankings anytime), badge incentives (Issue-based badge awards boost sense of achievement and belonging). + +**How to Run**: + +```bash +# Basic run +bash workflows/05-contributor-growth.sh --owner your-org --repo your-repo + +# Custom time period (default: 30 days) +bash workflows/05-contributor-growth.sh --owner your-org --repo your-repo --period 90 + +# Enable auto badge awards +bash workflows/05-contributor-growth.sh --owner your-org --repo your-repo --award + +# Example +bash workflows/05-contributor-growth.sh --owner zzx-coder --repo gitlink-cli --award +``` + +--- + +### Environment Setup + +**1. Install gitlink-cli** + +```bash +gitlink-cli version +# If not installed, build from project root +cd gitlink-cli && make build +``` + +**2. Install jq (scripts use jq to parse CLI JSON output)** + +```bash +# Ubuntu/Debian +sudo apt-get install -y jq +# macOS +brew install jq +``` + +**3. Authenticate** + +```bash +gitlink-cli auth login # Interactive login (recommended) +export GITLINK_TOKEN="your-private-token" # Or env var +gitlink-cli auth status # Verify: should show "✓ Logged in" +``` + +**4. Verify Environment** + +```bash +gitlink-cli issue +list --owner zzx-coder --repo gitlink-cli --state open --limit 3 --format json | jq '.ok' +# Should output: true +``` + +--- + +### Shared Library `lib/common.sh` + +Infrastructure shared across all workflow scripts: + +| Function | Purpose | +|----------|---------| +| `check_auth` | Check auth status (env var or CLI login) | +| `gl_run` | CLI wrapper, auto-appends `--format json` | +| `gl_check` | CLI wrapper + JSON validation + ok field check | +| `json_ok` / `json_get` / `json_error` | JSON parsing utilities | +| `detect_owner_repo` | Auto-detect owner/repo from git remote | +| `log_step` / `log_ok` / `log_warn` / `log_err` | Colorized log output | + +--- + +### Workflow Common Parameters + +| Parameter | Description | +|-----------|-------------| +| `--owner` | Repository owner (auto-resolved from git remote) | +| `--repo` | Repository name (auto-resolved from git remote) | +| `--org` | Organization name (needed for multi-repo scenarios) | +| `--dry-run` | Preview mode, no write operations executed | +| `--help` | Show help message | + +--- + +### Skills Used by Workflows + +| Skill | Used In | Role | +|-------|---------|------| +| `gitlink-code-review` | Scenario 2 | Review dimensions, check items, scoring rubric | +| `gitlink-issue-triage` | Scenario 1 | Issue classification rules (keyword matching, priority detection) | +| `gitlink-changelog` | Scenario 1 | Release Notes generation templates | +| `gitlink-health` | Scenario 4 | Project health scoring model (100-point deduction) | +| `gitlink-onboard` | Scenario 5 | New contributor onboarding & Issue recommendation rules | +| `gitlink-workflow` | All | Base workflow orchestration | + +--- + +### Testing + +```bash +# Run test suite (validates against real GitLink repos) +bash workflows/test.sh + +# Specify a repo +bash workflows/test.sh zzx-coder gitlink-cli +``` + +Test coverage: auth status checks, CLI JSON output format validation, data field extraction (issue/PR/repo/release/member/contributor), PR files and diff content parsing, Issue/PR View interfaces, Wiki/Label list interfaces, `common.sh` utility functions, script syntax validation. + +--- + +### Workflows Directory Structure + +``` +workflows/ +├── lib/ +│ └── common.sh # Shared utility library (auth, JSON parse, CLI wrap, logging) +├── 01-community-ops.sh # Scenario 1: Community Ops Automation +├── 02-code-quality-gatekeeper.sh # Scenario 2: Code Quality Gatekeeper (AI review) +├── 03-project-init.sh # Scenario 3: One-Click Project Init +├── 04-multi-repo-collab.sh # Scenario 4: Multi-Repo Collaboration +├── 05-contributor-growth.sh # Scenario 5: Contributor Growth System +├── test.sh # Test suite +└── README.md # Detailed workflow documentation +``` + +--- ## Installation & Quick Start ### Requirements - Supported platforms: macOS, Linux, Windows (x64/arm64) -- Go 1.26+ — only required for building from source +- Go 1.26+ — only needed for building from source -### Quick Start (Human Users) +### Quick Start (For Users) -> **Note for AI assistants:** If you are an AI Agent helping the user with installation, jump directly to [Quick Start (AI Agent)](#quick-start-ai-agent), which contains all the steps you need to complete. - -#### Install - -**一键安装(推荐) — 无需 npm、无需 Go:** +**One-command install (recommended):** ```bash curl -sSL https://www.gitlink.org.cn/Gitlink/gitlink-cli/raw/master/install.sh | bash @@ -65,276 +634,163 @@ curl -sSL https://www.gitlink.org.cn/Gitlink/gitlink-cli/raw/master/install.sh | npm install -g @gitlink-ai/cli ``` -The binary is auto-downloaded for your platform during `postinstall`. No extra steps needed. +The binary is auto-downloaded for your platform during `postinstall`. No extra steps. **From source:** -Requires Go 1.26+. - ```bash git clone https://www.gitlink.org.cn/Gitlink/gitlink-cli.git cd gitlink-cli make install ``` -> **Windows users:** Run `npm install -g @gitlink-ai/cli` in PowerShell or CMD. For building from source, use `go install .` instead of `make install`. +> Windows users: Run `npm install -g @gitlink-ai/cli` in PowerShell or CMD. For source builds use `go install .` instead of `make install`. -#### Configure & Use +**Configure & Use:** ```bash -# 1. Configure (one-time, interactive guided setup) +# 1. Configure (one-time) gitlink-cli config init # 2. Log in (choose one) gitlink-cli auth login # Username/password (recommended) gitlink-cli auth login --token # Or paste a private token -export GITLINK_TOKEN="your-token" # Or set env var (for CI/CD, non-interactive environments) +export GITLINK_TOKEN="your-token" # Or env var (for CI/CD) # 3. Start using gitlink-cli repo +list ``` -### Quick Start (AI Agent) +### Quick Start (For AI Agents) > The following steps are for AI Agents. Some steps require the user to complete actions in a browser. -**Step 1 — Install** - ```bash -# One command: CLI binary + all Skills auto-installed +# Step 1 — Install (one command: CLI + all Skills) npm install -g @gitlink-ai/cli -``` -**Step 2 — Configure** - -```bash +# Step 2 — Configure gitlink-cli config init -``` -**Step 3 — Login** +# Step 3 — Login +gitlink-cli auth login # Interactive environments +export GITLINK_TOKEN="your-private-token" # Non-interactive (CI/CD, MCP, etc.) -For interactive environments: -```bash -gitlink-cli auth login -``` - -For non-interactive environments (CI/CD, Trae sandbox, MCP, etc.): -```bash -export GITLINK_TOKEN="your-private-token" -``` - -> To get a private token, go to GitLink web → Settings → Private Tokens. - -**Step 4 — Verify** - -```bash +# Step 4 — Verify gitlink-cli user +me ``` -## Installation & Uninstallation +### Uninstall -**Detailed install guide**: [doc/INSTALL.md](./doc/INSTALL.md) -**Detailed uninstall guide**: [doc/UNINSTALL.md](./doc/UNINSTALL.md) - -### Quick Install - -**Linux/macOS**: `curl -sSL https://www.gitlink.org.cn/Gitlink/gitlink-cli/raw/master/install.sh | bash` -**Windows PowerShell**: `powershell -NoProfile -ExecutionPolicy Bypass -File install.ps1` -**npm**: `npm install -g @gitlink-ai/cli` - -### Quick Uninstall - -**Linux/macOS**: `bash uninstall.sh` -**Windows PowerShell**: `.\uninstall.ps1` +**Linux/macOS**: `bash uninstall.sh` +**Windows PowerShell**: `.\uninstall.ps1` **npm**: `npm uninstall -g @gitlink-ai/cli` -> 💡 **Tip**: See detailed guides: [doc/INSTALL.md](./doc/INSTALL.md) | [doc/UNINSTALL.md](./doc/UNINSTALL.md) +--- ## Usage Examples ### Repository Operations ```bash -# List repositories gitlink-cli repo +list - -# View repository info gitlink-cli repo +info --owner Gitlink --repo forgeplus - -# Create a repository gitlink-cli repo +create -n my-project -d "Project description" - -# Fork a repository gitlink-cli repo +fork --owner Gitlink --repo forgeplus ``` ### Issue Management ```bash -# List issues 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..." - -# View an issue gitlink-cli issue +view --owner Gitlink --repo forgeplus -i 123 - -# Close an issue gitlink-cli issue +close --owner Gitlink --repo forgeplus -i 123 - -# Preview batch close without changing data gitlink-cli issue +batch-close --owner Gitlink --repo forgeplus --numbers 123,124 --dry-run - -# Batch close issues from a CSV file gitlink-cli issue +batch-close --owner Gitlink --repo forgeplus --from issues.csv - -# Add a comment gitlink-cli issue +comment --owner Gitlink --repo forgeplus -i 123 -b "Fixed" ``` ### Pull Requests ```bash -# List PRs gitlink-cli pr +list --owner Gitlink --repo forgeplus - -# Create a PR (same-repo branch) gitlink-cli pr +create --owner Gitlink --repo forgeplus -t "feat: Search feature" --head feature/search --base master - -# 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 - -# 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 - -# View changed files gitlink-cli pr +files --owner Gitlink --repo forgeplus -i 42 ``` ### Branch Management ```bash -# List branches gitlink-cli branch +list --owner Gitlink --repo forgeplus - -# Create a branch gitlink-cli branch +create --name feature/new-feature - -# Delete a branch gitlink-cli branch +delete --name feature/old-feature - -# Protect a branch gitlink-cli branch +protect --name main - -# Remove branch protection gitlink-cli branch +unprotect --name main ``` ### Webhook Management ```bash -# List all webhooks gitlink-cli webhook +list --owner Gitlink --repo forgeplus - -# Create a webhook gitlink-cli webhook +create --owner Gitlink --repo forgeplus --url https://ci.example.com/webhook --events push,pull_request - -# Create webhook with secret gitlink-cli webhook +create --url https://jenkins.example.com/webhook --secret my-secret-key --events push --description "CI/CD trigger" - -# View webhook details gitlink-cli webhook +info --id 456 - -# Update webhook gitlink-cli webhook +update --id 456 --url https://new-url.example.com/webhook --events push,pull_request,issue - -# Test webhook gitlink-cli webhook +test --id 456 - -# Delete webhook gitlink-cli webhook +delete --id 456 - -# List supported event types gitlink-cli webhook +events ``` ### Release Management ```bash -# List releases gitlink-cli release +list --owner Gitlink --repo forgeplus - -# 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 ``` -### CI/CD Operations - -```bash -# List builds -gitlink-cli ci +list --owner Gitlink --repo forgeplus - -# View build log -gitlink-cli ci +log --owner Gitlink --repo forgeplus -i - -# Restart a build -gitlink-cli ci +restart --owner Gitlink --repo forgeplus -i -``` - ### Wiki Management ```bash -# List wiki pages gitlink-cli wiki +list --owner Gitlink --repo forgeplus - -# View a wiki page gitlink-cli wiki +view --owner Gitlink --repo forgeplus --title "Getting Started" - -# Create a wiki page gitlink-cli wiki +create --title "New Page" --content "Page content" - -# Update a wiki page (overwrite) -gitlink-cli wiki +update --title "New Page" --cover "Updated content" --owner Gitlink --repo forgeplus - -# Append content to a wiki page +gitlink-cli wiki +update --title "New Page" --cover "Updated content" --owner Gitlink --repo forgeplus gitlink-cli wiki +update --title "New Page" --add "Appended content" --owner Gitlink --repo forgeplus - -# Delete a wiki page gitlink-cli wiki +delete --title "New Page" --owner Gitlink --repo forgeplus ``` ### Search ```bash -# Search repositories gitlink-cli search +repos -k "machine learning" - -# Search users gitlink-cli search +users -k "zhangsan" ``` +### CI/CD + +```bash +gitlink-cli ci +list --owner Gitlink --repo forgeplus +gitlink-cli ci +log --owner Gitlink --repo forgeplus -i +gitlink-cli ci +restart --owner Gitlink --repo forgeplus -i +``` + ### Raw API For endpoints not covered by shortcuts, use the Raw API directly: ```bash -# GET request gitlink-cli api GET /users/me - -# POST request gitlink-cli api POST /Gitlink/forgeplus/issues --body '{"subject":"test","description":"..."}' - -# With query parameters gitlink-cli api GET /Gitlink/forgeplus/commits --query 'page=1&limit=5' ``` +--- + ## Global Parameters | Parameter | Description | Example | @@ -346,46 +802,25 @@ gitlink-cli api GET /Gitlink/forgeplus/commits --query 'page=1&limit=5' **Automatic context resolution:** When running inside a git repository, `--owner` and `--repo` are automatically resolved from `git remote origin`. -## Branch Conventions +--- -gitlink-cli supports bidirectional code sync between GitHub and GitLink: +## Branch Conventions | Platform | Default Branch | |----------|---------------| | GitHub | `main` | | GitLink | `master` | -**Push to GitLink from local:** +Push to GitLink: ```bash -# Method 1: Use git command directly git push gitlink main:master - -# Method 2: Configure git remote +# Or configure git remote git config remote.gitlink.push refs/heads/main:refs/heads/master git push gitlink ``` -## AI Agent Skills - -The `skills/` directory contains 12 Agent Skill files for AI-automated GitLink operations. - -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, etc.) | -| `gitlink-issue` | Issue operations (create, update, close, comment, etc.) | -| `gitlink-pr` | Pull request operations (create, merge, review, etc.) | -| `gitlink-branch` | Branch management (create, delete, list, protect, unprotect) | -| `gitlink-release` | Release management (create, view, delete, etc.) | -| `gitlink-ci` | CI/CD operations (builds, logs, etc.) | -| `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.) | +--- ## Project Structure @@ -402,48 +837,59 @@ gitlink-cli/ │ ├── client/ # HTTP client + pagination │ ├── config/ # Config file management │ ├── context/ # Git remote resolution -│ └── output/ # Envelope + formatter +│ └── output/ # Output envelope + formatter ├── shortcuts/ # Shortcut implementations │ ├── common/ # Framework (types, runner) -│ ├── repo/ # Repository shortcuts -│ ├── issue/ # Issue shortcuts -│ ├── pr/ # PR shortcuts -│ ├── branch/ # Branch shortcuts -│ ├── release/ # Release shortcuts -│ ├── org/ # Organization shortcuts -│ ├── ci/ # CI shortcuts -│ ├── search/ # Search shortcuts -│ ├── user/ # User shortcuts -│ ├── wiki/ # Wiki shortcuts +│ ├── repo/ issue/ pr/ branch/ release/ org/ ci/ search/ user/ wiki/ │ └── register.go # Registration entry point ├── skills/ # AI Agent Skills -│ ├── README.md # Skills guide +│ ├── README.md # Skills detailed guide │ ├── gitlink-shared/ # Shared rules -│ ├── gitlink-repo/ # Repository skill -│ ├── gitlink-issue/ # Issue skill -│ ├── gitlink-pr/ # PR skill -│ ├── gitlink-pm/ # Project management skill +│ ├── gitlink-repo/ issue/ pr/ branch/ release/ ... +│ ├── gitlink-health/ # Project health +│ ├── gitlink-changelog/ # Release Notes +│ ├── gitlink-code-review/ # AI code review +│ ├── gitlink-research/ # Research assistance │ └── ... +├── workflows/ # End-to-end automation workflows +│ ├── README.md # Workflow documentation +│ ├── lib/common.sh # Shared utility library +│ ├── 01-community-ops.sh # Community Ops Automation +│ ├── 02-code-quality-gatekeeper.sh # Code Quality Gatekeeper +│ ├── 03-project-init.sh # One-Click Project Init +│ ├── 04-multi-repo-collab.sh # Multi-Repo Collaboration +│ ├── 05-contributor-growth.sh # Contributor Growth System +│ └── test.sh # Test suite ├── doc/ # Design documents -│ ├── Design.md +│ ├── design.md │ ├── CODE_SYNC_STRATEGY_FINAL.md │ └── ... ├── main.go ├── Makefile ├── go.mod -└── README.md +├── README.md +└── README.zh-CN.md ``` -## Documentation +--- -- [Skills Guide](skills/README.md) — AI Agent Skills detailed documentation -- [Design Document](doc/design.md) — Architecture design and development plan +## Documentation Index + +- [Skills Guide](skills/README.md) — Detailed AI Agent Skills documentation +- [Workflow Documentation](workflows/README.md) — Detailed workflow documentation +- [Design Document](doc/design.md) — Architecture design & development plan +- [Installation Guide](doc/INSTALL.md) — Detailed install steps +- [Uninstall Guide](doc/UNINSTALL.md) — Detailed uninstall steps +- [API Reference](skills/gitlink-shared/REFERENCE.md) — Complete API reference +- [Troubleshooting](skills/gitlink-shared/TROUBLESHOOTING.md) — Common issues & solutions + +--- ## FAQ ### Q: How do I use gitlink-cli in scripts? -Use the `GITLINK_TOKEN` environment variable + `--format json` for structured output: +Use the `GITLINK_TOKEN` env var + `--format json`: ```bash export GITLINK_TOKEN="your-private-token" @@ -461,45 +907,39 @@ gitlink-cli issue +list # Automatically uses the current repository ### Q: What if my token expires? -Re-authenticate: - ```bash -# Username/password login -gitlink-cli auth login - -# Or use a private token (generate at GitLink web → Settings → Private Tokens) -gitlink-cli auth login --token +gitlink-cli auth login # Username/password login +gitlink-cli auth login --token # Or use a private token ``` -### Q: How do I use gitlink-cli in CI/CD or non-interactive environments (e.g. Trae sandbox)? +### Q: How do I use gitlink-cli in CI/CD or non-interactive environments? Set the `GITLINK_TOKEN` environment variable — no `auth login` needed: ```bash export GITLINK_TOKEN="your-private-token" gitlink-cli repo +list # Ready to use -gitlink-cli auth status # Shows "✓ Logged in via GITLINK_TOKEN environment variable" ``` -Priority: `GITLINK_TOKEN` env var > keyring/file stored token. When the env var is not set, the original interactive login flow works as before. +Priority: `GITLINK_TOKEN` env var > keychain/file-stored token. -### Q: What if npm installs successfully but `gitlink-cli` reports a missing binary? +### Q: npm install succeeded but `gitlink-cli` reports a missing binary? -Reinstall first: - -```bash -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__windows_amd64.zip` on Windows x64. You can also download the binary manually from the release page or build from source with `go install .`. +Reinstall first: `npm install -g @gitlink-ai/cli`. If the error persists, check the release page for your platform's asset, or download the binary manually / build from source with `go install .`. ### Q: Where are credentials stored on Windows? -gitlink-cli uses Windows Credential Manager for secure token storage. If Credential Manager is unavailable, it automatically falls back to file storage (`~/.config/gitlink-cli/credentials`). +gitlink-cli uses Windows Credential Manager for secure token storage. If Credential Manager is unavailable, it falls back to file storage (`~/.config/gitlink-cli/credentials`). -### Q: Where can I find the full API reference? +--- -See [skills/gitlink-shared/REFERENCE.md](skills/gitlink-shared/REFERENCE.md). +## Related Resources + +- [gitlink-bisync](https://www.gitlink.org.cn/wbtiger/gitlink-bisync) — Bidirectional code sync system +- [Test Report](doc/SKILLS_TEST_REPORT_2026-04-02.md) — Skills functional test report +- [Code Sync Strategy](doc/CODE_SYNC_STRATEGY_FINAL.md) — GitHub ↔ GitLink sync design + +--- ## License diff --git a/README.zh-CN.md b/README.zh-CN.md index f424e3d7..0c911ef0 100644 --- a/README.zh-CN.md +++ b/README.zh-CN.md @@ -5,335 +5,793 @@ [![Go Version](https://img.shields.io/badge/Go-1.26%2B-blue.svg)](https://golang.org) [![npm version](https://img.shields.io/npm/v/@gitlink-ai/cli.svg)](https://www.npmjs.com/package/@gitlink-ai/cli) -[GitLink(确实开源)](https://www.gitlink.org.cn) 官方 CLI 工具 — 为人类和 AI Agent 双重设计。支持 **macOS、Linux、Windows**,覆盖仓库管理、Issue 追踪、Pull Request、CI/CD 和 AI 自动化工作流,包含 40+ 命令和 11 个 AI Agent [Skills](./skills/)。 +GitLink 官方命令行工具,面向开发者与 AI Agent 设计。支持 **macOS、Linux、Windows**,覆盖仓库管理、Issue 追踪、Pull Request、CI/CD 与 AI 自动化工作流,提供 **40+ 命令**与 **20+ AI Agent Skills**。 **[English](./README.md)** -[安装](#安装与快速上手) · [AI Agent Skills](#ai-agent-skills) · [认证](#配置与使用) · [命令](#使用示例) · [贡献](#相关项目) +--- -## 为什么选择 gitlink-cli? +## 项目概述 -- **Agent-Native 设计** — 开箱即用 11 个结构化 [Skills](./skills/),兼容 Claude Code — Agent 零配置即可操作 GitLink -- **广泛覆盖** — 仓库、Issue、PR、分支、Release、CI、组织、搜索、用户 — 核心功能全覆盖 -- **AI 友好 & 优化** — 每条命令都经过真实 Agent 测试,简洁参数、智能默认值、结构化输出 -- **跨平台** — macOS、Linux、Windows (x64/arm64) 全支持,`npm` 一条命令安装 -- **开源零门槛** — 木兰宽松许可证第2版(MulanPSL-2.0),`npm install` 即用 -- **3 分钟上手** — 交互式登录或 `GITLINK_TOKEN` 环境变量,从安装到首次 API 调用仅需 3 步 -- **安全可控** — OS 原生 keychain 凭证存储,`GITLINK_TOKEN` 环境变量支持 CI/CD 和非交互环境,自动 git remote 上下文解析 -- **三层架构** — Shortcuts(人+AI友好)→ Raw API(全覆盖)→ Config(配置管理) +本项目围绕 GitLink 开源协作平台的自动化能力建设,涵盖三个子任务方向。 -## 功能一览 +### 子任务一:增加和完善 GitLink-CLI 能力(50%) -| 分类 | 能力 | +> 定位:扩展 CLI 功能 | 难度:中高 | 技术栈:Go + +构建健壮、跨平台、AI 友好的命令行工具,覆盖 GitLink 平台全功能。 + +**核心架构 — 三层设计:** + +``` +Shortcuts(40+ 命令) + → 面向人类和 AI Agent 的简洁命令 + → issue +create, pr +list, wiki +create ... + ↓ +Raw API(全接口覆盖) + → 直接调用 GitLink OpenAPI + → api GET /users/me, api POST /.../issues ... + ↓ +Config & Auth(配置管理层) + → 认证、上下文解析、输出格式 + → auth login, config init, --format json +``` + +**CLI 能力一览:** + +| 类别 | 能力 | |------|------| -| 📦 仓库 | 列出、创建、Fork、删除仓库,查看仓库信息 | -| 🐛 Issue | 创建、更新、关闭、评论 Issue,6 个批量操作(关闭/状态/优先级/负责人/标记/创建) | +| 📦 仓库 | 列表、创建、Fork、删除、查看详情 | +| 🐛 Issue | 创建、更新、关闭、评论,6 种批量操作(关闭/状态/优先级/指派人/标签/创建) | | 📖 Wiki | 查看、创建、更新、删除 Wiki 页面 | -| 🔀 PR | 创建、合并、Review Pull Request,查看变更文件 | -| 🌿 分支 | 创建、删除、保护分支 | -| 🏷️ 发布 | 创建、查看、删除 Release | -| 🔗 Webhook | 创建、查看、更新、删除、测试 Webhook,配置自动化触发器 | +| 🔀 PR | 创建、合并、Review、查看变更文件 | +| 🌿 分支 | 创建、删除、列表、保护、解除保护 | +| 🏷️ Release | 创建、查看、删除版本发布 | +| 🔗 Webhook | 创建、查看、更新、删除、测试 Webhook | | 🏢 组织 | 管理组织、成员、团队 | | 🔧 CI | 查看构建、日志、CI/CD 操作 | | 🔍 搜索 | 搜索仓库、用户 | -| 👤 用户 | 查看用户资料和信息 | +| 👤 用户 | 查看用户资料 | | 📋 项目管理 | Sprint 管理、看板、周报 | -| 🤖 工作流 | AI 驱动的 Issue 分类、PR Review、Release Notes | +| 🔌 Raw API | 直接调用任意 GitLink OpenAPI 端点 | -## 安装与快速上手 +**技术亮点:** -### 前置条件 +- **Agent-Native 设计** — 每个命令经过真实 Agent 测试,参数精简、默认值智能、输出结构化 +- **跨平台** — macOS / Linux / Windows (x64/arm64),一键安装 +- **安全可控** — OS 原生密钥链存储、`GITLINK_TOKEN` 环境变量支持 CI/CD +- **智能上下文解析** — 自动从 `git remote origin` 解析 owner/repo,减少参数输入 +- **开箱即用** — MulanPSL-2.0 开源,`npm install -g @gitlink-ai/cli` 一条命令 -- 支持平台:macOS、Linux、Windows(x64/arm64) -- Go 1.26+ — 仅从源码构建时需要 +### 子任务二:编写和丰富 GitLink Skills(20%) -### 快速上手(人类用户) +> 定位:开发 Agent Skill | 难度:中 | 无需 Go,Markdown + CLI 调用即可 -> **AI 助手请注意:** 如果你是帮助用户安装的 AI Agent,请直接跳到 [快速上手(AI Agent)](#快速上手ai-agent),其中包含你需要完成的所有步骤。 +Skills 是为 Claude Code 及其他 AI Agent 设计的结构化知识库。每个 Skill 包含 `SKILL.md`(命令参考)、`REFERENCE.md`(API 参考)、`TROUBLESHOOTING.md`(故障排查)和 `examples/`(完整工作流示例)。AI Agent 通过读取 Skills 即可自动操作 GitLink 平台,无需手动查阅文档。 -#### 安装 +**Skills 目录结构:** -选择以下**任一**方式: +``` +skills/ +├── gitlink-shared/ # 认证、全局参数、安全规则、分支约定 +├── gitlink-repo/ # 仓库管理 +├── gitlink-issue/ # Issue 管理 +├── gitlink-pr/ # Pull Request +├── gitlink-branch/ # 分支管理 +├── gitlink-release/ # 版本发布 +├── gitlink-wiki/ # Wiki 管理 +├── gitlink-webhook/ # Webhook 管理 +├── gitlink-org/ # 组织管理 +├── gitlink-user/ # 用户管理 +├── gitlink-ci/ # CI/CD +├── gitlink-search/ # 搜索功能 +├── gitlink-pm/ # 项目管理(Sprint / 看板 / 周报) +├── gitlink-team/ # 团队管理 +├── gitlink-changelog/ # Release Notes / Changelog 生成 +├── gitlink-health/ # 项目健康度报告(Issue 响应时间、PR 合并效率、贡献者活跃度) +├── gitlink-contrib/ # 贡献报告(统计与排名) +├── gitlink-compliance/ # 安全与合规(许可证扫描、敏感信息检测、PII 扫描) +├── gitlink-issue-triage/ # Issue 自动分类(tracker/priority/labels 判定) +├── gitlink-onboard/ # 新人引导(Good First Issue 识别与欢迎评论) +├── gitlink-workflow/ # AI 工作流编排(Issue 分类、PR Review、Release Notes) +├── gitlink-code-review/ # 智能代码审查(四维度评分、结构化 Review 意见) +├── gitlink-research/ # 科研辅助(项目洞察、热点追踪、合规复现、协作匹配、论文引用) +└── gitlink-code-insight/ # 功能全景索引(全部 Shortcuts 分类展示) +``` -**方式 1 — 一键安装(推荐,无需 npm、无需 Go):** +**所有 Skills 概览:** + +| Skill | 说明 | 典型命令 | +|-------|------|----------| +| **gitlink-shared** | 认证、全局参数、API 参考、安全规则 | `auth login`, `auth status` | +| **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-release** | 版本发布 | `release +list`, `release +create`, `release +view` | +| **gitlink-wiki** | Wiki 管理 | `wiki +list`, `wiki +view`, `wiki +create`, `wiki +update`, `wiki +delete` | +| **gitlink-webhook** | Webhook 管理 | `webhook +list`, `webhook +create`, `webhook +test` | +| **gitlink-org** | 组织管理 | `org +list`, `org +info`, `org +members` | +| **gitlink-user** | 用户管理 | `user +me`, `user +info` | +| **gitlink-ci** | CI/CD | `ci +builds`, `ci +logs` | +| **gitlink-search** | 搜索功能 | `search +repos`, `search +users` | +| **gitlink-pm** | 项目管理 | Sprint 管理、看板、周报(通过 Raw API) | +| **gitlink-team** | 团队管理 | `team +list`, `team +create`, `team +add-member` | +| **gitlink-changelog** | Release Notes 生成 | 自动收集 commits/PR/Issue,生成结构化版本说明 | +| **gitlink-health** | 项目健康度报告 | Issue 响应时间、PR 合并效率、贡献者活跃度统计 | +| **gitlink-contrib** | 贡献报告 | `contrib +report` | +| **gitlink-compliance** | 安全与合规 | `compliance +scan`, `compliance +secrets`, `compliance +license` | +| **gitlink-issue-triage** | Issue 自动分类 | 自动判定 tracker/priority/labels,生成审计报告 | +| **gitlink-onboard** | 新人引导 | `onboard +welcome` | +| **gitlink-workflow** | AI 工作流编排 | Issue 分类、PR Review、仓库初始化、Sprint 报告 | +| **gitlink-code-review** | 智能代码审查 | 四维度评分(代码质量/安全性/性能/可维护性)、自动发布 Review 评论 | +| **gitlink-research** | 科研辅助 | 项目洞察、热点追踪、合规复现、协作匹配、进度预警、论文引用 | +| **gitlink-code-insight** | 功能全景索引 | 全部 Shortcuts 分类索引,含说明和示例 | + +**AI Agent 如何使用 Skills:** + +``` +用户: "帮我在 GitLink 上创建一个 Issue" + ↓ +AI Agent 读取 gitlink-issue/SKILL.md + ↓ +AI Agent 执行: gitlink-cli issue +create -t "..." -b "..." + ↓ +完成! +``` + +AI Agent 可以自动完成:创建/管理 Issue、创建/合并 PR、发布 Release、管理 Wiki、分类 Issue、生成 Release Notes、执行代码审查等。 + +### 子任务三:构建端到端自动化工作流(20%) + +> 定位:组合现有能力解决实际问题 | 难度:低-中 | 无需写底层代码 + +组合 gitlink-cli 命令与 Skills,串联多个步骤形成完整的可复现自动化场景。工作流通过 Shell/PowerShell 脚本编排,支持 AI Agent 驱动执行。 + +--- + +**五大自动化工作流总览:** + +| # | 场景 | 脚本 | 串联命令数 | 解决什么问题 | +|---|------|------|-----------|-------------| +| 1 | 社区运营自动化 | `01-community-ops.sh` | 7 | Issue 积压无人处理、周报手写、Release Notes 手动整理 | +| 2 | 代码质量看门人 | `02-code-quality-gatekeeper.sh` | 7 | PR 审查效率低、质量标准不统一、AI 代码审查 | +| 3 | 项目一键初始化 | `03-project-init.sh` | 8 | 新建项目重复劳动多、README/License/CI/Issue/里程碑手动配 | +| 4 | 多仓库协同 | `04-multi-repo-collab.sh` | 7 | 跨仓库状态分散、缺乏统一视图 | +| 5 | 贡献者成长体系 | `05-contributor-growth.sh` | 6 | 贡献者活跃度难追踪、缺乏激励机制 | + +--- + +### 场景一:社区运营自动化 + +**脚本**:`workflows/01-community-ops.sh` + +**工作流程**: + +``` +issue +list → 读取所有 open Issue + ↓ +按关键词分类:Bug / Feature / Question / Docs + ↓ +issue +label-add → 自动打标签 + ↓ +repo +members → 获取仓库成员列表 +issue +update → 轮询分配负责人 + ↓ +pr +list → 统计本周合并的 PR +issue +list → 统计本周关闭的 Issue + ↓ +wiki +create → 发布社区周报到 Wiki + ↓ +release +create → 自动生成 Release Notes +``` + +**串联的命令**: + +| 步骤 | 命令 | 作用 | +|------|------|------| +| 1 | `issue +list` | 获取所有 open Issue | +| 2 | `issue +label-add` | 按分类打标签(bug/feature/question/documentation) | +| 3 | `repo +members` | 获取仓库成员列表 | +| 4 | `issue +update` | 给 Bug/Feature Issue 分配负责人 | +| 5 | `pr +list` | 统计本周合并的 PR | +| 6 | `wiki +create` | 发布社区周报 | +| 7 | `release +create` | 自动生成 Release Notes | + +**输出价值**:标签分类(仓库 Issue 页面可按标签筛选)、负责人分配(每个 Issue 有明确负责人)、Wiki 周报(团队和社区用户在 Wiki 查看每周进展)、Release Notes(发版时无需手动整理变更)。 + +**运行方式**: + +```bash +bash workflows/01-community-ops.sh --owner 你的组织 --repo 你的仓库 +bash workflows/01-community-ops.sh --owner zzx-coder --repo gitlink-cli +``` + +--- + +### 场景二:代码质量看门人 + +**脚本**:`workflows/02-code-quality-gatekeeper.sh` + +**工作流程**: + +``` +pr +list → 获取所有 open PR + ↓ +pr +view → 读取 PR 详情 +pr +files → 获取变更文件列表 +pr +diff → 获取代码差异 + ↓ +加载 gitlink-code-review Skill: + - 审查维度与检查项 + - 评分标准(90-100 优秀,75-89 良好,...) + - 问题严重级别(CRITICAL/HIGH/MEDIUM/LOW) + ↓ +┌─────────────────────────────────────────┐ +│ AI 代码审查(Claude + Skill) │ +│ 四维度评分(各 0-25,总分 100): │ +│ - 代码质量:复杂度、命名、注释 │ +│ - 安全性:SQL注入、XSS、敏感信息 │ +│ - 性能:循环效率、资源泄漏、N+1 │ +│ - 可维护性:重复、职责单一、耦合 │ +│ │ +│ 输出: │ +│ - 结构化问题清单(severity+file+ │ +│ rule+description+suggestion) │ +│ - 优秀实践(positive_notes) │ +│ - 改进建议(recommendations) │ +│ - 总分 + PASS/FAIL │ +└─────────────────────────────────────────┘ + ↓ +api POST /reviews → 发布审查评论到 PR + ↓ +ci +builds → 检查 CI 构建状态 + ↓ +pr +merge → 分数 >= 阈值 且 CI 通过 → 自动合并 +``` + +**AI 审查示例输出**: + +``` +Overall Score: 88 / 100 +Code Quality: 23 / 25 +Security: 25 / 25 +Performance: 20 / 25 +Maintainability: 20 / 25 + +Issues Found: + - [LOW] quality: 条目格式说明中 PR 条目用 (@作者) 带括号, + commit 条目用 (作者名) 不带 @ 前缀 + → 统一格式规范,建议 commit 条目也使用 (@作者) 格式 + - [LOW] maintainability: 示例中贡献者列表变更但完整变更日志链接仍指向旧仓库 + → 将变更日志链接中的 OWNER 也更新为与示例贡献者一致 + +Positive Notes: + + 变更目的清晰,所有文件的修改一致地贯彻了需求,无遗漏 + + 变更范围合理,仅修改文档和示例,不涉及代码逻辑变更,风险极低 + +Recommendations: + > 统一 PR 条目和 commit 条目的作者标注格式 + > 在 collect-data.md 中补充 author 字段为空时的降级处理说明 +``` + +**串联的命令**: + +| 步骤 | 命令 | 作用 | +|------|------|------| +| 1 | `pr +list` | 获取 open PR 列表 | +| 2 | `pr +view` | 读取 PR 详情(标题、作者、状态) | +| 3 | `pr +files` | 获取变更文件列表 | +| 4 | `pr +diff` | 获取代码差异内容 | +| 5 | `gitlink-code-review` | 加载 Skill 的审查维度、检查项、评分标准 | +| 6 | `claude -p` | AI 按 Skill 方法论进行四维度代码审查 | +| 7 | `api POST .../reviews` | 将审查评论发布到 PR | +| 8 | `pr +merge` | 质量分 >= 阈值且 CI 通过时自动合并 | + +**输出价值**:结构化评分(每个 PR 有 0-100 的质量评分,团队可设定统一合并门槛)、AI 问题清单(自动列出安全隐患、性能问题、代码质量问题)、PR 评论(审查结果直接评论在 PR 上)、自动合并(高质量 PR 无需人工点击)。 + +**运行方式**: + +```bash +# 审查所有 open PR +bash workflows/02-code-quality-gatekeeper.sh --owner 你的组织 --repo 你的仓库 + +# 审查指定 PR +bash workflows/02-code-quality-gatekeeper.sh --owner 你的组织 --repo 你的仓库 --pr-id 42 + +# 自定义质量阈值(默认 80) +bash workflows/02-code-quality-gatekeeper.sh --owner 你的组织 --repo 你的仓库 --threshold 70 + +# 预览模式(不实际合并) +bash workflows/02-code-quality-gatekeeper.sh --owner 你的组织 --repo 你的仓库 --dry-run + +# 示例 +bash workflows/02-code-quality-gatekeeper.sh --owner zzx-coder --repo gitlink-cli --pr-id 20 +``` + +--- + +### 场景三:项目一键初始化 + +**脚本**:`workflows/03-project-init.sh` / `03-project-init.ps1` + +**工作流程**: + +``` +repo +create → 创建仓库 + ↓ +git clone → 克隆空仓库到本地 + ↓ +生成文件 → README.md(语言模板)+ LICENSE(MIT) + + CONTRIBUTING.md + .gitlink-ci.yml + ↓ +git add/commit/push → 将脚手架文件推送到仓库 + ↓ +milestone +create × 3 → 创建项目里程碑: + - v0.1.0 - MVP + - v0.2.0 - Feature Complete + - v1.0.0 - Production Ready + ↓ +issue +create × 5 → 创建初始待办 Issue(打标签): + - 搭建 CI/CD 流水线 + - 编写项目文档 + - 建立代码审查流程 + - 添加单元测试 + - 配置依赖管理 + ↓ +branch +protect → 保护 master 分支 + ↓ +release +create → 创建 v0.1.0 初始版本 +``` + +**串联的命令**: + +| 步骤 | 命令 | 作用 | +|------|------|------| +| 1 | `repo +create` | 创建新仓库 | +| 2 | `git clone` | 克隆空仓库到本地临时目录 | +| 3 | 文件生成 | 生成 README.md / LICENSE / CONTRIBUTING.md / .gitlink-ci.yml | +| 4 | `git add/commit/push` | 推送脚手架文件到 master 分支 | +| 5 | `milestone +create` | 创建 3 个项目里程碑(MVP → Production) | +| 6 | `issue +create` | 创建 5 个初始 Issue 并打标签 | +| 7 | `branch +protect` | 设置 master 分支保护规则 | +| 8 | `release +create` | 创建 v0.1.0 初始版本 | + +**输出价值**:开箱即用(克隆后仓库已有 README、LICENSE、CI 配置,可直接开始开发)、仓库内文件(README/LICENSE/CONTRIBUTING/CI 是真实文件,不是 Wiki 页面)、里程碑规划(从 MVP 到正式版的路线图已建立)、标准化 Issue(关键待办已创建好,团队可直接认领)、分支保护(防止直接 push 到 master,强制走 PR 流程)、首个 Release(项目从创建之初就有版本管理)。 + +**运行方式**: + +```bash +# Go 项目 +bash workflows/03-project-init.sh --owner 你的组织 --name my-go-app --description "我的Go应用" --lang go + +# Python 项目(私有) +bash workflows/03-project-init.sh --owner 你的组织 --name my-api --description "REST API服务" --lang python --private + +# Node.js 项目 +bash workflows/03-project-init.sh --owner 你的组织 --name my-web --description "Web前端" --lang node + +# Java 项目 +bash workflows/03-project-init.sh --owner 你的组织 --name my-service --description "微服务" --lang java +``` + +--- + +### 场景四:多仓库协同 + +**脚本**:`workflows/04-multi-repo-collab.sh` / `04-multi-repo-collab.ps1` + +**工作流程**: + +``` +repo +list → 列出组织下所有仓库 + ↓ +对每个仓库: + issue +list → 获取 open/closed Issue + pr +list → 获取 open/merged PR + release +list → 获取最新 Release + ↓ +计算健康度评分(对齐 gitlink-health Skill · 100 分扣分制): + 核心指标(75 分):Issue 解决率 < 50% 扣 25、PR 合并率 < 50% 扣 25、近期无活动扣 25 + 辅助指标(25 分):Open Issue > 20 扣 10、Open PR > 10 扣 10、超 30 天无 Release 扣 5 + 五级评定:优秀(≥90)→ 良好(≥70)→ 一般(≥50)→ 需关注(≥30)→ 严重(<30) + ↓ +生成 HTML 仪表盘: + - 总览卡片:仓库数、Open Issue 数、Open PR 数、总活动量 + - 详情表格:每个仓库的 Issue/PR/Release 状态 + 折叠明细 + - 健康度色带:绿色优秀 / 蓝色良好 / 黄色一般 / 橙色需关注 / 红色严重 + ↓ +(可选)release +create → 一键为所有仓库创建同一版本号的 Release +``` + +**串联的命令**: + +| 步骤 | 命令 | 作用 | +|------|------|------| +| 1 | `repo +list` | 列出组织下所有仓库 | +| 2 | `issue +list` | 获取每个仓库的 Issue 数据 | +| 3 | `pr +list` | 获取每个仓库的 PR 数据 | +| 4 | `release +list` | 获取每个仓库的最新 Release | +| 5 | 生成 HTML | 输出可视化仪表盘 | +| 6 | `release +create` | (可选)协调发版 | + +**输出价值**:统一视图(一个 HTML 页面看到组织所有仓库的健康状态)、健康度预警(Open Issue 超 10 标橙色,超 20 标红色)、协调发版(多个关联仓库需要同步发版时,一条命令搞定)、可分享(HTML 文件可直接发给团队或部署到内部网站)。 + +**运行方式**: + +```bash +# 扫描组织下所有仓库 +bash workflows/04-multi-repo-collab.sh --org 你的组织 + +# 只看指定仓库 +bash workflows/04-multi-repo-collab.sh --org 你的组织 --repos "repo-a,repo-b,repo-c" + +# 生成仪表盘 + 协调发版 +bash workflows/04-multi-repo-collab.sh --org 你的组织 --release v2.0.0 + +# 自定义输出文件 + 详情限制条数 +bash workflows/04-multi-repo-collab.sh --org 你的组织 --output my-dashboard.html --detail-limit 10 + +# 预览模式 +bash workflows/04-multi-repo-collab.sh --org 你的组织 --dry-run + +# 示例 +bash workflows/04-multi-repo-collab.sh --org zzx-coder +``` + +运行后在当前目录生成 `dashboard.html`,浏览器打开即可查看。 + +--- + +### 场景五:贡献者成长体系 + +**脚本**:`workflows/05-contributor-growth.sh` + +**工作流程**: + +``` +contrib +report → 生成带 ECharts 饼图的 HTML 贡献报告 + ↓ +issue +list → 统计 Issue 活动 +pr +list → 统计 PR 活动 +api GET /contributors → 获取提交数等 API 统计 + ↓ +计算贡献分数(AHP 权重模型): + - 代码变更量:30%(归一化处理) + - PR 被合并:25%(归一化处理) + - 创建/解决 Issue:15%(归一化处理) + - Issue 评论:15%(归一化处理) + - 团队成员:15%(是/否 二分) + → 加权求和得 0-100 综合分 + ↓ +评定等级: + Champion(冠军) >= 80 分 + Core Contributor(核心) >= 60 分 + Active Contributor(活跃) >= 40 分 + Contributor(贡献者) >= 20 分 + Newcomer(新人) < 20 分 + ↓ +(可选)issue +create → 自动创建徽章颁发 Issue + ↓ +wiki +create → 发布排行榜到 Wiki +``` + +**串联的命令**: + +| 步骤 | 命令 | 作用 | +|------|------|------| +| 1 | `contrib +report` | 生成 HTML 贡献报告(带 ECharts 图表) | +| 2 | `issue +list` | 统计 open/closed Issue 活动 | +| 3 | `pr +list` | 统计 open/merged PR 活动 | +| 4 | `api GET /contributors` | 获取 API 级别的贡献者统计 | +| 5 | `issue +create` | (可选)自动颁发成就徽章 | +| 6 | `wiki +create` | 发布排行榜到 Wiki | + +**输出价值**:HTML 贡献报告(可视化展示贡献分布,适合团队会议演示)、贡献排行榜(量化每个人的贡献,公开透明)、Wiki 排行榜(永久保存,贡献者可随时查看排名)、徽章激励(通过 Issue 颁发徽章,增强成就感和归属感)。 + +**运行方式**: + +```bash +# 基本运行 +bash workflows/05-contributor-growth.sh --owner 你的组织 --repo 你的仓库 + +# 自定义统计周期(默认 30 天) +bash workflows/05-contributor-growth.sh --owner 你的组织 --repo 你的仓库 --period 90 + +# 启用自动颁发徽章 +bash workflows/05-contributor-growth.sh --owner 你的组织 --repo 你的仓库 --award + +# 示例 +bash workflows/05-contributor-growth.sh --owner zzx-coder --repo gitlink-cli --award +``` + +--- + +### 环境准备 + +**1. 安装 gitlink-cli** + +```bash +gitlink-cli version +# 未安装则从项目根目录构建 +cd gitlink-cli && make build +``` + +**2. 安装 jq(脚本用 jq 解析 CLI 返回的 JSON)** + +```bash +# Ubuntu/Debian +sudo apt-get install -y jq +# macOS +brew install jq +``` + +**3. 登录认证** + +```bash +gitlink-cli auth login # 交互式登录(推荐) +export GITLINK_TOKEN="你的私人令牌" # 或环境变量 +gitlink-cli auth status # 验证:应显示 ✓ Logged in +``` + +**4. 验证环境** + +```bash +gitlink-cli issue +list --owner zzx-coder --repo gitlink-cli --state open --limit 3 --format json | jq '.ok' +# 应输出:true +``` + +--- + +### 共享库 `lib/common.sh` + +所有工作流脚本共享的基础设施: + +| 函数 | 作用 | +|------|------| +| `check_auth` | 检查认证状态(环境变量 或 CLI 登录) | +| `gl_run` | CLI 封装,自动追加 `--format json` | +| `gl_check` | CLI 封装 + JSON 格式校验 + ok 字段检查 | +| `json_ok` / `json_get` / `json_error` | JSON 解析工具 | +| `detect_owner_repo` | 从 git remote 自动检测 owner/repo | +| `log_step` / `log_ok` / `log_warn` / `log_err` | 彩色日志输出 | + +--- + +### 工作流通用参数 + +| 参数 | 说明 | +|------|------| +| `--owner` | 仓库所有者(自动从 git remote 解析) | +| `--repo` | 仓库名称(自动从 git remote 解析) | +| `--org` | 组织名称(多仓库协同时需要) | +| `--dry-run` | 预览模式,不实际执行写操作 | +| `--help` | 显示帮助信息 | + +--- + +### 涉及的 Skill + +| Skill | 被使用的场景 | 作用 | +|-------|-------------|------| +| `gitlink-code-review` | 场景 2 | 审查维度、检查项、评分标准 | +| `gitlink-issue-triage` | 场景 1 | Issue 分类规则(关键词匹配、优先级判定) | +| `gitlink-changelog` | 场景 1 | Release Notes 生成模板 | +| `gitlink-health` | 场景 4 | 项目健康度评分体系(100 分扣分制) | +| `gitlink-onboard` | 场景 5 | 新人引导和 Issue 推荐规则 | +| `gitlink-workflow` | 全部 | 基础工作流编排 | + +--- + +### 测试 + +```bash +# 运行测试套件(使用真实 GitLink 仓库验证) +bash workflows/test.sh + +# 指定仓库 +bash workflows/test.sh zzx-coder gitlink-cli +``` + +测试覆盖:认证状态检查、CLI JSON 输出格式验证、数据字段提取(issue/PR/repo/release/member/contributor)、PR 文件和 Diff 内容解析、Issue/PR View 接口、Wiki/Label 列表接口、`common.sh` 工具函数、所有脚本语法校验。 + +--- + +### 项目结构(workflows/) + +``` +workflows/ +├── lib/ +│ └── common.sh # 共享工具库(认证、JSON解析、CLI封装、日志) +├── 01-community-ops.sh # 场景一:社区运营自动化 +├── 02-code-quality-gatekeeper.sh # 场景二:代码质量看门人(AI审查) +├── 03-project-init.sh # 场景三:项目一键初始化 +├── 04-multi-repo-collab.sh # 场景四:多仓库协同 +├── 05-contributor-growth.sh # 场景五:贡献者成长体系 +├── test.sh # 测试套件 +└── README.md # 工作流详细文档 +``` + +--- + +## 安装与快速开始 + +### 环境要求 + +- 支持平台:macOS、Linux、Windows (x64/arm64) +- Go 1.26+(仅从源码构建时需要) + +### 快速开始(面向用户) + +**一键安装(推荐):** ```bash curl -sSL https://www.gitlink.org.cn/Gitlink/gitlink-cli/raw/master/install.sh | bash ``` -**方式 2 — 从 npm 安装:** +**从 npm 安装:** ```bash npm install -g @gitlink-ai/cli ``` -**方式 2 — 从源码构建:** +二进制文件在 `postinstall` 阶段自动下载,无需额外操作。 -需要 Go 1.26+。 +**从源码构建:** ```bash git clone https://www.gitlink.org.cn/Gitlink/gitlink-cli.git cd gitlink-cli make install - -# 安装 CLI Skill(必须) -npx skills add ./skills -y -g ``` -> **Windows 用户注意:** 请在 PowerShell 或 CMD 中运行 `npm install -g @gitlink-ai/cli`。从源码构建请使用 `go install .` 代替 `make install`。 +> Windows 用户在 PowerShell 或 CMD 中运行 `npm install -g @gitlink-ai/cli`。从源码构建使用 `go install .` 代替 `make install`。 -#### 配置与使用 +**配置与使用:** ```bash -# 1. 配置(首次使用,交互式引导) +# 1. 配置(一次性) gitlink-cli config init -# 2. 登录(任选其一) -gitlink-cli auth login # 用户名密码(推荐) +# 2. 登录(任选一种) +gitlink-cli auth login # 用户名/密码(推荐) gitlink-cli auth login --token # 或粘贴私人令牌 -export GITLINK_TOKEN="your-token" # 或设置环境变量(适用于 CI/CD、非交互环境) +export GITLINK_TOKEN="your-token" # 或环境变量(CI/CD 环境) # 3. 开始使用 gitlink-cli repo +list ``` -### 快速上手(AI Agent) +### 快速开始(AI Agent) -> 以下步骤面向 AI Agent。部分步骤需要用户在浏览器中完成操作。 - -**第 1 步 — 安装** +> 以下步骤供 AI Agent 使用。部分步骤需用户在浏览器中完成。 ```bash -# 安装 CLI +# Step 1 — 安装(一条命令完成 CLI + 全部 Skills) npm install -g @gitlink-ai/cli -# 安装 CLI Skill(必须,全平台通用) -gitlink-cli-install-skills -``` - -**第 2 步 — 配置** - -```bash +# Step 2 — 配置 gitlink-cli config init -``` -**第 3 步 — 登录** +# Step 3 — 登录 +gitlink-cli auth login # 交互式环境 +export GITLINK_TOKEN="your-private-token" # 非交互式环境(CI/CD、MCP 等) -交互环境: -```bash -gitlink-cli auth login -``` - -非交互环境(CI/CD、Trae 沙箱、MCP 等): -```bash -export GITLINK_TOKEN="your-private-token" -``` - -> 获取私人令牌:GitLink 网页端 → 个人设置 → 私人令牌。 - -**第 4 步 — 验证** - -```bash +# Step 4 — 验证 gitlink-cli user +me ``` -## 安装与卸载 +### 卸载 -**详细安装指南**: [doc/INSTALL.md](./doc/INSTALL.md) -**详细卸载指南**: [doc/UNINSTALL.md](./doc/UNINSTALL.md) +**Linux/macOS**:`bash uninstall.sh` +**Windows PowerShell**:`.\uninstall.ps1` +**npm**:`npm uninstall -g @gitlink-ai/cli` -### 快速安装 - -**Linux/macOS**: `curl -sSL https://www.gitlink.org.cn/Gitlink/gitlink-cli/raw/master/install.sh | bash` -**Windows PowerShell**: `powershell -NoProfile -ExecutionPolicy Bypass -File install.ps1` -**npm**: `npm install -g @gitlink-ai/cli` - -### 快速卸载 - -**Linux/macOS**: `bash uninstall.sh` -**Windows PowerShell**: `.\uninstall.ps1` -**npm**: `npm uninstall -g @gitlink-ai/cli` - -> 💡 **提示**: 查看详细指南:[doc/INSTALL.md](./doc/INSTALL.md) | [doc/UNINSTALL.md](./doc/UNINSTALL.md) +--- ## 使用示例 ### 仓库操作 ```bash -# 列出仓库 gitlink-cli repo +list - -# 查看仓库信息 gitlink-cli repo +info --owner Gitlink --repo forgeplus - -# 创建仓库 gitlink-cli repo +create -n my-project -d "项目描述" - -# Fork 仓库 gitlink-cli repo +fork --owner Gitlink --repo forgeplus - -# 批量创建仓库(默认公开,--private设置为私有) -gitlink-cli repo +batch-create -n "repo1,repo2" -d "项目描述" - -# 批量更新仓库信息(--private设置为私有,--public设置为公开,注意要指定仓库所有者) -gitlink-cli repo +batch-update -n "repo1,repo2" -d "更新描述" ``` ### Issue 管理 ```bash -# 列出 Issue gitlink-cli issue +list --owner Gitlink --repo forgeplus - -# 创建 Issue gitlink-cli issue +create --owner Gitlink --repo forgeplus -t "Bug: 登录失败" -b "复现步骤..." - -# 查看 Issue gitlink-cli issue +view --owner Gitlink --repo forgeplus -i 123 - -# 关闭 Issue gitlink-cli issue +close --owner Gitlink --repo forgeplus -i 123 - -# 预览批量关闭,不修改数据 gitlink-cli issue +batch-close --owner Gitlink --repo forgeplus --numbers 123,124 --dry-run - -# 从 CSV 文件批量关闭 Issue gitlink-cli issue +batch-close --owner Gitlink --repo forgeplus --from issues.csv - -# 添加评论 gitlink-cli issue +comment --owner Gitlink --repo forgeplus -i 123 -b "已修复" - -# 批量修改状态 -gitlink-cli issue +batch-status --state resolved --numbers 1,2,3 --owner Gitlink --repo forgeplus - -# 批量修改优先级 -gitlink-cli issue +batch-priority --priority urgent --numbers 1,2,3 --owner Gitlink --repo forgeplus - -# 批量修改标签 -gitlink-cli issue +batch-label --numbers 1,2,3 --label 功能 --owner Gitlink --repo forgeplus - -# 批量修改负责人 -gitlink-cli issue +batch-assignee --numbers 1,2,3 --assignee zhangsan --owner Gitlink --repo forgeplus - -# 批量创建 -gitlink-cli issue --owner Gitlink --repo forgeplus +batch-create --titles "issue1,issue2,issue3" - -# 批量关闭 -gitlink-cli issue +batch-close --owner Gitlink --repo forgeplus --numbers 1,2,3 - ``` ### Pull Request ```bash -# 列出 PR gitlink-cli pr +list --owner Gitlink --repo forgeplus - -# 创建 PR(同仓库分支) gitlink-cli pr +create --owner Gitlink --repo forgeplus -t "feat: 搜索功能" --head feature/search --base master - -# 创建 PR(从 Fork 仓库) gitlink-cli pr +create --owner Gitlink --repo forgeplus -t "feat: 新功能" --head your_username/forgeplus:feature/my-feature --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 +files --owner Gitlink --repo forgeplus -i 42 ``` +### 分支管理 + +```bash +gitlink-cli branch +list --owner Gitlink --repo forgeplus +gitlink-cli branch +create --name feature/new-feature +gitlink-cli branch +delete --name feature/old-feature +gitlink-cli branch +protect --name main +gitlink-cli branch +unprotect --name main +``` + ### Webhook 管理 ```bash -# 列出所有 Webhook gitlink-cli webhook +list --owner Gitlink --repo forgeplus - -# 创建 Webhook gitlink-cli webhook +create --owner Gitlink --repo forgeplus --url https://ci.example.com/webhook --events push,pull_request - -# 创建带密钥的 Webhook -gitlink-cli webhook +create --url https://jenkins.example.com/webhook --secret my-secret-key --events push --description "CI/CD trigger" - -# 查看 Webhook 详情 +gitlink-cli webhook +create --url https://jenkins.example.com/webhook --secret my-secret-key --events push --description "CI/CD 触发器" gitlink-cli webhook +info --id 456 - -# 更新 Webhook gitlink-cli webhook +update --id 456 --url https://new-url.example.com/webhook --events push,pull_request,issue - -# 测试 Webhook gitlink-cli webhook +test --id 456 - -# 删除 Webhook gitlink-cli webhook +delete --id 456 - -# 查看支持的事件类型 gitlink-cli webhook +events ``` -### 发布管理 +### Release 管理 ```bash -# 列出 Release gitlink-cli release +list --owner Gitlink --repo forgeplus - -# 创建 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 ``` ### Wiki 管理 ```bash -# 列出 Wiki 页面 gitlink-cli wiki +list --owner Gitlink --repo forgeplus - -# 查看 Wiki 页面 -gitlink-cli wiki +view --owner Gitlink --repo forgeplus --title "快速开始" - -# 创建 Wiki 页面 -gitlink-cli wiki +create --title "新页面" --content "页面正文" - -# 更新 Wiki 页面(覆盖内容) -gitlink-cli wiki +update --title "新页面" --cover "更新后的内容" --owner Gitlink --repo forgeplus - -# 追加内容到 Wiki 页面 -gitlink-cli wiki +update --title "新页面" --add "追加的内容" --owner Gitlink --repo forgeplus - -# 删除 Wiki 页面 +gitlink-cli wiki +view --owner Gitlink --repo forgeplus --title "快速入门" +gitlink-cli wiki +create --title "新页面" --content "页面内容" +gitlink-cli wiki +update --title "新页面" --cover "更新内容" --owner Gitlink --repo forgeplus +gitlink-cli wiki +update --title "新页面" --add "追加内容" --owner Gitlink --repo forgeplus gitlink-cli wiki +delete --title "新页面" --owner Gitlink --repo forgeplus ``` ### 搜索 ```bash -# 搜索仓库 gitlink-cli search +repos -k "machine learning" - -# 搜索用户 gitlink-cli search +users -k "zhangsan" ``` +### CI/CD + +```bash +gitlink-cli ci +list --owner Gitlink --repo forgeplus +gitlink-cli ci +log --owner Gitlink --repo forgeplus -i +gitlink-cli ci +restart --owner Gitlink --repo forgeplus -i +``` + ### Raw API -Shortcuts 未覆盖的接口可通过 Raw API 直接调用: +Shortcuts 未覆盖的端点可直接调用 Raw API: ```bash -# GET 请求 gitlink-cli api GET /users/me - -# POST 请求 gitlink-cli api POST /Gitlink/forgeplus/issues --body '{"subject":"test","description":"..."}' - -# 带查询参数 gitlink-cli api GET /Gitlink/forgeplus/commits --query 'page=1&limit=5' ``` +--- + ## 全局参数 | 参数 | 说明 | 示例 | @@ -343,54 +801,34 @@ gitlink-cli api GET /Gitlink/forgeplus/commits --query 'page=1&limit=5' | `--format` | 输出格式(json/table/yaml) | `--format json` | | `--debug` | 启用调试输出 | `--debug` | -**自动上下文解析**:在 git 仓库目录下,`--owner` 和 `--repo` 会自动从 `git remote origin` 解析。 +**自动上下文解析:** 在 git 仓库内运行命令时,`--owner` 和 `--repo` 自动从 `git remote origin` 解析。 + +--- ## 分支约定 -gitlink-cli 支持 GitHub 和 GitLink 的代码双向同步: - -| 平台 | 主分支 | -|------|--------| +| 平台 | 默认分支 | +|------|----------| | GitHub | `main` | | GitLink | `master` | -**本地 push 到 GitLink**: +推送到 GitLink: ```bash -# 方式 1:使用 git 命令 git push gitlink main:master - -# 方式 2:配置 git remote +# 或配置 git remote git config remote.gitlink.push refs/heads/main:refs/heads/master git push gitlink ``` -## AI Agent Skills +--- -`skills/` 目录包含 11 个 Claude Code Agent Skill 文件,支持 AI 自动化操作 GitLink 平台。 - -详见 [skills/README.md](skills/README.md) - -| Skill | 说明 | -|-------|------| -| `gitlink-shared` | 认证、全局参数、安全规则、API 注意事项 | -| `gitlink-repo` | 仓库操作(创建、查看、删除、Fork 等) | -| `gitlink-issue` | Issue 操作(创建、更新、关闭、评论等) | -| `gitlink-pr` | Pull Request 操作(创建、合并、Review 等) | -| `gitlink-release` | 发布管理(创建、查看、删除等) | -| `gitlink-org` | 组织管理(成员、团队等) | -| `gitlink-ci` | CI/CD 操作(构建、日志等) | -| `gitlink-search` | 搜索功能(仓库、用户等) | -| `gitlink-user` | 用户管理(个人信息等) | -| `gitlink-pm` | 项目管理(Sprint、看板、周报等) | -| `gitlink-workflow` | AI 自动化工作流(Issue 分类、PR Review、Release Notes 等) | - -## 项目结构 +## 项目目录结构 ``` gitlink-cli/ ├── cmd/ # Cobra 命令定义 -│ ├── root.go # 根命令 + 全局 flags +│ ├── root.go # Root 命令 + 全局 flag │ ├── auth/ # 认证命令 │ ├── api/ # Raw API 命令 │ ├── config/ # 配置命令 @@ -399,49 +837,60 @@ gitlink-cli/ │ ├── auth/ # 登录、Token 存储、Transport │ ├── client/ # HTTP 客户端 + 分页 │ ├── config/ # 配置文件管理 -│ ├── context/ # git remote 解析 -│ └── output/ # Envelope + Formatter +│ ├── context/ # Git remote 解析 +│ └── output/ # 输出 envelope + formatter ├── shortcuts/ # Shortcut 实现 │ ├── common/ # 框架(types, runner) -│ ├── repo/ # 仓库 shortcuts -│ ├── issue/ # Issue shortcuts -│ ├── pr/ # PR shortcuts -│ ├── branch/ # 分支 shortcuts -│ ├── release/ # Release shortcuts -│ ├── org/ # 组织 shortcuts -│ ├── ci/ # CI shortcuts -│ ├── search/ # 搜索 shortcuts -│ ├── user/ # 用户 shortcuts -│ ├── wiki/ # Wiki shortcuts +│ ├── repo/ issue/ pr/ branch/ release/ org/ ci/ search/ user/ wiki/ │ └── register.go # 注册入口 ├── skills/ # AI Agent Skills -│ ├── README.md # Skills 使用指南 +│ ├── README.md # Skills 详细指南 │ ├── gitlink-shared/ # 共享规则 -│ ├── gitlink-repo/ # 仓库 Skill -│ ├── gitlink-issue/ # Issue Skill -│ ├── gitlink-pr/ # PR Skill -│ ├── gitlink-pm/ # 项目管理 Skill +│ ├── gitlink-repo/ issue/ pr/ branch/ release/ ... +│ ├── gitlink-health/ # 项目健康度 +│ ├── gitlink-changelog/ # Release Notes +│ ├── gitlink-code-review/ # AI 代码审查 +│ ├── gitlink-research/ # 科研辅助 │ └── ... +├── workflows/ # 端到端自动化工作流 +│ ├── README.md # 工作流说明 +│ ├── lib/common.sh # 共享工具库 +│ ├── 01-community-ops.sh # 社区运营自动化 +│ ├── 02-code-quality-gatekeeper.sh # 代码质量看门人 +│ ├── 03-project-init.sh # 项目一键初始化 +│ ├── 04-multi-repo-collab.sh # 多仓库协同 +│ ├── 05-contributor-growth.sh # 贡献者成长体系 +│ └── test.sh # 测试套件 ├── doc/ # 设计文档 -│ ├── Design.md +│ ├── design.md │ ├── CODE_SYNC_STRATEGY_FINAL.md │ └── ... ├── main.go ├── Makefile ├── go.mod -└── README.md +├── README.md +└── README.zh-CN.md ``` -## 文档 +--- -- [Skills 使用指南](skills/README.md) — AI Agent Skills 详细说明 +## 文档索引 + +- [Skills 指南](skills/README.md) — AI Agent Skills 详细文档 +- [工作流说明](workflows/README.md) — 五大自动化工作流详情 - [设计文档](doc/design.md) — 架构设计和开发计划 +- [安装指南](doc/INSTALL.md) — 详细安装步骤 +- [卸载指南](doc/UNINSTALL.md) — 详细卸载步骤 +- [API 参考](skills/gitlink-shared/REFERENCE.md) — 完整 API 参考 +- [故障排查](skills/gitlink-shared/TROUBLESHOOTING.md) — 常见问题排查 + +--- ## 常见问题 ### Q: 如何在脚本中使用 gitlink-cli? -使用 `GITLINK_TOKEN` 环境变量 + `--format json` 获取结构化输出: +使用 `GITLINK_TOKEN` 环境变量 + `--format json`: ```bash export GITLINK_TOKEN="your-private-token" @@ -450,7 +899,7 @@ gitlink-cli repo +list --format json | jq '.data.projects[] | .name' ### Q: 如何自动解析 owner/repo? -在 git 仓库目录下运行命令,CLI 会自动从 `git remote origin` 解析: +在 git 仓库目录下运行命令,CLI 自动从 `git remote origin` 解析: ```bash cd ~/my-gitlink-project @@ -459,45 +908,39 @@ gitlink-cli issue +list # 自动使用当前仓库 ### Q: Token 过期了怎么办? -重新登录: - ```bash -# 用户名密码登录 -gitlink-cli auth login - -# 或使用私人令牌(在 GitLink 网页端 个人设置 → 私人令牌 中生成) -gitlink-cli auth login --token +gitlink-cli auth login # 用户名/密码登录 +gitlink-cli auth login --token # 或使用私人令牌 ``` -### Q: 如何在 CI/CD 或非交互环境(Trae 沙箱等)中使用? +### Q: 如何在 CI/CD 或非交互式环境(如 Trae sandbox)中使用? -设置 `GITLINK_TOKEN` 环境变量即可,无需 `auth login`: +设置 `GITLINK_TOKEN` 环境变量,无需 `auth login`: ```bash export GITLINK_TOKEN="your-private-token" -gitlink-cli repo +list # 直接可用 -gitlink-cli auth status # 显示 "✓ Logged in via GITLINK_TOKEN environment variable" +gitlink-cli repo +list # 立即可用 ``` -Token 优先级:`GITLINK_TOKEN` 环境变量 > keyring/文件存储的 token。不设置环境变量时完全兼容原有交互式登录。 +优先级:`GITLINK_TOKEN` 环境变量 > 密钥链/文件存储 Token。 -### Q: npm 安装成功但 `gitlink-cli` 提示缺少二进制怎么办? +### Q: npm 安装成功但 `gitlink-cli` 报告缺少二进制文件? -先尝试重新安装: - -```bash -npm install -g @gitlink-ai/cli -``` - -如果仍然失败,请检查 Release 页面是否包含当前平台的资产,例如 Windows x64 对应 `gitlink-cli__windows_amd64.zip`。也可以从 Release 页面手动下载二进制,或使用 `go install .` 从源码构建。 +先尝试重新安装 `npm install -g @gitlink-ai/cli`。如仍报错,检查 release 页面是否包含对应平台的资源文件,或手动下载二进制 / 从源码 `go install .` 构建。 ### Q: Windows 上凭证存储在哪里? -gitlink-cli 使用 Windows Credential Manager 安全存储 Token。如果 Credential Manager 不可用,会自动降级到文件存储(`~/.config/gitlink-cli/credentials`)。 +gitlink-cli 使用 Windows Credential Manager 安全存储 Token。如果 Credential Manager 不可用,自动回退到文件存储(`~/.config/gitlink-cli/credentials`)。 -### Q: 如何查看完整的 API 参考? +--- -查看 [skills/gitlink-shared/REFERENCE.md](skills/gitlink-shared/REFERENCE.md) +## 相关资源 + +- [gitlink-bisync](https://www.gitlink.org.cn/wbtiger/gitlink-bisync) — 代码双向同步系统 +- [测试报告](doc/SKILLS_TEST_REPORT_2026-04-02.md) — Skills 功能测试报告 +- [代码同步方案](doc/CODE_SYNC_STRATEGY_FINAL.md) — GitHub ↔ GitLink 同步设计 + +--- ## 许可证