@open-tomato/rafa 0.19.0 → 0.20.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 CHANGED
@@ -174,8 +174,8 @@ the next one, so you rarely have to remember it.
174
174
  ### Which agents and skills are involved
175
175
 
176
176
  A task line may end with a declaration, for example
177
- `{agent=tdd-guide effort=medium}`. The planner writes it; you can change
178
- it.
177
+ `{agent=tdd-guide skills=dev-planner effort=medium}`. The planner
178
+ writes it; you can change it.
179
179
 
180
180
  - `agent=` routes the task to a Claude Code subagent. The planner picks
181
181
  by the task's SHAPE: implementation, tests, prose, a red build, a
@@ -196,8 +196,8 @@ it.
196
196
  while the project or a loaded user tier holds a different copy, and a
197
197
  `project` pin while a loaded user tier does; pin the tier the refusal
198
198
  names, or delete or rename the copy it names. `loop start` refuses a
199
- plan that names an agent it cannot resolve before any session is paid
200
- for.
199
+ plan that names an agent or a skill it cannot resolve before any
200
+ session is paid for.
201
201
  - User-tier items are invisible unless `loop.settingSources` includes
202
202
  `user`. `rafa agent list` shows what a run sees, `rafa agent vendor
203
203
  <name>` copies one in or updates it, and `rafa skill check .claude/skills
@@ -205,6 +205,25 @@ it.
205
205
  not resolve, a missing field) before it costs a task.
206
206
  - The plan format itself is a skill, `dev-planner`, shipped in the rafa
207
207
  tier and used when the project has none of its own.
208
+ - **Skills for this task.** A task may declare the skills it needs with
209
+ `skills=skill1,skill2` on its line. At dispatch, one of three resolvers
210
+ picks which skills to offer: `planner` uses the task's `skills=`
211
+ declaration exactly, in order; `tag` ignores `skills=` and ranks every
212
+ enabled skill against the task text to find the top 3 scoring above a
213
+ floor of zero; `none` offers no skills. The resolver is set by
214
+ `task.skills` in `.rafa/config.yaml` (defaulting to `planner`), and the
215
+ `--skills-resolver=` flag overrides it. A compact skill index is listed
216
+ in the planner's prompt so the planner sees what skills are available
217
+ before writing the task. When a task is dispatched, the prompt gains a
218
+ "Skills for this task" section with the skills the resolver picked, or
219
+ stays unchanged if none were picked. The dispatch record stores the
220
+ resolver name and which skills were offered.
221
+ - **Lessons from earlier tasks.** Up to 5 lessons from the learning store
222
+ are added to a task's prompt as a "Lessons from earlier tasks" section
223
+ when `task.lessons` is `on` (the default). The lessons are blessed
224
+ passages from earlier task findings that recurred or reached a
225
+ confidence floor. When neither skills nor lessons appear, the prompt
226
+ stays unchanged from before.
208
227
  - `model=`, `effort=`, `tools=` and `budget=` on a task line set the
209
228
  session's model, reasoning effort, tool list and spending cap when no
210
229
  agent decides them.
@@ -360,12 +360,19 @@ The recognised keys are the `DECLARATION_KEYS` of `src/utils/declaration.ts`, wh
360
360
 
361
361
  ### `skills=` declaration
362
362
 
363
+ When a task needs help from a skill, name those skills with `skills=`. Skill names must come from the skill index provided in this prompt; naming a skill no tier holds is recorded as an issue. Names are comma-separated with no spaces.
364
+
363
365
  `skills` is a recognised key that maps to no flag: there is no CLI flag for a skill, so the names are parsed, kept on the dispatch record and stripped from the task text with the rest of the block. It stands on its own — `{skills=bun-testing}` is a declaration with no other key beside it — and a value that is not a comma-separated list of skill names is recorded as an issue rather than passed on.
364
366
 
367
+ A task with no `skills=` declaration is valid — naming none is the answer when no skill guides the task.
368
+
365
369
  ```markdown
366
370
  - [ ] Port vitest tests to bun:test {agent=build-error-resolver skills=bun-testing,vitest-migration}
371
+ - [ ] Add the Zod schema for `CreateJobRequest` with its unit tests
367
372
  ```
368
373
 
374
+ The second example above has no `skills=` and is still a valid task declaration.
375
+
369
376
  ---
370
377
 
371
378
  ## Task sizing (session economics)