@cleocode/caamp 1.0.5 → 1.1.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.
package/dist/index.d.ts CHANGED
@@ -1,13 +1,12 @@
1
1
  /**
2
- * CAAMP - Central AI Agent Managed Packages
3
- * Core type definitions
4
- */
5
- /**
6
- * Skill entry from the `@cleocode/ct-skills` skills.json catalog.
2
+ * SkillLibrary interface - SDK standard contract for skill libraries.
7
3
  *
8
- * Mirrors the `SkillEntry` type from `@cleocode/ct-skills/index.d.ts`.
4
+ * Any directory or module that conforms to this interface can be registered
5
+ * with CAAMP as a skill library. Both project-bundled libraries and
6
+ * marketplace-installed skills go through this contract.
9
7
  */
10
- interface CtSkillEntry {
8
+ /** A single skill entry in a library catalog. */
9
+ interface SkillLibraryEntry {
11
10
  /** Skill name (e.g. `"ct-research-agent"`). */
12
11
  name: string;
13
12
  /** Human-readable description. */
@@ -37,19 +36,15 @@ interface CtSkillEntry {
37
36
  /** Arbitrary metadata. */
38
37
  metadata: Record<string, unknown>;
39
38
  }
40
- /**
41
- * Validation result from ct-skills frontmatter validation.
42
- */
43
- interface CtValidationResult {
39
+ /** Validation result from skill frontmatter validation. */
40
+ interface SkillLibraryValidationResult {
44
41
  /** Whether the skill passed validation (no error-level issues). */
45
42
  valid: boolean;
46
43
  /** Individual validation issues. */
47
- issues: CtValidationIssue[];
44
+ issues: SkillLibraryValidationIssue[];
48
45
  }
49
- /**
50
- * A single validation issue from ct-skills.
51
- */
52
- interface CtValidationIssue {
46
+ /** A single validation issue. */
47
+ interface SkillLibraryValidationIssue {
53
48
  /** Severity level. */
54
49
  level: "error" | "warn";
55
50
  /** Field that triggered the issue. */
@@ -57,10 +52,8 @@ interface CtValidationIssue {
57
52
  /** Human-readable message. */
58
53
  message: string;
59
54
  }
60
- /**
61
- * Profile definition from ct-skills profiles.
62
- */
63
- interface CtProfileDefinition {
55
+ /** Profile definition for grouped skill installation. */
56
+ interface SkillLibraryProfile {
64
57
  /** Profile name (e.g. `"minimal"`, `"core"`, `"recommended"`, `"full"`). */
65
58
  name: string;
66
59
  /** Human-readable description. */
@@ -74,10 +67,8 @@ interface CtProfileDefinition {
74
67
  /** Protocol names to include. */
75
68
  includeProtocols: string[];
76
69
  }
77
- /**
78
- * Dispatch matrix from ct-skills manifest.json.
79
- */
80
- interface CtDispatchMatrix {
70
+ /** Dispatch matrix for task routing to skills. */
71
+ interface SkillLibraryDispatchMatrix {
81
72
  /** Task type to skill mapping. */
82
73
  by_task_type: Record<string, string>;
83
74
  /** Keyword to skill mapping. */
@@ -85,23 +76,8 @@ interface CtDispatchMatrix {
85
76
  /** Protocol to skill mapping. */
86
77
  by_protocol: Record<string, string>;
87
78
  }
88
- /**
89
- * Full manifest structure from ct-skills.
90
- */
91
- interface CtManifest {
92
- /** JSON schema reference. */
93
- $schema: string;
94
- /** Metadata. */
95
- _meta: Record<string, unknown>;
96
- /** Dispatch matrix for skill routing. */
97
- dispatch_matrix: CtDispatchMatrix;
98
- /** Manifest skill entries. */
99
- skills: CtManifestSkill[];
100
- }
101
- /**
102
- * Skill entry within the ct-skills manifest.
103
- */
104
- interface CtManifestSkill {
79
+ /** Skill entry within the library manifest. */
80
+ interface SkillLibraryManifestSkill {
105
81
  /** Skill name. */
106
82
  name: string;
107
83
  /** Version. */
@@ -140,6 +116,95 @@ interface CtManifestSkill {
140
116
  requires_epic: boolean;
141
117
  };
142
118
  }
119
+ /** Full manifest structure for a skill library. */
120
+ interface SkillLibraryManifest {
121
+ /** JSON schema reference. */
122
+ $schema: string;
123
+ /** Metadata. */
124
+ _meta: Record<string, unknown>;
125
+ /** Dispatch matrix for skill routing. */
126
+ dispatch_matrix: SkillLibraryDispatchMatrix;
127
+ /** Manifest skill entries. */
128
+ skills: SkillLibraryManifestSkill[];
129
+ }
130
+ /**
131
+ * Standard interface for a skill library.
132
+ *
133
+ * Any directory or module providing skills must implement this contract.
134
+ * CAAMP uses it to discover, resolve, and install skills from any source.
135
+ */
136
+ interface SkillLibrary {
137
+ /** Library version string. */
138
+ readonly version: string;
139
+ /** Absolute path to the library root directory. */
140
+ readonly libraryRoot: string;
141
+ /** All skill entries in the catalog. */
142
+ readonly skills: SkillLibraryEntry[];
143
+ /** The parsed manifest. */
144
+ readonly manifest: SkillLibraryManifest;
145
+ /** List all skill names. */
146
+ listSkills(): string[];
147
+ /** Get skill metadata by name. */
148
+ getSkill(name: string): SkillLibraryEntry | undefined;
149
+ /** Resolve absolute path to a skill's SKILL.md file. */
150
+ getSkillPath(name: string): string;
151
+ /** Resolve absolute path to a skill's directory. */
152
+ getSkillDir(name: string): string;
153
+ /** Read a skill's SKILL.md content as a string. */
154
+ readSkillContent(name: string): string;
155
+ /** Get all skills where `core === true`. */
156
+ getCoreSkills(): SkillLibraryEntry[];
157
+ /** Get skills filtered by category. */
158
+ getSkillsByCategory(category: SkillLibraryEntry["category"]): SkillLibraryEntry[];
159
+ /** Get direct dependency names for a skill. */
160
+ getSkillDependencies(name: string): string[];
161
+ /** Resolve full dependency tree for a set of skill names (includes transitive deps). */
162
+ resolveDependencyTree(names: string[]): string[];
163
+ /** List available profile names. */
164
+ listProfiles(): string[];
165
+ /** Get a profile definition by name. */
166
+ getProfile(name: string): SkillLibraryProfile | undefined;
167
+ /** Resolve a profile to its full skill list (follows extends, resolves deps). */
168
+ resolveProfile(name: string): string[];
169
+ /** List available shared resource names. */
170
+ listSharedResources(): string[];
171
+ /** Get absolute path to a shared resource file. */
172
+ getSharedResourcePath(name: string): string | undefined;
173
+ /** Read a shared resource file content. */
174
+ readSharedResource(name: string): string | undefined;
175
+ /** List available protocol names. */
176
+ listProtocols(): string[];
177
+ /** Get absolute path to a protocol file. */
178
+ getProtocolPath(name: string): string | undefined;
179
+ /** Read a protocol file content. */
180
+ readProtocol(name: string): string | undefined;
181
+ /** Validate a single skill's frontmatter. */
182
+ validateSkillFrontmatter(name: string): SkillLibraryValidationResult;
183
+ /** Validate all skills. */
184
+ validateAll(): Map<string, SkillLibraryValidationResult>;
185
+ /** Get the dispatch matrix from the manifest. */
186
+ getDispatchMatrix(): SkillLibraryDispatchMatrix;
187
+ }
188
+
189
+ /**
190
+ * CAAMP - Central AI Agent Managed Packages
191
+ * Core type definitions
192
+ */
193
+
194
+ /** @deprecated Use `SkillLibraryEntry` instead. */
195
+ type CtSkillEntry = SkillLibraryEntry;
196
+ /** @deprecated Use `SkillLibraryValidationResult` instead. */
197
+ type CtValidationResult = SkillLibraryValidationResult;
198
+ /** @deprecated Use `SkillLibraryValidationIssue` instead. */
199
+ type CtValidationIssue = SkillLibraryValidationIssue;
200
+ /** @deprecated Use `SkillLibraryProfile` instead. */
201
+ type CtProfileDefinition = SkillLibraryProfile;
202
+ /** @deprecated Use `SkillLibraryDispatchMatrix` instead. */
203
+ type CtDispatchMatrix = SkillLibraryDispatchMatrix;
204
+ /** @deprecated Use `SkillLibraryManifest` instead. */
205
+ type CtManifest = SkillLibraryManifest;
206
+ /** @deprecated Use `SkillLibraryManifestSkill` instead. */
207
+ type CtManifestSkill = SkillLibraryManifestSkill;
143
208
  /**
144
209
  * Supported configuration file formats.
145
210
  *
@@ -319,7 +384,7 @@ interface McpServerConfig {
319
384
  * - `"gitlab"` - GitLab repository URL
320
385
  * - `"local"` - Local filesystem path
321
386
  */
322
- type SourceType = "remote" | "package" | "command" | "github" | "gitlab" | "local";
387
+ type SourceType = "remote" | "package" | "command" | "github" | "gitlab" | "local" | "library";
323
388
  /**
324
389
  * Result of parsing a source string into its typed components.
325
390
  *
@@ -1584,68 +1649,94 @@ declare function parseSource(input: string): ParsedSource;
1584
1649
  declare function isMarketplaceScoped(input: string): boolean;
1585
1650
 
1586
1651
  /**
1587
- * ESM adapter for @cleocode/ct-skills (CommonJS module)
1652
+ * Skill catalog - registry pattern for pluggable skill libraries.
1588
1653
  *
1589
- * Wraps the ct-skills library API with typed exports for use in CAAMP's
1590
- * ESM codebase. Uses createRequire() for CJS interop.
1654
+ * Projects register their skill library via registerSkillLibrary() or
1655
+ * registerSkillLibraryFromPath(). If no library is registered, CAAMP
1656
+ * attempts auto-discovery via CAAMP_SKILL_LIBRARY env var or the
1657
+ * canonical ~/.agents/skill-library/ location.
1658
+ *
1659
+ * All public functions delegate to the registered SkillLibrary instance.
1591
1660
  */
1592
1661
 
1593
- /** All skill entries from skills.json */
1594
- declare function getSkills(): CtSkillEntry[];
1595
- /** Parsed manifest.json dispatch registry */
1596
- declare function getManifest(): CtManifest;
1597
- /** List all skill names */
1662
+ /**
1663
+ * Register a SkillLibrary instance directly.
1664
+ *
1665
+ * @param library - A SkillLibrary implementation to use as the catalog
1666
+ */
1667
+ declare function registerSkillLibrary(library: SkillLibrary): void;
1668
+ /**
1669
+ * Register a skill library by loading it from a directory path.
1670
+ *
1671
+ * Tries two strategies:
1672
+ * 1. If the directory has an `index.js`, loads it as a module
1673
+ * 2. Otherwise, builds a library from raw files (skills.json, etc.)
1674
+ *
1675
+ * @param root - Absolute path to the skill library root directory
1676
+ * @throws If the library cannot be loaded from the given path
1677
+ */
1678
+ declare function registerSkillLibraryFromPath(root: string): void;
1679
+ /**
1680
+ * Clear the registered library. Primarily for testing.
1681
+ */
1682
+ declare function clearRegisteredLibrary(): void;
1683
+ /**
1684
+ * Check if a skill library is available (registered or discoverable).
1685
+ * Returns false if no library is registered and auto-discovery fails.
1686
+ */
1687
+ declare function isCatalogAvailable(): boolean;
1688
+ /** All skill entries from the catalog. */
1689
+ declare function getSkills(): SkillLibraryEntry[];
1690
+ /** The parsed manifest. */
1691
+ declare function getManifest(): SkillLibraryManifest;
1692
+ /** List all skill names. */
1598
1693
  declare function listSkills(): string[];
1599
- /** Get skill metadata from skills.json by name */
1600
- declare function getSkill(name: string): CtSkillEntry | undefined;
1601
- /** Resolve absolute path to a skill's SKILL.md file */
1694
+ /** Get skill metadata by name. */
1695
+ declare function getSkill(name: string): SkillLibraryEntry | undefined;
1696
+ /** Resolve absolute path to a skill's SKILL.md file. */
1602
1697
  declare function getSkillPath(name: string): string;
1603
- /** Resolve absolute path to a skill's directory */
1698
+ /** Resolve absolute path to a skill's directory. */
1604
1699
  declare function getSkillDir(name: string): string;
1605
- /** Read a skill's SKILL.md content as a string */
1700
+ /** Read a skill's SKILL.md content as a string. */
1606
1701
  declare function readSkillContent(name: string): string;
1607
- /** Get all skills where core === true */
1608
- declare function getCoreSkills(): CtSkillEntry[];
1609
- /** Get skills filtered by category */
1610
- declare function getSkillsByCategory(category: CtSkillEntry["category"]): CtSkillEntry[];
1611
- /** Get direct dependency names for a skill */
1702
+ /** Get all skills where `core === true`. */
1703
+ declare function getCoreSkills(): SkillLibraryEntry[];
1704
+ /** Get skills filtered by category. */
1705
+ declare function getSkillsByCategory(category: SkillLibraryEntry["category"]): SkillLibraryEntry[];
1706
+ /** Get direct dependency names for a skill. */
1612
1707
  declare function getSkillDependencies(name: string): string[];
1613
- /** Resolve full dependency tree for a set of skill names (includes transitive deps) */
1708
+ /** Resolve full dependency tree for a set of skill names (includes transitive deps). */
1614
1709
  declare function resolveDependencyTree(names: string[]): string[];
1615
- /** List available profile names */
1710
+ /** List available profile names. */
1616
1711
  declare function listProfiles(): string[];
1617
- /** Get a profile definition by name */
1618
- declare function getProfile(name: string): CtProfileDefinition | undefined;
1619
- /** Resolve a profile to its full skill list (follows extends, resolves deps) */
1712
+ /** Get a profile definition by name. */
1713
+ declare function getProfile(name: string): SkillLibraryProfile | undefined;
1714
+ /** Resolve a profile to its full skill list (follows extends, resolves deps). */
1620
1715
  declare function resolveProfile(name: string): string[];
1621
- /** List available shared resource names */
1716
+ /** List available shared resource names. */
1622
1717
  declare function listSharedResources(): string[];
1623
- /** Get absolute path to a shared resource file */
1718
+ /** Get absolute path to a shared resource file. */
1624
1719
  declare function getSharedResourcePath(name: string): string | undefined;
1625
- /** Read a shared resource file content */
1720
+ /** Read a shared resource file content. */
1626
1721
  declare function readSharedResource(name: string): string | undefined;
1627
- /** List available protocol names */
1722
+ /** List available protocol names. */
1628
1723
  declare function listProtocols(): string[];
1629
- /** Get absolute path to a protocol file */
1724
+ /** Get absolute path to a protocol file. */
1630
1725
  declare function getProtocolPath(name: string): string | undefined;
1631
- /** Read a protocol file content */
1726
+ /** Read a protocol file content. */
1632
1727
  declare function readProtocol(name: string): string | undefined;
1633
- /** Validate a single skill's frontmatter */
1634
- declare function validateSkillFrontmatter(name: string): CtValidationResult;
1635
- /** Validate all skills */
1636
- declare function validateAll(): Map<string, CtValidationResult>;
1637
- /** Get the dispatch matrix from manifest.json */
1638
- declare function getDispatchMatrix(): CtDispatchMatrix;
1639
- /** Package version from ct-skills package.json */
1728
+ /** Validate a single skill's frontmatter. */
1729
+ declare function validateSkillFrontmatter(name: string): SkillLibraryValidationResult;
1730
+ /** Validate all skills. */
1731
+ declare function validateAll(): Map<string, SkillLibraryValidationResult>;
1732
+ /** Get the dispatch matrix from the manifest. */
1733
+ declare function getDispatchMatrix(): SkillLibraryDispatchMatrix;
1734
+ /** Library version string. */
1640
1735
  declare function getVersion(): string;
1641
- /** Absolute path to the ct-skills package root directory */
1736
+ /** Absolute path to the library root directory. */
1642
1737
  declare function getLibraryRoot(): string;
1643
- /**
1644
- * Check if @cleocode/ct-skills is available.
1645
- * Returns false if the package is not installed.
1646
- */
1647
- declare function isCatalogAvailable(): boolean;
1648
1738
 
1739
+ declare const catalog_clearRegisteredLibrary: typeof clearRegisteredLibrary;
1649
1740
  declare const catalog_getCoreSkills: typeof getCoreSkills;
1650
1741
  declare const catalog_getDispatchMatrix: typeof getDispatchMatrix;
1651
1742
  declare const catalog_getLibraryRoot: typeof getLibraryRoot;
@@ -1668,14 +1759,53 @@ declare const catalog_listSkills: typeof listSkills;
1668
1759
  declare const catalog_readProtocol: typeof readProtocol;
1669
1760
  declare const catalog_readSharedResource: typeof readSharedResource;
1670
1761
  declare const catalog_readSkillContent: typeof readSkillContent;
1762
+ declare const catalog_registerSkillLibrary: typeof registerSkillLibrary;
1763
+ declare const catalog_registerSkillLibraryFromPath: typeof registerSkillLibraryFromPath;
1671
1764
  declare const catalog_resolveDependencyTree: typeof resolveDependencyTree;
1672
1765
  declare const catalog_resolveProfile: typeof resolveProfile;
1673
1766
  declare const catalog_validateAll: typeof validateAll;
1674
1767
  declare const catalog_validateSkillFrontmatter: typeof validateSkillFrontmatter;
1675
1768
  declare namespace catalog {
1676
- export { catalog_getCoreSkills as getCoreSkills, catalog_getDispatchMatrix as getDispatchMatrix, catalog_getLibraryRoot as getLibraryRoot, catalog_getManifest as getManifest, catalog_getProfile as getProfile, catalog_getProtocolPath as getProtocolPath, catalog_getSharedResourcePath as getSharedResourcePath, catalog_getSkill as getSkill, catalog_getSkillDependencies as getSkillDependencies, catalog_getSkillDir as getSkillDir, catalog_getSkillPath as getSkillPath, catalog_getSkills as getSkills, catalog_getSkillsByCategory as getSkillsByCategory, catalog_getVersion as getVersion, catalog_isCatalogAvailable as isCatalogAvailable, catalog_listProfiles as listProfiles, catalog_listProtocols as listProtocols, catalog_listSharedResources as listSharedResources, catalog_listSkills as listSkills, catalog_readProtocol as readProtocol, catalog_readSharedResource as readSharedResource, catalog_readSkillContent as readSkillContent, catalog_resolveDependencyTree as resolveDependencyTree, catalog_resolveProfile as resolveProfile, catalog_validateAll as validateAll, catalog_validateSkillFrontmatter as validateSkillFrontmatter };
1769
+ export { catalog_clearRegisteredLibrary as clearRegisteredLibrary, catalog_getCoreSkills as getCoreSkills, catalog_getDispatchMatrix as getDispatchMatrix, catalog_getLibraryRoot as getLibraryRoot, catalog_getManifest as getManifest, catalog_getProfile as getProfile, catalog_getProtocolPath as getProtocolPath, catalog_getSharedResourcePath as getSharedResourcePath, catalog_getSkill as getSkill, catalog_getSkillDependencies as getSkillDependencies, catalog_getSkillDir as getSkillDir, catalog_getSkillPath as getSkillPath, catalog_getSkills as getSkills, catalog_getSkillsByCategory as getSkillsByCategory, catalog_getVersion as getVersion, catalog_isCatalogAvailable as isCatalogAvailable, catalog_listProfiles as listProfiles, catalog_listProtocols as listProtocols, catalog_listSharedResources as listSharedResources, catalog_listSkills as listSkills, catalog_readProtocol as readProtocol, catalog_readSharedResource as readSharedResource, catalog_readSkillContent as readSkillContent, catalog_registerSkillLibrary as registerSkillLibrary, catalog_registerSkillLibraryFromPath as registerSkillLibraryFromPath, catalog_resolveDependencyTree as resolveDependencyTree, catalog_resolveProfile as resolveProfile, catalog_validateAll as validateAll, catalog_validateSkillFrontmatter as validateSkillFrontmatter };
1677
1770
  }
1678
1771
 
1772
+ /**
1773
+ * Library loader - loads a SkillLibrary from a directory or module.
1774
+ *
1775
+ * Two strategies:
1776
+ * 1. loadLibraryFromModule() - for libraries with an index.js exporting SkillLibrary
1777
+ * 2. buildLibraryFromFiles() - for plain directories with the right file structure
1778
+ */
1779
+
1780
+ /**
1781
+ * Load a SkillLibrary from a module (index.js) at the given root directory.
1782
+ *
1783
+ * Uses `createRequire()` for CJS modules or dynamic `import()` for ESM.
1784
+ * Validates that the loaded module implements the SkillLibrary interface
1785
+ * by checking for required properties and methods.
1786
+ *
1787
+ * @param root - Absolute path to the library root (must contain index.js or package.json with main)
1788
+ * @returns A validated SkillLibrary instance
1789
+ * @throws If the module cannot be loaded or does not implement SkillLibrary
1790
+ */
1791
+ declare function loadLibraryFromModule(root: string): SkillLibrary;
1792
+ /**
1793
+ * Build a SkillLibrary from raw files in a directory.
1794
+ *
1795
+ * Constructs a full SkillLibrary implementation by reading:
1796
+ * - `skills.json` for catalog entries
1797
+ * - `skills/manifest.json` for dispatch matrix
1798
+ * - `profiles/*.json` for profile definitions
1799
+ * - `skills/<name>/SKILL.md` for skill content
1800
+ * - `skills/_shared/*.md` for shared resources
1801
+ * - `protocols/*.md` or `skills/protocols/*.md` for protocol files
1802
+ *
1803
+ * @param root - Absolute path to the library root directory
1804
+ * @returns A SkillLibrary instance backed by filesystem reads
1805
+ * @throws If skills.json is not found at the root
1806
+ */
1807
+ declare function buildLibraryFromFiles(root: string): SkillLibrary;
1808
+
1679
1809
  /**
1680
1810
  * Local skill discovery
1681
1811
  *
@@ -2282,8 +2412,60 @@ declare function injectAll(providers: Provider[], projectDir: string, scope: "pr
2282
2412
  * Instruction template management
2283
2413
  *
2284
2414
  * Generates injection content based on provider capabilities.
2415
+ * Includes structured InjectionTemplate API for project-level customization.
2285
2416
  */
2286
2417
 
2418
+ /**
2419
+ * Structured template for injection content.
2420
+ *
2421
+ * Projects use this to define what goes between CAAMP markers in
2422
+ * instruction files, rather than passing ad-hoc strings.
2423
+ */
2424
+ interface InjectionTemplate {
2425
+ /** @ references to include (e.g. `"@AGENTS.md"`, `"@.cleo/project-context.json"`). */
2426
+ references: string[];
2427
+ /** Inline content blocks (raw markdown/text). */
2428
+ content?: string[];
2429
+ }
2430
+ /**
2431
+ * Build injection content from a structured template.
2432
+ *
2433
+ * Produces a string suitable for injection between CAAMP markers.
2434
+ * References are output as `@` lines, content blocks are appended as-is.
2435
+ *
2436
+ * @param template - Template defining references and content
2437
+ * @returns Formatted injection content string
2438
+ *
2439
+ * @example
2440
+ * ```typescript
2441
+ * const content = buildInjectionContent({
2442
+ * references: ["@AGENTS.md"],
2443
+ * });
2444
+ * // Returns: "@AGENTS.md"
2445
+ *
2446
+ * const content2 = buildInjectionContent({
2447
+ * references: ["@AGENTS.md", "@.cleo/project-context.json"],
2448
+ * content: ["# Custom Section", "Some extra info"],
2449
+ * });
2450
+ * ```
2451
+ */
2452
+ declare function buildInjectionContent(template: InjectionTemplate): string;
2453
+ /**
2454
+ * Parse injection content back into template form.
2455
+ *
2456
+ * Lines starting with `@` are treated as references.
2457
+ * All other non-empty lines are treated as content blocks.
2458
+ *
2459
+ * @param content - Raw injection content string
2460
+ * @returns Parsed InjectionTemplate
2461
+ *
2462
+ * @example
2463
+ * ```typescript
2464
+ * const template = parseInjectionContent("@AGENTS.md\n@.cleo/config.json");
2465
+ * // { references: ["@AGENTS.md", "@.cleo/config.json"], content: [] }
2466
+ * ```
2467
+ */
2468
+ declare function parseInjectionContent(content: string): InjectionTemplate;
2287
2469
  /**
2288
2470
  * Generate a standard CAAMP injection block for instruction files.
2289
2471
  *
@@ -2304,6 +2486,8 @@ declare function generateInjectionContent(options?: {
2304
2486
  mcpServerName?: string;
2305
2487
  customContent?: string;
2306
2488
  }): string;
2489
+ /** Generate a skills discovery section for instruction files */
2490
+ declare function generateSkillsSection(skillNames: string[]): string;
2307
2491
  /**
2308
2492
  * Group providers by their instruction file name.
2309
2493
  *
@@ -2487,4 +2671,4 @@ declare function isVerbose(): boolean;
2487
2671
  */
2488
2672
  declare function isQuiet(): boolean;
2489
2673
 
2490
- export { type AuditFinding, type AuditResult, type AuditRule, type AuditSeverity, type BatchInstallOptions, type BatchInstallResult, type CaampLockFile, type ConfigFormat, type ConflictPolicy, type CtDispatchMatrix, type CtManifest, type CtManifestSkill, type CtProfileDefinition, type CtSkillEntry, type CtValidationIssue, type CtValidationResult, type DetectionCacheOptions, type DetectionResult, type DualScopeConfigureOptions, type DualScopeConfigureResult, type GlobalOptions, type InjectionCheckResult, type InjectionStatus, type InstallResult, type InstructionUpdateSummary, type LockEntry, MarketplaceClient, type MarketplaceResult, type MarketplaceSearchResult, type MarketplaceSkill, type McpBatchOperation, type McpConflict, type McpConflictCode, type McpPlanApplyResult, type McpServerConfig, type McpServerEntry, type NormalizedRecommendationCriteria, type ParsedSource, type Provider, type ProviderPriority, type ProviderStatus, RECOMMENDATION_ERROR_CODES, type RankedSkillRecommendation, type RecommendSkillsResult, type RecommendationCriteriaInput, type RecommendationErrorCode, type RecommendationOptions, type RecommendationReason, type RecommendationReasonCode, type RecommendationScoreBreakdown, type RecommendationValidationIssue, type RecommendationValidationResult, type RecommendationWeights, type SkillBatchOperation, type SkillEntry, type SkillInstallResult, type SkillMetadata, type SourceType, type TransportType, type ValidationIssue, type ValidationResult, applyMcpInstallWithPolicy, buildServerConfig, catalog, checkAllInjections, checkInjection, checkSkillUpdate, configureProviderGlobalAndProject, deepMerge, detectAllProviders, detectMcpConfigConflicts, detectProjectProviders, detectProvider, discoverSkill, discoverSkills, ensureDir, formatSkillRecommendations, generateInjectionContent, getAgentsConfigPath, getAgentsHome, getAgentsInstructFile, getAgentsLinksDir, getAgentsMcpDir, getAgentsMcpServersPath, getAgentsSpecDir, getAgentsWikiDir, getAllProviders, getCanonicalSkillsDir, getInstalledProviders, getInstructionFiles, getLastSelectedAgents, getLockFilePath, getNestedValue, getPlatformLocations, getProjectAgentsDir, getProvider, getProviderCount, getProvidersByInstructFile, getProvidersByPriority, getProvidersByStatus, getRegistryVersion, getTrackedMcpServers, getTrackedSkills, getTransform, groupByInstructFile, inject, injectAll, installBatchWithRollback, installMcpServer, installMcpServerToAll, installSkill, isMarketplaceScoped, isQuiet, isVerbose, listAgentsMcpServers, listAllMcpServers, listCanonicalSkills, listMcpServers, normalizeRecommendationCriteria, parseSkillFile, parseSource, rankSkills, readConfig, readLockFile, recommendSkills, recordMcpInstall, recordSkillInstall, removeConfig, removeInjection, removeMcpFromLock, removeMcpServer, removeSkill, removeSkillFromLock, resetDetectionCache, resolveAlias, resolveConfigPath, resolveRegistryTemplatePath, saveLastSelectedAgents, scanDirectory, scanFile, scoreSkillRecommendation, searchSkills, selectProvidersByMinimumPriority, setQuiet, setVerbose, toSarif, tokenizeCriteriaValue, updateInstructionsSingleOperation, validateRecommendationCriteria, validateSkill, writeConfig };
2674
+ export { type AuditFinding, type AuditResult, type AuditRule, type AuditSeverity, type BatchInstallOptions, type BatchInstallResult, type CaampLockFile, type ConfigFormat, type ConflictPolicy, type CtDispatchMatrix, type CtManifest, type CtManifestSkill, type CtProfileDefinition, type CtSkillEntry, type CtValidationIssue, type CtValidationResult, type DetectionCacheOptions, type DetectionResult, type DualScopeConfigureOptions, type DualScopeConfigureResult, type GlobalOptions, type InjectionCheckResult, type InjectionStatus, type InjectionTemplate, type InstallResult, type InstructionUpdateSummary, type LockEntry, MarketplaceClient, type MarketplaceResult, type MarketplaceSearchResult, type MarketplaceSkill, type McpBatchOperation, type McpConflict, type McpConflictCode, type McpPlanApplyResult, type McpServerConfig, type McpServerEntry, type NormalizedRecommendationCriteria, type ParsedSource, type Provider, type ProviderPriority, type ProviderStatus, RECOMMENDATION_ERROR_CODES, type RankedSkillRecommendation, type RecommendSkillsResult, type RecommendationCriteriaInput, type RecommendationErrorCode, type RecommendationOptions, type RecommendationReason, type RecommendationReasonCode, type RecommendationScoreBreakdown, type RecommendationValidationIssue, type RecommendationValidationResult, type RecommendationWeights, type SkillBatchOperation, type SkillEntry, type SkillInstallResult, type SkillLibrary, type SkillLibraryDispatchMatrix, type SkillLibraryEntry, type SkillLibraryManifest, type SkillLibraryManifestSkill, type SkillLibraryProfile, type SkillLibraryValidationIssue, type SkillLibraryValidationResult, type SkillMetadata, type SourceType, type TransportType, type ValidationIssue, type ValidationResult, applyMcpInstallWithPolicy, buildInjectionContent, buildLibraryFromFiles, buildServerConfig, catalog, checkAllInjections, checkInjection, checkSkillUpdate, clearRegisteredLibrary, configureProviderGlobalAndProject, deepMerge, detectAllProviders, detectMcpConfigConflicts, detectProjectProviders, detectProvider, discoverSkill, discoverSkills, ensureDir, formatSkillRecommendations, generateInjectionContent, generateSkillsSection, getAgentsConfigPath, getAgentsHome, getAgentsInstructFile, getAgentsLinksDir, getAgentsMcpDir, getAgentsMcpServersPath, getAgentsSpecDir, getAgentsWikiDir, getAllProviders, getCanonicalSkillsDir, getInstalledProviders, getInstructionFiles, getLastSelectedAgents, getLockFilePath, getNestedValue, getPlatformLocations, getProjectAgentsDir, getProvider, getProviderCount, getProvidersByInstructFile, getProvidersByPriority, getProvidersByStatus, getRegistryVersion, getTrackedMcpServers, getTrackedSkills, getTransform, groupByInstructFile, inject, injectAll, installBatchWithRollback, installMcpServer, installMcpServerToAll, installSkill, isMarketplaceScoped, isQuiet, isVerbose, listAgentsMcpServers, listAllMcpServers, listCanonicalSkills, listMcpServers, loadLibraryFromModule, normalizeRecommendationCriteria, parseInjectionContent, parseSkillFile, parseSource, rankSkills, readConfig, readLockFile, recommendSkills, recordMcpInstall, recordSkillInstall, registerSkillLibrary, registerSkillLibraryFromPath, removeConfig, removeInjection, removeMcpFromLock, removeMcpServer, removeSkill, removeSkillFromLock, resetDetectionCache, resolveAlias, resolveConfigPath, resolveRegistryTemplatePath, saveLastSelectedAgents, scanDirectory, scanFile, scoreSkillRecommendation, searchSkills, selectProvidersByMinimumPriority, setQuiet, setVerbose, toSarif, tokenizeCriteriaValue, updateInstructionsSingleOperation, validateRecommendationCriteria, validateSkill, writeConfig };
package/dist/index.js CHANGED
@@ -2,11 +2,14 @@ import {
2
2
  MarketplaceClient,
3
3
  RECOMMENDATION_ERROR_CODES,
4
4
  applyMcpInstallWithPolicy,
5
+ buildInjectionContent,
6
+ buildLibraryFromFiles,
5
7
  buildServerConfig,
6
8
  catalog_exports,
7
9
  checkAllInjections,
8
10
  checkInjection,
9
11
  checkSkillUpdate,
12
+ clearRegisteredLibrary,
10
13
  configureProviderGlobalAndProject,
11
14
  deepMerge,
12
15
  detectAllProviders,
@@ -18,6 +21,7 @@ import {
18
21
  ensureDir,
19
22
  formatSkillRecommendations,
20
23
  generateInjectionContent,
24
+ generateSkillsSection,
21
25
  getAgentsConfigPath,
22
26
  getAgentsHome,
23
27
  getAgentsInstructFile,
@@ -58,7 +62,9 @@ import {
58
62
  listAllMcpServers,
59
63
  listCanonicalSkills,
60
64
  listMcpServers,
65
+ loadLibraryFromModule,
61
66
  normalizeRecommendationCriteria,
67
+ parseInjectionContent,
62
68
  parseSkillFile,
63
69
  parseSource,
64
70
  rankSkills,
@@ -67,6 +73,8 @@ import {
67
73
  recommendSkills,
68
74
  recordMcpInstall,
69
75
  recordSkillInstall,
76
+ registerSkillLibrary,
77
+ registerSkillLibraryFromPath,
70
78
  removeConfig,
71
79
  removeInjection,
72
80
  removeMcpFromLock,
@@ -91,16 +99,19 @@ import {
91
99
  validateRecommendationCriteria,
92
100
  validateSkill,
93
101
  writeConfig
94
- } from "./chunk-HUMRYJPE.js";
102
+ } from "./chunk-7YV3KXEJ.js";
95
103
  export {
96
104
  MarketplaceClient,
97
105
  RECOMMENDATION_ERROR_CODES,
98
106
  applyMcpInstallWithPolicy,
107
+ buildInjectionContent,
108
+ buildLibraryFromFiles,
99
109
  buildServerConfig,
100
110
  catalog_exports as catalog,
101
111
  checkAllInjections,
102
112
  checkInjection,
103
113
  checkSkillUpdate,
114
+ clearRegisteredLibrary,
104
115
  configureProviderGlobalAndProject,
105
116
  deepMerge,
106
117
  detectAllProviders,
@@ -112,6 +123,7 @@ export {
112
123
  ensureDir,
113
124
  formatSkillRecommendations,
114
125
  generateInjectionContent,
126
+ generateSkillsSection,
115
127
  getAgentsConfigPath,
116
128
  getAgentsHome,
117
129
  getAgentsInstructFile,
@@ -152,7 +164,9 @@ export {
152
164
  listAllMcpServers,
153
165
  listCanonicalSkills,
154
166
  listMcpServers,
167
+ loadLibraryFromModule,
155
168
  normalizeRecommendationCriteria,
169
+ parseInjectionContent,
156
170
  parseSkillFile,
157
171
  parseSource,
158
172
  rankSkills,
@@ -161,6 +175,8 @@ export {
161
175
  recommendSkills,
162
176
  recordMcpInstall,
163
177
  recordSkillInstall,
178
+ registerSkillLibrary,
179
+ registerSkillLibraryFromPath,
164
180
  removeConfig,
165
181
  removeInjection,
166
182
  removeMcpFromLock,
package/dist/index.js.map CHANGED
File without changes
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cleocode/caamp",
3
- "version": "1.0.5",
3
+ "version": "1.1.1",
4
4
  "description": "Central AI Agent Managed Packages - unified provider registry and package manager for AI coding agents",
5
5
  "type": "module",
6
6
  "bin": {
@@ -56,8 +56,7 @@
56
56
  "url": "https://github.com/kryptobaseddev/caamp/issues"
57
57
  },
58
58
  "dependencies": {
59
- "@cleocode/ct-skills": "^2.0.0",
60
- "@cleocode/lafs-protocol": "^1.2.3",
59
+ "@cleocode/lafs-protocol": "^1.3.2",
61
60
  "@iarna/toml": "^2.2.5",
62
61
  "commander": "^14.0.0",
63
62
  "gray-matter": "^4.0.3",
@@ -69,7 +68,7 @@
69
68
  "devDependencies": {
70
69
  "@biomejs/biome": "2.3.15",
71
70
  "@types/js-yaml": "^4.0.9",
72
- "@types/node": "25.2.3",
71
+ "@types/node": "25.3.0",
73
72
  "@vitest/coverage-v8": "^3.2.4",
74
73
  "tsup": "^8.5.0",
75
74
  "tsx": "^4.21.0",
@@ -82,5 +81,8 @@
82
81
  },
83
82
  "publishConfig": {
84
83
  "access": "public"
84
+ },
85
+ "overrides": {
86
+ "minimatch": ">=10.2.1"
85
87
  }
86
88
  }
File without changes