tunestra 0.5.0 → 0.6.0
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 +44 -4
- package/dist/cli.mjs +976 -492
- package/dist/index.mjs +1 -1
- package/dist/{src-CZK2Ixbt.mjs → src-DTrYA2yZ.mjs} +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -94,7 +94,7 @@ The file name is the name of the subagent: lowercase letters, digits and single
|
|
|
94
94
|
|
|
95
95
|
```yaml
|
|
96
96
|
name: team # required, unique in the chain
|
|
97
|
-
level: team # required: base | domain | team
|
|
97
|
+
level: team # required: base | domain | team | local
|
|
98
98
|
description: Frontend team conventions
|
|
99
99
|
extends: # optional, from general to specific
|
|
100
100
|
- ../base
|
|
@@ -127,11 +127,49 @@ exclude: {}
|
|
|
127
127
|
overrides: {}
|
|
128
128
|
```
|
|
129
129
|
|
|
130
|
+
### Personal level: `tunestra.local.yaml`
|
|
131
|
+
|
|
132
|
+
A developer can tune the setup for themselves with `tunestra.local.yaml` and `.tunestra.local/`
|
|
133
|
+
in the project; `tunestra init --local` creates both. tunestra always puts both in
|
|
134
|
+
`.gitignore`. The personal level comes after the project, so it can add artifacts, override
|
|
135
|
+
them by key and exclude them, like any other level.
|
|
136
|
+
|
|
137
|
+
```yaml
|
|
138
|
+
name: local # optional, defaults to local
|
|
139
|
+
extends: # optional: personal presets with level: local
|
|
140
|
+
- ~/presets/me
|
|
141
|
+
exclude:
|
|
142
|
+
skills: [storybook]
|
|
143
|
+
env:
|
|
144
|
+
HTTPS_PROXY: http://localhost:3128
|
|
145
|
+
permissions:
|
|
146
|
+
allow: [Bash(make *)]
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
A personal preset has `level: local` in its manifest and can be shared between your projects.
|
|
150
|
+
The personal level can extend only such presets, and no shared level can extend them.
|
|
151
|
+
|
|
152
|
+
The committed files stay the same for the whole team: AGENTS.md, CLAUDE.md and
|
|
153
|
+
`.claude/settings.json` are built without the personal level. Every other generated file
|
|
154
|
+
follows the chain with it. A personal level cannot exclude `env` or permissions, because
|
|
155
|
+
Claude Code joins the personal settings with the committed ones and cannot remove a
|
|
156
|
+
committed entry.
|
|
157
|
+
|
|
158
|
+
| Agent | What it gets |
|
|
159
|
+
|---|---|
|
|
160
|
+
| Claude Code | `CLAUDE.local.md`, which it reads after CLAUDE.md: what the personal level adds, overrides and turns off. Personal `env` and permissions are added to `.claude/settings.local.json` |
|
|
161
|
+
| Codex | `AGENTS.override.md`, which it reads instead of AGENTS.md: the whole index with the personal level |
|
|
162
|
+
|
|
163
|
+
Claude Code writes `.claude/settings.local.json` too, for example when you allow a command for
|
|
164
|
+
good. tunestra remembers which entries it added and changes only those: your settings and
|
|
165
|
+
the rules of Claude Code stay. A variable that you changed by hand is yours and stays too.
|
|
166
|
+
|
|
130
167
|
### Sources
|
|
131
168
|
|
|
132
169
|
| Reference | Example |
|
|
133
170
|
|---|---|
|
|
134
171
|
| Relative path | `../presets/team` (relative to the file that references it) |
|
|
172
|
+
| Home directory | `~/presets/me`, for personal presets |
|
|
135
173
|
| GitHub | `github:<owner>/<repo>/<path>#<ref>` |
|
|
136
174
|
| GitLab | `gitlab:<owner>/<repo>/<path>#<ref>` |
|
|
137
175
|
|
|
@@ -200,6 +238,7 @@ For every agent:
|
|
|
200
238
|
| `.agents/rules/<NN>-<level>-<key>.md` | Rule texts, ordered from specific to general | no |
|
|
201
239
|
| `.agents/skills/<key>/` | Skills | no |
|
|
202
240
|
| `.tunestra/state/` | What tunestra generated last time | no |
|
|
241
|
+
| `AGENTS.override.md`, `CLAUDE.local.md` | The personal level, when there is one | no |
|
|
203
242
|
| `.gitignore` | A block between `# >>> tunestra` and `# <<< tunestra` | yes |
|
|
204
243
|
|
|
205
244
|
### Claude Code
|
|
@@ -262,7 +301,7 @@ file can change only the model and the instructions. So Codex cannot make a suba
|
|
|
262
301
|
read-only: tunestra turns off its shell (`features.shell_tool = false`) and asks it not to
|
|
263
302
|
edit files in the instructions, and setup says so in a note.
|
|
264
303
|
|
|
265
|
-
`<NN>` orders rules from specific to general: `10` project, `20` team, `30` domain, `40` base.
|
|
304
|
+
`<NN>` orders rules from specific to general: `00` personal, `10` project, `20` team, `30` domain, `40` base.
|
|
266
305
|
Level instructions get the key `instructions`, and the preset name when it differs from the
|
|
267
306
|
level: `20-team-instructions.md`, but `20-team-instructions-frontend.md` for a `team` preset
|
|
268
307
|
named `frontend`.
|
|
@@ -298,10 +337,11 @@ Generated files are never kept because of manual edits: change the sources inste
|
|
|
298
337
|
| Command | What it does |
|
|
299
338
|
|---|---|
|
|
300
339
|
| `tunestra init` | Creates `tunestra.yaml`; `--extends <presets...>` fills `extends`. Moves a hand-written `AGENTS.md` to `.tunestra/AGENTS.md` and a `CLAUDE.md` with its own text to `.tunestra/rules/claude-md.md`; a `CLAUDE.md` that only imports `AGENTS.md` is removed |
|
|
340
|
+
| `tunestra init --local` | Creates your personal level, `tunestra.local.yaml` and `.tunestra.local/rules/`, in a project with `tunestra.yaml`. `--extends` adds personal presets |
|
|
301
341
|
| `tunestra setup` | Resolves the chain and regenerates every output |
|
|
302
342
|
| `tunestra setup --dry-run` | Prints what would be written or removed, and the warnings |
|
|
303
343
|
| `tunestra setup --verbose` | Also prints where every artifact comes from and what it overrides |
|
|
304
|
-
| `tunestra uninstall` | Removes everything tunestra generated and its block in `.gitignore
|
|
344
|
+
| `tunestra uninstall` | Removes everything tunestra generated and its block in `.gitignore`, and takes its entries out of `.claude/settings.local.json`; the sources stay. `--dry-run` shows the list first |
|
|
305
345
|
|
|
306
346
|
`tunestra setup` refuses to overwrite an `AGENTS.md` or `CLAUDE.md` that it did not generate
|
|
307
347
|
and tells you where to move their text.
|
|
@@ -312,7 +352,7 @@ and tells you where to move their text.
|
|
|
312
352
|
|---|---|
|
|
313
353
|
| v0.1 | Inheritance for Claude Code |
|
|
314
354
|
| v0.2 | Codex (this document) |
|
|
315
|
-
| v0.3 | `env
|
|
355
|
+
| v0.3 | `env`, permissions, subagents and a personal `local` level |
|
|
316
356
|
| v0.4 | Spaces, npm sources, lockfile |
|
|
317
357
|
| v0.5 | `required` / `locked` policies, CI check |
|
|
318
358
|
| v0.6 | Hooks |
|