agentleFS
Iabstergo1Iabstergo1/pdf-to-study-kb/.claude/skills/source-preflight/SKILL.md

source-preflight

Skill2 starsChanged 8 days agoMITView on GitHub

Run the deterministic preprocessing chain on a new external source and accept its staging artifacts, without writing any semantic wiki pages. Use when the user says "preprocess this PDF first / run source-preflight / build the source profile first / see if it can be ingested". Only the zero-LLM acceptance gate for add-source, profile, source-convert, source-audit, windows, workorder — no book-splitting, summarizing, semantic unit planning, or vault writes.

The file

We split this skill into the rules it gives an agent

4 rules. About 0 are common, 0 are distinctive, and 4 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈0

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 4

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Very specific:

    Run the deterministic CLI preprocessing chain on a candidate source and decide whether its staging artifacts are good enough to enter …

    line 8
  2. Very specific:

    Read: the zero-LLM preprocessing constraint in CLAUDE.md / AGENTS.md, and docs/skill-runtime/schema.md (to understand the workorder write …

    line 21
  3. Very specific:

    No semantic wiki content pages, no status: proposed pages, no concept-page updates.

    line 28
  4. Very specific:

    No semantic wiki pages written, no status: proposed content pages.

    line 86

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

source-preflight — source preprocessing acceptance gate (zero semantic LLM)

Run the deterministic CLI preprocessing chain on a candidate source and decide whether its staging artifacts are good enough to enter ingest. This skill is a thin wrapper: it only orchestrates scripts/pipeline.py and does no LLM semantic splitting / unit planning / page writing. Project truth: CLAUDE.md / AGENTS.md. Engineering format: docs/skill-runtime/skill-standard.md.

1. Triggers / Non-triggers

  • Triggers: "preprocess this PDF first", "run source-preflight", "build the source profile first", "see if it can be ingested", "just run up to workorder".
  • Non-triggers: "add to the KB / index it" with page writing (use ingest); "summarize/split this book" without ingesting (use source-xray, published content only); "query the wiki" (use kb-query); "translate/explain" (a normal answer).

2. Inputs

  • The user gives: file path <path>, domain <domain>; <fmt> inferred from the extension (pdf/md/docx/pptx); <src> derived from the filename. Confirm <src> and <domain> once.
  • Read: the zero-LLM preprocessing constraint in CLAUDE.md / AGENTS.md, and docs/skill-runtime/schema.md (to understand the workorder write boundary).

3. Outputs

  • pipeline-workspace/staging/<src>/{source.md, blocks.jsonl, chapters.json, parse_report.json, reconciliation.json, windows.jsonl, workorder.yaml, preflight_eval.json} + hard-page PNGs / figure assets.
  • An optional deterministic report pipeline-workspace/reports/source-preflight/<src>.md: from parse_report.json + reconciliation.json show backend, dual-audit status (dual_audited / degraded / disagreements), OCR, table/equation/image counts, discarded (header/footer) count, warnings, and an ingest recommendation; plus CLI status, page count, needs_vision pages, degraded warnings, window coverage, workorder write_scope. No semantic summary.
  • preflight-eval's deterministic JSON (preflight_eval.json): page coverage, window monotonicity, table/image/chart asset + source_ref traceability, the dual-audit gate (check_dual_audit), scan/OCR & low-confidence pages, orphan blocks — reads existing artifacts only, no LLM; --strict returns non-zero on a high/fail (CI-able).
  • No semantic wiki content pages, no status: proposed pages, no concept-page updates.

4. Dependencies

  • CLI: init-vault, add-source, profile, source-convert, source-audit, windows, workorder, preflight-eval, status.
  • The actual ingest is handed to ingest; this skill does not inline ingest phases B/C/D/E/F.
  • Protocols: docs/skill-runtime/skill-standard.md and docs/skill-runtime/schema.md.

5. Persisted artifacts

  • pipeline-workspace/staging/<src>/source.md, reconciliation.json, windows.jsonl, workorder.yaml.
  • pipeline-workspace/staging/<src>/assets/pXXXX.png (needs_vision pages).
  • pipeline-workspace/reports/source-preflight/<src>.md (if written, deterministic facts only).

6. CLI commands

python scripts/pipeline.py init-vault
python scripts/pipeline.py add-source --source <src> --domain <domain> --path <path> --fmt <fmt>
python scripts/pipeline.py profile --source <src>
python scripts/pipeline.py source-convert --source <src>
python scripts/pipeline.py source-audit --source <src> [--strict]   # PDF dual-audit → reconciliation.json + evidence.json + arbitration/queue.json
python scripts/pipeline.py arbitration-status --source <src>        # if pending: agent auto-arbitrates the queue → arbitration-apply (protocol: ingest/references/arbitrate.md), before windows
python scripts/pipeline.py arbitration-resolve --source <src> --page <n> --decision render|ignore --reason "..."  # optional: close a needs_human page, then re-apply
python scripts/pipeline.py windows --source <src>
python scripts/pipeline.py workorder --source <src>
python scripts/pipeline.py preflight-eval --source <src> [--strict]
python scripts/pipeline.py status

Each step is idempotent; on any error, stop — do not skip. For a PDF, windows is fail-closed: it refuses to build unless source-audit has produced reconciliation.json + evidence.json + arbitration/queue.json AND every disagreement is closed (PyMuPDF thresholds are deliberately broad and are not a single source of truth). The only way to build a PDF's windows without a completed source-audit is the explicit dev escape hatch windows --dev-bypass, whose output is degraded / not for strict acceptance. Strict acceptance still requires the dual-audit to pass, and MinerU unavailable in strict mode is fail-closed. preflight-eval reads existing staging only, zero LLM; --strict exits non-zero on a high/fail (a hard gate before switching to ingest).

7. Workflow

Sub-unitInputOutputAcceptancePersistedFailure stop
P1 confirm sourcepath/domain/src/fmtconfirmed 4-tuplesrc/domain clear—user not confirmed
P2 run the chain4-tuplesource/profile/convert/audit/windows/workordereach step succeeds or idempotent-skipsstaging + SQLiteany step errors
P3 accept artifactsstagingingest-ready judgementworkorder.yaml exists, windows cover source.md, reconciliation.json present, preflight-eval no high/failreport draftworkorder missing / preflight-eval high
P4 dual-audit + formula checksource-audit + source-convert outputdual_audit + needs_vision/PNG recordPDF dual-audited (or degraded recorded); formula pages have a full-page PNG (route B)reportnot dual-audited in strict / formula page unrendered
P5 handoffworkorder + reportnext-step suggestiona clear "ingest-ready" or a blocker listreportuser asks to write pages → switch to ingest

8. Failure stops / recovery

Path missing; unsupported fmt; any CLI step fails; source-convert missing backend; PDF dual-audit fail-closed in strict (MinerU unavailable); windows.jsonl does not cover the full text; workorder.yaml not generated; a formula risk page has no PNG; preflight-eval --strict high/fail (non-zero exit); the user asks for LLM unit planning or semantic splitting. Recovery: every step is idempotent — fix the cause and re-run from the failed step; pipeline status shows where it stopped.

9. Acceptance criteria

  • No semantic wiki pages written, no status: proposed content pages.
  • source.md, reconciliation.json, windows.jsonl, workorder.yaml exist.
  • workorder.yaml contains write_scope and the registry hash.
  • PDF dual-audit recorded (reconciliation.json dual_audited=true, or a degraded/blocker recorded).
  • PDF dual-audit disagreements arbitrated + materialized: preflight-eval's check_evidence_bundle is green (no un-arbitrated / un-materialized / pending needs_human), or a blocker recorded.
  • needs_vision pages have a PNG, or a blocker is recorded.
  • preflight-eval checks have no high/fail (--strict exit 0), or a blocker is recorded.
  • The report contains deterministic facts only — no semantic summary / chapter interpretation.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.