Skip to content

writing-tasks: phase slug 자동 도출 휴리스틱이 너무 좁음 #39

@devstefancho

Description

@devstefancho

배경

fix/sdd-workflow-handoffs 브랜치(PR #38)의 Non-interactive defaults 표는 brand-new phase slug 를 다음과 같이 정의한다:

Derive from spec filename(s): kebab-case, drop trailing numbers, truncate to 3 words. Example: specs/phase-3/01-profile-migration.mdphase-3-profile.

문제는 phase 안에 spec 이 여러 개 있을 때 첫 spec 의 이름만 반영 한다는 것.

관찰된 사례 (Kanban 검증, 2026-04-26)

  • spec 들: specs/phase-1/01-wip-limit-per-column.md, specs/phase-1/02-persistent-json-storage.md
  • 실제 phase 의 도메인: WIP limit + JSON storage = "보드 강화 / foundation"
  • 휴리스틱이 도출한 슬러그: phase-1-wip-limit-column ← 첫 spec 이름만 반영
  • 사람이라면 골랐을 것: phase-1-foundation 또는 phase-1-board-hardening

같은 패턴이 이전 라운드(Node.js URL shortener, Python statlib)에서도 관찰됐다 — phase 가 단일 spec 일 땐 문제 없는데, 2개 이상 spec 에서 마찰이 생긴다.

영향

  • Cosmetic. 워크플로 자체는 정상 동작 (task 파일 정상 생성, 의존성 sync, status dashboard 정상)
  • 하지만 디렉토리 이름이 phase 의 실제 범위를 misrepresent — 사용자가 매번 rename 하고 싶은 충동

개선 후보 (어느 쪽이든 OK)

  1. 단순화 (권장): brand-new phase 디폴트를 그냥 phase-N 으로. 슬러그 없이.
  2. Aggregation: 모든 spec 의 공통 단어 추출 (예: TF-IDF 비슷한 휴리스틱) → 너무 복잡할 수도
  3. Idle prompt: 자동 모드가 아닐 땐 슬러그를 제안 + 첫 작업 직전에 한 번만 물어봄

해당 파일

writing-tasks-plugin/skills/writing-tasks/SKILL.md 의 "Non-interactive defaults" 표, Phase slug for a brand-new phase

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions