@ryanreh99/skills-sync 1.0.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.
Files changed (53) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +74 -0
  3. package/dist/assets/contracts/build/bundle.schema.json +76 -0
  4. package/dist/assets/contracts/inputs/config.schema.json +13 -0
  5. package/dist/assets/contracts/inputs/mcp-servers.schema.json +56 -0
  6. package/dist/assets/contracts/inputs/pack-manifest.schema.json +33 -0
  7. package/dist/assets/contracts/inputs/pack-sources.schema.json +47 -0
  8. package/dist/assets/contracts/inputs/profile.schema.json +21 -0
  9. package/dist/assets/contracts/inputs/upstreams.schema.json +45 -0
  10. package/dist/assets/contracts/runtime/targets.schema.json +120 -0
  11. package/dist/assets/contracts/state/upstreams-lock.schema.json +38 -0
  12. package/dist/assets/manifests/targets.linux.json +27 -0
  13. package/dist/assets/manifests/targets.macos.json +27 -0
  14. package/dist/assets/manifests/targets.windows.json +27 -0
  15. package/dist/assets/seed/config.json +3 -0
  16. package/dist/assets/seed/packs/personal/mcp/servers.json +20 -0
  17. package/dist/assets/seed/packs/personal/pack.json +7 -0
  18. package/dist/assets/seed/packs/personal/sources.json +31 -0
  19. package/dist/assets/seed/profiles/personal.json +4 -0
  20. package/dist/assets/seed/upstreams.json +23 -0
  21. package/dist/cli.js +532 -0
  22. package/dist/index.js +27 -0
  23. package/dist/lib/adapters/claude.js +49 -0
  24. package/dist/lib/adapters/codex.js +239 -0
  25. package/dist/lib/adapters/common.js +114 -0
  26. package/dist/lib/adapters/copilot.js +53 -0
  27. package/dist/lib/adapters/cursor.js +53 -0
  28. package/dist/lib/adapters/gemini.js +52 -0
  29. package/dist/lib/agents.js +888 -0
  30. package/dist/lib/bindings.js +510 -0
  31. package/dist/lib/build.js +190 -0
  32. package/dist/lib/bundle.js +165 -0
  33. package/dist/lib/config.js +324 -0
  34. package/dist/lib/core.js +447 -0
  35. package/dist/lib/detect.js +56 -0
  36. package/dist/lib/doctor.js +504 -0
  37. package/dist/lib/init.js +292 -0
  38. package/dist/lib/inventory.js +235 -0
  39. package/dist/lib/manage.js +463 -0
  40. package/dist/lib/mcp-config.js +264 -0
  41. package/dist/lib/profile-transfer.js +221 -0
  42. package/dist/lib/upstreams.js +782 -0
  43. package/docs/agent-storage-map.md +153 -0
  44. package/docs/architecture.md +117 -0
  45. package/docs/changelog.md +12 -0
  46. package/docs/commands.md +94 -0
  47. package/docs/contracts.md +112 -0
  48. package/docs/homebrew.md +46 -0
  49. package/docs/quickstart.md +14 -0
  50. package/docs/roadmap.md +5 -0
  51. package/docs/security.md +32 -0
  52. package/docs/user-guide.md +257 -0
  53. package/package.json +61 -0
@@ -0,0 +1,257 @@
1
+ # User Guide
2
+
3
+ `skills-sync` manages profile-scoped skills and MCP servers across Codex, Claude Code, Cursor, Copilot, and Gemini CLI.
4
+
5
+ ## Initial Setup on a New Machine
6
+
7
+ ### Commands
8
+
9
+ ```bash
10
+ # Install the CLI globally
11
+ npm i -g @ryanreh99/skills-sync
12
+ # Or run without global install
13
+ npx @ryanreh99/skills-sync
14
+ # Initialize an empty workspace scaffold
15
+ skills-sync init
16
+ # Initialize workspace with bundled starter content
17
+ skills-sync init --seed
18
+ # Set your default active profile
19
+ skills-sync use <profile>
20
+ # Build runtime artifacts for a profile
21
+ skills-sync build --profile <profile>
22
+ # Apply profile artifacts to all detected agents
23
+ skills-sync apply --profile <profile>
24
+ # Validate profile state and agent bindings
25
+ skills-sync doctor --profile <profile>
26
+ ```
27
+
28
+ ### Example
29
+
30
+ ```bash
31
+ # Install the CLI globally
32
+ npm i -g @ryanreh99/skills-sync
33
+ # Or run without global install
34
+ npx @ryanreh99/skills-sync
35
+ # Initialize workspace with bundled starter content
36
+ skills-sync init --seed
37
+ # Set personal as the default active profile
38
+ skills-sync use personal
39
+ # Build runtime artifacts for personal profile
40
+ skills-sync build --profile personal
41
+ # Apply personal profile to all detected agents
42
+ skills-sync apply --profile personal
43
+ # Validate personal profile state and bindings
44
+ skills-sync doctor --profile personal
45
+ ```
46
+
47
+ ## Profile Switch
48
+
49
+ ### Commands
50
+
51
+ ```bash
52
+ # Create a new profile scaffold
53
+ skills-sync new <profile>
54
+ # Switch default profile to the new one
55
+ skills-sync use <profile>
56
+ # Show the current default profile
57
+ skills-sync current
58
+ # List all available profiles
59
+ skills-sync ls
60
+ # Build artifacts for the selected profile
61
+ skills-sync build --profile <profile>
62
+ # Apply selected profile to detected agents
63
+ skills-sync apply --profile <profile>
64
+ # Validate selected profile setup
65
+ skills-sync doctor --profile <profile>
66
+ ```
67
+
68
+ ### Example
69
+
70
+ ```bash
71
+ # Create a work profile scaffold
72
+ skills-sync new work
73
+ # Switch default profile to work
74
+ skills-sync use work
75
+ # Build artifacts for work profile
76
+ skills-sync build --profile work
77
+ # Apply work profile to detected agents
78
+ skills-sync apply --profile work
79
+ # Validate work profile setup
80
+ skills-sync doctor --profile work
81
+ ```
82
+
83
+ ## List and Search Upstreams, Profiles, Skills, and MCP
84
+
85
+ ### Commands
86
+
87
+ ```bash
88
+ # List configured upstream repositories
89
+ skills-sync list upstreams
90
+ # Add an upstream before filtering by its id (if not already configured)
91
+ skills-sync upstream add <upstream-id> --repo <git-url> --default-ref <ref>
92
+ # List discovered profiles
93
+ skills-sync list profiles
94
+ # List profiles with current default marker
95
+ skills-sync ls
96
+ # List skills available from an upstream
97
+ skills-sync list skills --upstream <upstream-id> --format text
98
+ # Search upstream skills by keyword
99
+ skills-sync search skills --upstream <upstream-id> --query <keyword>
100
+ # Show profile skills and MCP servers
101
+ skills-sync profile show <profile>
102
+ # Show all profiles with effective resources
103
+ skills-sync list everything --format text
104
+ # Inspect installed resources on detected agents
105
+ skills-sync agent inventory --format text
106
+ ```
107
+
108
+ ### Example
109
+
110
+ ```bash
111
+ # List configured upstream repositories
112
+ skills-sync list upstreams
113
+ # Add anthropics upstream (run once)
114
+ skills-sync upstream add anthropics --repo https://github.com/anthropics/claude-code --default-ref main
115
+ # List skills from anthropics upstream
116
+ skills-sync list skills --upstream anthropics --format text
117
+ # Search anthropics skills for MCP related entries
118
+ skills-sync search skills --upstream anthropics --query mcp
119
+ # Show skills and MCP servers in personal profile
120
+ skills-sync profile show personal
121
+ # Inspect installed resources on detected agents
122
+ skills-sync agent inventory --format text
123
+ ```
124
+
125
+ ## Add Upstreams, Skills, and MCP to a Profile
126
+
127
+ Use a skill path that appears in `skills-sync list skills --upstream anthropics --format text`.
128
+
129
+ ### Commands
130
+
131
+ ```bash
132
+ # Add a new upstream repository
133
+ skills-sync upstream add <upstream-id> --repo <git-url> --default-ref <ref>
134
+ # List skills available from the upstream
135
+ skills-sync list skills --upstream <upstream-id> --format text
136
+ # Add a skill import to a profile
137
+ skills-sync profile add-skill <profile> --upstream <upstream-id> --path <repo-skill-path>
138
+ # Add a stdio MCP server definition to a profile
139
+ skills-sync profile add-mcp <profile> <mcp-name> --command <command> --args <arg1> <arg2> ...
140
+ # Add a stdio MCP server with dash-prefixed args
141
+ skills-sync profile add-mcp <profile> <mcp-name> --command <command> --arg <arg1> --arg <arg2> ...
142
+ # Add an HTTP MCP server definition to a profile
143
+ skills-sync profile add-mcp <profile> <mcp-name> --url <https-url>
144
+ # Verify profile resources after updates
145
+ skills-sync profile show <profile>
146
+ # Build updated profile artifacts
147
+ skills-sync build --profile <profile>
148
+ # Apply updated profile to detected agents
149
+ skills-sync apply --profile <profile>
150
+ # Validate updated profile and bindings
151
+ skills-sync doctor --profile <profile>
152
+ ```
153
+
154
+ ### Example
155
+
156
+ ```bash
157
+ # Add anthropics repository as an upstream
158
+ skills-sync upstream add anthropics --repo https://github.com/anthropics/claude-code --default-ref main
159
+ # List skills available from anthropics
160
+ skills-sync list skills --upstream anthropics --format text
161
+ # Add one anthropics skill path to personal profile
162
+ skills-sync profile add-skill personal --upstream anthropics --path skills/claude-code-review
163
+ # Remove anthropics upstream
164
+ skills-sync upstream remove anthropics
165
+ # Add filesystem MCP server to personal profile
166
+ skills-sync profile add-mcp personal filesystem --command npx --args -y @modelcontextprotocol/server-filesystem C:\Users\ryanr\Documents
167
+ # Add GitHub MCP server over HTTP to personal profile
168
+ skills-sync profile add-mcp personal io.github.github/github-mcp-server --url https://api.githubcopilot.com/mcp/
169
+ # Build updated personal profile artifacts
170
+ skills-sync build --profile personal
171
+ # Apply updated personal profile to detected agents
172
+ skills-sync apply --profile personal
173
+ # Validate updated personal profile setup
174
+ skills-sync doctor --profile personal
175
+ ```
176
+
177
+ ## Apply a Skill or MCP to All Your Agents
178
+
179
+ If you installed an MCP server or created a skill in one agent, add it to your profile and run one rollout.
180
+
181
+ ### Commands
182
+
183
+ ```bash
184
+ # Add a skill import to the profile
185
+ skills-sync profile add-skill <profile> --upstream <upstream-id> --path <repo-skill-path>
186
+ # Add a stdio MCP server to the profile
187
+ skills-sync profile add-mcp <profile> <mcp-name> --command <command> --args <arg1> <arg2> ...
188
+ # Add a stdio MCP server with dash-prefixed args
189
+ skills-sync profile add-mcp <profile> <mcp-name> --command <command> --arg <arg1> --arg <arg2> ...
190
+ # Add an HTTP MCP server to the profile
191
+ skills-sync profile add-mcp <profile> <mcp-name> --url <https-url>
192
+ # Build artifacts with new skill and MCP entries
193
+ skills-sync build --profile <profile>
194
+ # Apply updated profile to all detected agents
195
+ skills-sync apply --profile <profile>
196
+ # Validate final state after rollout
197
+ skills-sync doctor --profile <profile>
198
+ # Inspect installed resources per detected agent
199
+ skills-sync agent inventory --format text
200
+ # Preview drift between profile and agents (no changes)
201
+ skills-sync agent drift --profile <profile> --dry-run --format text
202
+ # Reconcile drift across detected agents and shared .skills-sync artifacts
203
+ # (extra MCP servers detected in agents are promoted into profile before rebuild/apply)
204
+ skills-sync agent drift --profile <profile> --format text
205
+ ```
206
+
207
+ ### Example
208
+
209
+ ```bash
210
+ # Install an mcp for any specific agent
211
+ # Check the drift
212
+ skills-sync agent drift --dry-run
213
+ # Fix the drift and apply to all agents
214
+ skills-sync agent drift
215
+ ```
216
+
217
+ ## Clean, Unlink, and Doctor
218
+
219
+ ### Commands
220
+
221
+ ```bash
222
+ # Run health checks for a profile
223
+ skills-sync doctor --profile <profile>
224
+ # Preview unlink actions without modifying files
225
+ skills-sync unlink --dry-run
226
+ # Remove managed bindings from detected agents
227
+ skills-sync unlink
228
+ # Remove an imported skill from profile configuration
229
+ skills-sync profile remove-skill <profile> --upstream <upstream-id> --path <repo-skill-path>
230
+ # Remove an MCP server from profile configuration
231
+ skills-sync profile remove-mcp <profile> <mcp-name>
232
+ # Remove upstream repository from configuration
233
+ skills-sync upstream remove <upstream-id>
234
+ # Rebuild artifacts after cleanup
235
+ skills-sync build --profile <profile>
236
+ # Re-apply cleaned profile to detected agents
237
+ skills-sync apply --profile <profile>
238
+ # Re-run health checks after cleanup
239
+ skills-sync doctor --profile <profile>
240
+ ```
241
+
242
+ ### Example
243
+
244
+ ```bash
245
+ # Preview unlink actions without modifying files
246
+ skills-sync unlink --dry-run
247
+ # Remove filesystem MCP server from personal profile
248
+ skills-sync profile remove-mcp personal filesystem
249
+ # Remove managed bindings from detected agents
250
+ skills-sync unlink
251
+ # Build cleaned personal profile
252
+ skills-sync build --profile personal
253
+ # Apply cleaned personal profile to detected agents
254
+ skills-sync apply --profile personal
255
+ # Validate cleaned personal profile
256
+ skills-sync doctor --profile personal
257
+ ```
package/package.json ADDED
@@ -0,0 +1,61 @@
1
+ {
2
+ "name": "@ryanreh99/skills-sync",
3
+ "version": "1.0.0",
4
+ "description": "AI skills and MCP configuration management for development environments.",
5
+ "license": "MIT",
6
+ "author": "Ryan Rehman <ryanrehman99@gmail.com>",
7
+ "bin": {
8
+ "skills-sync": "./dist/index.js"
9
+ },
10
+ "files": [
11
+ "dist",
12
+ "docs"
13
+ ],
14
+ "type": "module",
15
+ "engines": {
16
+ "node": ">=20"
17
+ },
18
+ "repository": {
19
+ "type": "git",
20
+ "url": "https://github.com/ryanreh99/skills-sync.git"
21
+ },
22
+ "bugs": {
23
+ "url": "https://github.com/ryanreh99/skills-sync/issues"
24
+ },
25
+ "homepage": "https://github.com/ryanreh99/skills-sync#readme",
26
+ "scripts": {
27
+ "clean": "node ./src/scripts/clean.mjs",
28
+ "build": "node ./src/scripts/build.mjs",
29
+ "lint": "eslint .",
30
+ "format": "prettier --check .",
31
+ "test": "npm run build && node --test ./test/smoke.test.mjs && node ./test/integration/run.mjs",
32
+ "prepublishOnly": "npm run clean && npm run build && npm run lint && npm run test",
33
+ "init": "node ./src/index.js init",
34
+ "apply": "node ./src/index.js apply",
35
+ "unlink": "node ./src/index.js unlink",
36
+ "doctor": "node ./src/index.js doctor",
37
+ "detect": "node ./src/index.js detect",
38
+ "list": "node ./src/index.js list",
39
+ "search": "node ./src/index.js search",
40
+ "use": "node ./src/index.js use",
41
+ "current": "node ./src/index.js current",
42
+ "ls": "node ./src/index.js ls",
43
+ "new": "node ./src/index.js new",
44
+ "remove": "node ./src/index.js remove",
45
+ "help": "node ./src/index.js help",
46
+ "brew:formula": "node ./src/scripts/generate-homebrew-formula.mjs",
47
+ "dev": "node ./src/index.js"
48
+ },
49
+ "dependencies": {
50
+ "ajv": "^8.17.1",
51
+ "commander": "^14.0.2",
52
+ "deepmerge": "^4.3.1",
53
+ "fs-extra": "^11.3.2"
54
+ },
55
+ "devDependencies": {
56
+ "@eslint/js": "^9.22.0",
57
+ "eslint": "^9.22.0",
58
+ "globals": "^16.0.0",
59
+ "prettier": "^3.6.2"
60
+ }
61
+ }