@sous-io/sous 1.0.8 → 1.0.10

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sous-io/sous",
3
- "version": "1.0.8",
3
+ "version": "1.0.10",
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",
@@ -39,44 +39,44 @@
39
39
  "sous.config.schema.json"
40
40
  ],
41
41
  "dependencies": {
42
- "@sous-io/plugin-api": "1.0.8"
42
+ "@sous-io/plugin-api": "1.0.10"
43
43
  },
44
44
  "devDependencies": {
45
45
  "esbuild": "^0.27.4",
46
46
  "jsonc-parser": "^3.3.1",
47
47
  "yaml": "^2.9.0",
48
48
  "zod": "^4.4.3",
49
- "@sous-io/core": "1.0.8",
50
- "@sous-io/plugin-authoring": "1.0.8",
51
- "@sous-io/plugin-build": "1.0.8",
52
- "@sous-io/documents": "1.0.8",
53
- "@sous-io/plugin-claude-code": "1.0.8",
54
- "@sous-io/plugin-compiler": "1.0.8",
55
- "@sous-io/plugin-confd": "1.0.8",
56
- "@sous-io/plugin-config-files": "1.0.8",
57
- "@sous-io/plugin-cli": "1.0.8",
58
- "@sous-io/plugin-expressions": "1.0.8",
59
- "@sous-io/plugin-formats": "1.0.8",
60
- "@sous-io/plugin-git": "1.0.8",
61
- "@sous-io/plugin-github": "1.0.8",
62
- "@sous-io/plugin-host": "1.0.8",
63
- "@sous-io/plugin-gitlab": "1.0.8",
64
- "@sous-io/plugin-harnesses": "1.0.8",
65
- "@sous-io/plugin-liquid": "1.0.8",
66
- "@sous-io/plugin-local": "1.0.8",
67
- "@sous-io/plugin-init": "1.0.8",
68
- "@sous-io/plugin-inspect": "1.0.8",
69
- "@sous-io/plugin-memories": "1.0.8",
70
- "@sous-io/plugin-npm": "1.0.8",
71
- "@sous-io/plugin-pnpm": "1.0.8",
72
- "@sous-io/plugin-recipe-answers": "1.0.8",
73
- "@sous-io/plugin-recipes": "1.0.8",
74
- "@sous-io/plugin-refs": "1.0.8",
75
- "@sous-io/plugin-skills": "1.0.8",
76
- "@sous-io/plugin-mcp": "1.0.8",
77
- "@sous-io/plugin-update": "1.0.8",
78
- "@sous-io/plugin-variables": "1.0.8",
79
- "@sous-io/plugin-yarn": "1.0.8"
49
+ "@sous-io/core": "1.0.10",
50
+ "@sous-io/documents": "1.0.10",
51
+ "@sous-io/plugin-authoring": "1.0.10",
52
+ "@sous-io/plugin-build": "1.0.10",
53
+ "@sous-io/plugin-claude-code": "1.0.10",
54
+ "@sous-io/plugin-cli": "1.0.10",
55
+ "@sous-io/plugin-compiler": "1.0.10",
56
+ "@sous-io/plugin-confd": "1.0.10",
57
+ "@sous-io/plugin-config-files": "1.0.10",
58
+ "@sous-io/plugin-expressions": "1.0.10",
59
+ "@sous-io/plugin-formats": "1.0.10",
60
+ "@sous-io/plugin-gitlab": "1.0.10",
61
+ "@sous-io/plugin-git": "1.0.10",
62
+ "@sous-io/plugin-harnesses": "1.0.10",
63
+ "@sous-io/plugin-host": "1.0.10",
64
+ "@sous-io/plugin-inspect": "1.0.10",
65
+ "@sous-io/plugin-init": "1.0.10",
66
+ "@sous-io/plugin-mcp": "1.0.10",
67
+ "@sous-io/plugin-github": "1.0.10",
68
+ "@sous-io/plugin-local": "1.0.10",
69
+ "@sous-io/plugin-liquid": "1.0.10",
70
+ "@sous-io/plugin-memories": "1.0.10",
71
+ "@sous-io/plugin-npm": "1.0.10",
72
+ "@sous-io/plugin-recipe-answers": "1.0.10",
73
+ "@sous-io/plugin-pnpm": "1.0.10",
74
+ "@sous-io/plugin-refs": "1.0.10",
75
+ "@sous-io/plugin-recipes": "1.0.10",
76
+ "@sous-io/plugin-update": "1.0.10",
77
+ "@sous-io/plugin-variables": "1.0.10",
78
+ "@sous-io/plugin-skills": "1.0.10",
79
+ "@sous-io/plugin-yarn": "1.0.10"
80
80
  },
81
81
  "engines": {
82
82
  "node": ">=22"
@@ -168,6 +168,9 @@ The rules:
168
168
  saying what they are, and treats them as refining the goal. With none, it takes the broadest
169
169
  reasonable reading of roughly the last 10 turns, NEVER asks which of several targets was meant,
170
170
  and names what it took in the first line of its reply.
171
+ - **Decide in the template.** When a step depends on a setting the project answers, branch on it
172
+ in the `.tpl.` file, so the compiled skill gives one instruction instead of asking the agent to
173
+ look the setting up. YOU MUST load `about-liquid-templates` for how.
171
174
  - **Tiers, never models.** Name a sub-agent's model by tier ("the next tier down from the main
172
175
  session"), never by product or provider.
173
176
  - **Public by default.** A skill published in a recipe repository is public: its examples use
@@ -206,7 +209,8 @@ A skill published in a recipe names its recipe:
206
209
  ## Source for this Skill
207
210
 
208
211
  This skill comes from the `<namespace>/<recipe>` recipe, installed by sous from a recipe
209
- repository. It was compiled from a template, so edit the source, never this output file.
212
+ repository. It was compiled from a template, so edit the source, never this output file. To
213
+ change it, run `sous repo contribute <namespace>/<recipe>`.
210
214
 
211
215
  - Source Path: <resolved source path>
212
216
  ```
@@ -222,8 +226,9 @@ never this output file.
222
226
  - Source Path: <resolved source path>
223
227
  ```
224
228
 
225
- The footer tells an agent reading the compiled copy where the skill came from and where to make a
226
- change.
229
+ The footer tells an agent reading the compiled copy where the skill came from and how to change
230
+ it. The Source Path of a recipe's skill points into sous's machine-wide store, which is read-only
231
+ build input; a change to a recipe goes upstream through `sous repo contribute`.
227
232
 
228
233
  ## Examples
229
234
 
@@ -240,6 +245,7 @@ change.
240
245
  ## Source for this Skill
241
246
 
242
247
  This skill comes from the `core/sous-skills` recipe, installed by sous from a recipe
243
- repository. It was compiled from a template, so edit the source, never this output file.
248
+ repository. It was compiled from a template, so edit the source, never this output file. To
249
+ change it, propose the change to `sous-io/sous`, under `recipes/core/sous-skills/`.
244
250
 
245
251
  - Source Path: {{ sousTemplatePath }}
@@ -289,6 +289,23 @@ project's variables change.
289
289
  4. **Test portability mentally.** Before finalizing a template, ask: "If I compiled
290
290
  this for a different project with different settings, would the output still make
291
291
  sense?" If not, parameterize the varying part.
292
+ 5. **Decide in the template, not in the agent.** When what a file tells the agent depends
293
+ on a project's answer, branch on the answer so the compiled file states one
294
+ instruction. An agent that reads a setting and then decides can get it wrong; a
295
+ rendered instruction cannot. Every recipe the project holds contributes its answers,
296
+ so a recipe may read another recipe's variable once it lists that recipe under
297
+ `depends`. Make the `else` branch the conservative behavior, because it is what renders
298
+ when nothing answered the variable:
299
+
300
+ {% raw %}
301
+ ```markdown
302
+ {% if createIssues == "always" -%}
303
+ File the issue without asking, and show the draft in the report.
304
+ {%- else -%}
305
+ Present the draft and wait for the user's approval.
306
+ {%- endif %}
307
+ ```
308
+ {% endraw %}
292
309
 
293
310
  ## Reference Files
294
311
 
@@ -304,6 +321,7 @@ The following variables are in scope at compile time in this project (secrets sh
304
321
  ## Source for this Skill
305
322
 
306
323
  This skill comes from the `core/sous-skills` recipe, installed by sous from a recipe
307
- repository. It was compiled from a template, so edit the source, never this output file.
324
+ repository. It was compiled from a template, so edit the source, never this output file. To
325
+ change it, propose the change to `sous-io/sous`, under `recipes/core/sous-skills/`.
308
326
 
309
327
  - Source Path: {{ sousTemplatePath }}
@@ -2,8 +2,9 @@
2
2
  name: about-sous
3
3
  description: >
4
4
  YOU MUST load this skill when you cannot edit a file in this project, are asked why
5
- a file keeps reverting, need to know where the source of truth for any managed file
6
- lives, or need to understand what this project's configuration system is.
5
+ a file keeps reverting, want to change a skill, memory or other file that came from a
6
+ recipe, need to know where the source of truth for any managed file lives, or need to
7
+ understand what this project's configuration system is.
7
8
  user-invocable: false
8
9
  ---
9
10
 
@@ -27,6 +28,21 @@ next time Sous runs:
27
28
  If you need to change something in one of these files, the change must be made at the
28
29
  source, in the central configuration this project uses with Sous.
29
30
 
31
+ ## Changing a File That Came From a Recipe
32
+
33
+ A file whose footer names a recipe (`This skill comes from the <namespace>/<recipe> recipe`)
34
+ is published by a recipe repository. Its Source Path points into sous's machine-wide store,
35
+ which is read-only build input: an edit there is lost and reaches nobody. Change it upstream:
36
+
37
+ 1. `sous repo contribute <namespace>/<recipe>` links a working copy of the recipe's
38
+ repository on a new branch; the project's builds read from it until the contribution
39
+ is finished, so an edit shows up on the next `sous build`.
40
+ 2. Edit the recipe in that working copy, raising its version (YOU MUST load
41
+ `about-sous-recipes`).
42
+ 3. `sous repo contribute <namespace>/<recipe> --finish` proposes the change and unlinks.
43
+
44
+ YOU MUST load `about-sous-repos` before running these commands.
45
+
30
46
  ## Where Your Skills Live
31
47
 
32
48
  Skills for this project live at `{{ skillsRoot }}`. That is the source directory Sous
@@ -50,9 +66,10 @@ published by the official sous recipe repository (https://github.com/sous-io/sou
50
66
  A copy of that recipe also ships inside the installed sous package, where it seeds the
51
67
  machine-wide store so a fresh, offline install still has these skills.
52
68
 
53
- Edit them only in the recipe repository, where they are the sources. Never edit a compiled
54
- copy of them inside a consuming project; that copy is build output and is overwritten on
55
- the next sous run.
69
+ Their source is in the sous repository (https://github.com/sous-io/sous), under
70
+ `recipes/core/sous-skills/`; the copy in the recipe repository is written by each sous
71
+ release and takes no proposals. Never edit a compiled copy of them inside a consuming
72
+ project; that copy is build output and is overwritten on the next sous run.
56
73
 
57
74
  ## Trust and Activation
58
75
 
@@ -89,6 +106,7 @@ far.
89
106
  ## Source for this Skill
90
107
 
91
108
  This skill comes from the `core/sous-skills` recipe, installed by sous from a recipe
92
- repository. It was compiled from a template, so edit the source, never this output file.
109
+ repository. It was compiled from a template, so edit the source, never this output file. To
110
+ change it, propose the change to `sous-io/sous`, under `recipes/core/sous-skills/`.
93
111
 
94
112
  - Source Path: {{ sousTemplatePath }}
@@ -95,6 +95,7 @@ prefer the on-disk copies.
95
95
  ## Source for this Skill
96
96
 
97
97
  This skill comes from the `core/sous-skills` recipe, installed by sous from a recipe
98
- repository. It was compiled from a template, so edit the source, never this output file.
98
+ repository. It was compiled from a template, so edit the source, never this output file. To
99
+ change it, propose the change to `sous-io/sous`, under `recipes/core/sous-skills/`.
99
100
 
100
101
  - Source Path: {{ sousTemplatePath }}
@@ -133,6 +133,10 @@ The fields in that example, and the ones it leaves out:
133
133
  version a definition MAY only loosen; tightening is a major bump, because an upgrade re-checks the
134
134
  answers already stored.
135
135
 
136
+ A template may also read a variable another recipe defines. List that recipe under `depends`, so
137
+ the variable is there wherever this recipe is, and branch on it in the template rather than telling
138
+ the agent to look the setting up; `about-liquid-templates` shows how.
139
+
136
140
  ## Depends and Subscribes
137
141
 
138
142
  Both lists name other recipes, and they do different things:
@@ -232,6 +236,7 @@ example, a partial holding
232
236
  ## Source for this Skill
233
237
 
234
238
  This skill comes from the `core/sous-skills` recipe, installed by sous from a recipe
235
- repository. It was compiled from a template, so edit the source, never this output file.
239
+ repository. It was compiled from a template, so edit the source, never this output file. To
240
+ change it, propose the change to `sous-io/sous`, under `recipes/core/sous-skills/`.
236
241
 
237
242
  - Source Path: {{ sousTemplatePath }}
@@ -175,6 +175,7 @@ remote before the first release, because `sous repo release` reads and writes ta
175
175
  ## Source for this Skill
176
176
 
177
177
  This skill comes from the `core/sous-skills` recipe, installed by sous from a recipe
178
- repository. It was compiled from a template, so edit the source, never this output file.
178
+ repository. It was compiled from a template, so edit the source, never this output file. To
179
+ change it, propose the change to `sous-io/sous`, under `recipes/core/sous-skills/`.
179
180
 
180
181
  - Source Path: {{ sousTemplatePath }}
@@ -110,6 +110,7 @@ load `about-liquid-templates` if any file in your skill needs `.tpl.` processing
110
110
  ## Source for this Skill
111
111
 
112
112
  This skill comes from the `core/sous-skills` recipe, installed by sous from a recipe
113
- repository. It was compiled from a template, so edit the source, never this output file.
113
+ repository. It was compiled from a template, so edit the source, never this output file. To
114
+ change it, propose the change to `sous-io/sous`, under `recipes/core/sous-skills/`.
114
115
 
115
116
  - Source Path: {{ sousTemplatePath }}
@@ -11,7 +11,7 @@ formatVersion: 1
11
11
 
12
12
  namespace: core
13
13
  name: sous-skills
14
- version: 1.0.8
14
+ version: 1.0.10
15
15
 
16
16
  description: >-
17
17
  The skills that teach an agent what sous is and how it works: which files sous