skillstore 0.1.3 → 0.1.4

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.
@@ -0,0 +1,101 @@
1
+ import { readFile, writeFile, mkdir } from 'node:fs/promises';
2
+ import { dirname } from 'node:path';
3
+ import { LOCK_FILE_PATH } from './agents.js';
4
+ /**
5
+ * Skill Lock File Management
6
+ *
7
+ * Tracks installed skills with version and hash information
8
+ * for update detection and management.
9
+ */
10
+ /** Lock file version - increment when schema changes */
11
+ export const LOCK_VERSION = 1;
12
+ /** Create empty lock file */
13
+ function createEmptyLock() {
14
+ return {
15
+ version: LOCK_VERSION,
16
+ skills: {},
17
+ };
18
+ }
19
+ /**
20
+ * Read skill lock file
21
+ * Returns empty lock if file doesn't exist or is invalid
22
+ */
23
+ export async function readSkillLock() {
24
+ try {
25
+ const content = await readFile(LOCK_FILE_PATH, 'utf-8');
26
+ const lock = JSON.parse(content);
27
+ // Check version - wipe if outdated
28
+ if (lock.version !== LOCK_VERSION) {
29
+ return createEmptyLock();
30
+ }
31
+ return lock;
32
+ }
33
+ catch {
34
+ // File doesn't exist or invalid JSON
35
+ return createEmptyLock();
36
+ }
37
+ }
38
+ /**
39
+ * Write skill lock file
40
+ */
41
+ export async function writeSkillLock(lock) {
42
+ // Ensure directory exists
43
+ await mkdir(dirname(LOCK_FILE_PATH), { recursive: true });
44
+ // Write with pretty formatting
45
+ await writeFile(LOCK_FILE_PATH, JSON.stringify(lock, null, 2), 'utf-8');
46
+ }
47
+ /**
48
+ * Add or update a skill in the lock file
49
+ */
50
+ export async function addToLock(entry) {
51
+ const lock = await readSkillLock();
52
+ const now = new Date().toISOString();
53
+ const existing = lock.skills[entry.slug];
54
+ lock.skills[entry.slug] = {
55
+ ...entry,
56
+ installedAt: existing?.installedAt || entry.installedAt,
57
+ updatedAt: now,
58
+ };
59
+ await writeSkillLock(lock);
60
+ }
61
+ /**
62
+ * Remove a skill from the lock file
63
+ */
64
+ export async function removeFromLock(slug) {
65
+ const lock = await readSkillLock();
66
+ if (!(slug in lock.skills)) {
67
+ return false;
68
+ }
69
+ delete lock.skills[slug];
70
+ await writeSkillLock(lock);
71
+ return true;
72
+ }
73
+ /**
74
+ * Get a single lock entry
75
+ */
76
+ export async function getLockEntry(slug) {
77
+ const lock = await readSkillLock();
78
+ return lock.skills[slug];
79
+ }
80
+ /**
81
+ * Get all locked skills
82
+ */
83
+ export async function getAllLockedSkills() {
84
+ const lock = await readSkillLock();
85
+ return Object.values(lock.skills);
86
+ }
87
+ /**
88
+ * Check if a skill is in the lock file
89
+ */
90
+ export async function isSkillLocked(slug) {
91
+ const lock = await readSkillLock();
92
+ return slug in lock.skills;
93
+ }
94
+ /**
95
+ * Get count of locked skills
96
+ */
97
+ export async function getLockedSkillCount() {
98
+ const lock = await readSkillLock();
99
+ return Object.keys(lock.skills).length;
100
+ }
101
+ //# sourceMappingURL=skill-lock.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skill-lock.js","sourceRoot":"","sources":["../../src/lib/skill-lock.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "skillstore",
3
- "version": "0.1.3",
3
+ "version": "0.1.4",
4
4
  "description": "Skillstore CLI - AI Skills marketplace for Claude Code",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -41,6 +41,11 @@
41
41
  ],
42
42
  "author": "",
43
43
  "license": "MIT",
44
+ "repository": {
45
+ "type": "git",
46
+ "url": "https://github.com/aiskillstore/marketplace",
47
+ "directory": "packages/skillstore"
48
+ },
44
49
  "dependencies": {
45
50
  "citty": "^0.1.6",
46
51
  "consola": "^3.2.3",