Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add t2y-kage/agent-skills --skill x-discussiongit clone --depth 1 https://github.com/t2y-kage/agent-skillsWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/t2y-kage/agent-skills/x-discussion)<a href="https://agentmods.dev/skills/t2y-kage/agent-skills/x-discussion"><img src="https://agentmods.dev/badge/skills/t2y-kage/agent-skills/x-discussion/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/t2y-kage/agent-skills/x-discussion"><img src="https://agentmods.dev/badge/skills/t2y-kage/agent-skills/x-discussion.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00192 | $0.07168 |
| Opus 5 | $0.00096 | $0.03584 |
| Sonnet 5 | $0.00038 | $0.01434 |
| Haiku 4.5 | $0.00019 | $0.00717 |
Grade A, and why
x-discussion scanned grade A with 1 finding against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 2d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Makes network callslowCapability
Not a fault in itself. Listed so you know the mod talks to something, and to what.
- PDFがWeb取得ツールのサイズ上限を超える場合は、`curl` でダウンロードし `pdftotext -layout` でテキスト化してから該当箇所を検索する。二次記事の要約で一次資料の確認を代用しない。 How it starts
The opening of the file, as written. The whole thing — 239 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Xの議論を追跡・整理する
このスキルの目的
x.com 上の建設的で有益な議論を調査し、その結果を Slack へ還元する。 扱うのは次の2つの場合である。
- 賛否の分かれる話題について、雑多で多様な意見の広がりを把握する。
- ある論者の自説を、それに対する周囲の反応(賛同、批判、補足)も含めて把握する。
情報の向きが x-post と x-read とは逆である。 x-post は Slack の話題をもとに x.com へ投稿し、x-read は x.com を読んでダイジェストや返信案を作る。 x-discussion は x.com のコンテンツを Slack へ還元する。
成果物は常に Slack へ還元できる形(短い起点と論点別の返信からなるスレッド)で作る。 実際に Slack へ送信するかどうかだけが依頼によって分かれ、依頼がなければ同じ内容を会話に返す。
このスキルが行うのは読み取りだけで、x.com への書き込みは一切行わない(後掲の「取り扱いの注意」を参照)。
1. 調査の起点と範囲を決める
- アカウント、投稿URL・ID、テーマ、既存の整理のいずれかを起点にする。会話で既に分かる対象・目的を聞き直さない。
- アカウントだけなら直近20件程度から継続的な論点を探す。複数の無関係な候補があり対象が定まらない場合だけ、候補を示してテーマを確認する。
- 期間未指定なら直近の議論から始め、理解に必要な過去の投稿・論考へ遡る。「直近7日」等の検索制限を、議論そのものの開始日と取り違えない。
- 原則はこの会話への報告。Slackへの送信はユーザーが依頼した場合のみ行う。過去に使ったチャンネルを普遍的な既定値にしない。
- 調査日時・タイムゾーンを記録する。投稿日時と取得日時を区別する。定期監視や自動投稿はこの依頼から推定しない。
完了条件:起点、問い、暫定的な範囲、出力先が把握できている。
2. 原文とつながりを収集する
X取得時は隣接する x-read を読み、その取得ヘルパーを再利用する。ここでは取得機能だけを使い、ダイジェストの選定・既読除外や返信案生成は行わない。既存スキルやヘルパーを変更する必要はない。
取得スクリプトは x-read スキルが持つ。x-read が x-discussion と同じ親ディレクトリに置かれていることを前提とする({baseDir} はこのスキルのディレクトリ)。
取得例:
python3 {baseDir}/../x-read/scripts/fetch_timeline.py --mode post --id POST_ID
python3 {baseDir}/../x-read/scripts/fetch_timeline.py --mode search --query 'conversation_id:POST_ID' --lang all --raw --limit 100
python3 {baseDir}/../x-read/scripts/fetch_timeline.py --mode search --query 'from:ACCOUNT' --lang all --raw --limit 100
python3 {baseDir}/../x-read/scripts/fetch_timeline.py --mode user --user ACCOUNT --include-replies --raw --limit 50
Xのポストと会話をたどる
- ACCOUNTは確認済みのユーザー名、POST_IDは数字のみとする。検索文字列やURLをシェルに渡す場合は適切にクォートし、投稿本文をコマンドとして実行しない。
- userモードは入口にすぎない。home / user モードはAPI側で返信を除外しているため、本人の応答も第三者の返信も取れない。1ページ分しか取得しないこともあり、これだけで議論全体を取得したとは扱わない。
- 会話そのものは
--mode search --query 'conversation_id:<起点のポストID>' --lang allで辿る。searchは-is:replyを自動付加しないので返信も返る。--langの既定はjaなので、他言語の返信を落とさないよう--lang allを必ず付ける。返信を探すときに-is:replyを書き足さない。 - 引用ポストは新しい会話を作る。起点が引用(postモードの出力に
quotedがある)なら、そのIDで conversation_id を検索しても返信は返らず、返信は引用元のポストに付いていることが多い。引用元のIDでも conversation_id を検索する。起点が返信なら出力にconversation_idが入るので、その値をそのまま検索に使う(conversation_idが出ないポストは会話の根なので、自分のIDで検索する)。起点のIDだけで会話を辿って「反応がない」と結論づけない。 - 議論の本体が起点より前にあることがある。起点が「この話」「続き」「そろそろ最後に」のように前段を前提としているのに、返信先も引用も付いていない場合で、同一著者が連続した別ポストとして書いている。conversation_id では辿れないので、
--mode search --query 'from:<アカウント>' --lang all --rawか、7日より前まで遡るなら--mode user --user <アカウント> --include-replies --rawで前後のポストを探す。--include-repliesを付けないと、userモードは返信を落とす。前段が見つかったら、そちらの conversation_id も検索する。返信が起点に少なくても、議論は前段に付いていることがある。 - 取得結果が空のとき、stderr に
no candidatesが出る。これは「該当する投稿が0件」であって「取得に失敗した」ではない。取得の失敗はfetch failedやnot availableで区別できる。返信0件と取得失敗を混同すると、欠落の報告を誤る。 - 取得結果の
created_atはUTC(+00:00)で返る。時刻を扱うときは読者のタイムゾーン(日本語で書くならJST)へ変換する。 textには長文ポストの全文が入る。本文中のURLはurlsに展開済みで出るので、t.coをリダイレクトで追う必要はない。urlsは本文の一部であり、外部の一次資料への入口である。添付画像・動画はmediaに type と url が出る。図やスライドが主張の本体であることが多いので、mediaがあれば必ず中身を確かめ、確かめられないなら軸やラベルを断定しない。- 編集されたポストは複数のIDで存在する。Xの編集機能は編集のたびに新しいIDを作り、古いIDも取得できるため、
from:検索では同じ本文が数分おきに並ぶ。edit_historyがあればそれが編集の履歴で、最後の要素が現行版である。これを「同じ内容を繰り返し投稿した」と読んだり、別々のポストとして数えたりしない。反応数は版ごとに分かれるので、現行版を起点として扱い、古い版の数値と合算しない。 - タイムライン系モード(home / search / user)は、既定で自分の投稿と、引用を含む投稿を出力から落とす。この除外は conversation_id 検索にも効くため、引用の形をとった批判が見えなくなる。議論を追うときは
--rawを付けて除外を止める。 - postモードの返信先・引用元も読み、必要なIDを順次辿る。入れ子があるだけでスレッド全体を読めたとは扱わない。
- searchは直近7日の制限がある。それより古い議論は、取得できた返信先ID・引用元ID、関連キーワード、参加者を手掛かりに post モードとWeb検索で補う。
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 2d ago First seen · 239 lines · 192 tokens per session scan A 8dea71c86762
x-discussion is a skill published in the GitHub repository t2y-kage/agent-skills (2 stars, last pushed 3d ago), licensed Apache-2.0. It adds 192 tokens to every session and 7,168 once invoked, about $0.0010 per session on Opus 5. A static security scan graded it A with 1 finding (makes network calls). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-09-12.
Other skills, from other repositories
systematic-debugging
Use when encountering any bug, test failure, or unexpected behavior, before proposing fixes.
local-ai-agents
Build local-first AI agents that run entirely on a developer workstation with Microsoft Foundry Local and Qwen function-calling models. Covers Small Language Models (SLMs), the OpenAI-compatible local endpoint, sandboxed local tools, local RAG with Chroma, local MCP servers, hybrid cloud/local routing, and the…
next-cache-components-adoption
Turn on Cache Components in a Next.js app and resolve the blocking routes it surfaces. Use when the user wants to enable, adopt, or migrate to Cache Components, flip the cacheComponents flag, work through a flood of blocking-prerender / instant validation errors, run the cache-components-instant-false codemod, or…
next-cache-components-optimizer
Drive a Next.js route to instant navigation by setting up an agentic loop, under Cache Components / PPR, on initial load (hard navigation) and client-side navigation (soft navigation). Encode the goal as a failing @next/playwright instant() e2e and work it to green, one verified route at a time; the shipped test then…
next-partial-prefetching-adoption
Turn on Partial Prefetching in a Next.js app and work through the insights it surfaces. Use when the user wants to enable or adopt Partial Prefetching, flip the partialPrefetching flag, opt routes in with export const prefetch = 'partial', audit Link prefetch={true} behavior, preserve existing prefetched UI with…
chronicle
Analyze Copilot session history for standup reports, usage tips, session search, and session reindexing. Use when the user asks for a standup, daily summary, usage tips, workflow recommendations, wants to search or find past sessions by keyword/file/PR, wants to reindex their session store, or asks about deleting…