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 agentmods add skills/cirwel/unitares/dialectic-reasoningnpx skills add cirwel/unitares --skill dialectic-reasoninggit clone --depth 1 https://github.com/cirwel/unitaresWrote 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/cirwel/unitares/dialectic-reasoning)<a href="https://agentmods.dev/skills/cirwel/unitares/dialectic-reasoning"><img src="https://agentmods.dev/badge/skills/cirwel/unitares/dialectic-reasoning.svg" alt="Measured on agentmods" 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 | $0.00049 | $0.02548 |
| Opus 5 | $0.00024 | $0.01274 |
| Sonnet 5 | $0.00010 | $0.00510 |
| Haiku 4.5 | $0.00005 | $0.00255 |
Grade A, and why
dialectic-reasoning 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 5d 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 — 253 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Dialectic Reasoning
When Dialectics Happen
A dialectic session is useful when:
- You receive a pause or reject verdict and want to contest it
- You call
request_review()for peer or model-assisted verification - You find something that contradicts the knowledge graph
- A high-stakes decision needs structured verification before proceeding
Dialectics are not punishment. They are a structured way to resolve disagreements using evidence and negotiation. In current UNITARES language, think of them as structured review more than "recovery court."
Phase 1: Thesis
The paused agent submits their position (the protocol rejects a thesis from anyone else):
dialectic(
action: "thesis",
session_id: "<session-id>",
reasoning: "Why I should resume / why my position is correct",
root_cause: "What went wrong or what triggered this",
proposed_conditions: ["Concrete, measurable condition 1", "Condition 2"]
)
One-call review (the friendly default)
You do not have to learn the request→thesis protocol first. The friendly
request_review tool reuses issue_description as the thesis when no separate
thesis fields are supplied, so a complete review brief is actionable as-is:
request_review(
issue_description: "What you want verified, your position, and the evidence"
)
Pass reasoning (and optionally root_cause / proposed_conditions) when the
position should be distinct from the subject. Pass use_brief_as_thesis=false
for a neutral request that deliberately waits for a later thesis. The raw
dialectic(action="request") path preserves that two-call default unless you
pass thesis fields or use_brief_as_thesis=true.
For a session already waiting in the thesis phase, reuse what the server saved instead of copying it back:
dialectic(
action: "thesis",
session_id: "<session-id>",
use_brief_as_thesis: true
)
Recovery sessions still require at least one concrete proposed_condition;
manual review sessions may let the reviewer propose conditions if needed.
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.
- 5d ago First seen · 253 lines · 49 tokens per session scan A 3f7388c441c1
dialectic-reasoning is a skill published in the GitHub repository cirwel/unitares (4 stars, last pushed today), licensed Apache-2.0. It adds 49 tokens to every session and 2,548 once invoked, about $0.0002 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
adk-agent-builder
Builds ADK (Agent Development Kit) Python agents: LLM agents with tools, graph workflows of function and agent nodes, conditional routing, fan-out and join, schema-validated delegation between agents, human-in-the-loop pauses, and pytest coverage for all of it. Use when asked to create an agent or a workflow, add a…
adk-style
Python style and codebase conventions for ADK (Agent Development Kit): private-by-default file visibility, imports, type hints, Pydantic v2 models, formatting, docstrings, logging, async I/O, file and test layout, and unit test structure. Use when writing or editing ADK source or tests, deciding whether a new file or…
adk-verify-snippets
Checks that every Python code block in a Markdown file actually compiles and runs, by extracting each block to a temporary file, executing it in an isolated subprocess, and writing a pass/fail report with per-snippet coverage. Use when the user asks to verify, test, or validate the code samples in a README, a guide…
adk-setup
Sets up a local ADK Python development environment in a git clone of the open-source adk-python repository: a uv virtual environment, all dependency extras, pre-commit hooks, and a first unit-test run. Runs only when explicitly requested, never on its own. Use when asked to set up, bootstrap, or repair a development…
python-optimizer
Python code performance optimization specialist.
building-streamlit-custom-components-v2
Builds bidirectional Streamlit Custom Components v2 (CCv2) using st.components.v2.component. Use when authoring inline HTML/CSS/JS components or packaged components (manifest assetdir, js/css globs), wiring state/trigger callbacks, theming via --st- CSS variables, or bundling with Vite / component-template v2.