Skill: dimgouso/adi-decision-engine (version 0.1.0)

--- name: adi-decision-engine description: Structured multi-criteria decision analysis for ranking options with weights, constraints, confidence, tradeoff reasoning, sensitivity analysis, and explainable recommendations. Use when the user asks for decision support, MCDA, weighted scoring, prioritization, vendor selection, route planning, hiring shortlist ranking, tool comparison, procurement decisions, or auditable agent decision logic. homepage: https://github.com/dimgouso/adi-decision-engine_skill_openclaw metadata: {"openclaw":{"emoji":"⚖️","requires":{"bins":["python3"],"env":[],"config":[]},"os":["darwin","linux","win32"]}} --- # ADI Decision Engine ## Core promise Turn a messy tradeoff problem into a structured, auditable multi-criteria decision and return a ranked recommendation with confidence and explanation. ## When to use this skill Use this skill when the user needs structured decision support rather than open-ended brainstorming. Typical triggers include: - multi-criteria decision analysis - weighted scoring or option ranking - vendor selection or procurement - route planning with explicit tradeoffs - hiring shortlist ranking - tool or platform comparison - policy-driven or auditable agent decisions ## Input modes This skill supports exactly two input modes. ### 1. Structured mode The user already has a decision request with: - `options` - `criteria` - optional `constraints` - optional `policy_name` - optional evidence, confidence, or context Use [scripts/validate_request.py](scripts/validate_request.py) first if request quality is uncertain, then [scripts/run_adi.py](scripts/run_adi.py) to execute it. ### 2. Freeform mode The user provides a natural-language tradeoff problem. First use [scripts/normalize_problem.py](scripts/normalize_problem.py) to produce a request skeleton. Do not pretend the request is complete if important fields are missing. If the skeleton is not ready, ask for the missing inputs instead of inventing scores or constraints. ## Output contract If ADI runs successfully, the final answer must contain: - `best_option` - a short rationale for why it won - top-ranked alternatives - confidence summary - constraint impact summary - sensitivity or stability summary when available - explicit assumptions If the request is not complete enough to run, return a request-completion prompt rather than a fabricated ranking. ## Workflow 1. Determine whether the user input is structured or freeform. 2. For freeform input, normalize it into a request skeleton using [scripts/normalize_problem.py](scripts/normalize_problem.py). 3. Validate candidate requests with [scripts/validate_request.py](scripts/validate_request.py). 4. Run complete requests with [scripts/run_adi.py](scripts/run_adi.py). 5. Present the ADI result in clear decision-support language: - recommendation first - strongest tradeoff second - caveats and sensitivity after that ## Decision hygiene rules - Never rank options without explicit criteria. - Never silently invent hard constraints. - If criterion direction is ambiguous, stop and clarify. - Normalize vague goals into named criteria before scoring. - Prefer a small, explicit criteria set over many overlapping criteria. - Keep the policy choice visible: `balanced`, `risk_averse`, or `exploratory`. ## Output quality rules - Show the top recommendation first. - Explain why it won. - Mention the strongest tradeoff. - Call out eliminated or constraint-violating options. - Include confidence caveats when evidence is weak. - Use a compact comparison table or structured bullet list when comparing several options. ## Safety and honesty rules - No hidden math. - No fake scores. - No fabricated evidence. - Do not claim ADI ran if the runtime dependency is missing. - Do not request API keys. - Do not require network access for the core workflow. - Do not tell the user to trust the ranking if the request is under-specified. ## Runtime requirements - `python3` - either an importable `adi-decision` package or the `adi` CLI on `PATH` If the ADI runtime is unavailable, stop with a clear error and explain that the dependency must be installed locally. ## References - Request schema: [references/request_schema.md](references/request_schema.md) - Result interpretation: [references/result_interpretation.md](references/result_interpretation.md) - Policy guide: [references/policy_guide.md](references/policy_guide.md) - Use cases: [references/use_cases.md](references/use_cases.md) ## Examples - [examples/vendor_selection.json](examples/vendor_selection.json) - [examples/route_planning.json](examples/route_planning.json) - [examples/hiring_shortlist.json](examples/hiring_shortlist.json) - [examples/research_methods.json](examples/research_methods.json) - [examples/tool_selection.json](examples/tool_selection.json)

path: agents/openai.yaml
content: interface:
  display_name: "ADI Decision Engine"
  short_description: "Rank options with explainable multi-criteria decision analysis"
  icon_small: "./assets/icon-small.svg"
  icon_large: "./assets/icon-large.svg"
  brand_color: "#0B6E4F"
  default_prompt: "Use $adi-decision-engine to structure this decision problem, run ADI, and return a ranked recommendation with explanations."

policy:
  allow_implicit_invocation: true


path: assets/icon-large.svg
content: <svg width="960" height="540" viewBox="0 0 960 540" fill="none" xmlns="http://www.w3.org/2000/svg">
  <rect width="960" height="540" rx="36" fill="#F3F8F5"/>
  <rect x="32" y="32" width="896" height="476" rx="28" fill="url(#bg)"/>
  <circle cx="155" cy="108" r="12" fill="#F2C14E"/>
  <circle cx="191" cy="108" r="12" fill="#7AC9A7"/>
  <circle cx="227" cy="108" r="12" fill="#F08A5D"/>
  <rect x="84" y="148" width="338" height="278" rx="22" fill="#0E2A25" fill-opacity="0.9"/>
  <path d="M125 203H358" stroke="#7AC9A7" stroke-width="10" stroke-linecap="round"/>
  <path d="M125 253H334" stroke="#F6F9F7" stroke-width="10" stroke-linecap="round"/>
  <path d="M125 303H286" stroke="#F6F9F7" stroke-width="10" stroke-linecap="round"/>
  <path d="M125 353H234" stroke="#F2C14E" stroke-width="10" stroke-linecap="round"/>
  <rect x="462" y="148" width="414" height="278" rx="22" fill="#F7FBF8"/>
  <path d="M520 358C560 308 603 265 649 249C703 230 746 238 810 187" stroke="#0B6E4F" stroke-width="12" stroke-linecap="round"/>
  <path d="M521 320C554 329 585 326 620 301C650 279 681 266 716 270C750 274 781 295 817 333" stroke="#E07A5F" stroke-width="10" stroke-linecap="round" opacity="0.88"/>
  <path d="M522 226L522 378" stroke="#A7B8B1" stroke-width="5" stroke-linecap="round"/>
  <path d="M522 378H836" stroke="#A7B8B1" stroke-width="5" stroke-linecap="round"/>
  <circle cx="746" cy="214" r="54" fill="#0B6E4F"/>
  <path d="M746 178V250" stroke="#F6F9F7" stroke-width="10" stroke-linecap="round"/>
  <path d="M710 214H782" stroke="#F6F9F7" stroke-width="10" stroke-linecap="round"/>
  <rect x="86" y="446" width="754" height="22" rx="11" fill="#E3ECE7"/>
  <rect x="86" y="446" width="474" height="22" rx="11" fill="#0B6E4F"/>
  <text x="88" y="82" fill="#F6F9F7" font-family="Georgia, serif" font-size="36" font-weight="700">ADI Decision Engine</text>
  <text x="88" y="114" fill="#DCEBE3" font-family="Verdana, sans-serif" font-size="18">Structured multi-criteria decisions, confidence, and explainable tradeoffs.</text>
  <text x="86" y="492" fill="#E8F2EC" font-family="Verdana, sans-serif" font-size="16">OpenClaw skill bundle · deterministic ranking · MCDA · explainable recommendations</text>
  <defs>
    <linearGradient id="bg" x1="32" y1="32" x2="928" y2="508" gradientUnits="userSpaceOnUse">
      <stop stop-color="#103B34"/>
      <stop offset="1" stop-color="#0B6E4F"/>
    </linearGradient>
  </defs>
</svg>


path: assets/icon-small.svg
content: <svg width="128" height="128" viewBox="0 0 128 128" fill="none" xmlns="http://www.w3.org/2000/svg">
  <rect width="128" height="128" rx="28" fill="#0B6E4F"/>
  <rect x="18" y="18" width="92" height="92" rx="22" fill="url(#paint0_linear)"/>
  <path d="M41 43H87" stroke="#F6F9F7" stroke-width="8" stroke-linecap="round"/>
  <path d="M41 64H78" stroke="#F6F9F7" stroke-width="8" stroke-linecap="round"/>
  <path d="M41 85H67" stroke="#F6F9F7" stroke-width="8" stroke-linecap="round"/>
  <circle cx="90" cy="83" r="13" fill="#F2C14E"/>
  <path d="M90 71V95" stroke="#0F172A" stroke-width="4" stroke-linecap="round"/>
  <path d="M78 83H102" stroke="#0F172A" stroke-width="4" stroke-linecap="round"/>
  <defs>
    <linearGradient id="paint0_linear" x1="26" y1="24" x2="102" y2="104" gradientUnits="userSpaceOnUse">
      <stop stop-color="#148A63"/>
      <stop offset="1" stop-color="#0C5D43"/>
    </linearGradient>
  </defs>
</svg>


path: references/policy_guide.md
content: # Policy Guide

ADI ships with three built-in policy modes.

## `balanced`

Use when:

- the user wants a fair overall ranking
- no strong risk posture has been specified
- you want the default decision behavior

Behavior:

- moderate uncertainty penalty
- moderate missingness penalty
- no special exploration bonus

This is the default policy for most business and operational decisions.

## `risk_averse`

Use when:

- downside risk matters more than upside opportunity
- low-confidence evidence should be penalized harder
- constraint violations should be treated conservatively

Behavior:

- higher uncertainty penalty
- stronger missingness penalty
- variance penalty enabled

Good examples:

- procurement with contractual exposure
- production tooling choices
- hiring for high-accountability roles

## `exploratory`

Use when:

- the user wants broader search over unconventional options
- partial uncertainty is acceptable
- you want less aggressive constraint enforcement

Behavior:

- lower uncertainty penalty
- lower missingness penalty
- exploration bonus enabled
- more permissive constraint handling

Good examples:

- early-stage product exploration
- research methods comparison
- idea generation with structured ranking

## Policy selection guidance

- If the user does not specify a risk posture, use `balanced`.
- If the user emphasizes safety, reliability, or downside control, prefer `risk_averse`.
- If the user emphasizes discovery, optionality, or experimentation, prefer `exploratory`.

Do not hide the chosen policy. State it explicitly in the answer.


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: suspicious (MEDIUM)