diff --git a/.agents/skills/react-best-practices/CLAUDE.md b/.agents/skills/react-best-practices/CLAUDE.md
deleted file mode 100644
index 43c994c2d..000000000
--- a/.agents/skills/react-best-practices/CLAUDE.md
+++ /dev/null
@@ -1 +0,0 @@
-@AGENTS.md
diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md
index 994c4503f..4e12bfdd4 100644
--- a/.github/pull_request_template.md
+++ b/.github/pull_request_template.md
@@ -13,7 +13,7 @@ Include only the fields that help the reviewer:
## Loom video
-
-
## Scope check
- [ ] Ran `$scope-check` against the ENG ticket and final diff.
diff --git a/CLAUDE.md b/CLAUDE.md
deleted file mode 100644
index 43c994c2d..000000000
--- a/CLAUDE.md
+++ /dev/null
@@ -1 +0,0 @@
-@AGENTS.md
diff --git a/apps/obsidian/CLAUDE.md b/apps/obsidian/CLAUDE.md
deleted file mode 100644
index 43c994c2d..000000000
--- a/apps/obsidian/CLAUDE.md
+++ /dev/null
@@ -1 +0,0 @@
-@AGENTS.md
diff --git a/apps/roam/CLAUDE.md b/apps/roam/CLAUDE.md
deleted file mode 100644
index 43c994c2d..000000000
--- a/apps/roam/CLAUDE.md
+++ /dev/null
@@ -1 +0,0 @@
-@AGENTS.md
diff --git a/apps/website/CLAUDE.md b/apps/website/CLAUDE.md
deleted file mode 100644
index 43c994c2d..000000000
--- a/apps/website/CLAUDE.md
+++ /dev/null
@@ -1 +0,0 @@
-@AGENTS.md
diff --git a/apps/website/app/api/CLAUDE.md b/apps/website/app/api/CLAUDE.md
deleted file mode 100644
index 43c994c2d..000000000
--- a/apps/website/app/api/CLAUDE.md
+++ /dev/null
@@ -1 +0,0 @@
-@AGENTS.md
diff --git a/apps/website/content/roam/guides/using-the-canvas.mdx b/apps/website/content/roam/guides/using-the-canvas.mdx
index 7346b8535..4c3df7485 100644
--- a/apps/website/content/roam/guides/using-the-canvas.mdx
+++ b/apps/website/content/roam/guides/using-the-canvas.mdx
@@ -79,10 +79,8 @@ To create a relation, click the discourse graph symbol in the lower toolbar and
/>
_Using the relation menu_
-
You can also create a relation on your canvas by clicking on the origin node until the grey drag handles appear and dragging the relation arrow to the target node. You will be prompted to select from one of the available relation types for those nodes.
-
+
+_This is no way to live_
+
+## Transforming data into knowledge with discourse graphs
+
+Many researchers have an established pipeline for accumulating potentially useful evidence and insights, but fewer ways to manage and use these resources.
+
+The [discourse graph protocol](/docs/obsidian/fundamentals/what-is-a-discourse-graph) drives more intentional note-taking and accentuates serendipitous discovery within existing knowledge bases.
+
+## Startup
+
+### PKM aficionados
+
+If you're already using Obsidian or Roam Research or another PKM platform, your first question might be _"Can I integrate discourse graphs into my existing knowledge base?"_
+
+For Roam Research users, the answer is **yes**. Your discourse nodes can coexist with your existing graph. The Discourse Graph plugin creates an annotation layer that captures relevant content as discourse nodes and integrates it into a graph structure that parallels your existing outline.
+
+### Transforming existing notes into discourse nodes
+
+The discourse graph practice of _progressive formalization_ gradually transforms relevant notes, images, and snippets into discourse nodes you can integrate into your graph.
+
+
+ **Progressive formalization** is the practice of identifying and extracting
+ atomic observations, then iteratively refining them from candidate nodes into
+ full discourse nodes.
+
+
+For example, the following image depicts a Roam user's notes on an article from his/her Zotero library, captured as notes on their Daily Notes Page.
+
+
+
+_We love the Daily Notes Page, don't we, folks?_
+
+After installing the **Discourse Graph plugin**, the researcher returns to these notes and marks observations as _candidate claims_ (inferences made from evidence that address a research question), _candidate evidence_ (singular observations made from data), and _candidate caveats_ (a candidate node unique to this researcher's graph that records observations which complicate a claim or piece of evidence without opposing it). He/she even identifies a _candidate question_ to guide his/her ongoing research.
+
+Some of these notes may have to be tweaked, pruned, or reformulated to fit the atomic discourse node format.
+
+ Extracting discourse nodes from existing notes allows you
+to bootstrap a discourse graph from existing work
+
+ Extracting discourse nodes from existing notes helps you
+become comfortable with the discourse graph syntax.
+
+
+
+_Article notes annotated with candidate nodes_
+
+
+ See [Tagging candidate nodes](/docs/roam/guides/tagging-candidate-nodes) for
+ the full rundown on marking and promoting candidate nodes.
+
+
+Finally, the researcher can promote some candidate nodes to full-fledged discourse nodes. The page below shows a new Question page extracted from notes on Merton's seminal _Matthew Effect in Science_ paper. Now the researcher orients his/her future reading toward answering this question, and seeks out additional relevant Sources (seen on the Question page below).
+
+
+
+_A research project is born._
+
+### Best practices for node conversion
+
+The goal of transforming a note into a discourse node is to preserve as much context and information as possible while orienting the content toward the questions animating your research, or at least positioning it so it suggests additional discourse nodes.
+
+First, paraphrase the key insight of the note and record the source of the insight. This paraphrase is your new discourse node. The rest of the note becomes a Source node, where you can retain the remaining note text as additional context for the insight. You might extract several discourse nodes or [candidate nodes](/docs/roam/guides/tagging-candidate-nodes) from a single web-clipped article, but breaking it out into a single DG node + SRC is enough to get started.
+
+
+
+_A Claim extracted from an existing note_
+
+Adding [[wiki-links]] to key terms keeps your new node in conversation with the rest of your vault as you build your graph. This helps you find appropriate discourse relations later.
+
+
+
+_The Source page for the above Claim, containing two further discourse nodes and a wikilink to the rest of the vault_
+
+As you go through your existing notes, you might find that certain sources are accumulating multiple mentions in your graph. Identifying especially productive sources can help you to decide how to allocate your attention.
+
+Of course, you may be the author of many of the original notes in your graph. In that case, we suggest retaining the relevant contextual information on the QUE/CLM/EVD node itself, but remember to create a Source node for yourself!
+
+
+
+### New Roam Research users
+
+Newcomers to Roam Research might experience some blue ocean anxiety: What do I write next to this bullet point? What should be wiki-linked?
+
+
+ Never fear! We have a template graph you can use as a sourdough starter for
+ your own discourse graph, complete with examples and tutorials available for
+ download [here](https://roamresearch.com/#/app/template-lab/page/ynSbRDCOC).
+
+
+#### The discourse canvas: a warm start
+
+
+ Learn how to use the discourse canvas in [this
+ tutorial](/docs/roam/guides/using-the-canvas).
+
+
+We recommend first creating a **Discourse Canvas**. A canvas lets you organize your ideas visually and cluster related ideas by physical proximity.
+
+
+
+_A discourse canvas_
+
+Creating discourse nodes on a canvas encourages brevity, spontaneity, and relational thinking, key aspects of Discourse Graph Thought.
+
+You can add further detail (code, figures, text snippets, etc.) to your nodes later in the sidebar or outline view.
+
+
+
+_Adding more context to discourse nodes in the sidebar_
+
+Your first canvas can seed your entire graph. It is particularly useful to identify key Questions that can direct your research later.
+
+
+
+_Seeding your graph with questions_
+
+Your graph can accommodate multiple unrelated questions. You can explore each question, along with its related Claims, Evidence, and Sources, on a different canvas. Sometimes you may discover unexpected linkages between supposedly unrelated questions. This is the serendipitous discovery a discourse graph enables.
+
+Whether you're working from your own research results or from the scientific literature, adding images to your canvas is an effective way to build out your graph. These images provide at-a-glance contextualization for the discourse nodes on your canvas and can later be converted into Evidence or Result nodes.
+
+
+
+_Adding images to your canvas_
+
+If you are using a webclipper like [Roam highlighter](https://github.com/GitMurf/roam-highlighter) or [Memex](https://Memex.garden), you can paste your text highlights directly onto the canvas for later conversion into discourse nodes.
+
+
+
+_A text snippet from a webclipper added to the canvas (highlighted in magenta)_
+
+
+
+_The discourse canvas: so much room for activities!_
+
+## Creating new discourse nodes
+
+
+ Learn more about creating discourse nodes in [this
+ tutorial](/docs/roam/guides/creating-discourse-nodes).
+
+
+Build out your discourse graph by reading with an eye to capturing information that inspires new questions or is relevant to your current questions.
+
+
+
+_A web highlight captured on a daily notes page as a candidate claim_
+
+
+
+_The claim candidate is promoted to a Claim. Additional context can be added to the dg node template, as well as links to sources (here in grey) and evidence supporting the claim_
+
+This habit of intentional reading is a great way to nudge yourself toward contributing to the public conversation.
+
+
+
+You can also transform the images you add to your canvas into discourse nodes by right-clicking, selecting "convert into," and choosing the appropriate node type in the pop-up modal.
+
+
+_Converting a canvas image into a discourse node_
+
+## Managing your graph
+
+### Organization
+
+Roam Research is an outliner, which means that the basic unit of organization is the **block** rather than the **file**. Every bullet point in your graph is an addressable element, which enables powerful search, query, and backlinking functions. The tradeoff is that the software interface can seem daunting to newcomers.
+
+The discourse graph extension includes several features that help you organize your graph, like the extended [left sidebar](/docs/roam/guides/using-the-left-sidebar) functionality, templates for organizing node data, and a query builder. The tutorial graph uses the recommended [Smartblocks](https://github.com/RoamJS/smartblocks) extension to add custom template flows for creating project and experiment pages.
+
+One of the strengths of the discourse graph workflow is that the protocol automatically imposes a structure on your notes so that you can devote your attention to synthesis rather than housekeeping. The most effective organizational practice is to make liberal use of [candidate node tags](/docs/roam/guides/tagging-candidate-nodes) and regularly review your notes to see which candidates are ready for promotion, and which new [relations](/docs/roam/guides/creating-discourse-relationships) you should create between existing nodes.
+
+### Searching & querying
+
+The point of creating a discourse graph is not to put stuff _into_ it, it's to get meaning _out_ of it. You can quickly locate specific content using **Searches** and **Queries**.
+
+#### Searching and indexing tools
+
+Roam provides several native methods of finding content in your graph. The simplest is the search bar atop every page. You can navigate to it directly by pressing `Cmd/Ctrl + U`.
+
+
+
+_The Roam search bar: find or create pages in your graph_
+
+Enabling "better search" in the Settings menu can speed up searches in larger graphs.
+
+
+
+_Better search setting_
+
+Roam also maintains an index of all of the pages you create in your graph.
+
+
+
+_The All Pages index_
+
+The administrator of your graph can enable **semantic search** so that you can search by vibes.
+
+
+ Certain semantic search options can send your data to a third party.
+
+
+
+
+_Enabling semantic search in Settings > Graph_
+
+
+ Learn more about semantic search
+ [here](https://roamresearch.com/#/app/help/page/CslZS1zBh).
+
+
+#### Node search
+
+The discourse graph plugin includes its own native search tool, which can be triggered by pressing `@` to summon a node search modal with filtering options.
+
+
+
+#### Advanced node search
+
+
+ Advanced node search is a beta feature. Certain semantic search options can
+ send your data to a third party.
+
+
+The discourse graph plugin includes its own semantic search tool, **Advanced node search**, which can be enabled via a toggle on the administrator panel. Open discourse graph settings, press `Ctrl+Shift+A`, and select "Advanced node search."
+
+
+
+_The admin panel, reached from the discourse graph plugin Settings menu_
+
+
+
+_Advanced node search providers and settings_
+
+You can set a hotkey to summon the advanced node search menu in the Command Palette. When triggered, it opens the node search modal, which includes previews of results.
+
+
+
+_An advanced node search result_
+
+#### Queries
+
+The discourse graph plugin includes a [querybuilder](https://github.com/RoamJS/query-builder) component that lets you create and save queries against your graph.
+
+
+
+_A query returning all Question nodes in a graph_
+
+Queries are an effective means of locating nodes and relations that you authored intentionally, as well as surfacing latent connections in your graph. For example, the shared lab graph depicted below contains canvases depicting two different projects in a lab working on α-synuclein: one is a wet-lab experiment, the other uses computer simulations.
+
+
+
+_A canvas describing a series of simulations_
+
+
+
+_A canvas describing a wet lab experiment_
+
+Both canvases describe different results involving the same region, the C-terminus, and its effect on misfolding.
+
+Now both of these researchers have a reason to be interested in the C-terminus, and they might run a query asking _"Which hypotheses mention this region, and which methods were used to investigate each hypothesis?"_
+
+In the querybuilder's language, that query would look like this:
+
+
+
+_A query targeting hypotheses involving the C-terminus region_
+
+In this example, the lab has used the Roam Research convention of using [[wikilinks]] to automatically create pages aggregating references to terms of interest. Seeing [[C-terminus]] and [[aggregation]] in such proximity might prompt the wet lab experimentalist in the lab group to pose a new Question: _"Does the C-terminal modification (pS129) act on the same soluble-state brake that the simulations identified?"_
+
+That question might motivate the creation of a new Hypothesis and a new Issue: an opportunity for collaboration between the _in vitro_ and _in silico_ researchers in the lab.
+
+
+
+_An Issue created by an experimentalist requesting a simulation that could inform several projects_
+
+Well-formed queries surface salient information for others in a shared knowledge base, as well as for future versions of yourself.
+
+## What else would you like to do?
+
+- [Synthesize insights from the literature](/docs/roam/use-cases/synthesize-insights-from-literature)
+- [Track your projects and experiments](/docs/roam/use-cases/track-your-projects-and-experiments)
+- [Share your ideas & research](/docs/roam/use-cases/share-your-ideas-and-research)
diff --git a/apps/website/next.config.ts b/apps/website/next.config.ts
index 6906fcf46..a5a62ecce 100644
--- a/apps/website/next.config.ts
+++ b/apps/website/next.config.ts
@@ -1,3 +1,5 @@
+import path from "node:path";
+import { fileURLToPath } from "node:url";
import nextra from "nextra";
import type { NextConfig } from "next";
import type { RouteHas } from "next/dist/lib/load-custom-routes";
@@ -6,6 +8,11 @@ import { DOCS_REDIRECTS } from "./docsRouteMap";
config();
+const workspaceRoot = path.resolve(
+ path.dirname(fileURLToPath(import.meta.url)),
+ "../..",
+);
+
// expose supabase credentials to the client
process.env.NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY =
process.env.SUPABASE_PUBLISHABLE_KEY;
@@ -44,6 +51,7 @@ const nextConfig: NextConfig = {
},
turbopack: {
+ root: workspaceRoot,
resolveAlias: {
"next-mdx-import-source-file": "./mdx-components.tsx",
},
diff --git a/apps/website/public/docs/roam/PKM-canvas01.png b/apps/website/public/docs/roam/PKM-canvas01.png
new file mode 100644
index 000000000..a672cae13
Binary files /dev/null and b/apps/website/public/docs/roam/PKM-canvas01.png differ
diff --git a/apps/website/public/docs/roam/PKM-canvas02.png b/apps/website/public/docs/roam/PKM-canvas02.png
new file mode 100644
index 000000000..1e614ea0f
Binary files /dev/null and b/apps/website/public/docs/roam/PKM-canvas02.png differ
diff --git a/apps/website/public/docs/roam/PKM-canvas03.png b/apps/website/public/docs/roam/PKM-canvas03.png
new file mode 100644
index 000000000..52e638d3a
Binary files /dev/null and b/apps/website/public/docs/roam/PKM-canvas03.png differ
diff --git a/apps/website/public/docs/roam/PKM-canvas04.png b/apps/website/public/docs/roam/PKM-canvas04.png
new file mode 100644
index 000000000..a46c66a1c
Binary files /dev/null and b/apps/website/public/docs/roam/PKM-canvas04.png differ
diff --git a/apps/website/public/docs/roam/PKM-canvas05.png b/apps/website/public/docs/roam/PKM-canvas05.png
new file mode 100644
index 000000000..7aee97f3f
Binary files /dev/null and b/apps/website/public/docs/roam/PKM-canvas05.png differ
diff --git a/apps/website/public/docs/roam/PKM-canvas06.png b/apps/website/public/docs/roam/PKM-canvas06.png
new file mode 100644
index 000000000..216c85ee9
Binary files /dev/null and b/apps/website/public/docs/roam/PKM-canvas06.png differ
diff --git a/apps/website/public/docs/roam/PKM-canvas07.png b/apps/website/public/docs/roam/PKM-canvas07.png
new file mode 100644
index 000000000..242e2a4de
Binary files /dev/null and b/apps/website/public/docs/roam/PKM-canvas07.png differ
diff --git a/apps/website/public/docs/roam/PKM-canvas08.png b/apps/website/public/docs/roam/PKM-canvas08.png
new file mode 100644
index 000000000..abc200104
Binary files /dev/null and b/apps/website/public/docs/roam/PKM-canvas08.png differ
diff --git a/apps/website/public/docs/roam/PKM-canvas09.png b/apps/website/public/docs/roam/PKM-canvas09.png
new file mode 100644
index 000000000..af9f8d158
Binary files /dev/null and b/apps/website/public/docs/roam/PKM-canvas09.png differ
diff --git a/apps/website/public/docs/roam/PKM-canvas10.png b/apps/website/public/docs/roam/PKM-canvas10.png
new file mode 100644
index 000000000..ecd32b39d
Binary files /dev/null and b/apps/website/public/docs/roam/PKM-canvas10.png differ
diff --git a/apps/website/public/docs/roam/PKM-extract-clm.png b/apps/website/public/docs/roam/PKM-extract-clm.png
new file mode 100644
index 000000000..a62b1f6d6
Binary files /dev/null and b/apps/website/public/docs/roam/PKM-extract-clm.png differ
diff --git a/apps/website/public/docs/roam/PKM-issue.png b/apps/website/public/docs/roam/PKM-issue.png
new file mode 100644
index 000000000..fc128c187
Binary files /dev/null and b/apps/website/public/docs/roam/PKM-issue.png differ
diff --git a/apps/website/public/docs/roam/PKM-searchbar.png b/apps/website/public/docs/roam/PKM-searchbar.png
new file mode 100644
index 000000000..045314211
Binary files /dev/null and b/apps/website/public/docs/roam/PKM-searchbar.png differ
diff --git a/apps/website/public/docs/roam/PKM-sidebar.png b/apps/website/public/docs/roam/PKM-sidebar.png
new file mode 100644
index 000000000..bd98f44bc
Binary files /dev/null and b/apps/website/public/docs/roam/PKM-sidebar.png differ
diff --git a/apps/website/public/docs/roam/PKM-src.png b/apps/website/public/docs/roam/PKM-src.png
new file mode 100644
index 000000000..2b1621dac
Binary files /dev/null and b/apps/website/public/docs/roam/PKM-src.png differ
diff --git a/apps/website/public/docs/roam/admin-panel.png b/apps/website/public/docs/roam/admin-panel.png
new file mode 100644
index 000000000..39266b548
Binary files /dev/null and b/apps/website/public/docs/roam/admin-panel.png differ
diff --git a/apps/website/public/docs/roam/advanced-node-search02.png b/apps/website/public/docs/roam/advanced-node-search02.png
new file mode 100644
index 000000000..ba7e2908e
Binary files /dev/null and b/apps/website/public/docs/roam/advanced-node-search02.png differ
diff --git a/apps/website/public/docs/roam/advanced-node-search03.png b/apps/website/public/docs/roam/advanced-node-search03.png
new file mode 100644
index 000000000..1655da480
Binary files /dev/null and b/apps/website/public/docs/roam/advanced-node-search03.png differ
diff --git a/apps/website/public/docs/roam/c-terminus-query01.png b/apps/website/public/docs/roam/c-terminus-query01.png
new file mode 100644
index 000000000..04d3ad2be
Binary files /dev/null and b/apps/website/public/docs/roam/c-terminus-query01.png differ
diff --git a/apps/website/public/docs/roam/canvas-view01.png b/apps/website/public/docs/roam/canvas-view01.png
new file mode 100644
index 000000000..3ff041c82
Binary files /dev/null and b/apps/website/public/docs/roam/canvas-view01.png differ
diff --git a/apps/website/public/docs/roam/capture-clm.png b/apps/website/public/docs/roam/capture-clm.png
new file mode 100644
index 000000000..8fa16adbc
Binary files /dev/null and b/apps/website/public/docs/roam/capture-clm.png differ
diff --git a/apps/website/public/docs/roam/capture-clm02.png b/apps/website/public/docs/roam/capture-clm02.png
new file mode 100644
index 000000000..ca543f900
Binary files /dev/null and b/apps/website/public/docs/roam/capture-clm02.png differ
diff --git a/apps/website/public/docs/roam/cat-meme.png b/apps/website/public/docs/roam/cat-meme.png
new file mode 100644
index 000000000..3c24815fd
Binary files /dev/null and b/apps/website/public/docs/roam/cat-meme.png differ
diff --git a/apps/website/public/docs/roam/create-node-canvas.gif b/apps/website/public/docs/roam/create-node-canvas.gif
new file mode 100644
index 000000000..381ad896c
Binary files /dev/null and b/apps/website/public/docs/roam/create-node-canvas.gif differ
diff --git a/apps/website/public/docs/roam/drmanhattan.png b/apps/website/public/docs/roam/drmanhattan.png
new file mode 100644
index 000000000..5f1fe05cf
Binary files /dev/null and b/apps/website/public/docs/roam/drmanhattan.png differ
diff --git a/apps/website/public/docs/roam/merton-candidates01.png b/apps/website/public/docs/roam/merton-candidates01.png
new file mode 100644
index 000000000..2a964bb0b
Binary files /dev/null and b/apps/website/public/docs/roam/merton-candidates01.png differ
diff --git a/apps/website/public/docs/roam/merton-candidates02.png b/apps/website/public/docs/roam/merton-candidates02.png
new file mode 100644
index 000000000..0d5d7230e
Binary files /dev/null and b/apps/website/public/docs/roam/merton-candidates02.png differ
diff --git a/apps/website/public/docs/roam/node-search.png b/apps/website/public/docs/roam/node-search.png
new file mode 100644
index 000000000..4e368a251
Binary files /dev/null and b/apps/website/public/docs/roam/node-search.png differ
diff --git a/apps/website/public/docs/roam/pkm-allpages.png b/apps/website/public/docs/roam/pkm-allpages.png
new file mode 100644
index 000000000..45ac62483
Binary files /dev/null and b/apps/website/public/docs/roam/pkm-allpages.png differ
diff --git a/apps/website/public/docs/roam/pkm-que.png b/apps/website/public/docs/roam/pkm-que.png
new file mode 100644
index 000000000..387a06585
Binary files /dev/null and b/apps/website/public/docs/roam/pkm-que.png differ
diff --git a/apps/website/public/docs/roam/query-ex01.png b/apps/website/public/docs/roam/query-ex01.png
new file mode 100644
index 000000000..ed98c8405
Binary files /dev/null and b/apps/website/public/docs/roam/query-ex01.png differ
diff --git a/apps/website/public/docs/roam/roam-semantic-search.png b/apps/website/public/docs/roam/roam-semantic-search.png
new file mode 100644
index 000000000..47c59a630
Binary files /dev/null and b/apps/website/public/docs/roam/roam-semantic-search.png differ
diff --git a/apps/website/public/docs/roam/rooam-advanced-search.png b/apps/website/public/docs/roam/rooam-advanced-search.png
new file mode 100644
index 000000000..3be2e18ec
Binary files /dev/null and b/apps/website/public/docs/roam/rooam-advanced-search.png differ
diff --git a/apps/website/public/docs/roam/tabs02.jpg b/apps/website/public/docs/roam/tabs02.jpg
new file mode 100644
index 000000000..890407b94
Binary files /dev/null and b/apps/website/public/docs/roam/tabs02.jpg differ
diff --git a/discourse-graph.code-workspace b/discourse-graph.code-workspace
index a76a6404a..c4c18c68a 100644
--- a/discourse-graph.code-workspace
+++ b/discourse-graph.code-workspace
@@ -9,6 +9,21 @@
"**/target": true,
"**/dist": true,
"**/next": true,
+ "**/node_modules": true,
+ "**/.next/**": true,
+ "**/.turbo/**": true,
+ "**/build/**": true,
+ },
+ "files.exclude": {
+ "**/node_modules": true,
+ "**/.next": true,
+ "**/.turbo": true,
+ },
+ "search.exclude": {
+ "**/node_modules": true,
+ "**/.next": true,
+ "**/.turbo": true,
+ "**/dist": true,
},
},
}