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 github:anthropics/skills/skills/canvas-design#main
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 userSkill (local, never auto-updated)
165
+ - `--user` — Add as a user skill (local, never auto-updated)
57
166
  - `--path <path>` — Custom installation path
58
167
 
59
- ## Source formats
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 agents
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 AI agent skills" })
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-MYTZHNE6.js";
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-CJ7EZ75L.js");
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);
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  initCommand
3
- } from "./chunk-MYTZHNE6.js";
3
+ } from "./chunk-DVITKAMZ.js";
4
4
  export {
5
5
  initCommand
6
6
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "konstruct",
3
- "version": "0.1.0",
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": ["main"]
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
  }