问题发现与创建Skill issue-discover

这是一个统一的问题发现和创建技能,用于自动化软件开发和DevOps中的问题管理流程。支持从GitHub、文本输入、多角度分析和提示驱动探索等方式发现和创建问题,提高开发效率、问题处理速度和团队协作。关键词:问题发现、问题创建、GitHub、多角度分析、提示驱动探索、DevOps、自动化工作流、软件测试、项目管理。

DevOps 0 次安装 0 次浏览 更新于 3/16/2026

name: issue-discover description: 统一的问题发现和创建。从GitHub或文本创建问题,通过多角度分析发现问题,或提示驱动的迭代探索。触发于 “issue:new”, “issue:discover”, “issue:discover-by-prompt”, “create issue”, “discover issues”, “find issues”。 allowed-tools: spawn_agent, wait, send_input, close_agent, AskUserQuestion, Read, Write, Edit, Bash, Glob, Grep, mcp__ace-tool__search_context, mcp__exa__search

问题发现

统一的问题发现和创建技能,涵盖三个入口点:手动问题创建、基于视角的发现和提示驱动的探索。

架构概述

┌─────────────────────────────────────────────────────────────────┐
│  问题发现协调器 (SKILL.md)                                       │
│  → 动作选择 → 路由到阶段 → 执行 → 总结                           │
└───────────────┬─────────────────────────────────────────────────┘
                │
                ├─ ASK_USER: 选择动作
                │
    ┌───────────┼───────────┬───────────┐
    ↓           ↓           ↓           │
┌─────────┐ ┌─────────┐ ┌─────────┐   │
│ 阶段 1  │ │ 阶段 2  │ │ 阶段 3  │   │
│  创建新 │ │ 发现    │ │ 通过提示│   │
│  问题   │ │ 多视角 │ │ 发现    │   │
└─────────┘ └─────────┘ └─────────┘   │
     ↓           ↓           ↓          │
  问题     发现结果    发现结果         │
(已注册) (导出)    (导出)         │
     │           │           │          │
     │           ├───────────┤          │
     │           ↓                      │
     │     ┌───────────┐               │
     │     │  阶段 4   │               │
     │     │快速计划 & │               │
     │     │执行       │               │
     │     └─────┬─────┘               │
     │           ↓                      │
     │     .task/*.json                 │
     │           ↓                      │
     │     直接执行                     │
     │           │                      │
     └───────────┴──────────────────────┘
                  ↓ (后备/剩余)
          问题解决 (计划/队列)
                  ↓
            /issue:execute

关键设计原则

  1. 动作驱动路由: ASK_USER 选择动作,然后加载单个阶段
  2. 渐进式阶段加载: 仅读取选定阶段的文档
  3. CLI优先数据访问: 所有问题CRUD通过 ccw issue CLI命令
  4. 自动模式支持: -y 标志跳过动作选择并自动检测
  5. 子代理生命周期: 明确的生命周期管理,使用 spawn_agent → wait → close_agent
  6. 角色路径加载: 子代理角色通过路径引用在 MANDATORY FIRST STEPS 中加载

自动模式

--yes-y:跳过动作选择,自动从输入类型检测动作。

用法

issue-discover <input>
issue-discover [FLAGS] "<input>"

# 标志
-y, --yes              跳过所有确认(自动模式)
--action <type>        预选动作:new|discover|discover-by-prompt

# 阶段特定标志
--priority <1-5>       问题优先级(新问题模式)
--perspectives <list>  逗号分隔的视角(发现模式)
--external             启用Exa研究(发现模式)
--scope <pattern>      文件范围(发现/发现-通过-提示模式)
--depth <level>        standard|deep(发现-通过-提示模式)
--max-iterations <n>   最大探索迭代次数(发现-通过-提示模式)

# 示例
issue-discover https://github.com/org/repo/issues/42                              # 从GitHub创建
issue-discover "登录失败,特殊字符问题"                                             # 从文本创建
issue-discover --action discover src/auth/**                                       # 多视角发现
issue-discover --action discover src/api/** --perspectives=security,bug            # 聚焦发现
issue-discover --action discover-by-prompt "检查API合约"                            # 提示驱动发现
issue-discover -y "认证错误"                                                        # 自动模式创建

执行流

输入解析:
   └─ 解析标志(--action, -y, --perspectives等)和位置参数

动作选择:
   ├─ 提供了--action标志 → 直接路由
   ├─ 从输入自动检测:
   │   ├─ GitHub URL或#数字 → 创建新问题(阶段1)
   │   ├─ 路径模式(src/**, *.ts) → 发现(阶段2)
   │   ├─ 短文本(< 80字符) → 创建新问题(阶段1)
   │   └─ 长描述文本(≥ 80字符) → 通过提示发现(阶段3)
   └─ 否则 → ASK_USER 选择动作

阶段执行(加载一个阶段):
   ├─ 阶段1: 创建新问题          → phases/01-issue-new.md
   ├─ 阶段2: 发现                → phases/02-discover.md
   └─ 阶段3: 通过提示发现        → phases/03-discover-by-prompt.md

后阶段:
   └─ 总结 + 下一步建议

阶段参考文档

阶段 文档 加载时机 目的
阶段1 phases/01-issue-new.md 动作 = 创建新问题 从GitHub URL或文本描述创建问题
阶段2 phases/02-discover.md 动作 = 发现 多视角问题发现(bug, 安全, 测试等)
阶段3 phases/03-discover-by-prompt.md 动作 = 通过提示发现 提示驱动的迭代探索,使用Gemini规划
阶段4 phases/04-quick-execute.md 后阶段 = 快速计划与执行 将高置信度发现转换为任务并直接执行

核心规则

  1. 动作选择优先: 总是在加载任何阶段前确定动作
  2. 单一阶段加载: 仅读取选定阶段的文档,永不加载所有阶段
  3. CLI数据访问: 使用 ccw issue CLI处理所有问题操作,绝不直接读取文件
  4. 内容保留: 每个阶段包含原始命令的完整执行逻辑
  5. 自动检测输入: 智能输入解析减少显式–action标志需求
  6. ⚠️ 关键: 不要停止: 持续多阶段工作流。完成每个阶段后,立即进行下一阶段
  7. 渐进式阶段加载: 仅当阶段即将执行时读取阶段文档
  8. 明确生命周期: 在wait完成后总是close_agent以释放资源

输入处理

自动检测逻辑

function detectAction(input, flags) {
  // 1. 显式--action标志
  if (flags.action) return flags.action;

  const trimmed = input.trim();

  // 2. GitHub URL → new
  if (trimmed.match(/github\.com\/[\w-]+\/[\w-]+\/issues\/\d+/) || trimmed.match(/^#\d+$/)) {
    return 'new';
  }

  // 3. 路径模式(包含 **, /, 或 --perspectives) → discover
  if (trimmed.match(/\*\*/) || trimmed.match(/^src\//) || flags.perspectives) {
    return 'discover';
  }

  // 4. 短文本(< 80字符,无特殊模式) → new
  if (trimmed.length > 0 && trimmed.length < 80 && !trimmed.includes('--')) {
    return 'new';
  }

  // 5. 长描述文本 → discover-by-prompt
  if (trimmed.length >= 80) {
    return 'discover-by-prompt';
  }

  // 无法自动检测 → 询问用户
  return null;
}

动作选择 (ASK_USER)

// 当动作无法自动检测时
const answer = ASK_USER([{
  id: "action",
  type: "select",
  prompt: "您想做什么?",
  options: [
    {
      label: "创建新问题(推荐)",
      description: "从GitHub URL、文本描述或结构化输入创建问题"
    },
    {
      label: "发现问题",
      description: "多视角发现:bug、安全、测试、质量、性能等"
    },
    {
      label: "通过提示发现",
      description: "描述要查找的内容 — Gemini 规划迭代探索策略"
    }
  ]
}]);  // 阻塞(等待用户响应)

// 基于选择路由
const actionMap = {
  "创建新问题": "new",
  "发现问题": "discover",
  "通过提示发现": "discover-by-prompt"
};

数据流

用户输入(URL / 文本 / 路径模式 / 描述性提示)
    ↓
[解析标志 + 自动检测动作]
    ↓
[动作选择] ← ASK_USER(如果需要)
    ↓
[读取选定阶段文档]
    ↓
[执行阶段逻辑]
    ↓
[总结 + 下一步]
    ├─ 创建后 → 建议 issue-resolve(规划解决方案)
    └─ 发现后 → 建议导出到问题,然后 issue-resolve

子代理API参考

spawn_agent

创建具有任务分配的新子代理。

const agentId = spawn_agent({
  message: `
## 任务分配

### 强制第一步(代理执行)
1. **读取角色定义**: ~/.codex/agents/{agent-type}.md(必须先读)
2. 读取: {projectRoot}/.workflow/project-tech.json
3. 读取: {projectRoot}/.workflow/project-guidelines.json

## 任务上下文
${taskContext}

## 可交付物
${deliverables}
`
})

wait

从子代理获取结果(唯一检索结果方式)。

const result = wait({
  ids: [agentId],
  timeout_ms: 600000  // 10分钟
})

if (result.timed_out) {
  // 处理超时 - 可以继续等待或 send_input 提示完成
}

// 检查完成状态
if (result.status[agentId].completed) {
  const output = result.status[agentId].completed;
}

send_input

与活动子代理持续交互(用于澄清或跟进)。

send_input({
  id: agentId,
  message: `
## 澄清回答
${answers}

## 下一步
继续计划生成。
`
})

close_agent

清理子代理资源(不可逆)。

close_agent({ id: agentId })

核心指南

数据访问原则: 问题文件可能变得非常大。为避免上下文溢出:

操作 正确方法 错误方法
列出问题(简要) ccw issue list --status pending --brief Read('issues.jsonl')
读取问题详情 ccw issue status <id> --json Read('issues.jsonl')
创建问题 echo '...' | ccw issue create 直接文件写入
更新状态 ccw issue update <id> --status ... 直接文件编辑

总是使用CLI命令进行CRUD操作。绝不直接读取整个 issues.jsonl

错误处理

错误 解决方案
未检测到动作 显示ASK_USER并提供所有3个选项
无效动作类型 显示可用动作,重新提示
阶段执行失败 报告错误,建议手动干预
无匹配文件(发现) 检查目标模式,验证路径存在
Gemini规划失败(发现-通过-提示) 使用qwen后备重试
代理生命周期错误 确保在错误路径中 close_agent 以防止资源泄漏

后阶段下一步

成功执行阶段后,推荐下一步动作:

// 创建新问题后(问题已创建)
ASK_USER([{
  id: "next_after_create",
  type: "select",
  prompt: "问题已创建。下一步做什么?",
  options: [
    { label: "规划解决方案", description: "通过 issue-resolve 生成解决方案" },
    { label: "创建另一个", description: "创建更多问题" },
    { label: "查看问题", description: "审查所有问题" },
    { label: "完成", description: "退出工作流" }
  ]
}]);  // 阻塞(等待用户响应)

// 发现/通过提示发现后(发现已生成)
ASK_USER([{
  id: "next_after_discover",
  type: "select",
  prompt: `发现完成:${findings.length} 个发现,${executableFindings.length} 个可执行。下一步做什么?`,
  options: [
    { label: "快速计划与执行(推荐)", description: `直接修复 ${executableFindings.length} 个高置信度发现` },
    { label: "导出到问题", description: "将发现转换为问题" },
    { label: "规划解决方案", description: "通过 issue-resolve 为导出问题规划解决方案" },
    { label: "完成", description: "退出工作流" }
  ]
}]);  // 阻塞(等待用户响应)
// 如果选择“快速计划与执行” → 读取 phases/04-quick-execute.md,执行

相关技能与命令

  • issue-resolve - 规划解决方案,转换工件,形成队列,从头脑风暴
  • issue-manage - 交互式问题CRUD操作
  • /issue:execute - 使用DAG基于并行协调执行队列
  • ccw issue list - 列出所有问题
  • ccw issue status <id> - 查看问题详情