@tienne/gestalt 0.99.0 → 0.101.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/CLAUDE.md +6 -1
- package/dist/package.json +5 -3
- package/dist/plugin/research-sources/amplitude/SOURCE.md +28 -0
- package/dist/plugin/research-sources/app-store-reviews/SOURCE.md +25 -0
- package/dist/plugin/research-sources/app-store-search/SOURCE.md +25 -0
- package/dist/plugin/research-sources/tech-blog-search/SOURCE.md +27 -0
- package/dist/plugin/research-sources/uibowl/SOURCE.md +26 -0
- package/dist/plugin/research-sources/web-search/SOURCE.md +24 -0
- package/dist/plugin/skills/_shared/agent-delegation.md +30 -7
- package/dist/plugin/skills/_shared/agent-model.md +3 -1
- package/dist/plugin/skills/_shared/proactive-routing.md +5 -0
- package/dist/plugin/skills/brief/SKILL.md +5 -7
- package/dist/plugin/skills/explain/SKILL.md +4 -5
- package/dist/plugin/skills/jira-create/SKILL.md +3 -4
- package/dist/plugin/skills/market-scan/SKILL.md +61 -0
- package/dist/plugin/skills/pr/SKILL.md +4 -6
- package/dist/plugin/skills/presentation/SKILL.md +18 -16
- package/dist/plugin/skills/research/SKILL.md +438 -0
- package/dist/plugin/skills/research/references/design.md +938 -0
- package/dist/plugin/skills/research/references/output-template.md +366 -0
- package/dist/plugin/skills/research/scripts/pii-vision.swift +327 -0
- package/dist/plugin/skills/research/scripts/slide-extract.mjs +223 -0
- package/dist/plugin/skills/reverse-plan/SKILL.md +52 -0
- package/dist/plugin/skills/review/SKILL.md +20 -25
- package/dist/plugin/skills/review-reply/SKILL.md +4 -5
- package/dist/plugin/skills/screen-ref/SKILL.md +63 -0
- package/dist/plugin/skills/slack-send/SKILL.md +3 -4
- package/dist/plugin/skills/ux-research/SKILL.md +51 -0
- package/dist/src/core/config.d.ts +3 -0
- package/dist/src/core/config.d.ts.map +1 -1
- package/dist/src/core/config.js +4 -0
- package/dist/src/core/config.js.map +1 -1
- package/dist/src/mcp/schemas.d.ts +93 -0
- package/dist/src/mcp/schemas.d.ts.map +1 -1
- package/dist/src/mcp/schemas.js +110 -0
- package/dist/src/mcp/schemas.js.map +1 -1
- package/dist/src/mcp/server.d.ts.map +1 -1
- package/dist/src/mcp/server.js +11 -1
- package/dist/src/mcp/server.js.map +1 -1
- package/dist/src/mcp/tools/research-passthrough.d.ts +21 -0
- package/dist/src/mcp/tools/research-passthrough.d.ts.map +1 -0
- package/dist/src/mcp/tools/research-passthrough.js +566 -0
- package/dist/src/mcp/tools/research-passthrough.js.map +1 -0
- package/dist/src/research/canvas-view.d.ts +5 -0
- package/dist/src/research/canvas-view.d.ts.map +1 -0
- package/dist/src/research/canvas-view.js +274 -0
- package/dist/src/research/canvas-view.js.map +1 -0
- package/dist/src/research/evidence.d.ts +145 -0
- package/dist/src/research/evidence.d.ts.map +1 -0
- package/dist/src/research/evidence.js +50 -0
- package/dist/src/research/evidence.js.map +1 -0
- package/dist/src/research/figma-plan.d.ts +80 -0
- package/dist/src/research/figma-plan.d.ts.map +1 -0
- package/dist/src/research/figma-plan.js +527 -0
- package/dist/src/research/figma-plan.js.map +1 -0
- package/dist/src/research/figma-script.d.ts +19 -0
- package/dist/src/research/figma-script.d.ts.map +1 -0
- package/dist/src/research/figma-script.js +363 -0
- package/dist/src/research/figma-script.js.map +1 -0
- package/dist/src/research/index.d.ts +8 -0
- package/dist/src/research/index.d.ts.map +1 -0
- package/dist/src/research/index.js +8 -0
- package/dist/src/research/index.js.map +1 -0
- package/dist/src/research/pii-core.d.ts +16 -0
- package/dist/src/research/pii-core.d.ts.map +1 -0
- package/dist/src/research/pii-core.js +345 -0
- package/dist/src/research/pii-core.js.map +1 -0
- package/dist/src/research/pii-dom.d.ts +13 -0
- package/dist/src/research/pii-dom.d.ts.map +1 -0
- package/dist/src/research/pii-dom.js +208 -0
- package/dist/src/research/pii-dom.js.map +1 -0
- package/dist/src/research/pii-image.d.ts +71 -0
- package/dist/src/research/pii-image.d.ts.map +1 -0
- package/dist/src/research/pii-image.js +163 -0
- package/dist/src/research/pii-image.js.map +1 -0
- package/dist/src/research/pii.d.ts +21 -0
- package/dist/src/research/pii.d.ts.map +1 -0
- package/dist/src/research/pii.js +47 -0
- package/dist/src/research/pii.js.map +1 -0
- package/dist/src/research/product-profile.d.ts +108 -0
- package/dist/src/research/product-profile.d.ts.map +1 -0
- package/dist/src/research/product-profile.js +104 -0
- package/dist/src/research/product-profile.js.map +1 -0
- package/dist/src/research/render-html.d.ts +203 -0
- package/dist/src/research/render-html.d.ts.map +1 -0
- package/dist/src/research/render-html.js +901 -0
- package/dist/src/research/render-html.js.map +1 -0
- package/dist/src/research/schema-base.d.ts +5 -0
- package/dist/src/research/schema-base.d.ts.map +1 -0
- package/dist/src/research/schema-base.js +10 -0
- package/dist/src/research/schema-base.js.map +1 -0
- package/dist/src/research/schema.d.ts +5142 -0
- package/dist/src/research/schema.d.ts.map +1 -0
- package/dist/src/research/schema.js +991 -0
- package/dist/src/research/schema.js.map +1 -0
- package/dist/src/research/source-create.d.ts +79 -0
- package/dist/src/research/source-create.d.ts.map +1 -0
- package/dist/src/research/source-create.js +226 -0
- package/dist/src/research/source-create.js.map +1 -0
- package/dist/src/research/source-registry.d.ts +29 -0
- package/dist/src/research/source-registry.d.ts.map +1 -0
- package/dist/src/research/source-registry.js +74 -0
- package/dist/src/research/source-registry.js.map +1 -0
- package/dist/src/research/source-schema.d.ts +158 -0
- package/dist/src/research/source-schema.d.ts.map +1 -0
- package/dist/src/research/source-schema.js +215 -0
- package/dist/src/research/source-schema.js.map +1 -0
- package/dist/src/research/source-status.d.ts +40 -0
- package/dist/src/research/source-status.d.ts.map +1 -0
- package/dist/src/research/source-status.js +109 -0
- package/dist/src/research/source-status.js.map +1 -0
- package/dist/src/research/store.d.ts +24 -0
- package/dist/src/research/store.d.ts.map +1 -0
- package/dist/src/research/store.js +60 -0
- package/dist/src/research/store.js.map +1 -0
- package/dist/src/research/target-view.d.ts +33 -0
- package/dist/src/research/target-view.d.ts.map +1 -0
- package/dist/src/research/target-view.js +133 -0
- package/dist/src/research/target-view.js.map +1 -0
- package/dist/src/research/target.d.ts +883 -0
- package/dist/src/research/target.d.ts.map +1 -0
- package/dist/src/research/target.js +323 -0
- package/dist/src/research/target.js.map +1 -0
- package/dist/src/research/video-transfer.d.ts +28 -0
- package/dist/src/research/video-transfer.d.ts.map +1 -0
- package/dist/src/research/video-transfer.js +100 -0
- package/dist/src/research/video-transfer.js.map +1 -0
- package/package.json +5 -3
- package/plugin/.codex-plugin/plugin.json +1 -1
- package/plugin/.mcp.json +1 -1
- package/plugin/mcp.json +1 -1
- package/plugin/research-sources/amplitude/SOURCE.md +28 -0
- package/plugin/research-sources/app-store-reviews/SOURCE.md +25 -0
- package/plugin/research-sources/app-store-search/SOURCE.md +25 -0
- package/plugin/research-sources/tech-blog-search/SOURCE.md +27 -0
- package/plugin/research-sources/uibowl/SOURCE.md +26 -0
- package/plugin/research-sources/web-search/SOURCE.md +24 -0
- package/plugin/skills/_shared/agent-delegation.md +30 -7
- package/plugin/skills/_shared/agent-model.md +3 -1
- package/plugin/skills/_shared/proactive-routing.md +5 -0
- package/plugin/skills/brief/SKILL.md +5 -7
- package/plugin/skills/explain/SKILL.md +4 -5
- package/plugin/skills/jira-create/SKILL.md +3 -4
- package/plugin/skills/market-scan/SKILL.md +61 -0
- package/plugin/skills/pr/SKILL.md +4 -6
- package/plugin/skills/presentation/SKILL.md +18 -16
- package/plugin/skills/research/SKILL.md +438 -0
- package/plugin/skills/research/references/design.md +938 -0
- package/plugin/skills/research/references/output-template.md +366 -0
- package/plugin/skills/research/scripts/pii-vision.swift +327 -0
- package/plugin/skills/research/scripts/slide-extract.mjs +223 -0
- package/plugin/skills/reverse-plan/SKILL.md +52 -0
- package/plugin/skills/review/SKILL.md +20 -25
- package/plugin/skills/review-reply/SKILL.md +4 -5
- package/plugin/skills/screen-ref/SKILL.md +63 -0
- package/plugin/skills/slack-send/SKILL.md +3 -4
- package/plugin/skills/ux-research/SKILL.md +51 -0
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { BasisKind, EvidenceRef } from './evidence.js';
|
|
2
|
+
import type { Research } from './schema.js';
|
|
3
|
+
import { type Target } from './target.js';
|
|
4
|
+
/** HTML과 Figma가 같은 칸을 그리도록 목표치 블록을 표 모양으로 펴 둔다 */
|
|
5
|
+
export interface TargetCell {
|
|
6
|
+
text: string;
|
|
7
|
+
basis?: BasisKind;
|
|
8
|
+
evidence?: EvidenceRef[];
|
|
9
|
+
note?: string;
|
|
10
|
+
/** 칸 아래 작은 글씨 */
|
|
11
|
+
sub?: string;
|
|
12
|
+
}
|
|
13
|
+
export interface TargetView {
|
|
14
|
+
rows: [string, TargetCell][];
|
|
15
|
+
steps: {
|
|
16
|
+
label: string;
|
|
17
|
+
value: TargetCell;
|
|
18
|
+
method: string;
|
|
19
|
+
}[];
|
|
20
|
+
coverage?: string;
|
|
21
|
+
/** 가설을 다 성공해도 못 닿을 때 사용자와 고른 대응 */
|
|
22
|
+
shortfall?: string;
|
|
23
|
+
/** 가설, 기대 효과, 군당 표본, 걸리는 일수 칸과 기대 효과의 근거 칸 */
|
|
24
|
+
power: {
|
|
25
|
+
cells: string[];
|
|
26
|
+
liftBasis: TargetCell;
|
|
27
|
+
}[];
|
|
28
|
+
tracking: string[][];
|
|
29
|
+
}
|
|
30
|
+
export declare const TARGET_STEP_METHOD_LABEL: Record<Target['steps'][number]['method'], string>;
|
|
31
|
+
export declare const TRACKING_STATUS_LABEL: Record<Target['trackingPlan'][number]['status'], string>;
|
|
32
|
+
export declare function targetView(research: Research, shared: boolean): TargetView | undefined;
|
|
33
|
+
//# sourceMappingURL=target-view.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"target-view.d.ts","sourceRoot":"","sources":["../../../src/research/target-view.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAKL,KAAK,MAAM,EACZ,MAAM,aAAa,CAAC;AAErB,kDAAkD;AAClD,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,QAAQ,CAAC,EAAE,WAAW,EAAE,CAAC;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,iBAAiB;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,CAAC,MAAM,EAAE,UAAU,CAAC,EAAE,CAAC;IAC7B,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,UAAU,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC9D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,mCAAmC;IACnC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,8CAA8C;IAC9C,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,EAAE,CAAC;QAAC,SAAS,EAAE,UAAU,CAAA;KAAE,EAAE,CAAC;IACpD,QAAQ,EAAE,MAAM,EAAE,EAAE,CAAC;CACtB;AAED,eAAO,MAAM,wBAAwB,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,EAAE,MAAM,CAOtF,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,EAAE,MAAM,CAI1F,CAAC;AAUF,wBAAgB,UAAU,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,GAAG,UAAU,GAAG,SAAS,CA+GtF"}
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
import { hypothesisPower, LIFT_METHOD_LABEL, liftCoverage, SHORTFALL_DECISION_LABEL, } from './target.js';
|
|
2
|
+
export const TARGET_STEP_METHOD_LABEL = {
|
|
3
|
+
internal: '우리 데이터',
|
|
4
|
+
proxy: '비슷한 퍼널',
|
|
5
|
+
business: '사업 계획',
|
|
6
|
+
market: '시장 자료',
|
|
7
|
+
case: '타사 사례',
|
|
8
|
+
assumption: '가정',
|
|
9
|
+
};
|
|
10
|
+
export const TRACKING_STATUS_LABEL = {
|
|
11
|
+
exists: '있음',
|
|
12
|
+
missing: '없음',
|
|
13
|
+
planned: '심기로 함',
|
|
14
|
+
};
|
|
15
|
+
const DATA_SOURCE_LABEL = {
|
|
16
|
+
amplitude: 'Amplitude',
|
|
17
|
+
export: '내보낸 숫자',
|
|
18
|
+
};
|
|
19
|
+
const pp = (x) => `${x > 0 ? '+' : ''}${x}%p`;
|
|
20
|
+
const people = (n) => `${n.toLocaleString('ko-KR')}명`;
|
|
21
|
+
export function targetView(research, shared) {
|
|
22
|
+
const t = research.target;
|
|
23
|
+
if (!t)
|
|
24
|
+
return undefined;
|
|
25
|
+
const b = t.baseline;
|
|
26
|
+
const rows = [
|
|
27
|
+
['목표 지표', { text: `${t.metric.name}: ${t.metric.denominator} 대비 ${t.metric.numerator}` }],
|
|
28
|
+
['화면', { text: t.mode === 'new' ? '새로 만드는 화면' : '있는 화면 개선' }],
|
|
29
|
+
[
|
|
30
|
+
'기준값',
|
|
31
|
+
{
|
|
32
|
+
text: b.valuePct === undefined ? `못 구함 (${b.period})` : `${b.valuePct}% (${b.period})`,
|
|
33
|
+
basis: b.basis,
|
|
34
|
+
evidence: b.evidence,
|
|
35
|
+
...(b.note ? { note: b.note } : {}),
|
|
36
|
+
...(b.proxyOf ? { sub: `대신 쓴 퍼널: ${b.proxyOf}` } : {}),
|
|
37
|
+
},
|
|
38
|
+
],
|
|
39
|
+
];
|
|
40
|
+
const d = t.dailyEntrants;
|
|
41
|
+
if (d) {
|
|
42
|
+
rows.push([
|
|
43
|
+
'하루 진입 수',
|
|
44
|
+
{
|
|
45
|
+
text: people(d.value),
|
|
46
|
+
basis: d.basis,
|
|
47
|
+
evidence: d.evidence,
|
|
48
|
+
...(d.note ? { note: d.note } : {}),
|
|
49
|
+
...(d.derivation ? { sub: d.derivation } : {}),
|
|
50
|
+
},
|
|
51
|
+
]);
|
|
52
|
+
}
|
|
53
|
+
if (t.weeklySpreadPp !== undefined) {
|
|
54
|
+
rows.push(['주별 변동', { text: `±${t.weeklySpreadPp}%p` }]);
|
|
55
|
+
}
|
|
56
|
+
if (t.trendPp !== undefined)
|
|
57
|
+
rows.push(['자연 추세', { text: pp(t.trendPp) }]);
|
|
58
|
+
if (t.range) {
|
|
59
|
+
const r = t.range;
|
|
60
|
+
rows.push([
|
|
61
|
+
'목표 범위',
|
|
62
|
+
{ text: `보수 ${r.conservativePct}%, 기대 ${r.expectedPct}%, 도전 ${r.stretchPct}%` },
|
|
63
|
+
]);
|
|
64
|
+
}
|
|
65
|
+
const ds = t.dataSource;
|
|
66
|
+
if (ds) {
|
|
67
|
+
const events = ds.events.map((x) => `${x.step}: ${x.event}`).join(', ');
|
|
68
|
+
const chart = ds.chartUrl && !shared ? ` ${ds.chartUrl}` : '';
|
|
69
|
+
rows.push([
|
|
70
|
+
'데이터 출처',
|
|
71
|
+
{
|
|
72
|
+
text: `${DATA_SOURCE_LABEL[ds.kind]} ${ds.project}, ${ds.from}부터 ${ds.to}까지${chart}`,
|
|
73
|
+
...(events ? { sub: events } : {}),
|
|
74
|
+
},
|
|
75
|
+
]);
|
|
76
|
+
}
|
|
77
|
+
const coverage = liftCoverage(research);
|
|
78
|
+
const power = hypothesisPower(research).map((p) => {
|
|
79
|
+
const lb = research.verification[p.index]?.liftBasis;
|
|
80
|
+
return {
|
|
81
|
+
cells: [
|
|
82
|
+
`가설 ${p.index + 1}`,
|
|
83
|
+
pp(p.liftPp),
|
|
84
|
+
Number.isFinite(p.nPerArm) ? people(p.nPerArm) : '계산 못함',
|
|
85
|
+
p.days === undefined ? '하루 진입 수 없음' : `${p.days}일`,
|
|
86
|
+
],
|
|
87
|
+
liftBasis: lb
|
|
88
|
+
? {
|
|
89
|
+
text: LIFT_METHOD_LABEL[lb.method],
|
|
90
|
+
basis: lb.basis,
|
|
91
|
+
evidence: lb.evidence,
|
|
92
|
+
...(lb.note ? { note: lb.note } : {}),
|
|
93
|
+
}
|
|
94
|
+
: { text: '근거 없음', basis: 'absent' },
|
|
95
|
+
};
|
|
96
|
+
});
|
|
97
|
+
const sf = t.shortfall;
|
|
98
|
+
const shortfall = sf
|
|
99
|
+
? [
|
|
100
|
+
`가설 합이 기대 목표에 모자라서 고른 대응은 '${SHORTFALL_DECISION_LABEL[sf.decision]}'이다.`,
|
|
101
|
+
sf.originalExpectedPct === undefined
|
|
102
|
+
? ''
|
|
103
|
+
: `처음 기대 목표는 ${sf.originalExpectedPct}%였다.`,
|
|
104
|
+
sf.note,
|
|
105
|
+
]
|
|
106
|
+
.filter(Boolean)
|
|
107
|
+
.join(' ')
|
|
108
|
+
: undefined;
|
|
109
|
+
return {
|
|
110
|
+
rows,
|
|
111
|
+
steps: t.steps.map((s) => ({
|
|
112
|
+
label: s.label,
|
|
113
|
+
value: {
|
|
114
|
+
text: s.value,
|
|
115
|
+
basis: s.basis,
|
|
116
|
+
evidence: s.evidence,
|
|
117
|
+
...(s.note ? { note: s.note } : {}),
|
|
118
|
+
},
|
|
119
|
+
method: TARGET_STEP_METHOD_LABEL[s.method],
|
|
120
|
+
})),
|
|
121
|
+
...(coverage
|
|
122
|
+
? {
|
|
123
|
+
coverage: `가설을 다 성공하면 ${coverage.reachPct}%까지 간다. 기대 목표까지 시안으로 올려야 하는 몫은 ${coverage.neededPp}%p이고 가설 기대 효과의 합은 ${coverage.plannedPp}%p다. 효과가 겹칠 수 있어서 합은 많이 잡은 값이다.`,
|
|
124
|
+
}
|
|
125
|
+
: {}),
|
|
126
|
+
...(shortfall ? { shortfall } : {}),
|
|
127
|
+
power,
|
|
128
|
+
tracking: t.trackingPlan
|
|
129
|
+
.filter((x) => x.status !== 'exists')
|
|
130
|
+
.map((x) => [x.event, x.step, TRACKING_STATUS_LABEL[x.status], x.note ?? '']),
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
//# sourceMappingURL=target-view.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"target-view.js","sourceRoot":"","sources":["../../../src/research/target-view.ts"],"names":[],"mappings":"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"}
|