claude-novice 0.2.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-plugin/marketplace.json +25 -0
- package/.claude-plugin/plugin.json +22 -0
- package/ARCHITECTURE.md +59 -0
- package/LICENSE +21 -0
- package/README.md +372 -0
- package/config/bootstrap-manifests/github-cli.json +80 -0
- package/config/bootstrap-manifests/supabase.json +71 -0
- package/config/bootstrap-manifests/vercel.json +69 -0
- package/config/levels.json +33 -0
- package/config/safety-rules.json +263 -0
- package/config/service-capabilities.json +51 -0
- package/config/terms.json +198 -0
- package/hooks/hooks.json +107 -0
- package/package.json +45 -0
- package/scripts/bootstrap-engine.js +240 -0
- package/scripts/lib/capability-router.js +170 -0
- package/scripts/lib/capsule.js +178 -0
- package/scripts/lib/fingerprint.js +17 -0
- package/scripts/lib/grammar.js +287 -0
- package/scripts/lib/hookio.js +49 -0
- package/scripts/lib/manifest.js +154 -0
- package/scripts/lib/safety.js +370 -0
- package/scripts/lib/secrets.js +104 -0
- package/scripts/lib/state.js +256 -0
- package/scripts/post-tool-batch.js +108 -0
- package/scripts/post-tool-use-failure.js +48 -0
- package/scripts/post-tool-use.js +114 -0
- package/scripts/pre-tool-use.js +58 -0
- package/scripts/session-end.js +21 -0
- package/scripts/session-start.js +48 -0
- package/scripts/stop.js +69 -0
- package/scripts/user-prompt-expansion.js +66 -0
- package/scripts/user-prompt-submit.js +158 -0
- package/scripts/verify-docs.mjs +93 -0
- package/skills/mode/SKILL.md +48 -0
- package/skills/novice/SKILL.md +41 -0
- package/skills/setup-service/SKILL.md +88 -0
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema_version": 1,
|
|
3
|
+
"manifest_revision": 1,
|
|
4
|
+
"reviewed_at": "2026-07-20",
|
|
5
|
+
"tier": 1,
|
|
6
|
+
"service_id": "vercel",
|
|
7
|
+
"binary": "vercel",
|
|
8
|
+
"docs_url": "https://vercel.com/docs/cli",
|
|
9
|
+
"installers": [
|
|
10
|
+
{
|
|
11
|
+
"os": ["darwin", "linux", "win32"],
|
|
12
|
+
"package_manager": "npm",
|
|
13
|
+
"package_coordinate": "vercel",
|
|
14
|
+
"argv": ["npm", "install", "--global", "vercel"],
|
|
15
|
+
"min_version": "39.0.0",
|
|
16
|
+
"global_changes": ["npm global prefix에 vercel 실행 파일 추가"]
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"os": ["darwin"],
|
|
20
|
+
"package_manager": "homebrew",
|
|
21
|
+
"package_coordinate": "vercel-cli",
|
|
22
|
+
"argv": ["brew", "install", "vercel-cli"],
|
|
23
|
+
"min_version": "39.0.0",
|
|
24
|
+
"global_changes": ["Homebrew Cellar에 vercel-cli 설치"]
|
|
25
|
+
}
|
|
26
|
+
],
|
|
27
|
+
"detect": {
|
|
28
|
+
"argv": ["vercel", "--version"],
|
|
29
|
+
"success": { "exit_code": 0 }
|
|
30
|
+
},
|
|
31
|
+
"version_check": {
|
|
32
|
+
"argv": ["vercel", "--version"],
|
|
33
|
+
"success": { "exit_code": 0, "stdout_regex": "\\d+\\.\\d+\\.\\d+" }
|
|
34
|
+
},
|
|
35
|
+
"auth_status": {
|
|
36
|
+
"argv": ["vercel", "whoami"],
|
|
37
|
+
"success": { "exit_code": 0 },
|
|
38
|
+
"unauthenticated": { "exit_code_not": 0 }
|
|
39
|
+
},
|
|
40
|
+
"login": {
|
|
41
|
+
"argv": ["vercel", "login"],
|
|
42
|
+
"interactive": true,
|
|
43
|
+
"user_completes": ["브라우저/이메일 인증"],
|
|
44
|
+
"success_verify": "auth_status"
|
|
45
|
+
},
|
|
46
|
+
"logout": {
|
|
47
|
+
"argv": ["vercel", "logout"]
|
|
48
|
+
},
|
|
49
|
+
"credential_store": {
|
|
50
|
+
"storage": "~/.local/share/com.vercel.cli (또는 OS별 데이터 디렉토리)의 auth.json 파일",
|
|
51
|
+
"secure_storage": false,
|
|
52
|
+
"plaintext_fallback": true,
|
|
53
|
+
"abort_auto_login_on_plaintext": false,
|
|
54
|
+
"abort_note": "Vercel CLI는 토큰을 로컬 파일로 저장한다. 파일 권한과 위치를 로그인 전 사용자에게 고지한다.",
|
|
55
|
+
"disclosure": "로그인 토큰이 홈 디렉토리 아래 auth.json에 저장된다. 'vercel logout'으로 제거할 수 있다."
|
|
56
|
+
},
|
|
57
|
+
"uninstall": {
|
|
58
|
+
"npm": ["npm", "uninstall", "--global", "vercel"],
|
|
59
|
+
"homebrew": ["brew", "uninstall", "vercel-cli"]
|
|
60
|
+
},
|
|
61
|
+
"side_effects": [
|
|
62
|
+
"전역 npm/homebrew 패키지 추가",
|
|
63
|
+
"홈 디렉토리에 CLI 설정·인증 파일 생성"
|
|
64
|
+
],
|
|
65
|
+
"noninteractive_policy": {
|
|
66
|
+
"login": "guided_manual",
|
|
67
|
+
"reason": "vercel login은 브라우저/이메일 인증이 필요하므로 claude -p·CI에서는 안내만 한다"
|
|
68
|
+
}
|
|
69
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema_version": 1,
|
|
3
|
+
"default_level": 1,
|
|
4
|
+
"capsule_max_chars": 800,
|
|
5
|
+
"tombstone_max_chars": 300,
|
|
6
|
+
"glossary_max_chars": 5000,
|
|
7
|
+
"levels": {
|
|
8
|
+
"1": {
|
|
9
|
+
"fade_threshold": 3,
|
|
10
|
+
"term_explanation": "explain-until-fade",
|
|
11
|
+
"action_narration": "before-and-after",
|
|
12
|
+
"visualization": "steps3plus-or-branch-or-risk-or-recovery",
|
|
13
|
+
"cost_loop_intervention": "low-threshold",
|
|
14
|
+
"repeat_failure_threshold": 2
|
|
15
|
+
},
|
|
16
|
+
"2": {
|
|
17
|
+
"fade_threshold": 3,
|
|
18
|
+
"term_explanation": "explain-until-fade",
|
|
19
|
+
"action_narration": "key-decisions-only",
|
|
20
|
+
"visualization": "major-branches",
|
|
21
|
+
"cost_loop_intervention": "repeat-detected",
|
|
22
|
+
"repeat_failure_threshold": 3
|
|
23
|
+
},
|
|
24
|
+
"3": {
|
|
25
|
+
"fade_threshold": 0,
|
|
26
|
+
"term_explanation": "on-request-only",
|
|
27
|
+
"action_narration": "architecture-and-userflow",
|
|
28
|
+
"visualization": "on-request-or-risk",
|
|
29
|
+
"cost_loop_intervention": "explicit-anomaly-only",
|
|
30
|
+
"repeat_failure_threshold": 5
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
@@ -0,0 +1,263 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema_version": 1,
|
|
3
|
+
"reviewed_at": "2026-07-21",
|
|
4
|
+
"input_caps": {
|
|
5
|
+
"command_bytes": 65536,
|
|
6
|
+
"single_file_bytes": 1048576,
|
|
7
|
+
"total_candidate_bytes": 5242880
|
|
8
|
+
},
|
|
9
|
+
"protected_branches": {
|
|
10
|
+
"builtin": [
|
|
11
|
+
"main",
|
|
12
|
+
"master",
|
|
13
|
+
"production",
|
|
14
|
+
"release/*"
|
|
15
|
+
],
|
|
16
|
+
"override_policy": "add-only"
|
|
17
|
+
},
|
|
18
|
+
"target_classes": [
|
|
19
|
+
"development",
|
|
20
|
+
"preview",
|
|
21
|
+
"staging",
|
|
22
|
+
"production",
|
|
23
|
+
"unknown"
|
|
24
|
+
],
|
|
25
|
+
"target_flag_hints": {
|
|
26
|
+
"production": [
|
|
27
|
+
"--prod",
|
|
28
|
+
"--production",
|
|
29
|
+
"-e production",
|
|
30
|
+
"--env production",
|
|
31
|
+
"--environment production"
|
|
32
|
+
],
|
|
33
|
+
"preview": [
|
|
34
|
+
"--preview",
|
|
35
|
+
"-e preview",
|
|
36
|
+
"--env preview"
|
|
37
|
+
],
|
|
38
|
+
"staging": [
|
|
39
|
+
"-e staging",
|
|
40
|
+
"--env staging",
|
|
41
|
+
"--environment staging"
|
|
42
|
+
]
|
|
43
|
+
},
|
|
44
|
+
"shell_rules": {
|
|
45
|
+
"rm": {
|
|
46
|
+
"deny_paths": [
|
|
47
|
+
"/",
|
|
48
|
+
"~",
|
|
49
|
+
"$HOME",
|
|
50
|
+
".",
|
|
51
|
+
"..",
|
|
52
|
+
"*"
|
|
53
|
+
],
|
|
54
|
+
"reason": "홈·루트·프로젝트 루트·상위 경로 삭제는 복구 불가"
|
|
55
|
+
},
|
|
56
|
+
"dangerous_commands_deny": [
|
|
57
|
+
"dd",
|
|
58
|
+
"mkfs",
|
|
59
|
+
"mkfs.ext4",
|
|
60
|
+
"mkfs.xfs",
|
|
61
|
+
"shred",
|
|
62
|
+
"diskutil"
|
|
63
|
+
],
|
|
64
|
+
"powershell_dangerous_deny": [
|
|
65
|
+
"Format-Volume",
|
|
66
|
+
"Clear-Disk",
|
|
67
|
+
"Remove-Partition"
|
|
68
|
+
]
|
|
69
|
+
},
|
|
70
|
+
"deploy_clis": {
|
|
71
|
+
"vercel": {
|
|
72
|
+
"destructive_verbs": {
|
|
73
|
+
"rm": {
|
|
74
|
+
"production": "deny",
|
|
75
|
+
"preview": "delegate",
|
|
76
|
+
"staging": "delegate",
|
|
77
|
+
"development": "delegate",
|
|
78
|
+
"unknown": "deny"
|
|
79
|
+
},
|
|
80
|
+
"remove": {
|
|
81
|
+
"production": "deny",
|
|
82
|
+
"preview": "delegate",
|
|
83
|
+
"staging": "delegate",
|
|
84
|
+
"development": "delegate",
|
|
85
|
+
"unknown": "deny"
|
|
86
|
+
},
|
|
87
|
+
"rollback": {
|
|
88
|
+
"production": "delegate",
|
|
89
|
+
"preview": "delegate",
|
|
90
|
+
"staging": "delegate",
|
|
91
|
+
"development": "delegate",
|
|
92
|
+
"unknown": "delegate"
|
|
93
|
+
}
|
|
94
|
+
},
|
|
95
|
+
"deploy_verbs": [
|
|
96
|
+
"deploy",
|
|
97
|
+
""
|
|
98
|
+
],
|
|
99
|
+
"secret_scan_on_deploy": true
|
|
100
|
+
},
|
|
101
|
+
"supabase": {
|
|
102
|
+
"destructive_verbs": {
|
|
103
|
+
"db reset": {
|
|
104
|
+
"production": "deny",
|
|
105
|
+
"preview": "delegate",
|
|
106
|
+
"staging": "delegate",
|
|
107
|
+
"development": "delegate",
|
|
108
|
+
"unknown": "deny"
|
|
109
|
+
},
|
|
110
|
+
"projects delete": {
|
|
111
|
+
"production": "deny",
|
|
112
|
+
"preview": "deny",
|
|
113
|
+
"staging": "deny",
|
|
114
|
+
"development": "deny",
|
|
115
|
+
"unknown": "deny"
|
|
116
|
+
},
|
|
117
|
+
"db push": {
|
|
118
|
+
"production": "delegate",
|
|
119
|
+
"preview": "delegate",
|
|
120
|
+
"staging": "delegate",
|
|
121
|
+
"development": "delegate",
|
|
122
|
+
"unknown": "delegate"
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
},
|
|
126
|
+
"gh": {
|
|
127
|
+
"destructive_verbs": {
|
|
128
|
+
"repo delete": {
|
|
129
|
+
"production": "deny",
|
|
130
|
+
"preview": "deny",
|
|
131
|
+
"staging": "deny",
|
|
132
|
+
"development": "deny",
|
|
133
|
+
"unknown": "deny"
|
|
134
|
+
},
|
|
135
|
+
"release delete": {
|
|
136
|
+
"production": "delegate",
|
|
137
|
+
"preview": "delegate",
|
|
138
|
+
"staging": "delegate",
|
|
139
|
+
"development": "delegate",
|
|
140
|
+
"unknown": "delegate"
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
},
|
|
145
|
+
"mcp_rules": {
|
|
146
|
+
"destructive_name_patterns": [
|
|
147
|
+
"delete",
|
|
148
|
+
"drop",
|
|
149
|
+
"remove",
|
|
150
|
+
"destroy",
|
|
151
|
+
"truncate",
|
|
152
|
+
"reset",
|
|
153
|
+
"purge",
|
|
154
|
+
"wipe"
|
|
155
|
+
],
|
|
156
|
+
"action": {
|
|
157
|
+
"production": "deny",
|
|
158
|
+
"preview": "delegate",
|
|
159
|
+
"staging": "delegate",
|
|
160
|
+
"development": "delegate",
|
|
161
|
+
"unknown": "deny"
|
|
162
|
+
}
|
|
163
|
+
},
|
|
164
|
+
"secret_patterns": [
|
|
165
|
+
{
|
|
166
|
+
"id": "aws-access-key-id",
|
|
167
|
+
"pattern": "\\bAKIA[0-9A-Z]{16}\\b",
|
|
168
|
+
"description": "AWS Access Key ID"
|
|
169
|
+
},
|
|
170
|
+
{
|
|
171
|
+
"id": "aws-secret-access-key",
|
|
172
|
+
"pattern": "(?i)aws[_-]?secret[_-]?access[_-]?key\\s*[:=]\\s*['\"]?[A-Za-z0-9/+=]{40}",
|
|
173
|
+
"description": "AWS Secret Access Key 할당"
|
|
174
|
+
},
|
|
175
|
+
{
|
|
176
|
+
"id": "github-token",
|
|
177
|
+
"pattern": "\\b(?:ghp|gho|ghu|ghs|ghr)_[A-Za-z0-9]{36,255}\\b",
|
|
178
|
+
"description": "GitHub token"
|
|
179
|
+
},
|
|
180
|
+
{
|
|
181
|
+
"id": "github-fine-grained-pat",
|
|
182
|
+
"pattern": "\\bgithub_pat_[A-Za-z0-9_]{22,255}\\b",
|
|
183
|
+
"description": "GitHub fine-grained PAT"
|
|
184
|
+
},
|
|
185
|
+
{
|
|
186
|
+
"id": "slack-token",
|
|
187
|
+
"pattern": "\\bxox[baprs]-[A-Za-z0-9-]{10,250}\\b",
|
|
188
|
+
"description": "Slack token"
|
|
189
|
+
},
|
|
190
|
+
{
|
|
191
|
+
"id": "stripe-secret-key",
|
|
192
|
+
"pattern": "\\b(?:sk|rk)_(?:live|test)_[A-Za-z0-9]{24,247}\\b",
|
|
193
|
+
"description": "Stripe secret key"
|
|
194
|
+
},
|
|
195
|
+
{
|
|
196
|
+
"id": "openai-api-key",
|
|
197
|
+
"pattern": "\\bsk-[A-Za-z0-9_-]{20,}T3BlbkFJ[A-Za-z0-9_-]{20,}\\b",
|
|
198
|
+
"description": "OpenAI API key"
|
|
199
|
+
},
|
|
200
|
+
{
|
|
201
|
+
"id": "anthropic-api-key",
|
|
202
|
+
"pattern": "\\bsk-ant-[A-Za-z0-9_-]{24,}\\b",
|
|
203
|
+
"description": "Anthropic API key"
|
|
204
|
+
},
|
|
205
|
+
{
|
|
206
|
+
"id": "google-api-key",
|
|
207
|
+
"pattern": "\\bAIza[0-9A-Za-z_-]{35}\\b",
|
|
208
|
+
"description": "Google API key"
|
|
209
|
+
},
|
|
210
|
+
{
|
|
211
|
+
"id": "private-key-block",
|
|
212
|
+
"pattern": "-----BEGIN (?:RSA |EC |DSA |OPENSSH |PGP )?PRIVATE KEY(?: BLOCK)?-----",
|
|
213
|
+
"description": "PEM private key block"
|
|
214
|
+
},
|
|
215
|
+
{
|
|
216
|
+
"id": "jwt",
|
|
217
|
+
"pattern": "\\beyJ[A-Za-z0-9_-]{10,}\\.[A-Za-z0-9_-]{10,}\\.[A-Za-z0-9_-]{10,}\\b",
|
|
218
|
+
"description": "JWT"
|
|
219
|
+
},
|
|
220
|
+
{
|
|
221
|
+
"id": "supabase-service-role-hint",
|
|
222
|
+
"pattern": "(?i)service[_-]?role[_-]?key\\s*[:=]\\s*['\"]?eyJ[A-Za-z0-9_.-]{20,}",
|
|
223
|
+
"description": "Supabase service role key 할당"
|
|
224
|
+
},
|
|
225
|
+
{
|
|
226
|
+
"id": "generic-assignment",
|
|
227
|
+
"pattern": "(?i)\\b(?:api[_-]?key|secret|token|passwd|password|credential)s?\\b\\s*[:=]\\s*['\"]([A-Za-z0-9/+_=-]{20,})['\"]",
|
|
228
|
+
"description": "고엔트로피 비밀값 할당 (entropy 보조 판정 대상)",
|
|
229
|
+
"entropy_check": true
|
|
230
|
+
}
|
|
231
|
+
],
|
|
232
|
+
"entropy": {
|
|
233
|
+
"min_length": 20,
|
|
234
|
+
"shannon_threshold": 3.5,
|
|
235
|
+
"placeholder_allowlist": [
|
|
236
|
+
"(?i)^(?:x+|0+|1234|test|example|sample|dummy|placeholder|your[_-]|changeme|redacted|<[^>]+>|\\$\\{[^}]+\\}|%[A-Z_]+%)",
|
|
237
|
+
"(?i)(?:example|sample|dummy|placeholder|fixture|fake)"
|
|
238
|
+
]
|
|
239
|
+
},
|
|
240
|
+
"scan_file_extensions_skip": [
|
|
241
|
+
".png",
|
|
242
|
+
".jpg",
|
|
243
|
+
".jpeg",
|
|
244
|
+
".gif",
|
|
245
|
+
".webp",
|
|
246
|
+
".ico",
|
|
247
|
+
".pdf",
|
|
248
|
+
".zip",
|
|
249
|
+
".gz",
|
|
250
|
+
".tar",
|
|
251
|
+
".mp4",
|
|
252
|
+
".mp3",
|
|
253
|
+
".woff",
|
|
254
|
+
".woff2",
|
|
255
|
+
".ttf",
|
|
256
|
+
".eot"
|
|
257
|
+
],
|
|
258
|
+
"scan_path_skip": [
|
|
259
|
+
"tests/fixtures/",
|
|
260
|
+
"test/fixtures/",
|
|
261
|
+
"__fixtures__/"
|
|
262
|
+
]
|
|
263
|
+
}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema_version": 1,
|
|
3
|
+
"reviewed_at": "2026-07-20",
|
|
4
|
+
"capability_priority": ["cli", "mcp", "chrome", "guided_manual"],
|
|
5
|
+
"downgrade_rules": {
|
|
6
|
+
"cli": "Tier 1 preflight 실패 또는 사용자가 CLI 설치를 거부하면 mcp로 낮춘다. Tier 2 CLI는 사용자가 근거 확인 후 명시 동의(confirmed_by_user)한 경우 사용",
|
|
7
|
+
"mcp": "정적 allowlist 정확 일치(+verified provenance) 또는 런타임 등록 서버+명시 동의가 아니면 chrome으로 낮춘다",
|
|
8
|
+
"chrome": "Claude in Chrome 미연결·제3자 provider 환경이면 guided_manual로 낮춘다"
|
|
9
|
+
},
|
|
10
|
+
"mcp_user_consent_note": "정적 allowlist 외에, 사용자가 Claude runtime에 등록한 서버(registered)이고 이번 작업에 명시 동의(userConsent)한 경우 동의한 tool 범위 안에서 허용한다. 자동 설치는 하지 않으며 PreToolUse 게이트가 계속 적용된다.",
|
|
11
|
+
"mcp_allowlist_entry_schema": {
|
|
12
|
+
"service_id": "서비스 식별자 (services 키와 일치)",
|
|
13
|
+
"server": "runtime에서 식별되는 MCP server 이름 (mcp__<server>__ 접두사의 <server>)",
|
|
14
|
+
"transport": "stdio | http | sse",
|
|
15
|
+
"publisher": "공식 배포자 신원 (provenance 대조용)",
|
|
16
|
+
"docs_url": "https 공식 근거",
|
|
17
|
+
"tools": ["자동 실행을 허용하는 tool base name 목록"],
|
|
18
|
+
"capabilities": ["이 MCP가 담당할 capability (bootstrap 등)"]
|
|
19
|
+
},
|
|
20
|
+
"mcp_allowlist": [],
|
|
21
|
+
"chrome_policy": {
|
|
22
|
+
"mode": "visible-only",
|
|
23
|
+
"user_completes": ["login", "captcha", "mfa", "final-submit"]
|
|
24
|
+
},
|
|
25
|
+
"services": {
|
|
26
|
+
"vercel": {
|
|
27
|
+
"capabilities": {
|
|
28
|
+
"bootstrap": "cli",
|
|
29
|
+
"provisioning": "guided_manual",
|
|
30
|
+
"env_setup": "guided_manual",
|
|
31
|
+
"deploy": "guided_manual"
|
|
32
|
+
},
|
|
33
|
+
"manifest": "bootstrap-manifests/vercel.json"
|
|
34
|
+
},
|
|
35
|
+
"github": {
|
|
36
|
+
"capabilities": {
|
|
37
|
+
"bootstrap": "cli",
|
|
38
|
+
"oauth_app_setup": "guided_manual"
|
|
39
|
+
},
|
|
40
|
+
"manifest": "bootstrap-manifests/github-cli.json"
|
|
41
|
+
},
|
|
42
|
+
"supabase": {
|
|
43
|
+
"capabilities": {
|
|
44
|
+
"bootstrap": "cli",
|
|
45
|
+
"provisioning": "guided_manual",
|
|
46
|
+
"db_admin": "guided_manual"
|
|
47
|
+
},
|
|
48
|
+
"manifest": "bootstrap-manifests/supabase.json"
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema_version": 1,
|
|
3
|
+
"reviewed_at": "2026-07-20",
|
|
4
|
+
"terms": [
|
|
5
|
+
{
|
|
6
|
+
"term": "repository",
|
|
7
|
+
"explanation": "프로젝트의 모든 파일과 변경 기록을 담는 저장소",
|
|
8
|
+
"aliases": ["repo", "저장소", "리포지토리", "레포"],
|
|
9
|
+
"category": "git"
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
"term": "commit",
|
|
13
|
+
"explanation": "현재 변경을 하나의 저장 지점으로 기록하는 것",
|
|
14
|
+
"aliases": ["커밋"],
|
|
15
|
+
"category": "git"
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"term": "branch",
|
|
19
|
+
"explanation": "원본을 건드리지 않고 변경을 시도할 수 있는 독립 작업 줄기",
|
|
20
|
+
"aliases": ["브랜치"],
|
|
21
|
+
"category": "git"
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
"term": "merge",
|
|
25
|
+
"explanation": "두 작업 줄기의 변경 내용을 하나로 합치는 것",
|
|
26
|
+
"aliases": ["머지", "병합"],
|
|
27
|
+
"category": "git"
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
"term": "push",
|
|
31
|
+
"explanation": "내 컴퓨터의 저장 기록을 원격 저장소로 올리는 것",
|
|
32
|
+
"aliases": ["푸시", "푸쉬"],
|
|
33
|
+
"category": "git"
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
"term": "pull",
|
|
37
|
+
"explanation": "원격 저장소의 최신 변경을 내 컴퓨터로 가져오는 것",
|
|
38
|
+
"aliases": ["풀"],
|
|
39
|
+
"category": "git"
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
"term": "clone",
|
|
43
|
+
"explanation": "원격 저장소 전체를 내 컴퓨터로 복제하는 것",
|
|
44
|
+
"aliases": ["클론", "복제"],
|
|
45
|
+
"category": "git"
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
"term": ".gitignore",
|
|
49
|
+
"explanation": "Git이 추적하지 않을 파일 목록을 적어 두는 설정 파일",
|
|
50
|
+
"aliases": ["깃이그노어", "gitignore"],
|
|
51
|
+
"category": "git"
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
"term": "terminal",
|
|
55
|
+
"explanation": "글자로 명령을 입력해 컴퓨터를 조작하는 창",
|
|
56
|
+
"aliases": ["터미널", "콘솔", "console"],
|
|
57
|
+
"category": "terminal"
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
"term": "CLI",
|
|
61
|
+
"explanation": "마우스 대신 명령어 문장으로 프로그램을 다루는 방식",
|
|
62
|
+
"aliases": ["command line", "커맨드라인", "명령줄"],
|
|
63
|
+
"category": "terminal"
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
"term": "shell",
|
|
67
|
+
"explanation": "터미널에서 입력한 명령을 해석해 실행하는 프로그램",
|
|
68
|
+
"aliases": ["셸", "쉘", "bash", "zsh"],
|
|
69
|
+
"category": "terminal"
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
"term": "directory",
|
|
73
|
+
"explanation": "파일을 묶어 두는 폴더",
|
|
74
|
+
"aliases": ["디렉토리", "디렉터리", "폴더", "folder"],
|
|
75
|
+
"category": "terminal"
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
"term": "path",
|
|
79
|
+
"explanation": "파일이나 폴더가 있는 위치를 나타내는 주소",
|
|
80
|
+
"aliases": ["경로", "패스"],
|
|
81
|
+
"category": "terminal"
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
"term": "working directory",
|
|
85
|
+
"explanation": "지금 명령이 실행되는 기준 폴더",
|
|
86
|
+
"aliases": ["작업 디렉토리", "현재 디렉토리", "cwd"],
|
|
87
|
+
"category": "terminal"
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
"term": "frontend",
|
|
91
|
+
"explanation": "사용자가 화면에서 직접 보고 누르는 부분",
|
|
92
|
+
"aliases": ["프론트엔드", "프론트", "front-end"],
|
|
93
|
+
"category": "web"
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
"term": "backend",
|
|
97
|
+
"explanation": "화면 뒤에서 데이터 처리와 규칙을 담당하는 부분",
|
|
98
|
+
"aliases": ["백엔드", "백앤드", "back-end"],
|
|
99
|
+
"category": "web"
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
"term": "API",
|
|
103
|
+
"explanation": "프로그램끼리 정해진 형식으로 요청과 응답을 주고받는 창구",
|
|
104
|
+
"aliases": ["에이피아이"],
|
|
105
|
+
"category": "web"
|
|
106
|
+
},
|
|
107
|
+
{
|
|
108
|
+
"term": "framework",
|
|
109
|
+
"explanation": "앱의 뼈대와 규칙을 미리 제공하는 개발 도구 묶음",
|
|
110
|
+
"aliases": ["프레임워크", "프레임웍"],
|
|
111
|
+
"category": "web"
|
|
112
|
+
},
|
|
113
|
+
{
|
|
114
|
+
"term": "server",
|
|
115
|
+
"explanation": "요청을 받아 데이터나 화면을 돌려주는 컴퓨터 또는 프로그램",
|
|
116
|
+
"aliases": ["서버"],
|
|
117
|
+
"category": "web"
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
"term": "localhost",
|
|
121
|
+
"explanation": "내 컴퓨터 안에서만 접속되는 개발용 주소",
|
|
122
|
+
"aliases": ["로컬호스트", "로컬 서버", "127.0.0.1"],
|
|
123
|
+
"category": "web"
|
|
124
|
+
},
|
|
125
|
+
{
|
|
126
|
+
"term": "database",
|
|
127
|
+
"explanation": "데이터를 구조적으로 저장하고 찾아 쓰는 창고",
|
|
128
|
+
"aliases": ["데이터베이스", "DB", "디비"],
|
|
129
|
+
"category": "database"
|
|
130
|
+
},
|
|
131
|
+
{
|
|
132
|
+
"term": "schema",
|
|
133
|
+
"explanation": "데이터를 어떤 형태와 규칙으로 저장할지 정한 설계도",
|
|
134
|
+
"aliases": ["스키마"],
|
|
135
|
+
"category": "database"
|
|
136
|
+
},
|
|
137
|
+
{
|
|
138
|
+
"term": "migration",
|
|
139
|
+
"explanation": "데이터베이스 구조 변경을 기록하고 순서대로 적용하는 것",
|
|
140
|
+
"aliases": ["마이그레이션"],
|
|
141
|
+
"category": "database"
|
|
142
|
+
},
|
|
143
|
+
{
|
|
144
|
+
"term": "query",
|
|
145
|
+
"explanation": "데이터베이스에 데이터를 요청하거나 변경하는 명령문",
|
|
146
|
+
"aliases": ["쿼리"],
|
|
147
|
+
"category": "database"
|
|
148
|
+
},
|
|
149
|
+
{
|
|
150
|
+
"term": "OAuth",
|
|
151
|
+
"explanation": "비밀번호를 넘기지 않고 다른 서비스 계정으로 로그인 권한을 빌려주는 방식",
|
|
152
|
+
"aliases": ["오어스", "소셜 로그인"],
|
|
153
|
+
"category": "database"
|
|
154
|
+
},
|
|
155
|
+
{
|
|
156
|
+
"term": "token",
|
|
157
|
+
"explanation": "로그인 상태나 권한을 증명하는 임시 출입증 문자열",
|
|
158
|
+
"aliases": ["토큰", "액세스 토큰", "access token"],
|
|
159
|
+
"category": "database"
|
|
160
|
+
},
|
|
161
|
+
{
|
|
162
|
+
"term": "deploy",
|
|
163
|
+
"explanation": "만든 앱을 다른 사람이 쓸 수 있게 서버에 올리는 것",
|
|
164
|
+
"aliases": ["배포", "디플로이"],
|
|
165
|
+
"category": "deploy"
|
|
166
|
+
},
|
|
167
|
+
{
|
|
168
|
+
"term": "preview deployment",
|
|
169
|
+
"explanation": "정식 공개 전에 변경 내용을 미리 확인하는 임시 배포",
|
|
170
|
+
"aliases": ["프리뷰 배포", "미리보기 배포", "preview"],
|
|
171
|
+
"category": "deploy"
|
|
172
|
+
},
|
|
173
|
+
{
|
|
174
|
+
"term": "production",
|
|
175
|
+
"explanation": "실제 사용자가 쓰는 운영 환경",
|
|
176
|
+
"aliases": ["프로덕션", "운영 환경", "prod", "실서비스"],
|
|
177
|
+
"category": "deploy"
|
|
178
|
+
},
|
|
179
|
+
{
|
|
180
|
+
"term": "environment variable",
|
|
181
|
+
"explanation": "코드 밖에서 주입하는 설정값으로, 환경마다 다르게 지정할 수 있다",
|
|
182
|
+
"aliases": ["환경변수", "환경 변수", "env", "env var"],
|
|
183
|
+
"category": "deploy"
|
|
184
|
+
},
|
|
185
|
+
{
|
|
186
|
+
"term": "secret",
|
|
187
|
+
"explanation": "API 키나 비밀번호처럼 외부에 노출되면 안 되는 비밀값",
|
|
188
|
+
"aliases": ["시크릿", "비밀값", "API 키", "api key"],
|
|
189
|
+
"category": "deploy"
|
|
190
|
+
},
|
|
191
|
+
{
|
|
192
|
+
"term": "build",
|
|
193
|
+
"explanation": "작성한 코드를 실행 가능한 형태로 변환하고 묶는 과정",
|
|
194
|
+
"aliases": ["빌드"],
|
|
195
|
+
"category": "deploy"
|
|
196
|
+
}
|
|
197
|
+
]
|
|
198
|
+
}
|