pending-questions

pending-questions is a skill for Claude Code, Codex from sonichi/sutando. It costs 51 tokens per session (2,596 once invoked), scanned A, original, MIT.

A skill for tracking questions that need the project owner's decision. It stores each question in a shared database and can ask, list, close, or remind about those questions.

In plain words
What is it for?
Recording a question with context, urgency, priority, or a default action; checking pending questions; and handling answered or closed questions.
Why use it?
It prevents work from being blocked by forgotten decisions and makes it clear what the owner still needs to answer.

Skill for Claude CodeCodex

Written for no agent in particular: nothing here depends on one.

Good fit Recording a question with context, urgency, priority, or a default action; checking pending questions; and handling answered or closed questions.

Compare 6 skills from other repositories ↓
Install with agentmods
npx agentmods add skills/sonichi/sutando/pending-questions
Install

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.

Any agent
npx skills add sonichi/sutando --skill pending-questions
Clone the repo
git clone --depth 1 https://github.com/sonichi/sutando

Made for: Claude Code, Codex.

Wrote 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.

agentmods badge for pending-questions

README.md
[![agentmods](https://agentmods.dev/badge/skills/sonichi/sutando/pending-questions/github.svg)](https://agentmods.dev/skills/sonichi/sutando/pending-questions)
Your own site
<a href="https://agentmods.dev/skills/sonichi/sutando/pending-questions"><img src="https://agentmods.dev/badge/skills/sonichi/sutando/pending-questions/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.

agentmods 80×15 button for pending-questions

Your own site · 80×15
<a href="https://agentmods.dev/skills/sonichi/sutando/pending-questions"><img src="https://agentmods.dev/badge/skills/sonichi/sutando/pending-questions.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 51 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 2,596 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. A grade says what 26 rules found in the file — not that it is safe.
Origin original No closer match found in the catalogue.
Token cost

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.

ModelPer sessionOnce invoked
Fable 5.1 $0.00051 $0.02596
Opus 5.5 $0.00020 $0.01038
Sonnet 5.5 $0.00010 $0.00519
Haiku 4.5 $0.00005 $0.00260

Measured today against content hash 4e9f165a2cc4, method: parsed. Prices are Anthropic first-party input rates as of 2026-10-07, from the pricing page.

Security

Grade A, and why

pending-questions 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 today.

The scan reads SKILL.md. This mod also ships 10 executable files (hooks/compact-carry.py, scripts/pending_questions_ask.py, scripts/pending_questions_compat.py, …), listed below but not scanned — reading those needs a real analyzer, not pattern matching.

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.

skills/pending-questions/SKILL.md · 156 lines

How it starts

The opening of the file, as written. The whole thing — 156 lines — stays where its author put it; the contents beside it link to each section on GitHub.

pending-questions

One CLI over the owner's pending questions, and the one store behind them: the "Pending questions" database in the owner's room. Each question is a row carrying its Host; a host reads and writes only its own rows, and the owner sets a row's Status himself (code never writes it — its own marks live in the Recovery and Closed cells).

The room is PENDING_QUESTIONS_ROOM: env, then this manifest's config, then the host's <workspace>/state/pending-questions-room; unset, the owner's DM. Point every host of the owner at one room shared by him and all his Sutandos. The collab service is the room capability's own, unless PENDING_QUESTIONS_COLLAB_URL names one (env, then this manifest's config, per skills/MANIFEST.md); the adapter's room_store(..., collab_url=) is the CLI tier above both.

python3 skills/pending-questions/scripts/pq.py ask "<question>" [--context "<why / options>"] \
    [--task-file <workspace>/tasks/<task>.txt] [--urgency live|durable] \
    [--default-action "<what Approve does>" --reason "<why>"] [--option "Hold=wait"] \
    [--priority High|Medium|Low]
python3 skills/pending-questions/scripts/pq.py list [--json]
python3 skills/pending-questions/scripts/pq.py reconcile
python3 skills/pending-questions/scripts/pq.py resolve <ask-id> [--answered]
python3 skills/pending-questions/scripts/pq.py remind [--force]

Trigger: any time you would write a question for the owner into terminal or summary text, file it instead with ask (or scripts/ask-owner.py; add --unless-open to file nothing when an open row already has that question — it reports already open: [<id>]). The terminal and a compaction summary reach no one. This skill's hooks/compact-carry.py keeps owner questions out of compaction summaries and, after one, has the core file any never-asked question it carried; session-state.md shows only the count (python3 src/pending_questions_reader.py summary).

  • ask queues the question to the owner (the task's conversation only for an owner-tier task in his DM; otherwise his DM), saves it to the outbox, writes the row born with its **Sent:** record, and once that exact row is confirmed complete commits the store-history marker and THEN deletes the outbox file — a marker that cannot be written keeps the file (history: FAILED in the report) so the local evidence outlives the failure. Only after that confirmation does it reconcile the older backlog. Room subprocess calls share one operation budget (90 seconds by default), so failures cannot renew the timeout for each older question; the held entries remain for a later explicit reconcile. The shared reconcile pass applies that budget to every caller, including pq reconcile and reminders. Resolving an answer shares it across reconciliation and the row close. If the outbox cannot hold the question, NO row is written: the owner is still asked, and the report says nothing holds it. Read the output: a FAILED line is not an ask. Then continue; never block.
  • list is READ-ONLY — it writes no file, not even the history marker — and lists each ask id in exactly one bucket, by precedence: a terminal or locally closed row is done; a complete open row waits; an open row whose body has not landed is stood in for by its held entry; a held entry with no row waits, marked (not yet in the room), or is done when closed locally; a local close naming neither is closed locally; its row is not in view yet (neither open nor done, pending_close in count). When the room cannot be read it prints pending questions: UNKNOWN — room unreachable (…) and only what is held locally; it never prints a zero it did not measure. Once a row of this workspace was ever confirmed (written, replayed, ingested or observed by a reconcile), a room that cannot be reached is an outage, not an empty outbox — whatever became of the one-time introduction message.
  • reconcile is the explicit pass: outbox replay, local close records, stale marks, the transitional legacy ingest, and the history backfill for rows that predate the marker. Legacy ingest refuses an archive boundary hidden by damaged Markdown before creating rows or marking source entries moved; it reports the affected line numbers. Every step commits the history marker before it releases local evidence (an outbox entry, a close record, a legacy file entry), and keeps that evidence when the commit fails. ask and remind run it; list does not.
  • resolve closes a row as Resolved (or Answered with --answered). It never reopens a closed row. When the room cannot be written, the closure is recorded locally (<outbox>/closed/<ask_id>.json) and applied by the next reconcile — but only for a question the outbox holds, or in outage mode (a row was confirmed here before); an unknown id with neither is refused and changes no count. The replay retires a local close only once its row is closed (or seen closed) AND complete — its body landed; a row the store view does not show is ambiguous and an incomplete one is still being filed, so in both cases the record stays and reconcile reports it.
  • remind is the only way a reminder is sent (src/check-pending-questions.py --notify with this skill's adapter). Nothing is scheduled, and no pass surfaces questions: the owner is asked once, as questions come up, and reminded when he asks.

Read the full file on GitHub · 156 lines

Changes

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.

  1. today Changed · +7 lines 4e9f165a2cc4
  2. 3d ago Changed · +7 lines 08b30d190ead
  3. 13d ago First seen · 142 lines · 51 tokens per session scan A c165569b6483

Subscribe to this mod's changes

pending-questions is a skill published in the GitHub repository sonichi/sutando (397 stars, last pushed today), licensed MIT. It adds 51 tokens to every session and 2,596 once invoked, about $0.0002 per session on Opus 5.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-10-04.