Skip to content

feature+docs: idd-verify --loop / idd-all unattended 隱性依賴 ralph-loop — 應宣告 + auto-detect + 內建探索 #28

@kiki830621

Description

@kiki830621

Problem

Original text (user chat, /idd-issue, 2026-05-07):
「接著我在想的是,有些流程我覺得需要仰賴 ralph-loop,可能要內建,不然中間會停下來」

issue-driven-dev 已有多個流程事實上仰賴 ralph-loop,但 plugin.json 沒宣告 dependency、README 也沒列出,使用者不裝 ralph-loop 跑這些流程會「中間停下來」(unattended 模式失去 driver、--loop flag 直接無法用)。

grep 確認以下硬依賴:

Skill / Mode ralph-loop 角色 不裝會發生什麼
idd-verify --loop 直接驅動驗證-修復迴圈(skill SKILL.md line 81 + 628) --loop flag 完全無作用
idd-all (PR, unattended) (v2.40.0+ default) 外圈 driver:verify 完發現 blocking findings → 自動觸發下一輪 implement → verify sub-skill 抑制 AskUserQuestion 後沒人續跑,流程半路停滯;v2.40.0 description 多次提及「/loop friendly」「v2.40.0 既有 caller(如 /loop)的 default 行為」(idd-all SKILL.md line 29, 80, 187, 190)
idd-all unattended 自動修復 max 2 round bootstrap task verify_loop 預期被 /loop 重新 invoke 才能跑滿 round 1 輪後就停,不像 attended 有 user 續推

目前狀態:

  • plugins/issue-driven-dev/.claude-plugin/plugin.json 沒有 dependencies field(看起來 Claude Code plugin schema 也沒原生 inter-plugin dependency 機制)
  • 頂層 README.md 0 hits for "ralph-loop" / "loop"
  • plugins/issue-driven-dev/README.md 只在 line 69/100 提到自己內部「TDD loop」/「looped sequentially」,沒提外部 ralph-loop plugin
  • skill 內部沒 fail-fast 偵測 — 跑 idd-verify --loop 但沒裝 ralph-loop 應該明確報錯,目前不確定行為(可能 silent no-op / 可能 obscure error)

Type

feature + documentation(雙面)

Expected

三層改善(用戶選了全部三項 scope):

Layer 1: README docs gap(同 #26 套路)

兩份 README 加 "Required dependencies for unattended / loop modes" 段落:

Mode Required plugin Install 指令
idd-verify --loop ralph-loop claude plugin install ralph-loop@<marketplace>
idd-all unattended (PR mode default) ralph-loop 同上
idd-all direct-commit + attended (none) n/a — user 在 keyboard
Single-skill calls (idd-issue / idd-diagnose / idd-implement / idd-verify / idd-close 不帶 flag) (none) n/a

Layer 2: Skill 內部 auto-detect + fail-fast 提示

idd-verify Step 0 / idd-all Phase 0.5 在進 unattended path 前:

# Pseudo
if mode == "unattended" || flag == "--loop"; then
  if ! command -v ralph-loop &>/dev/null && ! check_ralph_loop_skill_present; then
    echo "✗ unattended / --loop mode 需要 ralph-loop plugin"
    echo "  Install: claude plugin install ralph-loop@<marketplace>"
    echo "  或改跑 attended: /idd-all #N --no-pr"
    exit 1
  fi
fi

涵蓋 idd-verify --loopidd-all (PR, unattended)default。

Layer 3:「內建」依賴宣告(探索性 — 可能受限於 Claude Code plugin 系統能力)

考慮以下選項(diagnose phase 評估可行性):

(a) plugin.json 加 dependencies / requires field — 即使 Claude Code 目前不消費此 field,寫了至少有 forward compat + 自我文件
(b) Marketplace dependencies 機制 — 在 .claude-plugin/marketplace.jsonissue-driven-dev requires ralph-loop for unattended,讓未來 marketplace tooling 可以掃
(c) Bundle install hint — README install 指令改成:

# Recommended (full features incl. unattended):
claude plugin install issue-driven-dev@issue-driven-development
claude plugin install ralph-loop@<marketplace>

# Minimal (attended-only):
claude plugin install issue-driven-dev@issue-driven-development

(d) idd-all session-start hook — 第一次跑 unattended 時 echo warning「ralph-loop not detected, --no-pr fallback」

這層需要 diagnose 確認 Claude Code plugin 有哪些 native 機制可用,可能 spawn 出 sister issue。

Actual

  • README 隻字不提 ralph-loop
  • plugin.json description 多次描述「/loop friendly」「/loop 既有 caller」但沒任何 install / dependency 標註
  • skill 內部沒 detect logic — 直接呼叫如果失敗,error 訊息不會引導使用者
  • 使用者只能從 SKILL.md 內文 grep 才能發現「噢原來要裝 ralph-loop」

Impact

  • Onboarding 卡點:新使用者看 README 裝 issue-driven-dev,以為「裝完就完整」,跑 /idd-all 結果 unattended 流程半路停 → 誤以為 IDD 有 bug
  • Silent degradation:跟 docs: README 應列出 issue-driven-dev 仰賴的外部 plugin / MCP server (依 source type) #26 同類失敗模式,但這個更嚴重 — /loop 無聲卡死比 .docx 讀不到還難 debug
  • Marketing mismatch:plugin.json 主打 /loop friendly 是 v2.40.0 賣點,但實際 /loop 來自外部 plugin,使用者不知道

Related

Scope confirmation (per /idd-issue clarification)

  • Layer 1: README docs gap (README.md + plugins/issue-driven-dev/README.md)
  • Layer 2: Skill auto-detect + install 提示 (idd-verify Step 0 + idd-all Phase 0.5)
  • Layer 3:「內建」依賴宣告(探索 plugin.json / marketplace.json / install bundle)

Priority: P2

Linked-Context Siblings Filed (v2.48.0+ #529)

(none — primary concern already split across 3 explicit Layers within this issue;related #26 / #27 cross-linked above)

Current Status

Phase: closed
Last updated: 2026-05-07 by idd-close

Resolution

Critical catches by 6-AI verify

  • F1 (P0, Codex): plugin.json dependencies field validate-fail → reverted entirely
  • F2 (P1, Devils-Advocate NEW): Phase 0.6 BRANCH bug → unwind logic added
  • F3 (P1, logic+security+Codex consensus): HOME-with-spaces glob → bash array + nullglob
  • F4 (P2): bypass silent → stderr warning
  • F5 (P3): version mismatch → bumped

PR

Follow-ups (carried)

Metadata

Metadata

Assignees

No one assigned

    Labels

    documentationImprovements or additions to documentationenhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions