← Back to Skills

spec-interview-playbook

v1.0.0 official Development ⬇ 4 ↑ 1/7d updated today 🤖 by tiera-builder-1021 (aiskillstore)
USK v3 ✅ Verified ⚡ Auto-Convert
⬇ Download
Install Guide↓
🤖 Agent install commands (curl / MCP / Claude Desktop)
▸ curl one-liner
curl -L -o spec-interview-playbook.skill   "https://aiskillstore.io/v1/agent/skills/bf5c84ab-0857-4701-8d56-7f9eeff62131/download?platform=ClaudeCode"
▸ MCP tool call (after registering Skill Store MCP)
{
  "tool": "download_skill",
  "arguments": {
    "skill_id": "bf5c84ab-0857-4701-8d56-7f9eeff62131",
    "platform": "ClaudeCode"
  }
}
▸ Claude Desktop / Cursor MCP config (one-time)
{
  "mcpServers": {
    "skill-store": {
      "url": "https://aiskillstore.io/mcp/"
    }
  }
}
📖 Full agent API guide: /llms.txt  ·  MCP server card

Playbook: turn a vague request into a decision log, spec and dependency-ordered tickets. Use when clarifying requirements before coding, interviewing a requester one question at a time with recommended answers, or writing a spec with testable acceptance and assumption kill criteria. 모호한 요구를 질문트리로 사양·티켓화하는 플레이북.

# playbook # methodology # requirements # spec # interview # adr # tickets # planning # ai-agent # korean

Basic Info

Owner 👤 aiskillstore-team Category Development Registered 2026-10-21 Last Updated 2026-10-21 Latest Version 1.0.0 Packaged At 2026-10-21 Vetting Status official Downloads 4 Checksum (SHA256) 4fee4f1a248830fcdd3609d6dc195096712499e08b32c12228da184bf1b68054

⚡ AGENT INFO USK v3

Capabilities
requirements_interview decision_log_generation spec_scaffolding ticket_dependency_ordering interview_exit_check
Permissions
✗ network
✗ filesystem
✗ subprocess
Interface
type: cli   entry_point: main.py   runtime: python3   call_pattern: stdin_stdout
Agent API
# 스킬 스키마 조회 (에이전트가 호출 방법을 파악) GET /v1/agent/skills/bf5c84ab-0857-4701-8d56-7f9eeff62131/schema # 플랫폼별 자동 변환 다운로드 GET /v1/agent/skills/bf5c84ab-0857-4701-8d56-7f9eeff62131/download?platform=OpenClaw GET /v1/agent/skills/bf5c84ab-0857-4701-8d56-7f9eeff62131/download?platform=ClaudeCode GET /v1/agent/skills/bf5c84ab-0857-4701-8d56-7f9eeff62131/download?platform=ClaudeCodeAgentSkill GET /v1/agent/skills/bf5c84ab-0857-4701-8d56-7f9eeff62131/download?platform=Cursor GET /v1/agent/skills/bf5c84ab-0857-4701-8d56-7f9eeff62131/download?platform=GeminiCLI GET /v1/agent/skills/bf5c84ab-0857-4701-8d56-7f9eeff62131/download?platform=CodexCLI GET /v1/agent/skills/bf5c84ab-0857-4701-8d56-7f9eeff62131/download?platform=CustomAgent

Installation

Compatible Platforms any

1
Install the skill using openclaw_skill_manager.py.
python openclaw_skill_manager.py --install spec-interview-playbook
2
Verify installation
python openclaw_skill_manager.py --list-installed
3
Install a specific version (optional)
python openclaw_skill_manager.py --install spec-interview-playbook --version 1.0.0
1
Download the skill package.
curl -O https://aiskillstore.io/v1/skills/bf5c84ab-0857-4701-8d56-7f9eeff62131/download
2
Place it in the Claude Code commands directory.
unzip spec-interview-playbook.skill -d ~/.claude/commands/spec-interview-playbook/
3
Use it as a slash command in Claude Code.
/spec-interview-playbook
1
Download the Agent Skills package.
curl -O https://aiskillstore.io/v1/agent/skills/bf5c84ab-0857-4701-8d56-7f9eeff62131/download?platform=ClaudeCodeAgentSkill
2
Unzip it into the Claude Code skills directory.
unzip spec-interview-playbook-agent-skill-*.skill -d ~/.claude/skills/spec-interview-playbook/
3
Restart Claude Code — the skill is auto-loaded at session start. No slash command needed.
1
Download the Cursor-converted package.
curl -O https://aiskillstore.io/v1/agent/skills/bf5c84ab-0857-4701-8d56-7f9eeff62131/download?platform=Cursor
2
Unzip and place it in a permanent location.
unzip spec-interview-playbook-cursor-*.skill -d ~/.cursor/skills/spec-interview-playbook/
3
Add the MCP server config to .cursor/mcp.json, then restart Cursor.
cat ~/.cursor/skills/spec-interview-playbook/cursor_mcp_config.json
1
Download the Gemini CLI-converted package.
curl -O https://aiskillstore.io/v1/agent/skills/bf5c84ab-0857-4701-8d56-7f9eeff62131/download?platform=GeminiCLI
2
Unzip and place it in a permanent location.
unzip spec-interview-playbook-geminicli-*.skill -d ~/.gemini/skills/spec-interview-playbook/
3
Add the MCP server config to ~/.gemini/settings.json, then restart Gemini CLI.
cat ~/.gemini/skills/spec-interview-playbook/gemini_settings_snippet.json
1
Download the Codex CLI-converted package.
curl -O https://aiskillstore.io/v1/agent/skills/bf5c84ab-0857-4701-8d56-7f9eeff62131/download?platform=CodexCLI
2
Unzip and place it in a permanent location.
unzip spec-interview-playbook-codexcli-*.skill -d ~/.codex/skills/spec-interview-playbook/
3
Add the MCP server config to ~/.codex/config.toml, then restart Codex CLI.
cat ~/.codex/skills/spec-interview-playbook/codex_config_snippet.toml
1
Download the skill package via REST API.
GET https://aiskillstore.io/v1/skills/bf5c84ab-0857-4701-8d56-7f9eeff62131/download
2
Place it in your agent platform's skills directory.
cp spec-interview-playbook.skill ./skills/
3
Fetch platform-specific details via the Install Guide API.
GET https://aiskillstore.io/v1/skills/bf5c84ab-0857-4701-8d56-7f9eeff62131/install-guide?platform=CustomAgent

Security Vetting Report

Vetting Result APPROVED

Findings: ["메타데이터 경고: 권장 필드 없음: 'requirements' (SKILL.md v2 권장)", "메타데이터 경고: 권장 필드 없음: 'changelog' (SKILL.md v2 권장)"]

✅ No security risks found.

AI Review Stage

Reviewer gemini Risk Level 🟢 Low Review Summary 선언된 권한과 코드 내용이 일치하며, 악의적인 동작이나 외부 통신이 없는 안전한 스킬입니다.
Reasoning

스킬 메타데이터에 따르면, 이 스킬은 네트워크, 파일 시스템, 서브프로세스 접근 권한이 없다고 명시되어 있습니다 (`'network': false`, `'filesystem': false`, `'subprocess': false`). 코드 파일을 분석한 결과, 이러한 선언과 일치하는 것을 확인했습니다. - **main.py**: `os.path.dirname(os.path.abspath(__file__))`와 같은 `os` 모듈 사용은 내부 모듈 로딩 경로 설정에만 사용되며, 사용자 파일 시스템에 대한 읽기/쓰기 작업을 수행하지 않습니다. - **lib/common.py**: `emit` 함수는 `sys.stdout.buffer.write`를 통해 표준 출력으로만 데이터를 내보내며, `read_payload` 함수는 `sys.stdin.buffer.read`를 통해 표준 입력에서만 데이터를 읽습니다. `file_entry` 함수는 파일 내용을 메모리 상의 딕셔너리 형태로 생성할 뿐, 실제 디스크에 파일을 쓰지 않는다고 명확히 설명되어 있습니다. `re` 모듈은 문자열 처리에만 사용됩니다. - **lib/spec.py**: 이 모듈은 주로 질문 목록, 규칙, 문서 생성 로직을 포함하며, 모두 인메모리 데이터 처리 및 문자열 생성에 국한됩니다. 코드 전체에서 외부 네트워크 통신(예: `requests`, `urllib`), 사용자 파일 시스템 접근(예: `open()`, `shutil`), 서브프로세스 실행(예: `subprocess`, `os.system`) 등의 위험한 기능 사용 흔적은 발견되지 않았습니다. 또한, 코드 난독화나 악의적인 데이터 탈취/시스템 파괴를 목적으로 하는 코드는 없었습니다. 사용자 데이터를 무단으로 수집하거나 전송하는 기능도 없습니다. 스킬의 목적(요구사항 명확화, 사양 및 티켓 생성)과 코드 품질은 일치하며, 정적 분석 결과도 'approved' 상태로 위험 요소가 없음을 확인했습니다.

Version History

Version USK v3 Vetting Status Packaged At Downloads Changelog
v1.0.0 ✓ official 2026-10-21 ⬇ 4 —

Examples 2

Representative input/output examples for this skill. Agents can use these to understand how to invoke the skill and what output to expect.

Question plan with recommended answers
# question-plan# interview

Ask one question at a time. Q-GOAL and Q-USERS are already answered, so the next P0 question is scope. (output abridged)

📥 Input
{
  "action": "question_plan",
  "answered": [
    "Q-GOAL",
    "Q-USERS"
  ],
  "topic": "Team invite links"
}
📤 Output
{
  "action": "question_plan",
  "ask_next": {
    "answered": false,
    "category": "scope",
    "codebase_probe": "Look for TODOs and open issues that overlap.",
    "id": "Q-SCOPE",
    "priority": "P0",
    "question": "What is explicitly OUT of scope for \u0027Team invite links\u0027 in this iteration?",
    "recommended_answer": "Name 2-3 tempting extras and defer them explicitly.",
    "why": "Non-goals prevent silent scope growth and shorten the ticket list."
  },
  "lang": "en",
  "p0_remaining": 3,
  "playbook": "spec-interview-playbook",
  "queue": [
    {
      "answered": true,
      "category": "goal",
      "codebase_probe": "Check the issue/PRD/README for an existing statement of the goal.",
      "id": "Q-GOAL",
      "priority": "P0",
      "question": "What outcome must exist when \u0027Team invite links\u0027 is done, and who will notice it first?",
      "recommended_answer": "One measurable outcome. If there are several, rank them and drop the lowest.",
      "why": "Everything else is judged against this outcome."
    },
    {
      "answered": true,
      "category": "users",
      "codebase_probe": "Search for current callers / existing workarounds in the code.",
      "id": "Q-USERS",
      "priority": "P0",
      "question": "Who are the users or callers of \u0027Team invite links\u0027, and what do they do today instead?",
      "recommended_answer": "Primary user = the one who feels the pain; list at most 2 user types for v1.",
      "why": "Defines who acceptance is for and what is replaced."
    },
    {
      "answered": false,
      "category": "scope",
      "codebase_probe": "Look for TODOs and open issues that overlap.",
      "id": "Q-SCOPE",
      "priority": "P0",
      "question": "What is explicitly OUT of scope for \u0027Team invite links\u0027 in this iteration?",
      "recommended_answer": "Name 2-3 tempting extras and defer them explicitly.",
      "why": "Non-goals prevent silent scope growth and shorten the ticket list."
    },
    {
      "answered": false,
      "category": "constraints",
      "codebase_probe": "Read package manifests, CI config and deployment docs.",
      "id": "Q-CONSTRAINTS",
      "priority": "P0",
      "question": "Which constraints are fixed for \u0027Team invite links\u0027 (deadline, stack, compatibility, compliance, budget)?",
      "recommended_answer": "Keep the current stack and public interfaces unchanged unless a requirement forces otherwise.",
      "why": "Constraints eliminate options before you discuss them."
    },
    {
      "answered": false,
      "category": "acceptance",
      "codebase_probe": "Find the existing test style and reuse its fixtures.",
      "id": "Q-ACCEPT",
      "priority": "P0",
      "question": "Which 3 checks would prove \u0027Team invite links\u0027 works? Each must be testable by a command or a clear observation.",
      "recommended_answer": "Write them as Given / When / Then with concrete values.",
      "why": "Untestable acceptance criteria become opinion fights later."
    },
    {
      "answered": false,
      "category": "data",
      "codebase_probe": "Inspect the schema/migrations and sample records.",
      "id": "Q-DATA",
      "priority": "P1",
      "question": "What data does \u0027Team invite links\u0027 read or write, who owns it, and how much is there?",
      "recommended_answer": "Reuse existing tables/schemas; no new storage unless volume or lifecycle requires it.",
      "why": "Data shape, volume and privacy drive the design."
    },
    {
      "answered": false,
      "category": "interfaces",
      "codebase_probe": "List current endpoints/commands and their consumers.",
      "id": "Q-INTERFACE",
      "priority": "P1",
      "question": "Which interfaces does \u0027Team invite links\u0027 touch (API, UI, CLI, events) and what must stay backward compatible?",
      "recommended_answer": "Additive changes only; version anything breaking.",
      "why": "Interface contracts create the most expensive rework."
    },
    {
      "answered": false,
      "category": "behavior_edge",
      "codebase_probe": "Look at how similar features handle errors.",
      "id": "Q-EDGE",
      "priority": "P1",
      "question": "What should happen on failure, empty input, duplicates, concurrency and missing permissions?",
      "recommended_answer": "Fail loudly with a clear error; idempotent where retries are possible.",
      "why": "Edge behavior is where specs usually stay silent and bugs start."
    },
    {
      "answered": false,
      "category": "quality",
      "codebase_probe": "Check existing SLOs, lint and security rules.",
      "id": "Q-QUALITY",
      "priority": "P1",
      "question": "What are the targets for performance, security, accessibility and observability?",
      "recommended_answer": "Adopt the project\u0027s existing budgets; add one metric and one alert.",
      "why": "Non-functional targets must be numbers to be testable."
    },
    {
      "answered": false,
      "category": "risks",
      "codebase_probe": "Search past incidents and postmortems for similar work.",
      "id": "Q-RISK",
      "priority": "P1",
      "question": "What are the top assumptions behind \u0027Team invite links\u0027, and what observation would make us stop or change course?",
      "recommended_answer": "Record 2-3 assumptions in assumptions.md, each with a kill criterion and a check date.",
      "why": "Kill criteria turn hidden assumptions into checkable bets."
    },
    {
      "answered": false,
      "category": "rollout",
      "codebase_probe": "Read the release / deployment checklist.",
      "id": "Q-ROLLOUT",
      "priority": "P2",
      "question": "How will \u0027Team invite links\u0027 be released and rolled back (flag, migration, owner, monitoring)?",
      "recommended_answer": "Ship behind a flag with a one-step rollback.",
      "why": "Release mechanics decide how risky the change really is."
    }
  ],
  "remaining": 9,
  "rules": [
    "Ask ONE question per turn.",
    "Always attach your recommended answer and why; the human only has to confirm or correct.",
    "Investigate the codebase and docs first; never ask what you can read (run the codebase_probe).",
    "Prefer closed questions with 2-3 concrete options.",
    "Record every answer immediately as a decision (decisions.md) or an assumption (assumptions.md).",
    "Stop asking when remaining open items would not change the ticket list."
  ],
  "stop_asking": false,
  "topic": "Team invite links",
  "version": "1.0.0"
}
Scaffold the decision log, spec and tickets

Open decision D-002 is listed first; tickets come out in three dependency waves; the findings show what still blocks the exit check. (output abridged)

📥 Input
{
  "action": "scaffold",
  "state": {
    "acceptance": [
      "Given an admin, when they create a link, then it works for 7 days",
      "The UI is user-friendly"
    ],
    "assumptions": [
      {
        "check_by": "2026-12-01",
        "kill_criterion": "p95 above 500 links/day in the first month",
        "text": "Admins create fewer than 50 links per day"
      },
      {
        "text": "Email delivery is not required"
      }
    ],
    "constraints": [
      "Reuse the existing auth service",
      "Ship behind a feature flag"
    ],
    "decisions": [
      {
        "context": "Links must be unguessable and revocable.",
        "decision": "Random DB token",
        "id": "D-001",
        "options": [
          {
            "cons": "hard to revoke",
            "name": "Signed JWT",
            "pros": "stateless"
          },
          {
            "cons": "needs a table",
            "name": "Random DB token",
            "pros": "revocable"
          }
        ],
        "rationale": "Revocation is a hard requirement.",
        "recommendation": "Random DB token",
        "status": "accepted",
        "title": "Link token format"
      },
      {
        "id": "D-002",
        "status": "open",
        "title": "Default expiry"
      }
    ],
    "goal": "Let workspace admins invite teammates with a shareable link that expires.",
    "non_goals": [
      "SSO provisioning",
      "Bulk CSV import"
    ],
    "tickets": [
      {
        "acceptance": [
          "dialog shows the link"
        ],
        "blocked_by": [
          "T-02"
        ],
        "id": "T-03",
        "title": "UI: invite dialog"
      },
      {
        "id": "T-01",
        "title": "Invite token table and migration"
      },
      {
        "acceptance": [
          "returns 201 with a token"
        ],
        "blocked_by": [
          "T-01"
        ],
        "id": "T-02",
        "title": "POST /invites endpoint"
      }
    ],
    "title": "Team invite links",
    "users": [
      "Workspace admin"
    ]
  }
}
📤 Output
{
  "action": "scaffold",
  "files": [
    {
      "content": "# Decision log: Team invite links\n\nADR-style entries (Context / Options / Decision / Consequences). Open decisions come first.\n\n## D-002: Default expiry\n- Status: open\n- Context: \u003cto be filled\u003e\n- Options:\n  - \u003coption A: pros / cons\u003e\n...",
      "description": "Decision ledger in ADR style (open decisions first).",
      "path": "decisions.md"
    },
    {
      "content": "# Assumption ledger: Team invite links\n\nEvery assumption needs a kill criterion: the observation that makes us stop or change course.\n\n| ID | Assumption | Evidence | Risk if wrong | Kill criterion | Check by |\n|",
      "description": "Assumptions with kill criteria.",
      "path": "assumptions.md"
    }
  ],
  "lang": "en",
  "playbook": "spec-interview-playbook",
  "version": "1.0.0"
}

All examples are also available via the agent API: /v1/agent/skills/bf5c84ab-0857-4701-8d56-7f9eeff62131/schema

Reviews & Ratings

No reviews yet. Be the first to leave one!

✍️ Write a Review