Skip to main content

dissenter

Stress-test a choice with an independent LLM view and Jev judgment (Choice, Score, or Noul). Use before giving user-facing advice, recommending, or evaluating a choice when two plausible courses exist, including low-stakes choices; skip routine execution, factual lookups, and status questions. Explicit /dissenter requests can also evaluate factual questions.

Informations de source

Dépôt
devinat1/skills
Dernière activité de la source
6 octobre 2026 à 06:34
Langue détectée de SKILL.md
anglais
Étoiles
1
Forks
0

Options d'installation

Le prompt qui vérifie d'abord la source est sélectionné par défaut. Vous pouvez passer à une commande directe ou télécharger une copie locale.

Vérifiez les fichiers source

Lisez SKILL.md et les fichiers associés affichés par SkillsMP avant de décider de l'installer.

Explorateur de fichiers
2 fichiers

Affichage de SKILL.md

SKILL.md
Instructions source · Aperçu en lecture seule
name
dissenter
description
Stress-test a choice with an independent LLM view and Jev judgment (Choice, Score, or Noul). Use before giving user-facing advice, recommending, or evaluating a choice when two plausible courses exist, including low-stakes choices; skip routine execution, factual lookups, and status questions. Explicit /dissenter requests can also evaluate factual questions.
# Dissenter Stress-test a choice without manufacturing a debate. The invoking LLM translates one question into a Jev primitive; Jev supplies the judgment and probabilities. Keep the Original view independent. Jev may agree. ## Advice gate This is the authoritative gate for every owned skill that gives user-facing advice. Apply this gate after gathering relevant context and before recommending, prioritizing, selecting, scheduling, or proposing a course of action for the user. Low-stakes choices qualify when two credible answers exist. Factual reporting, a procedure the user already chose, routine execution, and immediate safety instructions do not. Explicit `/dissenter` requests may also ask factual questions. When the gate applies, invoke `dissenter` with the decision, user's goal, and relevant evidence. Present both views without selecting a winner or default. End with one question asking the user to choose or supply another option; wait before taking an action that depends on the choice. This gate overrides local instructions to choose or advance automatically. ## Run 1. For automatic invocation, apply the **Advice gate**; otherwise answer normally. Explicit `/dissenter` requests may also ask factual questions. Gather the user's exact question, goal, and relevant evidence. Separate facts, sources, missing information, and assumptions. The LLM chooses the best format below and continues without asking the user to select or approve a format. Resolve ambiguity with the smallest reasonable assumption and state it, including the time period or meaning of vague terms when needed. Missing evidence stays missing; an assumption is not a discovered fact. 2. Rewrite the question using **Choose the primitive**. Preserve its subject, requested judgment, scope, and polarity. Before calling Jev, show the type, exact rewritten question, criteria, and assumptions. This is disclosure, not an approval stop. Check that an answer to this rewrite would answer the user's original question—not a nearby question about assessment methods, evidence quality, or whether a dissent deserves consideration. 3. Launch one independent **Original** subagent with the exact user question, shared evidence, and disclosed assumptions. Ask for direct analysis, assumptions, and tradeoffs without choosing for the user. Do not send it Jev's result or feed its answer into Jev's state. Follow the harness's delegation protocol; collect its result before reporting. If unavailable, label the Original view unavailable rather than substituting the coordinator's answer. 4. Check `TYPESAFE_API_KEY` without printing it. Load it from an already configured local secret store if available; never include keys in chat, files, or logs. Read the [TypeSafe index](https://docs.typesafe.ai/llms.txt), [HTTP API](https://docs.typesafe.ai/api.md), and chosen primitive's page below. Use the live contract; if docs are unavailable, disclose that and use a verified local contract or mark Jev unavailable. Send one question as described in **Request**. Missing key or failed call follows **Unavailable**. 5. Validate and render the returned answer according to its type. Compare the two views on the same question. Preserve agreement and uncertainty; do not manufacture an opposing view or add reasoning that Jev did not produce. ## Choose the primitive Choose by what the answer means, not just its opening word. For a compound request, choose the main judgment and disclose what is not covered instead of silently bundling unrelated dimensions. For an open-ended request, state the bounded interpretation and any LLM-proposed candidates; Jev cannot generate prose or select a candidate that was not supplied. | Answer needed | Primitive | Criteria | Returned fields | | --- | --- | --- | --- | | One of a defined set of options | [Choice](https://docs.typesafe.ai/primitives/choice.md) | Map of option IDs to complete, distinct descriptions | `choice`, `probabilities`, `confidence` | | Degree on one ordered dimension | [Score](https://docs.typesafe.ai/primitives/score.md) | 2–10 ordered, concrete level descriptions | `score`, `legend`, `probabilities`, `confidence` | | Whether a proposition is true | [Noul](https://docs.typesafe.ai/primitives/noul.md) | Optional `true`/`false` definitions of the proposition and its negation | `noul` | - **Choice:** Include every user-supplied option. When generating candidates, label them as LLM-proposed, include the original course if one exists, and include `none_fit` when no listed option may apply. Do not limit the set to dissenting alternatives. The distribution compares these options, not every possible answer. - **Score:** Define each level independently with an observable situation, not merely "low / medium / high" or a number. Keep one dimension. For N levels, the continuous score spans 0 to N−1; it is not a probability or a percentage. - **Noul:** A high value means the stated proposition is true. Its negation is not "no supporting evidence"; lack of evidence does not establish falsehood. Evaluate evidence support only when the user actually asks about evidence support. There is no separate confidence field. A value near 0.5 is uncertainty, not medium intensity. Example question objects (adapt one; do not send all three): ```json { "type": "choice", "instructions": "Which listed database best meets the application's stated requirements?", "criteria": { "sqlite": "Use SQLite as the application database.", "postgres": "Use PostgreSQL as the application database.", "none_fit": "Neither database meets the stated requirements." } } ``` ```json { "type": "score", "instructions": "How severe is the reported bug's effect on the user's workflow?", "criteria": [ "Cosmetic defect; the user can complete the workflow normally.", "The workflow is impaired, but a usable workaround exists.", "The workflow is blocked and no usable workaround exists." ] } ``` ```json { "type": "noul", "instructions": "Does the proposed migration require application downtime?", "criteria": { "true": "Completing the migration requires a period of application unavailability.", "false": "The migration can complete while the application remains available." } } ``` ## Request Prepare valid JSON in a temporary `request.json`, using a JSON serializer so user text is escaped safely. Set `model` to `jev-latest`, `state` to an object containing `user_question`, `goal`, `evidence`, `assumptions`, and any relevant options or context. Set `questions` to `{"answer": <chosen question object>}`. Fill every placeholder. All question meaning must be in `instructions`/`criteria`: question IDs are not sent to the model. Send only relevant context authorized for TypeSafe, not credentials or unrelated private material. Disable shell tracing. ```bash : "${TYPESAFE_API_KEY:?TYPESAFE_API_KEY is required}" curl --silent --show-error --fail-with-body --max-time 60 \ https://api.typesafe.ai/v1/systemone \ -H "Authorization: Bearer $TYPESAFE_API_KEY" \ -H 'Content-Type: application/json' \ --data-binary @request.json ``` Read `answers.answer`. Verify the returned type matches the request, required fields exist, and numeric values are finite and in range. Choice/Score distributions must contain exactly the supplied options/levels and sum to approximately 1; Choice's selection must be an allowed option. Score's legend must match the levels and its value must be in 0..N−1. Treat malformed results as unavailable. ## Return Use these headings, adapting fields to the selected primitive: ```markdown ## Original view [Independent subagent's direct answer, assumptions, and tradeoffs—or unavailable] ## Jev view - **Format and question:** [primitive and exact question sent] - **Criteria and assumptions:** [options, ordered levels, or proposition definition; scope] - **Result:** [Choice: selected option; Score: continuous value and scale; Noul: P(proposition true)] - **Distribution and confidence:** [Choice/Score only: all probabilities and confidence] - **Limits:** [evidence gaps, sources, and returned model name] ## Takeaways [Agreement or disagreement about the actual question; label any LLM interpretation] ## Your decision [For a decision: ask the user to choose; for a factual question: give the bounded conclusion] ``` Round displayed probabilities/confidence to whole percentages; retain raw values when checking them. Attribute them to Jev conditioned on this question, criteria, and supplied state—not verified real-world frequencies. Confidence measures concentration of the distribution, not correctness. Do not invent a confidence value for Noul or an explanation from Jev. Do not select a course for the user or act on a consequential choice without their decision. ## Unavailable If the key is missing, the request fails, or the response is invalid, write `Unavailable: [brief sanitized reason]` under **Jev view**. Keep the completed Original view and only supported takeaways. Do not fabricate probabilities or use an LLM dissent fallback. If the Original view fails, the Jev result can still be reported as a single available view, not as a completed two-view comparison. For routing and template checks, see [TESTING.md](TESTING.md). ## Incentive-check integration At the stage described below, read `${AGENTIC_HOME:-$HOME/.agentic}/skills/incentive-check/INTEGRATIONS.md` and use **Run** mode. When the decision materially relies on advice or a forecast from a named public person, assess that statement before preparing the shared evidence packet and dispatching either independent view. Label the incentive assessment as model-estimated context, keep verified facts distinct, and give both views the same relevant packet. Preserve independence, primitive choice, and the user's decision gate; assess no imagined incentives of the LLM views.
Voir sur GitHub