G GnOuGo
gnougo-labs/copilot-issue-solver GnOuGo master mascot

copilot-issue-solver

Official LAB Public

A GnOuGo Labs focused on issue resolution with Copilot calls, clean branches, and pull requests.

copilotissuespull-requestautomation
gnougo-labs/copilot-issue-solver/resolve-issue.gnougo-flow.yaml GnOuGo workflow mascot./resolve-issue.gnougo-flow.yaml
v0.1.0
version: 1
name: resolve-code-issue
skill:
  description: Inspects a code project and asks Copilot for a focused change proposal.
  tags: [code, issue, copilot]
  inputs:
    project_root: { type: string, required: true }
    issue: { type: string, required: true }
  outputs:
    suggestion: { type: object }

workflows:
  main:
    inputs:
      project_root: { type: string, required: true }
      issue: { type: string, required: true }
      search_term:
        type: string
        required: false
        default: TODO
    steps:
      - id: discover_code_tools
        type: mcp.list
        input:
          servers: [GnOuGo.GithubCopilot.Mcp]
          include: [tools]

      - id: project_summary
        type: mcp.call
        input:
          server: GnOuGo.GithubCopilot.Mcp
          kind: tool
          method: code_project_summary
          request:
            projectRoot: "${data.inputs.project_root}"

      - id: search_context
        type: mcp.call
        input:
          server: GnOuGo.GithubCopilot.Mcp
          kind: tool
          method: code_search_text
          request:
            projectRoot: "${data.inputs.project_root}"
            query: "${data.inputs.search_term}"
            glob: "**/*"
            caseSensitive: false

      - id: build_task
        type: workflow.call
        input:
          ref: { kind: local, name: build_copilot_task }
          args:
            issue: "${data.inputs.issue}"
            project_summary: "${data.steps.project_summary.response}"
            search_results: "${data.steps.search_context.response}"

      - id: suggest_change
        type: mcp.call
        input:
          server: GnOuGo.GithubCopilot.Mcp
          kind: tool
          method: code_suggest_change
          request:
            projectRoot: "${data.inputs.project_root}"
            task: "${data.steps.build_task.outputs.task}"

    outputs:
      suggestion: "${data.steps.suggest_change.response}"
      discovered_tools: "${len(data.steps.discover_code_tools.tools)}"

  build_copilot_task:
    inputs:
      issue: { type: string, required: true }
      project_summary: { type: object, required: true }
      search_results: { type: object, required: true }
    steps:
      - id: render_task
        type: template.render
        input:
          engine: mustache
          template: |
            Resolve this issue without unrelated changes:
            {{issue}}

            Project summary: {{project}}
            Search context: {{search}}
          data:
            issue: "${data.inputs.issue}"
            project: "${json(data.inputs.project_summary)}"
            search: "${json(data.inputs.search_results)}"
          mode: text
    outputs:
      task: "${data.steps.render_task.text}"

Semantic view

Workflow graph

Semantically valid

Generated from the validated YAML with GnOuGo.Flow.Mermaid. Emit steps are hidden to keep the execution graph focused.

main

Entrypoint
flowchart TD n0_start(("Start")) n1_end(("End")) n2_inputs[/"Inputs: issue, project_root, search_term"/] n3_discover_code_tools[("discover_code_tools - mcp.list")] n4_project_summary[("project_summary - mcp.call")] n5_search_context[("search_context - mcp.call")] n6_build_task[["build_task - workflow.call - local: build_copilot_task"]] n7_suggest_change[("suggest_change - mcp.call")] n8_outputs[/"Outputs: discovered_tools, suggestion"/] n0_start --> n2_inputs n3_discover_code_tools --> n4_project_summary n4_project_summary --> n5_search_context n5_search_context --> n6_build_task n6_build_task --> n7_suggest_change n2_inputs --> n3_discover_code_tools n7_suggest_change --> n8_outputs n8_outputs --> n1_end

build_copilot_task

Local sub-workflow
flowchart TD n0_start(("Start")) n1_end(("End")) n2_inputs[/"Inputs: issue, project_summary, search_results"/] n3_render_task[/"render_task - template.render"/] n4_outputs[/"Outputs: task"/] n0_start --> n2_inputs n2_inputs --> n3_render_task n3_render_task --> n4_outputs n4_outputs --> n1_end