Triggers & routing
- Trigger: source manifest, sources list, tutorial sources, url list, material list, tutorial sources.
- Use when:
source-tutorialC1, it is necessary to consolidate multi-source input into a unifiedsources/manifest.yml, and explicitly block when the content is incomplete. - Skip if: there is already a complete and confirmed
sources/manifest.yml。 - Network: none.
- Guardrail: do not fabricate sources; when the manifest is incomplete, it should return BLOCKED instead of pretending to be complete.
Goal: collect the source candidates for source-tutorial into one explicit manifest before ingest starts.
Inputs
GOAL.mdDECISIONS.md
Outputs
sources/manifest.yml
Workflow
- Read
GOAL.mdand any existingDECISIONS.mdnotes to understand what kinds of sources the tutorial is expected to use. - If
sources/manifest.ymldoes not exist, scaffold it with a minimal example. - Validate that each source has:
source_idkindlocatorlabel- for
kind: video, prefertranscript_locatorunless the platform exposes public subtitles
- Reject placeholder/example-only manifests.
- Return success only when at least one real source exists.
Accepted kind
webpagepdfmarkdownrepodocs_sitevideo
For video:
- preferred: add
transcript_locator - Bilibili may succeed from public subtitles when available
- YouTube should currently be paired with
transcript_locator
Script
Quick Start
uv run python .codex/skills/source-manifest/scripts/run.py --workspace <workspace>
All Options
--workspace <dir>(required)--unit-id <U###>--inputs <semicolon-separated>--outputs <semicolon-separated>--checkpoint <C#>
Examples
- Scaffold or validate the manifest:
uv run python .codex/skills/source-manifest/scripts/run.py --workspace <workspace>
Troubleshooting
Issue: the unit keeps blocking after scaffold
Cause:
- The manifest still contains example placeholders.
Fix:
- Replace the scaffold entry with real URLs or local file paths, then rerun the unit.