Kinema's Skill Making Pipeline

v1.4.0

KinemaClaw Skill development and publishing specification. Defines the standard process for skill development, version management, and publishing. All skills...

0· 199·1 current·1 all-time
byKinema.@leeshunee

Install

OpenClaw Prompt Flow

Install with OpenClaw

Best for remote or guided setup. Copy the exact prompt, then paste it into OpenClaw for leeshunee/kinema-skill-making-pipeline.

Previewing Install & Setup.
Prompt PreviewInstall & Setup
Install the skill "Kinema's Skill Making Pipeline" (leeshunee/kinema-skill-making-pipeline) from ClawHub.
Skill page: https://clawhub.ai/leeshunee/kinema-skill-making-pipeline
Keep the work scoped to this skill only.
After install, inspect the skill metadata and help me finish setup.
Use only the metadata you can verify from ClawHub; do not invent missing requirements.
Ask before making any broader environment changes.

Command Line

CLI Commands

Use the direct CLI path if you want to install manually and keep every step visible.

OpenClaw CLI

Bare skill slug

openclaw skills install kinema-skill-making-pipeline

ClawHub CLI

Package manager switcher

npx clawhub@latest install kinema-skill-making-pipeline
Security Scan
VirusTotalVirusTotal
Benign
View report →
OpenClawOpenClaw
Benign
high confidence
Purpose & Capability
Name/description match the provided content: the files and SKILL.md contain a skill development and publishing specification. All instructions (git tag, GitHub release, clawhub publish) are coherent with the stated purpose.
Instruction Scope
The SKILL.md is largely procedural guidance. One fallback Node.js snippet reads a local ClawHub config file (~/.config/clawhub/config.json) to obtain a token and uploads repository files to https://clawhub.ai/api/v1/skills. That behavior is expected for a publish fallback but introduces a sensitive action (reading a local token file and transmitting files to ClawHub) which deployers should review before running.
Install Mechanism
No install spec or code files are provided; this is instruction-only which minimizes installation risk.
Credentials
The skill declares no required env vars or credentials, but the Node fallback implicitly uses process.env.HOME to locate ~/.config/clawhub/config.json and extract a token. This is proportional to the publishing task but should be explicitly acknowledged since it accesses a local credential file not declared in metadata.
Persistence & Privilege
always is false, no persistent/background privileges requested, and the skill does not attempt to modify agent/system-wide configs. Autonomous model invocation is allowed (default) but that is normal and not problematic here.
Assessment
This skill is a documentation/specification for developing and publishing skills and is internally consistent. Before using the provided Node.js fallback: (1) inspect the snippet — it reads ~/.config/clawhub/config.json for a token and uploads files to https://clawhub.ai; only run it if you trust the target ClawHub account and you intend to publish. (2) When publishing, ensure the file list excludes any secrets (config files, .env, private keys). (3) Prefer using the official cli (clawhub publish) or an explicit, audited environment variable for tokens rather than running one-off scripts that read config files. (4) If you need higher assurance, request the canonical publishing CLI or an audited automation script from the repository owner.

Like a lobster shell, security has layers — review code before you run it.

latestvk97dsqp3jw3rgv62we0pbqd9bs841xhv
199downloads
0stars
11versions
Updated 3w ago
v1.4.0
MIT-0

Kinema's Skill Making Pipeline | Kinema Skill 开发与发布规范

本规范定义了 KinemaClaw ecosystem 中 skill 的开发、版本管理、发布的标准化流程。

Core Principles | 核心原则

  1. Git First - All modifications must be managed in Git repository | 所有修改必须在 Git 仓库中管理
  2. Atomic Commits - Each commit must be a meaningful independent change | 每次 commit 必须是有意义的独立变更
  3. Versioned Releases - Must create Git tag before publishing | 发布前必须打 Git tag
  4. No In-Place Publishing - Never publish raw skills from /app/skills/ | 禁止发布 /app/skills/ 中的原位 skill
  5. Onboarding Required - Every skill must have installation/configuration guide | 每个 skill 必须有安装/配置引导
  6. Four-Way Sync - After release, sync versions across: projects repo, local skills, GitHub Release, ClawHub | 发版后同步四地版本:projects 仓库、本地 skills、GitHub Release、ClawHub

Development Workflow | 开发流程

1. Create Skill Repository | 创建 Skill 仓库

projects/<skill-name>/
├── SKILL.md              # Required: skill definition
├── scripts/              # Optional: automation scripts
├── references/           # Optional: reference materials
└── other project files

2. Development Guidelines | 开发规范

  • Atomic commits: One thing per commit | 每个 commit 只做一件事
  • Commit frequently: Commit after completing each feature/fix | 完成一个功能/修复一个问题后立即 commit
  • Descriptive messages: Use meaningful commit messages | 使用描述性的 commit message
# Good | 好
git commit -m "Add install command to searxng-search CLI"

# Bad | 不好
git commit -m "update" 
git commit -m "fix stuff"

3. Release Process | 发布流程

cd projects/<skill-name>

# 1. Ensure all changes are committed | 确保所有修改已 commit
git status

# 2. Create version tag (Semantic Versioning) | 打版本 tag (语义化版本)
git tag -a v1.2.0 -m "Release v1.2.0: Add onboarding"

# 3. Push tag to GitHub | 推送 tag 到 GitHub
git push origin v1.2.0

# 4. Create release on GitHub | 在 GitHub 仓库发布
# Settings → Releases → Create new release

# 5. Publish to ClawHub | 推送到 ClawHub
clawhub publish . --slug <skill-name> --name "<displayName>" --version 1.2.0 --changelog "description of changes"

Fallback: 如果 clawhub publish 返回 502 错误,可通过 Node.js 直接调用 ClawHub API 发布。详见附录。

node -e "
const fs = require('fs');
const path = require('path');
const TOKEN = JSON.parse(fs.readFileSync(process.env.HOME + '/.config/clawhub/config.json','utf8')).token;

const folder = '/path/to/<skill-name>';
const files = [];
function walk(dir, prefix='') {
  for (const f of fs.readdirSync(dir, {withFileTypes: true})) {
    const full = path.join(dir, f.name);
    const rel = prefix ? prefix + '/' + f.name : f.name;
    if (f.name === '.git' || f.name === 'node_modules') continue;
    if (f.isDirectory()) walk(full, rel);
    else if (rel.split('.').pop().match(/^(md|json|yaml|yml|js|ts|py|sh|txt|toml|css|html|svg|xml|csv|env|ini|cfg)$/)) {
      files.push({ relPath: rel, bytes: fs.readFileSync(full) });
    }
  }
}
walk(folder);

const form = new FormData();
form.set('payload', JSON.stringify({
  slug: '<skill-name>',
  displayName: '<displayName>',
  version: '1.2.0',
  changelog: 'description of changes',
  acceptLicenseTerms: true,
  tags: ['latest']
}));
for (const f of files) form.append('files', new Blob([f.bytes], {type: 'text/plain'}), f.relPath);

fetch('https://clawhub.ai/api/v1/skills', {
  method: 'POST',
  headers: { 'Authorization': 'Bearer ' + TOKEN, 'Accept': 'application/json' },
  body: form
}).then(async r => {
  const data = await r.json();
  console.log(r.ok ? 'OK ' + data.versionId : JSON.stringify(data));
});
"

ClawHub 发版要求:

  • --name 必须使用 SKILL.md 中的 displayName
  • --version 必须与 Git tag 版本号一致
  • --changelog 必须包含本次变更说明
  • 发布前确保 GitHub Release 已创建

4. Four-Way Version Sync | 四地版本同步

完成发版后,必须确保以下四个位置的版本一致:

LocationPath/URLAction
projects 仓库~/.openclaw/workspace/projects/<skill-name>/Git tag + SKILL.md version
本地 skills~/.openclaw/workspace/skills/<skill-name>/clawhub update 或手动同步
GitHub Releasehttps://github.com/<org>/<repo>/releasesgh release create
ClawHubhttps://clawhub.aiclawhub publish

发版后自动同步本地 skills:

# 发版完成后,更新本地安装的 skill
clawhub update <skill-name>

# 或手动同步
cp projects/<skill-name>/SKILL.md skills/<skill-name>/SKILL.md
cp -r projects/<skill-name>/scripts skills/<skill-name>/scripts/

完整发版检查清单:

  • 1. projects 仓库 SKILL.md 版本号已更新
  • 2. Git commit 并打 tag (vX.Y.Z)
  • 3. Push 到 GitHub (git push origin master --tags)
  • 4. 创建 GitHub Release (gh release create vX.Y.Z)
  • 5. 发布到 ClawHub (clawhub publish 或 API fallback)
  • 6. 更新本地 skills (clawhub update <skill-name> 或手动同步)
  • 7. 验证四地版本一致

Version Numbering | 版本号规则

Follow Semantic Versioning: | 遵循语义化版本 (Semantic Versioning):

  • MAJOR: Incompatible API changes | 不兼容的 API 变更
  • MINOR: Backward-compatible new features | 向后兼容的新功能
  • PATCH: Backward-compatible bug fixes | 向后兼容的 bug 修复
v1.0.0 → First release | 首次发布
v1.1.0 → New features | 新功能
v1.1.1 → Bug fixes | bug 修复
v2.0.0 → Breaking changes | 重大变更

Required Elements | 必须要素

Each skill must include: | 每个 skill 必须包含:

1. SKILL.md

Must include: | 包含:

  • name: skill name | skill 名称
  • displayName: human-readable name with feature description | 人类可读名称(含功能描述)
  • version: semantic version number | 语义化版本号
  • description: functionality description and trigger condition | 功能描述和触发条件
  • Complete usage instructions | 完整使用说明

作者声明规范:

SKILL.md 正文开头(标题之后)必须声明作者信息:

# Skill Name

- **Author**: [AuthorName](https://github.com/authorname)
- **Organization**: [OrgName](https://github.com/orgname)
- **GitHub**: https://github.com/orgname/skill-name
字段说明
Author作者 GitHub 个人主页链接
Organization所属组织 GitHub 主页链接
GitHubSkill 源码仓库链接

displayName 格式规范:

  • 统一格式: `Name (Feature Description)`

2. Onboarding | Onboarding

ONBOARDING.md 是必选文件。 SKILL.md 不包含安装/配置细节,仅引用 ONBOARDING.md。

2.1 SKILL.md 中的 Onboarding 引导

SKILL.md 文件开头(# 标题之后、Environment Variables 之前)必须包含以下引导块:

## ⚠️ Before First Use | 首次使用必读

**首次使用此 skill 前,必须先读取 [ONBOARDING.md](ONBOARDING.md) 完成环境配置。**

- **首次配置** → 读取 ONBOARDING.md 完成全部步骤
- **环境不可用**(命令不存在、依赖缺失、连接失败)→ 读取 ONBOARDING.md Troubleshooting 排查修复
- **配置完成后** → 直接使用下方 Run Commands

Agent 读取 SKILL.md 时会看到此块,根据场景决定是否继续读取 ONBOARDING.md。

2.2 ONBOARDING.md 结构规范

ONBOARDING.md 是给 AI Agent 执行的引导文档,必须按以下结构编写:

# <Skill Name> Onboarding

> 本文档指导 AI Agent 完成首次环境配置。按顺序执行,遇到问题时参考 Troubleshooting。

## Prerequisites | 前置条件
(列出运行此 skill 所需的系统和软件条件)

## Step 1: <步骤名称>
### 检测
(检测命令 + 期望输出,agent 据此判断是否需要执行本步骤)
### 安装
(多种降级方案,按优先级排列,agent 逐条尝试)
### 验证
(验证命令 + 期望输出,确认本步骤完成)

## Step 2: <步骤名称>
...

## Step N: <验证连接或最终检查>

## Troubleshooting | 故障排除
(按错误信息分类的排查表,每行包含:错误 → 原因 → 解决方案)

编写规则:

规则说明
按顺序执行Steps 之间有依赖关系,不可跳步
每步可独立验证每个 Step 必须有验证命令 + 期望输出
降级策略每步提供多种方案(至少 2 种),适配不同环境
不硬编码路径<skill_dir> 等占位符,agent 运行时替换
需要用户输入时明确标注如"必须询问用户" "用户提供",不猜测
Troubleshooting 覆盖常见错误列出所有已知失败场景和解决方案

2.3 setup.reference.sh(可选)

对于安装配置较复杂的 skill,可提供 scripts/setup.reference.sh 作为参考范式

注意

  • 文件名必须包含 reference,明确标识为参考文件而非可执行脚本
  • Agent 不应直接执行此文件,而是读取其内容,根据当前环境适配执行
  • 内容是安装流程的模板代码,展示检测→安装→验证的逻辑模式
# scripts/setup.reference.sh - SETUP REFERENCE (DO NOT EXECUTE DIRECTLY)
# Agent should read this file and adapt commands to current environment.

# Step 1: Check Python
python3 --version

# Step 2: Install dependencies (try in order)
uv pip install --system requests 2>/dev/null || \
pip3 install requests 2>/dev/null || \
sudo pip3 install --break-system-packages requests

# Step 3: Create symlink
sudo ln -sf <skill_dir>/scripts/tool.py /usr/local/bin/tool

# Step 4: Verify
tool --help

2.4 Onboarding 触发场景

场景Agent 行为
首次使用读取 ONBOARDING.md,按 Step 1-N 顺序执行
环境不可用读取 ONBOARDING.md Troubleshooting,按错误信息匹配解决方案
依赖缺失跳转到对应 Step 重新执行安装
版本升级后重新执行 ONBOARDING 全流程(新版本可能引入新依赖)

3. Prohibited Content | 禁止内容

Skills must NOT contain: | skill 中禁止包含:

  • Personal websites, domains | 个人网站、域名
  • Passwords, accounts, tokens | 密码、账号、Token
  • Personal email, phone | 个人邮箱、电话
  • Real names, identity information | 真实姓名、身份信息

GitHub Repository Guidelines | GitHub 仓库规范

  • Default to Private repositories | 默认创建 Private 仓库
  • Use meaningful repository names | 使用有意义的仓库名称
  • Keep README.md in sync with SKILL.md | 保持 README.md 与 SKILL.md 一致

Directory Structure | 目录结构

<skill-name>/                     # Git repository | Git 仓库
├── SKILL.md                      # Required: skill definition | 必需
├── ONBOARDING.md                 # Required: onboarding guide | 必需(见 Onboarding 章节)
├── README.md                     # Recommended: project readme | 推荐
├── LICENSE                       # Recommended: license | 推荐
├── scripts/                      # Optional: scripts | 可选
│   └── setup.reference.sh        # Optional: setup reference | 可选(见 Onboarding 章节)
└── references/                   # Optional: reference materials | 可选

Automation Script Example | 自动化脚本示例

#!/bin/bash
# skill-publish.sh - Publish skill to GitHub + ClawHub

SKILL_NAME=$1
VERSION=$2

if [ -z "$SKILL_NAME" ] || [ -z "$VERSION" ]; then
    echo "Usage: $0 <skill-name> <version>"
    exit 1
fi

cd projects/$SKILL_NAME

# Check for uncommitted changes | 检查是否有未提交的修改
if ! git diff --quiet; then
    echo "Error: Commit all changes first | 先提交所有修改"
    exit 1
fi

# Create tag | 打 tag
git tag -a v$VERSION -m "Release v$VERSION"

# Push | 推送
git push origin master
git push origin v$VERSION

# Publish to ClawHub | 发布到 ClawHub
clawhub publish . --slug $SKILL_NAME --version $VERSION

Related Documentation | 相关文档

Appendix: ClawHub API Fallback | 附录: ClawHub API 备用发布

clawhub publish 返回 502 错误时,可通过 Node.js 直接调用 ClawHub API 发布。

node -e "
const fs = require('fs');
const path = require('path');
const TOKEN = JSON.parse(fs.readFileSync(process.env.HOME + '/.config/clawhub/config.json','utf8')).token;

const folder = '/path/to/<skill-name>';
const files = [];
function walk(dir, prefix='') {
  for (const f of fs.readdirSync(dir, {withFileTypes: true})) {
    const full = path.join(dir, f.name);
    const rel = prefix ? prefix + '/' + f.name : f.name;
    if (f.name === '.git' || f.name === 'node_modules') continue;
    if (f.isDirectory()) walk(full, rel);
    else if (rel.split('.').pop().match(/^(md|json|yaml|yml|js|ts|py|sh|txt|toml|css|html|svg|xml|csv|env|ini|cfg)$/)) {
      files.push({ relPath: rel, bytes: fs.readFileSync(full) });
    }
  }
}
walk(folder);

const form = new FormData();
form.set('payload', JSON.stringify({
  slug: '<skill-name>',
  displayName: '<displayName>',
  version: '1.2.0',
  changelog: 'description of changes',
  acceptLicenseTerms: true,
  tags: ['latest']
}));
for (const f of files) form.append('files', new Blob([f.bytes], {type: 'text/plain'}), f.relPath);

fetch('https://clawhub.ai/api/v1/skills', {
  method: 'POST',
  headers: { 'Authorization': 'Bearer ' + TOKEN, 'Accept': 'application/json' },
  body: form
}).then(async r => {
  const data = await r.json();
  console.log(r.ok ? 'OK ' + data.versionId : JSON.stringify(data));
});
"

Comments

Loading comments...