skill-mix 0.1.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 +64 -0
- package/bin/skills +38 -0
- package/bin/skills-manager +42 -0
- package/dist/electron/main.js +11298 -0
- package/package.json +82 -0
- package/scripts/build-main.mjs +27 -0
- package/scripts/install.sh +195 -0
package/README.md
ADDED
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
# Skills Manager
|
|
2
|
+
|
|
3
|
+
A management layer for AI agent skills — discover, install, scope, rate, and update skills across Cursor, Codex, and Claude Code.
|
|
4
|
+
|
|
5
|
+
All three tools follow the open [Agent Skills](https://agentskills.io/) standard (`SKILL.md`), but none solves the management problem: how to find the right skill, avoid duplicates, track where it came from, or know if it's any good.
|
|
6
|
+
|
|
7
|
+
## Setup
|
|
8
|
+
|
|
9
|
+
Quick install Skills Manager, open the app, and launch the skill-picker modal:
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
npx -y skill-mix obra/superpowers
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
Preselect specific skills before the modal opens:
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
npx -y skill-mix obra/superpowers workflow research
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
Classic installer:
|
|
22
|
+
|
|
23
|
+
```
|
|
24
|
+
curl -fsSL https://raw.githubusercontent.com/razbakov/skills-manager/main/scripts/install.sh | bash
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## Usage
|
|
28
|
+
|
|
29
|
+
Run `skills` to launch application
|
|
30
|
+
|
|
31
|
+
Open/focus the app and trigger the skill-picker from CLI:
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
skills set <owner/repo|github-url> [skill ...]
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+

|
|
38
|
+
|
|
39
|
+
## Build DMG (macOS)
|
|
40
|
+
|
|
41
|
+
```
|
|
42
|
+
bun install
|
|
43
|
+
bun run dist:dmg
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
This outputs a DMG installer in `release/`.
|
|
47
|
+
|
|
48
|
+
## Problem
|
|
49
|
+
|
|
50
|
+
See **[Research](docs/research.md)** for how tools handle skills today, **[User Problems](docs/problems.md)** for 14 documented pain points, **[Landscape](docs/landscape.md)** for existing directories and tools, and **[Competitors](docs/competitors.md)** for detailed analysis of current solutions and their gaps.
|
|
51
|
+
|
|
52
|
+
- **Naming collisions** — Multiple skills share similar names or overlap in responsibility. Cursor has no detection; Codex shows both without merging; Claude Code overrides by scope precedence.
|
|
53
|
+
- **No development workflow** — No way to test, enable, or disable skills without editing files by hand (Codex has `config.toml`, but no UI).
|
|
54
|
+
- **Unknown provenance** — None of the three tools track where a skill came from, who wrote it, or how to update it.
|
|
55
|
+
- **Scattered collections** — Skills live in 3–6 different directories per tool with no unified view.
|
|
56
|
+
- **No quality signals** — No ratings, benchmarks, or reviews exist anywhere in the ecosystem.
|
|
57
|
+
|
|
58
|
+
## Key Features
|
|
59
|
+
|
|
60
|
+
- **[Skill Registry](docs/registry.md)**: Search, browse, and install skills from a shared catalog with deduplication and conflict detection.
|
|
61
|
+
- **[Scope Management](docs/scopes.md)**: Enable or disable skills at three levels — personal, organization, and project — with clear precedence rules across all supported tools.
|
|
62
|
+
- **[Provenance Tracking](docs/provenance.md)**: Every skill records its source repo, author, version, and update channel.
|
|
63
|
+
- **[Quality Scores](docs/quality.md)**: Community and automated ratings for security, efficiency, and best practices, with benchmarks across models and harnesses.
|
|
64
|
+
- **[Development Mode](docs/dev-mode.md)**: GUI for authoring, testing, and previewing skills before publishing.
|
package/bin/skills
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
set -euo pipefail
|
|
3
|
+
|
|
4
|
+
SOURCE_PATH="${BASH_SOURCE[0]}"
|
|
5
|
+
while [ -L "${SOURCE_PATH}" ]; do
|
|
6
|
+
SOURCE_DIR="$(cd -P -- "$(dirname -- "${SOURCE_PATH}")" && pwd)"
|
|
7
|
+
LINK_TARGET="$(readlink "${SOURCE_PATH}")"
|
|
8
|
+
if [[ "${LINK_TARGET}" == /* ]]; then
|
|
9
|
+
SOURCE_PATH="${LINK_TARGET}"
|
|
10
|
+
else
|
|
11
|
+
SOURCE_PATH="${SOURCE_DIR}/${LINK_TARGET}"
|
|
12
|
+
fi
|
|
13
|
+
done
|
|
14
|
+
|
|
15
|
+
SCRIPT_DIR="$(cd -P -- "$(dirname -- "${SOURCE_PATH}")" && pwd)"
|
|
16
|
+
|
|
17
|
+
resolve_bun() {
|
|
18
|
+
if command -v bun >/dev/null 2>&1; then
|
|
19
|
+
command -v bun
|
|
20
|
+
return 0
|
|
21
|
+
fi
|
|
22
|
+
|
|
23
|
+
if [ -n "${BUN_INSTALL:-}" ] && [ -x "${BUN_INSTALL%/}/bin/bun" ]; then
|
|
24
|
+
echo "${BUN_INSTALL%/}/bin/bun"
|
|
25
|
+
return 0
|
|
26
|
+
fi
|
|
27
|
+
|
|
28
|
+
if [ -x "${HOME}/.bun/bin/bun" ]; then
|
|
29
|
+
echo "${HOME}/.bun/bin/bun"
|
|
30
|
+
return 0
|
|
31
|
+
fi
|
|
32
|
+
|
|
33
|
+
echo "Unable to find Bun. Install Bun and ensure it is available on PATH: https://bun.sh/" >&2
|
|
34
|
+
exit 1
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
BUN_BIN="$(resolve_bun)"
|
|
38
|
+
exec "${BUN_BIN}" "${SCRIPT_DIR}/../src/index.ts" "$@"
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
set -euo pipefail
|
|
3
|
+
|
|
4
|
+
SOURCE_PATH="${BASH_SOURCE[0]}"
|
|
5
|
+
while [ -L "${SOURCE_PATH}" ]; do
|
|
6
|
+
SOURCE_DIR="$(cd -P -- "$(dirname -- "${SOURCE_PATH}")" && pwd)"
|
|
7
|
+
LINK_TARGET="$(readlink "${SOURCE_PATH}")"
|
|
8
|
+
if [[ "${LINK_TARGET}" == /* ]]; then
|
|
9
|
+
SOURCE_PATH="${LINK_TARGET}"
|
|
10
|
+
else
|
|
11
|
+
SOURCE_PATH="${SOURCE_DIR}/${LINK_TARGET}"
|
|
12
|
+
fi
|
|
13
|
+
done
|
|
14
|
+
|
|
15
|
+
SCRIPT_DIR="$(cd -P -- "$(dirname -- "${SOURCE_PATH}")" && pwd)"
|
|
16
|
+
INSTALL_SCRIPT="${SCRIPT_DIR}/../scripts/install.sh"
|
|
17
|
+
|
|
18
|
+
if [ "$#" -eq 0 ]; then
|
|
19
|
+
echo "Usage: npx -y skill-mix <owner/repo|github-url> [skill ...]" >&2
|
|
20
|
+
exit 1
|
|
21
|
+
fi
|
|
22
|
+
|
|
23
|
+
"${INSTALL_SCRIPT}"
|
|
24
|
+
|
|
25
|
+
if [ -n "${SKILLS_MANAGER_GLOBAL_BIN_DIR:-}" ]; then
|
|
26
|
+
SKILLS_CMD_PATH="${SKILLS_MANAGER_GLOBAL_BIN_DIR%/}/skills"
|
|
27
|
+
elif [ -n "${BUN_INSTALL:-}" ]; then
|
|
28
|
+
SKILLS_CMD_PATH="${BUN_INSTALL%/}/bin/skills"
|
|
29
|
+
else
|
|
30
|
+
SKILLS_CMD_PATH="${HOME}/.bun/bin/skills"
|
|
31
|
+
fi
|
|
32
|
+
|
|
33
|
+
if [ -x "${SKILLS_CMD_PATH}" ]; then
|
|
34
|
+
exec "${SKILLS_CMD_PATH}" set "$@"
|
|
35
|
+
fi
|
|
36
|
+
|
|
37
|
+
if command -v skills >/dev/null 2>&1; then
|
|
38
|
+
exec "$(command -v skills)" set "$@"
|
|
39
|
+
fi
|
|
40
|
+
|
|
41
|
+
echo "Skills Manager was installed, but 'skills' command is unavailable." >&2
|
|
42
|
+
exit 1
|