@sous-io/sous 0.2.31 → 0.2.32

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.
@@ -30,3 +30,4 @@
30
30
  - [0009: One whole build, everywhere](adrs/0009-whole-build-everywhere.md)
31
31
  - [0010: The index describes each version's dependencies and questions](adrs/0010-index-describes-recipes.md)
32
32
  - [0011: `sous update` updates sous through the package managers](adrs/0011-self-update.md)
33
+ - [0012: Recipes do not install Sous plugins](adrs/0012-recipes-and-plugins.md)
@@ -80,9 +80,9 @@ contents: # what a subscriber actually receives
80
80
  | `contents`, `variables` | no | Contents default to an empty list, which is what a curated bundle publishes; a duplicated variable name, or two definitions claiming one `env`, is an error |
81
81
  | `submissions` | no | Whether this recipe takes proposed changes, winning over the repository's block; see [The submissions block](#the-submissions-block) |
82
82
 
83
- `contents[].kind` is `skills`, `memories`, `prompts` or `config`. The first three are written to the
84
- destinations named by [`recipeOutputs`](#recipeoutputs-where-the-files-land); `config` entries become config
85
- layers instead. `include` needs at least one glob, and both lists are recipe-relative.
83
+ `contents[].kind` is `skills`, `memories`, `prompts` or `config`; there is no kind for a sous plugin. The
84
+ first three are written to the destinations named by [`recipeOutputs`](#recipeoutputs-where-the-files-land);
85
+ `config` entries become config layers instead. `include` needs at least one glob, and both lists are recipe-relative.
86
86
 
87
87
  ### The submissions block
88
88
 
@@ -47,7 +47,8 @@ $ sous namespace list
47
47
 
48
48
  A recipe is the unit you subscribe to and the only thing that carries a version. It may hold
49
49
  skills, memories, prompts, config layers and variable definitions in any mixture, and
50
- subscribing to it gets all of them.
50
+ subscribing to it gets all of them. A recipe may ship a plugin for a coding tool (a Claude Code
51
+ plugin, say), but never a plugin for sous itself; those come only with sous or as npm packages.
51
52
 
52
53
  ```yaml
53
54
  # recipes/workflow/task-files/sous.recipe.yaml
@@ -193,10 +194,10 @@ this machine.
193
194
  Subscribing decides what is switched on, and it is not a second security gate. A recipe is
194
195
  **active** when the project subscribes to it directly or through its namespace, or when an active
195
196
  recipe lists it under `subscribes`; only an active recipe registers entry points of its own, such as
196
- output files, skills and hooks. A recipe held only through `depends` is a library: an active recipe
197
- may include, call or import its files, but it registers nothing itself. Activation keeps a project
198
- from running what it has no use for and keeps unrelated recipes from colliding; everything in a
199
- trusted repository is already trusted.
197
+ output files, skills, tool hooks and tool plugins. A recipe held only through `depends` is a library:
198
+ an active recipe may include, call or import its files, but it registers nothing itself. Activation
199
+ keeps a project from running what it has no use for and keeps unrelated recipes from colliding;
200
+ everything in a trusted repository is already trusted.
200
201
 
201
202
  ## The official repository, and the built-in core
202
203
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sous-io/sous",
3
- "version": "0.2.31",
3
+ "version": "0.2.32",
4
4
  "description": "Compiles AI coding agent configuration (CLAUDE.md, skills, memories) from LiquidJS templates",
5
5
  "type": "module",
6
6
  "license": "Apache-2.0",
@@ -188,6 +188,13 @@ wins**; if none exist, the build errors listing every path tried:
188
188
 
189
189
  ## Custom Tags
190
190
 
191
+ The tags below are built into sous. A recipe cannot add a tag or a filter, since that would be a
192
+ Sous plugin; a Sous plugin comes only from sous's built-ins or an npm-style module.
193
+
194
+ > "recipes will not be allowed to install _Sous_ plugins. All Sous plugins, besides any built-ins that ship with Sous, itself, will come from a NPM repo (or similar) as modules. Recipes _will_ be allowed to install tool plugins (e.g. Claude Code Plugins)."
195
+ >
196
+ > -- **Luke Chavers** in an agent session (2026-09-29)
197
+
191
198
  **`showVars`**: dumps all variables currently in scope as a fenced JSON block.
192
199
  Useful during development to see exactly what variables are available at a given point
193
200
  in a template. Remove before finalizing.
@@ -65,8 +65,14 @@ trust question reads only its index.
65
65
  Subscribing decides what is switched on, not what is safe. A recipe is active when the
66
66
  project subscribes to it, directly or through its namespace, or when an active recipe
67
67
  lists it under `subscribes`, and only an active recipe registers entry points of its own
68
- (output files, skills, hooks). A recipe held only through `depends` is a library: an active
69
- recipe may include, call or import its files, but it registers nothing itself.
68
+ (output files, skills, tool hooks and tool plugins). A recipe held only through `depends` is a
69
+ library: an active recipe may include, call or import its files, but it registers nothing
70
+ itself. No recipe installs a Sous plugin; Sous plugins come only from sous's built-ins and from
71
+ npm-style modules.
72
+
73
+ > "recipes will not be allowed to install _Sous_ plugins. All Sous plugins, besides any built-ins that ship with Sous, itself, will come from a NPM repo (or similar) as modules. Recipes _will_ be allowed to install tool plugins (e.g. Claude Code Plugins)."
74
+ >
75
+ > -- **Luke Chavers** in an agent session (2026-09-29)
70
76
 
71
77
  ## Sous's Own Documentation
72
78
 
@@ -54,6 +54,14 @@ The fields in that example:
54
54
  it MUST be `.json`, `.jsonc`, `.yaml` or `.yml`, and every key outside `_aliases`, `_vars`,
55
55
  `compilation`, `recipeOutputs`, `runtimeContext`, `store` and `varMappings` is dropped with a
56
56
  warning. A recipe that only bundles others may leave `contents` out.
57
+ - A recipe MAY install tool plugins (a plugin for a coding agent tool, such as a Claude Code
58
+ plugin) and MUST NOT install a Sous plugin (one that extends sous itself). Sous plugins come only
59
+ from the built-ins that ship with sous and from npm-style modules. A `config` file is
60
+ configuration, not a Sous plugin.
61
+
62
+ > "recipes will not be allowed to install _Sous_ plugins. All Sous plugins, besides any built-ins that ship with Sous, itself, will come from a NPM repo (or similar) as modules. Recipes _will_ be allowed to install tool plugins (e.g. Claude Code Plugins)."
63
+ >
64
+ > -- **Luke Chavers** in an agent session (2026-09-29)
57
65
  - `depends`, `subscribes` and `variables` are described below; `submissions` is in
58
66
  `about-sous-repos`.
59
67
 
@@ -11,7 +11,7 @@ formatVersion: 1
11
11
 
12
12
  namespace: core
13
13
  name: sous-skills
14
- version: 0.2.31
14
+ version: 0.2.32
15
15
 
16
16
  description: >-
17
17
  The skills that teach an agent what sous is and how it works: which files sous