loadouts 0.2.1 → 0.2.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.
- package/README.md +3 -1
- package/dist/builtins/index.d.ts.map +1 -1
- package/dist/builtins/index.js +26 -13
- package/dist/builtins/index.js.map +1 -1
- package/dist/builtins/tools/cursor.js +2 -2
- package/dist/builtins/tools/cursor.js.map +1 -1
- package/dist/builtins/tools/opencode.d.ts.map +1 -1
- package/dist/builtins/tools/opencode.js +8 -2
- package/dist/builtins/tools/opencode.js.map +1 -1
- package/dist/cli/commands/add-to.d.ts +13 -0
- package/dist/cli/commands/add-to.d.ts.map +1 -0
- package/dist/cli/commands/add-to.js +56 -0
- package/dist/cli/commands/add-to.js.map +1 -0
- package/dist/cli/commands/check.d.ts.map +1 -1
- package/dist/cli/commands/check.js +17 -1
- package/dist/cli/commands/check.js.map +1 -1
- package/dist/cli/commands/docs.d.ts.map +1 -1
- package/dist/cli/commands/docs.js +2 -1
- package/dist/cli/commands/docs.js.map +1 -1
- package/dist/cli/commands/install.d.ts +2 -2
- package/dist/cli/commands/install.d.ts.map +1 -1
- package/dist/cli/commands/install.js +130 -15
- package/dist/cli/commands/install.js.map +1 -1
- package/dist/cli/commands/loadout-include.d.ts +29 -0
- package/dist/cli/commands/loadout-include.d.ts.map +1 -0
- package/dist/cli/commands/loadout-include.js +138 -0
- package/dist/cli/commands/loadout-include.js.map +1 -0
- package/dist/cli/commands/remove-from.d.ts +9 -0
- package/dist/cli/commands/remove-from.d.ts.map +1 -0
- package/dist/cli/commands/remove-from.js +51 -0
- package/dist/cli/commands/remove-from.js.map +1 -0
- package/dist/cli/commands/rule.js +11 -7
- package/dist/cli/commands/rule.js.map +1 -1
- package/dist/cli/commands/sanitize.d.ts +3 -2
- package/dist/cli/commands/sanitize.d.ts.map +1 -1
- package/dist/cli/commands/sanitize.js +27 -13
- package/dist/cli/commands/sanitize.js.map +1 -1
- package/dist/cli/commands/skill.d.ts.map +1 -1
- package/dist/cli/commands/skill.js +23 -14
- package/dist/cli/commands/skill.js.map +1 -1
- package/dist/cli/commands/status.d.ts.map +1 -1
- package/dist/cli/commands/status.js +15 -10
- package/dist/cli/commands/status.js.map +1 -1
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +4 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/core/config.d.ts +73 -13
- package/dist/core/config.d.ts.map +1 -1
- package/dist/core/config.js +224 -34
- package/dist/core/config.js.map +1 -1
- package/dist/core/import-discovery.d.ts +2 -0
- package/dist/core/import-discovery.d.ts.map +1 -1
- package/dist/core/import-discovery.js +129 -1
- package/dist/core/import-discovery.js.map +1 -1
- package/dist/core/schema.d.ts +91 -11
- package/dist/core/schema.d.ts.map +1 -1
- package/dist/core/schema.js +28 -0
- package/dist/core/schema.js.map +1 -1
- package/docs/authoring.md +15 -3
- package/docs/commands.md +19 -2
- package/docs/compatibility.md +34 -0
- package/docs/index.md +2 -0
- package/docs/quickstart.md +5 -1
- package/package.json +1 -1
package/dist/core/schema.d.ts
CHANGED
|
@@ -9,6 +9,8 @@ import { z } from "zod";
|
|
|
9
9
|
export declare const ToolSchema: z.ZodString;
|
|
10
10
|
export declare const ArtifactKindSchema: z.ZodString;
|
|
11
11
|
export declare const OutputModeSchema: z.ZodEnum<["symlink", "copy", "generate"]>;
|
|
12
|
+
export declare const ActivationSchema: z.ZodEnum<["always", "scoped"]>;
|
|
13
|
+
export type Activation = z.infer<typeof ActivationSchema>;
|
|
12
14
|
export declare const SourceRefSchema: z.ZodString;
|
|
13
15
|
export declare const RootConfigSchema: z.ZodObject<{
|
|
14
16
|
version: z.ZodLiteral<"1">;
|
|
@@ -291,18 +293,96 @@ export declare const LegacyAppliedStateSchema: z.ZodObject<{
|
|
|
291
293
|
export declare const RuleFrontmatterSchema: z.ZodObject<{
|
|
292
294
|
description: z.ZodOptional<z.ZodString>;
|
|
293
295
|
paths: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
296
|
+
activation: z.ZodOptional<z.ZodString>;
|
|
294
297
|
globs: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
295
298
|
alwaysApply: z.ZodOptional<z.ZodBoolean>;
|
|
296
|
-
}, "
|
|
297
|
-
description
|
|
298
|
-
paths
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
299
|
+
}, "passthrough", z.ZodTypeAny, z.objectOutputType<{
|
|
300
|
+
description: z.ZodOptional<z.ZodString>;
|
|
301
|
+
paths: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
302
|
+
activation: z.ZodOptional<z.ZodString>;
|
|
303
|
+
globs: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
304
|
+
alwaysApply: z.ZodOptional<z.ZodBoolean>;
|
|
305
|
+
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
306
|
+
description: z.ZodOptional<z.ZodString>;
|
|
307
|
+
paths: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
308
|
+
activation: z.ZodOptional<z.ZodString>;
|
|
309
|
+
globs: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
310
|
+
alwaysApply: z.ZodOptional<z.ZodBoolean>;
|
|
311
|
+
}, z.ZodTypeAny, "passthrough">>;
|
|
307
312
|
export type RuleFrontmatter = z.infer<typeof RuleFrontmatterSchema>;
|
|
313
|
+
export declare const CanonicalRuleFrontmatterSchema: z.ZodObject<Omit<{
|
|
314
|
+
description: z.ZodOptional<z.ZodString>;
|
|
315
|
+
paths: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
316
|
+
globs: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
317
|
+
alwaysApply: z.ZodOptional<z.ZodBoolean>;
|
|
318
|
+
} & {
|
|
319
|
+
activation: z.ZodEnum<["always", "scoped"]>;
|
|
320
|
+
}, "globs" | "alwaysApply">, "passthrough", z.ZodTypeAny, z.objectOutputType<Omit<{
|
|
321
|
+
description: z.ZodOptional<z.ZodString>;
|
|
322
|
+
paths: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
323
|
+
globs: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
324
|
+
alwaysApply: z.ZodOptional<z.ZodBoolean>;
|
|
325
|
+
} & {
|
|
326
|
+
activation: z.ZodEnum<["always", "scoped"]>;
|
|
327
|
+
}, "globs" | "alwaysApply">, z.ZodTypeAny, "passthrough">, z.objectInputType<Omit<{
|
|
328
|
+
description: z.ZodOptional<z.ZodString>;
|
|
329
|
+
paths: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
330
|
+
globs: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
331
|
+
alwaysApply: z.ZodOptional<z.ZodBoolean>;
|
|
332
|
+
} & {
|
|
333
|
+
activation: z.ZodEnum<["always", "scoped"]>;
|
|
334
|
+
}, "globs" | "alwaysApply">, z.ZodTypeAny, "passthrough">>;
|
|
335
|
+
export type CanonicalRuleFrontmatter = z.infer<typeof CanonicalRuleFrontmatterSchema>;
|
|
336
|
+
export declare const SkillFrontmatterSchema: z.ZodObject<{
|
|
337
|
+
name: z.ZodOptional<z.ZodString>;
|
|
338
|
+
description: z.ZodOptional<z.ZodString>;
|
|
339
|
+
"user-invocable": z.ZodOptional<z.ZodBoolean>;
|
|
340
|
+
"model-invocable": z.ZodOptional<z.ZodBoolean>;
|
|
341
|
+
"disable-model-invocation": z.ZodOptional<z.ZodBoolean>;
|
|
342
|
+
}, "passthrough", z.ZodTypeAny, z.objectOutputType<{
|
|
343
|
+
name: z.ZodOptional<z.ZodString>;
|
|
344
|
+
description: z.ZodOptional<z.ZodString>;
|
|
345
|
+
"user-invocable": z.ZodOptional<z.ZodBoolean>;
|
|
346
|
+
"model-invocable": z.ZodOptional<z.ZodBoolean>;
|
|
347
|
+
"disable-model-invocation": z.ZodOptional<z.ZodBoolean>;
|
|
348
|
+
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
349
|
+
name: z.ZodOptional<z.ZodString>;
|
|
350
|
+
description: z.ZodOptional<z.ZodString>;
|
|
351
|
+
"user-invocable": z.ZodOptional<z.ZodBoolean>;
|
|
352
|
+
"model-invocable": z.ZodOptional<z.ZodBoolean>;
|
|
353
|
+
"disable-model-invocation": z.ZodOptional<z.ZodBoolean>;
|
|
354
|
+
}, z.ZodTypeAny, "passthrough">>;
|
|
355
|
+
export type SkillFrontmatter = z.infer<typeof SkillFrontmatterSchema>;
|
|
356
|
+
export declare const FrontmatterSchema: z.ZodObject<{
|
|
357
|
+
description: z.ZodOptional<z.ZodString>;
|
|
358
|
+
paths: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
359
|
+
activation: z.ZodOptional<z.ZodString>;
|
|
360
|
+
globs: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
361
|
+
alwaysApply: z.ZodOptional<z.ZodBoolean>;
|
|
362
|
+
name: z.ZodOptional<z.ZodString>;
|
|
363
|
+
"user-invocable": z.ZodOptional<z.ZodBoolean>;
|
|
364
|
+
"model-invocable": z.ZodOptional<z.ZodBoolean>;
|
|
365
|
+
"disable-model-invocation": z.ZodOptional<z.ZodBoolean>;
|
|
366
|
+
}, "passthrough", z.ZodTypeAny, z.objectOutputType<{
|
|
367
|
+
description: z.ZodOptional<z.ZodString>;
|
|
368
|
+
paths: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
369
|
+
activation: z.ZodOptional<z.ZodString>;
|
|
370
|
+
globs: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
371
|
+
alwaysApply: z.ZodOptional<z.ZodBoolean>;
|
|
372
|
+
name: z.ZodOptional<z.ZodString>;
|
|
373
|
+
"user-invocable": z.ZodOptional<z.ZodBoolean>;
|
|
374
|
+
"model-invocable": z.ZodOptional<z.ZodBoolean>;
|
|
375
|
+
"disable-model-invocation": z.ZodOptional<z.ZodBoolean>;
|
|
376
|
+
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
377
|
+
description: z.ZodOptional<z.ZodString>;
|
|
378
|
+
paths: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
379
|
+
activation: z.ZodOptional<z.ZodString>;
|
|
380
|
+
globs: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
381
|
+
alwaysApply: z.ZodOptional<z.ZodBoolean>;
|
|
382
|
+
name: z.ZodOptional<z.ZodString>;
|
|
383
|
+
"user-invocable": z.ZodOptional<z.ZodBoolean>;
|
|
384
|
+
"model-invocable": z.ZodOptional<z.ZodBoolean>;
|
|
385
|
+
"disable-model-invocation": z.ZodOptional<z.ZodBoolean>;
|
|
386
|
+
}, z.ZodTypeAny, "passthrough">>;
|
|
387
|
+
export type Frontmatter = z.infer<typeof FrontmatterSchema>;
|
|
308
388
|
//# sourceMappingURL=schema.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/core/schema.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,UAAU,aAAoB,CAAC;AAC5C,eAAO,MAAM,kBAAkB,aAAoB,CAAC;AAEpD,eAAO,MAAM,gBAAgB,4CAA0C,CAAC;
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/core/schema.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,UAAU,aAAoB,CAAC;AAC5C,eAAO,MAAM,kBAAkB,aAAoB,CAAC;AAEpD,eAAO,MAAM,gBAAgB,4CAA0C,CAAC;AACxE,eAAO,MAAM,gBAAgB,iCAA+B,CAAC;AAC7D,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAG1D,eAAO,MAAM,eAAe,aAAa,CAAC;AAE1C,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;EAM3B,CAAC;AAEH,eAAO,MAAM,oBAAoB;;;;;;;;;IAM/B,CAAC;AAEH,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAKlC,CAAC;AAEH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;EAO9B,CAAC;AAGH,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;EAOpC,CAAC;AAEH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;EAK9B,CAAC;AAEH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAM7B,CAAC;AAGH,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAMnC,CAAC;AAGH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;gCAMlB,CAAC;AAEjB,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEpE,eAAO,MAAM,8BAA8B;;;;;;;;;;;;;;;;;;;;;0DAKzC,CAAC;AAEH,MAAM,MAAM,wBAAwB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,8BAA8B,CAAC,CAAC;AAGtF,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;gCAMnB,CAAC;AAEjB,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAGtE,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gCAUd,CAAC;AAEjB,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC"}
|
package/dist/core/schema.js
CHANGED
|
@@ -11,6 +11,7 @@ import { z } from "zod";
|
|
|
11
11
|
export const ToolSchema = z.string().min(1);
|
|
12
12
|
export const ArtifactKindSchema = z.string().min(1);
|
|
13
13
|
export const OutputModeSchema = z.enum(["symlink", "copy", "generate"]);
|
|
14
|
+
export const ActivationSchema = z.enum(["always", "scoped"]);
|
|
14
15
|
// Source reference — path to another .loadouts/ directory
|
|
15
16
|
export const SourceRefSchema = z.string();
|
|
16
17
|
export const RootConfigSchema = z.object({
|
|
@@ -75,7 +76,34 @@ export const LegacyAppliedStateSchema = z.object({
|
|
|
75
76
|
export const RuleFrontmatterSchema = z.object({
|
|
76
77
|
description: z.string().optional(),
|
|
77
78
|
paths: z.array(z.string()).optional(),
|
|
79
|
+
activation: z.string().optional(),
|
|
78
80
|
globs: z.array(z.string()).optional(),
|
|
79
81
|
alwaysApply: z.boolean().optional(),
|
|
82
|
+
}).passthrough();
|
|
83
|
+
export const CanonicalRuleFrontmatterSchema = RuleFrontmatterSchema.extend({
|
|
84
|
+
activation: ActivationSchema,
|
|
85
|
+
}).omit({
|
|
86
|
+
globs: true,
|
|
87
|
+
alwaysApply: true,
|
|
80
88
|
});
|
|
89
|
+
// Skill frontmatter
|
|
90
|
+
export const SkillFrontmatterSchema = z.object({
|
|
91
|
+
name: z.string().optional(),
|
|
92
|
+
description: z.string().optional(),
|
|
93
|
+
"user-invocable": z.boolean().optional(),
|
|
94
|
+
"model-invocable": z.boolean().optional(),
|
|
95
|
+
"disable-model-invocation": z.boolean().optional(),
|
|
96
|
+
}).passthrough();
|
|
97
|
+
// Generic markdown frontmatter used by parse/serialize helpers.
|
|
98
|
+
export const FrontmatterSchema = z.object({
|
|
99
|
+
description: z.string().optional(),
|
|
100
|
+
paths: z.array(z.string()).optional(),
|
|
101
|
+
activation: z.string().optional(),
|
|
102
|
+
globs: z.array(z.string()).optional(),
|
|
103
|
+
alwaysApply: z.boolean().optional(),
|
|
104
|
+
name: z.string().optional(),
|
|
105
|
+
"user-invocable": z.boolean().optional(),
|
|
106
|
+
"model-invocable": z.boolean().optional(),
|
|
107
|
+
"disable-model-invocation": z.boolean().optional(),
|
|
108
|
+
}).passthrough();
|
|
81
109
|
//# sourceMappingURL=schema.js.map
|
package/dist/core/schema.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/core/schema.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,0EAA0E;AAC1E,qDAAqD;AACrD,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC5C,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAEpD,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/core/schema.ts"],"names":[],"mappings":"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"}
|
package/docs/authoring.md
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
This guide covers creating rules, skills, and instructions. The typical workflow:
|
|
4
4
|
|
|
5
5
|
1. **Create** an artifact (`loadouts rule add`, `loadouts skill add`, etc.)
|
|
6
|
-
2. **Include** it in a loadout
|
|
6
|
+
2. **Include** it in a loadout (`loadouts add-to <loadout> <artifact>`)
|
|
7
7
|
3. **Sync** to render outputs (`loadouts sync`)
|
|
8
8
|
4. **Verify** with `loadouts status` or `loadouts info`
|
|
9
9
|
|
|
@@ -35,7 +35,11 @@ Use errors.Join() for error wrapping.
|
|
|
35
35
|
loadouts rule add api-standards -d "REST API conventions" -p "**/*_handler.go"
|
|
36
36
|
```
|
|
37
37
|
|
|
38
|
-
After creating, add
|
|
38
|
+
After creating, add it to a loadout:
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
loadouts add-to backend rules/api-standards.md
|
|
42
|
+
```
|
|
39
43
|
|
|
40
44
|
**Import existing:**
|
|
41
45
|
```bash
|
|
@@ -86,7 +90,11 @@ Invoke this skill when debugging Python errors...
|
|
|
86
90
|
loadouts skill add deploy -d "Deployment procedures"
|
|
87
91
|
```
|
|
88
92
|
|
|
89
|
-
After creating, add
|
|
93
|
+
After creating, add it to a loadout:
|
|
94
|
+
|
|
95
|
+
```bash
|
|
96
|
+
loadouts add-to backend skills/deploy
|
|
97
|
+
```
|
|
90
98
|
|
|
91
99
|
---
|
|
92
100
|
|
|
@@ -131,6 +139,10 @@ include:
|
|
|
131
139
|
```
|
|
132
140
|
|
|
133
141
|
**Per-include tool targeting:**
|
|
142
|
+
```bash
|
|
143
|
+
loadouts add-to backend rules/cursor-only.md --tools cursor
|
|
144
|
+
```
|
|
145
|
+
|
|
134
146
|
```yaml
|
|
135
147
|
include:
|
|
136
148
|
- rules/general.md # All tools
|
package/docs/commands.md
CHANGED
|
@@ -64,10 +64,12 @@ loadouts init -g # Global
|
|
|
64
64
|
loadouts init --force # Overwrite existing
|
|
65
65
|
```
|
|
66
66
|
|
|
67
|
-
### `loadouts install`
|
|
68
|
-
Discover and import existing tool configurations.
|
|
67
|
+
### `loadouts install [source]`
|
|
68
|
+
Discover and import existing tool configurations. When `source` is provided, import from that file or directory instead of scanning the current tool config directories.
|
|
69
69
|
```bash
|
|
70
70
|
loadouts install # All configs
|
|
71
|
+
loadouts install ./agent-pack # Import from a source directory
|
|
72
|
+
loadouts install ./rule.mdc # Import a single rule file
|
|
71
73
|
loadouts install --dry-run # Preview
|
|
72
74
|
loadouts install -i # Interactive
|
|
73
75
|
loadouts install --rules # Rules only
|
|
@@ -84,6 +86,21 @@ loadouts create api --extends base # Extend another loadout
|
|
|
84
86
|
loadouts create test -d "Testing" # With description
|
|
85
87
|
```
|
|
86
88
|
|
|
89
|
+
### `loadouts add-to <loadout> <artifacts...>`
|
|
90
|
+
Add existing artifacts to a loadout include list.
|
|
91
|
+
```bash
|
|
92
|
+
loadouts add-to backend rules/api.md
|
|
93
|
+
loadouts add-to backend skills/debugger
|
|
94
|
+
loadouts add-to backend rules/cursor.md --tools cursor
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
### `loadouts remove-from <loadout> <artifacts...>`
|
|
98
|
+
Remove artifacts from a loadout include list without deleting the artifact files.
|
|
99
|
+
```bash
|
|
100
|
+
loadouts remove-from backend rules/api.md
|
|
101
|
+
loadouts remove-from backend skills/debugger
|
|
102
|
+
```
|
|
103
|
+
|
|
87
104
|
### `loadouts edit <name>`
|
|
88
105
|
Open a loadout definition in `$EDITOR`.
|
|
89
106
|
```bash
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# Compatibility
|
|
2
|
+
|
|
3
|
+
Current built-in rendering targets for canonical artifacts.
|
|
4
|
+
|
|
5
|
+
## Artifact Paths (Project Scope)
|
|
6
|
+
|
|
7
|
+
| Tool | Rule | Skill | Instruction |
|
|
8
|
+
|------|------|-------|-------------|
|
|
9
|
+
| Claude Code | `.claude/rules/<name>.md` | `.claude/skills/<name>/` | `CLAUDE.md` (generated wrapper to `AGENTS.md`) |
|
|
10
|
+
| Cursor | `.cursor/rules/<name>.mdc` | `.cursor/skills/<name>/` | `AGENTS.md` |
|
|
11
|
+
| OpenCode | `.opencode/rules/<name>.md` | `.opencode/skills/<name>/` | `AGENTS.md` |
|
|
12
|
+
| Codex | - (no rule target) | `.agents/skills/<name>/` | `AGENTS.md` |
|
|
13
|
+
| Pi | - (no native rule target) | `.pi/skills/<name>/` | `AGENTS.md` |
|
|
14
|
+
|
|
15
|
+
Global scope uses each tool's configured global base path. Instruction files may render to home-level `AGENTS.md` or `CLAUDE.md` paths depending on the tool.
|
|
16
|
+
|
|
17
|
+
## Canonical Frontmatter
|
|
18
|
+
|
|
19
|
+
- Canonical rule fields: `description`, `paths`, `activation` (`always` or `scoped`).
|
|
20
|
+
- Canonical skill fields: `name`, `description`, `user-invocable`, `model-invocable`.
|
|
21
|
+
|
|
22
|
+
Rendered aliases for compatibility:
|
|
23
|
+
|
|
24
|
+
- Cursor/OpenCode rules: `paths` is mirrored to `globs`.
|
|
25
|
+
- Cursor/OpenCode rules: `activation` is mirrored to `alwaysApply` (`always -> true`, `scoped -> false`).
|
|
26
|
+
- OpenCode skills: `model-invocable` is mirrored to `disable-model-invocation` (inverted boolean).
|
|
27
|
+
|
|
28
|
+
Transforms add aliases when canonical fields are present and alias fields are not already set.
|
|
29
|
+
|
|
30
|
+
## Known Limitations
|
|
31
|
+
|
|
32
|
+
- Codex and Pi do not currently have a built-in rule output target.
|
|
33
|
+
- Frontmatter aliasing is only applied on transformed targets (currently Cursor/OpenCode rules and OpenCode skills).
|
|
34
|
+
- If both canonical and alias fields are set by hand, existing alias values are preserved.
|
package/docs/index.md
CHANGED
|
@@ -27,6 +27,7 @@ loadouts docs quickstart # Step-by-step setup guide
|
|
|
27
27
|
# Setup
|
|
28
28
|
loadouts init # Initialize .loadouts/
|
|
29
29
|
loadouts install # Import existing configs
|
|
30
|
+
loadouts install ./agent-pack # Import from a source directory
|
|
30
31
|
|
|
31
32
|
# Daily use
|
|
32
33
|
loadouts activate <name> # Activate loadout(s)
|
|
@@ -53,6 +54,7 @@ loadouts docs quickstart # Get started in 60 seconds
|
|
|
53
54
|
loadouts docs concepts # Loadouts, artifacts, scopes, tools
|
|
54
55
|
loadouts docs commands # Full command reference
|
|
55
56
|
loadouts docs authoring # Creating rules, skills, instructions
|
|
57
|
+
loadouts docs compatibility # Tool paths, frontmatter aliases, limits
|
|
56
58
|
loadouts docs workflows # Team setup, git, CI/CD
|
|
57
59
|
loadouts docs troubleshooting # Common issues and solutions
|
|
58
60
|
```
|
package/docs/quickstart.md
CHANGED
|
@@ -24,6 +24,8 @@ This creates `.loadouts/`, scans for existing rules/skills in `.claude/`, `.curs
|
|
|
24
24
|
|
|
25
25
|
```bash
|
|
26
26
|
loadouts install # Discover and import existing configs
|
|
27
|
+
loadouts install ./agent-pack # Import from a source directory
|
|
28
|
+
loadouts install ./rule.mdc # Import a single artifact
|
|
27
29
|
loadouts install --dry-run # Preview what would be imported
|
|
28
30
|
loadouts install -i # Interactive mode (select what to import)
|
|
29
31
|
```
|
|
@@ -35,6 +37,7 @@ If you're starting fresh with no existing agent configs:
|
|
|
35
37
|
```bash
|
|
36
38
|
loadouts init # Creates .loadouts/ with a base loadout
|
|
37
39
|
loadouts rule add coding-standards # Create a rule file
|
|
40
|
+
loadouts add-to base rules/coding-standards.md
|
|
38
41
|
loadouts sync # Render to tool directories
|
|
39
42
|
```
|
|
40
43
|
|
|
@@ -57,10 +60,11 @@ If you skipped import during init, or want to import additional configs later:
|
|
|
57
60
|
|
|
58
61
|
```bash
|
|
59
62
|
loadouts install # Import existing configs
|
|
63
|
+
loadouts install ./agent-pack # Import from a source directory
|
|
60
64
|
loadouts sync # Render unified config
|
|
61
65
|
```
|
|
62
66
|
|
|
63
|
-
|
|
67
|
+
Without a path, this finds rules/skills across `.claude/`, `.cursor/`, `.opencode/`, etc. and consolidates them into `.loadouts/`. With a path, it imports from that specific file or directory.
|
|
64
68
|
|
|
65
69
|
**Verify it worked:**
|
|
66
70
|
```bash
|