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.
Files changed (64) hide show
  1. package/README.md +3 -1
  2. package/dist/builtins/index.d.ts.map +1 -1
  3. package/dist/builtins/index.js +26 -13
  4. package/dist/builtins/index.js.map +1 -1
  5. package/dist/builtins/tools/cursor.js +2 -2
  6. package/dist/builtins/tools/cursor.js.map +1 -1
  7. package/dist/builtins/tools/opencode.d.ts.map +1 -1
  8. package/dist/builtins/tools/opencode.js +8 -2
  9. package/dist/builtins/tools/opencode.js.map +1 -1
  10. package/dist/cli/commands/add-to.d.ts +13 -0
  11. package/dist/cli/commands/add-to.d.ts.map +1 -0
  12. package/dist/cli/commands/add-to.js +56 -0
  13. package/dist/cli/commands/add-to.js.map +1 -0
  14. package/dist/cli/commands/check.d.ts.map +1 -1
  15. package/dist/cli/commands/check.js +17 -1
  16. package/dist/cli/commands/check.js.map +1 -1
  17. package/dist/cli/commands/docs.d.ts.map +1 -1
  18. package/dist/cli/commands/docs.js +2 -1
  19. package/dist/cli/commands/docs.js.map +1 -1
  20. package/dist/cli/commands/install.d.ts +2 -2
  21. package/dist/cli/commands/install.d.ts.map +1 -1
  22. package/dist/cli/commands/install.js +130 -15
  23. package/dist/cli/commands/install.js.map +1 -1
  24. package/dist/cli/commands/loadout-include.d.ts +29 -0
  25. package/dist/cli/commands/loadout-include.d.ts.map +1 -0
  26. package/dist/cli/commands/loadout-include.js +138 -0
  27. package/dist/cli/commands/loadout-include.js.map +1 -0
  28. package/dist/cli/commands/remove-from.d.ts +9 -0
  29. package/dist/cli/commands/remove-from.d.ts.map +1 -0
  30. package/dist/cli/commands/remove-from.js +51 -0
  31. package/dist/cli/commands/remove-from.js.map +1 -0
  32. package/dist/cli/commands/rule.js +11 -7
  33. package/dist/cli/commands/rule.js.map +1 -1
  34. package/dist/cli/commands/sanitize.d.ts +3 -2
  35. package/dist/cli/commands/sanitize.d.ts.map +1 -1
  36. package/dist/cli/commands/sanitize.js +27 -13
  37. package/dist/cli/commands/sanitize.js.map +1 -1
  38. package/dist/cli/commands/skill.d.ts.map +1 -1
  39. package/dist/cli/commands/skill.js +23 -14
  40. package/dist/cli/commands/skill.js.map +1 -1
  41. package/dist/cli/commands/status.d.ts.map +1 -1
  42. package/dist/cli/commands/status.js +15 -10
  43. package/dist/cli/commands/status.js.map +1 -1
  44. package/dist/cli/index.d.ts.map +1 -1
  45. package/dist/cli/index.js +4 -0
  46. package/dist/cli/index.js.map +1 -1
  47. package/dist/core/config.d.ts +73 -13
  48. package/dist/core/config.d.ts.map +1 -1
  49. package/dist/core/config.js +224 -34
  50. package/dist/core/config.js.map +1 -1
  51. package/dist/core/import-discovery.d.ts +2 -0
  52. package/dist/core/import-discovery.d.ts.map +1 -1
  53. package/dist/core/import-discovery.js +129 -1
  54. package/dist/core/import-discovery.js.map +1 -1
  55. package/dist/core/schema.d.ts +91 -11
  56. package/dist/core/schema.d.ts.map +1 -1
  57. package/dist/core/schema.js +28 -0
  58. package/dist/core/schema.js.map +1 -1
  59. package/docs/authoring.md +15 -3
  60. package/docs/commands.md +19 -2
  61. package/docs/compatibility.md +34 -0
  62. package/docs/index.md +2 -0
  63. package/docs/quickstart.md +5 -1
  64. package/package.json +1 -1
@@ -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
- }, "strip", z.ZodTypeAny, {
297
- description?: string | undefined;
298
- paths?: string[] | undefined;
299
- globs?: string[] | undefined;
300
- alwaysApply?: boolean | undefined;
301
- }, {
302
- description?: string | undefined;
303
- paths?: string[] | undefined;
304
- globs?: string[] | undefined;
305
- alwaysApply?: boolean | undefined;
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;AAGxE,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;;;;;;;;;;;;;;;EAKhC,CAAC;AAEH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,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"}
@@ -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
@@ -1 +1 @@
1
- {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/core/schema.ts"],"names":[],"mappings":"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"}
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 definition (`loadouts/<name>.yaml`)
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 `rules/api-standards.md` to your loadout's `include` list.
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 `skills/deploy` to your loadout's `include` list.
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
  ```
@@ -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
- This finds rules/skills across `.claude/`, `.cursor/`, `.opencode/`, etc. and consolidates them into `.loadouts/`.
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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "loadouts",
3
- "version": "0.2.1",
3
+ "version": "0.2.3",
4
4
  "description": "Composable configuration bundles for AI coding agents",
5
5
  "type": "module",
6
6
  "bin": {