Videos WE_Gnowy3uw
Replacing 12K LoC with a 200 LoC Skill — David Gomes, Cursor
Scene timeline
54 shot(s).
keyframes kept every frame deduplicated
What was stored
- cues
- 191
- whisperx 191
- chunks
- 33
- from 191 cues
- keyframes
- 43
- kept of 54 captured
- frames with text
- 43
- 1,347 lines read
- chapters
- 12
- from the source metadata
- keyframe bytes
- 5.1 MB
- word timings on 191 cues
Provenance
| stage | state | model | started | took |
|---|---|---|---|---|
fetch |
done | — | 2026-08-10 18:38 | 1m 37s |
stt |
done | — | 2026-08-10 18:40 | 21s |
chunk |
done | — | 2026-08-10 18:40 | 0s |
text_embed |
done | — | 2026-08-10 19:55 | 0s |
keyframe |
done | — | 2026-08-10 18:40 | 1m 37s |
ocr |
done | — | 2026-08-10 18:42 | 41s |
frame_embed |
done | — | 2026-08-10 19:55 | 8s |
Frames, and what the machine read
-
- AlEngineer0.98
- EUROPE1.00
-
- PRESENTINGSPONSOR1.00
- Google DeepMind1.00
-
- PLATINUM SPONSORS0.98
- # Braintrust0.96
- WorkOS OpenAI0.95
-
- AIEngineer0.99
- WorkOS1.00
- AIEngineer0.95
- EUROPE1.00
- EUROPE1.00
- SA1.00
- AlEngineer0.97
- Braintrust1.00
- INTEL1.00
- EUROPE1.00
- arize1.00
- AlEngineer0.99
- EUROPE1.00
- AlEngineer0.98
- EUROPE1.00
- PRESENTED BY1.00
- AlEngineer0.97
- Trigger.dev1.00
- Google DeepMind1.00
- EUROPE1.00
- Modal1.00
- AlEngineer0.98
- EUROPE1.00
-
- AlEngineer0.96
- Wc0.93
- EUROPE1.00
- SAFE1.00
- AIlEng0.87
- INTELLIGENCE1.00
- EUR1.00
- AlEngineer0.98
- EUROPE1.00
- PRESENTED BY1.00
- AlEng0.91
- Google DeepMind1.00
- EUR1.00
- Google DeepMind1.00
- AlEngineer0.97
- EUROPE1.00
-
- AlEngineer0.95
- Wo0.98
- EUROPE1.00
- Replacing 12K LoC with0.97
- SAFE0.97
- AIEngi0.95
- INTELLIGE1.00
- EUROI0.99
- a 200 lines Agent Skill0.98
- Λar0.88
- AlEngineer0.97
- EUROPE1.00
- PRESENTED BY0.99
- AIEngi0.95
- Google DeepMind1.00
- EUROI0.98
- 151files +2,142-15,3280.99
- Updated 5d ago0.99
- David Gomes1.00
- London, Al Engineer Europe 20260.99
- Google DeepMind1.00
- AlEngineer0.99
- EUROPE0.98
-
- Quick recap on1.00
- WorkOS0.99
- ineer0.95
- worktrees in Cursor1.00
- PE1.00
- 04j0.81
- NEnqin er0.84
- ineer1.00
- scal1.00
- Engineering the future of Al1.00
- AlEngineer0.99
- EUROPE1.00
-
- Worktrees1.00
- Wor0.99
- AlEngineer0.99
- EUROPE1.00
- Git Repo0.99
- neo4j0.99
- Bugfixbranch1.00
- AlEngineer0.97
- Mainbranch1.00
- EUROPE1.00
- Featurebranch1.00
- tailscale0.99
- Source: https://medium.com/threadsafe/how-git-worktrees-improve-our-git-workflow-58f89171eb6b0.99
- Google DeepMind0.99
- AlEngineer0.98
- EUROPE1.00
-
- Worktree1.00
- source files1.00
- gineer1.00
- WorkO0.96
- m0.55
- reactar eg ito rae CS, no talwind0.64
- UROPE0.93
- Agents on1.00
- Refactoring the nadio grou comporent ro Talwind t re C50.62
- import as React from0.89
- eo4j0.98
- worktrees1.00
- isolated1.00
- Creating a S module tat mirors the Taleind stles using the0.74
- prects Css varatres and updeting me component Poing the0.62
- praject.0.92
- ¿a Rle grop raw ss using thee varales Trow ple0.51
- ccidental double semicolon on the import.0.97
- inport i Circietcon F fran0.72
- impert I on 3 from "arlsa/ursla"s0.67
- function fal0.80
- Inpert styles frow0.89
- classlame0.68
- import t on } from "a/tik/utita"g0.67
- reture 10.89
- classtien0.87
- Relining ivald + focas-lsibie so the detructive ring lent0.76
- reglaced ty te deault focus ring0.84
- Thought Tor 22s0.86
- Function Nal0.80
- classlane,0.87
- data-slata"0.87
- # radio-group.module.css e1é -10.77
- reture 10.81
- gineer1.00
- classtane-fcnt0.71
- UROPE1.00
- Commands1.00
- Neven0.57
- Radtotrapprunitine.Tndicator0.52
- and lints on1.00
- classaew(styles.indicater)0.82
- isolated1.00
- worktrees1.00
- ilscale1.00
- Google DeepMind0.99
- AlEngineer0.99
- EUROPE1.00
-
- Open PRs from0.95
- worktrees1.00
- creaet a new foeter component on the landing paga0.95
- pmge tsa +20.62
- </'sect lono0.82
- GoogeDepMind0.76
- Explored : e irs0.72
- Run Typelicript oheck without emt od, prom eosc0.88
- Here's what was addad0.96
- Hippy Thursdiy, David.0.95
- conponents/landing-footer.tsx0.96
- * Nae: Pricing, Sign i, Gastub, and Deploy (entermal inks use rela noapener nareferrer° ).0.78
- • Brand row: Same ACME - Circ lieIcon treatment as the header, plus a short blurb0.91
- • Bottoem bar: Border, copyright with the curent year from noe Datel) gotfulinsari) 1.0.75
- app/(dashhoard1/page.tsx0.84
- • Impat and sander <Lantiagfster aftr the last section, stilinside eati.0.71
- Typecheck ( tsc -nonit ) passes. If you want the footer on every route that uses this layout inot only /1, we0.86
- can move it ate ap/Ldasthoaret/layeut tsx nent.0.71
- Talk to multiple0.99
- =00.61
- agents in1.00
- parallel1.00
- Engineering the future of Al0.99
- AlEngineer0.98
- EUROPE1.00
-
- Open PRs from1.00
- worktrees1.00
- WorkOS1.00
- eer1.00
- creaet a new foter companent on the landing page0.94
- pmge lsa +20.62
- </'sect lono0.85
- packagn.jsan)0.89
- 41.00
- ineer1.00
- Explored : tte lato0.71
- Run Typelicript oheck without emik ol, prom eosc0.91
- Here's what was addad0.93
- Happy Thursday, David.0.89
- conpoeents/landiag-footer.tsx0.94
- Ne Prcing, Sgni, Gub, and Deploy (etemal ina use relnapener nareferrer).0.61
- Brand row: Same ACME - Circlelcon treatment a the header, plus a short blurb0.80
- Bottom bar: Boder, coright wt he cuet yer /rom noe Datel) gotuls).0.58
- app/(dashboard)/pagn.tsx0.87
- Typechec (s ss ou wnt the ot y rou thas this laout n oy0.57
- can move It ite ap/Edasthearel/layeut tsx nent.0.71
- • Iimport and ender <LantiagFster ater th last ection tl inside eai0.65
- eer1.00
- Acs' evie0.54
- Talk to multiple1.00
- =00.67
- agents in1.00
- parallel1.00
- scale0.96
- Engineering the future of Al0.98
- AlEngineer0.99
- EUROPE1.00
-
- Preview changes on1.00
- each worktree0.97
- Compare1.00
- multiple1.00
- saas-storer0.81
- 口0.83
- models on the0.99
- Webpege footer desinn0.96
- Next.js SaaS Start0.93
- footer.Ssk0.80
- same prompt,1.00
- Composer 21.00
- mposer 20.99
- Codex 5.30.96
- 000.53
- each operating0.99
- on its own1.00
- Codex 5.30.98
- +12-11.00
- Opus 4.61.00
- +113-10.94
- Opus 4.61.00
- +100-10.95
- isolated1.00
- This option crww0.94
- and integrates i at he oot layout level, providing site-wid foter coverage0.83
- wr.tsx component0.79
- flex structure. Risad More0.89
- worktree1.00
- Next.js and React1.00
- Postgres and Drizzle ORM0.99
- Stripe Integration1.00
- add a footer to the webpage0.98
- Leverage the power of modern web0.99
- Robust database solution with an1.00
- Seamless payment processing and0.99
- Pricing, Sign in, GitHub), top border, white background, same max-0.99
- A site looter alignedi with the header: ACME logo, links (Home,0.99
- w-7xl horizontal padding as the header, and a copyright line.0.98
- technologies for optimal performance1.00
- and developer experience.1.00
- intuitive ORM for efficient data0.99
- management and scalability.1.00
- leading Stripe integration.0.99
- subscription management with industry-1.00
- app/layout.tsx0.97
- The app is wrapped in a column flex layout ( min-h-[1eedvh]) so0.93
- the main area can grow with flex-1 and the footer sits at the0.99
- bottom ( wt-auto on the footer helps when content is short).0.98
- app/(login)/login.tsx1.00
- Ready to launch your0.97
- The outer wrapper no longer uses min-h-[1eedvh] ; it uses flex-0.95
- 1 so sign-in/sign-up share the space above the footer instead of0.97
- SaaS?1.00
- stacking a full viewport block plus the footer and causing extra0.99
- scroil.0.98
- Our template provides everything you need to get your0.99
- View the code1.00
- The footer is global, so i shows on marketing, dashboard, auth, and0.98
- other routes. To change links or copy, edit components/footer,ts0.96
- boilerplate - focus on what makes your product unique.0.99
- SaaS up and running quickly. Don't waste time on1.00
- > 3 Files0.91
- Apply Review0.97
- ACME0.98
- Home Pricing Sign in GitHub0.94
- Composer 2 Fest0.84
- 26 ACME.Al rights resr.eved.0.76
- ②000.75
- Cursor Tab0.99
- [Internal] Roport Bug0.95
-
- Implementation Overview1.00
- • UI/UX for worktree creation and management0.99
- • Agent Loop and tool call worktree scoping0.99
- • Worktree setup script execution0.97
- • Best of N judging0.93
- • Harness changes and system reminders0.99
- • Worktree clean up0.98
-
- NEW1.00
- Implementation Overview1.00
- Engineer1.00
- raint1.00
- EUROPE1.00
- • UI/UX for worktree creation and management0.98
- • Agent Loop and tool call worktree scoping0.99
- penAl0.99
- • Worktree setup script execution0.96
- 151files +2,142-15,3280.97
- Updated 5d ago1.00
- • Best of N judging0.95
- • Harness changes and system reminders0.96
- • Worktree clean up0.96
- Engineer0.95
- • ~200 LoC skill0.96
- EUROPE1.00
- Modal1.00
- Google DeepMind1.00
- AlEngineer0.98
- EUROPE1.00
-
- Primitives1.00
- SenAl0.88
- gineer1.00
- ROPE0.90
- 1. Agent Skills1.00
- 2. Subagents1.00
- DeepMil0.93
- gineer1.00
- ROPE1.00
- CORD1.00
- Engineering the future of Al1.00
- AlEngineer0.99
- EUROPE1.00
-
- EUROPE1.00
- CURSOR1.00
- Dashboand0.95
- Unbloed1.00
- Welcome1.00
- Get Startod0.95
- Quickstart1.00
- Subagents1.00
- Customizing0.98
- When to use subagents1.00
- Why these cubugents exiat0.92
- Models & Pricing1.00
- Quick start0.99
- Changelog1.00
- Custom subagents1.00
- operates in its own context window, handles specific types of work, and returns its result to the parent0.99
- File locations0.99
- Agent0.96
- Overview1.00
- main conversation.1.00
- agent. Use subagents to break down complex tasks, do work in parallel, and preserve context in the0.98
- Configuration ftelds0.91
- File format0.94
- Prompting1.00
- Debugging1.00
- Security1.00
- Agents Window1.00
- Planning1.00
- Tools0.99
- You can use subagents in the editor, CLl, and Cloud Agents.0.99
- Context isolation1.00
- Each subogent has its own context window.0.98
- Long research or exploration tasks don't0.98
- consume space in your main conversation.0.98
- Launch multiple subagents simultaneousty.0.97
- Work on different parts of your codebase0.98
- ° Parallel execution0.97
- without waiting for sequential completion.0.99
- Using subagents1.00
- Model conliguration0.98
- Automatic delegation1.00
- Explicitinvocatton0.92
- Porallel execution0.92
- When the configured model0.95
- wort be used0.97
- AlEngineer0.99
- PRESENTED BY1.00
- EUROPE1.00
- Plugins1.00
- Rules0.99
- Skills0.98
- Hooks1.00
- MCP1.00
- Customizing0.91
- Subagents1.00
- tasks.1.00
- ⑨ Specialized expertise0.95
- Configure subagents with custom prompts,0.99
- tool access, and models for domain-specific0.98
- Define custom subagents and use them0.99
- Reusabiity0.94
- across projects.1.00
- Common patterns0.95
- Best practices1.00
- Example subagents0.95
- Resuming subagents0.95
- Orchestrator pattern0.98
- Verilfication agent0.92
- Debugger1.00
- Test rutner0.87
- Google DeepMind1.00
- Cloud Agents0.96
- How subagents work1.00
- Menaging subagents0.96
- Anti-patterns to avoid0.95
- Setup0.90
- Capabilities0.90
- My Machines0.99
- Self-Hosted Pool1.00
- Bugbot1.00
- Overview1.00
- When Agent encounters a complex task, i can launch a subagent automatically. The subagent0.96
- receives a prompt with all necessary context, works autonomously, and returns a final message with0.98
- Subagents start with a clean context. The parent agent includes relevant information in the prompf0.99
- its results.1.00
- since subagents don't have access to prior conversation history.1.00
- FAQ0.93
- Parformance and cost0.99
- Viewing subtgents0.93
- Creating subagents0.96
- Token and cost considerotions0.97
- Automations1.00
- Foreground vs background1.00
- Copy page0.97
- Best Practices0.99
- Subagents run in one of two modes:0.99
- Google DeepMind0.99
- AlEngineer0.97
- EUROPE1.00
-
- CURSOR1.00
- Docs1.00
- API0.99
- Learn1.00
- Help1.00
- Q Search docs...0.96
- 30K0.76
- Ask Al 3010.91
- Dashboard1.00
- Get Started1.00
- Customizing1.00
- Welcome1.00
- Subagents1.00
- Why these subagents exist1.00
- Quickstart1.00
- When to use subagents1.00
- Models & Pricing0.98
- Quick start1.00
- Changelog1.00
- Subagents are specialized Al assistants that Cursor's agent can delegate tasks to. Each subagent1.00
- Custom subagents1.00
- operates in its own context window, handles specific types of work, and returns its result to the parent1.00
- File locations0.99
- Agent1.00
- agent. Use subagents to break down complex tasks, do work in parallel, and preserve context in the0.99
- File format1.00
- Overview1.00
- main conversation.1.00
- Configuration fields1.00
- Agents Window1.00
- You can use subagents in the editor, CLl, and Cloud Agents.0.98
- Model configuration1.00
- Planning1.00
- When the configured model1.00
- Prompting1.00
- Debugging1.00
- Tools1.00
- Security1.00
- Long research or exploration tasks don't1.00
- Context isolation1.00
- Each subagent has its own context window.1.00
- consume space in your main conversation.1.00
- ° Parallel execution0.98
- Work on different parts of your codebase0.99
- without waiting for sequential completion.0.99
- Launch multiple subagents simultaneously.1.00
- Using subagents1.00
- Parallel execution0.99
- Automatic delegation1.00
- Explicit invocation1.00
- won't be used0.99
- Plugins1.00
- Customizing1.00
- Specialized expertise1.00
- Reusability1.00
- Resuming subagents1.00
- Common patterns1.00
- Verification agent1.00
- Rules1.00
- Orchestrator pattern1.00
- Skills0.99
- Subagents1.00
- Hooks1.00
- tasks.1.00
- tool access, and models for domain-specific1.00
- Configure subagents with custom prompts,0.98
- across projects.1.00
- Define custom subagents and use them0.99
- Example subagents1.00
- Debugger1.00
- Test runner1.00
- MCP1.00
- Best practices1.00
- Anti-patterns to avoid1.00
- Cloud Agents1.00
- How subagents work1.00
- Managing subagents1.00
- Capabilities0.98
- Setup1.00
- Overview1.00
- receives a prompt with all necessary context, works autonomously, and returns a final message with0.98
- its results.1.00
- When Agent encounters a complex task, it can launch a subagent automatically. The subagent0.99
- Performance and cost1.00
- Creating subagents1.00
- Viewing subagents1.00
- My Machines1.00
- Token and cost considerations1.00
- Self-Hosted Pool0.97
- Subagents start with a clean context. The parent agent includes relevant information in the prompt0.99
- FAQ0.99
- Bugbot1.00
- since subagents don't have access to prior conversation history.0.98
- Automations1.00
- Foreground vs background0.99
- Copy page0.97
- Best Practices0.98
- Subagents run in one of two modes:0.99
- Share feedback1.00
-
- saas-starter1.00
- □ @0.51
- New Agent ×0.95
- + ②0.62
- worktree branch=main fix the typo in the company name in the footer1.00
- Planning next moves1.00
- New Agent1.00
- Show Terminal1.00
- 3€0.79
- Show Files1.00
- E1.00
- Search Files1.00
- #T0.64
- Maximize Chat1.00
- T0.53
- XE0.84
- Add Repository1.00
- ∑HA0.67
- Add a follow-up0.99
- ∞Agent0.94
- Composer21.00
- 0:08/0:081.00
- 1x1.00
-
- everyeghere - beckend/server/arc/canmends/giobalConnonds.ts - Cursol0.83
- plobalCommands.ts ×0.88
- m0.50
- backend > server > src > comando > loalComands. ts 0 0LDBAL_ COMAaNDs > content0.68
- const GLOBAL_COMMANDS: GlcbalCommandOefinition[] = [0.95
- name: "worktree".0.88
- argumentHint: "[branch=<name>]°,0.89
- content:1.00
- "Run task in a separate git worktree.\n\n",0.94
- "**Optional argumentiee If the user wrote /worktres branchegit-ref> or /worktree <branche<git-ref», uss that ref as wORKTREE_START_REF (any commit-ish Git0.94
- accepts: branch name, tag, full SHA, origin/main', etc.). Before the creats hlock: Unix/macOS export wORKTREE_START_REFe'egit-refs: windows PowerShell0.93
- SanviWORKTREE_START_REF = 'git-ref>. If omitted, the script defaults to "HEAD' \a\n"0.90
- "Only do this if the user invoked /worktree or explicitly asked for a git worktree in this chat. On first touch for a repo, run the create block once with shell0.98
- working_directory sut to that repo's workspace folder, record workspace folder -> REPO_ROOT -» wORXTREE_PATH', and then use that wORKTREE_PATH' for all later0.95
- reads, edits, shell, and repo-local git in that repo until the user says to stop or uses /apply-worktree' / '/delete-worktree'. Do not fall back to REpo_R0OT0.95
- while that mepping exists.\n\n" +0.94
- asks for another.\n\n"+0.96
- "Multi-root: keep one chat-wide mapping, reuse it if two workspace folders share a repo, and creste at most one worktree per "REpo_Root unless the user explicitly0.97
- TE_ID=<E>-<SUFFI> usd for very reo in this chat.\n\n0.77
- "Use the create blocks below; do not hand-roll a different flow. Shared id: filesystem-safe <NaE> + random 8-char lowercase hex <SUFFIx>" ->0.97
- 1280.97
- "Unix/macOS (multi-repo safe: each repo gets its own subfolder under -/.cursor/worktrees/<wORKTREE_IO>/'):\n"+0.97
- bash\n"0.90
- "set -ouo pipefail\n°0.89
- MORKTREE_ID=*<NAME>-<SUFFIX>"\n+0.90
- REPO_R00T="S(git rev-parse --show-toplevel)*\n+0.88
- "if command -v shasum >/dev/null 2>81: then\n*.0.93
- REPO_BASENAME="S(basename "SREPO_ROOT")"\n0.93
- REPO_HASH=*S(printf \'%s\ "SREPO_R0OT* I shasum -a 256 | cut -c1-12)"\n0.92
- "else\n"0.98
- REPO_HASH="S(printf \'%s\ "SREPO_ROOT* | sha256sum | cut -c1-12)"\n0.91
- REPO_KEY="$(REPO_BASENAME)-$(REPO_HASH}"\n0.93
- "fsln".0.64
- MORKTREE_DIR="SMORKTREE_SET_DIR/SREPO_KEY*\n0.92
- WORKTREE_SET_DIR-"SHOME/.cursor/worktrees/SWORKTREE_ID"\n"0.94
- if [ -d "SWORKTREE_DIR" 1: then echo "ERROR: worktree directory alrendy exists: $WORKTREE_DIR" >&2: exit 1; fi\n".0.95
- "mkdir -p "SWORKTREE_SET_DIR"\n'0.92
- git worktree add --detoch "SMORTREE_DIR" "SMORKTEE_START_REF"\n0.76
- MORXTREE_START_REF="${WORKTREE_START_REF:-HEAD}"\n+0.94
- echo "WORKTREE_ID-SWORKTREE_IO°\n0.86
- "HEAD_COMMIT-"S(git -C "$WORKTREE_DIR" reV-pBrSe HEAD)"\n'.0.92
- echo "REPO_KEY=SREPO_KEY"\n.0.94
- echo “REPO_ROOT=SREPO_ROOT"\n0.83
- #cho "WORKTREE_PATH=SWORKTREE_DIR"\n'0.95
- cho "WORKTREE START REFSWORKTREE START REF"\n0.81
- #cho "HEAD_COPMIT-SHEAD_COMMIT"\n+0.93
- Darid Dones [5 weoks ago) Ln 128, col 119 [tntarnal] meport tug0.82
-
- averysphers = backend/sarvar/src/cosmands/globalCommands.ts - Curso0.92
- globalCommands.ts ×0.96
- backend > server > src > commands > Ts globalCommands.ts > (e) GLOBAL_CcoMMAMOS content0.89
- const GLOBAL_COMMANDS: GlobalCommandDefinition[] = [0.97
- name: "best-of-n0.94
- content:1.00
- "Compare models on the same task.\n\n" +0.96
- "Run the same task in parallel across multiple model picks. Keep each run fully isolated in its own git worktree.\n\n" +1.00
- "**The primary worktree must remain completely unchanged while /best-of-n' is running.** Never let a candidate read/write/edit/shell/git its way through the parent checkout0.99
- once a dedicated worktree exists for that repo.\n\n" +0.96
- "**This command does not include applying or merging** any run onto the main worktree, Never copy patches to main or re-implement the winning attempt on the parent workspace0.97
- as part of best-of-n.\n\n"+0.96
- "*## Input Contract\n\n"0.96
- "Expected format:\n\n".0.99
- /best-of-n <model_csv> <task prompt>'\n\n".0.94
- "/best-of-n opus, codex, composer pls do foobar'\n\n"0.95
- "Example:\n\n"0.95
- model_csv': first token after '/best-of-n, split by commas.\n"+0.95
The page's on-screen-text budget of 600
lines is spent, so the last cards in this grid list fewer lines than they
hold. Narrow the page with ?frames= to read them.
Transcript
191 cues· 3,236 words· 17,157 chars
- 0:15 Hi, everyone.
- 0:15 How are you all doing?
- 0:16 Thank you for coming today.
- 0:19 I'm going to be talking about how Markdown is basically the new code.
- 0:24 As Teja has already sort of previewed, we recently replaced a lot of code in the cursor application with just Markdown, just a skill.
- 0:35 And in today's talk, I'm going to share a bit of the journey of going from a full blown feature with a lot of code, a lot of dependencies, a lot of complexity and tests into a much more lightweight stream down version of the same feature effectively, but just with a single skill.
- 0:57 Before I start, though, I have to give you guys a little recap of Git word trees and how they work in Cursor.
- 1:04 Now, if you haven't heard of word trees,
- 1:07 in Git, they're effectively like separate checkouts.
- 1:11 And I'm sorry for the widescreen.
- 1:14 But they're effectively like separate checkouts of your repos that allow you to work in parallel.
- 1:19 So different agents can be working on the same task at the same or on different tasks at the same time without
- 1:28 interfering with each other.
- 1:29 If you've never used this feature before in Cursor, the way it works is that you can spin up an agent on an individual work tree and you will see, for example, the same file
- 1:42 in two different work trees and you can see that they look different because the agent is doing some work on the work tree but not on your primary checkout.
- 1:50 And any time the agent runs commands or links or anything it does will be isolated and scoped to that Git work tree.
- 2:00 With this feature you can also
- 2:04 work even in parallel at the same time on the screen.
- 2:07 You can have these grids of agents working for you.
- 2:10 And if you say, hey, open a PR, the agent will open a pull request from that work tree with the changes that it produced inside that work tree.
- 2:19 And one of the coolest things about this feature is that it allows you to
- 2:24 give the same task even to different models at the same time, and then compare what different models do on the same prompt.
- 2:34 So if you haven't heard of this, we call it best of n, and it's effectively a way for you to compete, have different models compete on the same task.
- 2:46 And then you can even preview the changes if it's a front-end project you're working on.
- 2:51 You can compare all the different visual implementations and then choose the one you prefer.
- 2:58 Now, if you have never heard about this, everything I'm talking about today, I will also just say that it all came out in around October of last year alongside Cursor 2.0.
- 3:11 And when we initially shipped that, it came with a lot of complexity.
- 3:15 We had to write all the code for creating word trees, managing these word trees, fitting them into the agent as context.
- 3:23 We also had to make sure that the agents were scoped and isolated and they could not escape the word tree they were working on.
- 3:30 We also have something called setup scripts which users can configure and a half cursor run them
- 3:37 anytime an agent starts operating on a given work stream.
- 3:40 We also have the judging.
- 3:41 So I didn't show you this before, but there's a little thumbs up icon on one of the models.
- 3:46 That's just a judge that we run that tells you which implementation looks the best based on
- 3:53 different criteria.
- 3:54 And then we also had to make some changes to the harness and introduce some system reminders to help the agents stay on track in these word trees.
- 4:02 And then finally, there's some cleanup complexity as well, because people like to spin up hundreds of these word trees, and then their disk sizes blow up, and we have to help them by cleaning up the word trees that stay behind.
- 4:15 Now,
- 4:16 In our new implementation, the one that I'm going to be talking about today, we were able to get rid of most of these things.
- 4:24 And in fact, I recently opened the PR removing this entire feature from cursor, and it was a massive deletion of code.
- 4:32 I think it was around 15,000 lines of code deleted.
- 4:36 The new implementation of the feature is
- 4:39 almost as good as the previous one.
- 4:42 And it is much, much more lightweight in terms of us to maintain it.
- 4:48 And it even has some benefits compared to the previous implementation that I'll be talking about today.
- 4:53 So how are we able to replace an entire feature with a skill?
- 4:58 We decided that there are two primitives that we could use to effectively allow cursor users to use word trees by simply leveraging two primitives.
- 5:09 One is agent skills and the other are sub-agents.
- 5:11 So both of these are existing cursor features.
- 5:14 You can learn more about them in our docs.
loading
Chapters
- 0:00 <Untitled Chapter 1>
- 0:14 Introduction and the concept of markdown as code
- 0:59 Recap of Git work trees in Cursor
- 3:10 Complexity of the initial implementation
- 4:18 Deleting 15,000 lines of code
- 4:54 Implementing features with Skills and Sub-agents
- 5:51 How the new Skills are structured
- 7:58 New Slash commands and workflow
- 9:58 Pros of the new implementation
- 12:15 Cons and user feedback challenges
- 14:17 Future improvements: Evals and RL training
- 17:05 What's next for Cursor 3.0 and native work trees