feat: add npm package distribution, AGENTS.md, and Codex support (#29)

- Add package.json for npm publishing as `acedatacloud-skills`
- Add CLI tool (`npx acedatacloud-skills install`) for easy skill installation
- Add AGENTS.md for OpenAI Codex compatibility
- Add npm-publish.yml workflow (release-triggered)
- Add .npmignore for lean package distribution
- Update README with npm install instructions and Codex platform section

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Ace Data Cloud Dev
2026-04-05 19:28:48 +08:00
committed by GitHub
parent 295340e69e
commit 759ba8a647
8 changed files with 285 additions and 1 deletions
+40
View File
@@ -0,0 +1,40 @@
name: Publish to npm
on:
release:
types: [published]
workflow_dispatch:
inputs:
version:
description: "Version to publish (e.g., 1.0.1)"
required: false
permissions:
contents: read
jobs:
publish:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 20
registry-url: https://registry.npmjs.org
- name: Set version from release tag
if: github.event_name == 'release'
run: |
VERSION="${GITHUB_REF_NAME#v}"
npm version "$VERSION" --no-git-tag-version --allow-same-version
- name: Set version from input
if: github.event_name == 'workflow_dispatch' && github.event.inputs.version
run: |
npm version "${{ github.event.inputs.version }}" --no-git-tag-version --allow-same-version
- name: Publish
run: npm publish --access public
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
+7
View File
@@ -0,0 +1,7 @@
.github/
.agents/
.claude-plugin/
template/
.gitignore
*.yml
*.yaml
+48
View File
@@ -0,0 +1,48 @@
# AceDataCloud Agent Skills
This repository contains Agent Skills for [AceDataCloud](https://platform.acedata.cloud) AI services.
## Available Skills
Skills are located in the `skills/` directory (also mirrored to `.agents/skills/` and `.github/skills/`).
### AI Music & Audio
- **suno-music** — Generate AI music, lyrics, covers, and vocal extraction with Suno
- **producer-music** — Generate music, covers, extend tracks, swap vocals with Producer
- **fish-audio** — Text-to-speech and voice synthesis with Fish Audio
### AI Image Generation
- **midjourney-image** — Generate, edit, blend, describe, and upscale images with Midjourney
- **flux-image** — Generate and edit images with Flux (Black Forest Labs)
- **seedream-image** — Generate and edit images with ByteDance Seedream
- **nano-banana-image** — Generate and edit images with Google Gemini (NanoBanana)
### AI Video Generation
- **luma-video** — Generate videos with Luma Dream Machine
- **sora-video** — Generate videos with OpenAI Sora
- **veo-video** — Generate videos with Google Veo (native audio)
- **kling-video** — Generate videos with Kuaishou Kling (motion control)
- **hailuo-video** — Generate videos with Hailuo / MiniMax
- **seedance-video** — Generate dance/motion videos with ByteDance Seedance
- **wan-video** — Generate videos with Alibaba Wan
### AI Chat & Tools
- **ai-chat** — Unified LLM gateway — GPT, Claude, Gemini, DeepSeek, Grok (50+ models)
- **google-search** — Search the web, images, news, maps, places, and videos via Google
- **face-transform** — Face analysis, beautification, age/gender transform, swap, cartoon
- **short-url** — Create and manage short URLs
- **acedatacloud-api** — API usage guide — authentication, SDKs, error handling
## Authentication
All skills require an API token:
```bash
export ACEDATACLOUD_API_TOKEN="your-token-here"
```
Get your token at [platform.acedata.cloud](https://platform.acedata.cloud).
## Paired MCP Servers
Each skill has a corresponding MCP server for tool-use capabilities. See the main [README](README.md) for the full mapping.
+32 -1
View File
@@ -3,13 +3,14 @@
<p align="center">
<a href="https://agentskills.io"><img src="https://img.shields.io/badge/Agent_Skills-agentskills.io-blue" alt="Agent Skills"></a>
<a href="https://platform.acedata.cloud"><img src="https://img.shields.io/badge/API-platform.acedata.cloud-green" alt="Platform"></a>
<a href="https://www.npmjs.com/package/acedatacloud-skills"><img src="https://img.shields.io/npm/v/acedatacloud-skills.svg" alt="npm"></a>
<a href="https://github.com/AceDataCloud/Skills/actions"><img src="https://github.com/AceDataCloud/Skills/actions/workflows/validate.yml/badge.svg" alt="Validate"></a>
<a href="LICENSE"><img src="https://img.shields.io/badge/license-Apache--2.0-orange" alt="License"></a>
</p>
[Agent Skills](https://agentskills.io/) for [AceDataCloud](https://platform.acedata.cloud) AI services — music, image, video generation, LLM chat, web search, and more.
Compatible with **15+ AI coding agents**: Claude Code, GitHub Copilot, Gemini CLI, OpenHands, Roo Code, TRAE, Goose, Mistral Vibe, and all [agentskills.io](https://agentskills.io/)-compatible tools.
Compatible with **15+ AI coding agents**: Claude Code, GitHub Copilot, Gemini CLI, OpenAI Codex, OpenHands, Roo Code, TRAE, Goose, Mistral Vibe, and all [agentskills.io](https://agentskills.io/)-compatible tools.
## Available Skills (18)
@@ -63,6 +64,21 @@ Get your API token at [platform.acedata.cloud](https://platform.acedata.cloud):
export ACEDATACLOUD_API_TOKEN="your-token-here"
```
## Quick Install (npm)
```bash
# Install globally
npm install -g acedatacloud-skills
# Copy all skills into your project
acedatacloud-skills install # → .agents/skills/ (universal)
acedatacloud-skills install --target .claude/skills # → .claude/skills/ (Claude Code)
acedatacloud-skills install --target .github/skills # → .github/skills/ (GitHub Copilot)
# Or use npx without installing
npx acedatacloud-skills install
```
## Usage by Platform
### Claude Code
@@ -133,6 +149,21 @@ cp -r Skills/skills/* .agents/skills/
gemini --add-dir ./Skills/skills
```
### OpenAI Codex
Codex supports the agentskills.io standard via `.agents/skills/` and `AGENTS.md`:
```bash
# Copy skills into your project
mkdir -p .agents/skills
cp -r Skills/skills/* .agents/skills/
# AGENTS.md is already included in this repo for Codex discovery
cp Skills/AGENTS.md .
```
Codex auto-discovers skills from `.agents/skills/` and reads `AGENTS.md` for context.
### OpenHands / OpenDevin
```bash
Executable
+75
View File
@@ -0,0 +1,75 @@
#!/usr/bin/env node
import { existsSync, mkdirSync, cpSync, readdirSync } from "fs";
import { resolve, dirname } from "path";
import { fileURLToPath } from "url";
const __dirname = dirname(fileURLToPath(import.meta.url));
const skillsSrc = resolve(__dirname, "..", "skills");
const args = process.argv.slice(2);
const command = args[0];
function printUsage() {
console.log(`
Usage: acedatacloud-skills <command> [options]
Commands:
install [--target <dir>] Copy skills into your project
list List all available skills
Options:
--target <dir> Target directory (default: .agents/skills)
Examples:
acedatacloud-skills install # → .agents/skills/
acedatacloud-skills install --target .claude/skills # → .claude/skills/
acedatacloud-skills install --target .github/skills # → .github/skills/
acedatacloud-skills list
`);
}
function listSkills() {
const skills = readdirSync(skillsSrc, { withFileTypes: true })
.filter((d) => d.isDirectory())
.map((d) => d.name)
.sort();
console.log(`Available skills (${skills.length}):\n`);
skills.forEach((s) => console.log(` - ${s}`));
}
function installSkills(target) {
const dest = resolve(process.cwd(), target);
mkdirSync(dest, { recursive: true });
const skills = readdirSync(skillsSrc, { withFileTypes: true })
.filter((d) => d.isDirectory())
.map((d) => d.name);
let count = 0;
for (const skill of skills) {
const src = resolve(skillsSrc, skill);
const dst = resolve(dest, skill);
cpSync(src, dst, { recursive: true });
count++;
}
console.log(`Installed ${count} skills to ${dest}`);
}
if (!command || command === "--help" || command === "-h") {
printUsage();
} else if (command === "list") {
listSkills();
} else if (command === "install") {
const targetIdx = args.indexOf("--target");
const target = targetIdx !== -1 ? args[targetIdx + 1] : ".agents/skills";
if (!target) {
console.error("Error: --target requires a directory path");
process.exit(1);
}
installSkills(target);
} else {
console.error(`Unknown command: ${command}`);
printUsage();
process.exit(1);
}
+15
View File
@@ -0,0 +1,15 @@
import { existsSync } from "fs";
import { resolve, dirname } from "path";
import { fileURLToPath } from "url";
const __dirname = dirname(fileURLToPath(import.meta.url));
// Only show install hint during explicit npm install (not CI/scripts)
if (process.env.npm_config_global !== "true" && !process.env.CI) {
console.log(
"\n📦 AceDataCloud Skills installed. To copy skills into your project:\n"
);
console.log(" npx acedatacloud-skills install # → .agents/skills/");
console.log(" npx acedatacloud-skills install --target .claude/skills # → .claude/skills/");
console.log(" npx acedatacloud-skills install --target .github/skills # → .github/skills/\n");
}
+13
View File
@@ -0,0 +1,13 @@
import { readdirSync } from "fs";
import { resolve, dirname } from "path";
import { fileURLToPath } from "url";
const __dirname = dirname(fileURLToPath(import.meta.url));
const skillsDir = resolve(__dirname, "skills");
export const skills = readdirSync(skillsDir, { withFileTypes: true })
.filter((d) => d.isDirectory())
.map((d) => d.name)
.sort();
export const skillsPath = skillsDir;
+55
View File
@@ -0,0 +1,55 @@
{
"name": "acedatacloud-skills",
"version": "1.0.0",
"description": "Agent Skills for AceDataCloud AI services — music, image, video generation, LLM chat, web search. Compatible with Claude Code, GitHub Copilot, Gemini CLI, OpenAI Codex, and 30+ AI coding agents.",
"keywords": [
"agent-skills",
"agentskills",
"mcp",
"claude-code",
"github-copilot",
"gemini-cli",
"openai-codex",
"ai-tools",
"suno",
"midjourney",
"flux",
"luma",
"sora",
"veo",
"ai-music",
"ai-image",
"ai-video",
"acedata-cloud"
],
"homepage": "https://github.com/AceDataCloud/Skills",
"bugs": {
"url": "https://github.com/AceDataCloud/Skills/issues"
},
"repository": {
"type": "git",
"url": "git+https://github.com/AceDataCloud/Skills.git"
},
"license": "Apache-2.0",
"author": {
"name": "Ace Data Cloud",
"email": "dev@acedata.cloud",
"url": "https://platform.acedata.cloud"
},
"type": "module",
"main": "index.js",
"bin": {
"acedatacloud-skills": "bin/cli.js"
},
"files": [
"skills/",
"bin/",
"index.js",
"AGENTS.md",
"README.md",
"LICENSE"
],
"scripts": {
"postinstall": "node bin/postinstall.js"
}
}