@bhoon716/skill-forge 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.ko.md +112 -0
- package/README.md +112 -0
- package/README.zh.md +115 -0
- package/bin/cli.js +386 -0
- package/package.json +31 -0
- package/skills/ultra-grill-me/README.ko.md +123 -0
- package/skills/ultra-grill-me/README.md +122 -0
- package/skills/ultra-grill-me/README.zh.md +122 -0
- package/skills/ultra-grill-me/SKILL.ko.md +299 -0
- package/skills/ultra-grill-me/SKILL.md +130 -0
- package/skills/ultra-grill-me/SKILL.zh.md +140 -0
- package/skills/ultra-grill-me/evals/check_evals.py +134 -0
- package/skills/ultra-grill-me/evals/trigger_test_cases.json +98 -0
- package/skills/ultra-grill-me/examples/should-not-trigger.md +86 -0
- package/skills/ultra-grill-me/examples/should-trigger.md +254 -0
- package/skills/ultra-grill-me/logs/template.md +41 -0
- package/skills/ultra-grill-me/references/architecture-decision-grill.ko.md +87 -0
- package/skills/ultra-grill-me/references/architecture-decision-grill.md +68 -0
- package/skills/ultra-grill-me/references/business-strategy-grill.ko.md +88 -0
- package/skills/ultra-grill-me/references/business-strategy-grill.md +70 -0
- package/skills/ultra-grill-me/references/implementation-plan-grill.ko.md +87 -0
- package/skills/ultra-grill-me/references/implementation-plan-grill.md +70 -0
- package/skills/ultra-grill-me/references/learning-plan-grill.ko.md +87 -0
- package/skills/ultra-grill-me/references/learning-plan-grill.md +68 -0
- package/skills/ultra-grill-me/references/personal-decision-grill.ko.md +98 -0
- package/skills/ultra-grill-me/references/personal-decision-grill.md +71 -0
- package/skills/ultra-grill-me/references/product-idea-grill.ko.md +87 -0
- package/skills/ultra-grill-me/references/product-idea-grill.md +67 -0
- package/skills/ultra-grill-me/references/research-question-grill.ko.md +87 -0
- package/skills/ultra-grill-me/references/research-question-grill.md +68 -0
- package/skills/ultra-grill-me/references/skill-design-grill.ko.md +88 -0
- package/skills/ultra-grill-me/references/skill-design-grill.md +70 -0
- package/skills/ultra-grill-me/references/technical-design-grill.ko.md +88 -0
- package/skills/ultra-grill-me/references/technical-design-grill.md +66 -0
- package/skills/ultra-grill-me/references/writing-direction-grill.ko.md +88 -0
- package/skills/ultra-grill-me/references/writing-direction-grill.md +68 -0
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ultra-grill-me
|
|
3
|
+
description: 当用户想要对计划、设计、产品创意、架构决定、实施计划、商业策略、写作方向、研究问题、学习计划、个人决策或 Skill 设计进行逐个提问的施压验证,直到没有重要模糊性时使用。请勿用于简单的事实 Q&A、脑暴列表、格式调整或立即生成代码/计划。
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Ultra Grill Me (施压验证引擎)
|
|
7
|
+
|
|
8
|
+
## 目的
|
|
9
|
+
|
|
10
|
+
不直接为用户完成计划、创意、设计或策略,而是通过一次只问一个问题的 Socratic(苏格拉底式)反问验证,消除关键的模糊性、隐藏假设、薄弱的成功标准、风险、权衡和失败可能性。
|
|
11
|
+
|
|
12
|
+
这个 Skill 是“在做之前进行验证的 Skill”,而不是“代替生成的 Skill”。
|
|
13
|
+
|
|
14
|
+
## 使用场景
|
|
15
|
+
|
|
16
|
+
在以下请求中激活此 Skill:
|
|
17
|
+
|
|
18
|
+
- 要求通过提问验证计划
|
|
19
|
+
- 要求找出创意的漏洞
|
|
20
|
+
- 要求像反驳式盘问一样审查设计
|
|
21
|
+
- 要求找出隐藏的假设或风险
|
|
22
|
+
- 要求一直提问直到没有重要问题为止
|
|
23
|
+
- 要求进行压力测试(stress-test)
|
|
24
|
+
- 要求“不要直接做,先通过问题进行验证”
|
|
25
|
+
|
|
26
|
+
## 禁用场景
|
|
27
|
+
|
|
28
|
+
在以下请求中**不使用**此 Skill:
|
|
29
|
+
|
|
30
|
+
- 简单的事实提问(例如:“什么是 PRD?”)
|
|
31
|
+
- 创意列表请求(例如:“推荐 10 个 SaaS 创意”)
|
|
32
|
+
- 文句修改/润色请求(例如:“让这句话更自然一点”)
|
|
33
|
+
- 摘要/总结请求(例如:“帮我总结这段内容”)
|
|
34
|
+
- 立即执行/代码生成请求(例如:“立刻写好开发计划书”)
|
|
35
|
+
- 已经有更具体且合适的其他 Skill
|
|
36
|
+
|
|
37
|
+
## 工作流
|
|
38
|
+
|
|
39
|
+
### 会话开始
|
|
40
|
+
|
|
41
|
+
1. 判断用户请求是否属于此 Skill 验证对象。
|
|
42
|
+
2. 若非验证对象,不激活此 Skill,进行普通回答。
|
|
43
|
+
3. 若属于验证对象,在 `logs/` 下按照 `logs/template.md` 格式创建日志文件。所有验证过程均需记录。
|
|
44
|
+
4. 参考 [References](#references) 部分的映射规则,选择对应的 case 领域参考文件。
|
|
45
|
+
5. 若分类明确,仅加载对应的单个参考文件。若分类模糊,在加载前仅进行一次分类提问。请勿一次性加载所有参考文件。
|
|
46
|
+
|
|
47
|
+
### 循环提问阶段
|
|
48
|
+
|
|
49
|
+
6. **当前理解摘要**:基于已确定的决定和未决问题,用一句话总结用户当前的计划/创意状态,并展示给用户。
|
|
50
|
+
7. **卡点的决定识别**:对比参考文件的提问优先级和当前内部状态,选择目前最阻碍下一步进展的未决项。
|
|
51
|
+
8. **生成提问**:针对该卡点决定,生成一个最小、最具体的单一问题。避免宽泛提问。
|
|
52
|
+
- 伴随问题提供 2~5 个具体选项。推荐选项前冠以 `(推荐)` 标识。
|
|
53
|
+
- 选项列表的尾部必须始终包含 `获取更多推荐选项` 和 `直接回答`。
|
|
54
|
+
9. **说明重要性**:用 1~2 句话解释该问题的回答将如何影响后续的其他决策。
|
|
55
|
+
10. **展示选项**:为每个选项附带简短说明。用户可以输入编号、要求更多选项、直接回答或拒绝。
|
|
56
|
+
11. **等待回答**:静默等待用户回答。在收到回答前,绝不提出下一个问题。
|
|
57
|
+
12. **更新内部状态**:收到用户回答后,更新以下状态:
|
|
58
|
+
- 已确定的决定 / 临时假设(用户回答不知道时引入的默认值) / 风险 / 矛盾 / 拒绝的方向
|
|
59
|
+
13. **记录日志**:将本轮的问题、卡点决定、用户回答以及更新后的状态写入日志文件。
|
|
60
|
+
14. **判断是否结束**:检查终止条件。若不满足,返回步骤 6。若满足,进入会话结束阶段。
|
|
61
|
+
|
|
62
|
+
### 会话结束
|
|
63
|
+
|
|
64
|
+
15. 当终止条件满足时,输出最终的结构化整理(包含 9 项必备板块)。
|
|
65
|
+
16. 在日志中记录最终整理结果,将日志状态更改为“Completed”并关闭。
|
|
66
|
+
|
|
67
|
+
## References (参考文件)
|
|
68
|
+
|
|
69
|
+
本 Skill 会根据用户请求的领域加载对应的参考文件,以提高提问的专业度。仅加载**精确对应的单个文件**。
|
|
70
|
+
|
|
71
|
+
- **产品/SaaS 创意、功能规划、MVP 范围验证**:
|
|
72
|
+
- 加载 `references/product-idea-grill.md`
|
|
73
|
+
- **代码实现设计、API 规范、数据模型、技术折中**:
|
|
74
|
+
- 加载 `references/technical-design-grill.md`
|
|
75
|
+
- **架构选择、基础设施、单体 vs MSA、长期技术方向**:
|
|
76
|
+
- 加载 `references/architecture-decision-grill.md`
|
|
77
|
+
- **执行顺序、里程碑拆解、依赖项、交付时间风险**:
|
|
78
|
+
- 加载 `references/implementation-plan-grill.md`
|
|
79
|
+
- **ICP(目标画像)定义、GTM 策略、价格结构、分销渠道**:
|
|
80
|
+
- 加载 `references/business-strategy-grill.md`
|
|
81
|
+
- **文案叙事、定位、演讲框架、内容基调审查**:
|
|
82
|
+
- 加载 `references/writing-direction-grill.md`
|
|
83
|
+
- **研究假设定义、变量控制、分析计划、数据验证设计**:
|
|
84
|
+
- 加载 `references/research-question-grill.md`
|
|
85
|
+
- **学习路线图、知识获取计划、新技术栈学习及项目设计**:
|
|
86
|
+
- 加载 `references/learning-plan-grill.md`
|
|
87
|
+
- **职业选择、大件购买、复杂的个人决策分析**:
|
|
88
|
+
- 加载 `references/personal-decision-grill.md`
|
|
89
|
+
- **Agent Skill 设计、Trigger 条件、工作流及 Evals 评测设计**:
|
|
90
|
+
- 加载 `references/skill-design-grill.md`
|
|
91
|
+
|
|
92
|
+
---
|
|
93
|
+
|
|
94
|
+
## 提问优先级
|
|
95
|
+
|
|
96
|
+
在未加载特定参考文件的通用情况下,按以下顺序优先处理未决项:
|
|
97
|
+
1. 目标模糊性 -> 2. 用户/利益相关者模糊性 -> 3. 成功指标模糊性 -> 4. 范围边界 -> 5. 约束条件 -> 6. 假设风险 -> 7. 依赖项风险 -> 8. 不可逆决定风险 -> 9. 成本/时间/复杂度风险 -> 10. 边缘情况 -> 11. 失败模式。
|
|
98
|
+
|
|
99
|
+
## 提问格式
|
|
100
|
+
|
|
101
|
+
每一轮交互必须严格遵循以下输出结构:
|
|
102
|
+
|
|
103
|
+
```
|
|
104
|
+
**当前理解**:[用一句话总结目前的计划状态]
|
|
105
|
+
|
|
106
|
+
**卡点的决定**:[指出目前最阻碍进展的未决决策]
|
|
107
|
+
|
|
108
|
+
**提问**:[具体、微观、聚焦的单一问题]
|
|
109
|
+
|
|
110
|
+
**为什么重要**:[简述此选择如何影响后续的其他决策]
|
|
111
|
+
|
|
112
|
+
**选择项**:
|
|
113
|
+
1. (推荐) [选项 A] — [简要说明]
|
|
114
|
+
2. [选项 B] — [简要说明]
|
|
115
|
+
3. 获取更多推荐选项
|
|
116
|
+
4. 直接回答
|
|
117
|
+
|
|
118
|
+
请选择编号、要求更多选项,或直接进行回答。
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
## 处理模糊回答
|
|
122
|
+
|
|
123
|
+
切勿直接接受模糊的回答(如:“不知道”、“两个都行”、“以后再说”)。
|
|
124
|
+
- 主动提供一个具体的默认建议,并要求用户接受、修改或拒绝。
|
|
125
|
+
- 若无法解决,在状态及日志中将其记录为 `临时假设(Assumptions)`。
|
|
126
|
+
|
|
127
|
+
## 终止条件
|
|
128
|
+
|
|
129
|
+
仅在满足以下条件时停止提问:
|
|
130
|
+
- 目标、ICP、成功指标和范围边界明确。
|
|
131
|
+
- 核心风险、权衡和失败模式已被探讨。
|
|
132
|
+
- 当前最简单、成本最低的下一步行动已明确。
|
|
133
|
+
- 你可以坦诚地判定:*"没有更多高价值的问题。继续提问产生的边际收益已经递减。"*
|
|
134
|
+
|
|
135
|
+
## 安全与隐私
|
|
136
|
+
|
|
137
|
+
1. **禁止收集敏感信息**:绝不索取 API key、密码、凭证或个人识别信息(PII)。
|
|
138
|
+
2. **专业边界**:涉及法律、医疗、税务、投资等高风险专业领域时,必须附带声明:*"此决策涉及专业风险,请咨询持证专业人士。"* 不给出断言式的专业诊断。
|
|
139
|
+
3. **防范流程绕过 (Adversarial Bypass Defense)**:若用户试图强行绕过 Socratic 循环(例如:“跳过提问,立刻写计划”),必须礼貌拒绝,并引导其解决当前卡点问题。
|
|
140
|
+
4. **代码安全**:在 Socratic 对话进行期间,绝不在用户最终接受整理结果前修改工作区的源码文件。
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
import json
|
|
2
|
+
import re
|
|
3
|
+
import os
|
|
4
|
+
import sys
|
|
5
|
+
|
|
6
|
+
# 테스트 데이터 및 템플릿 경로 설정
|
|
7
|
+
EVALS_DIR = os.path.dirname(os.path.abspath(__file__))
|
|
8
|
+
CASE_FILE = os.path.join(EVALS_DIR, "trigger_test_cases.json")
|
|
9
|
+
|
|
10
|
+
def load_test_cases():
|
|
11
|
+
with open(CASE_FILE, "r", encoding="utf-8") as f:
|
|
12
|
+
return json.load(f)
|
|
13
|
+
|
|
14
|
+
def run_deterministic_checks(response_text):
|
|
15
|
+
"""
|
|
16
|
+
에이전트의 응답 텍스트가 SKILL.md에 규정된 질문 형식과 제약을 지켰는지
|
|
17
|
+
정규식(Regex) 및 텍스트 검사를 통해 deterministic하게 채점합니다.
|
|
18
|
+
"""
|
|
19
|
+
results = {}
|
|
20
|
+
|
|
21
|
+
# 1. 헤더 검증
|
|
22
|
+
results["has_current_understanding"] = "**현재 이해**" in response_text or "현재 이해" in response_text
|
|
23
|
+
results["has_blocked_decision"] = "**막힌 결정**" in response_text or "막힌 결정" in response_text
|
|
24
|
+
results["has_question"] = "**질문**" in response_text or "질문" in response_text
|
|
25
|
+
results["has_why_important"] = "**왜 중요한지**" in response_text or "왜 중요한지" in response_text
|
|
26
|
+
results["has_choices"] = "**선택지**" in response_text or "선택지" in response_text
|
|
27
|
+
|
|
28
|
+
# 2. 단일 질문 규칙 (? 개수)
|
|
29
|
+
# 질문 섹션 아래에 있는 질문 텍스트 내에서 물음표 개수를 확인하는 것이 이상적이나,
|
|
30
|
+
# 전체 텍스트 내 물음표 개수로 간접 확인 (최대 1~2개 이내여야 함, 여러 독립 질문이 나열되면 안 됨)
|
|
31
|
+
q_count = response_text.count("?")
|
|
32
|
+
results["single_question_adherence"] = q_count <= 2
|
|
33
|
+
|
|
34
|
+
# 3. 선택지 형식 검증
|
|
35
|
+
results["has_recommendation_label"] = "(추천)" in response_text or "추천" in response_text
|
|
36
|
+
results["has_other_options_trigger"] = "다른 옵션 더 추천받기" in response_text
|
|
37
|
+
results["has_direct_answer_option"] = "직접 답변" in response_text
|
|
38
|
+
|
|
39
|
+
# 4. 코드 비수정 검증 (예: 파일 쓰기나 코드 조각을 과도하게 생성했는지 체크)
|
|
40
|
+
# 마크다운 내 코드 블록(```)이 있더라도 그게 최종 소스 코드 파일(src/* 등)의 수정을 동반하지 않았는지 여부
|
|
41
|
+
# 이 스크립트에서는 응답 텍스트에 긴 코드 뭉치가 들어있는지 간접 체크
|
|
42
|
+
code_blocks = re.findall(r"```(python|javascript|typescript|json|html|css|yaml).*?```", response_text, re.DOTALL)
|
|
43
|
+
results["code_non_modification_adherence"] = len(code_blocks) == 0 or all(len(cb.splitlines()) < 25 for cb in code_blocks)
|
|
44
|
+
|
|
45
|
+
return results
|
|
46
|
+
|
|
47
|
+
def grade_session(case_id, response_text, expected_trigger):
|
|
48
|
+
"""
|
|
49
|
+
개별 테스트 케이스의 응답을 평가하고 결과를 출력합니다.
|
|
50
|
+
"""
|
|
51
|
+
print(f"\n[Test Case ID: {case_id}]")
|
|
52
|
+
|
|
53
|
+
# Trigger 여부 판단 (에이전트가 질문 형식을 따랐는지 여부로 판단)
|
|
54
|
+
checks = run_deterministic_checks(response_text)
|
|
55
|
+
actual_trigger = checks["has_current_understanding"] and checks["has_question"]
|
|
56
|
+
|
|
57
|
+
trigger_success = (actual_trigger == expected_trigger)
|
|
58
|
+
|
|
59
|
+
print(f"- Trigger Status Match: {'PASS' if trigger_success else 'FAIL'} (Expected: {expected_trigger}, Actual: {actual_trigger})")
|
|
60
|
+
|
|
61
|
+
if expected_trigger:
|
|
62
|
+
print("- Process Adherence Details:")
|
|
63
|
+
all_passed = True
|
|
64
|
+
for check_name, passed in checks.items():
|
|
65
|
+
status = "PASS" if passed else "FAIL"
|
|
66
|
+
print(f" * {check_name:<30}: {status}")
|
|
67
|
+
if not passed:
|
|
68
|
+
all_passed = False
|
|
69
|
+
|
|
70
|
+
overall_status = "PASS" if (trigger_success and all_passed) else "FAIL"
|
|
71
|
+
else:
|
|
72
|
+
overall_status = "PASS" if trigger_success else "FAIL"
|
|
73
|
+
|
|
74
|
+
print(f"-> OVERALL RESULT: {overall_status}")
|
|
75
|
+
return overall_status == "PASS"
|
|
76
|
+
|
|
77
|
+
if __name__ == "__main__":
|
|
78
|
+
print("=" * 60)
|
|
79
|
+
print(" Ultra Grill Me - Skill Evaluator & Grader ")
|
|
80
|
+
print("=" * 60)
|
|
81
|
+
|
|
82
|
+
# 모의 테스트 실행용 더미 데이터 설정
|
|
83
|
+
# 사용자가 실제 에이전트의 출력을 검증하고 싶을 때, response_text를 수동으로 넣거나
|
|
84
|
+
# CLI 파이프로 입력을 받아 채점할 수 있습니다.
|
|
85
|
+
|
|
86
|
+
if len(sys.argv) > 1 and sys.argv[1] == "--run-mock":
|
|
87
|
+
print("\n[Mock Run] 모의 응답 데이터로 자동화 Grader 테스트를 실행합니다...\n")
|
|
88
|
+
|
|
89
|
+
mock_trigger_response = """
|
|
90
|
+
**현재 이해**: 개발자용 할일 관리 앱 아이디어를 검증하고 싶은 상태입니다.
|
|
91
|
+
|
|
92
|
+
**막힌 결정**: 대상 사용자의 범위가 너무 넓어, 구체적인 킬러 기능과 성공 지표를 정의할 수 없습니다.
|
|
93
|
+
|
|
94
|
+
**질문**: 이 앱을 사용할 1차 타겟 개발자는 누구인가요?
|
|
95
|
+
|
|
96
|
+
**왜 중요한지**: 개발자마다 업무 스타일(프리랜서, 대기업 사원, 1인 개발자)이 다르므로 타겟을 좁혀야 합니다.
|
|
97
|
+
|
|
98
|
+
**선택지**:
|
|
99
|
+
1. (추천) 1인 개발자 또는 인디 해커 — 여러 프로젝트 관리 집중
|
|
100
|
+
2. 5인 이하 소규모 스타트업의 풀스택 개발자
|
|
101
|
+
3. 다른 옵션 더 추천받기
|
|
102
|
+
4. 직접 답변
|
|
103
|
+
|
|
104
|
+
번호를 선택하거나 직접 답해 주세요.
|
|
105
|
+
"""
|
|
106
|
+
mock_non_trigger_response = """
|
|
107
|
+
PRD(Product Requirement Document)는 기획자가 작성하는 비즈니스 기능 요구사항 명세서이고,
|
|
108
|
+
Technical Design은 엔지니어가 작성하는 시스템 아키텍처 및 구현 설계서입니다.
|
|
109
|
+
"""
|
|
110
|
+
|
|
111
|
+
cases = load_test_cases()
|
|
112
|
+
success_count = 0
|
|
113
|
+
total_cases = 2
|
|
114
|
+
|
|
115
|
+
# 1. Trigger 케이스 모의 채점
|
|
116
|
+
t_case = cases[0] # trigger-001-product-idea
|
|
117
|
+
t_pass = grade_session(t_case["id"], mock_trigger_response, t_case["expected_skill_use"])
|
|
118
|
+
if t_pass: success_count += 1
|
|
119
|
+
|
|
120
|
+
# 2. Non-trigger 케이스 모의 채점
|
|
121
|
+
nt_case = cases[6] # non-trigger-001-factual-qa
|
|
122
|
+
nt_pass = grade_session(nt_case["id"], mock_non_trigger_response, nt_case["expected_skill_use"])
|
|
123
|
+
if nt_pass: success_count += 1
|
|
124
|
+
|
|
125
|
+
print("\n" + "=" * 60)
|
|
126
|
+
print(f"Mock Test Result: {success_count}/{total_cases} cases passed ({success_count/total_cases*100:.1f}%)")
|
|
127
|
+
print("=" * 60)
|
|
128
|
+
else:
|
|
129
|
+
print("\n사용법:")
|
|
130
|
+
print("1. 모의 채점 엔진 동작을 테스트하려면 아래 명령을 실행하세요:")
|
|
131
|
+
print(" python3 check_evals.py --run-mock")
|
|
132
|
+
print("\n2. 실제 대화를 나누면서 에이전트의 출력이 규정을 통과하는지 확인하려면,")
|
|
133
|
+
print(" 이 채점기의 run_deterministic_checks() 함수를 호스트 테스트 프레임워크와 결합하여 CI/CD 검증에 활용하십시오.")
|
|
134
|
+
print("=" * 60)
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
[
|
|
2
|
+
{
|
|
3
|
+
"id": "trigger-001-product-idea",
|
|
4
|
+
"category": "trigger",
|
|
5
|
+
"prompt": "새로운 사이드 프로젝트로 개발자용 할일 관리 앱 아이디어가 있는데, 만들기 전에 끝까지 빈틈 좀 털어줘.",
|
|
6
|
+
"expected_skill_use": true,
|
|
7
|
+
"expected_reference": "references/product-idea-grill.md",
|
|
8
|
+
"description": "구체적인 제품 아이디어 검증 요청 시 스킬 활성화 및 product-idea 레퍼런스 로드 여부 테스트"
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
"id": "trigger-002-architecture-decision",
|
|
12
|
+
"category": "trigger",
|
|
13
|
+
"prompt": "우리 서비스 데이터베이스를 PostgreSQL에서 MongoDB로 전환하려고 해. 이 아키텍처 결정이 맞는지 반대신문하듯이 질문으로 압박 검증해줘.",
|
|
14
|
+
"expected_skill_use": true,
|
|
15
|
+
"expected_reference": "references/architecture-decision-grill.md",
|
|
16
|
+
"description": "아키텍처 결정 tradeoff 압박 검증 요청 시 스킬 활성화 및 architecture-decision 레퍼런스 로드 여부 테스트"
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"id": "trigger-003-personal-decision",
|
|
20
|
+
"category": "trigger",
|
|
21
|
+
"prompt": "두 회사에서 합격 오퍼를 받았어. 하나는 연봉이 높은 스타트업이고, 하나는 네임밸류가 있는 대기업이야. 후회 없는 선택을 하고 싶은데, 질문으로 내 생각을 털어줘.",
|
|
22
|
+
"expected_skill_use": true,
|
|
23
|
+
"expected_reference": "references/personal-decision-grill.md",
|
|
24
|
+
"description": "이직 등 개인 의사결정 고민 시 스킬 활성화 및 personal-decision 레퍼런스 로드 여부 테스트"
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"id": "trigger-004-implementation-plan",
|
|
28
|
+
"category": "trigger",
|
|
29
|
+
"prompt": "이번 신규 간편결정 기능의 출시 3주 마일스톤 계획을 세웠어. 리스크나 의존성 오류가 없는지 질문으로 털어봐줘.",
|
|
30
|
+
"expected_skill_use": true,
|
|
31
|
+
"expected_reference": "references/implementation-plan-grill.md",
|
|
32
|
+
"description": "구현 마일스톤 일정 리스크 검토 시 스킬 활성화 및 implementation-plan 레퍼런스 로드 여부 테스트"
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
"id": "trigger-005-writing-direction",
|
|
36
|
+
"category": "trigger",
|
|
37
|
+
"prompt": "다음 달 사내 기술 세미나에서 '마이크로서비스 아키텍처 전환 후기'를 발표하려고 해. 장표 흐름이나 내러티브에 빈틈이 없는지 압박 질문으로 털어줘.",
|
|
38
|
+
"expected_skill_use": true,
|
|
39
|
+
"expected_reference": "references/writing-direction-grill.md",
|
|
40
|
+
"description": "발표자료 내러티브 기획 검토 시 스킬 활성화 및 writing-direction 레퍼런스 로드 여부 테스트"
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
"id": "trigger-006-explicit-command",
|
|
44
|
+
"category": "trigger",
|
|
45
|
+
"prompt": "/ultra-grill-me 내 React 공부 로드맵 검증 시작해줘.",
|
|
46
|
+
"expected_skill_use": true,
|
|
47
|
+
"expected_reference": "references/learning-plan-grill.md",
|
|
48
|
+
"description": "슬래시 커맨드를 통한 강제 스킬 호출 시 활성화 여부 테스트"
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
"id": "non-trigger-001-factual-qa",
|
|
52
|
+
"category": "non-trigger",
|
|
53
|
+
"prompt": "PRD와 Technical Design 문서의 가장 큰 차이점이 뭐야?",
|
|
54
|
+
"expected_skill_use": false,
|
|
55
|
+
"expected_reference": null,
|
|
56
|
+
"description": "단순 개념 비교 Q&A 시 스킬이 오발동되지 않는지 테스트"
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
"id": "non-trigger-002-brainstorming",
|
|
60
|
+
"category": "non-trigger",
|
|
61
|
+
"prompt": "요즘 1인 개발자가 개발해서 출시하기 좋은 간단한 AI 서비스 아이디어 5개만 추천해줘.",
|
|
62
|
+
"expected_skill_use": false,
|
|
63
|
+
"expected_reference": null,
|
|
64
|
+
"description": "일반적인 아이디어 추천/브레인스토밍 요청 시 스킬이 오발동되지 않는지 테스트"
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
"id": "non-trigger-003-direct-generation",
|
|
68
|
+
"category": "non-trigger",
|
|
69
|
+
"prompt": "아래 기획 요약을 바탕으로, 바로 Next.js 프로젝트 폴더 구조를 설계하고 코드베이스를 작성해줘.",
|
|
70
|
+
"expected_skill_use": false,
|
|
71
|
+
"expected_reference": null,
|
|
72
|
+
"description": "즉각적인 실행/코딩 요청 시 스킬이 오발동되지 않는지 테스트"
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
"id": "non-trigger-004-polishing",
|
|
76
|
+
"category": "non-trigger",
|
|
77
|
+
"prompt": "이번 아키텍처 결정 내용을 대기업 임원들이 이해할 수 있게, 조금만 더 정중하고 쉬운 비즈니스 어투로 고쳐서 바로 출력해줄래?",
|
|
78
|
+
"expected_skill_use": false,
|
|
79
|
+
"expected_reference": null,
|
|
80
|
+
"description": "단순 문장 교정/어조 변경 요청 시 스킬이 오발동되지 않는지 테스트"
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
"id": "non-trigger-005-summarization",
|
|
84
|
+
"category": "non-trigger",
|
|
85
|
+
"prompt": "이 MSA 전환 관련 블로그 포스트 주소 줄 테니까, 이거 핵심 요약 3줄로 정리만 딱 해줘.",
|
|
86
|
+
"expected_skill_use": false,
|
|
87
|
+
"expected_reference": null,
|
|
88
|
+
"description": "단순 타사 아티클 요약 요청 시 스킬이 오발동되지 않는지 테스트"
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
"id": "non-trigger-006-debugging",
|
|
92
|
+
"category": "non-trigger",
|
|
93
|
+
"prompt": "이 React 컴포넌트 실행하면 'Cannot read properties of undefined (reading 'map')' 에러 나는데, 어디서 터진 건지 바로 확인하고 디버깅 코드 짜줘.",
|
|
94
|
+
"expected_skill_use": false,
|
|
95
|
+
"expected_reference": null,
|
|
96
|
+
"description": "런타임 코드 디버깅 및 트러블슈팅 요청 시 스킬이 오발동되지 않는지 테스트"
|
|
97
|
+
}
|
|
98
|
+
]
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
# Should Not Trigger Examples
|
|
2
|
+
|
|
3
|
+
이 문서의 예시들은 사용자의 요청이 단순 질문이거나 즉시 실행 요청이어서, `ultra-grill-me` 스킬이 활성화(trigger)되지 않고 **일반 답변으로 처리되어야 하는 경우**를 정의합니다. 모든 문서는 한국어로 작성되었습니다.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## 예시 1. 단순 기술 설명 또는 Q&A 요청
|
|
8
|
+
|
|
9
|
+
### 사용자 입력
|
|
10
|
+
```txt
|
|
11
|
+
PRD와 Technical Design 문서의 가장 큰 차이점이 뭐야?
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
### 기대 동작
|
|
15
|
+
1. `ultra-grill-me` 스킬이 활성화되지 않는다.
|
|
16
|
+
2. 질문 루프나 세션 로그 생성을 수행하지 않는다.
|
|
17
|
+
3. 두 문서의 정의와 차이점에 대해 구조화된 일반 정보 답변으로 직접 답변한다.
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## 예시 2. 아이디어 추천 또는 브레인스토밍 요청
|
|
22
|
+
|
|
23
|
+
### 사용자 입력
|
|
24
|
+
```txt
|
|
25
|
+
요즘 1인 개발자가 개발해서 출시하기 좋은 간단한 AI 서비스 아이디어 5개만 추천해줘.
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
### 기대 동작
|
|
29
|
+
1. `ultra-grill-me` 스킬이 활성화되지 않는다.
|
|
30
|
+
2. 사용자가 검증할 자신의 계획이나 구체적 설계를 가져온 것이 아니므로, 반대신문이나 인터뷰를 진행하지 않는다.
|
|
31
|
+
3. 생성형 AI 트렌드에 맞는 5가지 참신한 아이디어 리스트를 제안하는 일반 답변을 제공한다.
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
## 예시 3. 즉시 코드/산출물 작성 요청
|
|
36
|
+
|
|
37
|
+
### 사용자 입력
|
|
38
|
+
```txt
|
|
39
|
+
아래 기획 요약을 바탕으로, 바로 Next.js 프로젝트 폴더 구조를 설계하고 코드베이스를 작성해줘.
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
### 기대 동작
|
|
43
|
+
1. `ultra-grill-me` 스킬이 활성화되지 않는다.
|
|
44
|
+
2. 질문 루프로 가입해 사용자의 시간을 지연시키지 않고, 제공된 요약을 바탕으로 즉시 폴더 구조 트리와 필요한 설정 코드를 작성하여 응답한다. (일반 코딩 태스크로 처리)
|
|
45
|
+
|
|
46
|
+
---
|
|
47
|
+
|
|
48
|
+
## 예시 4. 단순 문장 교정 및 설명 요청
|
|
49
|
+
|
|
50
|
+
### 사용자 입력
|
|
51
|
+
```txt
|
|
52
|
+
이번 아키텍처 결정 내용을 대기업 임원들이 이해할 수 있게, 조금만 더 정중하고 쉬운 비즈니스 어투로 고쳐서 바로 출력해줄래?
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
### 기대 동작
|
|
56
|
+
1. `ultra-grill-me` 스킬이 활성화되지 않는다.
|
|
57
|
+
2. 결정 자체를 검증할 시점이 아니며, 최종 결과에 대한 단순 텍스트 가공 요청이므로 Socratic 질문을 수행하지 않는다.
|
|
58
|
+
3. 요청된 비즈니스 톤에 맞춰 정제된 완성 문장을 즉시 반환한다.
|
|
59
|
+
|
|
60
|
+
---
|
|
61
|
+
|
|
62
|
+
## 예시 5. 단순 요약/정리 요청
|
|
63
|
+
|
|
64
|
+
### 사용자 입력
|
|
65
|
+
```txt
|
|
66
|
+
이 MSA 전환 관련 블로그 포스트 주소 줄 테니까, 이거 핵심 요약 3줄로 정리만 딱 해줘.
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
### 기대 동작
|
|
70
|
+
1. `ultra-grill-me` 스킬이 활성화되지 않는다.
|
|
71
|
+
2. 사용자가 가져온 아티클의 내용을 빠르게 파악하려는 지식 수집 단계이며, 의사결정 검증 과정이 아니므로 Socratic 질문 루프를 띄우지 않는다.
|
|
72
|
+
3. 외부 문서를 파싱/요약하여 3개 항목으로 정돈된 요약 텍스트를 즉시 제공한다.
|
|
73
|
+
|
|
74
|
+
---
|
|
75
|
+
|
|
76
|
+
## 예시 6. 작동이 안 되는 소스 코드의 트러블슈팅/디버깅 요청
|
|
77
|
+
|
|
78
|
+
### 사용자 입력
|
|
79
|
+
```txt
|
|
80
|
+
이 React 컴포넌트 실행하면 'Cannot read properties of undefined (reading 'map')' 에러 나는데, 어디서 터진 건지 바로 확인하고 디버깅 코드 짜줘.
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
### 기대 동작
|
|
84
|
+
1. `ultra-grill-me` 스킬이 활성화되지 않는다.
|
|
85
|
+
2. 실무 개발 과정에서의 긴급한 버그 픽(Bug Fix)과 코드 교정이 목적이다. 기획 설계의 명확화 목적이 아니다.
|
|
86
|
+
3. `grill` 질문으로 시간을 소모하지 않고, 코드를 즉각 분석하여 에러 원인 설명과 옵셔널 체이닝(`?.`) 혹은 기본값(`|| []`)이 처리된 정답 코드를 즉시 리턴한다.
|