konstruct 0.1.0 → 0.1.1
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
CHANGED
|
@@ -2,6 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
Package manager for AI agent skills. Manages the lifecycle of skill directories — discovery, installation, updating, and removal — across one or more AI agent tool directories.
|
|
4
4
|
|
|
5
|
+
## Add Skills
|
|
6
|
+
```bash
|
|
7
|
+
npx konstruct add owner/repo
|
|
8
|
+
```
|
|
9
|
+
|
|
5
10
|
## Install
|
|
6
11
|
|
|
7
12
|
```bash
|
|
@@ -15,7 +20,10 @@ npm install -g konstruct
|
|
|
15
20
|
konstruct init
|
|
16
21
|
|
|
17
22
|
# Add a skill from GitHub
|
|
18
|
-
konstruct add
|
|
23
|
+
konstruct add anthropics/skills
|
|
24
|
+
|
|
25
|
+
# Add a specific skill from repo
|
|
26
|
+
konstruct add anthropics/skills --skill skill-creator
|
|
19
27
|
|
|
20
28
|
# Install all skills from skills.json
|
|
21
29
|
konstruct install
|
|
@@ -27,6 +35,117 @@ konstruct update
|
|
|
27
35
|
konstruct list
|
|
28
36
|
```
|
|
29
37
|
|
|
38
|
+
## Features
|
|
39
|
+
|
|
40
|
+
### Declarative Manifest
|
|
41
|
+
|
|
42
|
+
Every project gets a `skills.json` that declares exactly which skills it needs and where they come from. Run `konstruct install` on any machine and get the same setup — no manual steps.
|
|
43
|
+
|
|
44
|
+
```json
|
|
45
|
+
{
|
|
46
|
+
"name": "my-project",
|
|
47
|
+
"version": "1.0.0",
|
|
48
|
+
"skills": {
|
|
49
|
+
"canvas-design": {
|
|
50
|
+
"source": "anthropic/skills/canvas-design#v1.0"
|
|
51
|
+
},
|
|
52
|
+
"data-analytics": {
|
|
53
|
+
"source": "github:company/analytics-repo/skills/analytics#main"
|
|
54
|
+
}
|
|
55
|
+
},
|
|
56
|
+
"userSkills": {
|
|
57
|
+
"my-local-skill": {
|
|
58
|
+
"source": "file:./local-skills/my-skill"
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
### Default Agents
|
|
66
|
+
|
|
67
|
+
Configure which agents receive skills so you don't have to specify them every time. Set defaults at the project or global level with `konstruct defaults`, or let them resolve automatically:
|
|
68
|
+
|
|
69
|
+
1. Project config (`./konstruct.config.json`) agents
|
|
70
|
+
2. Global config (`~/.konstruct/konstruct.config.json`) default agents
|
|
71
|
+
3. Fallback: `claude`
|
|
72
|
+
|
|
73
|
+
```json
|
|
74
|
+
{
|
|
75
|
+
"version": 1,
|
|
76
|
+
"agents": ["claude", "cursor"],
|
|
77
|
+
"global": {
|
|
78
|
+
"defaultAgents": ["claude"]
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
### Private Skils
|
|
84
|
+
|
|
85
|
+
Konstruct can install skills from private repositories as long as your local machine is authenticated. HTTPS uses your existing git credentials (e.g. `gh auth login`), or you can use SSH:
|
|
86
|
+
|
|
87
|
+
```bash
|
|
88
|
+
# Private repo over HTTPS (uses your local git credentials)
|
|
89
|
+
konstruct add github:my-org/private-skills
|
|
90
|
+
|
|
91
|
+
# Private repo over SSH
|
|
92
|
+
konstruct add github:my-org/private-skills --ssh
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
### Global and Project Configuration
|
|
96
|
+
|
|
97
|
+
Konstruct operates at two scopes. Project-level config lives in your repo and tracks which agents that project uses. Global config lives at `~/.konstruct/` and provides defaults for all projects.
|
|
98
|
+
|
|
99
|
+
```bash
|
|
100
|
+
# Project scope (default)
|
|
101
|
+
konstruct init
|
|
102
|
+
konstruct add anthropic/skills/canvas-design#main
|
|
103
|
+
|
|
104
|
+
# Global scope
|
|
105
|
+
konstruct init -g
|
|
106
|
+
konstruct add -g anthropic/skills/canvas-design#main
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
Every command supports `-g, --global` to switch between scopes.
|
|
110
|
+
|
|
111
|
+
### Custom Install Paths
|
|
112
|
+
|
|
113
|
+
Override where a skill gets installed with `--path`. The path is saved in the manifest so subsequent `konstruct install` and `konstruct update` calls respect it.
|
|
114
|
+
|
|
115
|
+
```bash
|
|
116
|
+
konstruct add github:org/repo --path /opt/shared-skills
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
```json
|
|
120
|
+
{
|
|
121
|
+
"skills": {
|
|
122
|
+
"repo": {
|
|
123
|
+
"source": "github:org/repo",
|
|
124
|
+
"path": "/opt/shared-skills"
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
### Local Skills
|
|
131
|
+
|
|
132
|
+
Add skills from your local filesystem with `--user`. These are kept in a separate `userSkills` section of the manifest and are never auto-updated, making them ideal for private or in-development skills.
|
|
133
|
+
|
|
134
|
+
```bash
|
|
135
|
+
konstruct add file:./my-private-skill --user
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
Skills are separated into two categories:
|
|
139
|
+
|
|
140
|
+
| | Installed Skills | User Skills |
|
|
141
|
+
|---|---|---|
|
|
142
|
+
| **Sources** | GitHub, GitLab, any git URL | Local filesystem only |
|
|
143
|
+
| **Updates** | Auto-updated via `konstruct update` | Never auto-updated |
|
|
144
|
+
| **Use case** | Shared, versioned skills | Private, local, or experimental |
|
|
145
|
+
| **Flag** | (default) | `--user` |
|
|
146
|
+
|
|
147
|
+
Both types are installed when running `konstruct install`, but `konstruct update` only touches git-based skills.
|
|
148
|
+
|
|
30
149
|
## Commands
|
|
31
150
|
|
|
32
151
|
| Command | Description |
|
|
@@ -39,24 +158,14 @@ konstruct list
|
|
|
39
158
|
| `konstruct list` | List all skills in the current manifest |
|
|
40
159
|
| `konstruct defaults` | View and update default agent preferences |
|
|
41
160
|
|
|
42
|
-
### Global mode
|
|
43
|
-
|
|
44
|
-
All commands support `-g, --global` to operate on `~/.konstruct/` instead of the current directory.
|
|
45
|
-
|
|
46
|
-
```bash
|
|
47
|
-
konstruct init -g # Set up global config
|
|
48
|
-
konstruct add -g <source> # Install globally
|
|
49
|
-
konstruct list -g # List global skills
|
|
50
|
-
```
|
|
51
|
-
|
|
52
161
|
### Options
|
|
53
162
|
|
|
54
163
|
- `-g, --global` — Use global `~/.konstruct/` directory
|
|
55
164
|
- `-s, --ssh` — Use SSH for git cloning (default: HTTPS with auto-retry)
|
|
56
|
-
- `--user` — Add as a
|
|
165
|
+
- `--user` — Add as a user skill (local, never auto-updated)
|
|
57
166
|
- `--path <path>` — Custom installation path
|
|
58
167
|
|
|
59
|
-
## Source
|
|
168
|
+
## Source Formats
|
|
60
169
|
|
|
61
170
|
| Format | Example |
|
|
62
171
|
|---|---|
|
|
@@ -66,7 +175,7 @@ konstruct list -g # List global skills
|
|
|
66
175
|
| Local file | `file:./relative/path` |
|
|
67
176
|
| Bare shorthand | `owner/repo` (defaults to GitHub) |
|
|
68
177
|
|
|
69
|
-
## Supported
|
|
178
|
+
## Supported Agents
|
|
70
179
|
|
|
71
180
|
Konstruct installs skills into the appropriate directory for each agent:
|
|
72
181
|
|
|
@@ -458,7 +458,7 @@ function Banner() {
|
|
|
458
458
|
|_|\\_\\___/|_| |_|___/ \\__||_| \\__,_|\\___|\\__|`.trimStart();
|
|
459
459
|
return /* @__PURE__ */ jsxs(Box, { flexDirection: "column", marginBottom: 1, children: [
|
|
460
460
|
/* @__PURE__ */ jsx(Text, { color: "cyan", bold: true, children: art }),
|
|
461
|
-
/* @__PURE__ */ jsx(Text, { dimColor: true, children: " Package manager for
|
|
461
|
+
/* @__PURE__ */ jsx(Text, { dimColor: true, children: " AI Skills Package manager for teams" })
|
|
462
462
|
] });
|
|
463
463
|
}
|
|
464
464
|
|
package/dist/index.js
CHANGED
|
@@ -17,7 +17,7 @@ import {
|
|
|
17
17
|
readManifest,
|
|
18
18
|
removeSkillFromManifest,
|
|
19
19
|
writeConfig
|
|
20
|
-
} from "./chunk-
|
|
20
|
+
} from "./chunk-DVITKAMZ.js";
|
|
21
21
|
|
|
22
22
|
// src/cli/index.ts
|
|
23
23
|
import { Command } from "commander";
|
|
@@ -480,7 +480,7 @@ function AddApp({ source, options: initialOptions }) {
|
|
|
480
480
|
opts.global = true;
|
|
481
481
|
setOptions(opts);
|
|
482
482
|
} else {
|
|
483
|
-
const { initCommand: initCommand2 } = await import("./init-
|
|
483
|
+
const { initCommand: initCommand2 } = await import("./init-SHM34JBM.js");
|
|
484
484
|
await initCommand2();
|
|
485
485
|
}
|
|
486
486
|
if (parsed) await startInstall(parsed, opts);
|
|
@@ -531,6 +531,19 @@ function AddApp({ source, options: initialOptions }) {
|
|
|
531
531
|
finish();
|
|
532
532
|
return;
|
|
533
533
|
}
|
|
534
|
+
if (opts.skill) {
|
|
535
|
+
const notFound = opts.skill.filter((s) => !discovered.some((d) => d.name === s));
|
|
536
|
+
if (notFound.length > 0) {
|
|
537
|
+
addMsg("error", `Skill(s) not found: ${notFound.join(", ")}`);
|
|
538
|
+
setSpinnerLabel("");
|
|
539
|
+
setSkills(discovered);
|
|
540
|
+
setPhase("selecting");
|
|
541
|
+
return;
|
|
542
|
+
}
|
|
543
|
+
const picks = discovered.filter((d) => opts.skill.includes(d.name));
|
|
544
|
+
await installPicks(parsedSource, opts, picks, discovered);
|
|
545
|
+
return;
|
|
546
|
+
}
|
|
534
547
|
if (discovered.length === 1) {
|
|
535
548
|
addMsg("info", `Found 1 skill: "${discovered[0].name}"`);
|
|
536
549
|
await installPicks(parsedSource, opts, [discovered[0]], discovered);
|
|
@@ -1186,7 +1199,7 @@ var program = new Command();
|
|
|
1186
1199
|
program.name("konstruct").description("Package manager for AI agent skills").version(getVersion());
|
|
1187
1200
|
program.command("init").description("Initialize skills.json and konstruct.config.json").option("-g, --global", "Initialize global configuration (~/.konstruct/) instead of project-local").action(initCommand);
|
|
1188
1201
|
program.command("install").description("Install all skills from skills.json").option("-g, --global", "Install globally (~/) instead of project-local").option("-s, --ssh", "Use SSH for cloning (default: HTTPS with auto-retry on auth failure)").action(installCommand);
|
|
1189
|
-
program.command("add <source>").description("Add a skill from a git or local source").option("-g, --global", "Install globally").option("--user", "Add as a userSkill (local, never auto-updated)").option("--path <path>", "Custom installation path").option("-s, --ssh", "Use SSH for cloning (default: HTTPS with auto-retry on auth failure)").action(addCommand);
|
|
1202
|
+
program.command("add <source>").description("Add a skill from a git or local source").option("-g, --global", "Install globally").option("--user", "Add as a userSkill (local, never auto-updated)").option("--path <path>", "Custom installation path").option("-s, --ssh", "Use SSH for cloning (default: HTTPS with auto-retry on auth failure)").option("--skill <names...>", "Install specific skill(s) by name, skipping the selection prompt").action(addCommand);
|
|
1190
1203
|
program.command("remove <names...>").description("Remove one or more skills by name").option("-g, --global", "Remove from global (~/) directories instead of project-local").action(removeCommand);
|
|
1191
1204
|
program.command("list").description("List all skills in the current manifest").option("-g, --global", "List skills from the global manifest instead of project-local").action(listCommand);
|
|
1192
1205
|
program.command("update").description("Re-install git skills at their manifest refs (skips userSkills)").option("-g, --global", "Update in global (~/) directories instead of project-local").option("-s, --ssh", "Use SSH for cloning (default: HTTPS with auto-retry on auth failure)").action(updateCommand);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "konstruct",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.1",
|
|
4
4
|
"description": "Package manager for AI agent skills",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -38,7 +38,40 @@
|
|
|
38
38
|
"prepublishOnly": "npm run build"
|
|
39
39
|
},
|
|
40
40
|
"release": {
|
|
41
|
-
"branches": [
|
|
41
|
+
"branches": [
|
|
42
|
+
"main"
|
|
43
|
+
],
|
|
44
|
+
"plugins": [
|
|
45
|
+
[
|
|
46
|
+
"@semantic-release/commit-analyzer",
|
|
47
|
+
{
|
|
48
|
+
"releaseRules": [
|
|
49
|
+
{
|
|
50
|
+
"type": "feat",
|
|
51
|
+
"release": "patch"
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
"breaking": true,
|
|
55
|
+
"release": "minor"
|
|
56
|
+
}
|
|
57
|
+
]
|
|
58
|
+
}
|
|
59
|
+
],
|
|
60
|
+
"@semantic-release/release-notes-generator",
|
|
61
|
+
"@semantic-release/npm",
|
|
62
|
+
"@semantic-release/changelog",
|
|
63
|
+
[
|
|
64
|
+
"@semantic-release/git",
|
|
65
|
+
{
|
|
66
|
+
"assets": [
|
|
67
|
+
"package.json",
|
|
68
|
+
"CHANGELOG.md"
|
|
69
|
+
],
|
|
70
|
+
"message": "chore(release): ${nextRelease.version} [skip ci]"
|
|
71
|
+
}
|
|
72
|
+
],
|
|
73
|
+
"@semantic-release/github"
|
|
74
|
+
]
|
|
42
75
|
},
|
|
43
76
|
"dependencies": {
|
|
44
77
|
"commander": "^13.0.0",
|
|
@@ -49,6 +82,10 @@
|
|
|
49
82
|
"simple-git": "^3.27.0"
|
|
50
83
|
},
|
|
51
84
|
"devDependencies": {
|
|
85
|
+
"@semantic-release/changelog": "^6.0.3",
|
|
86
|
+
"@semantic-release/git": "^10.0.1",
|
|
87
|
+
"@semantic-release/github": "^11.0.6",
|
|
88
|
+
"@semantic-release/npm": "^13.1.4",
|
|
52
89
|
"@types/node": "^22.0.0",
|
|
53
90
|
"@types/react": "^19.2.13",
|
|
54
91
|
"semantic-release": "^24.2.9",
|
|
@@ -57,6 +94,11 @@
|
|
|
57
94
|
"typescript": "^5.4.0",
|
|
58
95
|
"vitest": "^2.0.0"
|
|
59
96
|
},
|
|
97
|
+
"overrides": {
|
|
98
|
+
"semantic-release": {
|
|
99
|
+
"@semantic-release/npm": "$@semantic-release/npm"
|
|
100
|
+
}
|
|
101
|
+
},
|
|
60
102
|
"engines": {
|
|
61
103
|
"node": ">=18"
|
|
62
104
|
}
|