agent-skills-cli 1.0.8 → 1.1.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.
Files changed (178) hide show
  1. package/README.md +44 -19
  2. package/dist/adapters/adapter.d.ts +51 -0
  3. package/dist/adapters/adapter.d.ts.map +1 -0
  4. package/dist/adapters/adapter.js +51 -0
  5. package/dist/adapters/adapter.js.map +1 -0
  6. package/dist/adapters/claude.d.ts +16 -0
  7. package/dist/adapters/claude.d.ts.map +1 -0
  8. package/dist/adapters/claude.js +30 -0
  9. package/dist/adapters/claude.js.map +1 -0
  10. package/dist/adapters/copilot.d.ts +16 -0
  11. package/dist/adapters/copilot.d.ts.map +1 -0
  12. package/dist/adapters/copilot.js +32 -0
  13. package/dist/adapters/copilot.js.map +1 -0
  14. package/dist/adapters/cursor.d.ts +17 -0
  15. package/dist/adapters/cursor.d.ts.map +1 -0
  16. package/dist/adapters/cursor.js +34 -0
  17. package/dist/adapters/cursor.js.map +1 -0
  18. package/dist/adapters/index.d.ts +11 -0
  19. package/dist/adapters/index.d.ts.map +1 -0
  20. package/dist/adapters/index.js +10 -0
  21. package/dist/adapters/index.js.map +1 -0
  22. package/dist/adapters/universal.d.ts +12 -0
  23. package/dist/adapters/universal.d.ts.map +1 -0
  24. package/dist/adapters/universal.js +16 -0
  25. package/dist/adapters/universal.js.map +1 -0
  26. package/dist/cli/agents.d.ts +21 -0
  27. package/dist/cli/agents.d.ts.map +1 -0
  28. package/dist/cli/agents.js +317 -0
  29. package/dist/cli/agents.js.map +1 -0
  30. package/dist/cli/commands/audit.d.ts +11 -0
  31. package/dist/cli/commands/audit.d.ts.map +1 -0
  32. package/dist/cli/commands/audit.js +168 -0
  33. package/dist/cli/commands/audit.js.map +1 -0
  34. package/dist/cli/commands/blueprint.d.ts +11 -0
  35. package/dist/cli/commands/blueprint.d.ts.map +1 -0
  36. package/dist/cli/commands/blueprint.js +210 -0
  37. package/dist/cli/commands/blueprint.js.map +1 -0
  38. package/dist/cli/commands/bootstrap.d.ts +11 -0
  39. package/dist/cli/commands/bootstrap.d.ts.map +1 -0
  40. package/dist/cli/commands/bootstrap.js +267 -0
  41. package/dist/cli/commands/bootstrap.js.map +1 -0
  42. package/dist/cli/commands/capture.d.ts +11 -0
  43. package/dist/cli/commands/capture.d.ts.map +1 -0
  44. package/dist/cli/commands/capture.js +109 -0
  45. package/dist/cli/commands/capture.js.map +1 -0
  46. package/dist/cli/commands/ci.d.ts +11 -0
  47. package/dist/cli/commands/ci.d.ts.map +1 -0
  48. package/dist/cli/commands/ci.js +144 -0
  49. package/dist/cli/commands/ci.js.map +1 -0
  50. package/dist/cli/commands/collab.d.ts +11 -0
  51. package/dist/cli/commands/collab.d.ts.map +1 -0
  52. package/dist/cli/commands/collab.js +196 -0
  53. package/dist/cli/commands/collab.js.map +1 -0
  54. package/dist/cli/commands/convert.d.ts +11 -0
  55. package/dist/cli/commands/convert.d.ts.map +1 -0
  56. package/dist/cli/commands/convert.js +170 -0
  57. package/dist/cli/commands/convert.js.map +1 -0
  58. package/dist/cli/commands/craft.d.ts +18 -0
  59. package/dist/cli/commands/craft.d.ts.map +1 -0
  60. package/dist/cli/commands/craft.js +205 -0
  61. package/dist/cli/commands/craft.js.map +1 -0
  62. package/dist/cli/commands/export.d.ts +9 -0
  63. package/dist/cli/commands/export.d.ts.map +1 -0
  64. package/dist/cli/commands/export.js +111 -0
  65. package/dist/cli/commands/export.js.map +1 -0
  66. package/dist/cli/commands/forge.d.ts +11 -0
  67. package/dist/cli/commands/forge.d.ts.map +1 -0
  68. package/dist/cli/commands/forge.js +152 -0
  69. package/dist/cli/commands/forge.js.map +1 -0
  70. package/dist/cli/commands/grid.d.ts +11 -0
  71. package/dist/cli/commands/grid.d.ts.map +1 -0
  72. package/dist/cli/commands/grid.js +217 -0
  73. package/dist/cli/commands/grid.js.map +1 -0
  74. package/dist/cli/commands/insight.d.ts +7 -0
  75. package/dist/cli/commands/insight.d.ts.map +1 -0
  76. package/dist/cli/commands/insight.js +71 -0
  77. package/dist/cli/commands/insight.js.map +1 -0
  78. package/dist/cli/commands/install.d.ts +6 -0
  79. package/dist/cli/commands/install.d.ts.map +1 -0
  80. package/dist/cli/commands/install.js +359 -0
  81. package/dist/cli/commands/install.js.map +1 -0
  82. package/dist/cli/commands/interactive.d.ts +7 -0
  83. package/dist/cli/commands/interactive.d.ts.map +1 -0
  84. package/dist/cli/commands/interactive.js +535 -0
  85. package/dist/cli/commands/interactive.js.map +1 -0
  86. package/dist/cli/commands/list.d.ts +6 -0
  87. package/dist/cli/commands/list.d.ts.map +1 -0
  88. package/dist/cli/commands/list.js +77 -0
  89. package/dist/cli/commands/list.js.map +1 -0
  90. package/dist/cli/commands/lockspec.d.ts +11 -0
  91. package/dist/cli/commands/lockspec.d.ts.map +1 -0
  92. package/dist/cli/commands/lockspec.js +179 -0
  93. package/dist/cli/commands/lockspec.js.map +1 -0
  94. package/dist/cli/commands/marketplace.d.ts +7 -0
  95. package/dist/cli/commands/marketplace.d.ts.map +1 -0
  96. package/dist/cli/commands/marketplace.js +417 -0
  97. package/dist/cli/commands/marketplace.js.map +1 -0
  98. package/dist/cli/commands/method.d.ts +7 -0
  99. package/dist/cli/commands/method.d.ts.map +1 -0
  100. package/dist/cli/commands/method.js +140 -0
  101. package/dist/cli/commands/method.js.map +1 -0
  102. package/dist/cli/commands/mine.d.ts +11 -0
  103. package/dist/cli/commands/mine.d.ts.map +1 -0
  104. package/dist/cli/commands/mine.js +254 -0
  105. package/dist/cli/commands/mine.js.map +1 -0
  106. package/dist/cli/commands/recall.d.ts +11 -0
  107. package/dist/cli/commands/recall.d.ts.map +1 -0
  108. package/dist/cli/commands/recall.js +201 -0
  109. package/dist/cli/commands/recall.js.map +1 -0
  110. package/dist/cli/commands/rule.d.ts +11 -0
  111. package/dist/cli/commands/rule.d.ts.map +1 -0
  112. package/dist/cli/commands/rule.js +230 -0
  113. package/dist/cli/commands/rule.js.map +1 -0
  114. package/dist/cli/commands/score.d.ts +10 -0
  115. package/dist/cli/commands/score.d.ts.map +1 -0
  116. package/dist/cli/commands/score.js +91 -0
  117. package/dist/cli/commands/score.js.map +1 -0
  118. package/dist/cli/commands/search.d.ts +6 -0
  119. package/dist/cli/commands/search.d.ts.map +1 -0
  120. package/dist/cli/commands/search.js +173 -0
  121. package/dist/cli/commands/search.js.map +1 -0
  122. package/dist/cli/commands/show.d.ts +6 -0
  123. package/dist/cli/commands/show.d.ts.map +1 -0
  124. package/dist/cli/commands/show.js +158 -0
  125. package/dist/cli/commands/show.js.map +1 -0
  126. package/dist/cli/commands/submit-repo.d.ts +11 -0
  127. package/dist/cli/commands/submit-repo.d.ts.map +1 -0
  128. package/dist/cli/commands/submit-repo.js +133 -0
  129. package/dist/cli/commands/submit-repo.js.map +1 -0
  130. package/dist/cli/commands/submit.d.ts +15 -0
  131. package/dist/cli/commands/submit.d.ts.map +1 -0
  132. package/dist/cli/commands/submit.js +161 -0
  133. package/dist/cli/commands/submit.js.map +1 -0
  134. package/dist/cli/commands/suggest.d.ts +11 -0
  135. package/dist/cli/commands/suggest.d.ts.map +1 -0
  136. package/dist/cli/commands/suggest.js +164 -0
  137. package/dist/cli/commands/suggest.js.map +1 -0
  138. package/dist/cli/commands/track.d.ts +11 -0
  139. package/dist/cli/commands/track.d.ts.map +1 -0
  140. package/dist/cli/commands/track.js +199 -0
  141. package/dist/cli/commands/track.js.map +1 -0
  142. package/dist/cli/commands/trigger.d.ts +11 -0
  143. package/dist/cli/commands/trigger.d.ts.map +1 -0
  144. package/dist/cli/commands/trigger.js +157 -0
  145. package/dist/cli/commands/trigger.js.map +1 -0
  146. package/dist/cli/commands/utils-commands.d.ts +9 -0
  147. package/dist/cli/commands/utils-commands.d.ts.map +1 -0
  148. package/dist/cli/commands/utils-commands.js +389 -0
  149. package/dist/cli/commands/utils-commands.js.map +1 -0
  150. package/dist/cli/commands/validate.d.ts +6 -0
  151. package/dist/cli/commands/validate.d.ts.map +1 -0
  152. package/dist/cli/commands/validate.js +40 -0
  153. package/dist/cli/commands/validate.js.map +1 -0
  154. package/dist/cli/index.d.ts +3 -0
  155. package/dist/cli/index.d.ts.map +1 -1
  156. package/dist/cli/index.js +88 -2743
  157. package/dist/cli/index.js.map +1 -1
  158. package/dist/core/audit.d.ts +24 -0
  159. package/dist/core/audit.d.ts.map +1 -0
  160. package/dist/core/audit.js +195 -0
  161. package/dist/core/audit.js.map +1 -0
  162. package/dist/core/index.d.ts +8 -0
  163. package/dist/core/index.d.ts.map +1 -1
  164. package/dist/core/index.js +8 -0
  165. package/dist/core/index.js.map +1 -1
  166. package/dist/core/quality.d.ts +48 -0
  167. package/dist/core/quality.d.ts.map +1 -0
  168. package/dist/core/quality.js +241 -0
  169. package/dist/core/quality.js.map +1 -0
  170. package/dist/core/scanner-rules.d.ts +58 -0
  171. package/dist/core/scanner-rules.d.ts.map +1 -0
  172. package/dist/core/scanner-rules.js +335 -0
  173. package/dist/core/scanner-rules.js.map +1 -0
  174. package/dist/core/suggest.d.ts +51 -0
  175. package/dist/core/suggest.d.ts.map +1 -0
  176. package/dist/core/suggest.js +241 -0
  177. package/dist/core/suggest.js.map +1 -0
  178. package/package.json +1 -1
package/README.md CHANGED
@@ -1,12 +1,14 @@
1
1
  # Agent Skills CLI 🚀
2
2
 
3
- > **One CLI. 100,000+ skills. 42 AI agents.**
3
+ > **One CLI. 175,000+ skills. 42 AI agents.**
4
4
 
5
5
  [![npm version](https://img.shields.io/npm/v/agent-skills-cli)](https://www.npmjs.com/package/agent-skills-cli)
6
6
  [![license](https://img.shields.io/npm/l/agent-skills-cli)](LICENSE)
7
7
 
8
8
  Install skills from the world's largest marketplace and sync them to **42 AI agents** including Cursor, Claude Code, GitHub Copilot, Windsurf, Cline, Gemini CLI, Zed, and more — all with a single command.
9
9
 
10
+ **What's new in v1.1.0:** Quality scoring (`skills score`), repo auto-indexing (`skills submit-repo`), and a formal adapter pattern architecture.
11
+
10
12
  🌐 **Website:** [agentskills.in](https://agentskills.in)
11
13
 
12
14
  ```bash
@@ -18,9 +20,12 @@ skills install @anthropic/xlsx
18
20
 
19
21
  ## ✨ Features
20
22
 
21
- - **100,000+ Skills** — Access the largest collection of AI agent skills
23
+ - **175,000+ Skills** — Access the largest collection of AI agent skills
22
24
  - **FZF Interactive Search** — Real-time search with keyboard navigation: `skills search -i`
23
25
  - **42 AI Agents** — Cursor, Claude, Copilot, Windsurf, Cline, Gemini CLI, Zed, and 35+ more
26
+ - **Quality Scoring** — 4-dimension skill scoring (0–100): `skills score`
27
+ - **Repo Auto-Index** — Submit entire repos to the marketplace: `skills submit-repo owner/repo`
28
+ - **Adapter Architecture** — Formal adapter pattern for clean multi-agent support
24
29
  - **Lock File Tracking** — Track all installations in `~/.skills/skills.lock`
25
30
  - **Git URL Support** — Install from GitHub, GitLab, or repos: `skills add owner/repo@skill`
26
31
  - **Platform Targeting** — Install to specific platforms with `-t claude,cursor`
@@ -42,22 +47,22 @@ npm install -g agent-skills-cli
42
47
  ## 🚀 Quick Start
43
48
 
44
49
  ```bash
45
- # Install a skill (auto-detects platforms)
46
- skills install xlsx
50
+ # Install a skill (auto-detects platforms)
51
+ skills install @facebook/verify
47
52
 
48
- # Install to specific platforms
49
- skills install @anthropic/pdf -t claude,cursor
53
+ # Install from a GitHub repo
54
+ skills add vercel-labs/agent-skills
50
55
 
51
- # Install globally (home directory)
52
- skills install pdf -g -t claude
56
+ # Install to specific platforms
57
+ skills install @facebook/verify -a claude,cursor
53
58
 
54
- # Install to all 10 platforms
55
- skills install docx --all
59
+ # Install to ALL 42 platforms at once
60
+ skills install @lobehub/typescript --all
56
61
 
57
- # Install from Git repo
58
- skills add vercel-labs/agent-skills
62
+ # Install globally (home directory)
63
+ skills install pdf -g -a claude
59
64
 
60
- # Install specific skill from repo (new @skill syntax)
65
+ # Install specific skill from repo
61
66
  skills add anthropic/skills@xlsx
62
67
 
63
68
  # List skills in a repo
@@ -94,17 +99,20 @@ skills search react --json
94
99
  | `skills check` | Check installed skills with source and version info |
95
100
  | `skills update` | Update skills from their source repos |
96
101
  | `skills remove` | Remove installed skills (interactive multi-select) |
102
+ | `skills score [path]` | Score skill quality (0–100, grades F–A) |
103
+ | `skills submit-repo <repo>` | Submit a GitHub repo for marketplace auto-indexing |
97
104
  | `skills doctor` | Diagnose issues |
98
105
 
99
106
  ### Install Options
100
107
 
101
108
  ```bash
102
- skills install <name> # Auto-detect platforms
103
- skills install <name> -g # Install globally (~/.claude/skills/)
104
- skills install <name> -t claude # Install to Claude only
105
- skills install <name> -t cursor,copilot # Install to multiple
106
- skills install <name> --all # Install to all 10 platforms
107
- skills install <name> --list # Show details without installing
109
+ skills install @facebook/verify # Auto-detect platforms (prompts)
110
+ skills install @facebook/verify -a cursor # Install to Cursor only
111
+ skills install @lobehub/typescript -a cursor,claude # Install to multiple
112
+ skills install @facebook/verify --all # Install to all 42 agents
113
+ skills install pdf -g -a claude # Install globally (~/.claude/skills/)
114
+ skills install -s verify -a cursor # Install by skill name
115
+ skills add @facebook/verify -a cursor # 'add' is an alias for 'install'
108
116
  ```
109
117
 
110
118
  ### Git URL Install (`skills add`)
@@ -129,6 +137,23 @@ skills sync # Sync to Antigravity workflows
129
137
  skills info # Show installation status
130
138
  ```
131
139
 
140
+ ### Quality Scoring
141
+
142
+ ```bash
143
+ skills score ./my-skill # Score a skill (0–100, grade F–A)
144
+ skills score ./my-skill --verbose # Show individual check details
145
+ skills score ./my-skill --json # Machine-readable output
146
+ ```
147
+
148
+ **Dimensions:** Structure (30%), Clarity (30%), Specificity (30%), Advanced (10%)
149
+
150
+ ### Submit Repos to Marketplace
151
+
152
+ ```bash
153
+ skills submit-repo Jeffallan/claude-skills # Auto-index all skills in repo
154
+ skills submit-repo vercel-labs/agent-skills # Skills appear on marketplace
155
+ ```
156
+
132
157
  ---
133
158
 
134
159
  ## 🤖 Supported Platforms (42 Agents)
@@ -0,0 +1,51 @@
1
+ /**
2
+ * Agent Adapter — Base Interface & Abstract Class
3
+ *
4
+ * Provides a formal adapter pattern for all 42 supported AI agents.
5
+ * Each agent can override config path generation, format rendering,
6
+ * and feature detection.
7
+ */
8
+ export interface AgentAdapter {
9
+ /** Internal key, e.g. "cursor" */
10
+ readonly name: string;
11
+ /** Human-readable name, e.g. "Cursor" */
12
+ readonly displayName: string;
13
+ /** Relative project-level skill directory */
14
+ getProjectDir(): string;
15
+ /** Absolute global skill directory */
16
+ getGlobalDir(): string;
17
+ /** Full path for a given skill, e.g. `.cursor/skills/my-skill/SKILL.md` */
18
+ getConfigPath(skillName: string, global: boolean): string;
19
+ /** Generate agent-specific config content from parsed skill */
20
+ generateConfig(parsed: ParsedSkillInput): string;
21
+ /** Does this adapter support a particular format? */
22
+ supportsFormat(format: string): boolean;
23
+ /** Get the filename the agent expects (usually SKILL.md) */
24
+ getSkillFilename(): string;
25
+ }
26
+ /** Minimal skill input for config generation */
27
+ export interface ParsedSkillInput {
28
+ name: string;
29
+ description: string;
30
+ rawContent: string;
31
+ sections?: {
32
+ heading: string;
33
+ content: string;
34
+ }[];
35
+ frontmatter?: Record<string, any>;
36
+ }
37
+ export declare abstract class BaseAdapter implements AgentAdapter {
38
+ abstract readonly name: string;
39
+ abstract readonly displayName: string;
40
+ protected readonly projectDir: string;
41
+ protected readonly globalDir: string;
42
+ constructor(projectDir: string, globalDir: string);
43
+ getProjectDir(): string;
44
+ getGlobalDir(): string;
45
+ getConfigPath(skillName: string, global: boolean): string;
46
+ generateConfig(parsed: ParsedSkillInput): string;
47
+ supportsFormat(format: string): boolean;
48
+ getSkillFilename(): string;
49
+ }
50
+ export declare const HOME: string;
51
+ //# sourceMappingURL=adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../src/adapters/adapter.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAOH,MAAM,WAAW,YAAY;IACzB,kCAAkC;IAClC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,yCAAyC;IACzC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAE7B,6CAA6C;IAC7C,aAAa,IAAI,MAAM,CAAC;IACxB,sCAAsC;IACtC,YAAY,IAAI,MAAM,CAAC;IACvB,2EAA2E;IAC3E,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,MAAM,CAAC;IAC1D,+DAA+D;IAC/D,cAAc,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,CAAC;IACjD,qDAAqD;IACrD,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;IACxC,4DAA4D;IAC5D,gBAAgB,IAAI,MAAM,CAAC;CAC9B;AAED,gDAAgD;AAChD,MAAM,WAAW,gBAAgB;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAClD,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CACrC;AAID,8BAAsB,WAAY,YAAW,YAAY;IACrD,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAEtC,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IACtC,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;gBAEzB,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;IAKjD,aAAa,IAAI,MAAM;IAIvB,YAAY,IAAI,MAAM;IAItB,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,MAAM;IAKzD,cAAc,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM;IAiBhD,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAIvC,gBAAgB,IAAI,MAAM;CAG7B;AAID,eAAO,MAAM,IAAI,QAAY,CAAC"}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * Agent Adapter — Base Interface & Abstract Class
3
+ *
4
+ * Provides a formal adapter pattern for all 42 supported AI agents.
5
+ * Each agent can override config path generation, format rendering,
6
+ * and feature detection.
7
+ */
8
+ import { homedir } from 'os';
9
+ import { join } from 'path';
10
+ // ── Base Adapter ─────────────────────────────────────────────────────────
11
+ export class BaseAdapter {
12
+ projectDir;
13
+ globalDir;
14
+ constructor(projectDir, globalDir) {
15
+ this.projectDir = projectDir;
16
+ this.globalDir = globalDir;
17
+ }
18
+ getProjectDir() {
19
+ return this.projectDir;
20
+ }
21
+ getGlobalDir() {
22
+ return this.globalDir;
23
+ }
24
+ getConfigPath(skillName, global) {
25
+ const base = global ? this.getGlobalDir() : this.getProjectDir();
26
+ return join(base, skillName, this.getSkillFilename());
27
+ }
28
+ generateConfig(parsed) {
29
+ // Default: output as standard SKILL.md format
30
+ const lines = [];
31
+ if (parsed.frontmatter && Object.keys(parsed.frontmatter).length > 0) {
32
+ lines.push('---');
33
+ for (const [key, value] of Object.entries(parsed.frontmatter)) {
34
+ lines.push(`${key}: ${typeof value === 'string' ? value : JSON.stringify(value)}`);
35
+ }
36
+ lines.push('---');
37
+ lines.push('');
38
+ }
39
+ lines.push(parsed.rawContent);
40
+ return lines.join('\n');
41
+ }
42
+ supportsFormat(format) {
43
+ return format === 'skill.md' || format === 'markdown';
44
+ }
45
+ getSkillFilename() {
46
+ return 'SKILL.md';
47
+ }
48
+ }
49
+ // ── Home directory constant ──────────────────────────────────────────────
50
+ export const HOME = homedir();
51
+ //# sourceMappingURL=adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../src/adapters/adapter.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAiC5B,4EAA4E;AAE5E,MAAM,OAAgB,WAAW;IAIV,UAAU,CAAS;IACnB,SAAS,CAAS;IAErC,YAAY,UAAkB,EAAE,SAAiB;QAC7C,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC/B,CAAC;IAED,aAAa;QACT,OAAO,IAAI,CAAC,UAAU,CAAC;IAC3B,CAAC;IAED,YAAY;QACR,OAAO,IAAI,CAAC,SAAS,CAAC;IAC1B,CAAC;IAED,aAAa,CAAC,SAAiB,EAAE,MAAe;QAC5C,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;QACjE,OAAO,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC;IAC1D,CAAC;IAED,cAAc,CAAC,MAAwB;QACnC,8CAA8C;QAC9C,MAAM,KAAK,GAAa,EAAE,CAAC;QAE3B,IAAI,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACnE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAClB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC;gBAC5D,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,KAAK,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACvF,CAAC;YACD,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAClB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACnB,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAC9B,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IAED,cAAc,CAAC,MAAc;QACzB,OAAO,MAAM,KAAK,UAAU,IAAI,MAAM,KAAK,UAAU,CAAC;IAC1D,CAAC;IAED,gBAAgB;QACZ,OAAO,UAAU,CAAC;IACtB,CAAC;CACJ;AAED,4EAA4E;AAE5E,MAAM,CAAC,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Claude Adapter
3
+ * Handles Claude Code-specific skill format (CLAUDE.md awareness)
4
+ */
5
+ import { BaseAdapter, type ParsedSkillInput } from './adapter.js';
6
+ export declare class ClaudeAdapter extends BaseAdapter {
7
+ readonly name = "claude";
8
+ readonly displayName = "Claude Code";
9
+ constructor();
10
+ supportsFormat(format: string): boolean;
11
+ /**
12
+ * Generate CLAUDE.md format (Claude Code's native config)
13
+ */
14
+ toClaudeMd(parsed: ParsedSkillInput): string;
15
+ }
16
+ //# sourceMappingURL=claude.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude.d.ts","sourceRoot":"","sources":["../../src/adapters/claude.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,WAAW,EAAQ,KAAK,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAExE,qBAAa,aAAc,SAAQ,WAAW;IAC1C,QAAQ,CAAC,IAAI,YAAY;IACzB,QAAQ,CAAC,WAAW,iBAAiB;;IAMrC,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAIvC;;OAEG;IACH,UAAU,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM;CAW/C"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Claude Adapter
3
+ * Handles Claude Code-specific skill format (CLAUDE.md awareness)
4
+ */
5
+ import { BaseAdapter, HOME } from './adapter.js';
6
+ export class ClaudeAdapter extends BaseAdapter {
7
+ name = 'claude';
8
+ displayName = 'Claude Code';
9
+ constructor() {
10
+ super('.claude/skills', `${HOME}/.claude/skills`);
11
+ }
12
+ supportsFormat(format) {
13
+ return format === 'skill.md' || format === 'claudemd';
14
+ }
15
+ /**
16
+ * Generate CLAUDE.md format (Claude Code's native config)
17
+ */
18
+ toClaudeMd(parsed) {
19
+ const lines = [];
20
+ lines.push(`# ${parsed.name}`);
21
+ lines.push('');
22
+ if (parsed.description) {
23
+ lines.push(`> ${parsed.description}`);
24
+ lines.push('');
25
+ }
26
+ lines.push(parsed.rawContent);
27
+ return lines.join('\n');
28
+ }
29
+ }
30
+ //# sourceMappingURL=claude.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude.js","sourceRoot":"","sources":["../../src/adapters/claude.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,WAAW,EAAE,IAAI,EAAyB,MAAM,cAAc,CAAC;AAExE,MAAM,OAAO,aAAc,SAAQ,WAAW;IACjC,IAAI,GAAG,QAAQ,CAAC;IAChB,WAAW,GAAG,aAAa,CAAC;IAErC;QACI,KAAK,CAAC,gBAAgB,EAAE,GAAG,IAAI,iBAAiB,CAAC,CAAC;IACtD,CAAC;IAED,cAAc,CAAC,MAAc;QACzB,OAAO,MAAM,KAAK,UAAU,IAAI,MAAM,KAAK,UAAU,CAAC;IAC1D,CAAC;IAED;;OAEG;IACH,UAAU,CAAC,MAAwB;QAC/B,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,KAAK,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QAC/B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;YACrB,KAAK,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;YACtC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACnB,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAC9B,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;CACJ"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Copilot Adapter
3
+ * Handles GitHub Copilot-specific skill paths (.github/)
4
+ */
5
+ import { BaseAdapter, type ParsedSkillInput } from './adapter.js';
6
+ export declare class CopilotAdapter extends BaseAdapter {
7
+ readonly name = "copilot";
8
+ readonly displayName = "GitHub Copilot";
9
+ constructor();
10
+ supportsFormat(format: string): boolean;
11
+ /**
12
+ * Generate Copilot instructions format
13
+ */
14
+ toCopilotInstructions(parsed: ParsedSkillInput): string;
15
+ }
16
+ //# sourceMappingURL=copilot.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"copilot.d.ts","sourceRoot":"","sources":["../../src/adapters/copilot.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,WAAW,EAAQ,KAAK,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAExE,qBAAa,cAAe,SAAQ,WAAW;IAC3C,QAAQ,CAAC,IAAI,aAAa;IAC1B,QAAQ,CAAC,WAAW,oBAAoB;;IAMxC,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAIvC;;OAEG;IACH,qBAAqB,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM;CAa1D"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Copilot Adapter
3
+ * Handles GitHub Copilot-specific skill paths (.github/)
4
+ */
5
+ import { BaseAdapter, HOME } from './adapter.js';
6
+ export class CopilotAdapter extends BaseAdapter {
7
+ name = 'copilot';
8
+ displayName = 'GitHub Copilot';
9
+ constructor() {
10
+ super('.github/skills', `${HOME}/.github/skills`);
11
+ }
12
+ supportsFormat(format) {
13
+ return format === 'skill.md' || format === 'copilot';
14
+ }
15
+ /**
16
+ * Generate Copilot instructions format
17
+ */
18
+ toCopilotInstructions(parsed) {
19
+ const lines = [];
20
+ lines.push(`# ${parsed.name}`);
21
+ lines.push('');
22
+ if (parsed.description) {
23
+ lines.push(`**Purpose:** ${parsed.description}`);
24
+ lines.push('');
25
+ }
26
+ lines.push('## Instructions');
27
+ lines.push('');
28
+ lines.push(parsed.rawContent);
29
+ return lines.join('\n');
30
+ }
31
+ }
32
+ //# sourceMappingURL=copilot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"copilot.js","sourceRoot":"","sources":["../../src/adapters/copilot.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,WAAW,EAAE,IAAI,EAAyB,MAAM,cAAc,CAAC;AAExE,MAAM,OAAO,cAAe,SAAQ,WAAW;IAClC,IAAI,GAAG,SAAS,CAAC;IACjB,WAAW,GAAG,gBAAgB,CAAC;IAExC;QACI,KAAK,CAAC,gBAAgB,EAAE,GAAG,IAAI,iBAAiB,CAAC,CAAC;IACtD,CAAC;IAED,cAAc,CAAC,MAAc;QACzB,OAAO,MAAM,KAAK,UAAU,IAAI,MAAM,KAAK,SAAS,CAAC;IACzD,CAAC;IAED;;OAEG;IACH,qBAAqB,CAAC,MAAwB;QAC1C,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,KAAK,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QAC/B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;YACrB,KAAK,CAAC,IAAI,CAAC,gBAAgB,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;YACjD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACnB,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAC9B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAC9B,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;CACJ"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Cursor Adapter
3
+ * Handles Cursor-specific skill format (.cursorrules legacy + SKILL.md)
4
+ */
5
+ import { BaseAdapter, type ParsedSkillInput } from './adapter.js';
6
+ export declare class CursorAdapter extends BaseAdapter {
7
+ readonly name = "cursor";
8
+ readonly displayName = "Cursor";
9
+ constructor();
10
+ supportsFormat(format: string): boolean;
11
+ generateConfig(parsed: ParsedSkillInput): string;
12
+ /**
13
+ * Generate .cursorrules format (legacy Cursor config)
14
+ */
15
+ toCursorRules(parsed: ParsedSkillInput): string;
16
+ }
17
+ //# sourceMappingURL=cursor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cursor.d.ts","sourceRoot":"","sources":["../../src/adapters/cursor.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,WAAW,EAAQ,KAAK,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAExE,qBAAa,aAAc,SAAQ,WAAW;IAC1C,QAAQ,CAAC,IAAI,YAAY;IACzB,QAAQ,CAAC,WAAW,YAAY;;IAMhC,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAIvC,cAAc,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM;IAKhD;;OAEG;IACH,aAAa,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM;CAWlD"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Cursor Adapter
3
+ * Handles Cursor-specific skill format (.cursorrules legacy + SKILL.md)
4
+ */
5
+ import { BaseAdapter, HOME } from './adapter.js';
6
+ export class CursorAdapter extends BaseAdapter {
7
+ name = 'cursor';
8
+ displayName = 'Cursor';
9
+ constructor() {
10
+ super('.cursor/skills', `${HOME}/.cursor/skills`);
11
+ }
12
+ supportsFormat(format) {
13
+ return format === 'skill.md' || format === 'cursorrules' || format === 'mdc';
14
+ }
15
+ generateConfig(parsed) {
16
+ // Cursor uses standard SKILL.md but also supports .cursorrules
17
+ return super.generateConfig(parsed);
18
+ }
19
+ /**
20
+ * Generate .cursorrules format (legacy Cursor config)
21
+ */
22
+ toCursorRules(parsed) {
23
+ const lines = [];
24
+ lines.push(`# ${parsed.name}`);
25
+ lines.push('');
26
+ if (parsed.description) {
27
+ lines.push(parsed.description);
28
+ lines.push('');
29
+ }
30
+ lines.push(parsed.rawContent);
31
+ return lines.join('\n');
32
+ }
33
+ }
34
+ //# sourceMappingURL=cursor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cursor.js","sourceRoot":"","sources":["../../src/adapters/cursor.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,WAAW,EAAE,IAAI,EAAyB,MAAM,cAAc,CAAC;AAExE,MAAM,OAAO,aAAc,SAAQ,WAAW;IACjC,IAAI,GAAG,QAAQ,CAAC;IAChB,WAAW,GAAG,QAAQ,CAAC;IAEhC;QACI,KAAK,CAAC,gBAAgB,EAAE,GAAG,IAAI,iBAAiB,CAAC,CAAC;IACtD,CAAC;IAED,cAAc,CAAC,MAAc;QACzB,OAAO,MAAM,KAAK,UAAU,IAAI,MAAM,KAAK,aAAa,IAAI,MAAM,KAAK,KAAK,CAAC;IACjF,CAAC;IAED,cAAc,CAAC,MAAwB;QACnC,+DAA+D;QAC/D,OAAO,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;IACxC,CAAC;IAED;;OAEG;IACH,aAAa,CAAC,MAAwB;QAClC,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,KAAK,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QAC/B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;YACrB,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;YAC/B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACnB,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAC9B,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;CACJ"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Adapters — barrel file
3
+ * Re-exports all agent adapters and the factory function
4
+ */
5
+ export type { AgentAdapter, ParsedSkillInput } from './adapter.js';
6
+ export { BaseAdapter, HOME } from './adapter.js';
7
+ export { CursorAdapter } from './cursor.js';
8
+ export { ClaudeAdapter } from './claude.js';
9
+ export { CopilotAdapter } from './copilot.js';
10
+ export { UniversalAdapter } from './universal.js';
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/adapters/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,YAAY,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Adapters — barrel file
3
+ * Re-exports all agent adapters and the factory function
4
+ */
5
+ export { BaseAdapter, HOME } from './adapter.js';
6
+ export { CursorAdapter } from './cursor.js';
7
+ export { ClaudeAdapter } from './claude.js';
8
+ export { CopilotAdapter } from './copilot.js';
9
+ export { UniversalAdapter } from './universal.js';
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/adapters/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Universal Adapter
3
+ * Handles all agents that use the standard SKILL.md format.
4
+ * Dynamically configured via the existing AGENTS record.
5
+ */
6
+ import { BaseAdapter } from './adapter.js';
7
+ export declare class UniversalAdapter extends BaseAdapter {
8
+ readonly name: string;
9
+ readonly displayName: string;
10
+ constructor(name: string, displayName: string, projectDir: string, globalDir: string);
11
+ }
12
+ //# sourceMappingURL=universal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"universal.d.ts","sourceRoot":"","sources":["../../src/adapters/universal.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAyB,MAAM,cAAc,CAAC;AAElE,qBAAa,gBAAiB,SAAQ,WAAW;IAC7C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;gBAEjB,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;CAQvF"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Universal Adapter
3
+ * Handles all agents that use the standard SKILL.md format.
4
+ * Dynamically configured via the existing AGENTS record.
5
+ */
6
+ import { BaseAdapter } from './adapter.js';
7
+ export class UniversalAdapter extends BaseAdapter {
8
+ name;
9
+ displayName;
10
+ constructor(name, displayName, projectDir, globalDir) {
11
+ super(projectDir, globalDir);
12
+ this.name = name;
13
+ this.displayName = displayName;
14
+ }
15
+ }
16
+ //# sourceMappingURL=universal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"universal.js","sourceRoot":"","sources":["../../src/adapters/universal.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAyB,MAAM,cAAc,CAAC;AAElE,MAAM,OAAO,gBAAiB,SAAQ,WAAW;IACpC,IAAI,CAAS;IACb,WAAW,CAAS;IAE7B,YAAY,IAAY,EAAE,WAAmB,EAAE,UAAkB,EAAE,SAAiB;QAChF,KAAK,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;QAC7B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IACnC,CAAC;CAIJ"}
@@ -0,0 +1,21 @@
1
+ export interface AgentConfig {
2
+ name: string;
3
+ displayName: string;
4
+ projectDir: string;
5
+ globalDir: string;
6
+ }
7
+ export declare const AGENTS: Record<string, AgentConfig>;
8
+ /** Helper to get install path */
9
+ export declare function getInstallPath(agent: string, global: boolean): string;
10
+ import type { AgentAdapter } from '../adapters/adapter.js';
11
+ /**
12
+ * Get an adapter for a given agent name.
13
+ * Returns specific adapters for cursor/claude/copilot,
14
+ * and a UniversalAdapter for everything else.
15
+ */
16
+ export declare function getAdapter(agentName: string): AgentAdapter;
17
+ /**
18
+ * Get all adapters for all known agents.
19
+ */
20
+ export declare function getAllAdapters(): AgentAdapter[];
21
+ //# sourceMappingURL=agents.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agents.d.ts","sourceRoot":"","sources":["../../src/cli/agents.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,WAAW;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACrB;AAED,eAAO,MAAM,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAgQ9C,CAAC;AAEF,iCAAiC;AACjC,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,MAAM,CAIrE;AAID,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAS3D;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,YAAY,CA8B1D;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,YAAY,EAAE,CAE/C"}