Summary
The public Harvest skill has a mandatory final step (Step 7) that invokes a skill which is not part of the public release. Any user who runs Harvest on a clean LifeOS install hits an unsatisfiable step, and — by the skill's own rules — the harvest can never report completion.
Where it breaks
Harvest/Workflows/Harvest.md, Step 7 — Ingest into the Knowledge Archive (ALWAYS the final step):
bun ~/.claude/skills/_HARVEST/Tools/harvest.ts "<original input>"
LifeOS/install/skills/Harvest/Workflows/Harvest.md L84 — the invocation
- L87 — "Runs the canonical Arbol pipeline (
_F_HARVEST classify → HarvestExecutor.ts write). Never write to MEMORY/KNOWLEDGE/ by hand."
- L89 — "A harvest is not complete until the note is written or the failure is surfaced."
And it is reinforced as non-optional in Harvest/SKILL.md:
- L10 — "always as the final step, ingest … via the
_HARVEST pipeline"
- L28 — "Harvest calls it as its mandatory final step"
- L39 — "KB ingestion is not optional and not skippable on a thin harvest."
- L46 — the Examples block repeats the
_HARVEST/Tools/harvest.ts call.
Why it can't run on a public install
-
skills/_HARVEST/ is not published. It is a private, underscore-prefixed skill, and the release tooling excludes every _-prefixed skill by design. Confirmed: skills/_HARVEST/Tools/harvest.ts returns 404 on main, and there are zero _-prefixed skills anywhere under LifeOS/install/skills/. So the Step 7 path does not exist for any public user.
-
The shipped fallback isn't a drop-in either. LIFEOS/TOOLS/HarvestExecutor.ts does ship, but it is only the downstream write half of the pipeline. It fetches already-classified items from a private Arbol endpoint and throws immediately without it:
const HARVEST_API_BASE = process.env.ARBOL_HARVEST_API_BASE ?? "";
// ...
if (!HARVEST_API_BASE) { throw new Error(...) }
LifeOS/install/LIFEOS/TOOLS/HarvestExecutor.ts L29, L153. The _HARVEST wrapper is what owns and threads that URL; without the wrapper and a running Arbol harvest service, there is no ingestion path.
Net effect: the public Harvest skill depends on two unpublished pieces — the _HARVEST skill and a private Arbol backend — for a step it declares mandatory.
Reproduction
On a public install, run Harvest on any source. Mining Steps 1–6 complete normally; Step 7 fails because ~/.claude/skills/_HARVEST/Tools/harvest.ts does not exist. Per L89 ("a harvest is not complete until the note is written or the failure is surfaced"), the run can only ever end in a surfaced failure, never a success. Observed first-hand twice while running the skill.
Suggested fixes (any one resolves it)
- Ship a public ingestion path. Provide a self-contained
Harvest ingestion tool that writes a KNOWLEDGE note directly to MEMORY/KNOWLEDGE/ with the documented typed-related: schema — no Arbol, no _HARVEST. This is the highest-value fix; it makes the skill actually usable end to end.
- Make Step 7 gracefully degrade. Keep the Arbol path when
ARBOL_HARVEST_API_BASE and _HARVEST are present, but fall back to a local note-writer (or a clearly-labelled "ingestion skipped — no public backend configured") otherwise, instead of mandating a private skill.
- At minimum, document the dependency. State in
Harvest/SKILL.md that Step 7 requires private infrastructure (_HARVEST + an Arbol harvest endpoint) and is a no-op on public installs, so users aren't left with a skill that can't complete.
Affected files
LifeOS/install/skills/Harvest/Workflows/Harvest.md (Step 7, L84–L91)
LifeOS/install/skills/Harvest/SKILL.md (L10, L28, L39, L46)
LifeOS/install/LIFEOS/TOOLS/HarvestExecutor.ts (Arbol dependency, L29 / L153)
Summary
The public
Harvestskill has a mandatory final step (Step 7) that invokes a skill which is not part of the public release. Any user who runsHarveston a clean LifeOS install hits an unsatisfiable step, and — by the skill's own rules — the harvest can never report completion.Where it breaks
Harvest/Workflows/Harvest.md, Step 7 — Ingest into the Knowledge Archive (ALWAYS the final step):LifeOS/install/skills/Harvest/Workflows/Harvest.mdL84 — the invocation_F_HARVESTclassify →HarvestExecutor.tswrite). Never write toMEMORY/KNOWLEDGE/by hand."And it is reinforced as non-optional in
Harvest/SKILL.md:_HARVESTpipeline"_HARVEST/Tools/harvest.tscall.Why it can't run on a public install
skills/_HARVEST/is not published. It is a private, underscore-prefixed skill, and the release tooling excludes every_-prefixed skill by design. Confirmed:skills/_HARVEST/Tools/harvest.tsreturns 404 onmain, and there are zero_-prefixed skills anywhere underLifeOS/install/skills/. So the Step 7 path does not exist for any public user.The shipped fallback isn't a drop-in either.
LIFEOS/TOOLS/HarvestExecutor.tsdoes ship, but it is only the downstream write half of the pipeline. It fetches already-classified items from a private Arbol endpoint and throws immediately without it:LifeOS/install/LIFEOS/TOOLS/HarvestExecutor.tsL29, L153. The_HARVESTwrapper is what owns and threads that URL; without the wrapper and a running Arbol harvest service, there is no ingestion path.Net effect: the public
Harvestskill depends on two unpublished pieces — the_HARVESTskill and a private Arbol backend — for a step it declares mandatory.Reproduction
On a public install, run
Harveston any source. Mining Steps 1–6 complete normally; Step 7 fails because~/.claude/skills/_HARVEST/Tools/harvest.tsdoes not exist. Per L89 ("a harvest is not complete until the note is written or the failure is surfaced"), the run can only ever end in a surfaced failure, never a success. Observed first-hand twice while running the skill.Suggested fixes (any one resolves it)
Harvestingestion tool that writes a KNOWLEDGE note directly toMEMORY/KNOWLEDGE/with the documented typed-related:schema — no Arbol, no_HARVEST. This is the highest-value fix; it makes the skill actually usable end to end.ARBOL_HARVEST_API_BASEand_HARVESTare present, but fall back to a local note-writer (or a clearly-labelled "ingestion skipped — no public backend configured") otherwise, instead of mandating a private skill.Harvest/SKILL.mdthat Step 7 requires private infrastructure (_HARVEST+ an Arbol harvest endpoint) and is a no-op on public installs, so users aren't left with a skill that can't complete.Affected files
LifeOS/install/skills/Harvest/Workflows/Harvest.md(Step 7, L84–L91)LifeOS/install/skills/Harvest/SKILL.md(L10, L28, L39, L46)LifeOS/install/LIFEOS/TOOLS/HarvestExecutor.ts(Arbol dependency, L29 / L153)