Hacktoberfest 2026: những issue maintainer đã đánh dấu cho tháng Mười, đang mở và phù hợp người mới. Xem issue Hacktoberfest

[Feature]: capture mode for command and prompt workflow steps

Đang mở
#4,613 6 bình luận 0 reaction 0 người được giao Xem trên GitHub

Chưa có ai nhận issue này.

Đánh giá

Độ khó
3/5
Thời gian dự kiến
1-2 ngày
Mức phù hợp với người mới
68/100
Loại issue
Tính năng
Độ rõ ràng
Khá rõ ràng
Mức độ hoạt động
Sôi nổi
Công nghệ
python
Lĩnh vực
cli, tooling

Hướng nghiên cứu

Start with src/specify_cli/workflows/steps/command/init.py and the existing ShellStep capture pattern, then inspect prompt/init.py, validators.py, and IntegrationBase.dispatch_command(). Add regression coverage in tests/test_workflows.py for opt-in command and prompt capture, validation, and timeout behavior; done means captured stdout/stderr reach downstream step outputs while default streaming remains unchanged.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

feature-assess triage-nice-to-have

Problem

Workflow command and prompt steps always stream output to the terminal. The stdout and stderr fields in the step output dict are always empty strings, making them inaccessible to downstream steps via {{ steps.<id>.output.stdout }}.

This limits workflow authors who need to:

  • Parse AI agent output and branch on its content
  • Pipe command output into a later step as structured data
  • Conditionally act on specific output patterns (e.g. exit messages, generated file paths)

The command step docstring (line 26) notes this as a planned enhancement:

Full stdout/stderr capture is a planned enhancement.

Proposed Solution

Add an opt-in capture: true field to command and prompt step configs. When set, dispatch uses capture_output=True so stdout and stderr are returned in the step output dict and accessible to downstream steps.

# Before (streaming, stdout/stderr always empty):
- id: plan
  type: command
  config:
    command: speckit.plan
    integration: claude

# After (capture mode, stdout/stderr available):
- id: plan
  type: command
  config:
    command: speckit.plan
    integration: claude
    capture: true
    timeout: 300

Downstream steps can then reference:

- id: parse
  type: shell
  config:
    command: "echo '{{ steps.plan.output.stdout | from_json }}'"

Design Notes

  • Backward compatible: capture defaults to false; existing workflows are unaffected
  • Follows existing pattern: ShellStep already captures output with capture_output=True and supports output_format: json
  • Timeout support: A timeout field (seconds, default 600) prevents hung commands from blocking the workflow, consistent with dispatch_command() default
  • Implementation: Requires forwarding stream=not capture to IntegrationBase.dispatch_command() which already supports both modes

Affected Files

  • src/specify_cli/workflows/steps/command/__init__.py - config schema, dispatch call, output assembly
  • src/specify_cli/workflows/steps/prompt/__init__.py - same pattern for prompt steps
  • src/specify_cli/workflows/validators.py - capture (bool) and timeout (int) validation
  • tests/test_workflows.py - capture mode regression tests

Questions

  1. Does this direction align with your roadmap for the workflow engine?
  2. Should capture mode also apply to the prompt step, or only command steps?
  3. Any preferences on the field name (capture vs capture_output vs something else)?

Happy to implement if this is something you'd like to move forward with.

Ngôn ngữ chính
Python
Star
138k
Fork
12.4k
Merge trung bình
3 ngày 4 giờ
Pull request đã merge (30 ngày)
154

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của github/spec-kit

Tất cả issue của github/spec-kit

Issue tương tự

Thêm issue về Python

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.