@farmslot/skills 0.4.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/CHANGELOG.md +10 -0
- package/README.md +29 -0
- package/package.json +2 -2
- package/scripts/worker-terminal-contract.cjs +2 -15
- package/skills/recipe-doctor/SKILL.md +1 -1
- package/skills/recipe-harness/SKILL.md +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -6,6 +6,16 @@ All notable changes to `@farmslot/skills` are tracked here.
|
|
|
6
6
|
|
|
7
7
|
- Active-development baseline; add user-facing changes here before release or package publication.
|
|
8
8
|
|
|
9
|
+
## 0.6.0 - 2026-10-04
|
|
10
|
+
|
|
11
|
+
- `import` of `@farmslot/skills/scripts/worker-terminal-contract.cjs` exposes its names: it re-exports `@farmslot/agent-runtime/scripts/worker-terminal-contract.cjs` with a literal `require`, which ESM can follow, instead of a computed path with a repo-relative fallback.
|
|
12
|
+
- Skills refer to the recipe runner package as `@farmslot/recipe-runner` (renamed from `@farmslot/recipe-harness`).
|
|
13
|
+
- Publish with agent-runtime 0.17.0.
|
|
14
|
+
|
|
15
|
+
## 0.5.0 - 2026-09-20
|
|
16
|
+
|
|
17
|
+
- README documents the checklist-shaped skill rule: a skill invoked as a child checklist unit (ADR-060) needs `##` sections and `- [ ]` rows the shared parser can enumerate, informational sections named so the skip list drops them, and numbered labels matching their positions. A prose-only skill cannot be a child unit.
|
|
18
|
+
|
|
9
19
|
## 0.4.0 - 2026-09-17
|
|
10
20
|
|
|
11
21
|
- Recipe Cook lane: the runner envelope reports `terminal_status` (`done|blocked|failed`) and `terminal_reason`; the lane no longer reads or rewrites a `STATUS:` line in the run-local TASK.md, and `meta.json` records `terminal_reason`. Templates and skill text drop the field. An envelope without a valid `terminal_status`, or a blocked/failed one without `terminal_reason`, fails the run; the model output stays in `runner-output.txt`. The `tmux-model-driver` launcher and watcher stop mentioning or parsing the field.
|
package/README.md
CHANGED
|
@@ -44,6 +44,35 @@ Supported layouts:
|
|
|
44
44
|
| `project-adopt` | Recommend the smallest useful Farmslot integration level for the project. |
|
|
45
45
|
| `packet` | Communicate plans, blockers, decisions, and evidence reviews as compact operator packets. |
|
|
46
46
|
|
|
47
|
+
## Checklist-shaped skills
|
|
48
|
+
|
|
49
|
+
A checklist step can hand its work to a skill as a **child unit**: the step registers the
|
|
50
|
+
skill, `mark` materializes its body as `subtasks/<id>.md` beside the task checklist, and the
|
|
51
|
+
worker marks the skill's own rows so progress is visible per row instead of one box open for
|
|
52
|
+
the whole review. Farmslot only materializes and observes files; nothing is spawned.
|
|
53
|
+
|
|
54
|
+
A skill can be a child unit when its body is enumerable by the same parser the task checklist
|
|
55
|
+
uses:
|
|
56
|
+
|
|
57
|
+
- `##` (or deeper) headings and `- [ ]` rows, with at least one row. A prose-only skill cannot be
|
|
58
|
+
a child unit.
|
|
59
|
+
- Name informational sections so the shared skip list drops them: `Rules`, `Description`,
|
|
60
|
+
`Task`, `Acceptance Criteria`, `Affected Area`, `Screenshots`, `Comments`, `Root Cause`,
|
|
61
|
+
`Recipe ACs`, `Pre-merge`. Boxes there are never steps.
|
|
62
|
+
- If a row label carries its own number (`**3. …**`), it must match the row's position. The
|
|
63
|
+
numbering guard refuses a body where they diverge, because `mark` targets positions.
|
|
64
|
+
|
|
65
|
+
A template step registers the installed skill and finishes it:
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
{{TASK_DIR}}/mark sub start perps-review --step 21 --from .agents/skills/mms-perps-review-pr/skill.md
|
|
69
|
+
{{TASK_DIR}}/mark sub perps-review 1 # …one per row
|
|
70
|
+
{{TASK_DIR}}/mark sub perps-review complete --report artifacts/review.md
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
The step's own box is ticked by that `complete`, so the template says what to register, and the
|
|
74
|
+
skill owns what to check.
|
|
75
|
+
|
|
47
76
|
## Adoption Ladder
|
|
48
77
|
|
|
49
78
|
1. Skills only: author and review recipes without a runner.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@farmslot/skills",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.6.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
"prepublishOnly": "node ../../scripts/quality/check-farmslot-package-readiness.mjs --publish --packages @farmslot/skills"
|
|
34
34
|
},
|
|
35
35
|
"dependencies": {
|
|
36
|
-
"@farmslot/agent-runtime": "0.
|
|
36
|
+
"@farmslot/agent-runtime": "0.17.0"
|
|
37
37
|
},
|
|
38
38
|
"devDependencies": {
|
|
39
39
|
"@types/node": "^22.0.0",
|
|
@@ -1,17 +1,4 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
const requireFromHere = createRequire(__filename);
|
|
7
|
-
|
|
8
|
-
function resolveRuntimeScript() {
|
|
9
|
-
try {
|
|
10
|
-
return requireFromHere.resolve('@farmslot/agent-runtime/scripts/worker-terminal-contract.cjs');
|
|
11
|
-
} catch (error) {
|
|
12
|
-
if (error.code !== 'MODULE_NOT_FOUND') throw error;
|
|
13
|
-
return path.resolve(__dirname, '../../agent-runtime/scripts/worker-terminal-contract.cjs');
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
module.exports = require(resolveRuntimeScript());
|
|
3
|
+
// A literal require: Node can then see this re-export's names when an ESM consumer imports it.
|
|
4
|
+
module.exports = require('@farmslot/agent-runtime/scripts/worker-terminal-contract.cjs');
|
|
@@ -22,7 +22,7 @@ Check how far a project can go with recipes today.
|
|
|
22
22
|
|
|
23
23
|
1. Inspect package scripts and repo docs for recipe commands.
|
|
24
24
|
2. Look for recipe files, runner manifests, action manifests, schemas, or artifact conventions.
|
|
25
|
-
3. Check whether `@farmslot/recipe-
|
|
25
|
+
3. Check whether `@farmslot/recipe-runner`, an app-specific runner, or a custom script is installed.
|
|
26
26
|
4. Identify proof surfaces: state/log artifacts, screenshots, traces, browser control, mobile bridge, or command output.
|
|
27
27
|
5. Report the smallest useful next step.
|
|
28
28
|
|
|
@@ -4,7 +4,7 @@ description: Help run or install a local recipe runtime without assuming the ful
|
|
|
4
4
|
compatibility: Claude, Codex, Cursor, and Markdown skill runners with shell access
|
|
5
5
|
metadata:
|
|
6
6
|
package: '@farmslot/skills'
|
|
7
|
-
related_package: '@farmslot/recipe-
|
|
7
|
+
related_package: '@farmslot/recipe-runner'
|
|
8
8
|
allowed-tools: Read Bash(rg:*) Bash(node:*) Bash(npm:*) Bash(yarn:*) Bash(pnpm:*) Bash(farmslot-recipe:*)
|
|
9
9
|
---
|
|
10
10
|
|
|
@@ -15,7 +15,7 @@ Use the local recipe runtime when one exists, or recommend the smallest install
|
|
|
15
15
|
## Workflow
|
|
16
16
|
|
|
17
17
|
1. Find the project-owned recipe command first.
|
|
18
|
-
2. If no command exists, check for `@farmslot/recipe-
|
|
18
|
+
2. If no command exists, check for `@farmslot/recipe-runner` or an app-specific harness package.
|
|
19
19
|
3. Before authoring, inspect the closest recipes with `farmslot-recipe run --list` and `farmslot-recipe run <id> --describe`, then inspect declared actions only if no recipe fits. Prefer project discovery commands; otherwise read only the relevant manifest entries and examples.
|
|
20
20
|
4. Run dry-run or schema validation before live execution when available.
|
|
21
21
|
5. Record artifact paths and validation output.
|