agentic-skill-mill 1.0.3

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.
Files changed (71) hide show
  1. package/README.md +135 -0
  2. package/dist/cache/cache-manager.d.ts +27 -0
  3. package/dist/cache/cache-manager.d.ts.map +1 -0
  4. package/dist/cache/cache-manager.js +139 -0
  5. package/dist/cache/cache-manager.js.map +1 -0
  6. package/dist/cli/commands/check-exports.d.ts +6 -0
  7. package/dist/cli/commands/check-exports.d.ts.map +1 -0
  8. package/dist/cli/commands/check-exports.js +7 -0
  9. package/dist/cli/commands/check-exports.js.map +1 -0
  10. package/dist/cli/commands/list-project.d.ts +6 -0
  11. package/dist/cli/commands/list-project.d.ts.map +1 -0
  12. package/dist/cli/commands/list-project.js +7 -0
  13. package/dist/cli/commands/list-project.js.map +1 -0
  14. package/dist/cli/commands/scaffold.d.ts +6 -0
  15. package/dist/cli/commands/scaffold.d.ts.map +1 -0
  16. package/dist/cli/commands/scaffold.js +11 -0
  17. package/dist/cli/commands/scaffold.js.map +1 -0
  18. package/dist/cli/commands/validate-manifest.d.ts +6 -0
  19. package/dist/cli/commands/validate-manifest.d.ts.map +1 -0
  20. package/dist/cli/commands/validate-manifest.js +7 -0
  21. package/dist/cli/commands/validate-manifest.js.map +1 -0
  22. package/dist/cli/commands/validate-skill.d.ts +6 -0
  23. package/dist/cli/commands/validate-skill.d.ts.map +1 -0
  24. package/dist/cli/commands/validate-skill.js +8 -0
  25. package/dist/cli/commands/validate-skill.js.map +1 -0
  26. package/dist/cli/index.d.ts +3 -0
  27. package/dist/cli/index.d.ts.map +1 -0
  28. package/dist/cli/index.js +268 -0
  29. package/dist/cli/index.js.map +1 -0
  30. package/dist/cli/output-formatter.d.ts +6 -0
  31. package/dist/cli/output-formatter.d.ts.map +1 -0
  32. package/dist/cli/output-formatter.js +19 -0
  33. package/dist/cli/output-formatter.js.map +1 -0
  34. package/dist/core/check-exports.d.ts +21 -0
  35. package/dist/core/check-exports.d.ts.map +1 -0
  36. package/dist/core/check-exports.js +67 -0
  37. package/dist/core/check-exports.js.map +1 -0
  38. package/dist/core/list-project.d.ts +31 -0
  39. package/dist/core/list-project.d.ts.map +1 -0
  40. package/dist/core/list-project.js +118 -0
  41. package/dist/core/list-project.js.map +1 -0
  42. package/dist/core/scaffold.d.ts +24 -0
  43. package/dist/core/scaffold.d.ts.map +1 -0
  44. package/dist/core/scaffold.js +168 -0
  45. package/dist/core/scaffold.js.map +1 -0
  46. package/dist/core/validate-manifest.d.ts +21 -0
  47. package/dist/core/validate-manifest.d.ts.map +1 -0
  48. package/dist/core/validate-manifest.js +151 -0
  49. package/dist/core/validate-manifest.js.map +1 -0
  50. package/dist/core/validate-skill.d.ts +24 -0
  51. package/dist/core/validate-skill.d.ts.map +1 -0
  52. package/dist/core/validate-skill.js +149 -0
  53. package/dist/core/validate-skill.js.map +1 -0
  54. package/dist/errors/types.d.ts +19 -0
  55. package/dist/errors/types.d.ts.map +1 -0
  56. package/dist/errors/types.js +40 -0
  57. package/dist/errors/types.js.map +1 -0
  58. package/dist/index.d.ts +15 -0
  59. package/dist/index.d.ts.map +1 -0
  60. package/dist/index.js +13 -0
  61. package/dist/index.js.map +1 -0
  62. package/package.json +56 -0
  63. package/skill/build/compile.mjs +385 -0
  64. package/skill/build/manifest.json +29 -0
  65. package/skill/fragments/meta/architecture-overview.md +37 -0
  66. package/skill/fragments/meta/cli-command-pattern.md +83 -0
  67. package/skill/fragments/meta/core-module-pattern.md +38 -0
  68. package/skill/fragments/meta/fragment-composition.md +40 -0
  69. package/skill/fragments/meta/rename-workflow.md +51 -0
  70. package/skill/fragments/meta/research-to-code.md +44 -0
  71. package/skill/skills/agentic-skill-mill/agentic-skill-mill.md +133 -0
package/README.md ADDED
@@ -0,0 +1,135 @@
1
+ # Agentic Skill Mill
2
+
3
+ Forge and refine agent skill projects. The skill teaches agents how to work with the skill-system-template architecture; the companion CLI (`skillmill`) provides structured commands for inspecting, inventorying, and forging project components.
4
+
5
+ ## Quick Start
6
+
7
+ ```bash
8
+ npm install
9
+ npm run build
10
+ npm run compile
11
+ bash install.sh # auto-detect installed tools
12
+ bash install.sh --all # or install for all tools
13
+ ```
14
+
15
+ ## Architecture
16
+
17
+ ```
18
+ Skills (what to do) CLI Companion (tools to do it with)
19
+ skill/skills/*.md src/cli/commands/*.ts
20
+ skill/fragments/*.md src/core/*.ts
21
+ | |
22
+ v v
23
+ compiled/ (7 IDE formats) dist/ (npm link -> global CLI)
24
+ | |
25
+ +---------> Agent <----------+
26
+ ```
27
+
28
+ **Skills** are step-by-step runbooks that agents follow. They reference the CLI by name.
29
+
30
+ **The CLI** (`skillmill`) provides structured JSON commands that skills invoke. Every command has `--json` support.
31
+
32
+ **Fragments** are shared knowledge blocks included by multiple skills. Edit a fragment once, recompile, and every skill gets the update.
33
+
34
+ ## CLI Commands
35
+
36
+ | Command | Description |
37
+ |---------|-------------|
38
+ | `skillmill inspect-manifest [path]` | Inspect a manifest.json for correctness |
39
+ | `skillmill inspect-skill <path>` | Inspect a skill source .md file |
40
+ | `skillmill inventory` | Take stock of all skills, fragments, and targets |
41
+ | `skillmill forge <kind> <name>` | Forge scaffolding (command, skill, fragment) |
42
+ | `skillmill audit-exports` | Audit that src/index.ts exports match core modules |
43
+
44
+ All commands support `--json` for structured agent consumption.
45
+
46
+ ## Project Layout
47
+
48
+ ```
49
+ skill/
50
+ build/
51
+ manifest.json # Declares skills, fragment deps, compilation targets
52
+ compile.mjs # Compiler: resolves includes, transforms frontmatter
53
+ fragments/
54
+ meta/ # Knowledge about the skill system itself
55
+ skills/
56
+ agentic-skill-mill/ # The skill source
57
+
58
+ src/
59
+ cli/
60
+ index.ts # CLI entry point (commander)
61
+ output-formatter.ts # JSON + human-readable formatting
62
+ commands/ # One file per command
63
+ core/ # Domain logic modules
64
+ cache/ # Two-tier cache (memory + disk)
65
+ errors/ # Typed error hierarchy
66
+
67
+ compiled/ # Machine-generated, one subdir per IDE target
68
+ contributions/ # Field observations from real runs
69
+ install.sh # One-command setup: build CLI + install skills
70
+ ```
71
+
72
+ ## How to Add a Skill
73
+
74
+ 1. Create the source file at `skill/skills/<name>/<name>.md` with YAML frontmatter
75
+ 2. Register it in `skill/build/manifest.json`
76
+ 3. Add the skill name to the `SKILLS` array in `install.sh`
77
+ 4. Compile and validate: `npm run compile && npm run compile:validate`
78
+
79
+ ## How to Add a Fragment
80
+
81
+ 1. Create the fragment at `skill/fragments/<category>/<name>.md` (no frontmatter)
82
+ 2. Include it in skills with `{{include:<category>/<name>.md}}`
83
+ 3. Declare it in `manifest.json` under each skill's `fragments` array
84
+
85
+ ## How to Add a CLI Command
86
+
87
+ 1. Create the core module at `src/core/<module>.ts`
88
+ 2. Create the command wrapper at `src/cli/commands/<name>.ts`
89
+ 3. Register the command in `src/cli/index.ts`
90
+ 4. Export the public API from `src/index.ts`
91
+ 5. Rebuild: `npm run build`
92
+
93
+ Or use the forge command: `skillmill forge command <name> --write`
94
+
95
+ ## Compilation Targets
96
+
97
+ | Target | Output path | Frontmatter |
98
+ |--------|------------|-------------|
99
+ | `claude` | `compiled/claude/<skill>/SKILL.md` | Pass-through + managed_by |
100
+ | `cursor-rules` | `compiled/cursor/rules/<skill>.mdc` | description + alwaysApply |
101
+ | `cursor-skills` | `compiled/cursor/skills/<skill>/SKILL.md` | Pass-through + managed_by |
102
+ | `windsurf-rules` | `compiled/windsurf/rules/<skill>.md` | trigger + description |
103
+ | `windsurf-skills` | `compiled/windsurf/skills/<skill>/SKILL.md` | Pass-through + managed_by |
104
+ | `opencode` | `compiled/opencode/<skill>.md` | mode + description + tools |
105
+ | `codex` | `compiled/codex/<skill>/SKILL.md` | Pass-through + managed_by |
106
+
107
+ ## Testing
108
+
109
+ ```bash
110
+ npm run test # Run all tests
111
+ npm run test:watch # Watch mode
112
+ npm run test:coverage # Coverage report
113
+ npm run lint # ESLint
114
+ npm run typecheck # tsc --noEmit
115
+ npm run compile:validate # Validate skill compilation
116
+ ```
117
+
118
+ ## Automated npm Releases (GitHub Actions)
119
+
120
+ This repo includes `.github/workflows/release.yml` to build, test, bump patch version, and publish to npm when changes land on `main` (or when manually triggered).
121
+
122
+ Required GitHub repository secrets:
123
+
124
+ - `AGENT_TOKEN`: personal access token with `repo` scope (used to push the version bump commit + tag)
125
+ - `NPM_TOKEN`: npm automation token for publishing to npmjs
126
+
127
+ Workflow behavior:
128
+
129
+ 1. `npm ci`
130
+ 2. `npm run build`
131
+ 3. `npm run test`
132
+ 4. `npm run compile:validate`
133
+ 5. `npm version patch`
134
+ 6. `git push --follow-tags`
135
+ 7. `npm publish --access public`
@@ -0,0 +1,27 @@
1
+ export interface CacheEntry<T> {
2
+ data: T;
3
+ timestamp: number;
4
+ ttl: number;
5
+ }
6
+ export interface CacheStats {
7
+ entries: number;
8
+ sizeBytes: number;
9
+ expired: number;
10
+ }
11
+ export interface CacheOptions {
12
+ ttl: number;
13
+ }
14
+ export declare class CacheManager {
15
+ private cacheDir;
16
+ private memoryCache;
17
+ constructor(cacheDir: string);
18
+ get<T>(key: string): Promise<T | null>;
19
+ set<T>(key: string, data: T, options: CacheOptions): Promise<void>;
20
+ clear(): Promise<void>;
21
+ clearPrefix(prefix: string): Promise<void>;
22
+ getStats(): Promise<CacheStats>;
23
+ private isExpired;
24
+ private writeToDisk;
25
+ private readFromDisk;
26
+ }
27
+ //# sourceMappingURL=cache-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache-manager.d.ts","sourceRoot":"","sources":["../../src/cache/cache-manager.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,UAAU,CAAC,CAAC;IAC3B,IAAI,EAAE,CAAC,CAAC;IACR,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAC;CACb;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,WAAW,CAAmC;gBAE1C,QAAQ,EAAE,MAAM;IAKtB,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IA0BtC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAmBlE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAwBtB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA8B1C,QAAQ,IAAI,OAAO,CAAC,UAAU,CAAC;IAsCrC,OAAO,CAAC,SAAS;YAKH,WAAW;YASX,YAAY;CAW3B"}
@@ -0,0 +1,139 @@
1
+ import fs from 'fs/promises';
2
+ import path from 'path';
3
+ import { CacheError } from '../errors/types.js';
4
+ export class CacheManager {
5
+ cacheDir;
6
+ memoryCache;
7
+ constructor(cacheDir) {
8
+ this.cacheDir = cacheDir;
9
+ this.memoryCache = new Map();
10
+ }
11
+ async get(key) {
12
+ try {
13
+ const memEntry = this.memoryCache.get(key);
14
+ if (memEntry) {
15
+ if (!this.isExpired(memEntry)) {
16
+ return memEntry.data;
17
+ }
18
+ this.memoryCache.delete(key);
19
+ }
20
+ const diskEntry = await this.readFromDisk(key);
21
+ if (diskEntry && !this.isExpired(diskEntry)) {
22
+ this.memoryCache.set(key, diskEntry);
23
+ return diskEntry.data;
24
+ }
25
+ return null;
26
+ }
27
+ catch (error) {
28
+ throw new CacheError(`Failed to retrieve key: ${key}`, 'read', error instanceof Error ? error : undefined);
29
+ }
30
+ }
31
+ async set(key, data, options) {
32
+ try {
33
+ const entry = {
34
+ data,
35
+ timestamp: Date.now(),
36
+ ttl: options.ttl,
37
+ };
38
+ this.memoryCache.set(key, entry);
39
+ await this.writeToDisk(key, entry);
40
+ }
41
+ catch (error) {
42
+ throw new CacheError(`Failed to set key: ${key}`, 'write', error instanceof Error ? error : undefined);
43
+ }
44
+ }
45
+ async clear() {
46
+ try {
47
+ this.memoryCache.clear();
48
+ const exists = await fs
49
+ .access(this.cacheDir)
50
+ .then(() => true)
51
+ .catch(() => false);
52
+ if (exists) {
53
+ const files = await fs.readdir(this.cacheDir);
54
+ for (const file of files) {
55
+ await fs.unlink(path.join(this.cacheDir, file));
56
+ }
57
+ }
58
+ }
59
+ catch (error) {
60
+ throw new CacheError('Failed to clear cache', 'clear', error instanceof Error ? error : undefined);
61
+ }
62
+ }
63
+ async clearPrefix(prefix) {
64
+ try {
65
+ for (const key of this.memoryCache.keys()) {
66
+ if (key.startsWith(prefix)) {
67
+ this.memoryCache.delete(key);
68
+ }
69
+ }
70
+ const exists = await fs
71
+ .access(this.cacheDir)
72
+ .then(() => true)
73
+ .catch(() => false);
74
+ if (exists) {
75
+ const files = await fs.readdir(this.cacheDir);
76
+ for (const file of files) {
77
+ if (file.startsWith(prefix.replace(/:/g, '_'))) {
78
+ await fs.unlink(path.join(this.cacheDir, file));
79
+ }
80
+ }
81
+ }
82
+ }
83
+ catch (error) {
84
+ throw new CacheError(`Failed to clear prefix: ${prefix}`, 'clear', error instanceof Error ? error : undefined);
85
+ }
86
+ }
87
+ async getStats() {
88
+ try {
89
+ let entries = 0;
90
+ let expired = 0;
91
+ let sizeBytes = 0;
92
+ for (const entry of this.memoryCache.values()) {
93
+ entries++;
94
+ sizeBytes += JSON.stringify(entry).length;
95
+ if (this.isExpired(entry)) {
96
+ expired++;
97
+ }
98
+ }
99
+ const exists = await fs
100
+ .access(this.cacheDir)
101
+ .then(() => true)
102
+ .catch(() => false);
103
+ if (exists) {
104
+ const files = await fs.readdir(this.cacheDir);
105
+ for (const file of files) {
106
+ const filePath = path.join(this.cacheDir, file);
107
+ const stats = await fs.stat(filePath);
108
+ sizeBytes += stats.size;
109
+ }
110
+ }
111
+ return { entries, sizeBytes, expired };
112
+ }
113
+ catch (error) {
114
+ throw new CacheError('Failed to get cache stats', 'read', error instanceof Error ? error : undefined);
115
+ }
116
+ }
117
+ isExpired(entry) {
118
+ const ageSeconds = (Date.now() - entry.timestamp) / 1000;
119
+ return ageSeconds > entry.ttl;
120
+ }
121
+ async writeToDisk(key, entry) {
122
+ await fs.mkdir(this.cacheDir, { recursive: true });
123
+ const filename = key.replace(/[:/]/g, '_') + '.json';
124
+ const filePath = path.join(this.cacheDir, filename);
125
+ await fs.writeFile(filePath, JSON.stringify(entry, null, 2));
126
+ }
127
+ async readFromDisk(key) {
128
+ try {
129
+ const filename = key.replace(/[:/]/g, '_') + '.json';
130
+ const filePath = path.join(this.cacheDir, filename);
131
+ const content = await fs.readFile(filePath, 'utf-8');
132
+ return JSON.parse(content);
133
+ }
134
+ catch {
135
+ return null;
136
+ }
137
+ }
138
+ }
139
+ //# sourceMappingURL=cache-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache-manager.js","sourceRoot":"","sources":["../../src/cache/cache-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { type CheckExportsOptions, type CheckExportsResult } from '../../core/check-exports.js';
2
+ export interface CheckExportsCommandOptions extends CheckExportsOptions {
3
+ json: boolean;
4
+ }
5
+ export declare function checkExportsCommand(options: CheckExportsCommandOptions): Promise<CheckExportsResult>;
6
+ //# sourceMappingURL=check-exports.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"check-exports.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/check-exports.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,mBAAmB,EAAE,KAAK,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAE9G,MAAM,WAAW,0BAA2B,SAAQ,mBAAmB;IACrE,IAAI,EAAE,OAAO,CAAC;CACf;AAED,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,0BAA0B,GAClC,OAAO,CAAC,kBAAkB,CAAC,CAI7B"}
@@ -0,0 +1,7 @@
1
+ import { checkExports } from '../../core/check-exports.js';
2
+ export async function checkExportsCommand(options) {
3
+ return checkExports({
4
+ cwd: options.cwd,
5
+ });
6
+ }
7
+ //# sourceMappingURL=check-exports.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"check-exports.js","sourceRoot":"","sources":["../../../src/cli/commands/check-exports.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAqD,MAAM,6BAA6B,CAAC;AAM9G,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,OAAmC;IAEnC,OAAO,YAAY,CAAC;QAClB,GAAG,EAAE,OAAO,CAAC,GAAG;KACjB,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { type ListProjectOptions, type ListProjectResult } from '../../core/list-project.js';
2
+ export interface ListProjectCommandOptions extends ListProjectOptions {
3
+ json: boolean;
4
+ }
5
+ export declare function listProjectCommand(options: ListProjectCommandOptions): Promise<ListProjectResult>;
6
+ //# sourceMappingURL=list-project.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-project.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/list-project.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,KAAK,kBAAkB,EAAE,KAAK,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAE1G,MAAM,WAAW,yBAA0B,SAAQ,kBAAkB;IACnE,IAAI,EAAE,OAAO,CAAC;CACf;AAED,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,yBAAyB,GACjC,OAAO,CAAC,iBAAiB,CAAC,CAI5B"}
@@ -0,0 +1,7 @@
1
+ import { listProject } from '../../core/list-project.js';
2
+ export async function listProjectCommand(options) {
3
+ return listProject({
4
+ cwd: options.cwd,
5
+ });
6
+ }
7
+ //# sourceMappingURL=list-project.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-project.js","sourceRoot":"","sources":["../../../src/cli/commands/list-project.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAmD,MAAM,4BAA4B,CAAC;AAM1G,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,OAAkC;IAElC,OAAO,WAAW,CAAC;QACjB,GAAG,EAAE,OAAO,CAAC,GAAG;KACjB,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { type ScaffoldOptions, type ScaffoldResult } from '../../core/scaffold.js';
2
+ export interface ScaffoldCommandOptions extends ScaffoldOptions {
3
+ json: boolean;
4
+ }
5
+ export declare function scaffoldCommand(options: ScaffoldCommandOptions): Promise<ScaffoldResult>;
6
+ //# sourceMappingURL=scaffold.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scaffold.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/scaffold.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,eAAe,EAAE,KAAK,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAE7F,MAAM,WAAW,sBAAuB,SAAQ,eAAe;IAC7D,IAAI,EAAE,OAAO,CAAC;CACf;AAED,wBAAsB,eAAe,CACnC,OAAO,EAAE,sBAAsB,GAC9B,OAAO,CAAC,cAAc,CAAC,CAQzB"}
@@ -0,0 +1,11 @@
1
+ import { scaffold } from '../../core/scaffold.js';
2
+ export async function scaffoldCommand(options) {
3
+ return scaffold({
4
+ kind: options.kind,
5
+ name: options.name,
6
+ cwd: options.cwd,
7
+ category: options.category,
8
+ description: options.description,
9
+ });
10
+ }
11
+ //# sourceMappingURL=scaffold.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scaffold.js","sourceRoot":"","sources":["../../../src/cli/commands/scaffold.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAA6C,MAAM,wBAAwB,CAAC;AAM7F,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,OAA+B;IAE/B,OAAO,QAAQ,CAAC;QACd,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,WAAW,EAAE,OAAO,CAAC,WAAW;KACjC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { type ValidateManifestOptions, type ValidateManifestResult } from '../../core/validate-manifest.js';
2
+ export interface ValidateManifestCommandOptions extends ValidateManifestOptions {
3
+ json: boolean;
4
+ }
5
+ export declare function validateManifestCommand(options: ValidateManifestCommandOptions): Promise<ValidateManifestResult>;
6
+ //# sourceMappingURL=validate-manifest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate-manifest.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/validate-manifest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,KAAK,uBAAuB,EAAE,KAAK,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AAE9H,MAAM,WAAW,8BAA+B,SAAQ,uBAAuB;IAC7E,IAAI,EAAE,OAAO,CAAC;CACf;AAED,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,8BAA8B,GACtC,OAAO,CAAC,sBAAsB,CAAC,CAIjC"}
@@ -0,0 +1,7 @@
1
+ import { validateManifest } from '../../core/validate-manifest.js';
2
+ export async function validateManifestCommand(options) {
3
+ return validateManifest({
4
+ manifestPath: options.manifestPath,
5
+ });
6
+ }
7
+ //# sourceMappingURL=validate-manifest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate-manifest.js","sourceRoot":"","sources":["../../../src/cli/commands/validate-manifest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAA6D,MAAM,iCAAiC,CAAC;AAM9H,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,OAAuC;IAEvC,OAAO,gBAAgB,CAAC;QACtB,YAAY,EAAE,OAAO,CAAC,YAAY;KACnC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { type ValidateSkillOptions, type ValidateSkillResult } from '../../core/validate-skill.js';
2
+ export interface ValidateSkillCommandOptions extends ValidateSkillOptions {
3
+ json: boolean;
4
+ }
5
+ export declare function validateSkillCommand(options: ValidateSkillCommandOptions): Promise<ValidateSkillResult>;
6
+ //# sourceMappingURL=validate-skill.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate-skill.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/validate-skill.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,oBAAoB,EAAE,KAAK,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAElH,MAAM,WAAW,2BAA4B,SAAQ,oBAAoB;IACvE,IAAI,EAAE,OAAO,CAAC;CACf;AAED,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,2BAA2B,GACnC,OAAO,CAAC,mBAAmB,CAAC,CAK9B"}
@@ -0,0 +1,8 @@
1
+ import { validateSkill } from '../../core/validate-skill.js';
2
+ export async function validateSkillCommand(options) {
3
+ return validateSkill({
4
+ skillPath: options.skillPath,
5
+ fragmentsDir: options.fragmentsDir,
6
+ });
7
+ }
8
+ //# sourceMappingURL=validate-skill.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate-skill.js","sourceRoot":"","sources":["../../../src/cli/commands/validate-skill.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAuD,MAAM,8BAA8B,CAAC;AAMlH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,OAAoC;IAEpC,OAAO,aAAa,CAAC;QACnB,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,YAAY,EAAE,OAAO,CAAC,YAAY;KACnC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":""}