Просмотр исходного кода

docs: 登记 codeguard-skills 技能包

loong10k 15 часов назад
Родитель
Сommit
3e221f83bf
6 измененных файлов с 215 добавлено и 14 удалено
  1. 28 0
      .github/workflows/catalog-check.yml
  2. 13 5
      README.en.md
  3. 16 9
      README.md
  4. 32 0
      scripts/clone_repos.sh
  5. 51 0
      scripts/repositories.txt
  6. 75 0
      scripts/validate_catalog.py

+ 28 - 0
.github/workflows/catalog-check.yml

@@ -0,0 +1,28 @@
+name: Catalog Check
+
+on:
+  pull_request:
+    paths:
+      - "README.md"
+      - "README.en.md"
+      - "scripts/repositories.txt"
+      - "scripts/validate_catalog.py"
+      - ".github/workflows/catalog-check.yml"
+  push:
+    branches: [main]
+    paths:
+      - "README.md"
+      - "README.en.md"
+      - "scripts/repositories.txt"
+      - "scripts/validate_catalog.py"
+      - ".github/workflows/catalog-check.yml"
+
+jobs:
+  validate:
+    runs-on: ubuntu-latest
+    steps:
+      - uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4.4.0
+      - uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0
+        with:
+          python-version: "3.12"
+      - run: python3 scripts/validate_catalog.py

+ 13 - 5
README.en.md

@@ -2,7 +2,7 @@
 
 # Full Stack Skills
 
-**690+ Agent Skills. 49 Skill Packages. One Ecosystem.**
+**763 Agent Skills. 51 Skill Packages. One Ecosystem.**
 
 *Frontend · Backend · Mobile · DevOps · AI Design Tools — production-ready, independently installable.*
 
@@ -26,18 +26,18 @@
 
 ## Introduction
 
-**Full Stack Skills** is the navigation hub for the most comprehensive collection of Agent Skills for AI coding agents. Originally a monorepo with 460+ stars, we've split into **49 independently installable packages** under the [full-stack-skills](https://github.com/full-stack-skills) GitHub organization.
+**Full Stack Skills** is the navigation hub for the most comprehensive collection of Agent Skills for AI coding agents. Originally a monorepo with 460+ stars, we've split into **51 independently installable packages** under the [full-stack-skills](https://github.com/full-stack-skills) GitHub organization.
 
 Each package provides specialized knowledge, workflows, and reference materials that AI agents load on-demand — keeping context footprint minimal while delivering deep domain expertise when needed.
 
-> **Migration Complete (June 2026)**: All 693 skills have been migrated to individual repos. This repo is now the catalog & navigation hub. All existing stars and history are preserved here.
+> **Migration Complete (June 2026)**: All 763 current skills live in individual repositories. This repo is now the catalog & navigation hub. All existing stars and history are preserved here.
 
 ### Problems We Solve
 
 | Gap | Problem | Solution |
 |-----|---------|----------|
 | **Context overflow** | Loading all skills at once exceeds token limits | Per-package on-demand loading via `npx skills add` |
-| **Domain expertise** | Generic AI lacks deep framework knowledge | 693 specialized skills across 17 domains |
+| **Domain expertise** | Generic AI lacks deep framework knowledge | 763 specialized skills across 18 domains |
 | **Discoverability** | Skills scattered across repos, hard to find | This catalog — one README, all packages linked |
 | **Version lock** | Monorepo forces coordinated releases | Each package independently versioned and published |
 
@@ -51,6 +51,7 @@ Install any skill package with one command:
 npx skills add full-stack-skills/vue-skills      # Vue.js ecosystem (7 skills)
 npx skills add full-stack-skills/tauri-skills     # Tauri desktop/mobile (52 skills)
 npx skills add full-stack-skills/t2ui-skills      # t2ui AI design tools (97 skills)
+npx skills add full-stack-skills/codeguard-skills # Code quality and security governance (68 skills)
 ```
 
 Or install a specific skill from a package:
@@ -127,13 +128,14 @@ npx skills add full-stack-skills/vue-skills --skill vue3
 | [zig-skills](https://github.com/full-stack-skills/zig-skills) | 15 | `npx skills add full-stack-skills/zig-skills` |
 | [ddd4j-skills](https://github.com/full-stack-skills/ddd4j-skills) | 62 | `npx skills add full-stack-skills/ddd4j-skills` |
 
-### Cross-Platform & Desktop (57 skills)
+### Cross-Platform & Desktop (59 skills)
 
 | Package | Skills | Install |
 |---------|--------|---------|
 | [flutter-skills](https://github.com/full-stack-skills/flutter-skills) | 2 | `npx skills add full-stack-skills/flutter-skills` |
 | [electron-skills](https://github.com/full-stack-skills/electron-skills) | 3 | `npx skills add full-stack-skills/electron-skills` |
 | [tauri-skills](https://github.com/full-stack-skills/tauri-skills) | 52 | `npx skills add full-stack-skills/tauri-skills` |
+| [mobile-native-skills](https://github.com/full-stack-skills/mobile-native-skills) | 2 | `npx skills add full-stack-skills/mobile-native-skills` |
 
 ### 3D & Game (19 skills)
 
@@ -185,6 +187,12 @@ npx skills add full-stack-skills/vue-skills --skill vue3
 | [speckit-skills](https://github.com/full-stack-skills/speckit-skills) | 13 | `npx skills add full-stack-skills/speckit-skills` |
 | [openspec-skills](https://github.com/full-stack-skills/openspec-skills) | 15 | `npx skills add full-stack-skills/openspec-skills` |
 
+### Code Quality & Governance (68 skills)
+
+| Package | Skills | Install |
+|---------|--------|---------|
+| [codeguard-skills](https://github.com/full-stack-skills/codeguard-skills) | 68 | `npx skills add full-stack-skills/codeguard-skills` |
+
 ### Toolchain (1 skill)
 
 | Package | Skills | Install |

+ 16 - 9
README.md

@@ -2,7 +2,7 @@
 
 # Full Stack Skills
 
-**690+ 个 Agent Skills。49 个技能包。一个统一生态。**
+**763 个 Agent Skills。51 个技能包。一个统一生态。**
 
 *前端 · 后端 · 移动端 · DevOps · AI 设计工具 — 生产级品质,独立安装。*
 
@@ -30,14 +30,14 @@
 
 每个包提供专业知识、工作流和参考资料,AI 智能体按需加载 — 保持上下文占用最小化,同时在需要时提供深度领域专业知识。
 
-> **迁移完成(2026 年 6 月)**:全部 693 个技能已迁移到独立仓库。本仓库现在是目录和导航站。所有现有 stars 和历史记录均保留在此。
+> **迁移完成(2026 年 6 月)**:当前 763 个技能均位于独立仓库。本仓库现在是目录和导航站。所有现有 stars 和历史记录均保留在此。
 
 ### 我们要解决的问题
 
 | 缺口 | 问题 | 解决方案 |
 |------|------|----------|
 | **上下文溢出** | 一次加载所有技能会超过 token 限制 | 通过 `npx skills add` 按包按需加载 |
-| **领域专业知识** | 通用 AI 缺乏深度框架知识 | 跨 16 个领域的 693 个专业技能 |
+| **领域专业知识** | 通用 AI 缺乏深度框架知识 | 跨 18 个领域的 763 个专业技能 |
 | **可发现性** | 技能分散在各个仓库,难以查找 | 本目录 — 一个 README,所有包链接 |
 | **版本锁定** | monorepo 强制协调发布 | 每个包独立版本管理和发布 |
 
@@ -51,6 +51,7 @@
 npx skills add full-stack-skills/vue-skills      # Vue.js 生态(7 个技能)
 npx skills add full-stack-skills/tauri-skills     # Tauri 桌面/移动(52 个技能)
 npx skills add full-stack-skills/t2ui-skills      # t2ui AI 设计工具(97 个技能)
+npx skills add full-stack-skills/codeguard-skills # 代码质量与安全治理(68 个技能)
 ```
 
 或安装包中的特定技能:
@@ -77,7 +78,7 @@ npx skills add full-stack-skills/vue-skills --skill vue3
 | [pencil-skills](https://github.com/full-stack-skills/pencil-skills) | 28 | `npx skills add full-stack-skills/pencil-skills` |
 | [t2ui-skills](https://github.com/full-stack-skills/t2ui-skills) | 97 | `npx skills add full-stack-skills/t2ui-skills` |
 
-### 前端框架(48 个技能)
+### 前端框架(66 个技能)
 
 | 包 | 技能数 | 安装 |
 |---|--------|------|
@@ -113,7 +114,7 @@ npx skills add full-stack-skills/vue-skills --skill vue3
 | [chart-skills](https://github.com/full-stack-skills/chart-skills) | 2 | `npx skills add full-stack-skills/chart-skills` |
 | [ascii-skills](https://github.com/full-stack-skills/ascii-skills) | 13 | `npx skills add full-stack-skills/ascii-skills` |
 
-### 后端框架(119 个技能)
+### 后端框架(184 个技能)
 
 | 包 | 技能数 | 安装 |
 |---|--------|------|
@@ -127,13 +128,14 @@ npx skills add full-stack-skills/vue-skills --skill vue3
 | [zig-skills](https://github.com/full-stack-skills/zig-skills) | 15 | `npx skills add full-stack-skills/zig-skills` |
 | [ddd4j-skills](https://github.com/full-stack-skills/ddd4j-skills) | 62 | `npx skills add full-stack-skills/ddd4j-skills` |
 
-### 跨平台与桌面(75 个技能)
+### 跨平台与桌面(59 个技能)
 
 | 包 | 技能数 | 安装 |
 |---|--------|------|
 | [flutter-skills](https://github.com/full-stack-skills/flutter-skills) | 2 | `npx skills add full-stack-skills/flutter-skills` |
 | [electron-skills](https://github.com/full-stack-skills/electron-skills) | 3 | `npx skills add full-stack-skills/electron-skills` |
 | [tauri-skills](https://github.com/full-stack-skills/tauri-skills) | 52 | `npx skills add full-stack-skills/tauri-skills` |
+| [mobile-native-skills](https://github.com/full-stack-skills/mobile-native-skills) | 2 | `npx skills add full-stack-skills/mobile-native-skills` |
 
 ### 3D 与游戏(19 个技能)
 
@@ -142,7 +144,7 @@ npx skills add full-stack-skills/vue-skills --skill vue3
 | [threejs-skills](https://github.com/full-stack-skills/threejs-skills) | 18 | `npx skills add full-stack-skills/threejs-skills` |
 | [cocos-skills](https://github.com/full-stack-skills/cocos-skills) | 1 | `npx skills add full-stack-skills/cocos-skills` |
 
-### 架构与设计模式(37 个技能)
+### 架构与设计模式(50 个技能)
 
 | 包 | 技能数 | 安装 |
 |---|--------|------|
@@ -185,12 +187,17 @@ npx skills add full-stack-skills/vue-skills --skill vue3
 | [speckit-skills](https://github.com/full-stack-skills/speckit-skills) | 13 | `npx skills add full-stack-skills/speckit-skills` |
 | [openspec-skills](https://github.com/full-stack-skills/openspec-skills) | 15 | `npx skills add full-stack-skills/openspec-skills` |
 
-### 工具链与个人(2 个技能)
+### 代码质量与治理(68 个技能)
+
+| 包 | 技能数 | 安装 |
+|---|--------|------|
+| [codeguard-skills](https://github.com/full-stack-skills/codeguard-skills) | 68 | `npx skills add full-stack-skills/codeguard-skills` |
+
+### 工具链(1 个技能)
 
 | 包 | 技能数 | 安装 |
 |---|--------|------|
 | [skills-toolchain](https://github.com/full-stack-skills/skills-toolchain) | 1 | `npx skills add full-stack-skills/skills-toolchain` |
-| [boss-skills](https://github.com/full-stack-skills/boss-skills) | 1 | `npx skills add full-stack-skills/boss-skills` |
 
 ### 教学与学习(3 个技能)
 

+ 32 - 0
scripts/clone_repos.sh

@@ -0,0 +1,32 @@
+#!/bin/bash
+# Clone every published Full Stack Skills package into a sibling workspace.
+
+set -euo pipefail
+
+script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
+catalog_root="$(cd "$script_dir/.." && pwd)"
+workspace_root="$(cd "$catalog_root/.." && pwd)"
+target_dir="${FULL_STACK_SKILLS_REPOSITORIES_DIR:-$workspace_root/full-stack-skills-repositories}"
+repository_list="$script_dir/repositories.txt"
+organization="full-stack-skills"
+
+mkdir -p "$target_dir"
+
+while IFS= read -r repository; do
+  if [[ -z "$repository" || "$repository" == \#* ]]; then
+    continue
+  fi
+  destination="$target_dir/$repository"
+  if [[ -d "$destination/.git" ]]; then
+    echo "present  $repository"
+    continue
+  fi
+  if [[ -e "$destination" ]]; then
+    echo "ERROR: $destination exists but is not a Git repository" >&2
+    exit 1
+  fi
+  echo "clone    $organization/$repository"
+  git clone "https://github.com/$organization/$repository.git" "$destination"
+done < "$repository_list"
+
+echo "Repository inventory synchronized in $target_dir"

+ 51 - 0
scripts/repositories.txt

@@ -0,0 +1,51 @@
+agent-skills
+angular-skills
+antd-skills
+ascii-skills
+avue-skills
+build-skills
+chart-skills
+cocos-skills
+codeguard-skills
+database-skills
+ddd-skills
+ddd4j-skills
+design-skills
+devops-skills
+docker-skills
+document-skills
+drawio-skills
+electron-skills
+firmware-skills
+flutter-skills
+go-skills
+java-skills
+kotlin-skills
+mobile-native-skills
+nodejs-skills
+nvm-skills
+ocrmypdf-skills
+openspec-skills
+pencil-skills
+processon-skills
+python-skills
+react-skills
+rust-skills
+skills-toolchain
+social-skills
+speckit-skills
+spring-skills
+stitch-skills
+svelte-skills
+swift-skills
+t2ui-skills
+tauri-skills
+teaching-skills
+testing-skills
+threejs-skills
+uniapp-skills
+uview-skills
+vscode-skills
+vue-skills
+vue-ui-skills
+zig-skills

+ 75 - 0
scripts/validate_catalog.py

@@ -0,0 +1,75 @@
+#!/usr/bin/env python3
+"""Validate README package inventory and headline counts."""
+
+from __future__ import annotations
+
+import re
+import sys
+from pathlib import Path
+
+
+ROOT = Path(__file__).resolve().parent.parent
+REPOSITORY_RE = re.compile(
+    r"^\| \[([^]]+)\]\(https://github\.com/full-stack-skills/([^)]+)\) \| ([0-9]+) \|",
+    re.MULTILINE,
+)
+
+
+def fail(message: str) -> None:
+    print(f"ERROR: {message}", file=sys.stderr)
+
+
+def read_inventory() -> list[str]:
+    return [
+        line.strip()
+        for line in (ROOT / "scripts/repositories.txt").read_text(encoding="utf-8").splitlines()
+        if line.strip() and not line.lstrip().startswith("#")
+    ]
+
+
+def validate_readme(path: Path, expected: set[str]) -> int:
+    text = path.read_text(encoding="utf-8")
+    rows = REPOSITORY_RE.findall(text)
+    repositories = [repository for label, repository, _ in rows if label == repository]
+    counts = [int(count) for label, repository, count in rows if label == repository]
+    errors = 0
+
+    duplicates = sorted({name for name in repositories if repositories.count(name) > 1})
+    missing = sorted(expected - set(repositories))
+    unexpected = sorted(set(repositories) - expected)
+    for label, values in (("duplicate", duplicates), ("missing", missing), ("unexpected", unexpected)):
+        if values:
+            fail(f"{path.name}: {label} repositories: {', '.join(values)}")
+            errors += 1
+
+    headline = re.search(
+        r"\*\*([0-9]+)(?: 个)? Agent Skills[。.]\s*([0-9]+)(?: 个技能包| Skill Packages)",
+        text,
+    )
+    if not headline:
+        fail(f"{path.name}: headline counts not found")
+        return errors + 1
+    declared_skills, declared_packages = map(int, headline.groups())
+    if declared_packages != len(expected):
+        fail(f"{path.name}: declares {declared_packages} packages, expected {len(expected)}")
+        errors += 1
+    if declared_skills != sum(counts):
+        fail(f"{path.name}: declares {declared_skills} skills, table sums to {sum(counts)}")
+        errors += 1
+
+    print(f"{path.name}: {len(repositories)} packages, {sum(counts)} skills")
+    return errors
+
+
+def main() -> int:
+    inventory = read_inventory()
+    if inventory != sorted(set(inventory)):
+        fail("scripts/repositories.txt must be sorted and unique")
+        return 1
+    expected = set(inventory)
+    errors = sum(validate_readme(ROOT / name, expected) for name in ("README.md", "README.en.md"))
+    return 1 if errors else 0
+
+
+if __name__ == "__main__":
+    raise SystemExit(main())