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

@@ -2,7 +2,7 @@
name: team-lifecycle-v4
description: Full lifecycle team skill — specification, planning, implementation, testing, and review. Supports spec-only, impl-only, full-lifecycle, and frontend pipelines with optional supervisor checkpoints.
argument-hint: "[-y|--yes] [-c|--concurrency N] [--continue] \"task description\""
allowed-tools: spawn_agents_on_csv, spawn_agent, wait, send_input, close_agent, Read, Write, Edit, Bash, Glob, Grep, AskUserQuestion
allowed-tools: spawn_agents_on_csv, spawn_agent, wait, send_input, close_agent, Read, Write, Edit, Bash, Glob, Grep, request_user_input
---
## Auto Mode
@@ -294,16 +294,15 @@ If not AUTO_YES, confirm pipeline selection:
```javascript
if (!AUTO_YES) {
const answer = AskUserQuestion({
const answer = request_user_input({
questions: [{
question: `Requirement: "${requirement}"\nDetected pipeline: ${pipeline_type} (complexity: ${complexity.level})\nRoles: ${capabilities.map(c => c.name).join(', ')}\n\nApprove?`,
header: "Pipeline Selection",
multiSelect: false,
question: `Requirement: "${requirement}"Detected: ${pipeline_type}. Approve or override?`,
header: "Pipeline",
id: "pipeline_select",
options: [
{ label: "Approve", description: `Use ${pipeline_type} pipeline` },
{ label: "Approve (Recommended)", description: `Use ${pipeline_type} pipeline (complexity: ${complexity.level})` },
{ label: "Spec Only", description: "Research -> draft specs -> quality gate" },
{ label: "Impl Only", description: "Plan -> implement -> test + review" },
{ label: "Full Lifecycle", description: "Spec pipeline + implementation pipeline" }
{ label: "Impl/Full", description: "Implementation pipeline or full lifecycle" }
]
}]
})
@@ -522,10 +521,11 @@ Write report to ${sessionFolder}/artifacts/${task.id}-report.md.
// Handle verdict
if (parsedVerdict === 'block') {
if (!AUTO_YES) {
const answer = AskUserQuestion({
const answer = request_user_input({
questions: [{
question: `Checkpoint ${task.id} BLOCKED (score: ${parsedScore}). What to do?`,
header: "Checkpoint Blocked",
question: `Checkpoint ${task.id} BLOCKED (score: ${parsedScore}). Choose action.`,
header: "Blocked",
id: "blocked_action",
options: [
{ label: "Override", description: "Proceed despite block" },
{ label: "Revise upstream", description: "Go back and fix issues" },
@@ -647,13 +647,13 @@ If not AUTO_YES, offer completion action:
```javascript
if (!AUTO_YES) {
AskUserQuestion({
request_user_input({
questions: [{
question: "Pipeline complete. What would you like to do?",
header: "Completion",
multiSelect: false,
question: "Pipeline complete. Choose next action.",
header: "Done",
id: "completion",
options: [
{ label: "Archive & Clean (Recommended)", description: "Archive session" },
{ label: "Archive (Recommended)", description: "Archive session" },
{ label: "Keep Active", description: "Keep session for follow-up work" },
{ label: "Export Results", description: "Export deliverables to target directory" }
]
@@ -713,7 +713,7 @@ All agents across all waves share `discoveries.ndjson`. This enables cross-role
| CSV agent failed | Mark as failed, skip dependent tasks in later waves |
| Interactive agent timeout | Urge convergence via send_input, then close if still timed out |
| Interactive agent failed | Mark as failed, skip dependents |
| Supervisor checkpoint blocked | AskUserQuestion: Override / Revise / Abort |
| Supervisor checkpoint blocked | request_user_input: Override / Revise / Abort |
| Quality gate failed (< 60%) | Return to writer for rework |
| All agents in wave failed | Log error, offer retry or abort |
| CSV parse error | Validate CSV format before execution, show line number |

View File

@@ -36,7 +36,7 @@ Evaluate quality metrics from the QUALITY-001 task, apply threshold checks, and
|------|------|---------|
| `Read` | builtin | Load quality results and task artifacts |
| `Bash` | builtin | Run verification commands (build check, test rerun) |
| `AskUserQuestion` | builtin | Present quality summary and obtain user verdict |
| `request_user_input` | builtin | Present quality summary and obtain user verdict |
---
@@ -108,7 +108,7 @@ Evaluate quality metrics from the QUALITY-001 task, apply threshold checks, and
- Per-metric breakdown with actual values vs thresholds
- List of unresolved findings (if any) with severity
- Recommendation (approve / reject with reasons)
2. Present to user via AskUserQuestion:
2. Present to user via request_user_input:
- If gate status is PASS: recommend approval
- If gate status is CONDITIONAL: present risks, ask user to decide
- If gate status is FAIL: recommend rejection with specific failures listed

View File

@@ -38,7 +38,7 @@ Parse user task input, detect pipeline signals, select execution mode, and produ
| `Glob` | builtin | Find existing artifacts in workspace |
| `Grep` | builtin | Search for keywords and patterns in artifacts |
| `Bash` | builtin | Run utility commands |
| `AskUserQuestion` | builtin | Clarify ambiguous requirements with user |
| `request_user_input` | builtin | Clarify ambiguous requirements with user |
---
@@ -90,7 +90,7 @@ Parse user task input, detect pipeline signals, select execution mode, and produ
| impl keywords + existing specs | `impl-only` |
| full-lifecycle keywords OR (impl keywords + no existing specs) | `full-lifecycle` |
| frontend keywords | `frontend` |
| Ambiguous / conflicting signals | Ask user via AskUserQuestion |
| Ambiguous / conflicting signals | Ask user via request_user_input |
2. If ambiguous, present options to user:
- Describe detected signals
@@ -155,7 +155,7 @@ Parse user task input, detect pipeline signals, select execution mode, and produ
| Scenario | Resolution |
|----------|------------|
| Requirement text is empty or too vague | Ask user for clarification via AskUserQuestion |
| Requirement text is empty or too vague | Ask user for clarification via request_user_input |
| Conflicting signals (e.g., "spec only" + "implement now") | Present conflict to user, ask for explicit choice |
| Existing artifacts are corrupted or incomplete | Log warning, treat as no-artifacts (full-lifecycle) |
| Workspace not writable | Report error, output JSON to stdout instead |