@callmeradical/augy 0.7.2 → 0.8.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.
@@ -9,7 +9,7 @@ import {
9
9
  readRegistry,
10
10
  upsertSkill,
11
11
  writeRegistry
12
- } from "./chunk-IORULLX5.js";
12
+ } from "./chunk-IBMRS66P.js";
13
13
 
14
14
  // src/commands/author.ts
15
15
  import { intro, outro, multiselect, isCancel } from "@clack/prompts";
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  listSkills,
3
3
  readRegistry
4
- } from "./chunk-IORULLX5.js";
4
+ } from "./chunk-IBMRS66P.js";
5
5
 
6
6
  // src/commands/bundle.ts
7
7
  import { outro, spinner } from "@clack/prompts";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  versionArchivePath
3
- } from "./chunk-IORULLX5.js";
3
+ } from "./chunk-IBMRS66P.js";
4
4
 
5
5
  // src/versions.ts
6
6
  import { cp, mkdir, rm } from "fs/promises";
@@ -32,7 +32,7 @@ Archive path: ${src}`
32
32
  }
33
33
  async function pruneVersions(skillName, keepShas = []) {
34
34
  const { join } = await import("path");
35
- const { versionArchivePath: archivePath, versionsDir } = await import("./registry-KMUHBN75.js");
35
+ const { versionArchivePath: archivePath, versionsDir } = await import("./registry-RU24Z5UO.js");
36
36
  const skillVersionsDir = join(versionsDir(), skillName);
37
37
  if (!existsSync(skillVersionsDir)) return;
38
38
  const { readdir } = await import("fs/promises");
@@ -112,6 +112,12 @@ function addTap(registry, tap) {
112
112
  function removeTap(registry, key) {
113
113
  delete registry.taps[key];
114
114
  }
115
+ function getMachineContext(registry) {
116
+ return registry.machineContext;
117
+ }
118
+ function setMachineContext(registry, context) {
119
+ registry.machineContext = context;
120
+ }
115
121
  function skillMatchesContext(skillContexts, filter) {
116
122
  if (!filter) return true;
117
123
  if (!skillContexts || skillContexts.length === 0) return true;
@@ -145,6 +151,8 @@ export {
145
151
  listTaps,
146
152
  addTap,
147
153
  removeTap,
154
+ getMachineContext,
155
+ setMachineContext,
148
156
  skillMatchesContext,
149
157
  getHomeConfig,
150
158
  setHomeConfig
@@ -5,7 +5,7 @@ import {
5
5
  import {
6
6
  listTaps,
7
7
  tapKey
8
- } from "./chunk-IORULLX5.js";
8
+ } from "./chunk-IBMRS66P.js";
9
9
 
10
10
  // src/taps.ts
11
11
  async function searchTaps(registry, query) {
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  __commonJS,
3
3
  __toESM
4
- } from "./chunk-IORULLX5.js";
4
+ } from "./chunk-IBMRS66P.js";
5
5
 
6
6
  // node_modules/sisteransi/src/index.js
7
7
  var require_src = __commonJS({
@@ -0,0 +1,34 @@
1
+ import {
2
+ getMachineContext,
3
+ readRegistry,
4
+ setMachineContext,
5
+ writeRegistry
6
+ } from "./chunk-IBMRS66P.js";
7
+
8
+ // src/commands/context.ts
9
+ import chalk from "chalk";
10
+ async function contextSetCommand(ctx) {
11
+ const registry = await readRegistry();
12
+ setMachineContext(registry, ctx);
13
+ await writeRegistry(registry);
14
+ if (ctx) {
15
+ console.log(`${chalk.bold("Machine context")} set to ${chalk.cyan(ctx)}`);
16
+ console.log(chalk.dim(" `augy home pull` will now pre-select skills tagged " + ctx + " or universal."));
17
+ } else {
18
+ console.log(chalk.dim("Machine context cleared \u2014 `augy home pull` will pre-select all skills."));
19
+ }
20
+ }
21
+ async function contextShowCommand() {
22
+ const registry = await readRegistry();
23
+ const ctx = getMachineContext(registry);
24
+ if (ctx) {
25
+ console.log(`${chalk.bold("Machine context:")} ${chalk.cyan(ctx)}`);
26
+ } else {
27
+ console.log(chalk.dim("No machine context set."));
28
+ console.log(chalk.dim("Run `augy context set <ctx>` to set one (e.g. work, personal)."));
29
+ }
30
+ }
31
+ export {
32
+ contextSetCommand,
33
+ contextShowCommand
34
+ };
@@ -4,13 +4,13 @@ import {
4
4
  } from "./chunk-2E5SVRSR.js";
5
5
  import {
6
6
  archiveExists
7
- } from "./chunk-UJBZ6OAP.js";
7
+ } from "./chunk-G7WKOGAS.js";
8
8
  import {
9
9
  getSkill,
10
10
  readRegistry,
11
11
  shortSha,
12
12
  versionArchivePath
13
- } from "./chunk-IORULLX5.js";
13
+ } from "./chunk-IBMRS66P.js";
14
14
 
15
15
  // src/commands/diff.ts
16
16
  import { cancel, intro, isCancel, outro, select, spinner } from "@clack/prompts";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  filterableMultiselect
3
- } from "./chunk-DFZHSX3M.js";
3
+ } from "./chunk-XUQJ2VKV.js";
4
4
  import {
5
5
  AGENTS,
6
6
  agentSkillPath,
@@ -9,13 +9,14 @@ import {
9
9
  import {
10
10
  createSkillRecord,
11
11
  getHomeConfig,
12
+ getMachineContext,
12
13
  listSkills,
13
14
  readRegistry,
14
15
  setHomeConfig,
15
16
  skillMatchesContext,
16
17
  upsertSkill,
17
18
  writeRegistry
18
- } from "./chunk-IORULLX5.js";
19
+ } from "./chunk-IBMRS66P.js";
19
20
 
20
21
  // src/commands/home.ts
21
22
  import { intro, isCancel, multiselect, outro, spinner } from "@clack/prompts";
@@ -95,6 +96,18 @@ async function homePushCommand() {
95
96
  process.exit(1);
96
97
  }
97
98
  const allSkills = listSkills(registry);
99
+ let reclassified = 0;
100
+ for (const skill of allSkills) {
101
+ if (skill.source && skill.source.includes(home.repo)) {
102
+ skill.source = "";
103
+ skill.gigetSource = "";
104
+ skill.sha = "unversioned";
105
+ skill.shortSha = "unversio";
106
+ registry.skills[skill.name] = skill;
107
+ reclassified++;
108
+ }
109
+ }
110
+ if (reclassified) await writeRegistry(registry);
98
111
  const authored = allSkills.filter((s3) => !s3.source);
99
112
  const external = allSkills.filter((s3) => s3.source);
100
113
  const cloneDir = join(tmpdir(), `augy-home-push-${Date.now()}`);
@@ -188,11 +201,12 @@ async function homePullCommand(opts = {}) {
188
201
  return;
189
202
  }
190
203
  const currentRegistry = await readRegistry();
204
+ const effectiveContext = opts.context ?? getMachineContext(currentRegistry);
191
205
  const selected = await filterableMultiselect({
192
- message: `Select skills to install ${chalk.dim(`(${available.length} available)`)}`,
206
+ message: `Select skills to install ${chalk.dim(`(${available.length} available)`)}` + (effectiveContext ? chalk.dim(` [context: ${effectiveContext}]`) : ""),
193
207
  options: available.map((sk) => {
194
208
  const contexts = bundleContexts[sk.name] ?? currentRegistry.skills[sk.name]?.contexts ?? [];
195
- const matches = skillMatchesContext(contexts, opts.context);
209
+ const matches = skillMatchesContext(contexts, effectiveContext);
196
210
  const ctxHint = contexts.length ? chalk.dim(contexts.join(", ")) : "";
197
211
  const srcHint = sk.isAuthored ? chalk.dim("authored") : chalk.dim(sk.source);
198
212
  return {
@@ -264,7 +278,7 @@ async function homePullCommand(opts = {}) {
264
278
  for (const sk of externalToInstall) filteredBundle.skills[sk.name] = sk.source;
265
279
  const tmpManifest = join(td(), `augy-home-pull-manifest-${Date.now()}.json`);
266
280
  await wf(tmpManifest, JSON.stringify(filteredBundle, null, 2) + "\n", "utf8");
267
- const { syncCommand } = await import("./sync-4EKWA3IM.js");
281
+ const { syncCommand } = await import("./sync-I3FTSC3I.js");
268
282
  await syncCommand(tmpManifest, { ...opts, agent: targetAgents.map((a) => a.id) });
269
283
  }
270
284
  }
package/dist/index.js CHANGED
@@ -10,66 +10,66 @@ var pkg = JSON.parse(readFileSync(join(__dirname, "..", "package.json"), "utf8")
10
10
  var program = new Command();
11
11
  program.name("augy").description("Homebrew for AI agent skills \u2014 install, version, update, rollback").version(pkg.version);
12
12
  program.command("install [url]").description("Install skills from a GitHub URL or owner/repo[/path]").option("-a, --agent <agents...>", "Target agent(s): opencode, claude, codex").action(async (url, opts) => {
13
- const { installCommand } = await import("./install-4CHE2OFV.js");
13
+ const { installCommand } = await import("./install-WLEVFJFD.js");
14
14
  await installCommand(url, opts ?? {});
15
15
  });
16
16
  program.command("update [skill]").description("Check for upstream changes and upgrade installed skills").action(async (skill) => {
17
- const { updateCommand } = await import("./update-GAPWQHVH.js");
17
+ const { updateCommand } = await import("./update-ZXOM4RV6.js");
18
18
  await updateCommand(skill);
19
19
  });
20
20
  program.command("list").description("Show all installed skills with version + agent info").option("--json", "Output raw JSON registry").action(async (opts) => {
21
- const { listCommand } = await import("./list-3RZJGXTD.js");
21
+ const { listCommand } = await import("./list-MJUAPNMU.js");
22
22
  await listCommand(opts ?? {});
23
23
  });
24
24
  program.command("diff <skill> [sha1] [sha2]").description(
25
25
  "Browse file-level diffs for a skill\n augy diff <skill> installed \u2194 upstream HEAD\n augy diff <skill> <sha> installed \u2194 specific SHA (archive or GitHub)\n augy diff <skill> <sha1> <sha2> two local archives side-by-side"
26
26
  ).action(async (skill, sha1, sha2) => {
27
- const { diffCommand } = await import("./diff-EAGTGQYC.js");
27
+ const { diffCommand } = await import("./diff-YDRQ43TJ.js");
28
28
  await diffCommand(skill, sha1, sha2);
29
29
  });
30
30
  program.command("bundle").description("Write an augy.json manifest from installed skills for team sharing").option("-o, --output <path>", "Output path (default: ./augy.json)").option("--include-untracked", "Include skills without a known source").action(async (opts) => {
31
- const { bundleCommand } = await import("./bundle-ESWO4DCZ.js");
31
+ const { bundleCommand } = await import("./bundle-4D3RXVJZ.js");
32
32
  await bundleCommand(opts);
33
33
  });
34
34
  program.command("sync [path]").description("Install/update skills from an augy.json manifest (default: ./augy.json)").option("--dry-run", "Preview changes without applying them").option("-a, --agent <agents...>", "Target agent(s) (default: all detected)").action(async (path, opts) => {
35
- const { syncCommand } = await import("./sync-4EKWA3IM.js");
35
+ const { syncCommand } = await import("./sync-I3FTSC3I.js");
36
36
  await syncCommand(path, opts ?? {});
37
37
  });
38
38
  program.command("scan").description("Find skills installed outside augy and optionally import them into the registry").action(async () => {
39
- const { scanCommand } = await import("./scan-YZ2PPABF.js");
39
+ const { scanCommand } = await import("./scan-JJIQ4BM7.js");
40
40
  await scanCommand();
41
41
  });
42
42
  program.command("info <skill>").description("Show full metadata, version history, and description for an installed skill").action(async (skill) => {
43
- const { infoCommand } = await import("./info-7DPMSTVU.js");
43
+ const { infoCommand } = await import("./info-VIYGVJD6.js");
44
44
  await infoCommand(skill);
45
45
  });
46
46
  program.command("search [query]").description("Search all taps for available skills (optionally filter by name)").action(async (query) => {
47
- const { searchCommand } = await import("./search-H2G7PH7R.js");
47
+ const { searchCommand } = await import("./search-AO7VHE5K.js");
48
48
  await searchCommand(query);
49
49
  });
50
50
  var tap = program.command("tap").description("Manage trusted repos (taps) for skill name resolution");
51
51
  tap.command("add <repo>").description("Register a tap e.g. augy tap add owner/repo").option("--path <skills-dir>", "Subdirectory where skills live (default: skills)").option("--description <text>", "Optional description").action(async (repo, opts) => {
52
- const { tapAddCommand } = await import("./tap-KS57GF5M.js");
52
+ const { tapAddCommand } = await import("./tap-3G3U5UXL.js");
53
53
  await tapAddCommand(repo, opts);
54
54
  });
55
55
  tap.command("remove <repo>").description("Unregister a tap").action(async (repo) => {
56
- const { tapRemoveCommand } = await import("./tap-KS57GF5M.js");
56
+ const { tapRemoveCommand } = await import("./tap-3G3U5UXL.js");
57
57
  await tapRemoveCommand(repo);
58
58
  });
59
59
  tap.command("list").description("List all registered taps").action(async () => {
60
- const { tapListCommand } = await import("./tap-KS57GF5M.js");
60
+ const { tapListCommand } = await import("./tap-3G3U5UXL.js");
61
61
  await tapListCommand();
62
62
  });
63
63
  program.command("set-source <skill> <url>").description("Attach a GitHub source URL to a skill imported without one").action(async (skill, url) => {
64
- const { setSourceCommand } = await import("./set-source-5PSSVVZ2.js");
64
+ const { setSourceCommand } = await import("./set-source-CGLGCKOD.js");
65
65
  await setSourceCommand(skill, url);
66
66
  });
67
67
  program.command("uninstall <skill>").description("Remove a skill from all agent paths and the registry").action(async (skill) => {
68
- const { uninstallCommand } = await import("./uninstall-PZ5AP4MP.js");
68
+ const { uninstallCommand } = await import("./uninstall-6R7A5HOZ.js");
69
69
  await uninstallCommand(skill);
70
70
  });
71
71
  program.command("rollback <skill> [sha]").description("Restore a skill to a previous archived version").action(async (skill, sha) => {
72
- const { rollbackCommand } = await import("./rollback-AZTJTYLL.js");
72
+ const { rollbackCommand } = await import("./rollback-I5FAGN6J.js");
73
73
  await rollbackCommand(skill, sha);
74
74
  });
75
75
  program.command("pin <skill>").description("Pin a skill so it is skipped during `augy update`").action(async (skill) => {
@@ -78,53 +78,66 @@ program.command("pin <skill>").description("Pin a skill so it is skipped during
78
78
  program.command("unpin <skill>").description("Allow a pinned skill to receive updates again").action(async (skill) => {
79
79
  await setPinned(skill, false);
80
80
  });
81
+ var ctx = program.command("context").description("Set or show this machine's context (work / personal / custom)");
82
+ ctx.command("set <context>").description("Mark this machine's context e.g. augy context set work").action(async (context) => {
83
+ const { contextSetCommand } = await import("./context-2UJB5RLD.js");
84
+ await contextSetCommand(context);
85
+ });
86
+ ctx.command("show").description("Show the current machine context").action(async () => {
87
+ const { contextShowCommand } = await import("./context-2UJB5RLD.js");
88
+ await contextShowCommand();
89
+ });
90
+ ctx.command("clear").description("Remove the machine context").action(async () => {
91
+ const { contextSetCommand } = await import("./context-2UJB5RLD.js");
92
+ await contextSetCommand(void 0);
93
+ });
81
94
  var tag = program.command("tag").description("Manage skill context tags (personal / work / universal / custom)");
82
95
  tag.command("set <skill> [contexts...]").description("Set context tags on a skill e.g. augy tag set tdd work universal").action(async (skill, contexts) => {
83
- const { tagSetCommand } = await import("./tag-DAWGOKEO.js");
96
+ const { tagSetCommand } = await import("./tag-4FCN7T62.js");
84
97
  await tagSetCommand(skill, contexts ?? []);
85
98
  });
86
99
  tag.command("show <skill>").description("Show current context tags for a skill").action(async (skill) => {
87
- const { tagShowCommand } = await import("./tag-DAWGOKEO.js");
100
+ const { tagShowCommand } = await import("./tag-4FCN7T62.js");
88
101
  await tagShowCommand(skill);
89
102
  });
90
103
  tag.command("migrate").description("Interactively assign context tags to all untagged skills").action(async () => {
91
- const { tagMigrateCommand } = await import("./tag-DAWGOKEO.js");
104
+ const { tagMigrateCommand } = await import("./tag-4FCN7T62.js");
92
105
  await tagMigrateCommand();
93
106
  });
94
107
  var author = program.command("author").description("Create and edit self-authored skills");
95
108
  author.command("new <name>").description("Scaffold a new skill and open it in $EDITOR").option("--no-edit", "Skip opening the editor after creating").action(async (name, opts) => {
96
- const { authorNewCommand } = await import("./author-W7UKRDYO.js");
109
+ const { authorNewCommand } = await import("./author-MZWTET4S.js");
97
110
  await authorNewCommand(name, { noEdit: !opts.edit });
98
111
  });
99
112
  author.command("edit <name>").description("Open an existing skill in $EDITOR").action(async (name) => {
100
- const { authorEditCommand } = await import("./author-W7UKRDYO.js");
113
+ const { authorEditCommand } = await import("./author-MZWTET4S.js");
101
114
  await authorEditCommand(name);
102
115
  });
103
116
  var home = program.command("home").description("Manage a personal GitHub repo for backing up your skills manifest");
104
117
  home.command("set <repo>").description("Set the home repo e.g. augy home set alice/my-skills").option("--path <file>", "Manifest path within the repo (default: augy.json)").option("--skills-path <dir>", "Dir for authored skills in the repo (default: skills)").action(async (repo, opts) => {
105
- const { homeSetCommand } = await import("./home-PGOEFTIJ.js");
118
+ const { homeSetCommand } = await import("./home-4YAHJIJL.js");
106
119
  await homeSetCommand(repo, opts);
107
120
  });
108
121
  home.command("push").description("Push your installed skills manifest to the home repo").action(async () => {
109
- const { homePushCommand } = await import("./home-PGOEFTIJ.js");
122
+ const { homePushCommand } = await import("./home-4YAHJIJL.js");
110
123
  await homePushCommand();
111
124
  });
112
125
  home.command("pull").description("Fetch the manifest from the home repo and sync skills").option("--dry-run", "Preview changes without applying them").option("-a, --agent <agents...>", "Target agent(s) (default: all detected)").option("--context <ctx>", "Pre-select only skills matching this context (e.g. work, personal)").action(async (opts) => {
113
- const { homePullCommand } = await import("./home-PGOEFTIJ.js");
126
+ const { homePullCommand } = await import("./home-4YAHJIJL.js");
114
127
  await homePullCommand(opts);
115
128
  });
116
129
  home.command("show").description("Show the current home repo configuration").action(async () => {
117
- const { homeShowCommand } = await import("./home-PGOEFTIJ.js");
130
+ const { homeShowCommand } = await import("./home-4YAHJIJL.js");
118
131
  await homeShowCommand();
119
132
  });
120
133
  program.action(async () => {
121
- const { installCommand } = await import("./install-4CHE2OFV.js");
134
+ const { installCommand } = await import("./install-WLEVFJFD.js");
122
135
  await installCommand();
123
136
  });
124
137
  program.parse();
125
138
  async function setPinned(skillName, pinned) {
126
139
  const chalk = (await import("chalk")).default;
127
- const { readRegistry, writeRegistry, getSkill } = await import("./registry-KMUHBN75.js");
140
+ const { readRegistry, writeRegistry, getSkill } = await import("./registry-RU24Z5UO.js");
128
141
  const registry = await readRegistry();
129
142
  const skill = getSkill(registry, skillName);
130
143
  if (!skill) {
@@ -3,12 +3,12 @@ import {
3
3
  } from "./chunk-V5GA2ZHU.js";
4
4
  import {
5
5
  archiveExists
6
- } from "./chunk-UJBZ6OAP.js";
6
+ } from "./chunk-G7WKOGAS.js";
7
7
  import {
8
8
  getSkill,
9
9
  readRegistry,
10
10
  shortSha
11
- } from "./chunk-IORULLX5.js";
11
+ } from "./chunk-IBMRS66P.js";
12
12
 
13
13
  // src/commands/info.ts
14
14
  import chalk from "chalk";
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  filterableMultiselect
3
- } from "./chunk-DFZHSX3M.js";
3
+ } from "./chunk-XUQJ2VKV.js";
4
4
  import {
5
5
  resolveSkillFromTaps
6
- } from "./chunk-HKE4L4SD.js";
6
+ } from "./chunk-X23LB7YS.js";
7
7
  import {
8
8
  AGENTS,
9
9
  agentSkillPath,
@@ -20,7 +20,7 @@ import {
20
20
  readRegistry,
21
21
  shortSha,
22
22
  writeRegistry
23
- } from "./chunk-IORULLX5.js";
23
+ } from "./chunk-IBMRS66P.js";
24
24
 
25
25
  // src/commands/install.ts
26
26
  import {
@@ -4,7 +4,7 @@ import {
4
4
  import {
5
5
  listSkills,
6
6
  readRegistry
7
- } from "./chunk-IORULLX5.js";
7
+ } from "./chunk-IBMRS66P.js";
8
8
 
9
9
  // src/commands/list.ts
10
10
  import chalk from "chalk";
@@ -3,6 +3,7 @@ import {
3
3
  augyHome,
4
4
  createSkillRecord,
5
5
  getHomeConfig,
6
+ getMachineContext,
6
7
  getSkill,
7
8
  getTap,
8
9
  listSkills,
@@ -12,6 +13,7 @@ import {
12
13
  removeSkill,
13
14
  removeTap,
14
15
  setHomeConfig,
16
+ setMachineContext,
15
17
  shortSha,
16
18
  skillMatchesContext,
17
19
  tapKey,
@@ -19,12 +21,13 @@ import {
19
21
  versionArchivePath,
20
22
  versionsDir,
21
23
  writeRegistry
22
- } from "./chunk-IORULLX5.js";
24
+ } from "./chunk-IBMRS66P.js";
23
25
  export {
24
26
  addTap,
25
27
  augyHome,
26
28
  createSkillRecord,
27
29
  getHomeConfig,
30
+ getMachineContext,
28
31
  getSkill,
29
32
  getTap,
30
33
  listSkills,
@@ -34,6 +37,7 @@ export {
34
37
  removeSkill,
35
38
  removeTap,
36
39
  setHomeConfig,
40
+ setMachineContext,
37
41
  shortSha,
38
42
  skillMatchesContext,
39
43
  tapKey,
@@ -5,13 +5,13 @@ import {
5
5
  import {
6
6
  archiveExists,
7
7
  restoreVersion
8
- } from "./chunk-UJBZ6OAP.js";
8
+ } from "./chunk-G7WKOGAS.js";
9
9
  import {
10
10
  getSkill,
11
11
  readRegistry,
12
12
  shortSha,
13
13
  writeRegistry
14
- } from "./chunk-IORULLX5.js";
14
+ } from "./chunk-IBMRS66P.js";
15
15
 
16
16
  // src/commands/rollback.ts
17
17
  import { cancel, intro, isCancel, outro, select, spinner } from "@clack/prompts";
@@ -74,7 +74,7 @@ The snapshot may have been pruned.`
74
74
  try {
75
75
  const currentDest = destPaths[0];
76
76
  if (currentDest) {
77
- const { archiveVersion } = await import("./versions-33GF7UP5.js");
77
+ const { archiveVersion } = await import("./versions-SSRDVQ3G.js");
78
78
  await archiveVersion(currentDest, nameArg, skill.sha);
79
79
  }
80
80
  await restoreVersion(nameArg, targetSha, destPaths);
@@ -4,10 +4,10 @@ import {
4
4
  } from "./chunk-KCQY4IDO.js";
5
5
  import {
6
6
  filterableMultiselect
7
- } from "./chunk-DFZHSX3M.js";
7
+ } from "./chunk-XUQJ2VKV.js";
8
8
  import {
9
9
  resolveSkillFromTaps
10
- } from "./chunk-HKE4L4SD.js";
10
+ } from "./chunk-X23LB7YS.js";
11
11
  import {
12
12
  AGENTS
13
13
  } from "./chunk-V5GA2ZHU.js";
@@ -22,7 +22,7 @@ import {
22
22
  readRegistry,
23
23
  shortSha,
24
24
  writeRegistry
25
- } from "./chunk-IORULLX5.js";
25
+ } from "./chunk-IBMRS66P.js";
26
26
 
27
27
  // src/commands/scan.ts
28
28
  import { readdir, readFile } from "fs/promises";
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  searchTaps
3
- } from "./chunk-HKE4L4SD.js";
3
+ } from "./chunk-X23LB7YS.js";
4
4
  import "./chunk-2E5SVRSR.js";
5
5
  import {
6
6
  listSkills,
7
7
  readRegistry,
8
8
  shortSha
9
- } from "./chunk-IORULLX5.js";
9
+ } from "./chunk-IBMRS66P.js";
10
10
 
11
11
  // src/commands/search.ts
12
12
  import { spinner } from "@clack/prompts";
@@ -11,7 +11,7 @@ import {
11
11
  readRegistry,
12
12
  shortSha,
13
13
  writeRegistry
14
- } from "./chunk-IORULLX5.js";
14
+ } from "./chunk-IBMRS66P.js";
15
15
 
16
16
  // src/commands/set-source.ts
17
17
  import { cancel, intro, outro, spinner } from "@clack/prompts";
@@ -15,7 +15,7 @@ import {
15
15
  readRegistry,
16
16
  shortSha,
17
17
  writeRegistry
18
- } from "./chunk-IORULLX5.js";
18
+ } from "./chunk-IBMRS66P.js";
19
19
 
20
20
  // src/commands/sync.ts
21
21
  import {
@@ -3,7 +3,7 @@ import {
3
3
  listSkills,
4
4
  readRegistry,
5
5
  writeRegistry
6
- } from "./chunk-IORULLX5.js";
6
+ } from "./chunk-IBMRS66P.js";
7
7
 
8
8
  // src/commands/tag.ts
9
9
  import { intro, isCancel, multiselect, note, outro } from "@clack/prompts";
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  parseTapArg,
3
3
  tapSource
4
- } from "./chunk-HKE4L4SD.js";
4
+ } from "./chunk-X23LB7YS.js";
5
5
  import {
6
6
  discoverSkills,
7
7
  parseGitHubUrl
@@ -13,7 +13,7 @@ import {
13
13
  removeTap,
14
14
  tapKey,
15
15
  writeRegistry
16
- } from "./chunk-IORULLX5.js";
16
+ } from "./chunk-IBMRS66P.js";
17
17
 
18
18
  // src/commands/tap.ts
19
19
  import { cancel, confirm, intro, isCancel, outro, spinner, text } from "@clack/prompts";
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  pruneVersions
3
- } from "./chunk-UJBZ6OAP.js";
3
+ } from "./chunk-G7WKOGAS.js";
4
4
  import {
5
5
  getSkill,
6
6
  readRegistry,
7
7
  removeSkill,
8
8
  versionsDir,
9
9
  writeRegistry
10
- } from "./chunk-IORULLX5.js";
10
+ } from "./chunk-IBMRS66P.js";
11
11
 
12
12
  // src/commands/uninstall.ts
13
13
  import { cancel, confirm, intro, isCancel, outro, spinner } from "@clack/prompts";
@@ -9,13 +9,13 @@ import {
9
9
  } from "./chunk-2E5SVRSR.js";
10
10
  import {
11
11
  archiveVersion
12
- } from "./chunk-UJBZ6OAP.js";
12
+ } from "./chunk-G7WKOGAS.js";
13
13
  import {
14
14
  listSkills,
15
15
  readRegistry,
16
16
  shortSha,
17
17
  writeRegistry
18
- } from "./chunk-IORULLX5.js";
18
+ } from "./chunk-IBMRS66P.js";
19
19
 
20
20
  // src/commands/update.ts
21
21
  import { cancel, confirm, intro, isCancel, multiselect, outro, spinner } from "@clack/prompts";
@@ -48,12 +48,23 @@ async function updateCommand(nameArg) {
48
48
  outro(chalk.yellow("All skills are pinned \u2014 nothing to update."));
49
49
  return;
50
50
  }
51
+ const authored = unpinned.filter((s2) => !s2.source);
52
+ const withSource = unpinned.filter((s2) => s2.source);
53
+ if (authored.length) {
54
+ console.log(
55
+ chalk.dim(`Skipping ${authored.length} authored skill(s): `) + chalk.dim(authored.map((s2) => s2.name).join(", "))
56
+ );
57
+ }
58
+ if (!withSource.length) {
59
+ outro(chalk.dim("No externally-sourced skills to update."));
60
+ return;
61
+ }
51
62
  const s = spinner();
52
- s.start(`Checking ${unpinned.length} skill(s) for updates\u2026`);
63
+ s.start(`Checking ${withSource.length} skill(s) for updates\u2026`);
53
64
  const candidates = [];
54
65
  const errors = [];
55
66
  await Promise.allSettled(
56
- unpinned.map(async (skill) => {
67
+ withSource.map(async (skill) => {
57
68
  try {
58
69
  const coords = parseGitHubUrl(skill.source);
59
70
  const remote = await discoverSkills(coords);
@@ -3,8 +3,8 @@ import {
3
3
  archiveVersion,
4
4
  pruneVersions,
5
5
  restoreVersion
6
- } from "./chunk-UJBZ6OAP.js";
7
- import "./chunk-IORULLX5.js";
6
+ } from "./chunk-G7WKOGAS.js";
7
+ import "./chunk-IBMRS66P.js";
8
8
  export {
9
9
  archiveExists,
10
10
  archiveVersion,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@callmeradical/augy",
3
- "version": "0.7.2",
3
+ "version": "0.8.1",
4
4
  "description": "Homebrew for AI agent skills — install, version, update, rollback",
5
5
  "type": "module",
6
6
  "license": "MIT",