diff --git a/plugins/knowledge/.claude-plugin/plugin.json b/plugins/knowledge/.claude-plugin/plugin.json index 6d5ecd76e..37262cbd0 100644 --- a/plugins/knowledge/.claude-plugin/plugin.json +++ b/plugins/knowledge/.claude-plugin/plugin.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/claude-code-plugin-manifest.json", "name": "knowledge", - "version": "0.9.2", + "version": "0.9.3", "description": "Ingest external knowledge into durable, synthesized artifacts. Ships a book-distillation pipeline (PDF/EPUB into concept-organized, author-attributed skill reference files), a YouTube pipeline (watch, transcript, link harvest, and repo-applicability synthesis), and a course-digest pipeline (extract and synthesize online video courses — Dometrain, Teachable — into repo-applicable recommendations), plus a re-runnable setup action; a configurable library directory governs where synthesized artifacts land in the consuming repo.", "author": { "name": "Melodic Software", diff --git a/plugins/knowledge/CHANGELOG.md b/plugins/knowledge/CHANGELOG.md index e8136fcf9..b75b6deac 100644 --- a/plugins/knowledge/CHANGELOG.md +++ b/plugins/knowledge/CHANGELOG.md @@ -4,6 +4,23 @@ All notable changes to the `knowledge` plugin are recorded here. The `version` i `.claude-plugin/plugin.json` is the delivery vehicle — a consumer receives a change only after that version increases. +## [0.9.3] + +### Fixed + +- **youtube-digest: contact-sheet retention wording + `--target` resolution gap** + (#1015): the intro paragraph called the `key-frames/contact-sheets/` snapshot + "temp-only handling," contradicting the Output contract's "local DR snapshot, + gitignored" characterization of the same directory; reworded to "never-committed + handling" so the snapshot reads as a durable-on-disk-but-gitignored instance, not + temp state. `--target ` resolution now requires a **local working tree on + disk** (not just a name) because `templates/synthesis-item.md`'s grep-backed + **Target touchpoints** need a tree to grep; an explicit `--target` with no local + checkout now halts and asks for its path instead of falling through to + `CLAUDE_PROJECT_DIR`/CWD or inventing paths, and both the target name and its + resolved local tree path are recorded in `README.md`'s `**Target:**` line so + `resume` re-greps the same tree. + ## [0.9.2] ### Fixed diff --git a/plugins/knowledge/skills/youtube-digest/SKILL.md b/plugins/knowledge/skills/youtube-digest/SKILL.md index b5719c222..eccec2a04 100644 --- a/plugins/knowledge/skills/youtube-digest/SKILL.md +++ b/plugins/knowledge/skills/youtube-digest/SKILL.md @@ -16,7 +16,7 @@ ImageMagick: !`magick -version 2>/dev/null | head -1 || echo "MISSING — instal # YouTube -Absorb a single public YouTube video (transcript + visual frames), harvest reference links, fact-check claims through deeper external research, and produce a prioritized repo-applicability menu. Video download, bulk frames, working contact sheets, and shallow git clones use the OS temp directory — durable artifacts live under `.work///` per the video-digest slice convention. One contact-sheet exception: `snapshot-bootstrap.js` copies the sheets into the slice at `key-frames/contact-sheets/*.jpg` as a **local disaster-recovery snapshot** — durable on disk (it survives `tempSession` cleanup, so recovering the sheets does not require re-running acquisition) but gitignored, so it is never committed (see the Output contract). That temp-only handling is otherwise a fixed, non-configurable part of this contract: a consumer that wants the source video, bulk frames, or contact sheets retained as a **committed**, re-runnable substrate (rather than regenerable temp state or a gitignored local snapshot) does not get that from this skill today — a documented, LFS-aware retention path is a tracked follow-up, not yet built. +Absorb a single public YouTube video (transcript + visual frames), harvest reference links, fact-check claims through deeper external research, and produce a prioritized repo-applicability menu. Video download, bulk frames, working contact sheets, and shallow git clones use the OS temp directory — durable artifacts live under `.work///` per the video-digest slice convention. One contact-sheet exception: `snapshot-bootstrap.js` copies the sheets into the slice at `key-frames/contact-sheets/*.jpg` as a **local disaster-recovery snapshot** — durable on disk (it survives `tempSession` cleanup, so recovering the sheets does not require re-running acquisition) but gitignored, so it is never committed (see the Output contract). That never-committed handling is a fixed, non-configurable part of this contract: a consumer that wants the source video, bulk frames, or contact sheets retained as a **committed**, re-runnable substrate (rather than regenerable temp state or a gitignored local snapshot) does not get that from this skill today — a documented, LFS-aware retention path is a tracked follow-up, not yet built. Where this skill says "deeper research," use whatever external-research capability your project provides — for example the discovery plugin's `/discovery:research` / `/discovery:research-deep` when installed. Treat those as the reference implementation, not a hard dependency. @@ -286,7 +286,7 @@ node "${CLAUDE_PLUGIN_ROOT}/skills/youtube-digest/extraction/run.mjs" evals/chec 1. **Synthesis** (after research gate) — template: `templates/synthesis-item.md` - **Synthesis target resolution** — every menu item and `templates/readme-journey.md`'s TLDR are framed against one resolved target, never an implicit "the repo I'm in": explicit `--target ` argument → the consuming project (`CLAUDE_PROJECT_DIR`) when `watch` is invoked directly inside a repo, with no separate corpus session → ask. Whichever rung resolves it, record the target name in `README.md`'s `**Target:**` line (`templates/readme-journey.md`) so a later `resume` or downstream consumer never has to re-infer it. This aligns with (but does not depend on) the `/knowledge:apply` design (`docs/knowledge-integration-design.md`), which will eventually take over repo-fitting via its own `--target` argument from a corpus session; when that skill is installed and built, prefer it for cross-repo fitting and treat this skill's menu as its input, not a replacement. + **Synthesis target resolution** — every menu item and `templates/readme-journey.md`'s TLDR are framed against one resolved target, never an implicit "the repo I'm in". Because `templates/synthesis-item.md`'s **Target touchpoints** are grep-backed, the target must resolve to a **local working tree on disk**, not merely a name: explicit `--target `, resolved to a local checkout of that repo → the consuming project (`CLAUDE_PROJECT_DIR`) when `watch` runs directly inside a repo, with no separate corpus session → ask. An explicit `--target ` that has no local checkout (e.g. run from a separate corpus session where that repo isn't cloned locally) does **not** resolve — stop and ask for its local checkout path rather than falling through to `CLAUDE_PROJECT_DIR`, grepping the current directory, or inventing touchpoint paths. Whichever rung resolves it, record both the target name and its resolved local tree path in `README.md`'s `**Target:**` line (`templates/readme-journey.md`) so a later `resume` or downstream consumer re-greps the same tree instead of re-inferring it. This aligns with (but does not depend on) the `/knowledge:apply` design (`docs/knowledge-integration-design.md`), which will eventually take over repo-fitting via its own `--target` argument from a corpus session (auto-cloning the resolved repo); when that skill is installed and built, prefer it for cross-repo fitting and treat this skill's menu as its input, not a replacement. - Materialize `recommendations/` from `templates/recommendations/` (hub README links all docs) - `recommendations/menu.md` — categories: `immediate-takeaway` | `worth-investigating` | `poc-candidate` | `full-slice` | `no-go`; P0–P2 + consensus notes diff --git a/plugins/knowledge/skills/youtube-digest/templates/readme-journey.md b/plugins/knowledge/skills/youtube-digest/templates/readme-journey.md index 505406614..b2d93def4 100644 --- a/plugins/knowledge/skills/youtube-digest/templates/readme-journey.md +++ b/plugins/knowledge/skills/youtube-digest/templates/readme-journey.md @@ -6,7 +6,7 @@ updated: YYYY-MM-DDTHH:MM:SSZ # {Video Title} -**Target:** {resolved synthesis target — SKILL.md "Synthesis target resolution"} +**Target:** {resolved synthesis target — name + local tree path; SKILL.md "Synthesis target resolution"} ## TLDR