@akshar5/skillsync 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 +131 -0
- package/package.json +36 -0
- package/src/cli.js +649 -0
- package/src/core/config.js +35 -0
- package/src/core/device.js +285 -0
- package/src/core/fs.js +98 -0
- package/src/core/git.js +75 -0
- package/src/core/registry.js +132 -0
- package/src/core/source.js +80 -0
- package/src/core/sync.js +19 -0
package/README.md
ADDED
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
# SkillSync
|
|
2
|
+
|
|
3
|
+
Local-first skill manager for AI agent skills.
|
|
4
|
+
|
|
5
|
+
SkillSync uses a private GitHub repo as your cloud vault, then keeps selected skills linked into local agent skill folders on each device.
|
|
6
|
+
|
|
7
|
+
## What it manages
|
|
8
|
+
|
|
9
|
+
Vault repo layout:
|
|
10
|
+
|
|
11
|
+
```text
|
|
12
|
+
skills/
|
|
13
|
+
some-skill/
|
|
14
|
+
SKILL.md
|
|
15
|
+
registry.json # generated, do not edit
|
|
16
|
+
devices/*.json # generated, do not edit
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
User-owned files are the skill folders under `skills/`. SkillSync owns `registry.json` and `devices/*.json`.
|
|
20
|
+
|
|
21
|
+
## Install on another device
|
|
22
|
+
|
|
23
|
+
SkillSync is an npm-style CLI package. Once published, the nice path will be:
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
npx @akshar5/skillsync setup --repo AksharP5/skills
|
|
27
|
+
npx @akshar5/skillsync add https://github.com/raroque/vibe-security-skill --skill vibe-security
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
It is not published to the public npm registry yet. Install it from the private GitHub repo for now:
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
# macOS
|
|
34
|
+
brew install gh git node
|
|
35
|
+
|
|
36
|
+
gh auth login
|
|
37
|
+
npm install -g git+ssh://git@github.com/AksharP5/skillsync.git
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
If SSH is not set up on that device yet, use the clone/link fallback:
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
mkdir -p ~/projects
|
|
44
|
+
gh repo clone AksharP5/skillsync ~/projects/skillsync
|
|
45
|
+
cd ~/projects/skillsync
|
|
46
|
+
npm install
|
|
47
|
+
npm link
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
Connect to an existing vault:
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
skillsync setup --repo AksharP5/skills
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
Or create/select a different private vault repo name:
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
skillsync setup --name my-skills
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
If you run plain `skillsync setup` in an interactive terminal, it asks for the repo name and defaults to `skills`. `setup --name` creates `OWNER/my-skills` as a private GitHub repo if it does not exist. If it exists, SkillSync verifies it is private before using it.
|
|
63
|
+
|
|
64
|
+
## Commands
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
skillsync setup
|
|
68
|
+
skillsync
|
|
69
|
+
skillsync add <skill-folder-or-git-url> --skill <name>
|
|
70
|
+
skillsync add https://github.com/raroque/vibe-security-skill --skill vibe-security
|
|
71
|
+
skillsync import hermes
|
|
72
|
+
skillsync install <skill> --target codex
|
|
73
|
+
skillsync uninstall <skill>
|
|
74
|
+
skillsync delete <skill>
|
|
75
|
+
skillsync target add codex ~/.codex/skills
|
|
76
|
+
skillsync target add hermes ~/.hermes/skills/personal --scan-path ~/.hermes/skills
|
|
77
|
+
skillsync scan
|
|
78
|
+
skillsync sync
|
|
79
|
+
skillsync service install
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
## Removal model
|
|
83
|
+
|
|
84
|
+
- `skillsync uninstall <skill>` removes the skill from the current device only.
|
|
85
|
+
- `skillsync delete <skill>` removes the skill from the vault and all device manifests.
|
|
86
|
+
|
|
87
|
+
## Add from GitHub
|
|
88
|
+
|
|
89
|
+
You can import a skill directly from a GitHub repo into your private vault:
|
|
90
|
+
|
|
91
|
+
```bash
|
|
92
|
+
skillsync add https://github.com/raroque/vibe-security-skill --skill vibe-security
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
If the repo has multiple skills, omit `--skill` in an interactive terminal and SkillSync will ask which ones to add. Add `--target codex` or `--target '*'` to install it on the current device immediately after importing.
|
|
96
|
+
|
|
97
|
+
## Publishing to npm
|
|
98
|
+
|
|
99
|
+
Clone the project on the machine where your npm account is configured:
|
|
100
|
+
|
|
101
|
+
```bash
|
|
102
|
+
gh repo clone AksharP5/skillsync ~/projects/skillsync
|
|
103
|
+
cd ~/projects/skillsync
|
|
104
|
+
npm install
|
|
105
|
+
npm test
|
|
106
|
+
npm pack --dry-run
|
|
107
|
+
npm login
|
|
108
|
+
npm publish --access public
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
The package name is `@akshar5/skillsync` because `skillsync` is already taken on npm. The installed command is still `skillsync`.
|
|
112
|
+
|
|
113
|
+
## Detected versus managed skills
|
|
114
|
+
|
|
115
|
+
`installed` skills are SkillSync-managed projections into a target folder. `detected` skills are already present in a local agent's skill tree, such as bundled Hermes skills under `~/.hermes/skills`.
|
|
116
|
+
|
|
117
|
+
For Hermes, use a separate scan path so SkillSync installs personal synced skills into `~/.hermes/skills/personal` while still showing the full Hermes skill inventory from `~/.hermes/skills`:
|
|
118
|
+
|
|
119
|
+
```bash
|
|
120
|
+
skillsync target add hermes ~/.hermes/skills/personal --scan-path ~/.hermes/skills
|
|
121
|
+
skillsync scan
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
## Auto-sync
|
|
125
|
+
|
|
126
|
+
`skillsync service install` installs a background service:
|
|
127
|
+
|
|
128
|
+
- macOS: LaunchAgent
|
|
129
|
+
- Linux: systemd user service
|
|
130
|
+
|
|
131
|
+
The service periodically pulls/pushes the GitHub vault and reapplies symlinks.
|
package/package.json
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@akshar5/skillsync",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Local-first GitHub-backed skill vault sync client for AI agent skills.",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"repository": {
|
|
7
|
+
"type": "git",
|
|
8
|
+
"url": "git+https://github.com/AksharP5/skillsync.git"
|
|
9
|
+
},
|
|
10
|
+
"homepage": "https://github.com/AksharP5/skillsync#readme",
|
|
11
|
+
"bugs": {
|
|
12
|
+
"url": "https://github.com/AksharP5/skillsync/issues"
|
|
13
|
+
},
|
|
14
|
+
"bin": {
|
|
15
|
+
"skillsync": "src/cli.js"
|
|
16
|
+
},
|
|
17
|
+
"files": [
|
|
18
|
+
"src",
|
|
19
|
+
"README.md"
|
|
20
|
+
],
|
|
21
|
+
"publishConfig": {
|
|
22
|
+
"access": "public"
|
|
23
|
+
},
|
|
24
|
+
"scripts": {
|
|
25
|
+
"test": "node --test",
|
|
26
|
+
"start": "node src/cli.js"
|
|
27
|
+
},
|
|
28
|
+
"dependencies": {
|
|
29
|
+
"@inquirer/prompts": "^7.3.2"
|
|
30
|
+
},
|
|
31
|
+
"devDependencies": {},
|
|
32
|
+
"engines": {
|
|
33
|
+
"node": ">=20"
|
|
34
|
+
},
|
|
35
|
+
"license": "MIT"
|
|
36
|
+
}
|