Community研究&データ分析github.com

2016judea/records-request

米国政府機関から公文書を公開請求で取得するスキル。用途例:「鑑定士のモデルを請求」「データプラクティス請求」「FOIA請求」「郡庁に聞いてみよう」「請求の進捗確認」「回答があったかどうか」。ウェブサイトの事前確認、適切な窓口と法令の特定、請求が拒否されないための除外条項の書き方、ウェブフォームの落とし穴(文字数制限、SQLインジェクション対策による拒否)、催促(通常期限なし)、返却データの再利用可否、複数年にわたる表のサイレントエラー防止をカバーします。

records-request とは?

このスキルは、米国政府機関に対し公開記録請求(FOIA、州情報公開法など)を行い、特定の文書を低コストで入手するための実践的な手順を開発者・AIエージェント向けに詳細に解説しています。まず、請求前に機関のウェブサイトで該当文書が既に公開されていないかを確認することで、不要な請求と待ち時間を回避します。次に、適切な機関名(州や職種によって「Assessor」「Appraiser」「Director of Equalization」など異なる)を正確に特定し、問い合わせ先の優先順位(メール、ポータル、郵送)を設定します。最も重要なのは「除外条項パラグラフ」の作成で、機密情報を事前に除外することで、請求全体が拒否されるのを防ぎます。また、ウェブフォームに潜む文字数制限やSQLインジェクション対策による拒否といった技術的な罠を回避する方法、催促のタイミング(多くの機関に法的な回答期限がないため、主体的なフォローアップが不可欠)、入手したデータの再利用可否(事実には著作権がないが州ごとに商用利用の可否が異なる)までを網羅しています。このスキルは、Claude Code、Cursor、CodexなどのAIエージェントが公文書請求の全工程を自動化・効率化するためのガイドとして機能し、人間の最終確認を前提としつつ、エラーの無い効率的なワークフローを実現します。

対応~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/2016judea/brick-mortar-skills/tree/HEAD/skills/records-request

Installed? Explore more 研究&データ分析 skills: affaan-m/uspto-database, affaan-m/scholar-evaluation, affaan-m/literature-review · View all 6 →

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

記録請求

目標: 指定された文書を低コストで入手し、後でさらに情報を得たい役所を煩わせないこと。完了 = ファイルがディスク上にキャッシュされ、その出典と権利状況が記録されていること。または、書面による「当方には該当文書はありません」という回答(これでファイルは閉じられ、それも成功です)。

関門: 人間が送信する。 草案を作成し、受信者を確認し、ファイルに保存し、「下書き」と明記して止める。CAPTCHAと署名チェックボックスがあるポータルは、常に人間が操作するしかありません。


ステップ0 — まずウェブサイトを読む。これが最も安価なルール。

何かを起草する前に、機関自身のサイトで文書を探す。

公表された料金表は、その機関がよく請求を受けている証拠であり、回答に費用がかかる証拠ではない。 ある郡は、その資本化率調査を年間34.50ドルで販売していると報告されていたが、統計ページで同じものを4年分無料で公開していた。1回のページ取得で、費用と3週間の待ち時間を節約できた。

次に隣接機関を確認する。州機関は郡が公開しない集計値を公開することがある(ただし、実際にカバーしている範囲を読むこと — 州の「キャップレート調査」は州評価の公益事業・鉄道財産のみをカバーしている可能性がある)。そして否定を適切に確認する。機関の公開レポートで自分の検索語を検索する。その否定が、請求を唯一のルートにするものである。

ステップ1 — 機関を見つけ、その名称を正しく把握する

同じ機関でも州によって呼び名が異なる。 間違った組織に書いても何も返ってこない。商業用不動産評価の場合、例えば:

州商業用不動産を評価する機関
MN, IA, NE郡 Assessor(評価官)
KS郡 Appraiser(鑑定士)
ND郡 Director of Tax Equalization(税均衡局長)
SD郡 Director of Equalization(均衡局長)
WI郡の評価官はいない — 評価は市町村が行うので、市に書くこと

また、一部の州では大都市を郡の評価官に含める(アイオワ州:ポーク郡はデモインをカバー)が、そうでない州もある(ノースダコタ州:ファーゴとカス郡は別)。

連絡手段の優先順位: メール、ポータル、郵送。

  • メール アドレスが存在する場所ならどこでも。機関自身のページで確認すること。
  • ポータル (GovQA, NextRequest) は、アドレスが公開されていない場合のみ。ポータルはアカウント、CAPTCHA、拘束力のある署名チェックボックスに人間が必要。
  • 郵送 は最後の手段。下書きのヘッダーにフォールバックとして記載すること。

一部のページはスクリプトでレンダリングされ、curlでは有用なものが返ってこない。Pythonでタグを除去し、@を検索する。本当にアドレスがない場合は、推測せずにその旨を伝える。

ステップ2 — 除外条項パラグラフが請求全体の鍵

機密性の法令を自ら指名し、それを手紙の中で否定する。 そのパラグラフがなければ、請求は全面的に拒否される。なぜなら、機関が反射的に手を伸ばすのが機密性条項だからだ。これがあれば、問題は「これを公開できるか」から「当方のどの表をご希望ですか」に変わる。

機関が自ら作成した、郡全体のスケジュールと調査のみを請求し、区画レベルや所有者を特定できるデータは含まず、所有者が提出した部分が編集された混合文書があればそれを受け入れる用意があることを伝える。

評価官請求で成功した規定(現行法との整合性を確認すること):

州請求根拠除外条項
MNMinn. Stat. 13.03 subd. 313.51 subd. 2 — 所有者提出の収入/支出、空室率、賃貸可能面積、リース
KSK.S.A. 45-215 et seq. (管理者: 45-218)45-221(b) — 鑑定士に提供された納税者の財務情報
IAIowa Code ch. 2222.7 営業秘密 — さらに441.21(3)(a)を引用。これは方式または方法の開示を積極的に要求するもの。加えて441.19(1)(a)
NENeb. Rev. Stat. 84-71284-712.05(3) 営業秘密/所有権
NDN.D.C.C. 44-04-1844-04-18.4 営業秘密/商業
SDSDCL 1-27-1その州の評価官機密性相当規定

法令が開示を義務付けている場合は、それを引用する(上記アイオワ州):機密性の反射的反応を完全に排除する。

一度受け入れられた文言は言い換えない。 ある機関があなたの文言を受け入れたら、名前だけを変えて同じ文言を同種の機関に対してそのまま再利用する。言い換えた文言は、追加の範囲確認を招く。そのパラグラフが一括編集を生き延びたかどうかを、受け入れられた原本とハッシュを比較して確認する。

ステップ3 — 最初の手紙に必ず入れる3つのこと

  1. 1年ではなく5年分を請求する。 「2022年から2026年を含む評価年度。」 機関にとって同じ検索で5倍のデータ — そして系列はしばしば成果物そのもの(機関が自社のレートをどのように変更したかを示す)。さらに追記:「お手元にある年分をお送りください。一部の回答でも有用です。」 これにより、欠落した年が返答を遅らせない。
  2. 安価な出口を提供する。 「もし局がこの種のスケジュールを管理していない場合、その旨を一行でお知らせいただければ、これで終了とし、以後フォローアップしません。」 書面による否定はファイルを閉じるものであり、拒否の手紙を書く代わりに30秒で済む。
  3. まず費用の見積もりを尋ねる。 「これの作成に費用が発生する場合は、まず見積もりをお知らせください。その上で請求を絞り込みます。」 一部の機関は、所在確認と編集の両方に時間単位で請求する — 2つのメーターが同時に動く。

ステップ4 — 一括送信の前に

  • すべての受信者ドメインのMXレコードを確認する: dig +short MX <domain>。19件のバウンスが発生する前にタイプミスを発見できる。
  • 一通の本文全体を最初から最後まで読む。 差分ではなく、手紙そのものを。
  • キャンペーン全体で請求者の身元を統一する(同一人物または同一会社、同一住所)。返信がスレッド化され、誰が誰だか聞き直されないようにする。
  • プレーンテキストで送信する。 ハードラップされた手紙はHTMLで崩れる。

ステップ4b — ウェブフォームは敵対的なチャネルである。2つの罠に備えよ。

  1. 知らされない文字数制限。 メッセージフィールドは、2,000文字の本文を1,000文字で静かに切り詰める可能性がある。すべてのフォームに対して、最初から短いバリアントを用意する:法令引用、年範囲を含む依頼、機密性免責条項、費用見積もり依頼行、連絡先。免責条項が最後に削るもの。

  2. ペイロード全体を拒否するWebアプリケーションファイアウォール (Event Type: signature)。原因は文字数ではなく句読点:裸のアポストロフィは標準的なSQLインジェクションのシグネチャである。 本文および件名から、' " ( ) & / ; = < > -- および非ASCII文字を削除する。&の代わりに「and」と書き、法令の細分箇所は括弧で囲まずに削除し、「the Office's」の代わりに「your Office derived」と言う。コードで監査する:

    python3 -c "s=open('body.txt').read(); print({c:s.count(c) for c in "'\\\"()&/;=<>" if c in s})"
    

始める前にフォールバックを知っておく: メールを隠す機関でも、住所は公開している。3回も抵抗するフォームは4回目に値しない。郵送する。

ステップ5 — 送信記録を残す。さもなければそれはなかったことになる。

法定件名を維持する — 記録管理者はそれでルーティングし、返信はその下でスレッド化される。各下書きのヘッダーを NOT SENT から SENT <日付> from <アドレス>, messageId <ID> に変更し、本文をそのまま記録として下に保持し、トラッカーを更新する。一括編集が触れた行はすべて再確認する:ステータス列に対するグローバルな検索置換は、未送信のウェブフォーム行を喜んでSENTとしてマークする。

ステップ5b — 添付ファイルが必要な返信

一部のメールMCP(例:Zoho)には添付ファイルアップロード機能がない。その返信は、同じアドレスからトランザクションプロバイダー(例:Mailgun)を通じて送信し、h:In-Reply-To と h:References を機関のメッセージIDに設定して機関のメッセージにスレッド化し、件名を維持する。curlを使用する場合、すべてのヘッダーと本文フィールドに --form-string を使用する — -F は <(すべてのMessage-ID)または @ で始まる値を「このファイルを読み込め」として扱う。プロバイダーのイベントAPIから配信を確認する。

機関自身のフォームは通常、そのウェブサイトにある。 それがフラットなPDFの場合は、reportlabでテキストをオーバーレイし、詳細な仕様は2ページ目に置き、送信前にページをPNGにレンダリングして確認する(テキストがラベルの上に重なることは想像以上に多い)。

フォームを返送するときは範囲を絞る。 料金警告は、既に保有しているデータを伝え、残りの部分のみを請求し、まず見積もりを依頼するタイミングである。

入力データを名指しするソフトノーは、派生テーブルに対するノーではない。 「私たちはレンタル調査からのデータを使用しており、これは機密です」という回答は、機密の入力を指し示すことで1つの項目に答えており、派生調査をスキップしている。スキップされた項目をイエス/ノーで再度尋ね、感謝し、再び一行での出口を提供する。礼儀正しく保つ:この機関から次の回答も得たいのだから。

ステップ6 — 催促する。なぜなら通常期限がないから。

短い時計はたいていあなたのものではない。 ポータルの「10営業日」は、データ主体が自分自身について尋ねる場合にのみ適用されることがある。政府データに対する一般的な請求は、通常「合理的な時間」(例:Minn. Stat. 13.03 subd. 3)とされ、これは全く時計を設定しない。フォローアップが唯一の圧力である。 送信日に約2週間後の催促をキューに入れる(pending-queue フックを参照)、その中に参照番号、ポータルパス、指名された連絡先、および「請求を言い換えないでください」を含める。催促は状況確認である。フォローアップで決して範囲を変更しない。

ステップ7 — 返ってきたものは再公開できるか?

これに基づいて何かを構築する前に、この質問に答える。

  • ミネソタ州: はい。商用利用も含む。 機関は「反対の具体的な法定権限がない限り、商業目的であっても、そのデータの無制限の使用を許可しなければならない」 — MN Attorney General意見書852 (1995)。
  • どこでも: 事実には著作権はない (Feist) — 特定の選択または配列のみが著作権対象となり得る。数字は再公開しても、その文書のレイアウトは決して再公開しない。 自身のスキーマに再表現する。
  • その他の地域では、利用部分は未確定である。 その州の商用利用条項を主張する前に読み、自身のファイルを正直にマークする(「再公開未承認」はあなたのマーカーであり、機関の制限ではない — それを制限として引用しないこと)。

ステップ8 — 到着したものを解析する

sha256と正規URLとともに、解析出力の隣に原本をキャッシュし、決して再取得しない。

ラベルは年ごとにずれる。 ある郡の独自の行ラベルは、4枚の年間シートにわたって22, 22, 18, 18と変化し、物件タイプが消えた。クロスウォークを手書きし、すべてのレコードに生のラベルをそのまま保持する。決してファジーマッチングを行わない — それにより、間違った数字が正しく見えて出荷される。消えたタイプは欠落であり、ゼロではない。

pdftotext 出力に対する正規表現で構造がわかると信じてはいけない。 文字クラスが数字を欠いていると、Warehouse <25% Office / >20K が 2 で切り詰められ、4行が2行に静かにマージされる。抽出を信じる前に、ソースに対して行数を確認する。

網羅性を売り込む前に、クロスソース結合をソース#2で証明する。 同じ州の同じ文書タイプの2つの郡が、まったく同一の物件タイプ名を共有することはあり得ない。

Individual skills in this repo

This repo contains 7 individual skills — each has its own dedicated page.

2016judea/ascii-charts

Build charts as plain Unicode-block text — bar, range, bullet, gap-bracket, star-histogram, heatmap, line, Venn, pie, donut and scatter — with a dependency-free Python script, for anywhere only monospace text survives (newsletter code blocks, Markdown, terminals, plain-text email, chat). Use when a chart has to embed as literal text instead of an image or a third-party chart service, or when you want a hand-made terminal look with no branding footer.

2016judea/buffett-checklist

Apply Warren Buffett's investment framework as a discipline lens when weighing a buy, hold, or sell decision — circle of competence, economic moat, owner earnings & intrinsic value, margin of safety, management/capital-allocation quality, and market psychology (Mr. Market, fear vs greed, temperament). Use when asked to "run this through Buffett", "what would Buffett say", "does this pass the moat test", "is this cheap enough", or for a second, more skeptical read on a name being evaluated or already held. This is a discipline overlay, not a replacement for a strategy — it applies the Buffett lens to how someone actually invests, rather than issuing generic advice.

2016judea/image-riff

Turn one or more reference images into original art in that reference's own visual language, then cut it to whatever surface it's for. Use when you paste or point at art and say "use this as the base image", "generate art from this", "riff on this", "some creative ideation with these images", "make me a channel banner / avatar / cover / plate", "wilder version of this", or want a spread of options off one piece of reference. This is the TASK skill; the engine is the `make-art` tool skill.

2016judea/leonardo

Draw the way Leonardo da Vinci drew — a study sheet, a notebook folio, a red-chalk or silverpoint study, a machine cutaway, a storm of vortices — in his real materials and page-logic, generated with the make-art engine and anchored on fifteen of his actual (public-domain) sheets. Use when you say "Leonardo", "da Vinci", "like his notebooks", "a codex page of X", "draw this as one of his study sheets", "sanguine", "silverpoint", or wants a design, diagram, or illustration in that hand. Also a reading guide to his notebooks (Richter's 1883 public-domain translation) for "what did Leonardo say about shadow / trees / water". This is a TASK skill; the engine is `make-art`.

2016judea/mcp-stack

Which free MCP server or framework to reach for, and its traps — finance/gov data (SEC EDGAR, Yahoo, SAM.gov, USAspending), web research (Exa, Firecrawl, Crawl4AI, Jina reader), design/art/brand (Canva, Inkscape, Penpot, Figma, Orshot, Hugging Face image gen, vectorizing, charts), data/spatial (DuckDB spatial, live ArcGIS layers, OpenStreetMap/Overpass, Census, MapLibre), and ops (PostHog, iMessage, context7 docs). Use when making a social post, OG card, poster, logo/vector, chart, map, or brand asset; when querying parquet/geojson/duckdb or a city's open-data layer; when an MCP "needs authentication" or fails; or when asked "what tools do we have", "is there an MCP for X", "should we add X".

2016judea/sms-native-product

Build a product whose interface is text messages rather than an app or a website — "no app, no website", "they just text a number", "chat with our agent natively in Text Messages", "can we do this over text", "an SMS bot", "a Telegram bot", "make it a group chat", "minimum viable friction". Fires equally when it has already gone wrong — "my campaign got rejected", "our number is blocked", "the texts aren't arriving", "why do I need to register". Covers the gate that decides whether such a product can send at all (US A2P 10DLC registration, SHAFT content rules, permanent rejection codes), group MMS from code, what each channel can't do, an architecture that survives losing the channel, and guarding model-rewritten user content.

2016judea/vertical-market-agent

Build a chat agent that knows one industry in one metro better than any general model because it carries a precomputed digest of real public records (or a mined review corpus) and can pull live records mid-conversation — finding the moat, building a byte-stable substrate, enumerating what the records can't, the data traps that produce plausible wrong numbers, deterministic math in tools, measured prompt cost and cache TTL, shipping as an ad destination, an off-sector ending, and a precomputed spatial "what is this next to" layer. Use when building a vertical AI agent grounded in records rather than general knowledge.

関連スキル