jobhunt-kit 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/.agents/plugins/marketplace.json +20 -0
- package/.claude-plugin/marketplace.json +14 -0
- package/AGENTS.md +23 -0
- package/CLAUDE.md +5 -0
- package/README.md +122 -0
- package/bin/jobhunt-kit.mjs +95 -0
- package/installer-assets/gitignore.txt +22 -0
- package/installer-assets/runtime-lock.json +492 -0
- package/installer-assets/workspace-lock.json +495 -0
- package/package.json +52 -0
- package/plugins/jobhunt-kit/.claude-plugin/plugin.json +9 -0
- package/plugins/jobhunt-kit/.codex-plugin/plugin.json +18 -0
- package/plugins/jobhunt-kit/THIRD_PARTY.md +18 -0
- package/plugins/jobhunt-kit/package-lock.json +492 -0
- package/plugins/jobhunt-kit/package.json +14 -0
- package/plugins/jobhunt-kit/references/cli.md +125 -0
- package/plugins/jobhunt-kit/references/cover-guidance.md +24 -0
- package/plugins/jobhunt-kit/references/hirify/LICENSE +202 -0
- package/plugins/jobhunt-kit/references/hirify/NOTICE +2 -0
- package/plugins/jobhunt-kit/references/hirify/SKILL.md +139 -0
- package/plugins/jobhunt-kit/references/hirify/reference.md +286 -0
- package/plugins/jobhunt-kit/references/matching.md +28 -0
- package/plugins/jobhunt-kit/references/resume-guidance.md +47 -0
- package/plugins/jobhunt-kit/references/storage.md +120 -0
- package/plugins/jobhunt-kit/references/workflow.md +89 -0
- package/plugins/jobhunt-kit/scripts/cli.mjs +9 -0
- package/plugins/jobhunt-kit/scripts/commands.mjs +157 -0
- package/plugins/jobhunt-kit/scripts/extract-resume.mjs +27 -0
- package/plugins/jobhunt-kit/scripts/hirify.mjs +31 -0
- package/plugins/jobhunt-kit/scripts/profile.mjs +79 -0
- package/plugins/jobhunt-kit/scripts/resume.mjs +92 -0
- package/plugins/jobhunt-kit/scripts/send-packet.mjs +36 -0
- package/plugins/jobhunt-kit/scripts/setup.mjs +25 -0
- package/plugins/jobhunt-kit/scripts/tracker.mjs +332 -0
- package/plugins/jobhunt-kit/skills/job-apply/SKILL.md +61 -0
- package/plugins/jobhunt-kit/skills/job-profile/SKILL.md +33 -0
- package/plugins/jobhunt-kit/skills/job-resume/SKILL.md +29 -0
- package/plugins/jobhunt-kit/skills/job-search/SKILL.md +39 -0
- package/plugins/jobhunt-kit/skills/job-track/SKILL.md +30 -0
- package/plugins/jobhunt-kit/templates/cover-letter.md +17 -0
- package/plugins/jobhunt-kit/templates/intake.md +62 -0
- package/plugins/jobhunt-kit/templates/policy.json +6 -0
- package/plugins/jobhunt-kit/templates/profile.json +29 -0
- package/plugins/jobhunt-kit/templates/profile.md +21 -0
- package/plugins/jobhunt-kit/templates/resume-review.md +30 -0
- package/plugins/jobhunt-kit/templates/scheduled-search.md +21 -0
- package/scripts/check-package.mjs +62 -0
- package/tests/commands.test.mjs +143 -0
- package/tests/installer.test.mjs +52 -0
- package/tests/tracker.test.mjs +180 -0
|
@@ -0,0 +1,492 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "jobhunt-kit-plugin",
|
|
3
|
+
"version": "0.2.0",
|
|
4
|
+
"lockfileVersion": 3,
|
|
5
|
+
"requires": true,
|
|
6
|
+
"packages": {
|
|
7
|
+
"": {
|
|
8
|
+
"name": "jobhunt-kit-plugin",
|
|
9
|
+
"version": "0.2.0",
|
|
10
|
+
"dependencies": {
|
|
11
|
+
"hirify-cli": "0.4.5",
|
|
12
|
+
"mammoth": "1.12.2",
|
|
13
|
+
"pdf-parse": "2.4.5"
|
|
14
|
+
},
|
|
15
|
+
"engines": {
|
|
16
|
+
"node": ">=24.0.0"
|
|
17
|
+
}
|
|
18
|
+
},
|
|
19
|
+
"node_modules/@napi-rs/canvas": {
|
|
20
|
+
"version": "0.1.80",
|
|
21
|
+
"resolved": "https://registry.npmjs.org/@napi-rs/canvas/-/canvas-0.1.80.tgz",
|
|
22
|
+
"integrity": "sha512-DxuT1ClnIPts1kQx8FBmkk4BQDTfI5kIzywAaMjQSXfNnra5UFU9PwurXrl+Je3bJ6BGsp/zmshVVFbCmyI+ww==",
|
|
23
|
+
"license": "MIT",
|
|
24
|
+
"workspaces": [
|
|
25
|
+
"e2e/*"
|
|
26
|
+
],
|
|
27
|
+
"engines": {
|
|
28
|
+
"node": ">= 10"
|
|
29
|
+
},
|
|
30
|
+
"optionalDependencies": {
|
|
31
|
+
"@napi-rs/canvas-android-arm64": "0.1.80",
|
|
32
|
+
"@napi-rs/canvas-darwin-arm64": "0.1.80",
|
|
33
|
+
"@napi-rs/canvas-darwin-x64": "0.1.80",
|
|
34
|
+
"@napi-rs/canvas-linux-arm-gnueabihf": "0.1.80",
|
|
35
|
+
"@napi-rs/canvas-linux-arm64-gnu": "0.1.80",
|
|
36
|
+
"@napi-rs/canvas-linux-arm64-musl": "0.1.80",
|
|
37
|
+
"@napi-rs/canvas-linux-riscv64-gnu": "0.1.80",
|
|
38
|
+
"@napi-rs/canvas-linux-x64-gnu": "0.1.80",
|
|
39
|
+
"@napi-rs/canvas-linux-x64-musl": "0.1.80",
|
|
40
|
+
"@napi-rs/canvas-win32-x64-msvc": "0.1.80"
|
|
41
|
+
}
|
|
42
|
+
},
|
|
43
|
+
"node_modules/@napi-rs/canvas-android-arm64": {
|
|
44
|
+
"version": "0.1.80",
|
|
45
|
+
"resolved": "https://registry.npmjs.org/@napi-rs/canvas-android-arm64/-/canvas-android-arm64-0.1.80.tgz",
|
|
46
|
+
"integrity": "sha512-sk7xhN/MoXeuExlggf91pNziBxLPVUqF2CAVnB57KLG/pz7+U5TKG8eXdc3pm0d7Od0WreB6ZKLj37sX9muGOQ==",
|
|
47
|
+
"cpu": [
|
|
48
|
+
"arm64"
|
|
49
|
+
],
|
|
50
|
+
"license": "MIT",
|
|
51
|
+
"optional": true,
|
|
52
|
+
"os": [
|
|
53
|
+
"android"
|
|
54
|
+
],
|
|
55
|
+
"engines": {
|
|
56
|
+
"node": ">= 10"
|
|
57
|
+
}
|
|
58
|
+
},
|
|
59
|
+
"node_modules/@napi-rs/canvas-darwin-arm64": {
|
|
60
|
+
"version": "0.1.80",
|
|
61
|
+
"resolved": "https://registry.npmjs.org/@napi-rs/canvas-darwin-arm64/-/canvas-darwin-arm64-0.1.80.tgz",
|
|
62
|
+
"integrity": "sha512-O64APRTXRUiAz0P8gErkfEr3lipLJgM6pjATwavZ22ebhjYl/SUbpgM0xcWPQBNMP1n29afAC/Us5PX1vg+JNQ==",
|
|
63
|
+
"cpu": [
|
|
64
|
+
"arm64"
|
|
65
|
+
],
|
|
66
|
+
"license": "MIT",
|
|
67
|
+
"optional": true,
|
|
68
|
+
"os": [
|
|
69
|
+
"darwin"
|
|
70
|
+
],
|
|
71
|
+
"engines": {
|
|
72
|
+
"node": ">= 10"
|
|
73
|
+
}
|
|
74
|
+
},
|
|
75
|
+
"node_modules/@napi-rs/canvas-darwin-x64": {
|
|
76
|
+
"version": "0.1.80",
|
|
77
|
+
"resolved": "https://registry.npmjs.org/@napi-rs/canvas-darwin-x64/-/canvas-darwin-x64-0.1.80.tgz",
|
|
78
|
+
"integrity": "sha512-FqqSU7qFce0Cp3pwnTjVkKjjOtxMqRe6lmINxpIZYaZNnVI0H5FtsaraZJ36SiTHNjZlUB69/HhxNDT1Aaa9vA==",
|
|
79
|
+
"cpu": [
|
|
80
|
+
"x64"
|
|
81
|
+
],
|
|
82
|
+
"license": "MIT",
|
|
83
|
+
"optional": true,
|
|
84
|
+
"os": [
|
|
85
|
+
"darwin"
|
|
86
|
+
],
|
|
87
|
+
"engines": {
|
|
88
|
+
"node": ">= 10"
|
|
89
|
+
}
|
|
90
|
+
},
|
|
91
|
+
"node_modules/@napi-rs/canvas-linux-arm-gnueabihf": {
|
|
92
|
+
"version": "0.1.80",
|
|
93
|
+
"resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-arm-gnueabihf/-/canvas-linux-arm-gnueabihf-0.1.80.tgz",
|
|
94
|
+
"integrity": "sha512-eyWz0ddBDQc7/JbAtY4OtZ5SpK8tR4JsCYEZjCE3dI8pqoWUC8oMwYSBGCYfsx2w47cQgQCgMVRVTFiiO38hHQ==",
|
|
95
|
+
"cpu": [
|
|
96
|
+
"arm"
|
|
97
|
+
],
|
|
98
|
+
"license": "MIT",
|
|
99
|
+
"optional": true,
|
|
100
|
+
"os": [
|
|
101
|
+
"linux"
|
|
102
|
+
],
|
|
103
|
+
"engines": {
|
|
104
|
+
"node": ">= 10"
|
|
105
|
+
}
|
|
106
|
+
},
|
|
107
|
+
"node_modules/@napi-rs/canvas-linux-arm64-gnu": {
|
|
108
|
+
"version": "0.1.80",
|
|
109
|
+
"resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-arm64-gnu/-/canvas-linux-arm64-gnu-0.1.80.tgz",
|
|
110
|
+
"integrity": "sha512-qwA63t8A86bnxhuA/GwOkK3jvb+XTQaTiVML0vAWoHyoZYTjNs7BzoOONDgTnNtr8/yHrq64XXzUoLqDzU+Uuw==",
|
|
111
|
+
"cpu": [
|
|
112
|
+
"arm64"
|
|
113
|
+
],
|
|
114
|
+
"libc": [
|
|
115
|
+
"glibc"
|
|
116
|
+
],
|
|
117
|
+
"license": "MIT",
|
|
118
|
+
"optional": true,
|
|
119
|
+
"os": [
|
|
120
|
+
"linux"
|
|
121
|
+
],
|
|
122
|
+
"engines": {
|
|
123
|
+
"node": ">= 10"
|
|
124
|
+
}
|
|
125
|
+
},
|
|
126
|
+
"node_modules/@napi-rs/canvas-linux-arm64-musl": {
|
|
127
|
+
"version": "0.1.80",
|
|
128
|
+
"resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-arm64-musl/-/canvas-linux-arm64-musl-0.1.80.tgz",
|
|
129
|
+
"integrity": "sha512-1XbCOz/ymhj24lFaIXtWnwv/6eFHXDrjP0jYkc6iHQ9q8oXKzUX1Lc6bu+wuGiLhGh2GS/2JlfORC5ZcXimRcg==",
|
|
130
|
+
"cpu": [
|
|
131
|
+
"arm64"
|
|
132
|
+
],
|
|
133
|
+
"libc": [
|
|
134
|
+
"musl"
|
|
135
|
+
],
|
|
136
|
+
"license": "MIT",
|
|
137
|
+
"optional": true,
|
|
138
|
+
"os": [
|
|
139
|
+
"linux"
|
|
140
|
+
],
|
|
141
|
+
"engines": {
|
|
142
|
+
"node": ">= 10"
|
|
143
|
+
}
|
|
144
|
+
},
|
|
145
|
+
"node_modules/@napi-rs/canvas-linux-riscv64-gnu": {
|
|
146
|
+
"version": "0.1.80",
|
|
147
|
+
"resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-riscv64-gnu/-/canvas-linux-riscv64-gnu-0.1.80.tgz",
|
|
148
|
+
"integrity": "sha512-XTzR125w5ZMs0lJcxRlS1K3P5RaZ9RmUsPtd1uGt+EfDyYMu4c6SEROYsxyatbbu/2+lPe7MPHOO/0a0x7L/gw==",
|
|
149
|
+
"cpu": [
|
|
150
|
+
"riscv64"
|
|
151
|
+
],
|
|
152
|
+
"libc": [
|
|
153
|
+
"glibc"
|
|
154
|
+
],
|
|
155
|
+
"license": "MIT",
|
|
156
|
+
"optional": true,
|
|
157
|
+
"os": [
|
|
158
|
+
"linux"
|
|
159
|
+
],
|
|
160
|
+
"engines": {
|
|
161
|
+
"node": ">= 10"
|
|
162
|
+
}
|
|
163
|
+
},
|
|
164
|
+
"node_modules/@napi-rs/canvas-linux-x64-gnu": {
|
|
165
|
+
"version": "0.1.80",
|
|
166
|
+
"resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-x64-gnu/-/canvas-linux-x64-gnu-0.1.80.tgz",
|
|
167
|
+
"integrity": "sha512-BeXAmhKg1kX3UCrJsYbdQd3hIMDH/K6HnP/pG2LuITaXhXBiNdh//TVVVVCBbJzVQaV5gK/4ZOCMrQW9mvuTqA==",
|
|
168
|
+
"cpu": [
|
|
169
|
+
"x64"
|
|
170
|
+
],
|
|
171
|
+
"libc": [
|
|
172
|
+
"glibc"
|
|
173
|
+
],
|
|
174
|
+
"license": "MIT",
|
|
175
|
+
"optional": true,
|
|
176
|
+
"os": [
|
|
177
|
+
"linux"
|
|
178
|
+
],
|
|
179
|
+
"engines": {
|
|
180
|
+
"node": ">= 10"
|
|
181
|
+
}
|
|
182
|
+
},
|
|
183
|
+
"node_modules/@napi-rs/canvas-linux-x64-musl": {
|
|
184
|
+
"version": "0.1.80",
|
|
185
|
+
"resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-x64-musl/-/canvas-linux-x64-musl-0.1.80.tgz",
|
|
186
|
+
"integrity": "sha512-x0XvZWdHbkgdgucJsRxprX/4o4sEed7qo9rCQA9ugiS9qE2QvP0RIiEugtZhfLH3cyI+jIRFJHV4Fuz+1BHHMg==",
|
|
187
|
+
"cpu": [
|
|
188
|
+
"x64"
|
|
189
|
+
],
|
|
190
|
+
"libc": [
|
|
191
|
+
"musl"
|
|
192
|
+
],
|
|
193
|
+
"license": "MIT",
|
|
194
|
+
"optional": true,
|
|
195
|
+
"os": [
|
|
196
|
+
"linux"
|
|
197
|
+
],
|
|
198
|
+
"engines": {
|
|
199
|
+
"node": ">= 10"
|
|
200
|
+
}
|
|
201
|
+
},
|
|
202
|
+
"node_modules/@napi-rs/canvas-win32-x64-msvc": {
|
|
203
|
+
"version": "0.1.80",
|
|
204
|
+
"resolved": "https://registry.npmjs.org/@napi-rs/canvas-win32-x64-msvc/-/canvas-win32-x64-msvc-0.1.80.tgz",
|
|
205
|
+
"integrity": "sha512-Z8jPsM6df5V8B1HrCHB05+bDiCxjE9QA//3YrkKIdVDEwn5RKaqOxCJDRJkl48cJbylcrJbW4HxZbTte8juuPg==",
|
|
206
|
+
"cpu": [
|
|
207
|
+
"x64"
|
|
208
|
+
],
|
|
209
|
+
"license": "MIT",
|
|
210
|
+
"optional": true,
|
|
211
|
+
"os": [
|
|
212
|
+
"win32"
|
|
213
|
+
],
|
|
214
|
+
"engines": {
|
|
215
|
+
"node": ">= 10"
|
|
216
|
+
}
|
|
217
|
+
},
|
|
218
|
+
"node_modules/@xmldom/xmldom": {
|
|
219
|
+
"version": "0.8.15",
|
|
220
|
+
"resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.15.tgz",
|
|
221
|
+
"integrity": "sha512-/5NV/vDALVFDXgLmfsy9TRCBlKwO2LNBFzpzvb9iIj+jR+eSc6DLYYvVOdivT/jm7MtU6TebYuRmzEOI7w40UA==",
|
|
222
|
+
"license": "MIT",
|
|
223
|
+
"engines": {
|
|
224
|
+
"node": ">=10.0.0"
|
|
225
|
+
}
|
|
226
|
+
},
|
|
227
|
+
"node_modules/argparse": {
|
|
228
|
+
"version": "1.0.10",
|
|
229
|
+
"resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
|
|
230
|
+
"integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
|
|
231
|
+
"license": "MIT",
|
|
232
|
+
"dependencies": {
|
|
233
|
+
"sprintf-js": "~1.0.2"
|
|
234
|
+
}
|
|
235
|
+
},
|
|
236
|
+
"node_modules/base64-js": {
|
|
237
|
+
"version": "1.5.1",
|
|
238
|
+
"resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
|
|
239
|
+
"integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
|
|
240
|
+
"funding": [
|
|
241
|
+
{
|
|
242
|
+
"type": "github",
|
|
243
|
+
"url": "https://github.com/sponsors/feross"
|
|
244
|
+
},
|
|
245
|
+
{
|
|
246
|
+
"type": "patreon",
|
|
247
|
+
"url": "https://www.patreon.com/feross"
|
|
248
|
+
},
|
|
249
|
+
{
|
|
250
|
+
"type": "consulting",
|
|
251
|
+
"url": "https://feross.org/support"
|
|
252
|
+
}
|
|
253
|
+
],
|
|
254
|
+
"license": "MIT"
|
|
255
|
+
},
|
|
256
|
+
"node_modules/bluebird": {
|
|
257
|
+
"version": "3.4.7",
|
|
258
|
+
"resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.7.tgz",
|
|
259
|
+
"integrity": "sha512-iD3898SR7sWVRHbiQv+sHUtHnMvC1o3nW5rAcqnq3uOn07DSAppZYUkIGslDz6gXC7HfunPe7YVBgoEJASPcHA==",
|
|
260
|
+
"license": "MIT"
|
|
261
|
+
},
|
|
262
|
+
"node_modules/core-util-is": {
|
|
263
|
+
"version": "1.0.3",
|
|
264
|
+
"resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz",
|
|
265
|
+
"integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==",
|
|
266
|
+
"license": "MIT"
|
|
267
|
+
},
|
|
268
|
+
"node_modules/dingbat-to-unicode": {
|
|
269
|
+
"version": "1.0.1",
|
|
270
|
+
"resolved": "https://registry.npmjs.org/dingbat-to-unicode/-/dingbat-to-unicode-1.0.1.tgz",
|
|
271
|
+
"integrity": "sha512-98l0sW87ZT58pU4i61wa2OHwxbiYSbuxsCBozaVnYX2iCnr3bLM3fIes1/ej7h1YdOKuKt/MLs706TVnALA65w==",
|
|
272
|
+
"license": "BSD-2-Clause"
|
|
273
|
+
},
|
|
274
|
+
"node_modules/duck": {
|
|
275
|
+
"version": "0.1.12",
|
|
276
|
+
"resolved": "https://registry.npmjs.org/duck/-/duck-0.1.12.tgz",
|
|
277
|
+
"integrity": "sha512-wkctla1O6VfP89gQ+J/yDesM0S7B7XLXjKGzXxMDVFg7uEn706niAtyYovKbyq1oT9YwDcly721/iUWoc8MVRg==",
|
|
278
|
+
"license": "BSD",
|
|
279
|
+
"dependencies": {
|
|
280
|
+
"underscore": "^1.13.1"
|
|
281
|
+
}
|
|
282
|
+
},
|
|
283
|
+
"node_modules/hirify-cli": {
|
|
284
|
+
"version": "0.4.5",
|
|
285
|
+
"resolved": "https://registry.npmjs.org/hirify-cli/-/hirify-cli-0.4.5.tgz",
|
|
286
|
+
"integrity": "sha512-dyuZTXk25d5d5RA8CxnT9RQTnK+GBU6P/ke4roOPJz3PQTVhobPDN8O+A9PdFISwpxNW3EiCfS996U362ZRnNw==",
|
|
287
|
+
"license": "Apache-2.0",
|
|
288
|
+
"bin": {
|
|
289
|
+
"hirify": "bin/hirify.js"
|
|
290
|
+
},
|
|
291
|
+
"engines": {
|
|
292
|
+
"node": ">=18"
|
|
293
|
+
}
|
|
294
|
+
},
|
|
295
|
+
"node_modules/immediate": {
|
|
296
|
+
"version": "3.0.6",
|
|
297
|
+
"resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz",
|
|
298
|
+
"integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==",
|
|
299
|
+
"license": "MIT"
|
|
300
|
+
},
|
|
301
|
+
"node_modules/inherits": {
|
|
302
|
+
"version": "2.0.4",
|
|
303
|
+
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
|
|
304
|
+
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
|
|
305
|
+
"license": "ISC"
|
|
306
|
+
},
|
|
307
|
+
"node_modules/isarray": {
|
|
308
|
+
"version": "1.0.0",
|
|
309
|
+
"resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
|
|
310
|
+
"integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
|
|
311
|
+
"license": "MIT"
|
|
312
|
+
},
|
|
313
|
+
"node_modules/jszip": {
|
|
314
|
+
"version": "3.10.1",
|
|
315
|
+
"resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz",
|
|
316
|
+
"integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==",
|
|
317
|
+
"license": "(MIT OR GPL-3.0-or-later)",
|
|
318
|
+
"dependencies": {
|
|
319
|
+
"lie": "~3.3.0",
|
|
320
|
+
"pako": "~1.0.2",
|
|
321
|
+
"readable-stream": "~2.3.6",
|
|
322
|
+
"setimmediate": "^1.0.5"
|
|
323
|
+
}
|
|
324
|
+
},
|
|
325
|
+
"node_modules/lie": {
|
|
326
|
+
"version": "3.3.0",
|
|
327
|
+
"resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz",
|
|
328
|
+
"integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==",
|
|
329
|
+
"license": "MIT",
|
|
330
|
+
"dependencies": {
|
|
331
|
+
"immediate": "~3.0.5"
|
|
332
|
+
}
|
|
333
|
+
},
|
|
334
|
+
"node_modules/lop": {
|
|
335
|
+
"version": "0.4.2",
|
|
336
|
+
"resolved": "https://registry.npmjs.org/lop/-/lop-0.4.2.tgz",
|
|
337
|
+
"integrity": "sha512-RefILVDQ4DKoRZsJ4Pj22TxE3omDO47yFpkIBoDKzkqPRISs5U1cnAdg/5583YPkWPaLIYHOKRMQSvjFsO26cw==",
|
|
338
|
+
"license": "BSD-2-Clause",
|
|
339
|
+
"dependencies": {
|
|
340
|
+
"duck": "^0.1.12",
|
|
341
|
+
"option": "~0.2.1",
|
|
342
|
+
"underscore": "^1.13.1"
|
|
343
|
+
}
|
|
344
|
+
},
|
|
345
|
+
"node_modules/mammoth": {
|
|
346
|
+
"version": "1.12.2",
|
|
347
|
+
"resolved": "https://registry.npmjs.org/mammoth/-/mammoth-1.12.2.tgz",
|
|
348
|
+
"integrity": "sha512-MH2vkgafD/2MYUaEOtoXLKrHQZ7yLYTHGQgyLNtYZHiUxU1K1QQ+8qMFquDAfhBm06wSGSws3J+Q9QTsKtR44g==",
|
|
349
|
+
"license": "BSD-2-Clause",
|
|
350
|
+
"dependencies": {
|
|
351
|
+
"@xmldom/xmldom": "^0.8.6",
|
|
352
|
+
"argparse": "~1.0.3",
|
|
353
|
+
"base64-js": "^1.5.1",
|
|
354
|
+
"bluebird": "~3.4.0",
|
|
355
|
+
"dingbat-to-unicode": "^1.0.1",
|
|
356
|
+
"jszip": "^3.7.1",
|
|
357
|
+
"lop": "^0.4.2",
|
|
358
|
+
"path-is-absolute": "^1.0.0",
|
|
359
|
+
"underscore": "^1.13.1",
|
|
360
|
+
"xmlbuilder": "^10.0.0"
|
|
361
|
+
},
|
|
362
|
+
"bin": {
|
|
363
|
+
"mammoth": "bin/mammoth"
|
|
364
|
+
},
|
|
365
|
+
"engines": {
|
|
366
|
+
"node": ">=12.0.0"
|
|
367
|
+
}
|
|
368
|
+
},
|
|
369
|
+
"node_modules/option": {
|
|
370
|
+
"version": "0.2.4",
|
|
371
|
+
"resolved": "https://registry.npmjs.org/option/-/option-0.2.4.tgz",
|
|
372
|
+
"integrity": "sha512-pkEqbDyl8ou5cpq+VsnQbe/WlEy5qS7xPzMS1U55OCG9KPvwFD46zDbxQIj3egJSFc3D+XhYOPUzz49zQAVy7A==",
|
|
373
|
+
"license": "BSD-2-Clause"
|
|
374
|
+
},
|
|
375
|
+
"node_modules/pako": {
|
|
376
|
+
"version": "1.0.11",
|
|
377
|
+
"resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz",
|
|
378
|
+
"integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==",
|
|
379
|
+
"license": "(MIT AND Zlib)"
|
|
380
|
+
},
|
|
381
|
+
"node_modules/path-is-absolute": {
|
|
382
|
+
"version": "1.0.1",
|
|
383
|
+
"resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
|
|
384
|
+
"integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
|
|
385
|
+
"license": "MIT",
|
|
386
|
+
"engines": {
|
|
387
|
+
"node": ">=0.10.0"
|
|
388
|
+
}
|
|
389
|
+
},
|
|
390
|
+
"node_modules/pdf-parse": {
|
|
391
|
+
"version": "2.4.5",
|
|
392
|
+
"resolved": "https://registry.npmjs.org/pdf-parse/-/pdf-parse-2.4.5.tgz",
|
|
393
|
+
"integrity": "sha512-mHU89HGh7v+4u2ubfnevJ03lmPgQ5WU4CxAVmTSh/sxVTEDYd1er/dKS/A6vg77NX47KTEoihq8jZBLr8Cxuwg==",
|
|
394
|
+
"license": "Apache-2.0",
|
|
395
|
+
"dependencies": {
|
|
396
|
+
"@napi-rs/canvas": "0.1.80",
|
|
397
|
+
"pdfjs-dist": "5.4.296"
|
|
398
|
+
},
|
|
399
|
+
"bin": {
|
|
400
|
+
"pdf-parse": "bin/cli.mjs"
|
|
401
|
+
},
|
|
402
|
+
"engines": {
|
|
403
|
+
"node": ">=20.16.0 <21 || >=22.3.0"
|
|
404
|
+
},
|
|
405
|
+
"funding": {
|
|
406
|
+
"type": "github",
|
|
407
|
+
"url": "https://github.com/sponsors/mehmet-kozan"
|
|
408
|
+
}
|
|
409
|
+
},
|
|
410
|
+
"node_modules/pdfjs-dist": {
|
|
411
|
+
"version": "5.4.296",
|
|
412
|
+
"resolved": "https://registry.npmjs.org/pdfjs-dist/-/pdfjs-dist-5.4.296.tgz",
|
|
413
|
+
"integrity": "sha512-DlOzet0HO7OEnmUmB6wWGJrrdvbyJKftI1bhMitK7O2N8W2gc757yyYBbINy9IDafXAV9wmKr9t7xsTaNKRG5Q==",
|
|
414
|
+
"license": "Apache-2.0",
|
|
415
|
+
"engines": {
|
|
416
|
+
"node": ">=20.16.0 || >=22.3.0"
|
|
417
|
+
},
|
|
418
|
+
"optionalDependencies": {
|
|
419
|
+
"@napi-rs/canvas": "^0.1.80"
|
|
420
|
+
}
|
|
421
|
+
},
|
|
422
|
+
"node_modules/process-nextick-args": {
|
|
423
|
+
"version": "2.0.1",
|
|
424
|
+
"resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
|
|
425
|
+
"integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==",
|
|
426
|
+
"license": "MIT"
|
|
427
|
+
},
|
|
428
|
+
"node_modules/readable-stream": {
|
|
429
|
+
"version": "2.3.8",
|
|
430
|
+
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
|
|
431
|
+
"integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
|
|
432
|
+
"license": "MIT",
|
|
433
|
+
"dependencies": {
|
|
434
|
+
"core-util-is": "~1.0.0",
|
|
435
|
+
"inherits": "~2.0.3",
|
|
436
|
+
"isarray": "~1.0.0",
|
|
437
|
+
"process-nextick-args": "~2.0.0",
|
|
438
|
+
"safe-buffer": "~5.1.1",
|
|
439
|
+
"string_decoder": "~1.1.1",
|
|
440
|
+
"util-deprecate": "~1.0.1"
|
|
441
|
+
}
|
|
442
|
+
},
|
|
443
|
+
"node_modules/safe-buffer": {
|
|
444
|
+
"version": "5.1.2",
|
|
445
|
+
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
|
|
446
|
+
"integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
|
|
447
|
+
"license": "MIT"
|
|
448
|
+
},
|
|
449
|
+
"node_modules/setimmediate": {
|
|
450
|
+
"version": "1.0.5",
|
|
451
|
+
"resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz",
|
|
452
|
+
"integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==",
|
|
453
|
+
"license": "MIT"
|
|
454
|
+
},
|
|
455
|
+
"node_modules/sprintf-js": {
|
|
456
|
+
"version": "1.0.3",
|
|
457
|
+
"resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
|
|
458
|
+
"integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==",
|
|
459
|
+
"license": "BSD-3-Clause"
|
|
460
|
+
},
|
|
461
|
+
"node_modules/string_decoder": {
|
|
462
|
+
"version": "1.1.1",
|
|
463
|
+
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
|
|
464
|
+
"integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
|
|
465
|
+
"license": "MIT",
|
|
466
|
+
"dependencies": {
|
|
467
|
+
"safe-buffer": "~5.1.0"
|
|
468
|
+
}
|
|
469
|
+
},
|
|
470
|
+
"node_modules/underscore": {
|
|
471
|
+
"version": "1.13.8",
|
|
472
|
+
"resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.8.tgz",
|
|
473
|
+
"integrity": "sha512-DXtD3ZtEQzc7M8m4cXotyHR+FAS18C64asBYY5vqZexfYryNNnDc02W4hKg3rdQuqOYas1jkseX0+nZXjTXnvQ==",
|
|
474
|
+
"license": "MIT"
|
|
475
|
+
},
|
|
476
|
+
"node_modules/util-deprecate": {
|
|
477
|
+
"version": "1.0.2",
|
|
478
|
+
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
|
|
479
|
+
"integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
|
|
480
|
+
"license": "MIT"
|
|
481
|
+
},
|
|
482
|
+
"node_modules/xmlbuilder": {
|
|
483
|
+
"version": "10.1.1",
|
|
484
|
+
"resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-10.1.1.tgz",
|
|
485
|
+
"integrity": "sha512-OyzrcFLL/nb6fMGHbiRDuPup9ljBycsdCypwuyg5AAHvyWzGfChJpCXMG88AGTIMFhGZ9RccFN1e6lhg3hkwKg==",
|
|
486
|
+
"license": "MIT",
|
|
487
|
+
"engines": {
|
|
488
|
+
"node": ">=4.0"
|
|
489
|
+
}
|
|
490
|
+
}
|
|
491
|
+
}
|
|
492
|
+
}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
# Команды рабочих сценариев
|
|
2
|
+
|
|
3
|
+
Установка: `npx jobhunt-kit install [папка]`.
|
|
4
|
+
Без пути создаётся `./my-jobhunt`. Старый `init <папка>` также поддерживается.
|
|
5
|
+
Из установленной папки: `npx jobhunt-kit <команда>`.
|
|
6
|
+
Из другой папки: `npx jobhunt-kit <команда> --workspace <папка>`.
|
|
7
|
+
|
|
8
|
+
В переносимом плагине доступны те же рабочие команды:
|
|
9
|
+
`node <P>/scripts/cli.mjs <команда> --data <D>`. Для работы непосредственно в исходниках:
|
|
10
|
+
`node bin/jobhunt-kit.mjs <команда>`. Тексты JSON писать в файлы, не собирать строкой shell.
|
|
11
|
+
Все рабочие команды возвращают JSON; исключения — help и установщик. Ошибка даёт
|
|
12
|
+
ненулевой exit. Данные по умолчанию — `<workspace>/local/jobhunt-kit`.
|
|
13
|
+
|
|
14
|
+
## Команды и работа агента
|
|
15
|
+
|
|
16
|
+
| Скилл | Детерминированная часть | Что остаётся у агента |
|
|
17
|
+
|---|---|---|
|
|
18
|
+
| job-profile | Пустая анкета, проверка структуры/ссылок evidence/зарплаты, сохранение, сброс и запись подтверждения | Интервью, интерпретация опыта, уточнение противоречий, получение настоящего согласия |
|
|
19
|
+
| job-resume | Копия по SHA-256, извлечение PDF/DOCX/TXT/MD, простые проверки текста, сохранение отчёта, запись завершённой проверки | Визуальная оценка, истинность фактов, соответствие роли и содержательные правки |
|
|
20
|
+
| job-search | Сбор профиля, бюджетов и известных вакансий; журнал запусков/результатов, запрет второго активного запуска через CLI | Актуальные фильтры Hirify, preview, живой поиск, оценка требований и ранжирование |
|
|
21
|
+
| job-apply | Снимок черновика, экспорт текста/ответов, согласование, резервирование и однократный вызов CLI, запись исхода | Написание письма из фактов, проверка живого профиля/квоты, получение разрешения, разбор ответа сервиса |
|
|
22
|
+
| job-track | Списки/история/статусы/Markdown; заполнение prompt для расписания | Интерпретация сообщения кандидата, создание задачи в планировщике после запроса |
|
|
23
|
+
|
|
24
|
+
Технические функции: `profile.mjs`, `resume.mjs`, `extract-resume.mjs`, `commands.mjs`;
|
|
25
|
+
история и защита отправки переиспользуют `tracker.mjs` и `send-packet.mjs`.
|
|
26
|
+
Команды не запускают встроенную LLM и не требуют отдельного AI API-ключа.
|
|
27
|
+
|
|
28
|
+
## Профиль и резюме
|
|
29
|
+
|
|
30
|
+
```text
|
|
31
|
+
npx jobhunt-kit doctor
|
|
32
|
+
npx jobhunt-kit profile init
|
|
33
|
+
npx jobhunt-kit profile show
|
|
34
|
+
npx jobhunt-kit profile check
|
|
35
|
+
npx jobhunt-kit profile save --input local/jobhunt-kit/materials/profile-draft.json
|
|
36
|
+
npx jobhunt-kit profile confirm --note "Пользователь подтвердил перечисленные факты и условия"
|
|
37
|
+
npx jobhunt-kit resume ./resume.pdf
|
|
38
|
+
npx jobhunt-kit resume check
|
|
39
|
+
npx jobhunt-kit resume reviewed --input local/jobhunt-kit/materials/review-result.json
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
`doctor` проверяет только локальное окружение; не читает аккаунт и не создаёт профиль.
|
|
43
|
+
`profile save` принимает полный профиль, проверяет структуру и сбрасывает confirmed_at.
|
|
44
|
+
Сам факт прохождения валидации не подтверждает биографию. `confirm` использовать
|
|
45
|
+
только после реального подтверждения; текст в примере не заменяет ответ пользователя.
|
|
46
|
+
|
|
47
|
+
`resume <file>` сохраняет копию в resumes/<sha256>.<ext>, привязывает её к профилю
|
|
48
|
+
и запускает механические проверки. Новая версия сбрасывает подтверждение профиля.
|
|
49
|
+
PDF извлекается через pdf-parse, DOCX — mammoth, TXT/MD — UTF-8; DOC/RTF сначала
|
|
50
|
+
нужно экспортировать в поддерживаемый формат. OCR и визуальный рендер не выполняются.
|
|
51
|
+
PDF/DOCX обрабатываются локально в дочернем процессе с тайм-аутом 60 секунд.
|
|
52
|
+
|
|
53
|
+
В materials/resume-<sha256>/ появляются checks.json, text.txt (если извлечение удалось)
|
|
54
|
+
и review.md для агента. Уже заполненный review.md не перезаписывается.
|
|
55
|
+
Проверки email/заголовка — простые эвристики, а не ATS-тест. Даже успешное извлечение
|
|
56
|
+
не устанавливает ready. Ошибка парсера записывается в findings, сохраняя файл и
|
|
57
|
+
диагностику; агент проверяет поле text_extraction, а не только exit процесса.
|
|
58
|
+
|
|
59
|
+
Формат review-result.json после фактической проверки агентом:
|
|
60
|
+
|
|
61
|
+
```json
|
|
62
|
+
{
|
|
63
|
+
"sha256": "хеш проверенной версии файла",
|
|
64
|
+
"status": "ready",
|
|
65
|
+
"checks": { "text": "pass", "visual": "pass", "facts": "pass" },
|
|
66
|
+
"evidence": "Что и каким инструментом проверено; ссылка на отчёт и подтверждение кандидата"
|
|
67
|
+
}
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
Можно записать needs_changes. Ready требует всех трёх checks=pass и совпадающего
|
|
71
|
+
хеша; запись не заменяет сами проверки. После изменения review потребуется profile confirm.
|
|
72
|
+
|
|
73
|
+
## Поиск и отклики
|
|
74
|
+
|
|
75
|
+
```text
|
|
76
|
+
npx jobhunt-kit search
|
|
77
|
+
npx jobhunt-kit search start --input run.json
|
|
78
|
+
npx jobhunt-kit search event --input event.json
|
|
79
|
+
npx jobhunt-kit search record --input vacancy.json
|
|
80
|
+
npx jobhunt-kit search finish --input result.json
|
|
81
|
+
npx jobhunt-kit apply prepare --input draft.json
|
|
82
|
+
npx jobhunt-kit apply preview vacancy-slug
|
|
83
|
+
npx jobhunt-kit apply export vacancy-slug
|
|
84
|
+
npx jobhunt-kit apply approve --input approval.json
|
|
85
|
+
npx jobhunt-kit apply begin vacancy-slug
|
|
86
|
+
npx jobhunt-kit apply send --input local/jobhunt-kit/materials/attempt-UUID.json
|
|
87
|
+
npx jobhunt-kit apply finish --input response.json
|
|
88
|
+
npx jobhunt-kit apply resolve --input verified-outcome.json
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
`search` готовит search-context.json и search-task.md для агента; **живой поиск ещё
|
|
92
|
+
не выполнен**. Это явно указано в выводе. Форматы записей совпадают с
|
|
93
|
+
[storage.md](storage.md): start=run-start, event=run-event, record=put, finish=run-finish.
|
|
94
|
+
Чтения/preview/поиск Hirify выполняет агент по job-search и сохраняет их результаты.
|
|
95
|
+
|
|
96
|
+
`apply export` сохраняет текст письма, ответы, снимок и handoff.md в отдельную
|
|
97
|
+
папку версии черновика. `begin` сохраняет пакет по уникальному attempt_id и отдаёт
|
|
98
|
+
packet_path. `send` — единственная рабочая команда этого CLI, вызывающая отправку;
|
|
99
|
+
она не получает новое разрешение сама и не обходит проверки трекера.
|
|
100
|
+
Перед ней агент проверяет квоту и серверный профиль. После неё агент разбирает
|
|
101
|
+
достоверный ответ и вызывает finish. При аварии повторная отправка блокируется.
|
|
102
|
+
|
|
103
|
+
## История, политика и расписание
|
|
104
|
+
|
|
105
|
+
```text
|
|
106
|
+
npx jobhunt-kit track
|
|
107
|
+
npx jobhunt-kit track show vacancy-slug
|
|
108
|
+
npx jobhunt-kit track status vacancy-slug --input status.json
|
|
109
|
+
npx jobhunt-kit history
|
|
110
|
+
npx jobhunt-kit runs
|
|
111
|
+
npx jobhunt-kit report
|
|
112
|
+
npx jobhunt-kit policy show
|
|
113
|
+
npx jobhunt-kit policy set --input permission.json
|
|
114
|
+
npx jobhunt-kit schedule --input schedule.json
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
status.json: `{"status":"interview","note":"Источник и дата сообщения кандидата"}`.
|
|
118
|
+
Состояния и формат permission.json — в storage.md. Команда policy set только
|
|
119
|
+
записывает ранее полученное разрешение, не создаёт его.
|
|
120
|
+
|
|
121
|
+
schedule.json: `{"frequency":"По будням в 09:00","timezone":"Europe/Berlin","mode":"search"}`.
|
|
122
|
+
Срок и зона — только пример. Допустимые mode: search/prepare/auto. Результат —
|
|
123
|
+
materials/scheduled-search.md, а не включённая задача; auto-разрешение не выдаётся.
|
|
124
|
+
Нужен --workspace с установленным шаблоном, чтобы prompt не ссылался на временный
|
|
125
|
+
кеш npx. Планировщик выбирает агент по явному запросу пользователя.
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# Сопроводительное письмо
|
|
2
|
+
|
|
3
|
+
Harvard советует связывать опыт с конкретной ролью и организацией, подкреплять его
|
|
4
|
+
примерами и писать кратко и по существу, обычно в пределах страницы. Известного
|
|
5
|
+
адресата можно назвать; имя не угадывать. Это рекомендация карьерного центра,
|
|
6
|
+
а не ограничение Hirify.
|
|
7
|
+
[Harvard: Cover Letter Tips](https://careerservices.fas.harvard.edu/resources/create-a-strong-resume/#cover-letter-tips).
|
|
8
|
+
|
|
9
|
+
Ниже — собственная процедура шаблона:
|
|
10
|
+
|
|
11
|
+
1. Выбрать 1–2 наиболее важные задачи вакансии и подтверждённые evidence ID кандидата.
|
|
12
|
+
2. Сформулировать связь задачи с опытом. Если чисел нет, использовать качественный
|
|
13
|
+
результат; не придумывать экономию, рост, масштабы команды или стаж.
|
|
14
|
+
3. Мотивацию брать из ответов кандидата. Проверенные факты компании можно использовать
|
|
15
|
+
как контекст, но не превращать их в выдуманное личное восхищение.
|
|
16
|
+
4. Написать на согласованном языке, в естественном тоне. Короткое поле формы обычно
|
|
17
|
+
требует меньше текста, чем отдельное письмо; текущий лимит CLI проверять по ответу.
|
|
18
|
+
5. Проверить имя компании/роль, факты, язык, контакты и отсутствие служебных пометок.
|
|
19
|
+
6. Сохранить точный текст и карту утверждений в draft.json. Ответы анкеты хранить рядом;
|
|
20
|
+
`vacancy apply` передаёт профиль и cover, а не произвольные поля локального банка.
|
|
21
|
+
7. Показать полный пакет перед индивидуальным согласованием. После содержательной
|
|
22
|
+
правки согласование получить заново. В auto действует отдельно записанное разрешение.
|
|
23
|
+
|
|
24
|
+
Шаблон структуры: [cover-letter.md](../templates/cover-letter.md).
|