M118 · Elicitation Retrofit (5 issues)

5 issues bundled ~530 src LOC CC 2.1.118+ single PR

Closes #1464, #1465, #1466, #1467, #1468. Takes M118 from 0/5 → 5/5.

What ships per skill

SkillMechanismChoice surfacedVoice payoff
/ork:doctorAskUserQuestionscope: all / cc / mcp / pluginHIGH — "just the MCPs" → 5s vs 20s (4×)
/ork:commitAskUserQuestionmode: new / amend / push / stashHIGH — "amend" or "push after" naturally
/ork:rememberAskUserQuestion ×2type + scope (with global option)HIGH — "preference, global" as voice
/ork:fix-issueAskUserQuestionlocal-CI: push / full / security-onlyMED-HIGH — "thorough, test locally"
/ork:release-syncork-elicit preset3 booleans + notes textarea in one formMED — 1 form vs 3 sequential asks

Architecture: AskUserQuestion vs ork-elicit

                  ┌────────────────────────────────────┐
                  │            user invocation          │
                  └──────────────┬─────────────────────┘
                                 │
            ┌────────────────────┼────────────────────┐
            ▼                    ▼                    ▼
   ┌──────────────────┐  ┌─────────────────┐  ┌──────────────────┐
   │ explicit flag    │  │ ambiguous       │  │ form-shaped      │
   │ in invocation?   │  │ choice point    │  │ (3+ booleans)    │
   ├──────────────────┤  ├─────────────────┤  ├──────────────────┤
   │ skip prompt      │  │ AskUserQuestion │  │ ork-elicit       │
   │ use the flag     │  │ (sequential)    │  │ preset (form)    │
   │                  │  │                 │  │                  │
   │ doctor cc        │  │ doctor          │  │ release-sync     │
   │ commit --amend   │  │ commit          │  │ (M118 #1468)     │
   │ remember --type=X│  │ remember        │  │                  │
   │ fix-issue --quick│  │ fix-issue       │  │ Falls back to    │
   │ release-sync     │  │                 │  │ AskUserQuestion  │
   │ --targets=...    │  │                 │  │ when MCP absent  │
   └──────────────────┘  └─────────────────┘  └──────────────────┘

The new ork-elicit preset (#1468)

  src/mcp-server/src/presets/release-sync-targets.ts   ← NEW
  ┌──────────────────────────────────────────────────────────────┐
  │  fields:                                                     │
  │    notebooklm  : boolean (default true)                      │
  │    hq_kb       : boolean (default true)                      │
  │    slack       : boolean (default false)                     │
  │    notes       : string  (default "")                        │
  └──────────────────────────────────────────────────────────────┘
                          │
                          ▼
  src/mcp-server/src/tools/ork-elicit.ts  PRESETS map
  ┌──────────────────────────────────────────────────────────────┐
  │  'project-config':       (existing)                          │
  │  'release-sync-targets': releaseSyncTargets{Schema,Message}  │
  └──────────────────────────────────────────────────────────────┘
                          │
                          ▼
  /ork:release-sync invokes:
       mcp__ork-elicit__ork_elicit(preset="release-sync-targets")
       → one round-trip, structured form, native MCP
       → fallback: 3× AskUserQuestion when ork-elicit MCP unavailable

Test plan

npm test (full vitest)        7928 / 7928 passing
npm run typecheck             clean (hooks + mcp-server)
npm run test:agents           all valid
npm run test:manifests        counts + ordering + orphans clean
npm run test:skills           structure clean
npm run build                 plugins/ rebuilt cleanly
Override / escape hatches per skill: every new AskUserQuestion is skippable via explicit flags or env vars. Power users / scripts bypass cleanly; voice flows benefit from the prompt. See PR body for the full flag table.

References