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

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
54 changes: 25 additions & 29 deletions .agents/plugins/marketplace.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,62 +5,58 @@
},
"plugins": [
{
"name": "external-agent-workflows",
"name": "agent-toolkit",
"source": {
"source": "local",
"path": "./plugins/external-agent-workflows"
"path": "./plugins/agent-toolkit"
},
"policy": {
"installation": "AVAILABLE",
"authentication": "ON_INSTALL"
},
"category": "Productivity"
"category": "Developer"
},
{
"name": "external-developer-workflows",
"name": "software-delivery",
"source": {
"source": "local",
"path": "./plugins/external-developer-workflows"
},
"policy": {
"installation": "AVAILABLE",
"authentication": "ON_INSTALL"
"path": "./plugins/software-delivery"
},
"category": "Developer"
},
{
"name": "external-frontend-design",
"name": "spec-driven-development",
"source": {
"source": "local",
"path": "./plugins/external-frontend-design"
"path": "./plugins/spec-driven-development"
},
"policy": {
"installation": "AVAILABLE",
"authentication": "ON_INSTALL"
"category": "Developer"
},
{
"name": "frontend-product-design",
"source": {
"source": "local",
"path": "./plugins/frontend-product-design"
},
"category": "Design"
},
{
"name": "external-video-design",
"name": "visual-content",
"source": {
"source": "local",
"path": "./plugins/external-video-design"
},
"policy": {
"installation": "AVAILABLE",
"authentication": "ON_INSTALL"
"path": "./plugins/visual-content"
},
"category": "Design"
},
{
"name": "external-career-health",
"name": "career-productivity",
"source": {
"source": "local",
"path": "./plugins/external-career-health"
"path": "./plugins/career-productivity"
},
"policy": {
"installation": "AVAILABLE",
"authentication": "ON_INSTALL"
"category": "Productivity"
},
{
"name": "health-wellness",
"source": {
"source": "local",
"path": "./plugins/health-wellness"
},
"category": "Productivity"
}
Expand Down
69 changes: 61 additions & 8 deletions .claude-plugin/marketplace.json
Original file line number Diff line number Diff line change
@@ -1,19 +1,72 @@
{
"$schema": "https://anthropic.com/claude-code/marketplace.schema.json",
"name": "tianyao-skills",
"description": "Personal marketplace for tianyao's Firstsun Skill Arsenal plugins.",
"name": "firstsun-external",
"description": "Curated skills for practical AI development.",
"owner": {
"name": "tianyao"
"name": "Firstsun Dev"
},
"plugins": [
{
"name": "most-used-skills",
"description": "Bundle of tianyao's most-used Claude Code skills, ranked by usage across all project session history.",
"name": "agent-toolkit",
"description": "Reviewed third-party skills for building and running AI agents.",
"author": {
"name": "tianyao"
"name": "Firstsun Dev"
},
"category": "developer",
"source": "./plugins/agent-toolkit"
},
{
"name": "software-delivery",
"description": "Curated third-party skills for shipping and operating software.",
"author": {
"name": "Firstsun Dev"
},
"category": "developer",
"source": "./plugins/software-delivery"
},
{
"name": "spec-driven-development",
"description": "Reviewed third-party skills for spec-driven development workflows.",
"author": {
"name": "Firstsun Dev"
},
"category": "developer",
"source": "./plugins/spec-driven-development"
},
{
"name": "frontend-product-design",
"description": "Curated third-party skills for frontend and product design.",
"author": {
"name": "Firstsun Dev"
},
"category": "design",
"source": "./plugins/frontend-product-design"
},
{
"name": "visual-content",
"description": "Reviewed third-party skills for video and visual content creation.",
"author": {
"name": "Firstsun Dev"
},
"category": "design",
"source": "./plugins/visual-content"
},
{
"name": "career-productivity",
"description": "Curated third-party skills for career growth and everyday productivity.",
"author": {
"name": "Firstsun Dev"
},
"category": "productivity",
"source": "./plugins/career-productivity"
},
{
"name": "health-wellness",
"description": "Reviewed third-party skills for general health and wellness education. Not medical care.",
"author": {
"name": "Firstsun Dev"
},
"category": "productivity",
"source": "./plugin-most-used"
"source": "./plugins/health-wellness"
}
]
}
48 changes: 43 additions & 5 deletions .github/workflows/update-external-skills.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,46 @@ on:
workflow_dispatch: {}
schedule:
- cron: '0 3 * * 1' # Weekly, Monday 03:00 UTC
push:
branches:
- main
pull_request:
branches:
- main

concurrency:
group: update-external-skills
cancel-in-progress: false

jobs:
verify-marketplace:
# Pure verification of whatever is already committed: runs the generator's own
# contract tests, then `sync-external-marketplace.mjs --check` against the
# committed output (no --write first, unlike the `update` job below) so a
# manually hand-edited generated file (e.g. .claude-plugin/marketplace.json or
# something under plugins/) actually fails CI instead of silently drifting
# until the next weekly sync overwrites it.
if: github.event_name == 'push' || github.event_name == 'pull_request'
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v6
with:
persist-credentials: false

- name: Set up Node.js
uses: actions/setup-node@v6
with:
node-version: '24'

- name: Run external marketplace contract tests
run: node scripts/test-external-marketplace.mjs

- name: Verify no committed drift in generated marketplace output
run: node scripts/sync-external-marketplace.mjs --check

update:
if: github.event_name == 'workflow_dispatch' || github.event_name == 'schedule'
runs-on: ubuntu-latest
steps:
- name: Checkout repository
Expand Down Expand Up @@ -105,6 +138,9 @@ jobs:
- name: Refresh portable external marketplace plugins
run: node scripts/sync-external-marketplace.mjs

- name: Verify external marketplace parity
run: node scripts/sync-external-marketplace.mjs --check

- name: Force-restore upstream source/sourceType/skillPath from the pre-run snapshot
run: |
set -e
Expand Down Expand Up @@ -136,7 +172,7 @@ jobs:
mv /tmp/skills-lock.after.json skills-lock.json

- name: Clean up local agent install artifacts (gitignored, not part of the PR)
run: rm -rf .agents .claude/skills
run: rm -rf .agents/skills .claude/skills

- name: Verify repo structure (skill-manager flattened design)
run: ./init.sh
Expand Down Expand Up @@ -166,13 +202,15 @@ jobs:
uses: peter-evans/create-pull-request@v6
with:
token: ${{ secrets.RELEASE_TOKEN }}
# Only ever stage these two — regardless of whatever else `npx skills add`
# or `setup.sh` may have written to the working tree (e.g. agent install
# artifacts that aren't covered by .gitignore).
# Only ever stage these six generated/tracked marketplace paths — regardless
# of whatever else `npx skills add` or `setup.sh` may have written to the
# working tree (e.g. agent install artifacts that aren't covered by .gitignore).
add-paths: |
.agents/plugins/marketplace.json
.claude-plugin/marketplace.json
marketplace/external/catalog.json
external/**
plugins/external-*/**
plugins/**
skills-lock.json
commit-message: "chore(external): weekly sync of external skills from upstream"
branch: automated/update-external-skills
Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
.agents/skills/
.claude/skills
.claude/worktrees
.worktrees/
.cache/
49 changes: 41 additions & 8 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -48,17 +48,50 @@ For a checked-out local repository, the existing scripts can also register or ex
./export.sh <domain>
```

## ChatGPT and Codex marketplace
## Firstsun External marketplace

The portable third-party catalog is published as the `firstsun-external` marketplace in
[`/.agents/plugins/marketplace.json`](./.agents/plugins/marketplace.json). It separates the
external catalog into small, optional workflow bundles instead of installing every skill at once.
**Firstsun External** is one curated marketplace — "Curated skills for practical AI development"
— published for both ChatGPT/Codex and Claude Code from the same canonical catalog
([`marketplace/external/catalog.json`](./marketplace/external/catalog.json)). It groups the
external skill collection into seven focused plugins instead of installing everything at once:

An eligible ChatGPT workspace administrator can import this GitHub repository from **Workspace
settings → Plugins → Add → Import marketplace**. The marketplace is at the repository root, so
leave the Path field empty. GitHub-backed marketplaces sync daily after import.
**Build**
- `agent-toolkit` — reviewed skills for building and running AI agents
- `software-delivery` — curated skills for shipping and operating software
- `spec-driven-development` — reviewed skills for OpenSpec-style spec-driven workflows

The plugin copies under `plugins/external-*/skills/` are generated from `external/` by
**Design**
- `frontend-product-design` — curated skills for frontend and product design
- `visual-content` — reviewed skills for video and visual content creation

**Grow**
- `career-productivity` — curated skills for career growth and everyday productivity
- `health-wellness` — reviewed skills for general health and wellness education (not medical care)

### ChatGPT and Codex

An eligible ChatGPT workspace administrator can import this GitHub repository
(`https://github.com/firstsun-dev/skills`) from **Workspace settings → Plugins → Add → Import
marketplace**. The marketplace is at the repository root, so leave the Path field empty.
GitHub-backed marketplaces sync daily after import. This reads
[`.agents/plugins/marketplace.json`](./.agents/plugins/marketplace.json).

### Claude Code

Claude Code discovers the same catalog from
[`.claude-plugin/marketplace.json`](./.claude-plugin/marketplace.json):

```
/plugin marketplace add firstsun-dev/skills
/plugin install agent-toolkit@firstsun-external
```

Both clients install identical copied skill contents — each plugin under `plugins/<plugin-id>/`
carries a `.codex-plugin/plugin.json` and a `.claude-plugin/plugin.json` side by side, generated
from the same skill files.

`plugins/`, `.agents/plugins/marketplace.json`, and `.claude-plugin/marketplace.json` are
generated artifacts produced from `external/` and `marketplace/external/catalog.json` by
`scripts/sync-external-marketplace.mjs`; do not edit them directly. The weekly external update
workflow refreshes both the canonical mirrors and these portable plugin packages.

Expand Down
33 changes: 24 additions & 9 deletions SKILLS_LIST.md
Original file line number Diff line number Diff line change
Expand Up @@ -196,18 +196,33 @@

## 🔌 Plugins

透過 `.claude-plugin/` 打包成可用 `/plugin install` 安裝的 Claude Code plugin,內容以 symlink 指回 `custom/`/`external/` 中的原始技能,僅限本機使用。
第三方 `external/` 技能以單一 `firstsun-external` marketplace 對外發佈,同時支援 ChatGPT/Codex 與 Claude Code 兩種客戶端。每個 plugin 目錄(`plugins/<plugin-id>/`)都同時提供 `.codex-plugin/plugin.json` 與 `.claude-plugin/plugin.json` 兩份内容相同的清單,由 `scripts/sync-external-marketplace.mjs` 從 `marketplace/external/catalog.json` 與 `external/` 自動產生,請勿手動編輯。技能數量以 `catalog.json` 的 `expectedSkillCount` 為準,並由 `scripts/test-external-marketplace.mjs` 驗證。

| Marketplace / Plugin | 說明 | 內含技能 | 檔案連結 |
| :--- | :--- | :--- | :--- |
| **tianyao-skills** (marketplace) | 個人 marketplace,登記 `/plugin marketplace add ~/skills`。 | — | [marketplace.json](./.claude-plugin/marketplace.json) |
| **most-used-skills** | 依全專案 session 使用頻率統計出的最常用技能包(`firstsun-pm`、`validate-skills`、`firstsun-harness`、`skill-manager`、`find-skills`、`skill-creator`、`frontend-design`、`cloudflare`、`tailored-resume-generator`),另加新建的 `permission-cleanup`(尚無使用紀錄,非依頻率入選)。 | 10 個 | [plugin.json](./plugin-most-used/.claude-plugin/plugin.json) |
| **firstsun-external** | 供 ChatGPT 與 Codex Workspace 從 GitHub 匯入的第三方 skills marketplace;各 bundle 為可攜副本,由 `external/` 自動同步產生。 | 70 個 | [marketplace.json](./.agents/plugins/marketplace.json) |
| **external-agent-workflows** | Agent 編排、搜尋、文件與思考工作流。 | 13 個 | [plugin.json](./plugins/external-agent-workflows/.codex-plugin/plugin.json) |
| **external-developer-workflows** | 程式品質、DevOps、安全、Rust 與 i18n 工作流。 | 16 個 | [plugin.json](./plugins/external-developer-workflows/.codex-plugin/plugin.json) |
| **external-frontend-design** | 前端實作、視覺系統、UI 與動畫技能。 | 19 個 | [plugin.json](./plugins/external-frontend-design/.codex-plugin/plugin.json) |
| **external-video-design** | 影片、Remotion、品牌與資料視覺化技能。 | 10 個 | [plugin.json](./plugins/external-video-design/.codex-plugin/plugin.json) |
| **external-career-health** | 職涯、生產力與健康教育技能;非醫療照護。 | 12 個 | [plugin.json](./plugins/external-career-health/.codex-plugin/plugin.json) |
| **firstsun-external** (marketplace) | 供 ChatGPT/Codex 與 Claude Code 共用匯入的第三方 skills marketplace。 | 86 個 | [.agents/plugins/marketplace.json](./.agents/plugins/marketplace.json) ・ [.claude-plugin/marketplace.json](./.claude-plugin/marketplace.json) |

### 🛠️ Build

| Plugin | 說明 | 內含技能 | 檔案連結 |
| :--- | :--- | :--- | :--- |
| **agent-toolkit** | Agent 框架、提示技巧與結構化推理等第三方技能。 | 13 個 | [plugin.json](./plugins/agent-toolkit/.codex-plugin/plugin.json)(同目錄下另有 [.claude-plugin/plugin.json](./plugins/agent-toolkit/.claude-plugin/plugin.json)) |
| **software-delivery** | 程式品質、DevOps、安全、i18n 與後端工程等第三方技能。 | 16 個 | [plugin.json](./plugins/software-delivery/.codex-plugin/plugin.json)(同目錄下另有 [.claude-plugin/plugin.json](./plugins/software-delivery/.claude-plugin/plugin.json)) |
| **spec-driven-development** | OpenSpec 規格驅動工作流相關第三方技能。 | 16 個 | [plugin.json](./plugins/spec-driven-development/.codex-plugin/plugin.json)(同目錄下另有 [.claude-plugin/plugin.json](./plugins/spec-driven-development/.claude-plugin/plugin.json)) |

### 🎨 Design

| Plugin | 說明 | 內含技能 | 檔案連結 |
| :--- | :--- | :--- | :--- |
| **frontend-product-design** | 前端工程、UI 系統、視覺美感與產品設計等第三方技能。 | 19 個 | [plugin.json](./plugins/frontend-product-design/.codex-plugin/plugin.json)(同目錄下另有 [.claude-plugin/plugin.json](./plugins/frontend-product-design/.claude-plugin/plugin.json)) |
| **visual-content** | 影片、圖像等視覺內容製作第三方技能。 | 10 個 | [plugin.json](./plugins/visual-content/.codex-plugin/plugin.json)(同目錄下另有 [.claude-plugin/plugin.json](./plugins/visual-content/.claude-plugin/plugin.json)) |

### 🌱 Grow

| Plugin | 說明 | 內含技能 | 檔案連結 |
| :--- | :--- | :--- | :--- |
| **career-productivity** | 職涯發展、求職與生活生產力等第三方技能。 | 5 個 | [plugin.json](./plugins/career-productivity/.codex-plugin/plugin.json)(同目錄下另有 [.claude-plugin/plugin.json](./plugins/career-productivity/.claude-plugin/plugin.json)) |
| **health-wellness** | 健身、營養與健康教育等第三方技能;非醫療照護。 | 7 個 | [plugin.json](./plugins/health-wellness/.codex-plugin/plugin.json)(同目錄下另有 [.claude-plugin/plugin.json](./plugins/health-wellness/.claude-plugin/plugin.json)) |

---
*最後更新日期: 2026-07-17*
Loading