[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-llamaindex-liteparse":3,"mdc-3ftrg-key":40,"related-org-llamaindex-liteparse":1088,"related-repo-llamaindex-liteparse":1125},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":12,"stars":29,"repoUrl":30,"updatedAt":31,"license":32,"forks":33,"topics":34,"repo":35,"sourceUrl":38,"mdContent":39},"liteparse","parse and extract data from documents","Use this skill whenever a task involves a document file (PDF, DOCX, PPTX, XLSX, or image) and you need to read it or pull text, tables, or specific values out of it — to answer a question about its contents, look up a figure, or extract data. Provides fast, local, model-free extraction via the `lit` CLI with disciplined, low-cost search patterns.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},"llamaindex","LlamaIndex","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fllamaindex.png","run-llama",[13,17,20,23,26],{"name":14,"slug":15,"type":16},"PDF","pdf","tag",{"name":18,"slug":19,"type":16},"Excel","excel",{"name":21,"slug":22,"type":16},"Data Analysis","data-analysis",{"name":24,"slug":25,"type":16},"Documents","documents",{"name":27,"slug":28,"type":16},"DOCX","docx",71,"https:\u002F\u002Fgithub.com\u002Frun-llama\u002Fllamaparse-agent-skills","2026-07-13T06:18:16.430649","MIT",10,[],{"repoUrl":30,"stars":29,"forks":33,"topics":36,"description":37},[],"LlamaParse Agent Skills","https:\u002F\u002Fgithub.com\u002Frun-llama\u002Fllamaparse-agent-skills\u002Ftree\u002FHEAD\u002Fskills\u002Fliteparse","---\nname: liteparse\ndescription: Use this skill whenever a task involves a document file (PDF, DOCX, PPTX, XLSX, or image) and you need to read it or pull text, tables, or specific values out of it — to answer a question about its contents, look up a figure, or extract data. Provides fast, local, model-free extraction via the `lit` CLI with disciplined, low-cost search patterns.\ncompatibility: Requires Node 18+ and `@llamaindex\u002Fliteparse` (`npm i -g @llamaindex\u002Fliteparse`, verify `lit --version`). LibreOffice for Office files; ImageMagick for images. The bundled search.py helper needs `uv`.\nlicense: MIT\nmetadata:\n  author: LlamaIndex\n  version: \"1.0.1\"\n---\n\n# Effective LiteParse\n\nExtract text from documents locally with the `lit` CLI — a fast, model-free parser. This skill is\nabout using it **cheaply**: each `lit parse` re-runs full extraction, and every line you dump into\nthe conversation is paid for on every subsequent turn. The patterns below come from analyzing real\nagent traces where the same PDF was parsed up to **9 times** and single image reads cost\n**140k+ characters** of context. Don't repeat those mistakes.\n\n## The golden rule: parse ONCE to a file, then search the file\n\n`lit parse` re-extracts the whole document every time you call it. Re-parsing per search is the #1\nwaste seen in traces. Parse a document exactly once, to a temp file, then run all your searches\nagainst that file:\n\n```bash\n# ONE TIME, per document. --no-ocr for born-digital PDFs (almost all reports) — much faster.\nlit parse \"\u002Fabs\u002Fpath\u002Fdoc.pdf\" --format text --no-ocr -o \u002Ftmp\u002Fdoc.txt && wc -l \u002Ftmp\u002Fdoc.txt\n```\n\nThen search the file with cheap shell tools — **never** re-run `lit parse` to search again.\n\n## Search discipline — minimize ROUND-TRIPS, then keep results small\n\nEvery Bash call is a full model round-trip (latency + re-read of context). The biggest waste after\nparsing is a **serial** loop: grep → look → grep again → `sed` to read the window → grep again. In\ntraces this doubled the turn count versus just reading the doc. Two rules fix it:\n\n**1. Get context in the SAME command — don't grep then `sed`.** Use `grep -C` so the surrounding\nlines come back with the hit. This removes the follow-up `sed` turn for the common case:\n\n```bash\ngrep -n -i -C4 \"total assets\" \u002Ftmp\u002Fdoc.txt | head -40      # location AND its window, one turn\n```\n\nOnly fall back to `sed -n 'A,Bp'` when you already know the exact line and need a *wider* window\nthan `-C` gave you.\n\n**2. Batch independent lookups into ONE command.** When a question needs several distinct facts\n(e.g. emissions *and* revenue), don't spend one turn per term. Probe them together with labels:\n\n```bash\nfor q in \"carbon intensity\" \"scope 1\" \"total revenue\"; do \\\n  echo \"=== $q ===\"; grep -n -i -C3 \"$q\" \u002Ftmp\u002Fdoc.txt | head -25; done\n```\n\nThen keep results small:\n\n- **Always bound output** with `head` and use `-n` for line numbers.\n- **Don't fan out blindly.** Aim to resolve a question in ≤3 search commands. If two targeted greps\n  don't pin it down, switch to `search.py` (below) — don't keep firing keyword variations one per turn.\n- Prefer **Bash `grep`\u002F`sed` on the saved file over the Read and Grep tools** — fewer round-trips and\n  you control output size precisely.\n\n## Ranked search when keywords are uncertain (bundled helper)\n\nWhen two targeted greps haven't pinned the answer, **stop greping** — don't iterate keyword variants\none turn at a time. Run the bundled BM25 ranker ONCE to surface the most relevant line-windows in a\nsingle command:\n\n```bash\n.\u002F.claude\u002Fskills\u002Feffective-liteparse\u002Fscripts\u002Fsearch.py \u002Ftmp\u002Fdoc.txt -q \"materiality assessment priority topics\" -k 8 -e 5\n```\n\n`-k` = number of matches, `-e` = lines of context around each (so the window comes back inline — no\nfollow-up `sed` turn). It returns ranked windows with line numbers. Use a rich natural-language query\n(several synonyms in one string), not a single keyword. This replaces a long chain of speculative greps.\n\n## Born-digital vs scanned\n\n- **Born-digital PDF** (real text layer — nearly all corporate\u002Ffinance\u002FESG reports): always pass\n  `--no-ocr`. It's much faster and the text is identical. Leaving OCR on wastes time.\n- **Scanned PDF \u002F image**: drop `--no-ocr`. If the value is missing or digits look wrong, read the\n  page visually (see below) rather than trusting OCR.\n\n## Reading a page visually — last resort, ONE screenshot, modest DPI\n\nScreenshots are the most expensive thing you can put in context: a single high-DPI page PNG ran\n**~140k characters** in one trace, and agents often rendered the same page twice (default + hi-res).\n\nOnly screenshot when text\u002Ftables genuinely can't answer the question (dense multi-column tables,\nfigures, charts). Then:\n\n- Render **one** page at a time with `--target-pages \"N\"` (note: it's `--target-pages`, NOT `--pages`).\n- Use **modest DPI (~150–200)**. Do not start at 300+; do not re-render the same page at higher DPI\n  unless the text is actually illegible.\n\n```bash\nlit screenshot \"\u002Fabs\u002Fpath\u002Fdoc.pdf\" --target-pages \"13\" --dpi 150 -o \u002Ftmp\u002Fshots\u002F   # then Read the PNG\n```\n\n## Many questions about the same document\n\nParsing once to a file already covers this: keep the `\u002Ftmp\u002Fdoc.txt` and reuse it across every\nquestion instead of re-parsing.\n\n## Don't waste turns on preamble\n\nSkip `lit --version`, `ls -la`, and `lit … --help` unless something actually failed. Go straight to\nthe parse. Core flags you need:\n\n`--format text|json` · `--no-ocr` · `--target-pages \"1-5,10\"` · `--dpi \u003Cn>` (default 150) ·\n`--ocr-language \u003Ciso>`. Use `--format json` only when you need bounding boxes\u002Flayout — it's much\nlarger; still search it, never load it whole.\n\n## Setup\n\nPDFs work out of the box. If `lit` is missing: `npm i -g @llamaindex\u002Fliteparse`. Office docs need\nLibreOffice; images need ImageMagick (both auto-converted to PDF).\n",{"data":41,"body":45},{"name":4,"description":6,"compatibility":42,"license":32,"metadata":43},"Requires Node 18+ and `@llamaindex\u002Fliteparse` (`npm i -g @llamaindex\u002Fliteparse`, verify `lit --version`). LibreOffice for Office files; ImageMagick for images. The bundled search.py helper needs `uv`.",{"author":9,"version":44},"1.0.1",{"type":46,"children":47},"root",[48,57,102,109,119,218,237,243,263,295,362,391,408,581,586,661,667,679,737,763,769,807,813,825,830,881,954,960,973,979,1008,1056,1062,1082],{"type":49,"tag":50,"props":51,"children":53},"element","h1",{"id":52},"effective-liteparse",[54],{"type":55,"value":56},"text","Effective LiteParse",{"type":49,"tag":58,"props":59,"children":60},"p",{},[61,63,70,72,78,80,86,88,93,95,100],{"type":55,"value":62},"Extract text from documents locally with the ",{"type":49,"tag":64,"props":65,"children":67},"code",{"className":66},[],[68],{"type":55,"value":69},"lit",{"type":55,"value":71}," CLI — a fast, model-free parser. This skill is\nabout using it ",{"type":49,"tag":73,"props":74,"children":75},"strong",{},[76],{"type":55,"value":77},"cheaply",{"type":55,"value":79},": each ",{"type":49,"tag":64,"props":81,"children":83},{"className":82},[],[84],{"type":55,"value":85},"lit parse",{"type":55,"value":87}," re-runs full extraction, and every line you dump into\nthe conversation is paid for on every subsequent turn. The patterns below come from analyzing real\nagent traces where the same PDF was parsed up to ",{"type":49,"tag":73,"props":89,"children":90},{},[91],{"type":55,"value":92},"9 times",{"type":55,"value":94}," and single image reads cost\n",{"type":49,"tag":73,"props":96,"children":97},{},[98],{"type":55,"value":99},"140k+ characters",{"type":55,"value":101}," of context. Don't repeat those mistakes.",{"type":49,"tag":103,"props":104,"children":106},"h2",{"id":105},"the-golden-rule-parse-once-to-a-file-then-search-the-file",[107],{"type":55,"value":108},"The golden rule: parse ONCE to a file, then search the file",{"type":49,"tag":58,"props":110,"children":111},{},[112,117],{"type":49,"tag":64,"props":113,"children":115},{"className":114},[],[116],{"type":55,"value":85},{"type":55,"value":118}," re-extracts the whole document every time you call it. Re-parsing per search is the #1\nwaste seen in traces. Parse a document exactly once, to a temp file, then run all your searches\nagainst that file:",{"type":49,"tag":120,"props":121,"children":126},"pre",{"className":122,"code":123,"language":124,"meta":125,"style":125},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","# ONE TIME, per document. --no-ocr for born-digital PDFs (almost all reports) — much faster.\nlit parse \"\u002Fabs\u002Fpath\u002Fdoc.pdf\" --format text --no-ocr -o \u002Ftmp\u002Fdoc.txt && wc -l \u002Ftmp\u002Fdoc.txt\n","bash","",[127],{"type":49,"tag":64,"props":128,"children":129},{"__ignoreMap":125},[130,142],{"type":49,"tag":131,"props":132,"children":135},"span",{"class":133,"line":134},"line",1,[136],{"type":49,"tag":131,"props":137,"children":139},{"style":138},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic",[140],{"type":55,"value":141},"# ONE TIME, per document. --no-ocr for born-digital PDFs (almost all reports) — much faster.\n",{"type":49,"tag":131,"props":143,"children":145},{"class":133,"line":144},2,[146,151,157,163,168,173,178,183,188,193,198,203,208,213],{"type":49,"tag":131,"props":147,"children":149},{"style":148},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[150],{"type":55,"value":69},{"type":49,"tag":131,"props":152,"children":154},{"style":153},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[155],{"type":55,"value":156}," parse",{"type":49,"tag":131,"props":158,"children":160},{"style":159},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[161],{"type":55,"value":162}," \"",{"type":49,"tag":131,"props":164,"children":165},{"style":153},[166],{"type":55,"value":167},"\u002Fabs\u002Fpath\u002Fdoc.pdf",{"type":49,"tag":131,"props":169,"children":170},{"style":159},[171],{"type":55,"value":172},"\"",{"type":49,"tag":131,"props":174,"children":175},{"style":153},[176],{"type":55,"value":177}," --format",{"type":49,"tag":131,"props":179,"children":180},{"style":153},[181],{"type":55,"value":182}," text",{"type":49,"tag":131,"props":184,"children":185},{"style":153},[186],{"type":55,"value":187}," --no-ocr",{"type":49,"tag":131,"props":189,"children":190},{"style":153},[191],{"type":55,"value":192}," -o",{"type":49,"tag":131,"props":194,"children":195},{"style":153},[196],{"type":55,"value":197}," \u002Ftmp\u002Fdoc.txt",{"type":49,"tag":131,"props":199,"children":200},{"style":159},[201],{"type":55,"value":202}," &&",{"type":49,"tag":131,"props":204,"children":205},{"style":148},[206],{"type":55,"value":207}," wc",{"type":49,"tag":131,"props":209,"children":210},{"style":153},[211],{"type":55,"value":212}," -l",{"type":49,"tag":131,"props":214,"children":215},{"style":153},[216],{"type":55,"value":217}," \u002Ftmp\u002Fdoc.txt\n",{"type":49,"tag":58,"props":219,"children":220},{},[221,223,228,230,235],{"type":55,"value":222},"Then search the file with cheap shell tools — ",{"type":49,"tag":73,"props":224,"children":225},{},[226],{"type":55,"value":227},"never",{"type":55,"value":229}," re-run ",{"type":49,"tag":64,"props":231,"children":233},{"className":232},[],[234],{"type":55,"value":85},{"type":55,"value":236}," to search again.",{"type":49,"tag":103,"props":238,"children":240},{"id":239},"search-discipline-minimize-round-trips-then-keep-results-small",[241],{"type":55,"value":242},"Search discipline — minimize ROUND-TRIPS, then keep results small",{"type":49,"tag":58,"props":244,"children":245},{},[246,248,253,255,261],{"type":55,"value":247},"Every Bash call is a full model round-trip (latency + re-read of context). The biggest waste after\nparsing is a ",{"type":49,"tag":73,"props":249,"children":250},{},[251],{"type":55,"value":252},"serial",{"type":55,"value":254}," loop: grep → look → grep again → ",{"type":49,"tag":64,"props":256,"children":258},{"className":257},[],[259],{"type":55,"value":260},"sed",{"type":55,"value":262}," to read the window → grep again. In\ntraces this doubled the turn count versus just reading the doc. Two rules fix it:",{"type":49,"tag":58,"props":264,"children":265},{},[266,278,280,286,288,293],{"type":49,"tag":73,"props":267,"children":268},{},[269,271,276],{"type":55,"value":270},"1. Get context in the SAME command — don't grep then ",{"type":49,"tag":64,"props":272,"children":274},{"className":273},[],[275],{"type":55,"value":260},{"type":55,"value":277},".",{"type":55,"value":279}," Use ",{"type":49,"tag":64,"props":281,"children":283},{"className":282},[],[284],{"type":55,"value":285},"grep -C",{"type":55,"value":287}," so the surrounding\nlines come back with the hit. This removes the follow-up ",{"type":49,"tag":64,"props":289,"children":291},{"className":290},[],[292],{"type":55,"value":260},{"type":55,"value":294}," turn for the common case:",{"type":49,"tag":120,"props":296,"children":298},{"className":122,"code":297,"language":124,"meta":125,"style":125},"grep -n -i -C4 \"total assets\" \u002Ftmp\u002Fdoc.txt | head -40      # location AND its window, one turn\n",[299],{"type":49,"tag":64,"props":300,"children":301},{"__ignoreMap":125},[302],{"type":49,"tag":131,"props":303,"children":304},{"class":133,"line":134},[305,310,315,320,325,329,334,338,342,347,352,357],{"type":49,"tag":131,"props":306,"children":307},{"style":148},[308],{"type":55,"value":309},"grep",{"type":49,"tag":131,"props":311,"children":312},{"style":153},[313],{"type":55,"value":314}," -n",{"type":49,"tag":131,"props":316,"children":317},{"style":153},[318],{"type":55,"value":319}," -i",{"type":49,"tag":131,"props":321,"children":322},{"style":153},[323],{"type":55,"value":324}," -C4",{"type":49,"tag":131,"props":326,"children":327},{"style":159},[328],{"type":55,"value":162},{"type":49,"tag":131,"props":330,"children":331},{"style":153},[332],{"type":55,"value":333},"total assets",{"type":49,"tag":131,"props":335,"children":336},{"style":159},[337],{"type":55,"value":172},{"type":49,"tag":131,"props":339,"children":340},{"style":153},[341],{"type":55,"value":197},{"type":49,"tag":131,"props":343,"children":344},{"style":159},[345],{"type":55,"value":346}," |",{"type":49,"tag":131,"props":348,"children":349},{"style":148},[350],{"type":55,"value":351}," head",{"type":49,"tag":131,"props":353,"children":354},{"style":153},[355],{"type":55,"value":356}," -40",{"type":49,"tag":131,"props":358,"children":359},{"style":138},[360],{"type":55,"value":361},"      # location AND its window, one turn\n",{"type":49,"tag":58,"props":363,"children":364},{},[365,367,373,375,381,383,389],{"type":55,"value":366},"Only fall back to ",{"type":49,"tag":64,"props":368,"children":370},{"className":369},[],[371],{"type":55,"value":372},"sed -n 'A,Bp'",{"type":55,"value":374}," when you already know the exact line and need a ",{"type":49,"tag":376,"props":377,"children":378},"em",{},[379],{"type":55,"value":380},"wider",{"type":55,"value":382}," window\nthan ",{"type":49,"tag":64,"props":384,"children":386},{"className":385},[],[387],{"type":55,"value":388},"-C",{"type":55,"value":390}," gave you.",{"type":49,"tag":58,"props":392,"children":393},{},[394,399,401,406],{"type":49,"tag":73,"props":395,"children":396},{},[397],{"type":55,"value":398},"2. Batch independent lookups into ONE command.",{"type":55,"value":400}," When a question needs several distinct facts\n(e.g. emissions ",{"type":49,"tag":376,"props":402,"children":403},{},[404],{"type":55,"value":405},"and",{"type":55,"value":407}," revenue), don't spend one turn per term. Probe them together with labels:",{"type":49,"tag":120,"props":409,"children":411},{"className":122,"code":410,"language":124,"meta":125,"style":125},"for q in \"carbon intensity\" \"scope 1\" \"total revenue\"; do \\\n  echo \"=== $q ===\"; grep -n -i -C3 \"$q\" \u002Ftmp\u002Fdoc.txt | head -25; done\n",[412],{"type":49,"tag":64,"props":413,"children":414},{"__ignoreMap":125},[415,489],{"type":49,"tag":131,"props":416,"children":417},{"class":133,"line":134},[418,424,430,435,439,444,448,452,457,461,465,470,474,479,484],{"type":49,"tag":131,"props":419,"children":421},{"style":420},"--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic",[422],{"type":55,"value":423},"for",{"type":49,"tag":131,"props":425,"children":427},{"style":426},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[428],{"type":55,"value":429}," q ",{"type":49,"tag":131,"props":431,"children":432},{"style":420},[433],{"type":55,"value":434},"in",{"type":49,"tag":131,"props":436,"children":437},{"style":159},[438],{"type":55,"value":162},{"type":49,"tag":131,"props":440,"children":441},{"style":153},[442],{"type":55,"value":443},"carbon intensity",{"type":49,"tag":131,"props":445,"children":446},{"style":159},[447],{"type":55,"value":172},{"type":49,"tag":131,"props":449,"children":450},{"style":159},[451],{"type":55,"value":162},{"type":49,"tag":131,"props":453,"children":454},{"style":153},[455],{"type":55,"value":456},"scope 1",{"type":49,"tag":131,"props":458,"children":459},{"style":159},[460],{"type":55,"value":172},{"type":49,"tag":131,"props":462,"children":463},{"style":159},[464],{"type":55,"value":162},{"type":49,"tag":131,"props":466,"children":467},{"style":153},[468],{"type":55,"value":469},"total revenue",{"type":49,"tag":131,"props":471,"children":472},{"style":159},[473],{"type":55,"value":172},{"type":49,"tag":131,"props":475,"children":476},{"style":159},[477],{"type":55,"value":478},";",{"type":49,"tag":131,"props":480,"children":481},{"style":420},[482],{"type":55,"value":483}," do",{"type":49,"tag":131,"props":485,"children":486},{"style":426},[487],{"type":55,"value":488}," \\\n",{"type":49,"tag":131,"props":490,"children":491},{"class":133,"line":144},[492,498,502,507,512,517,521,525,530,534,538,543,547,551,555,559,563,567,572,576],{"type":49,"tag":131,"props":493,"children":495},{"style":494},"--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF",[496],{"type":55,"value":497},"  echo",{"type":49,"tag":131,"props":499,"children":500},{"style":159},[501],{"type":55,"value":162},{"type":49,"tag":131,"props":503,"children":504},{"style":153},[505],{"type":55,"value":506},"=== ",{"type":49,"tag":131,"props":508,"children":509},{"style":426},[510],{"type":55,"value":511},"$q",{"type":49,"tag":131,"props":513,"children":514},{"style":153},[515],{"type":55,"value":516}," ===",{"type":49,"tag":131,"props":518,"children":519},{"style":159},[520],{"type":55,"value":172},{"type":49,"tag":131,"props":522,"children":523},{"style":159},[524],{"type":55,"value":478},{"type":49,"tag":131,"props":526,"children":527},{"style":148},[528],{"type":55,"value":529}," grep",{"type":49,"tag":131,"props":531,"children":532},{"style":153},[533],{"type":55,"value":314},{"type":49,"tag":131,"props":535,"children":536},{"style":153},[537],{"type":55,"value":319},{"type":49,"tag":131,"props":539,"children":540},{"style":153},[541],{"type":55,"value":542}," -C3",{"type":49,"tag":131,"props":544,"children":545},{"style":159},[546],{"type":55,"value":162},{"type":49,"tag":131,"props":548,"children":549},{"style":426},[550],{"type":55,"value":511},{"type":49,"tag":131,"props":552,"children":553},{"style":159},[554],{"type":55,"value":172},{"type":49,"tag":131,"props":556,"children":557},{"style":153},[558],{"type":55,"value":197},{"type":49,"tag":131,"props":560,"children":561},{"style":159},[562],{"type":55,"value":346},{"type":49,"tag":131,"props":564,"children":565},{"style":148},[566],{"type":55,"value":351},{"type":49,"tag":131,"props":568,"children":569},{"style":153},[570],{"type":55,"value":571}," -25",{"type":49,"tag":131,"props":573,"children":574},{"style":159},[575],{"type":55,"value":478},{"type":49,"tag":131,"props":577,"children":578},{"style":420},[579],{"type":55,"value":580}," done\n",{"type":49,"tag":58,"props":582,"children":583},{},[584],{"type":55,"value":585},"Then keep results small:",{"type":49,"tag":587,"props":588,"children":589},"ul",{},[590,617,635],{"type":49,"tag":591,"props":592,"children":593},"li",{},[594,599,601,607,609,615],{"type":49,"tag":73,"props":595,"children":596},{},[597],{"type":55,"value":598},"Always bound output",{"type":55,"value":600}," with ",{"type":49,"tag":64,"props":602,"children":604},{"className":603},[],[605],{"type":55,"value":606},"head",{"type":55,"value":608}," and use ",{"type":49,"tag":64,"props":610,"children":612},{"className":611},[],[613],{"type":55,"value":614},"-n",{"type":55,"value":616}," for line numbers.",{"type":49,"tag":591,"props":618,"children":619},{},[620,625,627,633],{"type":49,"tag":73,"props":621,"children":622},{},[623],{"type":55,"value":624},"Don't fan out blindly.",{"type":55,"value":626}," Aim to resolve a question in ≤3 search commands. If two targeted greps\ndon't pin it down, switch to ",{"type":49,"tag":64,"props":628,"children":630},{"className":629},[],[631],{"type":55,"value":632},"search.py",{"type":55,"value":634}," (below) — don't keep firing keyword variations one per turn.",{"type":49,"tag":591,"props":636,"children":637},{},[638,640,659],{"type":55,"value":639},"Prefer ",{"type":49,"tag":73,"props":641,"children":642},{},[643,645,650,652,657],{"type":55,"value":644},"Bash ",{"type":49,"tag":64,"props":646,"children":648},{"className":647},[],[649],{"type":55,"value":309},{"type":55,"value":651},"\u002F",{"type":49,"tag":64,"props":653,"children":655},{"className":654},[],[656],{"type":55,"value":260},{"type":55,"value":658}," on the saved file over the Read and Grep tools",{"type":55,"value":660}," — fewer round-trips and\nyou control output size precisely.",{"type":49,"tag":103,"props":662,"children":664},{"id":663},"ranked-search-when-keywords-are-uncertain-bundled-helper",[665],{"type":55,"value":666},"Ranked search when keywords are uncertain (bundled helper)",{"type":49,"tag":58,"props":668,"children":669},{},[670,672,677],{"type":55,"value":671},"When two targeted greps haven't pinned the answer, ",{"type":49,"tag":73,"props":673,"children":674},{},[675],{"type":55,"value":676},"stop greping",{"type":55,"value":678}," — don't iterate keyword variants\none turn at a time. Run the bundled BM25 ranker ONCE to surface the most relevant line-windows in a\nsingle command:",{"type":49,"tag":120,"props":680,"children":682},{"className":122,"code":681,"language":124,"meta":125,"style":125},".\u002F.claude\u002Fskills\u002Feffective-liteparse\u002Fscripts\u002Fsearch.py \u002Ftmp\u002Fdoc.txt -q \"materiality assessment priority topics\" -k 8 -e 5\n",[683],{"type":49,"tag":64,"props":684,"children":685},{"__ignoreMap":125},[686],{"type":49,"tag":131,"props":687,"children":688},{"class":133,"line":134},[689,694,698,703,707,712,716,721,727,732],{"type":49,"tag":131,"props":690,"children":691},{"style":148},[692],{"type":55,"value":693},".\u002F.claude\u002Fskills\u002Feffective-liteparse\u002Fscripts\u002Fsearch.py",{"type":49,"tag":131,"props":695,"children":696},{"style":153},[697],{"type":55,"value":197},{"type":49,"tag":131,"props":699,"children":700},{"style":153},[701],{"type":55,"value":702}," -q",{"type":49,"tag":131,"props":704,"children":705},{"style":159},[706],{"type":55,"value":162},{"type":49,"tag":131,"props":708,"children":709},{"style":153},[710],{"type":55,"value":711},"materiality assessment priority topics",{"type":49,"tag":131,"props":713,"children":714},{"style":159},[715],{"type":55,"value":172},{"type":49,"tag":131,"props":717,"children":718},{"style":153},[719],{"type":55,"value":720}," -k",{"type":49,"tag":131,"props":722,"children":724},{"style":723},"--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C",[725],{"type":55,"value":726}," 8",{"type":49,"tag":131,"props":728,"children":729},{"style":153},[730],{"type":55,"value":731}," -e",{"type":49,"tag":131,"props":733,"children":734},{"style":723},[735],{"type":55,"value":736}," 5\n",{"type":49,"tag":58,"props":738,"children":739},{},[740,746,748,754,756,761],{"type":49,"tag":64,"props":741,"children":743},{"className":742},[],[744],{"type":55,"value":745},"-k",{"type":55,"value":747}," = number of matches, ",{"type":49,"tag":64,"props":749,"children":751},{"className":750},[],[752],{"type":55,"value":753},"-e",{"type":55,"value":755}," = lines of context around each (so the window comes back inline — no\nfollow-up ",{"type":49,"tag":64,"props":757,"children":759},{"className":758},[],[760],{"type":55,"value":260},{"type":55,"value":762}," turn). It returns ranked windows with line numbers. Use a rich natural-language query\n(several synonyms in one string), not a single keyword. This replaces a long chain of speculative greps.",{"type":49,"tag":103,"props":764,"children":766},{"id":765},"born-digital-vs-scanned",[767],{"type":55,"value":768},"Born-digital vs scanned",{"type":49,"tag":587,"props":770,"children":771},{},[772,790],{"type":49,"tag":591,"props":773,"children":774},{},[775,780,782,788],{"type":49,"tag":73,"props":776,"children":777},{},[778],{"type":55,"value":779},"Born-digital PDF",{"type":55,"value":781}," (real text layer — nearly all corporate\u002Ffinance\u002FESG reports): always pass\n",{"type":49,"tag":64,"props":783,"children":785},{"className":784},[],[786],{"type":55,"value":787},"--no-ocr",{"type":55,"value":789},". It's much faster and the text is identical. Leaving OCR on wastes time.",{"type":49,"tag":591,"props":791,"children":792},{},[793,798,800,805],{"type":49,"tag":73,"props":794,"children":795},{},[796],{"type":55,"value":797},"Scanned PDF \u002F image",{"type":55,"value":799},": drop ",{"type":49,"tag":64,"props":801,"children":803},{"className":802},[],[804],{"type":55,"value":787},{"type":55,"value":806},". If the value is missing or digits look wrong, read the\npage visually (see below) rather than trusting OCR.",{"type":49,"tag":103,"props":808,"children":810},{"id":809},"reading-a-page-visually-last-resort-one-screenshot-modest-dpi",[811],{"type":55,"value":812},"Reading a page visually — last resort, ONE screenshot, modest DPI",{"type":49,"tag":58,"props":814,"children":815},{},[816,818,823],{"type":55,"value":817},"Screenshots are the most expensive thing you can put in context: a single high-DPI page PNG ran\n",{"type":49,"tag":73,"props":819,"children":820},{},[821],{"type":55,"value":822},"~140k characters",{"type":55,"value":824}," in one trace, and agents often rendered the same page twice (default + hi-res).",{"type":49,"tag":58,"props":826,"children":827},{},[828],{"type":55,"value":829},"Only screenshot when text\u002Ftables genuinely can't answer the question (dense multi-column tables,\nfigures, charts). Then:",{"type":49,"tag":587,"props":831,"children":832},{},[833,869],{"type":49,"tag":591,"props":834,"children":835},{},[836,838,843,845,851,853,859,861,867],{"type":55,"value":837},"Render ",{"type":49,"tag":73,"props":839,"children":840},{},[841],{"type":55,"value":842},"one",{"type":55,"value":844}," page at a time with ",{"type":49,"tag":64,"props":846,"children":848},{"className":847},[],[849],{"type":55,"value":850},"--target-pages \"N\"",{"type":55,"value":852}," (note: it's ",{"type":49,"tag":64,"props":854,"children":856},{"className":855},[],[857],{"type":55,"value":858},"--target-pages",{"type":55,"value":860},", NOT ",{"type":49,"tag":64,"props":862,"children":864},{"className":863},[],[865],{"type":55,"value":866},"--pages",{"type":55,"value":868},").",{"type":49,"tag":591,"props":870,"children":871},{},[872,874,879],{"type":55,"value":873},"Use ",{"type":49,"tag":73,"props":875,"children":876},{},[877],{"type":55,"value":878},"modest DPI (~150–200)",{"type":55,"value":880},". Do not start at 300+; do not re-render the same page at higher DPI\nunless the text is actually illegible.",{"type":49,"tag":120,"props":882,"children":884},{"className":122,"code":883,"language":124,"meta":125,"style":125},"lit screenshot \"\u002Fabs\u002Fpath\u002Fdoc.pdf\" --target-pages \"13\" --dpi 150 -o \u002Ftmp\u002Fshots\u002F   # then Read the PNG\n",[885],{"type":49,"tag":64,"props":886,"children":887},{"__ignoreMap":125},[888],{"type":49,"tag":131,"props":889,"children":890},{"class":133,"line":134},[891,895,900,904,908,912,917,921,926,930,935,940,944,949],{"type":49,"tag":131,"props":892,"children":893},{"style":148},[894],{"type":55,"value":69},{"type":49,"tag":131,"props":896,"children":897},{"style":153},[898],{"type":55,"value":899}," screenshot",{"type":49,"tag":131,"props":901,"children":902},{"style":159},[903],{"type":55,"value":162},{"type":49,"tag":131,"props":905,"children":906},{"style":153},[907],{"type":55,"value":167},{"type":49,"tag":131,"props":909,"children":910},{"style":159},[911],{"type":55,"value":172},{"type":49,"tag":131,"props":913,"children":914},{"style":153},[915],{"type":55,"value":916}," --target-pages",{"type":49,"tag":131,"props":918,"children":919},{"style":159},[920],{"type":55,"value":162},{"type":49,"tag":131,"props":922,"children":923},{"style":153},[924],{"type":55,"value":925},"13",{"type":49,"tag":131,"props":927,"children":928},{"style":159},[929],{"type":55,"value":172},{"type":49,"tag":131,"props":931,"children":932},{"style":153},[933],{"type":55,"value":934}," --dpi",{"type":49,"tag":131,"props":936,"children":937},{"style":723},[938],{"type":55,"value":939}," 150",{"type":49,"tag":131,"props":941,"children":942},{"style":153},[943],{"type":55,"value":192},{"type":49,"tag":131,"props":945,"children":946},{"style":153},[947],{"type":55,"value":948}," \u002Ftmp\u002Fshots\u002F",{"type":49,"tag":131,"props":950,"children":951},{"style":138},[952],{"type":55,"value":953},"   # then Read the PNG\n",{"type":49,"tag":103,"props":955,"children":957},{"id":956},"many-questions-about-the-same-document",[958],{"type":55,"value":959},"Many questions about the same document",{"type":49,"tag":58,"props":961,"children":962},{},[963,965,971],{"type":55,"value":964},"Parsing once to a file already covers this: keep the ",{"type":49,"tag":64,"props":966,"children":968},{"className":967},[],[969],{"type":55,"value":970},"\u002Ftmp\u002Fdoc.txt",{"type":55,"value":972}," and reuse it across every\nquestion instead of re-parsing.",{"type":49,"tag":103,"props":974,"children":976},{"id":975},"dont-waste-turns-on-preamble",[977],{"type":55,"value":978},"Don't waste turns on preamble",{"type":49,"tag":58,"props":980,"children":981},{},[982,984,990,992,998,1000,1006],{"type":55,"value":983},"Skip ",{"type":49,"tag":64,"props":985,"children":987},{"className":986},[],[988],{"type":55,"value":989},"lit --version",{"type":55,"value":991},", ",{"type":49,"tag":64,"props":993,"children":995},{"className":994},[],[996],{"type":55,"value":997},"ls -la",{"type":55,"value":999},", and ",{"type":49,"tag":64,"props":1001,"children":1003},{"className":1002},[],[1004],{"type":55,"value":1005},"lit … --help",{"type":55,"value":1007}," unless something actually failed. Go straight to\nthe parse. Core flags you need:",{"type":49,"tag":58,"props":1009,"children":1010},{},[1011,1017,1019,1024,1025,1031,1032,1038,1040,1046,1048,1054],{"type":49,"tag":64,"props":1012,"children":1014},{"className":1013},[],[1015],{"type":55,"value":1016},"--format text|json",{"type":55,"value":1018}," · ",{"type":49,"tag":64,"props":1020,"children":1022},{"className":1021},[],[1023],{"type":55,"value":787},{"type":55,"value":1018},{"type":49,"tag":64,"props":1026,"children":1028},{"className":1027},[],[1029],{"type":55,"value":1030},"--target-pages \"1-5,10\"",{"type":55,"value":1018},{"type":49,"tag":64,"props":1033,"children":1035},{"className":1034},[],[1036],{"type":55,"value":1037},"--dpi \u003Cn>",{"type":55,"value":1039}," (default 150) ·\n",{"type":49,"tag":64,"props":1041,"children":1043},{"className":1042},[],[1044],{"type":55,"value":1045},"--ocr-language \u003Ciso>",{"type":55,"value":1047},". Use ",{"type":49,"tag":64,"props":1049,"children":1051},{"className":1050},[],[1052],{"type":55,"value":1053},"--format json",{"type":55,"value":1055}," only when you need bounding boxes\u002Flayout — it's much\nlarger; still search it, never load it whole.",{"type":49,"tag":103,"props":1057,"children":1059},{"id":1058},"setup",[1060],{"type":55,"value":1061},"Setup",{"type":49,"tag":58,"props":1063,"children":1064},{},[1065,1067,1072,1074,1080],{"type":55,"value":1066},"PDFs work out of the box. If ",{"type":49,"tag":64,"props":1068,"children":1070},{"className":1069},[],[1071],{"type":55,"value":69},{"type":55,"value":1073}," is missing: ",{"type":49,"tag":64,"props":1075,"children":1077},{"className":1076},[],[1078],{"type":55,"value":1079},"npm i -g @llamaindex\u002Fliteparse",{"type":55,"value":1081},". Office docs need\nLibreOffice; images need ImageMagick (both auto-converted to PDF).",{"type":49,"tag":1083,"props":1084,"children":1085},"style",{},[1086],{"type":55,"value":1087},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":1089,"total":1124},[1090,1098,1114],{"slug":4,"name":4,"fn":5,"description":6,"org":1091,"tags":1092,"stars":29,"repoUrl":30,"updatedAt":31},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1093,1094,1095,1096,1097],{"name":21,"slug":22,"type":16},{"name":24,"slug":25,"type":16},{"name":27,"slug":28,"type":16},{"name":18,"slug":19,"type":16},{"name":14,"slug":15,"type":16},{"slug":1099,"name":1099,"fn":1100,"description":1101,"org":1102,"tags":1103,"stars":29,"repoUrl":30,"updatedAt":1113},"llamacloud-index","search LlamaCloud Index knowledge bases","Use this skill whenever a question should be answered from documents stored in a LlamaCloud Index v2 knowledge base — retrieving passages, locating indexed files, or searching indexed content through the LlamaParse Platform REST API with curl. Teaches agentic retrieval — navigating an index like a file system instead of one-shot RAG.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1104,1107,1110],{"name":1105,"slug":1106,"type":16},"Knowledge Management","knowledge-management",{"name":1108,"slug":1109,"type":16},"LLM","llm",{"name":1111,"slug":1112,"type":16},"Search","search","2026-07-13T06:18:26.830297",{"slug":1115,"name":1115,"fn":1116,"description":1117,"org":1118,"tags":1119,"stars":29,"repoUrl":30,"updatedAt":1123},"llamaparse","parse unstructured documents","Use this skill when the user asks to parse the content of an unstructured file (PDF, PPTX, DOCX...)",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1120,1121,1122],{"name":21,"slug":22,"type":16},{"name":24,"slug":25,"type":16},{"name":14,"slug":15,"type":16},"2026-07-13T06:18:21.113769",3,{"items":1126,"total":1124},[1127,1135,1141],{"slug":4,"name":4,"fn":5,"description":6,"org":1128,"tags":1129,"stars":29,"repoUrl":30,"updatedAt":31},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1130,1131,1132,1133,1134],{"name":21,"slug":22,"type":16},{"name":24,"slug":25,"type":16},{"name":27,"slug":28,"type":16},{"name":18,"slug":19,"type":16},{"name":14,"slug":15,"type":16},{"slug":1099,"name":1099,"fn":1100,"description":1101,"org":1136,"tags":1137,"stars":29,"repoUrl":30,"updatedAt":1113},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1138,1139,1140],{"name":1105,"slug":1106,"type":16},{"name":1108,"slug":1109,"type":16},{"name":1111,"slug":1112,"type":16},{"slug":1115,"name":1115,"fn":1116,"description":1117,"org":1142,"tags":1143,"stars":29,"repoUrl":30,"updatedAt":1123},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1144,1145,1146],{"name":21,"slug":22,"type":16},{"name":24,"slug":25,"type":16},{"name":14,"slug":15,"type":16}]