.agents/skills/editor-harvest-plan/SKILL.md
Handle $ARGUMENTS.
Use this after editor-test-harvester has produced a report and the user wants
one owner lane processed into an execution-grade plan.
Examples:
editor-harvest-plan slate-v2 tinymce
editor-harvest-plan slate-v2 .tmp/editor-test-harvester/tinymce/report.md
editor-harvest-plan docs/editor-test-harvester/tiptap/report.md --lane slate-v2
For slate-v2, this means: read the harvest, find every raw Slate candidate,
apply slate-plan, and produce a plan that accounts for all Slate-specific
tests. It does not mean blindly port every upstream test.
editor-test-harvester report exists.slate-v2 or plate.docs/plans/*-harvest-plan.md execution plan with an
accepted-plan handoff for the downstream lane skill.behavior-only, so versioned output must stay
fresh-invariant-only.editor-test-harvester.editor-test-harvester first.| Lane | Aliases | Downstream skill | Owner | Output |
|---|---|---|---|---|
slate-v2 | slate, raw-slate | .agents/skills/slate-plan/SKILL.md | Raw Slate v2 substrate in .tmp/slate-v2 | docs/plans/YYYY-MM-DD-slate-v2-<repo>-harvest-plan.md |
plate | platejs, plate-owned | .agents/skills/plate-plan/SKILL.md | Plate packages, kits, docs, examples, and product behavior in this repo | docs/plans/YYYY-MM-DD-plate-<repo>-harvest-plan.md |
If the lane is unknown, infer only when the harvest row owner labels make the mapping obvious. Otherwise ask for the lane. Do not invent a new owner lane and pretend it is covered.
slate-v2, do not edit .tmp/slate-v2 from this skill.plate, do not edit packages, apps, docs, examples, or behavior from this
skill except the plan.pending with the missing harvester pass named.behavior-only sources, any
versioned plan row must use fresh local invariant wording and source path
provenance only.covered, refactor-existing, create-new, fresh-invariant, copy-now
for permissive sources, defer, and unresolved lane candidates. It is not
limited to create-new.docs/plans goal plan, if present.docs/editor-test-harvester/<repo>/report.md, or.tmp/editor-test-harvester/<repo>/report.md.<report_dir>/inventory.md<report_dir>/test-index.md.agents/skills/editor-test-harvester/SKILL.md.slate-v2: .agents/skills/slate-plan/SKILL.mdplate: .agents/skills/plate-plan/SKILL.mddocs/solutions/ entries about editor harvest routing, browser proof, IME,
selection, placeholders, and Skiller/sync failures.slate-v2: .tmp/slate-v2 tests, examples, package scripts, and relevant
ledgers.plate: current Plate packages, kits, docs, examples, and behavior-law
docs.For slate-v2, the live .tmp/slate-v2 checkout wins over stale plans. Search
current tests and source before saying a row is covered or missing.
This skill uses agent-native goals for durable state. Always call get_goal
first. Call create_goal only when no active matching goal exists. There can be
only one active goal per thread.
Create the lane plan from the project template:
node .agents/rules/autogoal/scripts/create-goal-scratchpad.mjs \
--template editor-harvest-plan \
--title "<Lane> <Repo> Harvest Plan"
The generated docs/plans file is the durable evidence and pass-state ledger.
Do not create hook state.
Complete the goal only when the plan records:
node .agents/rules/autogoal/scripts/check-complete.mjs <plan> passing.Keep pending while any lane row can still be mapped, deduped, split, or routed.
Use blocked only when the harvest artifact, target checkout, browser/device
proof, or user lane decision is missing and no useful autonomous pass remains.
Score from 0.00 to 1.00.
| Dimension | Weight |
|---|---|
| Harvest source readiness | 0.15 |
| Lane-filter completeness | 0.25 |
| Current owner coverage mapping | 0.25 |
| Actionability of execution queue | 0.20 |
| License/provenance discipline | 0.15 |
Score caps:
0.80 if the harvest report is missing.0.86 if inventory or test-index status is unknown.0.80 unless every harvest matrix row
is counted as in-lane or out-of-lane/split/duplicate/skip.0.85 unless current owner tests/source were
searched in the target workspace.0.85 unless every non-covered in-lane row names
target file, proof kind, and focused verification command or defer reason.0.80 for behavior-only sources unless
the plan states the fresh-invariant-only rule and avoids copied source
wording.Completion threshold:
>= 0.92;0.85;create-new, refactor-existing, copy-now, fresh-invariant, or
defer row lacks owner and verification/defer evidence;--lane <lane>.docs/editor-test-harvester/<repo>/report.md;.tmp/editor-test-harvester/<repo>/report.md;editor-test-harvester first.--template editor-harvest-plan.in-lane: belongs to the requested owner lane;out-of-lane: belongs to another owner;split: contains both lane-owned substrate and product/plugin behavior;duplicate: already represented by another row;skip: no portable behavior;unresolved: needs more reading or user decision.slate-v2, include every row whose tag, owner coverage, action, target,
or behavior invariant points to raw Slate substrate:
slate-v2, exclude or split:
slate-v2, search .tmp/slate-v2 by behavior words and adjacent
concepts, not upstream API names;plate, search packages, kits, docs, examples, and behavior-law docs.slate-v2, load and apply slate-plan gates to the lane plan;plate, load and apply plate-plan gates to the lane plan.docs/plans/.pending and name the next pass.done, run check-complete.mjs, and
produce the user-review handoff. Do not execute implementation.coveredrefactor-existingcreate-newcopy-now for permissive sources onlyfresh-invariant for behavior-only sourcesdefersplitskipFor behavior-only sources, never use copy-now in versioned output. Use
fresh-invariant.
Default to no issue claim.
For slate-v2, apply slate-plan issue rules:
If no claim changes, write:
Fixed issues: none from this plan.
Improved issues: none from this plan.
Related issues: unchanged; this plan routes harvested test pressure only.
PR reference: unchanged; no claim or proof status changed.
When the lane plan is ready, write a handoff that the downstream lane skill can execute after user acceptance:
Do not start execution from this skill. The user reviews the finished plan first, then invokes the downstream lane skill again with the accepted plan path.
Planning-only verification in plate-2:
rg -n "Harvest grounding|Lane contract|Full harvest row accounting|In-lane candidate matrix|Execution queue|Downstream lane application|Accepted-plan execution handoff" docs/plans/<plan>.md
node .agents/rules/autogoal/scripts/check-complete.mjs docs/plans/<plan>.md
Source sync verification after editing this skill:
pnpm install
test -f .agents/skills/editor-harvest-plan/SKILL.md
rg -n "editor-test-harvester|slate-plan|Lane Registry|Full harvest row accounting" .agents/skills/editor-harvest-plan/SKILL.md
pnpm lint:fix
Slate v2 behavior verification belongs only to accepted-plan execution from
.tmp/slate-v2.
If pending:
Editor Harvest Plan is pending: [docs/plans/...](docs/plans/...)
Score: 0.xx
Next owner: ...
If done:
Editor Harvest Plan is ready: [docs/plans/...](docs/plans/...)
Lane processed:
- `<lane>`: N in-lane rows, N covered, N refactor, N create/fresh-invariant,
N defer, N excluded/out-of-lane.
- Downstream skill: `<skill>`.
- Execution next: `<first execution queue id or none>`.