Skip to main content

interview

Structured human-agent Q&A via HTML or TUI forms. Wizard-style interface with tabbed navigation, numbered options with descriptions, automatic "Other" option, and image support. Mirrors Claude Code's AskUserQuestion UX.

소스 정보

저장소
grahama1970/agent-stack-public
최근 소스 활동
2026년 9월 24일 15:51
감지된 SKILL.md 언어
영어
스타
0
포크
0

설치 방법

기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.

소스 파일 검토

설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.

파일 탐색기
25 개 파일

SKILL.md 표시 중

SKILL.md
소스 지침 · 읽기 전용 미리보기
name
interview
description
Structured human-agent Q&A via HTML or TUI forms. Wizard-style interface with tabbed navigation, numbered options with descriptions, automatic "Other" option, and image support. Mirrors Claude Code's AskUserQuestion UX.
allowed-tools
Bash, Read
triggers
["interview user","get user feedback","review items with user","human review","ask user to review","structured Q&A","clarifying questions"]
metadata
{"short-description":"Wizard-style Q&A forms with tabbed navigation and image support","version":"2.0"}
provides
["human-interview"]
composes
["memory","episodic-archiver","scillm","task-monitor","agentic-evals"]
taxonomy
["human-in-the-loop","collaboration"]
disciplines
["human-collaboration"]
> STOP. READ THIS ENTIRE SKILL.MD BEFORE CALLING ANY ENDPOINT. # Interview Skill v2 Structured human-agent Q&A with wizard-style interface. Mirrors Claude Code's AskUserQuestion UX with tabbed navigation, numbered options with descriptions, automatic "Other" option, and image support. ## Quick Start ```bash # TUI mode (terminal) .pi/skills/interview/run.sh --mode tui --file questions.json # HTML mode (browser) .pi/skills/interview/run.sh --mode html --file questions.json # Auto-detect (HTML if browser available, else TUI) .pi/skills/interview/run.sh --file questions.json ``` ## Question Format (v2) ```json { "title": "Clarifying Questions", "context": "The agent needs your input before proceeding.", "questions": [ { "id": "tts_model", "header": "TTS Model", "text": "Which TTS model should we use for narration?", "options": [ { "label": "horus_final_prod (Recommended)", "description": "Latest production checkpoint from XTTS training" }, { "label": "horus_qwen3_06b_final", "description": "Qwen3 0.6B model checkpoint" }, { "label": "Need new training", "description": "Current models are insufficient" } ], "multi_select": false }, { "id": "voice_anchors", "header": "Voice", "text": "Which voice anchors should we use?", "images": ["examples/voice_samples.png"], "options": [ {"label": "Audiobook anchors", "description": "Consistent formal tone"}, {"label": "Podcast anchors", "description": "Conversational, dynamic"} ], "multi_select": false }, { "id": "research_areas", "header": "Research", "text": "Which research areas should Dogpile prioritize?", "options": [ {"label": "Voice cloning", "description": "XTTS, Coqui, RVC methods"}, {"label": "Audio preprocessing", "description": "Noise removal, enhancement"}, {"label": "Dataset curation", "description": "Finding training data"}, {"label": "Evaluation metrics", "description": "MOS scores, similarity"} ], "multi_select": true } ] } ``` ## Question Fields | Field | Type | Required | Description | |-------|------|----------|-------------| | `id` | string | Yes | Unique identifier | | `text` | string | Yes | Full question text | | `header` | string | No | Short tab label (max 12 chars) | | `options` | array | No | List of options with label/description | | `images` | array | No | List of image paths to display | | `multi_select` | bool | No | Allow multiple selections (default: false) | | `type` | string | No | Question type: "select", "multi", "text", "image_compare" | | `recommendation` | string | No | Agent's recommended answer | | `reason` | string | No | Why agent recommends this | | `allow_custom_image` | bool | No | Allow user to paste/upload custom image | | `comparison_images` | array | No | Images for image_compare type | ### Options Format Options can be specified as: ```json // New format (v2) - with descriptions "options": [ {"label": "Option A", "description": "Detailed explanation"}, {"label": "Option B", "description": "Another explanation"} ] // Legacy format (v1) - string only "options": ["Option A", "Option B"] ``` ### Image Support Images display differently by mode: | Mode | Display | |------|---------| | TUI | `[Image 1] (800x600)` placeholder with dimensions | | HTML | Actual image embedded as base64 (max 600px wide) | Image paths can be absolute or relative to the questions file. ## Image Collaboration (v2.1) The interview skill supports rich image collaboration between human and agent. Users can provide their own images via paste, drag-drop, or file paths. ### Image Comparison Questions For "which image do you prefer?" scenarios: ```json { "id": "ui_design", "header": "UI Design", "text": "Which UI design do you prefer for the dashboard?", "type": "image_compare", "comparison_images": [ { "path": "designs/option_a.png", "label": "Modern Dark", "description": "Dark theme with gradient accents" }, { "path": "designs/option_b.png", "label": "Clean Light" } ], "allow_custom_image": true } ``` Users see a grid of images and can: 1. Click an image to select it 2. Paste their own image (Ctrl+V) 3. Drag-drop an image file 4. Provide a reason for their choice ### Custom Image Input Every question with options now includes an enhanced "Other" option that accepts images: | Input Method | TUI | HTML | |--------------|-----|------| | Paste (Ctrl+V) | Detects file paths | Full clipboard image support | | Drag-drop | N/A | Supported | | File path | Type path, shows preview | Via paste zone click | | Click to browse | N/A | Opens file dialog | #### TUI File Path Detection In TUI mode, if the user types something that looks like an image path: - `/path/to/image.png` - `~/screenshots/design.jpg` - `./local/image.gif` The skill validates the image and shows: `[Your Image] (800x600) - filename.png` #### HTML Clipboard Paste In HTML mode, users can: 1. Copy an image to clipboard (screenshot, from browser, etc.) 2. Press Ctrl+V anywhere on the question 3. Image appears in the "Other" option paste zone 4. User can add text explanation alongside ### Response Format with Images When user provides a custom image: ```json { "ui_design": { "decision": "override", "value": "custom_image", "custom_image": { "source": "clipboard", "data_uri": "data:image/png;base64,...", "reason": "I prefer this rounded corner style" } } } ``` Or via file path (TUI): ```json { "ui_design": { "decision": "override", "value": "/home/user/my_design.png", "custom_image": { "source": "file_path", "path": "/home/user/my_design.png", "dimensions": [1200, 800], "data_uri": "data:image/png;base64,..." } } } ``` ### Terminal Graphics Protocol Support The TUI can display actual images (not just placeholders) if your terminal supports graphics protocols: | Protocol | Terminals | |----------|-----------| | Kitty | Kitty, WezTerm, Ghostty | | iTerm2 | iTerm2 (macOS) | | Sixel | foot, mlterm, some xterm configs | Optional packages for enhanced display: - `textual-image` - Full image support in Textual TUI - `rich-pixels` - Unicode-based image rendering ```bash # Install optional image support pip install textual-image rich-pixels ``` ## Keyboard Shortcuts | Key | Action | |-----|--------| | `Enter` | Select current option (auto-advances for single-select) | | `Space` | Toggle option (multi-select mode) | | `Tab` / `Shift+Tab` | Navigate between question tabs | | `Arrow Up/Down` | Move between options | | `1-5` | Quick select option by number | | `Esc` | Cancel interview | ## Response Format ```json { "session_id": "abc123", "completed": true, "duration_seconds": 45, "responses": { "tts_model": { "decision": "override", "value": "horus_final_prod (Recommended)" }, "research_areas": { "decision": "override", "value": ["Voice cloning", "Dataset curation"] }, "custom_answer": { "decision": "override", "value": "My custom response", "other_text": "My custom response" } } } ``` ### Response Fields | Field | Description | |-------|-------------| | `decision` | "accept" (used recommendation), "override" (chose different), "skip" | | `value` | Selected option label(s). Array for multi_select. | | `other_text` | Present when "Other" was selected with custom text | | `note` | Legacy refinement note (v1 compat) | ## Visual Reference ### TUI Mode ``` ┌─────────────────────────────────────────────────────────┐ │ Clarifying Questions │ ├─────────────────────────────────────────────────────────┤ │ ← □ TTS Model □ Voice Anchors □ Research ✓ Submit → │ ├─────────────────────────────────────────────────────────┤ │ │ │ Which TTS model should we use for narration? │ │ │ │ [Image 1] (800x600) │ │ │ │ 1. horus_final_prod (Recommended) │ │ Latest production checkpoint from XTTS training │ │ 2. horus_qwen3_06b_final │ │ Qwen3 0.6B model checkpoint │ │ 3. Need new training │ │ Current models insufficient │ │ › 4. Other: [________________] │ │ │ ├─────────────────────────────────────────────────────────┤ │ Enter to select · Tab/Arrow to navigate · Esc cancel │ └─────────────────────────────────────────────────────────┘ ``` ### HTML Mode - Dark theme with chip-style tab navigation - Actual images displayed (base64 embedded) - Same keyboard shortcuts as TUI - Auto-advances on single-select ## Integration Example ```python from interview import Interview, Question, Option # Create questions with v2 format questions = [ Question( id="model_choice", header="Model", text="Which model should we use?", options=[ Option(label="GPT-4", description="Most capable, higher cost"), Option(label="Claude 3", description="Good balance of capability/cost"), Option(label="Local LLM", description="Privacy-focused, lower cost"), ], multi_select=False, ), Question( id="features", header="Features", text="Which features should we enable?", options=[ Option(label="Caching", description="Reduce API calls"), Option(label="Streaming", description="Real-time output"), Option(label="Logging", description="Debug capability"), ], multi_select=True, ), ] # Run interview interview = Interview(title="Configuration Options") result = interview.run(questions, mode="auto") # Process responses model = result["responses"].get("model_choice", {}).get("value") features = result["responses"].get("features", {}).get("value", []) ``` ## Migration from v1 ### Question Format ```python # v1 format (still works) { "id": "q1", "text": "Keep this Q&A?", "type": "yes_no_refine", "recommendation": "keep", "options": ["Option A", "Option B"] # String options } # v2 format (recommended) { "id": "q1", "header": "Q&A Review", # NEW: Tab label "text": "Keep this Q&A?", "options": [ # NEW: Dict options with descriptions {"label": "Option A", "description": "Explanation A"}, {"label": "Option B", "description": "Explanation B"} ],
GitHub에서 보기
이 SKILL.md는 매우 커서 SkillsMP가 여기에는 첫 섹션만 미리 보여줍니다. GitHub에서 보기