@lucasygu/yc-cli 0.1.0 → 0.3.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/README.md +267 -0
- package/SKILL.md +182 -25
- package/dist/cli.d.ts +3 -3
- package/dist/cli.js +715 -5
- package/dist/cli.js.map +1 -1
- package/dist/data/programs.json +513 -0
- package/dist/lib/programs.d.ts +53 -0
- package/dist/lib/programs.d.ts.map +1 -0
- package/dist/lib/programs.js +77 -0
- package/dist/lib/programs.js.map +1 -0
- package/dist/lib/spc.d.ts +82 -0
- package/dist/lib/spc.d.ts.map +1 -0
- package/dist/lib/spc.js +240 -0
- package/dist/lib/spc.js.map +1 -0
- package/dist/lib/speedrun.d.ts +125 -0
- package/dist/lib/speedrun.d.ts.map +1 -0
- package/dist/lib/speedrun.js +104 -0
- package/dist/lib/speedrun.js.map +1 -0
- package/package.json +12 -3
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* a16z Speedrun API client.
|
|
3
|
+
*
|
|
4
|
+
* No authentication required — all endpoints are plain JSON POSTs
|
|
5
|
+
* to Next.js API routes at speedrun.a16z.com.
|
|
6
|
+
*/
|
|
7
|
+
const BASE_URL = "https://speedrun.a16z.com";
|
|
8
|
+
export const CATEGORIES = [
|
|
9
|
+
"B2B / Enterprise Applications",
|
|
10
|
+
"Consumer Applications",
|
|
11
|
+
"Deep Tech",
|
|
12
|
+
"Gaming / Entertainment Studio",
|
|
13
|
+
"Infrastructure / Dev Tools",
|
|
14
|
+
"Healthcare",
|
|
15
|
+
"GovTech",
|
|
16
|
+
"Web3",
|
|
17
|
+
"Other",
|
|
18
|
+
];
|
|
19
|
+
export const EDUCATION_LEVELS = [
|
|
20
|
+
"High School Degree",
|
|
21
|
+
"Bachelor's Degree (BA, BS)",
|
|
22
|
+
"Master's / Professional Degree (MD, MBA, JD, etc.)",
|
|
23
|
+
"Doctoral Degree (PhD)",
|
|
24
|
+
];
|
|
25
|
+
// --- Error ---
|
|
26
|
+
export class SpeedrunApiError extends Error {
|
|
27
|
+
statusCode;
|
|
28
|
+
response;
|
|
29
|
+
constructor(message, statusCode, response) {
|
|
30
|
+
super(message);
|
|
31
|
+
this.statusCode = statusCode;
|
|
32
|
+
this.response = response;
|
|
33
|
+
this.name = "SpeedrunApiError";
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
// --- Client ---
|
|
37
|
+
export class SpeedrunClient {
|
|
38
|
+
async submitEmail(email) {
|
|
39
|
+
const res = await fetch(`${BASE_URL}/api/apply/submit_email`, {
|
|
40
|
+
method: "POST",
|
|
41
|
+
headers: { "Content-Type": "application/json" },
|
|
42
|
+
body: JSON.stringify({ email }),
|
|
43
|
+
});
|
|
44
|
+
if (!res.ok) {
|
|
45
|
+
const text = await res.text().catch(() => res.statusText);
|
|
46
|
+
throw new SpeedrunApiError(`Email submission failed: ${res.status}`, res.status, text);
|
|
47
|
+
}
|
|
48
|
+
return res.json();
|
|
49
|
+
}
|
|
50
|
+
async submitApplication(application) {
|
|
51
|
+
const res = await fetch(`${BASE_URL}/api/apply/submit-application`, {
|
|
52
|
+
method: "POST",
|
|
53
|
+
headers: { "Content-Type": "application/json" },
|
|
54
|
+
body: JSON.stringify(application),
|
|
55
|
+
});
|
|
56
|
+
if (!res.ok) {
|
|
57
|
+
const body = await res.json().catch(() => ({ message: res.statusText }));
|
|
58
|
+
throw new SpeedrunApiError(`Application submission failed: ${body.message || "Unknown error"}`, res.status, JSON.stringify(body));
|
|
59
|
+
}
|
|
60
|
+
return res.json();
|
|
61
|
+
}
|
|
62
|
+
async getUploadUrl(fileType, expectedSizeBytes, applicationId) {
|
|
63
|
+
const body = {
|
|
64
|
+
file_type: fileType,
|
|
65
|
+
expected_size_bytes: expectedSizeBytes,
|
|
66
|
+
};
|
|
67
|
+
if (applicationId)
|
|
68
|
+
body.application_id = applicationId;
|
|
69
|
+
const res = await fetch(`${BASE_URL}/api/apply/get-upload-url`, {
|
|
70
|
+
method: "POST",
|
|
71
|
+
headers: { "Content-Type": "application/json" },
|
|
72
|
+
body: JSON.stringify(body),
|
|
73
|
+
});
|
|
74
|
+
if (!res.ok) {
|
|
75
|
+
throw new SpeedrunApiError(`Failed to get upload URL: ${res.statusText}`, res.status);
|
|
76
|
+
}
|
|
77
|
+
return res.json();
|
|
78
|
+
}
|
|
79
|
+
async uploadFile(url, file, contentType) {
|
|
80
|
+
const blob = new Blob([file], { type: contentType });
|
|
81
|
+
const res = await fetch(url, {
|
|
82
|
+
method: "PUT",
|
|
83
|
+
headers: { "Content-Type": contentType },
|
|
84
|
+
body: blob,
|
|
85
|
+
});
|
|
86
|
+
if (!res.ok) {
|
|
87
|
+
const text = await res.text().catch(() => res.statusText);
|
|
88
|
+
throw new SpeedrunApiError(`Upload failed: ${res.status}`, res.status, text);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
async submitVideo(data) {
|
|
92
|
+
const res = await fetch(`${BASE_URL}/api/apply/submit_video`, {
|
|
93
|
+
method: "POST",
|
|
94
|
+
headers: { "Content-Type": "application/json" },
|
|
95
|
+
body: JSON.stringify(data),
|
|
96
|
+
});
|
|
97
|
+
if (!res.ok) {
|
|
98
|
+
const body = await res.json().catch(() => ({ message: res.statusText }));
|
|
99
|
+
throw new SpeedrunApiError(`Video submission failed: ${body.message || "Unknown error"}`, res.status);
|
|
100
|
+
}
|
|
101
|
+
return res.json();
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
//# sourceMappingURL=speedrun.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"speedrun.js","sourceRoot":"","sources":["../../src/lib/speedrun.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lucasygu/yc-cli",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "CLI
|
|
3
|
+
"version": "0.3.0",
|
|
4
|
+
"description": "CLI for YC Startup School, a16z Speedrun, South Park Commons & startup program discovery — from the terminal",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/lib/client.js",
|
|
7
7
|
"exports": {
|
|
@@ -33,6 +33,14 @@
|
|
|
33
33
|
"ycombinator",
|
|
34
34
|
"yc",
|
|
35
35
|
"startup-school",
|
|
36
|
+
"a16z",
|
|
37
|
+
"speedrun",
|
|
38
|
+
"south-park-commons",
|
|
39
|
+
"spc",
|
|
40
|
+
"accelerator",
|
|
41
|
+
"fellowship",
|
|
42
|
+
"incubator",
|
|
43
|
+
"discover",
|
|
36
44
|
"cli",
|
|
37
45
|
"claude-code",
|
|
38
46
|
"claude-code-skill"
|
|
@@ -49,7 +57,8 @@
|
|
|
49
57
|
"dependencies": {
|
|
50
58
|
"@steipete/sweet-cookie": "^0.1.0",
|
|
51
59
|
"commander": "^13.1.0",
|
|
52
|
-
"kleur": "^4.1.5"
|
|
60
|
+
"kleur": "^4.1.5",
|
|
61
|
+
"playwright": "^1.58.2"
|
|
53
62
|
},
|
|
54
63
|
"devDependencies": {
|
|
55
64
|
"@types/node": "^22.0.0",
|