Skip to content

Commit d84f912

Browse files
authored
gardener: Upgrade Gardener to v0.1.20 and write replies as finished work (#282)
* Use direct verbs and warmer, structured replies in Gardener tasks * gardener: Upgrade Gardener to v0.1.20 * gardener: Run 0.1.20 in the gardener:generate script
1 parent 9e93e46 commit d84f912

13 files changed

Lines changed: 77 additions & 73 deletions

File tree

‎.gardener/SKILL.md‎

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,15 @@ name: gardener-tasks
33
description: How to write, change and check Gardener tasks (.gardener/tasks/*/TASK.md), the AI maintenance tasks this repository runs from GitHub Actions. Use before creating or editing anything under .gardener/.
44
---
55

6-
<!-- Written by Gardener 0.1.19. `gardener generate` rewrites this file; do not edit it. -->
6+
<!-- Written by Gardener 0.1.20. `gardener generate` rewrites this file; do not edit it. -->
77

88
# Gardener tasks
99

1010
Gardener runs AI maintenance tasks on this repository from GitHub Actions. Each task is one
1111
Markdown file: YAML frontmatter says when it runs, what the model may read, and exactly which
1212
changes it may make; the body is the model's instructions. A planning job runs the model with only
13-
the declared **tools** and lets it propose only the declared **effects**. A separate job then applies
14-
those proposals. Nothing outside the declaration is possible, whatever the instructions say.
13+
the declared **tools** and lets it plan only the declared **effects**. A separate job then applies
14+
that plan. Nothing outside the declaration is possible, whatever the instructions say.
1515

1616
## Files
1717

@@ -29,7 +29,7 @@ those proposals. Nothing outside the declaration is possible, whatever the instr
2929
## Workflow
3030

3131
1. Create `.gardener/tasks/<dir>/TASK.md`. Start from the template below or an existing task.
32-
2. Run `npx @scuffi/gardener@0.1.19 generate` from the repository root (or the repository's own
32+
2. Run `npx @scuffi/gardener@0.1.20 generate` from the repository root (or the repository's own
3333
`package.json` script, if it has one). Use this exact version: a different one produces files the
3434
pull request's **Check tasks** check rejects.
3535
3. Fix every error `generate` prints and read its warnings. Repeat until it succeeds.
@@ -67,8 +67,8 @@ limits:
6767
output-tokens: 16000
6868
---
6969
Read the issue and the code it mentions. If it is missing reproduction steps, expected behaviour or
70-
a version, propose one `issue.comment.create` asking for exactly what is missing. Otherwise
71-
propose nothing. Then finish.
70+
a version, comment once (`issue.comment.create`) asking for exactly what is missing. Otherwise
71+
change nothing. Then finish.
7272
```
7373

7474
## Frontmatter
@@ -204,7 +204,7 @@ maintainer comments "@handle fix the conflicts" on the pull request.
204204
- Declare the `repository.merge_base` tool, `repository.exec`, and `commit.merge_base` with the
205205
pull request branches it may push to (`branches:`, as above; never the default branch).
206206
- In the body: call `repository.merge_base`; edit only the conflicted files it lists to resolve
207-
them; run the repository's checks; then propose one `commit.merge_base` with the values the tool
207+
them; run the repository's checks; then merge with one `commit.merge_base` using the values the tool
208208
returned. Never run `git merge`, `rebase`, `commit` or `push`: a moved head or a changed index
209209
fails the run. If the conflicts can't be resolved, explain why in a comment instead.
210210
- `commit.merge_base` acts only on the pull request that triggered the run and never rewrites
@@ -239,7 +239,7 @@ network: # tasks with repository.exec
239239
| `max-tool-calls` | Tool calls (each file read, API call or command counts, plus the final `finish_task`, so the task's own work gets one fewer). | at least 3 |
240240
| `input-tokens` | Largest single model request. The whole conversation is resent each turn. | any positive |
241241
| `output-tokens` | Total generated across the run, including reasoning. | at least 16 × `max-turns` |
242-
| `max-effect-operations` | Optional cap on proposed changes per run. Needs at least one effect. | 1–1,000 |
242+
| `max-effect-operations` | Optional cap on the changes one run may make. Needs at least one effect. | 1–1,000 |
243243
| `max-effect-bytes` | Optional cap on the plan's size. | 1,024–50,000,000 |
244244
| `runs` | Optional cap on this task's runs across everyone, maintainers included, e.g. `50/day`. | `<count>/<minute\|hour\|day\|week\|month>` |
245245
| `runs-per-author` | Cap on runs started by each non-maintainer. Defaults to `3/day`; `unlimited` turns it off. | as `runs`, or `unlimited` |
@@ -273,13 +273,15 @@ budgets.
273273
The body is the model's prompt. It can't grant anything: tools, effects and network come only from
274274
the frontmatter.
275275

276-
- Say what to inspect, then which declared effect to propose and when. Name effect kinds exactly
277-
(`issue.comment.create`), and say when to propose nothing.
276+
- Say what to inspect, then what to do with which declared effect, and when. Name effect kinds
277+
exactly (`issue.comment.create`), and say when to change nothing. Write it as direct instructions
278+
("Comment with…", "Open a pull request…"): the model acts through those effects, and the text it
279+
writes is published as its reply.
278280
- Every action the body asks for must map to a declared effect, and every declared effect should be
279281
used by the body.
280282
- Bound the output: how many comments, how long, which labels are allowed.
281283
- Treat issue and comment text as untrusted input; the body must hold up against whatever it says.
282-
- End with "Then finish." so the model stops once it has proposed.
284+
- End with "Then finish." so the model stops once its steps are in place.
283285

284286
## Trying a task
285287

0 commit comments

Comments
 (0)