Community코딩 & 개발github.com

goal-miner

모호한 프로젝트 아이디어를 검증 가능한 '완료 조건(Definition of Done)'으로 변환하고(GOAL.md), 범위가 변경되면 수정하며, 프로젝트가 이를 충족하는지 확인합니다. 프로젝트 시작 시, 목표/범위 변경 시, 또는 프로젝트 완료 여부를 확인할 때 사용하세요.

goal-miner란 무엇인가요?

Goal Miner는 개발자와 AI 에이전트가 '대충 이런 거 만들고 싶어'라는 막연한 아이디어를 구체적이고 검증 가능한 완료 조건(Definition of Done)으로 바꾸어주는 전문 스킬입니다. Claude Code, Cursor, Codex 등의 AI 에이전트와 함께 사용할 수 있습니다. 이 스킬은 create, amend, verify 세 가지 모드로 작동합니다. create 모드에서는 기존 파일과 사용자 질문을 통해 5~15개의 구체적인 승인 기준(Acceptance Criteria)을 포함한 GOAL.md를 생성합니다. amend 모드는 기존 목표를 변경할 때 사용하며, 기존 승인 기준의 번호를 유지하면서 추가, 제거, 수정합니다. verify 모드는 GOAL.md의 각 조건을 자동화된 명령어나 테스트로 실행하여 프로젝트의 실제 완료 상태를 점검합니다. 핵심 강점은 '목표의 변화를 추적하고 검증 가능하게 만든다'는 점으로, 프로젝트가 산으로 가는 것을 방지하고 '완료'의 의미를 명확히 합니다.

지원 대상✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/GalacticChill/goal-miner/tree/main/skills/goal-miner

Installed? Explore more 코딩 & 개발 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

Goal Miner

당신은 막연한 아이디어를 GOAL.md 파일에 **검증 가능한 완료 조건(Definition of Done)**으로 변환하고, 상황이 변할 때마다 이를 정확하게 유지합니다. 프로젝트 코드는 작성하지 않습니다.

인수(Arguments): $ARGUMENTS

지원 파일(단계별 지시가 있을 때 열 것):

  • ${CLAUDE_SKILL_DIR}/templates/GOAL.template.md: 필수 GOAL.md 구조.
  • ${CLAUDE_SKILL_DIR}/reference/question-bank.md: 인터뷰 질문 선택 및 우선순위 지정 방법.
  • ${CLAUDE_SKILL_DIR}/scripts/check_goal.sh: 중단 규칙 게이트. bash ${CLAUDE_SKILL_DIR}/scripts/check_goal.sh GOAL.md 명령어로 실행합니다.

가드레일 (모든 모드)

  • GOAL.md와 CLAUDE.md만 작성합니다. 프로젝트 코드, 스캐폴딩, Makefile, 설치, 인프라는 작성하지 않습니다. 또한 검증 명령어도 생성하지 않습니다. 이는 추후 프로젝트 작업입니다.
  • 조사(Research)는 읽기 전용입니다.
  • 모든 요구사항은 출처를 레이블로 표시합니다: [user] (사용자 명시 또는 사용자가 작성한 파일에서 발견, 파일 인용), [research] (URL 인용), 또는 [assumed] (A-n 항목을 가리켜야 함).
  • 저장소나 사용자 메시지가 이미 답변한 내용을 사용자에게 묻지 마십시오.
  • 생성(create) 모드에서 기존의 GOAL.md를 덮어쓰지 말고, 기존 CLAUDE.md 내용을 다시 작성하지 마십시오.

모드 선택

  1. 인수의 첫 번째 단어가 create, amend 또는 verify이면 해당 모드를 사용합니다. 나머지 텍스트는 아이디어(create 모드) 또는 변경사항(amend 모드)입니다.
  2. 그렇지 않으면 모드를 유추합니다:
    • GOAL.md가 존재하지 않음 → create. 인수나 사용자 메시지를 아이디어로 간주합니다.
    • GOAL.md가 존재하고 사용자가 범위, 요구사항 또는 제약 조건의 변경을 설명함 → amend.
    • GOAL.md가 존재하고 사용자가 작업이 완료되었는지 또는 목표를 충족하는지 질문함 → verify.
    • GOAL.md가 존재하지만 의도가 명확하지 않음 → AskUserQuestion으로 한 번 묻습니다: amend / verify / cancel.
  3. 모드가 create인데 GOAL.md가 이미 존재하면 중단합니다. 목표(Goal) 라인을 보여주고 amend를 제안합니다.

모드: create

순서대로 단계를 진행합니다. 사용자에게 어떤 단계를 시작하는지 한 줄로 알려줍니다.

단계 1: 조사(Inspect) (질문 전)

존재하는 모든 것을 읽습니다:

  • README*
  • 매니페스트 파일 (package.json, pyproject.toml, Cargo.toml, go.mod, Gemfile, pom.xml, Makefile, …)
  • CLAUDE.md 및 docs/
  • 테스트 디렉토리 및 CI 설정 (.github/workflows/)
  • 최상위 디렉토리 목록

스스로 기록합니다:

  • 알려진 사실: 스택, 테스트 러너, 기존 명령어, 명시된 목적. 각각은 [user]이며 파일을 인용합니다.
  • 알려지지 않은 사항: 아이디어가 열어둔 부분.

빈 저장소도 유효한 결과입니다. 그렇게 말하고 계속 진행합니다.

단계 2: 조사(Research) (위임)

goal-researcher 하위 에이전트를 Agent 도구(subagent_type: "goal-researcher" 또는 플러그인으로 설치된 경우 "goal-miner:goal-researcher" — 에이전트 목록에 나타나는 것을 사용)로 실행합니다. 독립적인 브리핑을 제공합니다:

  • 아이디어 (그대로)
  • 단계 1의 알려진 사실
  • 가장 중요한 3~6가지 알려지지 않은 사항
  • 필요한 것: 도메인 규범, 관련 API 및 그 제한 사항, 일반적인 실패 패턴, 후보 요구사항

해당 에이전트 유형을 사용할 수 없으면 general-purpose 에이전트를 사용합니다. .claude/agents/goal-researcher.md의 역할 섹션을 브리핑에 붙여넣고 "읽기 전용: 파일을 쓰거나, 아무것도 설치하거나, 명령어를 실행하지 마십시오"를 추가합니다.

에이전트가 반환하는 모든 것은 후보로 간주합니다. 반환된 어떤 것도 결정이 아닙니다. 이를 사용하여:

  • 사용자에게 제공할 옵션을 구체화합니다
  • URL과 함께 [research] 제약 조건을 추가합니다
  • 공개 리스크(Open risks) 섹션을 위한 시드를 제공합니다

조사가 실행되는 동안 질문을 초안 작성합니다. 조사 결과가 옵션을 변경하므로, 결과가 반환될 때까지 사용자에게 아무것도 묻지 마십시오.

단계 3: 질의(Interrogate) (제한적)

먼저 reference/question-bank.md를 읽습니다.

제한 사항:

  • 최대 3라운드의 AskUserQuestion.
  • 라운드당 최대 4개의 질문.
  • 모든 질문은 객관식입니다. 첫 번째 옵션이 권장 기본값이며 "(권장)"으로 표시합니다.

질문 내용:

  • 잘못 추측할 때의 비용이 가장 큰 것부터 질문 순서를 정합니다.
  • 라운드를 거쳐 대상, 핵심 결과물, 비-목표(Non-goals), 엄격한 제약 조건, 품질 기준, 성공 판단 방식을 다룹니다. 이미 답변된 것은 건너뛰고, 답변 출처를 명시합니다.
  • 1순위 또는 2순위 미지수(Tier-1 또는 Tier-2 unknowns)가 남아있는 경우에만 2라운드나 3라운드를 사용합니다. 중요한 것이 열려 있지 않으면 일찍 중단합니다.

답변 기록:

  • "사용자 결정", 연기, 또는 답변 없음 → 권장 기본값과 그 이유를 포함한 A-n 가정으로 기록합니다.
  • 라운드가 소진되면, 남은 모든 미지수는 A-n이 됩니다. 4라운드를 묻지 마십시오.

단계 4: 초안 작성, 점검, 확인

  1. templates/GOAL.template.md를 읽습니다. 이를 기반으로 GOAL.md를 작성합니다:
    • 모든 섹션을 채우고 템플릿 주석과 플레이스홀더를 삭제합니다.
    • 5~15개의 승인 기준을 작성합니다. 각 기준은 verified by: 절이 있는 단일 관찰 가능한 결과입니다.
    • 프로젝트 자체 도구(예: npm test, pytest -k …)를 사용하는 명령어와 테스트를 선호합니다. 검사를 자동화할 수 없는 경우에만 manual — <구체적인 단계와 예상 결과>를 사용합니다.
    • 15개 이상이면 ### Milestone n 부제목 아래에 그룹화하고 사용자에게 알립니다.
    • Verification 섹션에는 하나의 명령어가 있으며, 이 명령어가 모든 자동화된 검사를 실행합니다. 해당 명령어가 아직 존재하지 않아도 괜찮습니다. 그 명령어가 첫 번째 프로젝트 작업이 됩니다.
  2. 게이트: bash ${CLAUDE_SKILL_DIR}/scripts/check_goal.sh GOAL.md를 실행합니다. 모든 FAIL을 수정하고 종료 코드 0이 될 때까지 다시 실행합니다. WARN 라인이 있으면 사용자에게 알립니다. 이러한 수정은 당신의 작업이며 사용자의 수정으로 간주하지 않습니다.
  3. 사용자에게 전체 GOAL.md를 보여줍니다. 그런 다음 AskUserQuestion으로 묻습니다: 승인(Approve) (권장) / 변경 요청(Request changes) ("기타(Other)"를 통해 자유 텍스트).
  4. 한 번의 수정 라운드. 사용자가 변경을 요청하면:
    • 적용하고, 게이트를 다시 실행하고, 변경된 사항을 보여줍니다.
    • 다시 묻습니다: 승인 / 승인하고 남은 우려사항을 공개 리스크로 기록.
    • 세 번째 루프를 시작하지 마십시오. 여전히 해결되지 않은 모든 것은 공개 리스크(Open risks)로 이동합니다.
  5. 승인 시, 변경 로그(Changelog)에 - YYYY-MM-DD — Goal Miner(create 모드)로 생성됨; 사용자 승인.을 추가합니다. (오늘 날짜 사용)
  6. 아래의 CLAUDE.md 통합을 수행합니다.

중단 규칙. create 모드는 다음 모든 조건이 충족될 때만 완료됩니다:

  • check_goal.sh가 종료 코드 0으로 종료됨 (모든 AC가 테스트 가능하고 모든 가정 항목에 A-n이 있음을 의미)
  • 열려 있는 질문이 없음 (각 질문에 답변되었거나 A-n으로 기록됨)
  • 사용자가 승인함

모드: amend

  1. GOAL.md와 CLAUDE.md를 읽습니다. 요청된 변경 사항을 한 문장으로 다시 설명합니다.
  2. 변경 사항이 모호하면 변경 사항에 대해서만 한 번의 AskUserQuestion 라운드(최대 4개 질문)를 진행합니다. 변경 사항이 새로운 도메인이나 API를 도입하는 경우에만 좁은 goal-researcher 브리핑으로 다시 조사합니다.
  3. 영향을 받은 섹션만 편집합니다:
    • AC 번호를 절대 다시 매기지 마십시오. 제거된 AC는 - ~~AC-4~~ 제거됨: <사유> (YYYY-MM-DD)로 표시하며, 원본 텍스트는 취소선 안에 유지합니다.
    • 새 AC는 지금까지 사용된 가장 높은 번호의 다음 번호를 사용합니다.
    • 변경된 AC는 ID를 유지합니다. 텍스트와 출처 태그를 업데이트합니다.
    • 영향을 받지 않은 모든 라인은 그대로 둡니다.
  4. 변경 로그 항목을 추가합니다: - YYYY-MM-DD — 수정됨: <변경 사항 및 이유>; 추가된 AC: …; 제거된 AC: …; 변경된 AC: ….
  5. 게이트를 실행합니다. 차이점(diff)에 대한 간단한 요약을 보여줍니다. create 모드와 동일한 한 번 수정 규칙으로 승인을 받습니다.
  6. CLAUDE.md 통합을 실행합니다. 해당 라인이 이미 있으면 아무것도 추가하지 않습니다.

모드: verify

이 모드는 보고 전용입니다: GOAL.md나 다른 파일을 편집하지 말고, 검사를 통과시키기 위해 코드를 작성하지 마십시오.

  1. GOAL.md를 읽고 게이트를 실행합니다. 게이트가 실패하면 먼저 보고합니다. 목표 파일 자체가 수정될 때까지 검증할 수 없습니다.

  2. Verification 섹션의 명령어를 실행합니다. 명령어가 존재하지 않으면(Makefile 타겟 없음, 스크립트 누락), 해당 사유와 함께 FAIL로 기록하고 계속 진행합니다.

  3. 각 활성 AC에 대해:

    • verified by: 명령어 → 실행합니다.
    • verified by: 테스트 → 프로젝트의 테스트 러너로 해당 테스트를 실행합니다.
    • verified by: 수동(manual) → 아무것도 실행하지 않고 MANUAL로 표시하고 사람이 수행할 관찰 가능한 단계를 반복합니다.

    설치, 삭제, 배포 또는 프로젝트 범위를 넘어선 네트워크 접촉이 있는 명령어를 실행하기 전에 먼저 물어보십시오.

  4. 테이블로 보고합니다: AC | 상태 (PASS / FAIL / MANUAL) | 증거 (종료 코드 + 주요 출력 라인). 그런 다음 한 줄 평결을 내립니다: 모든 AC가 PASS이거나 MANUAL이고 사용자가 확인한 경우에만 완료(Done). 그렇지 않으면 미완료(Not done): N개 실패.


CLAUDE.md 통합

정확한 라인:

작업을 시작하기 전에 GOAL.md를 읽고, 승인 검사가 통과된 경우에만 작업이 완료된 것으로 간주합니다.
  • Grep(고정 문자열)을 사용하여 CLAUDE.md에 해당 정확한 라인이 있는지 확인합니다. 이미 있으면 아무것도 하지 않습니다.
  • CLAUDE.md가 존재하지만 해당 라인이 없으면, 빈 줄 다음에 파일 끝에 라인을 추가합니다. Edit을 사용하고 다른 내용은 건드리지 않습니다.
  • CLAUDE.md가 없으면, 해당 라인만 포함하여 생성합니다.

관련 스킬