{"id":50741239,"url":"https://github.com/dotoricode/prompt-grill","last_synced_at":"2026-06-10T17:02:30.565Z","repository":{"id":357035094,"uuid":"1234702063","full_name":"dotoricode/prompt-grill","owner":"dotoricode","description":null,"archived":false,"fork":false,"pushed_at":"2026-05-11T01:54:04.000Z","size":25,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-11T03:37:36.005Z","etag":null,"topics":["claude-code","claude-code-skill","developer-tools","prompt-engineering"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dotoricode.png","metadata":{"files":{"readme":"README.ko.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-05-10T14:31:25.000Z","updated_at":"2026-05-11T01:54:07.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/dotoricode/prompt-grill","commit_stats":null,"previous_names":["dotoricode/prompt-grill"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/dotoricode/prompt-grill","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dotoricode%2Fprompt-grill","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dotoricode%2Fprompt-grill/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dotoricode%2Fprompt-grill/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dotoricode%2Fprompt-grill/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dotoricode","download_url":"https://codeload.github.com/dotoricode/prompt-grill/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dotoricode%2Fprompt-grill/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34161284,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-10T02:00:07.152Z","response_time":89,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["claude-code","claude-code-skill","developer-tools","prompt-engineering"],"created_at":"2026-06-10T17:02:28.701Z","updated_at":"2026-06-10T17:02:30.560Z","avatar_url":"https://github.com/dotoricode.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# prompt-grill\n\n[English](README.md)\n\n흐릿한 작업 요청을 에이전트가 실제로 실행할 수 있는 구조화된 프롬프트로 바꿔주는 Claude Code 스킬. 빠진 슬롯을 질문으로 채운 뒤 XML 형식의 5슬롯 프롬프트를 만들어 냅니다.\n\n## 왜 만들었나\n\n매번 같은 방식으로 시간을 낭비했습니다. \"이 모듈 리팩터해줘\"라고 입력하면 에이전트가 추측으로 달려들고, 중요한 제약 사항을 빠트렸다는 걸 10분 후에 깨닫는 식이었습니다. 프롬프트 절반은 성공 기준이 없었고, 대부분은 핵심 제약이 빠져 있었습니다.\n\n그래서 `prompt-grill`을 만들었습니다. 요청을 다섯 슬롯(목표, 컨텍스트, 제약, 성공 기준, 출력 형식)으로 채점하고, 빈 슬롯만 물어봅니다. 질문은 짧고 한 번에 하나씩입니다. 구조화된 프롬프트가 나올 때쯤이면 빠트렸을 내용이 이미 채워져 있습니다.\n\n지금은 거의 매일 씁니다. 빠트릴 뻔했던 슬롯을 다섯 번 중 네 번은 잡아냅니다.\n\n## 작동 방식\n\n`/prompt-grill 흐릿한 요청`을 입력하면:\n\n1. 요청을 읽고 5개 슬롯을 0~2점으로 채점합니다.\n2. 코드베이스를 탐색해서 코드로 답할 수 있는 슬롯을 먼저 채웁니다.\n3. 빈 슬롯이 남아 있으면 가장 약한 슬롯 하나를 질문합니다. 딱 하나만.\n4. 5라운드 또는 슬롯이 모두 채워질 때까지 반복합니다.\n5. XML 프롬프트를 코드 블록으로 출력합니다. 명확히 하지 않은 슬롯은 `(미지정 — 실행 중 명확히 할 것)`으로 표시합니다.\n6. 이 프롬프트로 바로 실행할지, 슬롯 하나를 수정할지, 프롬프트만 받아 갈지 물어봅니다.\n\n## 왜 XML인가\n\n앤트로픽의 프롬프트 엔지니어링 가이드는 XML 태그를 구분된 섹션을 표시하는 가장 깔끔한 방식으로 권장합니다.\n\n`## 제약`으로 시작하는 줄은 사용자가 붙여 넣은 내용과 혼동될 수 있습니다. `\u003cconstraints\u003e...\u003c/constraints\u003e`는 그렇지 않습니다.\n\n실행 게이트에서 슬롯 하나를 수정할 때, 스킬은 해당 태그만 다시 씁니다. 나머지는 그대로입니다.\n\n## 5개 슬롯\n\n| 슬롯 | 태그 | 무엇을 담나 |\n|------|-----|------------|\n| 목표 | `\u003cgoal\u003e` | 한 문장으로 된 결과물, 수식어 없이 |\n| 컨텍스트 | `\u003ccontext\u003e` | 파일, 현재 상태, 의존성, 환경 |\n| 제약 | `\u003cconstraints\u003e` | 절대 조건, 비목표, 보존할 것 |\n| 성공 기준 | `\u003csuccess_criteria\u003e` | 완료 여부를 확인할 수 있는 조건 |\n| 출력 형식 | `\u003coutput_format\u003e` | 결과물의 형태 (diff, 파일, 목록, 계획서…) |\n\n## 트리거\n\n- `/prompt-grill`\n- `prompt-grill`\n- \"프롬프트 다듬어줘\", \"grill 후 변환\", \"AI가 알아듣게 바꿔줘\"\n\n자동 트리거는 없습니다.\n\n## 설치\n\nClaude Code 스킬 디렉토리에 클론합니다:\n\n```bash\ngit clone https://github.com/dotoricode/prompt-grill.git ~/.claude/skills/prompt-grill\n```\n\n커스텀 경로를 쓴다면 목적지를 바꿉니다:\n\n```bash\ngit clone https://github.com/dotoricode/prompt-grill.git ~/.claude-personal/skills/prompt-grill\n```\n\n이후 Claude Code에서 `/skills`를 실행합니다. 목록에 `prompt-grill`이 보이면 완료입니다.\n\n## 스킬 동작 계약\n\n- 한 번에 하나의 질문. 여러 개를 한꺼번에 묻지 않습니다.\n- 코드가 답할 수 있는 건 코드를 먼저 읽습니다.\n- 명확히 하지 않은 슬롯은 추측하지 않고 미지정으로 표시합니다.\n- \"지금 실행\" 승인 없이는 실제 작업을 시작하지 않습니다.\n\n## 관련 스킬\n\n- [`grill-me`](https://github.com/mattpocock/skills) by Matt Pocock — 이 스킬이 기반으로 삼은 인터뷰 패턴.\n- [`cerberus`](https://github.com/dotoricode/cerberus) — prompt-grill(헤드 1), grill-me(헤드 2), 의도 검증(헤드 3)을 하나의 3단계 검증 워크플로우로 연결한 스킬.\n\n## 라이선스\n\nMIT. [`LICENSE`](./LICENSE) 참고.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdotoricode%2Fprompt-grill","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdotoricode%2Fprompt-grill","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdotoricode%2Fprompt-grill/lists"}