Harvest — Cross-Rig Knowledge Consolidation Nightly usage (2026-04-09): now runs harvest as part of its bounded compounding loop. Use for manual sweeps, CI runs, or when Dream is disabled. Dream holds while running — manual will refuse until the lock releases. Sweep all directories across the workspace, extract learnings, patterns, and research, deduplicate cross-rig, and promote high-value items to the global knowledge hub ( ). Naming gotcha. promotes into , not . Users often say "harvest all to " and mean the promotion hub. If you really want every raw artifact (not just the promotion set)…

\"\ncheck \"SKILL.md has name: harvest\" \"grep -q '^name: harvest' '$SKILL_DIR/SKILL.md'\"\ncheck \"SKILL.md mentions cross-rig consolidation\" \"grep -qiE 'cross-rig|federation|consolidat' '$SKILL_DIR/SKILL.md'\"\ncheck \"SKILL.md mentions dedupe or promotion\" \"grep -qiE 'deduplicat|promot' '$SKILL_DIR/SKILL.md'\"\n\necho \"\"; echo \"Results: $PASS passed, $FAIL failed\"\n[ $FAIL -eq 0 ] && exit 0 || exit 1\n","content_type":"application/x-sh; charset=utf-8","language":"bash","size":752,"content_sha256":"cfdffd934cb4246838c24d39bd97cdc0ab0bd4c3e47fc6dbf8332b8cd7e333de"}],"content_json":{"type":"doc","content":[{"type":"heading","attrs":{"level":1},"content":[{"text":"Harvest — Cross-Rig Knowledge Consolidation","type":"text"}]},{"type":"blockquote","content":[{"type":"paragraph","content":[{"text":"Nightly usage (2026-04-09):","type":"text","marks":[{"type":"strong"}]},{"text":" ","type":"text"},{"text":"/dream start","type":"text","marks":[{"type":"code_inline"}]},{"text":" now runs harvest as part of its bounded compounding loop. Use ","type":"text"},{"text":"/harvest","type":"text","marks":[{"type":"code_inline"}]},{"text":" for manual sweeps, CI runs, or when Dream is disabled. Dream holds ","type":"text"},{"text":".agents/overnight/run.lock","type":"text","marks":[{"type":"code_inline"}]},{"text":" while running — manual ","type":"text"},{"text":"ao harvest","type":"text","marks":[{"type":"code_inline"}]},{"text":" will refuse until the lock releases.","type":"text"}]}]},{"type":"paragraph","content":[{"text":"Sweep all ","type":"text"},{"text":".agents/","type":"text","marks":[{"type":"code_inline"}]},{"text":" directories across the workspace, extract learnings, patterns, and research, deduplicate cross-rig, and promote high-value items to the global knowledge hub (","type":"text"},{"text":"~/.agents/learnings/","type":"text","marks":[{"type":"code_inline"}]},{"text":").","type":"text"}]},{"type":"blockquote","content":[{"type":"paragraph","content":[{"text":"Naming gotcha.","type":"text","marks":[{"type":"strong"}]},{"text":" ","type":"text"},{"text":"$harvest","type":"text","marks":[{"type":"code_inline"}]},{"text":" promotes into ","type":"text"},{"text":"~/.agents/learnings/","type":"text","marks":[{"type":"code_inline"}]},{"text":", not ","type":"text"},{"text":"~/.agents/","type":"text","marks":[{"type":"code_inline"}]},{"text":". Users often say \"harvest all to ","type":"text"},{"text":"~/.agents","type":"text","marks":[{"type":"code_inline"}]},{"text":"\" and mean the promotion hub. If you really want every raw artifact (not just the promotion set) mirrored verbatim, you want ","type":"text"},{"text":"rsync","type":"text","marks":[{"type":"code_inline"}]},{"text":", not ","type":"text"},{"text":"$harvest","type":"text","marks":[{"type":"code_inline"}]},{"text":".","type":"text"}]}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"Which skill do I need?","type":"text"}]},{"type":"paragraph","content":[{"text":"See ","type":"text"},{"text":"docs/skills-decision-tree.md","type":"text","marks":[{"type":"link","attrs":{"href":"../../docs/skills-decision-tree.md","title":null}}]},{"text":" for the full \"which skill next?\" decision table covering harvest, compile, dream, knowledge-activation, and quickstart.","type":"text"}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"What This Skill Does","type":"text"}]},{"type":"paragraph","content":[{"text":"The knowledge flywheel captures learnings per-rig, but they stay siloed. Harvest closes the loop by walking all rigs, extracting artifacts, deduplicating by content hash, and promoting high-confidence items to the global hub where every rig can access them via ","type":"text"},{"text":"ao inject","type":"text","marks":[{"type":"code_inline"}]},{"text":".","type":"text"}]},{"type":"paragraph","content":[{"text":"When to use:","type":"text","marks":[{"type":"strong"}]},{"text":" Before an evolve cycle, after a burst of development across multiple rigs, or weekly as part of knowledge governance.","type":"text"}]},{"type":"paragraph","content":[{"text":"Output:","type":"text","marks":[{"type":"strong"}]},{"text":" ","type":"text"},{"text":".agents/harvest/latest.json","type":"text","marks":[{"type":"code_inline"}]},{"text":" (catalog) + promoted files in ","type":"text"},{"text":"~/.agents/learnings/","type":"text","marks":[{"type":"code_inline"}]}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"Execution Steps","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"Step 1: Preview Scope (Dry Run)","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"ao harvest --dry-run --quiet","type":"text"}]},{"type":"paragraph","content":[{"text":"Read ","type":"text"},{"text":".agents/harvest/latest.json","type":"text","marks":[{"type":"code_inline"}]},{"text":" and report:","type":"text"}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Rigs discovered","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Total artifacts extracted","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Unique vs duplicate count","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Promotion candidates (artifacts >= min confidence)","type":"text"}]}]}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"Step 2: Confirm Execution","type":"text"}]},{"type":"paragraph","content":[{"text":"Skip if ","type":"text","marks":[{"type":"strong"}]},{"text":"--auto","type":"text","marks":[{"type":"code_inline"},{"type":"strong"}]},{"text":" is set.","type":"text","marks":[{"type":"strong"}]},{"text":" Otherwise, show the dry-run summary and ask:","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":""},"content":[{"text":"Harvest will promote N artifacts from M rigs to ~/.agents/learnings/.\nProceed? [Approve / Adjust threshold / Abort]","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"Step 3: Execute Harvest","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"ao harvest --roots ~/gt/ --promote-to ~/.agents/learnings --min-confidence 0.5","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"Step 4: Post-Harvest Cleanup","type":"text"}]},{"type":"paragraph","content":[{"text":"Run dedup on the promotion target to clean up any remaining duplicates:","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"ao dedup --merge ~/.agents/learnings/ 2>/dev/null || true","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"Step 5: Report Results","type":"text"}]},{"type":"paragraph","content":[{"text":"Report to user:","type":"text"}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Rigs scanned","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Artifacts extracted and unique count","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Duplicates found (with top duplicate groups)","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Artifacts promoted (with provenance)","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Top discoveries (highest-confidence cross-rig patterns)","type":"text"}]}]}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"Flags","type":"text"}]},{"type":"table","attrs":{"layout":null},"content":[{"type":"tr","content":[{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Flag","type":"text"}]}]},{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Default","type":"text"}]}]},{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Description","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"--auto","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"off","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Skip confirmation gate","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"--roots","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"~/gt/","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Override root directories to scan","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"--min-confidence","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"0.5","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Minimum confidence for promotion","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"--include","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"learnings,patterns,research","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Artifact types to extract","type":"text"}]}]}]}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"Quick Start","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"/harvest # Full sweep with confirmation\n/harvest --auto # Hands-free sweep\n/harvest --min-confidence 0.7 # Only promote high-confidence items\n/harvest --roots ~/gt/,~/projects/ # Scan additional directories","type":"text"}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"Governance","type":"text"}]},{"type":"paragraph","content":[{"text":"See ","type":"text"},{"text":"references/governance.md","type":"text","marks":[{"type":"link","attrs":{"href":"references/governance.md","title":null}}]},{"text":" for ongoing governance model: size budgets, sweep frequency, staleness thresholds, and cross-rig synthesis triggers.","type":"text"}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"See Also","type":"text"}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"skills/compile/SKILL.md","type":"text","marks":[{"type":"link","attrs":{"href":"../compile/SKILL.md","title":null}}]},{"text":" — Single-rig Mine/Grow/Defrag","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"skills/flywheel/SKILL.md","type":"text","marks":[{"type":"link","attrs":{"href":"../flywheel/SKILL.md","title":null}}]},{"text":" — Flywheel health monitoring","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"skills/inject/SKILL.md","type":"text","marks":[{"type":"link","attrs":{"href":"../inject/SKILL.md","title":null}}]},{"text":" — Knowledge injection into sessions","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"skills/forge/SKILL.md","type":"text","marks":[{"type":"link","attrs":{"href":"../forge/SKILL.md","title":null}}]},{"text":" — Transcript knowledge extraction","type":"text"}]}]}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"Reference Documents","type":"text"}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"references/governance.md","type":"text","marks":[{"type":"link","attrs":{"href":"references/governance.md","title":null}}]},{"text":" — Governance model for ongoing knowledge consolidation","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"references/harvest.feature","type":"text","marks":[{"type":"link","attrs":{"href":"references/harvest.feature","title":null}}]},{"text":" — Executable spec: sweep .agents surfaces, consolidate + de-duplicate, write learnings, manual or via the dream loop (soc-qk4b)","type":"text"}]}]}]},{"type":"hr","attrs":{"markup":"---"}}]},"metadata":{"date":"2026-06-05","name":"harvest","author":"@skillopedia","source":{"stars":375,"repo_name":"agentops","origin_url":"https://github.com/boshu2/agentops/blob/HEAD/skills/harvest/SKILL.md","repo_owner":"boshu2","body_sha256":"890f8e10e43dc90df10689f72d9650a0721e06c919099d475baa488736e6f4bb","cluster_key":"1823f1d510c016b86c75cd7880351d2489427d445ae4dfa7dde9f106804a3ff3","clean_bundle":{"format":"clean-skill-bundle-v1","source":"boshu2/agentops/skills/harvest/SKILL.md","attachments":[{"id":"690e4367-7bc9-5773-97f7-6e87648e1e9e","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/690e4367-7bc9-5773-97f7-6e87648e1e9e/attachment.md","path":"references/governance.md","size":1894,"sha256":"15b1e418a94a451c07a1e6bd1c03ab047198278b6704bbfcc9f5025524cd38a0","contentType":"text/markdown; charset=utf-8"},{"id":"06194bdb-542c-54e3-8cbf-3d6f493bd11b","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/06194bdb-542c-54e3-8cbf-3d6f493bd11b/attachment.feature","path":"references/harvest.feature","size":1408,"sha256":"9728ee54cccadb1ebd359a6fcfc3fc24097db5e84df647ccfaf7843c906f88b9","contentType":"text/plain; charset=utf-8"},{"id":"cb7c5ac0-4134-5dfc-802e-6e373897257f","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/cb7c5ac0-4134-5dfc-802e-6e373897257f/attachment.sh","path":"scripts/validate.sh","size":752,"sha256":"cfdffd934cb4246838c24d39bd97cdc0ab0bd4c3e47fc6dbf8332b8cd7e333de","contentType":"application/x-sh; charset=utf-8"}],"bundle_sha256":"12bcaadc1fa6f397affad7f975e252265bd06a0053b177ae1aa0f1fbdc718ea8","attachment_count":3,"text_attachments":2,"attachment_storage":"skillopedia-attachments-v1","binary_attachments":1,"excluded_attachments":[]},"cluster_size":2,"skill_md_path":"skills/harvest/SKILL.md","import_metadata":{"date":"2026-06-05","author":"@skillopedia","version":"v1","category":"general","category_label":"General"},"exact_dupes_collapsed_into_this":1},"context":{"intent":{"mode":"task"},"window":"fork"},"version":"v1","category":"general","consumes":[],"metadata":{"tier":"knowledge","dependencies":[]},"produces":[".agents/research/*.md"],"practices":["wiki-knowledge-surface","lean-startup"],"import_tag":"clean-skills-v1","context_rel":[],"description":"Promote .agents knowledge.","hexagonal_role":"supporting","user-invocable":true,"output_contract":".agents/learnings/*.md (consolidated)","skill_api_version":1}},"renderedAt":1782981708366}

Harvest — Cross-Rig Knowledge Consolidation Nightly usage (2026-04-09): now runs harvest as part of its bounded compounding loop. Use for manual sweeps, CI runs, or when Dream is disabled. Dream holds while running — manual will refuse until the lock releases. Sweep all directories across the workspace, extract learnings, patterns, and research, deduplicate cross-rig, and promote high-value items to the global knowledge hub ( ). Naming gotcha. promotes into , not . Users often say "harvest all to " and mean the promotion hub. If you really want every raw artifact (not just the promotion set)…