Getting it into your agent
This one installs as part of its plugin. Adding the marketplace and installing the plugin brings it with everything else the plugin ships.
/plugin marketplace add PouLJenny/trundle/plugin install trundleWrote 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/pouljenny/trundle/discuss)<a href="https://agentmods.dev/skills/pouljenny/trundle/discuss"><img src="https://agentmods.dev/badge/skills/pouljenny/trundle/discuss/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/pouljenny/trundle/discuss"><img src="https://agentmods.dev/badge/skills/pouljenny/trundle/discuss.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.00290 | $0.04873 |
| Opus 5 | $0.00145 | $0.02436 |
| Sonnet 5 | $0.00058 | $0.00975 |
| Haiku 4.5 | $0.00029 | $0.00487 |
Grade A, and why
discuss scanned grade A with 0 findings 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 10d 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.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 174 lines — stays where its author put it; the contents beside it link to each section on GitHub.
trundle discuss
把当前对话变成 host(正在读本文件的你)+ 其他 CLI agent 的回合制群聊。用户是参与方,不是审批人。产出物是讨论过程本身,不是最后那份文档。
本文件是壳:只管进入/退出、机械执行和渲染。每轮「谁发言、喂什么、怎么收尾」的裁量由 moderator(一个独立的 CLI agent,见 protocol/moderator.md)产出计划,我照计划执行。我自己的发言在计划的 host_say 划定的边界内展开——那是指引不是讲稿,话由我自己说:我是讨论的当事方,不是传声筒。
路径约定:下文 <SKILL> 指本文件所在目录(Claude Code 软链安装下是 ${CLAUDE_SKILL_DIR},plugin 安装下是 ${CLAUDE_PLUGIN_ROOT}/skills/discuss;其他 host 没有这些变量,就是你读到本文件的实际目录),<SCRIPTS> 指 <SKILL>/scripts。主 host 是 Claude Code(行为已验证);其他 host 先读 references/hosts.md 的机制映射与支持状态。
铁律
- 用户是参与方,不是审批人。 不向用户「提交」结论等批准,而是向用户提问。
- 默认一轮只有我说话。 拉人是例外——这条裁量由 moderator 执行,但它同时是我在降级模式下的行为底线。
- 辅助 agent 全程只读。 API 参与者天然满足(它够不到文件系统),其余四个 CLI: codex 走
--sandbox read-only,gemini 走--approval-mode plan,claude 走工具白名单--allowedTools Read,Glob,Grep,dsh 走DSH_PERMISSION_MODE=read-only(它没有只读 flag,只读靠环境变量,而且它的默认值是可写的——脚本强制覆盖用户环境,不随环境变量放宽)。永不给写权限。moderator 自己也是子进程,同样只读。 - 产出物是讨论过程。 除非用户明确要,结尾不生成规格文档、不写"最终方案"。
- 子进程无状态。 每次调用把需要的上下文完整塞进 prompt——它不记得上一轮。moderator 也一样:它每轮从 transcript 重建判断。
一个回合(壳的机械循环)
用户发言后:
- 组装本轮输入,写进临时文件,五段(格式见
protocol/moderator.md的「输入」): 【名册】本轮实际阵容(「这轮别带 X」在这里生效)/【共识状态头】/【讨论记录】/【主持人立场】我对议题当前的立场或内心状态,如实写,包括没把握的部分/【用户本轮消息】原话 - 跑 moderator:
python3 <SCRIPTS>/moderate.py --input <文件>。必须允许它跑满 600s——它的总预算是 590s(含一次重试),要让它先于 host 的命令超时开枪(Claude Code:Bash 工具timeout显式设600000,默认 120s 会误杀;其他 host 见references/hosts.md)。 - 照计划执行:输出里
===EXEC===给出的 invoke.sh 命令原样执行(同样 timeout 600000);「本轮无外部调用」则跳过。===WARN===里的 soft 违规如实转告用户,不隐瞒。 - 渲染所有发言(见「渲染」),然后我在
host_say的边界内发言。 - 收尾按
closing:user_question→ 以那个问题结束回合;fact_verdict→ 我当轮就去查/去跑,结果以[事实裁定] <结论>(host 实测,第 N 轮)追加进 transcript 并告知用户——把事实问题推给用户是失职;none→ 不追问。 - 记账:按
transcript_delta.append追加 transcript(direction_change非空则先插── 方向变更:X → Y(用户,第 N 轮)──),打状态行。
回合内不中途问"要不要继续"。moderate.py 退出码非 0 → 走「降级模式」。
降级模式
moderator 缺席时(moderate.py 退出码非 0:没装任何可用 CLI、超预算、两次都产不出合法计划),明说一行,例如:moderator 缺席(codex 未安装)· 本轮由我自行主持,然后我自己读 <SKILL>/protocol/moderator.md,按同一套裁量规则在脑内产出本轮计划,再照常走机械循环的 3-6 步。
What ships with it
16 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
- agents.yaml 25 KB
- protocol/moderator.md 8.4 KB
- references/adapting-api-model.md 8.9 KB
- references/adapting-new-cli.md 9.3 KB
- references/hosts.md 3.0 KB
- references/invocation.md 14 KB
- references/prompt-kit.md 3.9 KB
- scripts/discover.sh 2.8 KB runs code
- scripts/install.sh 931 B runs code
- scripts/invoke.py 84 KB runs code
- scripts/invoke.sh 1.1 KB runs code
- scripts/moderate.py 14 KB runs code
- scripts/plan_check.py 7.2 KB runs code
- scripts/plan_fixtures.py 14 KB runs code
- scripts/selftest.py 50 KB runs code
- scripts/verify.sh 6.6 KB runs code
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.
- 10d ago First seen · 174 lines · 290 tokens per session scan A e2ab33418d96
discuss is a skill published in the GitHub repository PouLJenny/trundle (2 stars, last pushed 19d ago), licensed Apache-2.0. It adds 290 tokens to every session and 4,873 once invoked, about $0.0014 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other skills, from other repositories
agent-harness-fault-injection
Use when an agent workflow needs deterministic recovery evidence for sandbox, MCP/tool, worker, checkpoint, memory, or orchestration failures.
oma-scholar
Scholarly research companion using Knows sidecar spec (.knows.yaml). Generates, validates, reviews, queries, and compares structured research-paper sidecars, and fetches them from knows.academy. Use for academic literature search, survey synthesis, paper authoring assistance, and peer review with token-efficient…
oma-hwp
Convert HWP / HWPX / HWPML files to Markdown using kordoc. Extracts text, headings, tables, lists, images, footnotes, and hyperlinks. Use for Korean word processor files (Hangul), government documents, and AI-ready data preparation.
compare-harnesses
Diff two scaffolded harnesses (ADR-031). Reports manifest meta drift + host list + per-file fingerprint changes (added/removed/changed). Exits 0 IDENTICAL, 1 DRIFT, 2 missing manifest. Use --bundle for the ADR-031 schema-1 JSON envelope.
engineering-mission-playbook
Use when planning or replanning engineering missions that create, change, port, migrate, integrate, or preserve durable codebase behavior across UI, API, CLI, background jobs, data/migrations, libraries, or operator workflows. Defines investigation, scope inventory, coherent VAL- contracts, evidence floors…
ads-launch
Draft or explicitly apply a paid-ad campaign launch through Claude Ads capability-gated adapters. Use for campaign creation, launch plans, publishing ads, activating campaigns, uploading creative, or requests to push a campaign live.