@iamramo/zanat-cli 0.12.5 → 0.13.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 +102 -16
- package/dist/cli.js +22 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/list.js +1 -1
- package/dist/commands/list.js.map +1 -1
- package/dist/commands/show.d.ts +6 -0
- package/dist/commands/show.d.ts.map +1 -0
- package/dist/commands/show.js +46 -0
- package/dist/commands/show.js.map +1 -0
- package/dist/commands/update.js +1 -1
- package/dist/commands/update.js.map +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -8,20 +8,7 @@ CLI for Zanat - a skill hub for AI agents.
|
|
|
8
8
|
npm install -g @iamramo/zanat-cli
|
|
9
9
|
```
|
|
10
10
|
|
|
11
|
-
##
|
|
12
|
-
|
|
13
|
-
| Command | Description | Usage |
|
|
14
|
-
| -------- | ----------------------------------------------------------- | ---------------------- |
|
|
15
|
-
| `init` | Initialize zanat configuration and clone the hub repository | `zanat init` |
|
|
16
|
-
| `pull` | Pull the latest changes from the hub repository | `zanat pull` |
|
|
17
|
-
| `search` | Search for available skills in the hub | `zanat search [query]` |
|
|
18
|
-
| `add` | Add a skill to your local skills | `zanat add <skill>` |
|
|
19
|
-
| `rm` | Remove a skill from your local skills | `zanat rm <skill>` |
|
|
20
|
-
| `list` | List all added skills | `zanat list` |
|
|
21
|
-
| `update` | Update skill(s) from hub | `zanat update [skill]` |
|
|
22
|
-
| `status` | Show hub and skills status | `zanat status` |
|
|
23
|
-
|
|
24
|
-
## Getting Started
|
|
11
|
+
## Quick Start
|
|
25
12
|
|
|
26
13
|
1. **Initialize zanat:**
|
|
27
14
|
|
|
@@ -72,21 +59,120 @@ npm install -g @iamramo/zanat-cli
|
|
|
72
59
|
```
|
|
73
60
|
|
|
74
61
|
7. **Remove a skill:**
|
|
62
|
+
|
|
75
63
|
```bash
|
|
76
64
|
zanat rm yurchi.code-review
|
|
77
65
|
```
|
|
78
66
|
|
|
67
|
+
## Quick Reference
|
|
68
|
+
|
|
69
|
+
| Command | Description |
|
|
70
|
+
| --------------------------------- | -------------------------------------------------------------- |
|
|
71
|
+
| `zanat init` | Initialize zanat configuration and clone the hub repository |
|
|
72
|
+
| `zanat pull` | Pull the latest changes from the hub repository |
|
|
73
|
+
| `zanat search [query]` | Search for available skills in the hub |
|
|
74
|
+
| `zanat add <skill>` | Add a skill (tracks hub branch by default) |
|
|
75
|
+
| `zanat add <skill> --pin=<ref>` | Add a skill pinned to a specific branch, tag, or commit |
|
|
76
|
+
| `zanat rm <skill>` | Remove a skill from your local skills |
|
|
77
|
+
| `zanat list` | List all added skills with version info |
|
|
78
|
+
| `zanat update [skill]` | Update skill(s) from hub |
|
|
79
|
+
| `zanat status` | Show hub and skills status |
|
|
80
|
+
|
|
81
|
+
## Version Tracking
|
|
82
|
+
|
|
83
|
+
Zanat uses a dual-reference tracking system that distinguishes between what you asked for and what was actually resolved:
|
|
84
|
+
|
|
85
|
+
- **requestedRef**: The branch, tag, or commit you specified (e.g., `main`, `v1.2.0`, `abc1234`)
|
|
86
|
+
- **resolvedCommit**: The actual commit SHA that was resolved from the requested ref
|
|
87
|
+
|
|
88
|
+
### Tracking vs Pinning
|
|
89
|
+
|
|
90
|
+
**Tracking (default)**: Skills track the hub branch for automatic updates
|
|
91
|
+
|
|
92
|
+
```bash
|
|
93
|
+
zanat add vercel.frontend.react-patterns
|
|
94
|
+
# Tracks main branch, updates with 'zanat update'
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
**Pinning**: Lock a skill to a specific version that never auto-updates
|
|
98
|
+
|
|
99
|
+
```bash
|
|
100
|
+
# Pin to a branch (follows branch updates but not hub branch)
|
|
101
|
+
zanat add vercel.frontend.react-patterns --pin=develop
|
|
102
|
+
|
|
103
|
+
# Pin to a tag (never updates)
|
|
104
|
+
zanat add vercel.frontend.react-patterns --pin=v1.2.0
|
|
105
|
+
|
|
106
|
+
# Pin to a specific commit (never updates)
|
|
107
|
+
zanat add vercel.frontend.react-patterns --pin=abc1234
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
### Reference Status
|
|
111
|
+
|
|
112
|
+
Skills can have three reference states:
|
|
113
|
+
|
|
114
|
+
- **✓ ok**: The requested ref exists and resolves to a commit
|
|
115
|
+
- **⚠ orphaned**: The ref (branch/tag) no longer exists, but the commit is preserved
|
|
116
|
+
- **✗ broken**: Neither the ref nor the commit exist (skill files remain but can't update)
|
|
117
|
+
|
|
118
|
+
Check status with:
|
|
119
|
+
|
|
120
|
+
```bash
|
|
121
|
+
zanat list # Shows ref status in version column
|
|
122
|
+
zanat status # Detailed status for all skills
|
|
123
|
+
zanat update # Warns about orphaned/broken skills before updating
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
### Fixing Orphaned Skills
|
|
127
|
+
|
|
128
|
+
If a skill becomes orphaned (the branch was deleted), re-pin it to the hub branch:
|
|
129
|
+
|
|
130
|
+
```bash
|
|
131
|
+
zanat add vercel.frontend.react-patterns
|
|
132
|
+
# Re-adds without --pin, which tracks the hub branch
|
|
133
|
+
```
|
|
134
|
+
|
|
79
135
|
## Configuration
|
|
80
136
|
|
|
81
137
|
Configuration is stored in `~/.zanat/config.json`:
|
|
82
138
|
|
|
83
139
|
```json
|
|
84
140
|
{
|
|
85
|
-
"hubUrl": "
|
|
86
|
-
"hubBranch": "main"
|
|
141
|
+
"hubUrl": "git@github.com:iamramo/zanat-hub.git",
|
|
142
|
+
"hubBranch": "main",
|
|
143
|
+
"hubDir": "/Users/you/.zanat/hub",
|
|
144
|
+
"lastPull": "2026-03-23T12:00:00.000Z"
|
|
87
145
|
}
|
|
88
146
|
```
|
|
89
147
|
|
|
148
|
+
## Troubleshooting
|
|
149
|
+
|
|
150
|
+
### Enable Debug Mode
|
|
151
|
+
|
|
152
|
+
If you encounter errors, enable debug mode to see detailed error information:
|
|
153
|
+
|
|
154
|
+
```bash
|
|
155
|
+
ZANAT_DEBUG=true zanat status
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
This outputs the full error details in JSON format, helpful for debugging issues.
|
|
159
|
+
|
|
160
|
+
### Common Issues
|
|
161
|
+
|
|
162
|
+
**"Failed to initialize"**
|
|
163
|
+
|
|
164
|
+
- Ensure Git is installed and accessible in your PATH
|
|
165
|
+
- Check that you have permission to clone the hub repository
|
|
166
|
+
|
|
167
|
+
**"Failed to pull"**
|
|
168
|
+
|
|
169
|
+
- Verify your hub repository URL is correct in `~/.zanat/config.json`
|
|
170
|
+
- Check network connectivity to the Git host
|
|
171
|
+
|
|
172
|
+
**"Could not read the lock file"**
|
|
173
|
+
|
|
174
|
+
- Run `zanat init` to create the initial configuration
|
|
175
|
+
|
|
90
176
|
## License
|
|
91
177
|
|
|
92
178
|
MIT
|
package/dist/cli.js
CHANGED
|
@@ -8,6 +8,7 @@ import { updateCommand } from './commands/update.js';
|
|
|
8
8
|
import { listCommand } from './commands/list.js';
|
|
9
9
|
import { searchCommand } from './commands/search.js';
|
|
10
10
|
import { statusCommand } from './commands/status.js';
|
|
11
|
+
import { showCommand } from './commands/show.js';
|
|
11
12
|
const program = Command.create();
|
|
12
13
|
program.name('zanat').description('Your personal skill library from any Git repository').version(packageJson.version);
|
|
13
14
|
program.helpCommand(false);
|
|
@@ -162,6 +163,27 @@ Note:
|
|
|
162
163
|
Results show skill names with truncated descriptions.
|
|
163
164
|
`)
|
|
164
165
|
.action(searchCommand);
|
|
166
|
+
program
|
|
167
|
+
.command('show <skill>')
|
|
168
|
+
.description('Show skill content')
|
|
169
|
+
.option('-r, --ref <ref>', 'Show content at a specific ref (branch, tag, or commit). Requires a value (e.g., --ref=main, --ref=v1.0.0, --ref=abc123).')
|
|
170
|
+
.addHelpText('after', `
|
|
171
|
+
Examples:
|
|
172
|
+
$ zanat show vercel.react-patterns
|
|
173
|
+
Display the full content of the skill from current hub branch
|
|
174
|
+
|
|
175
|
+
$ zanat show vercel.react-patterns --ref=develop
|
|
176
|
+
Display content from the 'develop' branch
|
|
177
|
+
|
|
178
|
+
$ zanat show vercel.react-patterns --ref=v1.2.0
|
|
179
|
+
Display content from tag v1.2.0
|
|
180
|
+
|
|
181
|
+
Note:
|
|
182
|
+
Shows the raw SKILL.md content of the skill.
|
|
183
|
+
By default, shows content from the current hub branch filesystem.
|
|
184
|
+
Use --ref to view content from a different branch, tag, or commit.
|
|
185
|
+
`)
|
|
186
|
+
.action(showCommand);
|
|
165
187
|
program
|
|
166
188
|
.command('status')
|
|
167
189
|
.description('Show hub and skills status')
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,WAAW,MAAM,iBAAiB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/list.js
CHANGED
|
@@ -20,7 +20,7 @@ export const listCommand = async () => {
|
|
|
20
20
|
});
|
|
21
21
|
}
|
|
22
22
|
Log.blank();
|
|
23
|
-
Log.gray(`Total: ${skillNames.length} skill
|
|
23
|
+
Log.gray(`Total: ${skillNames.length} skill(s)`);
|
|
24
24
|
}
|
|
25
25
|
catch (error) {
|
|
26
26
|
Log.red('Failed to list skills', { prefix: '✗' });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAErE,MAAM,CAAC,MAAM,WAAW,GAAG,KAAK,IAAmB,EAAE;IACnD,IAAI,CAAC;QACH,gCAAgC;QAChC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC;QACxB,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,OAAO,EAAE,CAAC;QACxC,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAEvC,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5B,GAAG,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;YAC7B,GAAG,CAAC,IAAI,CAAC,sEAAsE,CAAC,CAAC;YACjF,OAAO;QACT,CAAC;QAED,uCAAuC;QACvC,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAC1B,GAAG,CAAC,KAAK,EAAE,CAAC;QAEZ,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;YACnC,MAAM,cAAc,GAAG,MAAM,OAAO,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;YAClE,GAAG,CAAC,KAAK,CAAC,GAAG,SAAS,IAAI,cAAc,EAAE,EAAE;gBAC1C,MAAM,EAAE,GAAG;aACZ,CAAC,CAAC;QACL,CAAC;QAED,GAAG,CAAC,KAAK,EAAE,CAAC;QACZ,GAAG,CAAC,IAAI,CAAC,UAAU,UAAU,CAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAErE,MAAM,CAAC,MAAM,WAAW,GAAG,KAAK,IAAmB,EAAE;IACnD,IAAI,CAAC;QACH,gCAAgC;QAChC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC;QACxB,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,OAAO,EAAE,CAAC;QACxC,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAEvC,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5B,GAAG,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;YAC7B,GAAG,CAAC,IAAI,CAAC,sEAAsE,CAAC,CAAC;YACjF,OAAO;QACT,CAAC;QAED,uCAAuC;QACvC,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAC1B,GAAG,CAAC,KAAK,EAAE,CAAC;QAEZ,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;YACnC,MAAM,cAAc,GAAG,MAAM,OAAO,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;YAClE,GAAG,CAAC,KAAK,CAAC,GAAG,SAAS,IAAI,cAAc,EAAE,EAAE;gBAC1C,MAAM,EAAE,GAAG;aACZ,CAAC,CAAC;QACL,CAAC;QAED,GAAG,CAAC,KAAK,EAAE,CAAC;QACZ,GAAG,CAAC,IAAI,CAAC,UAAU,UAAU,CAAC,MAAM,WAAW,CAAC,CAAC;IACnD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,GAAG,CAAC,GAAG,CAAC,uBAAuB,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;QAClD,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACjB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"show.d.ts","sourceRoot":"","sources":["../../src/commands/show.ts"],"names":[],"mappings":"AAQA,UAAU,WAAW;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,eAAO,MAAM,WAAW,GAAU,eAAe,MAAM,EAAE,SAAS,WAAW,KAAG,OAAO,CAAC,IAAI,CAyC3F,CAAC"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { Skill, Log, Config, Zod, Path, Git } from '@iamramo/zanat-core';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
const RefOptionSchema = z.union([
|
|
4
|
+
z.string().min(1, '--ref requires a value (branch, tag, or commit)'),
|
|
5
|
+
z.undefined(),
|
|
6
|
+
]);
|
|
7
|
+
export const showCommand = async (fullSkillName, options) => {
|
|
8
|
+
try {
|
|
9
|
+
// Step 1: Validate inputs
|
|
10
|
+
await Config.validate();
|
|
11
|
+
Zod.skill.FullSchema.shape.fullName.parse(fullSkillName);
|
|
12
|
+
const refOption = RefOptionSchema.parse(options.ref);
|
|
13
|
+
const { namespace, skillName } = Path.toSkillParts(fullSkillName);
|
|
14
|
+
const hubFilePath = Path.getSkillFilePath(namespace, skillName);
|
|
15
|
+
let content;
|
|
16
|
+
if (refOption !== undefined) {
|
|
17
|
+
// Step 2a: Fetch content from specific ref using git
|
|
18
|
+
try {
|
|
19
|
+
content = await Git.show(refOption, hubFilePath);
|
|
20
|
+
}
|
|
21
|
+
catch {
|
|
22
|
+
Log.red(`Skill not found at ref '${refOption}'`, { prefix: '✗' });
|
|
23
|
+
process.exit(1);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
else {
|
|
27
|
+
// Step 2b: Get skill from filesystem (current branch)
|
|
28
|
+
const skill = await Skill.find(fullSkillName);
|
|
29
|
+
if (!skill) {
|
|
30
|
+
Log.red(`Skill not found in hub: ${fullSkillName}`, { prefix: '✗' });
|
|
31
|
+
Log.gray('Use "zanat search" to find available skills.');
|
|
32
|
+
Log.gray(`If the skill exists on a different branch, use: zanat show ${fullSkillName} --ref=<branch>`);
|
|
33
|
+
process.exit(1);
|
|
34
|
+
}
|
|
35
|
+
content = skill.content;
|
|
36
|
+
}
|
|
37
|
+
// Step 3: Print the content
|
|
38
|
+
console.log(content);
|
|
39
|
+
}
|
|
40
|
+
catch (error) {
|
|
41
|
+
Log.red('Failed to show skill', { prefix: '✗' });
|
|
42
|
+
Log.debug(error);
|
|
43
|
+
process.exit(1);
|
|
44
|
+
}
|
|
45
|
+
};
|
|
46
|
+
//# sourceMappingURL=show.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"show.js","sourceRoot":"","sources":["../../src/commands/show.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAC;AACzE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC;IAC9B,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,iDAAiD,CAAC;IACpE,CAAC,CAAC,SAAS,EAAE;CACd,CAAC,CAAC;AAMH,MAAM,CAAC,MAAM,WAAW,GAAG,KAAK,EAAE,aAAqB,EAAE,OAAoB,EAAiB,EAAE;IAC9F,IAAI,CAAC;QACH,0BAA0B;QAC1B,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC;QACxB,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QAEzD,MAAM,SAAS,GAAG,eAAe,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACrD,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;QAClE,MAAM,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QAEhE,IAAI,OAAe,CAAC;QAEpB,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YAC5B,qDAAqD;YACrD,IAAI,CAAC;gBACH,OAAO,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;YACnD,CAAC;YAAC,MAAM,CAAC;gBACP,GAAG,CAAC,GAAG,CAAC,2BAA2B,SAAS,GAAG,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;gBAClE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;QACH,CAAC;aAAM,CAAC;YACN,sDAAsD;YACtD,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAE9C,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,GAAG,CAAC,GAAG,CAAC,2BAA2B,aAAa,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;gBACrE,GAAG,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAC;gBACzD,GAAG,CAAC,IAAI,CAAC,8DAA8D,aAAa,iBAAiB,CAAC,CAAC;gBACvG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YAED,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;QAC1B,CAAC;QAED,4BAA4B;QAC5B,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACvB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,GAAG,CAAC,GAAG,CAAC,sBAAsB,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;QACjD,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACjB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC"}
|
package/dist/commands/update.js
CHANGED
|
@@ -80,7 +80,6 @@ export const updateCommand = async (fullSkillName) => {
|
|
|
80
80
|
return;
|
|
81
81
|
}
|
|
82
82
|
// Step 4: Prompt user and update all updatable skills
|
|
83
|
-
Log.blank();
|
|
84
83
|
const shouldUpdate = await Prompt.confirm({
|
|
85
84
|
message: `Update ${updatableSkills.length} skill(s)?`,
|
|
86
85
|
default: true,
|
|
@@ -94,6 +93,7 @@ export const updateCommand = async (fullSkillName) => {
|
|
|
94
93
|
for (const { namespace, skillName } of updatableSkills) {
|
|
95
94
|
await Skill.update(namespace, skillName);
|
|
96
95
|
}
|
|
96
|
+
Log.blank();
|
|
97
97
|
Log.green('Updated all skills', { prefix: '✓' });
|
|
98
98
|
}
|
|
99
99
|
catch (error) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@iamramo/zanat-cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.13.0",
|
|
4
4
|
"description": "CLI for zanat - a skill hub for AI agents",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/cli.js",
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
"typecheck": "tsc --noEmit"
|
|
28
28
|
},
|
|
29
29
|
"dependencies": {
|
|
30
|
-
"@iamramo/zanat-core": "^0.12.
|
|
30
|
+
"@iamramo/zanat-core": "^0.12.6"
|
|
31
31
|
},
|
|
32
32
|
"devDependencies": {
|
|
33
33
|
"@types/node": "^25.5.0",
|