reskill 1.18.1 → 1.19.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +35 -24
- package/README.zh-CN.md +35 -24
- package/dist/cli/commands/group.d.ts.map +1 -1
- package/dist/cli/index.js +24 -19
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -65,22 +65,22 @@ npx reskill@latest <command> # Or use npx directly
|
|
|
65
65
|
|
|
66
66
|
### Common Options
|
|
67
67
|
|
|
68
|
-
| Option | Commands
|
|
69
|
-
| ------------------------- |
|
|
70
|
-
| `--no-save` | `install`
|
|
71
|
-
| `-g, --global` | `install`, `uninstall`, `list`
|
|
72
|
-
| `-a, --agent <agents...>` | `install`
|
|
73
|
-
| `--mode <mode>` | `install`
|
|
74
|
-
| `--all` | `install`
|
|
75
|
-
| `-y, --yes` | `install`, `uninstall`, `publish`
|
|
76
|
-
| `-f, --force` | `install`
|
|
77
|
-
| `-s, --skill <names...>` | `install`
|
|
78
|
-
| `--list` | `install`
|
|
79
|
-
| `-t, --token <token>` | `install`
|
|
80
|
-
| `-r, --registry <url>` | `install`, `group`, `publish`
|
|
81
|
-
| `-j, --json` | `list`, `info`, `outdated`, `doctor`, `group`
|
|
82
|
-
| `-l, --limit <n>` | `find`
|
|
83
|
-
| `--skip-network` | `doctor`
|
|
68
|
+
| Option | Commands | Description |
|
|
69
|
+
| ------------------------- | ------------------------------------------------------------- | ------------------------------------------------------------- |
|
|
70
|
+
| `--no-save` | `install` | Install without saving to `skills.json` (for personal skills) |
|
|
71
|
+
| `-g, --global` | `install`, `uninstall`, `list` | Install/manage skills globally (user directory) |
|
|
72
|
+
| `-a, --agent <agents...>` | `install` | Specify target agents (e.g., `cursor`, `claude-code`) |
|
|
73
|
+
| `--mode <mode>` | `install` | Installation mode: `symlink` (default) or `copy` |
|
|
74
|
+
| `--all` | `install` | Install to all agents |
|
|
75
|
+
| `-y, --yes` | `install`, `uninstall`, `publish` | Skip confirmation prompts |
|
|
76
|
+
| `-f, --force` | `install` | Force reinstall even if already installed |
|
|
77
|
+
| `-s, --skill <names...>` | `install` | Select specific skill(s) by name from a multi-skill repo |
|
|
78
|
+
| `--list` | `install` | List available skills in the repository without installing |
|
|
79
|
+
| `-t, --token <token>` | `install`, `find`, `group`, `publish`, `login` | Auth token for registry API requests (for CI/CD) |
|
|
80
|
+
| `-r, --registry <url>` | `install`, `find`, `group`, `publish`, `login`, `logout`, `whoami` | Registry URL override for registry-enabled commands |
|
|
81
|
+
| `-j, --json` | `list`, `info`, `outdated`, `doctor`, `group`, `find` | Output as JSON |
|
|
82
|
+
| `-l, --limit <n>` | `find` | Maximum number of search results |
|
|
83
|
+
| `--skip-network` | `doctor` | Skip network connectivity checks |
|
|
84
84
|
|
|
85
85
|
Run `reskill <command> --help` for complete options and detailed usage.
|
|
86
86
|
|
|
@@ -222,14 +222,25 @@ git config --global url."https://gitlab-ci-token:${CI_JOB_TOKEN}@gitlab.company.
|
|
|
222
222
|
|
|
223
223
|
Skills are installed to `.skills/` by default and can be integrated with any agent:
|
|
224
224
|
|
|
225
|
-
| Agent | Path
|
|
226
|
-
| -------------- |
|
|
227
|
-
|
|
|
228
|
-
|
|
|
229
|
-
|
|
|
230
|
-
|
|
|
231
|
-
|
|
|
232
|
-
|
|
|
225
|
+
| Agent | Path |
|
|
226
|
+
| -------------- | ------------------ |
|
|
227
|
+
| Amp | `.agents/skills` |
|
|
228
|
+
| Antigravity | `.agent/skills` |
|
|
229
|
+
| Claude Code | `.claude/skills` |
|
|
230
|
+
| Clawdbot | `skills` |
|
|
231
|
+
| Codex | `.codex/skills` |
|
|
232
|
+
| Cursor | `.cursor/skills` |
|
|
233
|
+
| Droid | `.factory/skills` |
|
|
234
|
+
| Gemini CLI | `.gemini/skills` |
|
|
235
|
+
| GitHub Copilot | `.github/skills` |
|
|
236
|
+
| Goose | `.goose/skills` |
|
|
237
|
+
| Kilo Code | `.kilocode/skills` |
|
|
238
|
+
| Kiro CLI | `.kiro/skills` |
|
|
239
|
+
| Neovate | `.neovate/skills` |
|
|
240
|
+
| OpenCode | `.opencode/skills` |
|
|
241
|
+
| Roo Code | `.roo/skills` |
|
|
242
|
+
| Trae | `.trae/skills` |
|
|
243
|
+
| Windsurf | `.windsurf/skills` |
|
|
233
244
|
|
|
234
245
|
## Publishing Skills
|
|
235
246
|
|
package/README.zh-CN.md
CHANGED
|
@@ -65,22 +65,22 @@ npx reskill@latest <command> # 或直接使用 npx
|
|
|
65
65
|
|
|
66
66
|
### 常用选项
|
|
67
67
|
|
|
68
|
-
| 选项 | 适用命令
|
|
69
|
-
| ------------------------- |
|
|
70
|
-
| `--no-save` | `install`
|
|
71
|
-
| `-g, --global` | `install`, `uninstall`, `list`
|
|
72
|
-
| `-a, --agent <agents...>` | `install`
|
|
73
|
-
| `--mode <mode>` | `install`
|
|
74
|
-
| `--all` | `install`
|
|
75
|
-
| `-y, --yes` | `install`, `uninstall`, `publish`
|
|
76
|
-
| `-f, --force` | `install`
|
|
77
|
-
| `-s, --skill <names...>` | `install`
|
|
78
|
-
| `--list` | `install`
|
|
79
|
-
| `-t, --token <token>` | `install`
|
|
80
|
-
| `-r, --registry <url>` | `install`, `group`, `publish`
|
|
81
|
-
| `-j, --json` | `list`, `info`, `outdated`, `doctor`, `group`
|
|
82
|
-
| `-l, --limit <n>` | `find`
|
|
83
|
-
| `--skip-network` | `doctor`
|
|
68
|
+
| 选项 | 适用命令 | 说明 |
|
|
69
|
+
| ------------------------- | ------------------------------------------------------------- | -------------------------------------------- |
|
|
70
|
+
| `--no-save` | `install` | 安装时不保存到 `skills.json`(用于个人技能) |
|
|
71
|
+
| `-g, --global` | `install`, `uninstall`, `list` | 全局安装/管理技能(用户目录) |
|
|
72
|
+
| `-a, --agent <agents...>` | `install` | 指定目标 Agent(如 `cursor`, `claude-code`) |
|
|
73
|
+
| `--mode <mode>` | `install` | 安装模式:`symlink`(默认)或 `copy` |
|
|
74
|
+
| `--all` | `install` | 安装到所有 Agent |
|
|
75
|
+
| `-y, --yes` | `install`, `uninstall`, `publish` | 跳过确认提示 |
|
|
76
|
+
| `-f, --force` | `install` | 强制重新安装 |
|
|
77
|
+
| `-s, --skill <names...>` | `install` | 从多 skill 仓库中选择指定 skill |
|
|
78
|
+
| `--list` | `install` | 列出仓库中可用的 skills(不安装) |
|
|
79
|
+
| `-t, --token <token>` | `install`, `find`, `group`, `publish`, `login` | 认证令牌(用于 CI/CD 访问私有 skill) |
|
|
80
|
+
| `-r, --registry <url>` | `install`, `find`, `group`, `publish`, `login`, `logout`, `whoami` | 覆盖 registry URL(用于 registry 相关命令) |
|
|
81
|
+
| `-j, --json` | `list`, `info`, `outdated`, `doctor`, `group`, `find` | JSON 格式输出 |
|
|
82
|
+
| `-l, --limit <n>` | `find` | 限制搜索结果数量 |
|
|
83
|
+
| `--skip-network` | `doctor` | 跳过网络连通性检查 |
|
|
84
84
|
|
|
85
85
|
运行 `reskill <command> --help` 查看完整选项和详细用法。
|
|
86
86
|
|
|
@@ -222,14 +222,25 @@ git config --global url."https://gitlab-ci-token:${CI_JOB_TOKEN}@gitlab.company.
|
|
|
222
222
|
|
|
223
223
|
Skills 默认安装到 `.skills/`,可与任何 Agent 集成:
|
|
224
224
|
|
|
225
|
-
| Agent | 路径
|
|
226
|
-
| -------------- |
|
|
227
|
-
|
|
|
228
|
-
|
|
|
229
|
-
|
|
|
230
|
-
|
|
|
231
|
-
|
|
|
232
|
-
|
|
|
225
|
+
| Agent | 路径 |
|
|
226
|
+
| -------------- | ------------------ |
|
|
227
|
+
| Amp | `.agents/skills` |
|
|
228
|
+
| Antigravity | `.agent/skills` |
|
|
229
|
+
| Claude Code | `.claude/skills` |
|
|
230
|
+
| Clawdbot | `skills` |
|
|
231
|
+
| Codex | `.codex/skills` |
|
|
232
|
+
| Cursor | `.cursor/skills` |
|
|
233
|
+
| Droid | `.factory/skills` |
|
|
234
|
+
| Gemini CLI | `.gemini/skills` |
|
|
235
|
+
| GitHub Copilot | `.github/skills` |
|
|
236
|
+
| Goose | `.goose/skills` |
|
|
237
|
+
| Kilo Code | `.kilocode/skills` |
|
|
238
|
+
| Kiro CLI | `.kiro/skills` |
|
|
239
|
+
| Neovate | `.neovate/skills` |
|
|
240
|
+
| OpenCode | `.opencode/skills` |
|
|
241
|
+
| Roo Code | `.roo/skills` |
|
|
242
|
+
| Trae | `.trae/skills` |
|
|
243
|
+
| Windsurf | `.windsurf/skills` |
|
|
233
244
|
|
|
234
245
|
## 发布 Skills
|
|
235
246
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"group.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/group.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"group.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/group.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA0fpC,eAAO,MAAM,YAAY,SAA0D,CAAC;AAyCpF,eAAe,YAAY,CAAC"}
|
package/dist/cli/index.js
CHANGED
|
@@ -6717,13 +6717,18 @@ function assertValidGroupPath(path) {
|
|
|
6717
6717
|
// ============================================================================
|
|
6718
6718
|
// Client Factory
|
|
6719
6719
|
// ============================================================================
|
|
6720
|
-
function createClient(registry) {
|
|
6720
|
+
function createClient(registry, cliToken) {
|
|
6721
|
+
// --token flag takes highest priority
|
|
6722
|
+
if (cliToken) return new RegistryClient({
|
|
6723
|
+
registry,
|
|
6724
|
+
token: cliToken
|
|
6725
|
+
});
|
|
6721
6726
|
const authManager = new AuthManager();
|
|
6722
6727
|
const token = authManager.getToken(registry);
|
|
6723
6728
|
if (!token) {
|
|
6724
6729
|
logger_logger.error('Authentication required');
|
|
6725
6730
|
logger_logger.newline();
|
|
6726
|
-
logger_logger.log("Run 'reskill login' to authenticate
|
|
6731
|
+
logger_logger.log("Run 'reskill login' to authenticate, or pass --token <token>.");
|
|
6727
6732
|
process.exit(1);
|
|
6728
6733
|
}
|
|
6729
6734
|
return new RegistryClient({
|
|
@@ -6821,7 +6826,7 @@ function displayMemberList(members, groupPath, json) {
|
|
|
6821
6826
|
// ============================================================================
|
|
6822
6827
|
async function listAction(options) {
|
|
6823
6828
|
const registry = resolveRegistry(options.registry);
|
|
6824
|
-
const client = createClient(registry);
|
|
6829
|
+
const client = createClient(registry, options.token);
|
|
6825
6830
|
try {
|
|
6826
6831
|
const groups = await client.listGroups({
|
|
6827
6832
|
flat: Boolean(options.tree)
|
|
@@ -6848,7 +6853,7 @@ async function createAction(name, options) {
|
|
|
6848
6853
|
if (options.parent) {
|
|
6849
6854
|
const normalizedParent = normalizeGroupPath(options.parent);
|
|
6850
6855
|
assertValidGroupPath(normalizedParent);
|
|
6851
|
-
client = createClient(registry);
|
|
6856
|
+
client = createClient(registry, options.token);
|
|
6852
6857
|
try {
|
|
6853
6858
|
const parentGroup = await client.resolveGroup(normalizedParent);
|
|
6854
6859
|
parentId = parentGroup.id;
|
|
@@ -6859,7 +6864,7 @@ async function createAction(name, options) {
|
|
|
6859
6864
|
}
|
|
6860
6865
|
}
|
|
6861
6866
|
try {
|
|
6862
|
-
const ensuredClient = client ?? createClient(registry);
|
|
6867
|
+
const ensuredClient = client ?? createClient(registry, options.token);
|
|
6863
6868
|
const group = await ensuredClient.createGroup({
|
|
6864
6869
|
name,
|
|
6865
6870
|
slug,
|
|
@@ -6884,7 +6889,7 @@ async function infoAction(groupPath, options) {
|
|
|
6884
6889
|
const normalized = normalizeGroupPath(groupPath);
|
|
6885
6890
|
assertValidGroupPath(normalized);
|
|
6886
6891
|
const registry = resolveRegistry(options.registry);
|
|
6887
|
-
const client = createClient(registry);
|
|
6892
|
+
const client = createClient(registry, options.token);
|
|
6888
6893
|
try {
|
|
6889
6894
|
const detail = await client.resolveGroup(normalized);
|
|
6890
6895
|
displayGroupDetail(detail, options.json || false);
|
|
@@ -6900,7 +6905,7 @@ async function deleteAction(groupPath, options) {
|
|
|
6900
6905
|
const normalized = normalizeGroupPath(groupPath);
|
|
6901
6906
|
assertValidGroupPath(normalized);
|
|
6902
6907
|
const registry = resolveRegistry(options.registry);
|
|
6903
|
-
const client = createClient(registry);
|
|
6908
|
+
const client = createClient(registry, options.token);
|
|
6904
6909
|
try {
|
|
6905
6910
|
const detail = await client.resolveGroup(normalized);
|
|
6906
6911
|
if (options.dryRun) {
|
|
@@ -6945,7 +6950,7 @@ async function memberListAction(groupPath, options) {
|
|
|
6945
6950
|
const normalized = normalizeGroupPath(groupPath);
|
|
6946
6951
|
assertValidGroupPath(normalized);
|
|
6947
6952
|
const registry = resolveRegistry(options.registry);
|
|
6948
|
-
const client = createClient(registry);
|
|
6953
|
+
const client = createClient(registry, options.token);
|
|
6949
6954
|
try {
|
|
6950
6955
|
const detail = await client.resolveGroup(normalized);
|
|
6951
6956
|
const members = await client.listGroupMembers(detail.id);
|
|
@@ -6959,7 +6964,7 @@ async function memberAddAction(groupPath, userIds, options) {
|
|
|
6959
6964
|
const normalized = normalizeGroupPath(groupPath);
|
|
6960
6965
|
assertValidGroupPath(normalized);
|
|
6961
6966
|
const registry = resolveRegistry(options.registry);
|
|
6962
|
-
const client = createClient(registry);
|
|
6967
|
+
const client = createClient(registry, options.token);
|
|
6963
6968
|
const role = options.role || 'developer';
|
|
6964
6969
|
if (!validateRole(role)) {
|
|
6965
6970
|
logger_logger.error(`Invalid role "${role}". Must be one of: ${VALID_ROLES.join(', ')}`);
|
|
@@ -6978,7 +6983,7 @@ async function memberRemoveAction(groupPath, userId, options) {
|
|
|
6978
6983
|
const normalized = normalizeGroupPath(groupPath);
|
|
6979
6984
|
assertValidGroupPath(normalized);
|
|
6980
6985
|
const registry = resolveRegistry(options.registry);
|
|
6981
|
-
const client = createClient(registry);
|
|
6986
|
+
const client = createClient(registry, options.token);
|
|
6982
6987
|
try {
|
|
6983
6988
|
const detail = await client.resolveGroup(normalized);
|
|
6984
6989
|
await client.removeGroupMember(detail.id, userId);
|
|
@@ -6992,7 +6997,7 @@ async function memberRoleAction(groupPath, userId, role, options) {
|
|
|
6992
6997
|
const normalized = normalizeGroupPath(groupPath);
|
|
6993
6998
|
assertValidGroupPath(normalized);
|
|
6994
6999
|
const registry = resolveRegistry(options.registry);
|
|
6995
|
-
const client = createClient(registry);
|
|
7000
|
+
const client = createClient(registry, options.token);
|
|
6996
7001
|
if (!validateRole(role)) {
|
|
6997
7002
|
logger_logger.error(`Invalid role "${role}". Must be one of: ${VALID_ROLES.join(', ')}`);
|
|
6998
7003
|
process.exit(1);
|
|
@@ -7010,15 +7015,15 @@ async function memberRoleAction(groupPath, userId, role, options) {
|
|
|
7010
7015
|
// Command Definitions
|
|
7011
7016
|
// ============================================================================
|
|
7012
7017
|
const memberCommand = new __WEBPACK_EXTERNAL_MODULE_commander__.Command('member').description('Manage group members');
|
|
7013
|
-
memberCommand.command('list <path>').description('List members of a group').option('-r, --registry <url>', 'Registry URL').option('-j, --json', 'Output as JSON').action(memberListAction);
|
|
7014
|
-
memberCommand.command('add <path> <users...>').description('Add members to a group').option('-r, --registry <url>', 'Registry URL').option('--role <role>', 'Role to assign (owner|maintainer|developer)', 'developer').action(memberAddAction);
|
|
7015
|
-
memberCommand.command('remove <path> <user>').description('Remove a member from a group').option('-r, --registry <url>', 'Registry URL').action(memberRemoveAction);
|
|
7016
|
-
memberCommand.command('role <path> <user> <role>').description("Change a member's role").option('-r, --registry <url>', 'Registry URL').action(memberRoleAction);
|
|
7018
|
+
memberCommand.command('list <path>').description('List members of a group').option('-r, --registry <url>', 'Registry URL').option('-t, --token <token>', 'Auth token for registry API requests (for CI/CD)').option('-j, --json', 'Output as JSON').action(memberListAction);
|
|
7019
|
+
memberCommand.command('add <path> <users...>').description('Add members to a group').option('-r, --registry <url>', 'Registry URL').option('-t, --token <token>', 'Auth token for registry API requests (for CI/CD)').option('--role <role>', 'Role to assign (owner|maintainer|developer)', 'developer').action(memberAddAction);
|
|
7020
|
+
memberCommand.command('remove <path> <user>').description('Remove a member from a group').option('-r, --registry <url>', 'Registry URL').option('-t, --token <token>', 'Auth token for registry API requests (for CI/CD)').action(memberRemoveAction);
|
|
7021
|
+
memberCommand.command('role <path> <user> <role>').description("Change a member's role").option('-r, --registry <url>', 'Registry URL').option('-t, --token <token>', 'Auth token for registry API requests (for CI/CD)').action(memberRoleAction);
|
|
7017
7022
|
const groupCommand = new __WEBPACK_EXTERNAL_MODULE_commander__.Command('group').description('Manage skill groups');
|
|
7018
|
-
groupCommand.command('list').description('List visible groups').option('-r, --registry <url>', 'Registry URL').option('--tree', 'Render groups as a tree (requests flat group list)').option('-j, --json', 'Output as JSON').action(listAction);
|
|
7019
|
-
groupCommand.command('create <name>').description('Create a new group').option('-r, --registry <url>', 'Registry URL').option('-d, --description <text>', 'Group description').option('--visibility <level>', 'Visibility: public or private', 'public').option('--parent <path>', 'Parent group path (for sub groups)').option('-j, --json', 'Output as JSON').action(createAction);
|
|
7020
|
-
groupCommand.command('info <path>').description('Show group details').option('-r, --registry <url>', 'Registry URL').option('-j, --json', 'Output as JSON').action(infoAction);
|
|
7021
|
-
groupCommand.command('delete <path>').description('Delete a group').option('-r, --registry <url>', 'Registry URL').option('-n, --dry-run', 'Preview deletion without executing').option('-y, --yes', 'Skip confirmation').action(deleteAction);
|
|
7023
|
+
groupCommand.command('list').description('List visible groups').option('-r, --registry <url>', 'Registry URL').option('-t, --token <token>', 'Auth token for registry API requests (for CI/CD)').option('--tree', 'Render groups as a tree (requests flat group list)').option('-j, --json', 'Output as JSON').action(listAction);
|
|
7024
|
+
groupCommand.command('create <name>').description('Create a new group').option('-r, --registry <url>', 'Registry URL').option('-t, --token <token>', 'Auth token for registry API requests (for CI/CD)').option('-d, --description <text>', 'Group description').option('--visibility <level>', 'Visibility: public or private', 'public').option('--parent <path>', 'Parent group path (for sub groups)').option('-j, --json', 'Output as JSON').action(createAction);
|
|
7025
|
+
groupCommand.command('info <path>').description('Show group details').option('-r, --registry <url>', 'Registry URL').option('-t, --token <token>', 'Auth token for registry API requests (for CI/CD)').option('-j, --json', 'Output as JSON').action(infoAction);
|
|
7026
|
+
groupCommand.command('delete <path>').description('Delete a group').option('-r, --registry <url>', 'Registry URL').option('-t, --token <token>', 'Auth token for registry API requests (for CI/CD)').option('-n, --dry-run', 'Preview deletion without executing').option('-y, --yes', 'Skip confirmation').action(deleteAction);
|
|
7022
7027
|
groupCommand.addCommand(memberCommand);
|
|
7023
7028
|
/**
|
|
7024
7029
|
* info command - Show skill details
|