Tier 4

wsib - What Skill Is Best

WSIB - What Skill Is Best

Input: $ARGUMENTS


Core Principles

  1. Best means best NOW, not best in general. The right skill depends on current state — what’s already been done, what’s blocked, what the user knows. A skill that’s perfect for step 3 is wrong if you’re at step 1.

  2. Intent over keywords. “I’m stuck” might need /diagnose, /sbfow, /how, or /emotion depending on what kind of stuck. Match the underlying need, not the surface words.

  3. One skill, not a workflow. WSIB picks ONE skill. If the user needs a sequence, route to /fonss. The temptation to recommend three skills “just in case” dilutes the recommendation.

  4. Confidence must be calibrated. HIGH means “this is clearly the right skill and alternatives are substantially worse.” MEDIUM means “this fits but a close competitor exists.” LOW means “best guess but the intent is ambiguous.” Don’t default to HIGH.

  5. The runner-up is diagnostic. If the runner-up is from a completely different category than the best, the intent is probably ambiguous and you should say so. If runner-up is in the same category, your pick is probably right.

  6. Fallback is not second-best. The fallback is what to run IF the best skill fails or produces weak output. It’s a recovery route, not a preference ordering.


Phase 1: Intent Extraction

Parse the prompt into structured intent:

[W1] SURFACE_REQUEST: [what the user literally said]
[W2] INTENT_TYPE: [goal | problem | question | decision | feeling | task | content | claim]
[W3] SPECIFICITY: [vague | moderate | specific]
[W4] URGENCY: [exploring | planning | ready-to-act | stuck | frustrated]
[W5] PRIOR_STATE: [fresh start | mid-process | iteration | recovery]
[W6] IMPLICIT_NEED: [what they probably also need but didn't say]

Intent Classification Table

If intent looks like…Primary categoryCheck also
”I want X” / “I need X”Goal → /want/gu if goal is vague
”How do I X?”Method → /how/foht if specific
”Should I X or Y?”Decision → /decide/dcp if binary
”What’s wrong with X?”Diagnostic → /diagnose/sbfow if prior attempt failed
”I think X”Claim → /claim/it to decompose first
”Help me write/create X”Content → /create/w or /wre for writing
”I feel X” / “I’m frustrated”Emotion → /emotion/cfr for conflict
”Do X” / “Execute X”Action → /action/handle if vague
”Explore X” / “What about X?”Search → /search/poa for options
”Is X true?” / “Check X”Validation → /claim/ver for verification
”What should I do next?”Sequence → /next/fonss for multi-step
”Make this better”Iteration → /iterate/evaluate first

Phase 2: Candidate Generation

Generate top 3-5 candidate skills. For each:

[W7] CANDIDATE: /skill-id — FIT: [why it matches the intent] — WEAKNESS: [what it doesn't cover]
[W8] CANDIDATE: /skill-id — FIT: [why] — WEAKNESS: [what]
[W9] CANDIDATE: /skill-id — FIT: [why] — WEAKNESS: [what]

Selection Criteria

Score each candidate on:

CriterionQuestionWeight
Intent matchDoes this skill address the core intent?3x
State fitIs this the right skill for WHERE the user is?2x
CompletenessWill this skill resolve the need, or just start it?1x
Specificity matchDoes the skill’s scope match the request’s specificity?1x

Phase 3: Selection

[W10] BEST_NOW: /skill-id
[W11] CONFIDENCE: HIGH | MEDIUM | LOW
[W12] WHY_BEST: [one sentence — what makes this better than alternatives]
[W13] RUNNER_UP: /skill-id
[W14] WHY_NOT_RUNNER_UP: [one sentence — what specifically makes it second]
[W15] RUNNER_UP_DISTANCE: [CLOSE | MODERATE | FAR]
[W16] FALLBACK_IF_FAILS: /skill-id
[W17] FALLBACK_TRIGGER: [what would indicate the best skill failed]

Confidence Calibration

ConfidenceCondition
HIGHIntent is clear, best skill is purpose-built for this, runner-up is FAR
MEDIUMIntent is clear but 2+ skills fit well, or intent is slightly ambiguous
LOWIntent is ambiguous, OR the best skill is a general router not a specific tool

If CONFIDENCE is LOW, add:

[W18] AMBIGUITY: [what's ambiguous about the intent]
[W19] CLARIFYING_QUESTION: [what would resolve the ambiguity]

Phase 4: Output

BEST_NOW: /skill-id
CONFIDENCE: HIGH | MEDIUM | LOW
WHY_BEST: [one sentence]
WHY_NOT_RUNNER_UP: [one sentence]
RUNNER_UP: /skill-id
RUNNER_UP_DISTANCE: CLOSE | MODERATE | FAR
FALLBACK_IF_FAILS: /skill-id
FALLBACK_TRIGGER: [when to switch]

→ INVOKE: /skill-id $ARGUMENTS

If CONFIDENCE is LOW, output the clarifying question INSTEAD of invoking.


Failure Modes

FailureSignalFix
Router recursionBEST_NOW is another router (/meta, /handle)Routers route to routers = lost. Pick the concrete skill the router would pick.
Keyword matching”decision” → /decide without checking if it’s actually a decisionTest against intent classification table, not just keywords
Default to categoryAlways picks /want or /how because they’re broadCategory skills are for ambiguous inputs. If intent is clear, pick the specific skill.
Overconfident HIGHEverything marked HIGH confidenceIf runner-up distance is CLOSE, confidence can’t be HIGH
Missing state contextRecommends /gu when user already understands their goalCheck PRIOR_STATE — mid-process users need different skills than fresh-start users
Workflow in disguiseReturns one skill but the user clearly needs a chainIf the need is sequential, say so and route to /fonss

Depth Scaling

DepthCandidates GeneratedSelection Criteria ScoredDisambiguation
1x3Intent match onlyNone
2x5All 4 criteriaClarifying question if LOW
4x7All 4 + interaction checkFull ambiguity analysis
8x10All 4 + prior-state deep checkMulti-path recommendation

Default: 2x. These are floors.


Pre-Completion Checklist

  • Intent extracted (not just keywords matched)
  • Prior state considered (fresh start vs mid-process vs recovery)
  • At least 3 candidates generated with fit AND weakness noted
  • BEST_NOW selected with explicit reason it beats runner-up
  • Confidence calibrated (not defaulting to HIGH)
  • Fallback is a recovery route, not just second-best
  • If LOW confidence: clarifying question provided instead of blind invocation
  • Result is ONE skill, not a workflow (if workflow needed, route to /fonss)

Integration

  • Use from: /meta, /handle, /next
  • Differs from /extract: extract finds ALL relevant skills; wsib picks the ONE best
  • Differs from /fonss: fonss sequences multiple skills; wsib picks one
  • Differs from /given: given ranks by ROI for a goal; wsib matches by intent fit
  • Differs from /fnd: fnd is a registry lookup; wsib does intent analysis first
  • Routes to: whatever skill is selected