with one click
editor-harvest-plan
// Turn an editor-test-harvester report into one lane-specific execution plan, e.g. process every Slate v2 candidate from a harvest through slate-plan without executing implementation.
// Turn an editor-test-harvester report into one lane-specific execution plan, e.g. process every Slate v2 candidate from a harvest through slate-plan without executing implementation.
| description | Turn an editor-test-harvester report into one lane-specific execution plan, e.g. process every Slate v2 candidate from a harvest through slate-plan without executing implementation. |
| argument-hint | [<lane> <harvest-report-or-repo-key> | <harvest-report-or-repo-key> --lane <lane>] |
| disable-model-invocation | true |
| name | editor-harvest-plan |
| metadata | {"skiller":{"source":".agents/rules/editor-harvest-plan.mdc"}} |
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>`.
Create, verify, repair, and close Codex goals as durable, evidence-based objectives for long-running work; covers agent-native goal tool usage, measurable outcome gates, docs/plans goal plans, lifecycle handling, pass-gated lanes, blockers, budgets, completion audits, and template repair.
Work a task end-to-end with lean context gathering, implementation, and verification
Operate Clawpatch for semantic feature mapping, automated review, explicit finding fixes, revalidation, reports, and state recovery.
Triage and process the Slate v2 issue ledger with OpenClaw-style sweep discipline: archive-first discovery, duplicate proof, small-fix gates, exact claim rules, maintainer-safe issue output, and gitcrawl API refreshes.
Use after an execution slice to reassess whether the current tactic still serves the user's north star, then keep course, pivot, replan, or stop. Designed for long-running loops where the agent should keep moving unless a real blocker or completed lane exists.
Create or update Plate docs with conversational voice, lane-aware structure, explicit ownership, and code-backed accuracy. This is the source of truth for Plate docs style and workflow. Use for plugin pages, guides, install docs, serialization docs, API docs, and specs — anywhere both humans and agents need a clear, readable source of truth.