feat: standardize request_user_input schema across all codex skills and add config reminder

- Update all 68 .codex/skills files to use correct request_user_input schema
  (header, id, question, options with label/description)
- Remove deprecated multiSelect, type, value, prompt fields
- Add mandatory confirmation gates to planning-only skills
- Add Codex config.toml reminder to ccw install CLI
- Add Codex configuration section to README.md and README_CN.md

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
catlog22
2026-03-24 15:19:18 +08:00
parent ccb5f1e615
commit fe7945eaa2
72 changed files with 1020 additions and 901 deletions

View File

@@ -369,18 +369,19 @@ tasks.forEach(task => {
```javascript
if (!dryRun) {
AskUserQuestion({
request_user_input({
questions: [{
question: `Execute ${tasks.length} tasks?\n\n${conflicts.length ? `${conflicts.length} file conflicts\n` : ''}Execution order:\n${executionOrder.map((id, i) => ` ${i+1}. ${id}: ${tasks.find(t => t.id === id).title}`).join('\n')}`,
header: "Confirm",
multiSelect: false,
id: "confirm_execute",
question: `Execute ${tasks.length} tasks?`,
options: [
{ label: "Execute", description: "Start serial execution" },
{ label: "Execute (Recommended)", description: "Start serial execution" },
{ label: "Dry Run", description: "Simulate without changes" },
{ label: "Cancel", description: "Abort execution" }
]
}]
})
// answer.answers.confirm_execute.answers[0] → selected label
}
```
@@ -565,19 +566,19 @@ ${task.convergence.criteria.map((c, i) => `- [${convergenceResults.verified[i] ?
failedTasks.add(task.id)
// Ask user
AskUserQuestion({
request_user_input({
questions: [{
question: `Task ${task.id} failed convergence verification. How to proceed?`,
header: "Failure",
multiSelect: false,
id: "handle_failure",
question: `Task ${task.id} failed convergence verification. How to proceed?`,
options: [
{ label: "Skip & Continue", description: "Skip this task, continue with next" },
{ label: "Skip & Continue (Recommended)", description: "Skip this task, continue with next" },
{ label: "Retry", description: "Retry this task" },
{ label: "Accept", description: "Mark as completed despite failure" },
{ label: "Abort", description: "Stop execution, keep progress" }
]
}]
})
// answer.answers.handle_failure.answers[0] → selected label
}
```
@@ -697,19 +698,19 @@ tasks.forEach(task => {
### Step 4.4: Post-Completion Options
```javascript
AskUserQuestion({
request_user_input({
questions: [{
question: `Execution complete: ${completedTasks.size}/${tasks.length} succeeded (${Math.round(completedTasks.size / tasks.length * 100)}%).\nNext step:`,
header: "Post-Execute",
multiSelect: false,
header: "Post Execute",
id: "post_execute",
question: `Execution complete: ${completedTasks.size}/${tasks.length} succeeded. Next step?`,
options: [
{ label: "Done (Recommended)", description: "End workflow" },
{ label: "Retry Failed", description: `Re-execute ${failedTasks.size} failed tasks` },
{ label: "View Events", description: "Display execution-events.md" },
{ label: "Create Issue", description: "Create issue from failed tasks" },
{ label: "Done", description: "End workflow" }
{ label: "Create Issue", description: "Create issue from failed tasks" }
]
}]
})
// answer.answers.post_execute.answers[0] → selected label
```
| Selection | Action |