Skip to content

Commit 5c034f4

Browse files
sinacodeditclaude
andcommitted
feat(yc-review): YC partner-style application review skill
Adds the /yc-review skill: pulls your live Y Combinator application from apply.ycombinator.com through the browse session and delivers a blunt, field-by-field partner critique with a fundability verdict, prioritized fix list, and interview-prep questions. Authentication reuses the existing browser cookie-import flow (same path as /setup-browser-cookies). The skill detects the user's installed browser and imports YC's cross-subdomain session cookies (.ycombinator.com parent + the apply host cookie) itself — no changes to core browser behavior, no other skill modified, nothing stored on disk. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
1 parent 3bef43b commit 5c034f4

9 files changed

Lines changed: 518 additions & 2 deletions

File tree

AGENTS.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,12 @@ designer, QA lead, release engineer, debugger, and more.
99
Skills live in `.agents/skills/` (or `~/.claude/skills/gstack/` on Claude Code).
1010
Invoke them by name (e.g., `/office-hours`).
1111

12+
### YC Application
13+
14+
| Skill | What it does |
15+
|-------|-------------|
16+
| `/yc-review` | YC partner-style review of your live YC application. Field-by-field critique + interview prep. |
17+
1218
### Plan-mode reviews
1319

1420
| Skill | What it does |

CHANGELOG.md

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,31 @@
11
# Changelog
22

3+
## [1.56.0.0] - 2026-06-01
4+
5+
## **A YC partner reads your application back to you, line by line, before the real interview does. Run `/yc-review` and hear the verdict you'd otherwise wait a batch to get.**
6+
7+
`/yc-review` pulls your live Y Combinator application straight from apply.ycombinator.com and critiques it the way a partner would in the room: blunt, specific, quoting your actual answers back at you. It rates your one-liner, what you're building, founder-market fit, traction, competition, and business model, then closes with a fundability call (PASS / BORDERLINE / NO), your three biggest strengths, the three things to fix first, and the interview questions your weak spots will invite. It reads the application through YC's own API using the browser session you're already logged into, so there is nothing to copy, paste, or store.
8+
9+
### What you get
10+
11+
| Section | What it does |
12+
|---------|--------------|
13+
| Field-by-field critique | Rates every answer that matters, quotes the weakest lines verbatim |
14+
| Fundability signal | PASS / BORDERLINE / NO with one-sentence reasoning |
15+
| Fix list | The three highest-leverage changes to make before your interview |
16+
| Interview prep | The questions your application's gaps will provoke, so you can rehearse |
17+
18+
The review is grounded in what you actually submitted, not what you describe from memory. If you have an interview scheduled, it surfaces the time and Zoom link from your application so the prep is concrete.
19+
20+
### What this means for you
21+
22+
If you've applied to YC, you can now get an honest read on your application in the time it takes to log in. Fix the weak answers while they're still editable, and walk into the interview having already heard the hard questions once. Auth reuses the same cookie-import path as `/setup-browser-cookies`, so if you're logged into YC in Comet, Chrome, Arc, Brave, or Edge, it just works.
23+
24+
### Itemized changes
25+
26+
#### Added
27+
- `/yc-review` skill: YC partner-style review of your live application from apply.ycombinator.com. Reads the application through YC's GraphQL API via the browse session, delivers a field-by-field critique, a fundability verdict, a prioritized fix list, and interview-prep questions. Authentication reuses the existing browser cookie-import flow; no application data or credentials are stored.
28+
329
## [1.55.0.0] - 2026-05-30
430

531
## **`/sync-gbrain` can no longer be the trigger that lets gbrain delete your repo. The headed browser stops crash-looping, and gbrain installs the current release instead of a pin 23 versions stale.**

VERSION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
1.55.0.0
1+
1.56.0.0

docs/skills.md

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ Detailed guides for every gstack skill — philosophy, workflow, and examples.
44

55
| Skill | Your specialist | What they do |
66
|-------|----------------|--------------|
7+
| [`/yc-review`](#yc-review) | **YC Partner** | Blunt field-by-field critique of your live YC application. Pulls data from apply.ycombinator.com, rates every key answer, and generates interview prep questions targeting your weak spots. |
78
| [`/office-hours`](#office-hours) | **YC Office Hours** | Start here. Six forcing questions that reframe your product before you write code. Pushes back on your framing, challenges premises, generates implementation alternatives. Design doc feeds into every downstream skill. |
89
| [`/spec`](#spec) | **Spec Author** | Turn vague intent into a precise, executable spec in five phases. Backlog-ready output that downstream skills can pick up. Optional agent spawn at the end. |
910
| [`/plan-ceo-review`](#plan-ceo-review) | **CEO / Founder** | Rethink the problem. Find the 10-star product hiding inside the request. Four modes: Expansion, Selective Expansion, Hold Scope, Reduction. |
@@ -1260,3 +1261,24 @@ Convenience wrapper. The structural Release-build guard against shipping DebugBr
12601261
## `/ios-sync`
12611262

12621263
Run after upgrading gstack or adding new `@Observable` classes. Detects what's installed, runs gen-accessors against the latest upstream templates, refreshes any changed Swift files, verifies the app rebuilds. Cache-key invalidation handles Swift version changes, generator git rev changes, and source changes.
1264+
1265+
---
1266+
1267+
## `/yc-review`
1268+
1269+
Fetch your live YC application from apply.ycombinator.com and get a blunt, field-by-field critique in the voice of a YC partner.
1270+
1271+
The review covers every answer that matters: your one-liner, what you're building, founder-market fit, traction numbers, competitive positioning, business model, and why YC. Each section is rated and explained. Weak answers are quoted directly and told exactly what needs to change.
1272+
1273+
At the end you get your overall fundability signal (PASS / BORDERLINE / NO), your top 3 strengths, the top 3 things to fix before your interview, and a list of interview prep questions targeting your specific weak spots.
1274+
1275+
**How it works:** the skill drives the browse session to apply.ycombinator.com. If you're logged into YC in your real browser, it imports your session cookies automatically (the same cookie-import path as `/setup-browser-cookies`), then reads your application through YC's own API. Nothing is stored on disk and no passwords are handled.
1276+
1277+
**Requirement:** be logged into apply.ycombinator.com in a supported browser (Comet, Chrome, Arc, Brave, or Edge).
1278+
1279+
**Usage:**
1280+
```
1281+
/yc-review
1282+
```
1283+
1284+
No arguments needed. Fetches your most recent application automatically.

gstack/llms.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@ Conventions:
6464
- [/spec](spec/SKILL.md): Turn vague intent into a precise, executable spec in five phases.
6565
- [/sync-gbrain](sync-gbrain/SKILL.md): Keep gbrain current with this repo's code and refresh agent search guidance in CLAUDE.md.
6666
- [/unfreeze](unfreeze/SKILL.md): Clear the freeze boundary set by /freeze, allowing edits to all directories again.
67+
- [/yc-review](yc-review/SKILL.md): YC partner-style review of your Y Combinator application.
6768

6869
## Browse Commands
6970

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "gstack",
3-
"version": "1.55.0.0",
3+
"version": "1.56.0.0",
44
"description": "Garry's Stack — Claude Code skills + fast headless browser. One repo, one install, entire AI engineering workflow.",
55
"license": "MIT",
66
"type": "module",

scripts/proactive-suggestions.json

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -267,6 +267,11 @@
267267
"lead": "Clear the freeze boundary set by /freeze, allowing edits to all directories again.",
268268
"routing": "Use when you want to widen edit scope without ending the session.\nUse when asked to \"unfreeze\", \"unlock edits\", \"remove freeze\", or\n\"allow all edits\".",
269269
"voice_line": null
270+
},
271+
"yc-review": {
272+
"lead": "YC partner-style review of your Y Combinator application.",
273+
"routing": "Fetches your\nlive application from apply.ycombinator.com using the browse session, then\ndelivers a blunt, field-by-field critique in the voice of a YC partner.\nCovers company description, founder story, traction, business model, and\ncompetitive positioning. Use when: \"review my YC app\", \"critique my YC\napplication\", \"how is my YC application\", \"YC app feedback\".",
274+
"voice_line": null
270275
}
271276
}
272277
}

yc-review/SKILL.md

Lines changed: 248 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,248 @@
1+
---
2+
name: yc-review
3+
preamble-tier: 1
4+
version: 1.1.0
5+
description: YC partner-style review of your Y Combinator application. (gstack)
6+
allowed-tools:
7+
- Bash
8+
- AskUserQuestion
9+
triggers:
10+
- review my YC app
11+
- critique my YC application
12+
- how is my YC application
13+
- YC application feedback
14+
- yc review
15+
---
16+
<!-- AUTO-GENERATED from SKILL.md.tmpl — do not edit directly -->
17+
<!-- Regenerate: bun run gen:skill-docs -->
18+
19+
20+
## When to invoke this skill
21+
22+
Fetches your
23+
live application from apply.ycombinator.com using the browse session, then
24+
delivers a blunt, field-by-field critique in the voice of a YC partner.
25+
Covers company description, founder story, traction, business model, and
26+
competitive positioning. Use when: "review my YC app", "critique my YC
27+
application", "how is my YC application", "YC app feedback".
28+
29+
# /yc-review — YC Application Partner Review
30+
31+
You are a **Y Combinator partner** conducting a mock application review. You've read hundreds of applications. You know what a fundable company looks like and what gets filtered out in the first 30 seconds. You do not soften feedback. You do not give participation trophies. You say exactly what a partner would say in the room.
32+
33+
## Step 1: Find the browse binary
34+
35+
## SETUP (run this check BEFORE any browse command)
36+
37+
```bash
38+
_ROOT=$(git rev-parse --show-toplevel 2>/dev/null)
39+
B=""
40+
[ -n "$_ROOT" ] && [ -x "$_ROOT/.claude/skills/gstack/browse/dist/browse" ] && B="$_ROOT/.claude/skills/gstack/browse/dist/browse"
41+
[ -z "$B" ] && B="$HOME/.claude/skills/gstack/browse/dist/browse"
42+
if [ -x "$B" ]; then
43+
echo "READY: $B"
44+
else
45+
echo "NEEDS_SETUP"
46+
fi
47+
```
48+
49+
If `NEEDS_SETUP`:
50+
1. Tell the user: "gstack browse needs a one-time build (~10 seconds). OK to proceed?" Then STOP and wait.
51+
2. Run: `cd <SKILL_DIR> && ./setup`
52+
3. If `bun` is not installed:
53+
```bash
54+
if ! command -v bun >/dev/null 2>&1; then
55+
BUN_VERSION="1.3.10"
56+
BUN_INSTALL_SHA="bab8acfb046aac8c72407bdcce903957665d655d7acaa3e11c7c4616beae68dd"
57+
tmpfile=$(mktemp)
58+
curl -fsSL "https://bun.sh/install" -o "$tmpfile"
59+
actual_sha=$(shasum -a 256 "$tmpfile" | awk '{print $1}')
60+
if [ "$actual_sha" != "$BUN_INSTALL_SHA" ]; then
61+
echo "ERROR: bun install script checksum mismatch" >&2
62+
echo " expected: $BUN_INSTALL_SHA" >&2
63+
echo " got: $actual_sha" >&2
64+
rm "$tmpfile"; exit 1
65+
fi
66+
BUN_VERSION="$BUN_VERSION" bash "$tmpfile"
67+
rm "$tmpfile"
68+
fi
69+
```
70+
71+
## Step 2: Load apply.ycombinator.com and authenticate
72+
73+
Navigate to the apply portal:
74+
75+
```bash
76+
$B goto https://apply.ycombinator.com/home
77+
$B snapshot
78+
```
79+
80+
Check the result. If the snapshot shows the YC application dashboard (not a login form) you're already authenticated — **skip the rest of Step 2 and go to Step 3.** This happens when browse is in CDP mode (connected to the user's real browser) or cookies were imported in a prior run.
81+
82+
If the page redirected to `account.ycombinator.com` and shows a "Log in" form, you need to import the user's YC cookies from their real browser.
83+
84+
### Why YC needs two cookie imports (specific to YC, not a general rule)
85+
86+
YC deliberately splits its login session across two domains: the SSO host `account.ycombinator.com` sets parent-domain cookies on `.ycombinator.com`, and the apply host `apply.ycombinator.com` sets its own host-only session cookie. The GraphQL API on `apply.ycombinator.com` needs **both**. So this skill imports two domains explicitly. This is a quirk of YC's auth — do not generalize it to other sites.
87+
88+
### 2a. Detect the user's browser
89+
90+
gstack supports several Chromium browsers (Comet, Chrome, Arc, Brave, Edge). Detect which one the user has rather than assuming. Running `cookie-import-browser` with no domain prints the detected browsers:
91+
92+
```bash
93+
$B cookie-import-browser 2>&1 | grep -i "Detected browsers"
94+
```
95+
96+
Parse the first browser name from the `Detected browsers: <Name>, ...` line and lowercase it (e.g. `Comet` -> `comet`). Use that value as `<browser>` in the commands below. If no browsers are detected, tell the user no supported browser was found and stop.
97+
98+
### 2b. Import the parent-domain SSO cookies
99+
100+
Import the `.ycombinator.com` cookies (leading dot — this matches YC's parent-domain session cookies). Replace `<browser>` with the name detected in 2a:
101+
102+
```bash
103+
$B cookie-import-browser <browser> --domain .ycombinator.com
104+
$B goto https://apply.ycombinator.com/home
105+
```
106+
107+
After this import the SSO session should log you in, so the second `goto` lands on `apply.ycombinator.com` instead of redirecting.
108+
109+
### 2c. Import the apply host cookie
110+
111+
Now that the page is on `apply.ycombinator.com`, import its host-only session cookie:
112+
113+
```bash
114+
$B cookie-import-browser <browser> --domain apply.ycombinator.com
115+
$B goto https://apply.ycombinator.com/home
116+
$B snapshot
117+
```
118+
119+
If the snapshot shows the application dashboard, you're authenticated — continue to Step 3. If 2b imported 0 cookies, the user isn't logged into YC in their browser — tell them: "I couldn't find your YC cookies. Make sure you're logged into apply.ycombinator.com in your browser, then type `/yc-review` again."
120+
121+
## Step 3: Fetch application data
122+
123+
Run the GraphQL query directly from the page context. The browser session automatically includes session cookies and the CSRF token is read from the page meta tag:
124+
125+
```bash
126+
$B js "const csrf = document.querySelector('meta[name=\"csrf-token\"]')?.content; const r = await fetch('/graphql', {method: 'POST', headers: {'Content-Type': 'application/json', 'X-CSRF-Token': csrf}, body: JSON.stringify({operationName: 'APPS_DASHBOARD', variables: {}, query: 'query APPS_DASHBOARD { allApps { uuid batch submitted submittedAt status invited currentBatch batchShortName batchLongName primaryApplicantName interviewTime interviewZoomUrl interviewQuestionsFilledIn questions { name url describe make wherewhy howfar worked exp get money usernums revenue growthrate whyapply howhear ideas techstack stage incyet investyet currentlyraising cofounder others2 } } }'})}); return r.json();"
127+
```
128+
129+
The output is JSON containing `allApps`. Parse it. Extract the first app. Focus on the `questions` object. If the response is empty or shows an error, tell the user the session may be stale and re-run cookie import.
130+
131+
## Step 4: Deliver the review
132+
133+
You are now a YC partner who just read this application. Write your review in the format below. Be specific — quote actual answers when praising or criticizing. Be blunt. Say what needs to change. Good applications get short reviews; weak applications get long ones.
134+
135+
---
136+
137+
### APPLICATION REVIEW: [company name][batch]
138+
139+
**Status:** [status] [INVITED if applicable] | **Submitted:** [date]
140+
[If interviewTime present: **Interview:** [time] | **Zoom:** [url]]
141+
142+
---
143+
144+
#### THE ONE-LINER
145+
> "[describe field verbatim]"
146+
147+
Rate this 1-5. Is it clear? Does it tell me what the company does without context? Does it create a mental model in 7 words? **5 = Stripe: "Payments infrastructure for the internet."** Most answers are 2-3.
148+
149+
---
150+
151+
#### WHAT YOU'RE BUILDING (`make`)
152+
153+
Read the `make` answer. This is where partners decide if they want to keep reading. Ask:
154+
- Does the first sentence hook me?
155+
- Is the problem obvious from the solution?
156+
- Is there a specific insight that only this founder would have?
157+
- Does it sell the vision without being vague?
158+
159+
Rate it and explain in 3-5 sentences. Quote the part that's weakest.
160+
161+
---
162+
163+
#### WHY THIS FOUNDER (`exp`)
164+
165+
This is the founder-market fit question. Ask:
166+
- Why are YOU the right person to solve this?
167+
- Is the origin story specific and credible?
168+
- Does the background create an unfair advantage?
169+
- Do I believe you will still be working on this in 5 years?
170+
171+
Partners weight this heavily. A weak `exp` kills otherwise good applications.
172+
173+
---
174+
175+
#### TRACTION & PROGRESS (`howfar`, `usernums`, `revenue`)
176+
177+
Show the numbers as given. Assess:
178+
- Is there evidence of real demand (not pilots, not "interested" users)?
179+
- Is the growth rate compelling?
180+
- Are the metrics cherry-picked or honest?
181+
- What would I need to see in 3 months to be impressed?
182+
183+
No revenue is fine at early stage. Zero users at launch is fine. Vague numbers ("several users") is not fine.
184+
185+
---
186+
187+
#### COMPETITIVE POSITIONING (`get`)
188+
189+
Read the `get` answer. Ask:
190+
- Does the founder understand why existing solutions fail?
191+
- Is the insight about competitors genuine or generic "we're better/faster/cheaper"?
192+
- Do they know who they're competing against at a detailed level?
193+
- Does the differentiation hold under pressure?
194+
195+
---
196+
197+
#### BUSINESS MODEL (`money`)
198+
199+
Read the `money` answer. Ask:
200+
- Is the monetization obvious from the product?
201+
- Are the numbers real (backed by market data) or made up?
202+
- Do they know who writes the check and why?
203+
- Is the go-to-market path specific or hand-wavy?
204+
205+
---
206+
207+
#### WHY YC (`whyapply`)
208+
209+
This matters less than most founders think, but tells you about self-awareness. Is the answer generic ("network, resources, advice") or specific to this founder's situation?
210+
211+
---
212+
213+
#### OVERALL VERDICT
214+
215+
**Fundability signal:** PASS / BORDERLINE / NO — with one sentence explaining why.
216+
217+
**Top 3 strengths** (specific, quoted where possible):
218+
1. ...
219+
2. ...
220+
3. ...
221+
222+
**Top 3 things to fix before your interview** (in order of importance):
223+
1. ...
224+
2. ...
225+
3. ...
226+
227+
---
228+
229+
#### INTERVIEW PREP
230+
231+
Based on the weak spots in this application, these are the questions you should expect in your 10-minute YC interview. Prepare tight 30-second answers for each:
232+
233+
1. [Question targeting the biggest weakness]
234+
2. [Question on traction/growth]
235+
3. [Question on founder-market fit]
236+
4. [Question on competition]
237+
5. [Question on business model]
238+
239+
---
240+
241+
## Tone rules
242+
243+
- No em dashes. No bullet point padding. No "great question."
244+
- Partners are direct. If an answer is weak, say it's weak and say exactly why.
245+
- Use the founder's actual words when critiquing — don't paraphrase into vagueness.
246+
- Short paragraphs. Mix one-sentence verdicts with 2-3 sentence explanations.
247+
- Concrete over vague. "This answer has no users, no revenue, and no timeline" beats "traction is unclear."
248+
- If the application is strong, say so. Don't manufacture weaknesses. Strong applications are rare and you should name what makes them strong.

0 commit comments

Comments
 (0)