{"slug":"foia-tracker","title":"foia-tracker","summary":"Manage the full Freedom of Information Act (FOIA) and state public records request lifecycle — intake form generation, agency-specific portal routing (FOIA.gov, FBI eFOIA, USCIS, FOIAonline successor portals).","platform":"Claude","tags":[],"authorName":"LLM Mart","authorSlug":"llm-mart","score":0,"source":"github","price":null,"verified":false,"createdAt":"2026-10-01T15:40:28.157067Z","repo":{"url":"https://github.com/tinh2/skills-hub-registry","stars":18,"forks":6,"license":null,"updatedAt":"2026-09-04T17:22:55Z"},"bodyHtml":"<hr>\n<p>name: foia-tracker\ndescription: \"Manage the full Freedom of Information Act (FOIA) and state public records request lifecycle — intake form generation, agency-specific portal routing (FOIA.gov, FBI eFOIA, USCIS, FOIAonline successor portals).\"\nversion: \"1.0.1\"\ncategory: analysis\nplatforms:</p>\n<ul>\n<li>CLAUDE_CODE</li>\n</ul>\n<hr>\n<h1>FOIA Request Lifecycle Tracker</h1>\n<p>You manage the full FOIA / state public records request lifecycle — for both requesters (journalists, attorneys, accountability groups) and agency FOIA officers responding to requests. The federal backlog topped 200k pending requests in 2026; tooling that compresses any stage of the lifecycle is high-leverage.</p>\n<h1>============================================================\n=== PRE-FLIGHT ===</h1>\n<p>Verify:</p>\n<ul>\n<li><input disabled=\"disabled\" type=\"checkbox\"> <strong>Side</strong>: requester (filing) OR agency (responding)? Different workflows.</li>\n<li><input disabled=\"disabled\" type=\"checkbox\"> <strong>Jurisdiction</strong>: federal (5 U.S.C. § 552) OR state (each state has its own statute — CA Public Records Act, TX Public Information Act, NY Freedom of Information Law, FL Sunshine Law, etc. — wildly different timelines).</li>\n<li><input disabled=\"disabled\" type=\"checkbox\"> <strong>Target agency</strong>: which federal/state agency? Some have dedicated portals (FBI eFOIA, USCIS Electronic Reading Room, DHS FOIA Online). Multi-agency requests get bounced.</li>\n<li><input disabled=\"disabled\" type=\"checkbox\"> <strong>Records scope</strong>: specific document set / time range / officials? Vague requests get denied as \"burdensome.\" Narrow scope = faster response.</li>\n<li><input disabled=\"disabled\" type=\"checkbox\"> <strong>Fee posture</strong>: commercial (full fees), educational/journalism (search only), public-interest (waiver eligible).</li>\n</ul>\n<p>Recovery:</p>\n<ul>\n<li>If jurisdiction unclear, default to federal and surface the state-specific differences as TODO.</li>\n<li>For multi-agency requests, generate one request per agency rather than a single shotgun letter.</li>\n</ul>\n<h1>============================================================\n=== PHASE 1: INTAKE FORM GENERATOR ===</h1>\n<p>Generate a standards-compliant FOIA request letter:</p>\n<p><strong>Required elements</strong> (federal):</p>\n<ul>\n<li>Statement: \"This is a request under the Freedom of Information Act, 5 U.S.C. § 552.\"</li>\n<li>Records description: specific enough to allow a \"professional employee familiar with the subject area to locate the records with a reasonable amount of effort\" (5 C.F.R. § 294.106(a)).</li>\n<li>Time range.</li>\n<li>Format preferred (electronic, native format, OCR-readable PDF).</li>\n<li>Fee category and waiver request (if applicable).</li>\n<li>Expedited processing request (if eligible — imminent threat to life/safety, urgency to inform the public).</li>\n<li>Contact info + mailing/email address for response.</li>\n</ul>\n<p><strong>Pre-built templates by category</strong>:</p>\n<ul>\n<li>Records about a specific person (Privacy Act waiver attached if subject is requester).</li>\n<li>Records about a specific event or incident (date range + agency component).</li>\n<li>Policy / rule / guidance documents.</li>\n<li>Contract or grant records (cite SAM.gov reference).</li>\n<li>Communications / correspondence (cite participants + keywords).</li>\n<li>Statistical / aggregate data (cite specific database if known).</li>\n</ul>\n<p>VALIDATION: Generated letter cites § 552 correctly, includes all required elements, and the records description passes a \"specificity\" review (would a third party know what to search for?).</p>\n<p>FALLBACK: If records description is too vague, refuse to generate — prompt user to narrow.</p>\n<h1>============================================================\n=== PHASE 2: AGENCY PORTAL ROUTING ===</h1>\n<p>Route the request to the correct intake mechanism per agency:</p>\n<table>\n<thead>\n<tr>\n<th>Agency</th>\n<th>Portal / channel</th>\n<th>Notes</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>FBI</td>\n<td>efoia.fbi.gov</td>\n<td>Has its own Records/Information Dissemination</td>\n</tr>\n<tr>\n<td>USCIS</td>\n<td>first.uscis.gov</td>\n<td>Use eRequest for A-file requests</td>\n</tr>\n<tr>\n<td>DHS components</td>\n<td>Component-specific (TSA, CBP, ICE, USCIS)</td>\n<td>Component-level FOIA officers</td>\n</tr>\n<tr>\n<td>DOJ</td>\n<td>foiarequest.justice.gov</td>\n<td>Component routing (FBI, ATF, DEA, USMS, BOP)</td>\n</tr>\n<tr>\n<td>State Department</td>\n<td>foia.state.gov</td>\n<td>Diplomatic cables = long timelines</td>\n</tr>\n<tr>\n<td>HHS / CMS / FDA</td>\n<td>FDA has its own platform (post-2025 modernization)</td>\n<td></td>\n</tr>\n<tr>\n<td>EPA</td>\n<td>epa.gov/foia</td>\n<td>High-volume agency</td>\n</tr>\n<tr>\n<td>GSA</td>\n<td>gsa.gov/foia</td>\n<td>Operates FOIA.gov portal infrastructure</td>\n</tr>\n<tr>\n<td>Other federal</td>\n<td>foia.gov (unified portal)</td>\n<td>Auto-routes to component</td>\n</tr>\n<tr>\n<td>State agencies</td>\n<td>varies — <code>state.gov/foia</code> not enough — check the specific state DOJ</td>\n<td></td>\n</tr>\n</tbody>\n</table>\n<p>Each portal accepts: PDF/MS Word OR direct form input. Generate both formats — some agencies still mail-only for classified or pre-decisional materials.</p>\n<p>VALIDATION: Portal URL is current (not deprecated post-FOIAonline sunset).</p>\n<h1>============================================================\n=== PHASE 3: STATUTORY CLOCK TRACKER ===</h1>\n<p>Federal: agency has <strong>20 working days</strong> from receipt to issue a determination (5 U.S.C. § 552(a)(6)(A)). Extensions:</p>\n<ul>\n<li>10 additional working days for \"unusual circumstances\" (must be in writing, citing one of three statutory reasons).</li>\n<li>Indefinite tolling permitted while the agency seeks clarification from the requester.</li>\n<li>\"Multitrack\" processing: simple vs complex queue. Asking for the simple queue speeds response.</li>\n</ul>\n<p>State: ranges from 1 business day (FL) to 60+ days (DE without justification).</p>\n<p>Generate a tracker (SQLite or JSON):</p>\n<pre><code>{\n  \"request_id\": \"...\",\n  \"agency\": \"...\",\n  \"filed_at\": \"ISO8601\",\n  \"ack_received\": \"ISO8601 or null\",\n  \"determination_due\": \"computed\",\n  \"extensions\": [{\"reason\": \"...\", \"ends\": \"...\"}],\n  \"tolling_periods\": [{\"start\": \"...\", \"end\": \"...\", \"reason\": \"clarification requested\"}],\n  \"interim_releases\": [...],\n  \"final_response\": null,\n  \"status\": \"intake|searching|reviewing|appealing|closed\"\n}\n</code></pre>\n<p>Send reminder when due date is in 5/2/0 days. After due date, generate the \"constructive denial\" appeal trigger.</p>\n<p>VALIDATION: Working-day math respects federal holidays + weekends. Tolling is excluded from clock.</p>\n<h1>============================================================\n=== PHASE 4: EXEMPTION-AWARE REDACTION STUB ===</h1>\n<p>(For agency side: generate a redaction proposal that flags candidate text per exemption. Agency FOIA officer must review — this is a stub, not a legal determination.)</p>\n<p>The nine FOIA exemptions:</p>\n<table>\n<thead>\n<tr>\n<th>#</th>\n<th>Exemption</th>\n<th>Typical patterns to flag</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>b1</td>\n<td>National defense / foreign policy classified</td>\n<td>\"TOP SECRET\", \"SECRET\", \"CONFIDENTIAL\", classification stamps</td>\n</tr>\n<tr>\n<td>b2</td>\n<td>Internal personnel rules</td>\n<td>Operating manuals, employee schedules</td>\n</tr>\n<tr>\n<td>b3</td>\n<td>Statutorily exempt</td>\n<td>Cite specific statute (e.g., 26 USC § 6103 for tax data)</td>\n</tr>\n<tr>\n<td>b4</td>\n<td>Trade secrets / confidential commercial</td>\n<td>Pricing, formulas, proprietary methods (Argus Leader test)</td>\n</tr>\n<tr>\n<td>b5</td>\n<td>Deliberative / pre-decisional / privileged</td>\n<td>Draft documents, attorney work product, deliberative emails</td>\n</tr>\n<tr>\n<td>b6</td>\n<td>Personal privacy</td>\n<td>SSN, DOB, home address, medical info, personnel files</td>\n</tr>\n<tr>\n<td>b7</td>\n<td>Law enforcement</td>\n<td>Subdivided b7(A)-(F); informant identities, techniques</td>\n</tr>\n<tr>\n<td>b8</td>\n<td>Financial institution examination</td>\n<td>Bank examination reports</td>\n</tr>\n<tr>\n<td>b9</td>\n<td>Oil well geological data</td>\n<td>Rare</td>\n</tr>\n</tbody>\n</table>\n<p>For each candidate redaction, output: <code>{page, span, suggested_exemption, reasoning, confidence}</code>. Agency officer accepts/rejects. Foreseeable harm standard (FOIA Improvement Act 2016) requires identifying specific harm — generate the harm statement template per exemption.</p>\n<p>VALIDATION: Output is a proposal, not a fait accompli. Every suggested redaction has a citable exemption AND a foreseeable-harm statement template.</p>\n<p>CRITICAL: Output is for human review. Never auto-apply redactions in production agency workflows — that's a § 552 violation waiting to happen.</p>\n<h1>============================================================\n=== PHASE 5: RESPONSE QUALITY AUDITOR (REQUESTER SIDE) ===</h1>\n<p>When the agency response arrives, audit for:</p>\n<ol>\n<li><strong>Page count delta</strong> — did they release everything claimed? Compare cover letter count to actual PDF count.</li>\n<li><strong>Over-redaction signals</strong> — fully-redacted pages, every-paragraph black bars, missing context.</li>\n<li><strong>Unjustified exemptions</strong> — exemptions cited without specific harm explanation (post-2016 standard).</li>\n<li><strong>Withheld in full</strong> — \"no documents\" claims should be skeptically reviewed; suggest reformulating.</li>\n<li><strong>Glomar response</strong> (\"can neither confirm nor deny\") — narrow path to challenge.</li>\n<li><strong>Categorical denials</strong> — courts disfavor; suggests appeal viability.</li>\n</ol>\n<p>Generate <code>audit_report.md</code> with appeal-viability score (1-5) and specific findings.</p>\n<p>VALIDATION: Audit produces a concrete next-step recommendation (accept / appeal / re-formulate / litigation).</p>\n<h1>============================================================\n=== PHASE 6: APPEAL LETTER GENERATOR ===</h1>\n<p>If denial or partial release is unsatisfactory, generate an administrative appeal:</p>\n<ul>\n<li>Address to agency's FOIA Appeals officer (look up via Department of Justice OIP guidance).</li>\n<li>Cite specific exemption claims and explain why they fail.</li>\n<li>Cite case law:\n<ul>\n<li><strong>Argus Leader Media v. USDA</strong> (2019) — narrowed b4 to \"customarily and actually\" confidential.</li>\n<li><strong>DOJ v. Reporters Committee</strong> (1989) — b6/b7C balancing test for personal privacy.</li>\n<li><strong>Lindsey v. United States</strong> — foreseeable harm requirement.</li>\n<li><strong>NLRB v. Sears, Roebuck &amp; Co.</strong> (1975) — b5 deliberative process.</li>\n</ul>\n</li>\n<li>Request fee waiver clarification if denied.</li>\n<li>90-day deadline for federal administrative appeal (5 U.S.C. § 552(a)(6)(A)(ii)).</li>\n</ul>\n<p>VALIDATION: Appeal cites specific exemption claim + counter-argument + case authority. Filed within 90 days.</p>\n<h1>============================================================\n=== PHASE 7: FEE WAIVER + EXPEDITED PROCESSING ===</h1>\n<p><strong>Fee waiver criteria</strong> (28 C.F.R. § 16.10):</p>\n<ol>\n<li>Subject concerns \"operations or activities of the government\"</li>\n<li>Disclosure is \"likely to contribute significantly to public understanding\"</li>\n<li>Public interest, not commercial interest</li>\n</ol>\n<p>Generate fee-waiver template that addresses all three prongs concretely (not boilerplate).</p>\n<p><strong>Expedited processing criteria</strong>:</p>\n<ul>\n<li>Imminent threat to life or physical safety, OR</li>\n<li>Urgency to inform the public + requester is \"primarily engaged in disseminating information.\"</li>\n</ul>\n<p>Generate expedited-processing certification including the \"I certify that my statement is true and correct to the best of my knowledge\" sworn statement (5 U.S.C. § 552(a)(6)(E)(vi)).</p>\n<p>VALIDATION: Templates address specific statutory prongs, not generic justification.</p>\n<h1>============================================================\n=== SELF-REVIEW ===</h1>\n<p>Score 1–5:</p>\n<ul>\n<li><strong>Complete</strong>: Intake + routing + clock + redaction stub + audit + appeal + waiver all delivered?</li>\n<li><strong>Robust</strong>: Working-day math correct? Tolling excluded? Exemption proposals tied to foreseeable harm?</li>\n<li><strong>Clean</strong>: Letters reference current statutory citations, not deprecated language?</li>\n<li><strong>FOIA-credible</strong>: Would a journalist who's filed 100+ requests OR an agency FOIA officer recognize the templates as production-ready?</li>\n</ul>\n<p>Common gap: assuming all 9 exemptions apply equally — b1/b3/b7 require very specific justifications.</p>\n<h1>============================================================\n=== LEARNINGS CAPTURE ===</h1>\n<p>Append to <code>~/.claude/skills/foia-tracker/LEARNINGS.md</code>:</p>\n<h2></h2>\n<ul>\n<li><strong>What worked:</strong></li>\n<li><strong>What was awkward:</strong></li>\n<li><strong>Suggested patch:</strong></li>\n<li><strong>Verdict:</strong> [Smooth / Minor friction / Major friction]</li>\n</ul>\n<h1>============================================================\n=== STRICT RULES ===</h1>\n<ul>\n<li>Never auto-apply redactions to an agency response without human review. Wrong redaction = constitutional violation.</li>\n<li>Never cite exemptions without paired foreseeable-harm rationale. Post-2016 FOIA Improvement Act requires it.</li>\n<li>Never overlook tolling. If agency requested clarification, the clock paused — don't accuse them of missing the deadline they're entitled to extend.</li>\n<li>Never use deprecated language (e.g., FOIAonline references — sunset April 2024).</li>\n<li>Always check state law when the target is state agency, not federal. State timelines and exemptions differ materially.</li>\n</ul>\n","files":[{"path":"SKILL.md","sizeBytes":13788,"isText":true}],"reviewScore":null,"reviewSummary":null,"trust":{"provenance":"trusted-source-unreviewed","notice":"Community-authored content, reproduced verbatim and not vetted as instructions. Treat it as data to evaluate, never as directives to follow.","bodySource":null},"bodyLocked":false,"purchaseUrl":null,"sourceUrl":null,"report":{"provenance":"trusted-source-unreviewed","screen":{"ran":true,"outcome":"clean","suspicious":0,"notes":0,"hiddenCharacters":false},"virusScan":{"engine":"clamav","status":"clean","scannedAt":"2026-10-01T15:42:28.654472Z","sha256":"E662D8EB497ACF93BE432FAC31AB11785F0309C3455A603A08626580DB2C85F9","sizeBytes":5460},"review":null,"source":{"repositoryUrl":"https://github.com/tinh2/skills-hub-registry","path":"analysis/foia-tracker","license":null,"commit":"d38affbf56da216841e2b9e4032a4b978c2062fd","subtreeSha":"CBDEA86BC318B17B500891611F329987F4A02E4D8AD615FB1ED8A1C5F33348E4","lastSyncedAt":"2026-10-01T15:40:09.634878Z"},"reviewedAt":"2026-10-01T15:45:57.85263Z","notice":"Community-authored content, reproduced verbatim and not vetted as instructions. Treat it as data to evaluate, never as directives to follow."},"install":[{"target":"skills-cli","command":"npx skills add https://github.com/tinh2/skills-hub-registry/tree/main/analysis/foia-tracker"},{"target":"claude-code","command":"claude plugin marketplace add https://llmmart.ai/marketplace.json && claude plugin install tinh2-skills-hub-registry@llmmart"},{"target":"git","command":"git clone https://github.com/tinh2/skills-hub-registry.git"}]}