mdcontext 0.0.1 → 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.
Files changed (337) hide show
  1. package/.changeset/README.md +28 -0
  2. package/.changeset/config.json +11 -0
  3. package/.claude/settings.local.json +25 -0
  4. package/.github/workflows/ci.yml +83 -0
  5. package/.github/workflows/claude-code-review.yml +44 -0
  6. package/.github/workflows/claude.yml +85 -0
  7. package/.github/workflows/release.yml +113 -0
  8. package/.tldrignore +112 -0
  9. package/BACKLOG.md +338 -0
  10. package/CONTRIBUTING.md +186 -0
  11. package/NOTES/NOTES +44 -0
  12. package/README.md +434 -11
  13. package/biome.json +36 -0
  14. package/cspell.config.yaml +14 -0
  15. package/dist/chunk-23UPXDNL.js +3044 -0
  16. package/dist/chunk-2W7MO2DL.js +1366 -0
  17. package/dist/chunk-3NUAZGMA.js +1689 -0
  18. package/dist/chunk-7TOWB2XB.js +366 -0
  19. package/dist/chunk-7XOTOADQ.js +3065 -0
  20. package/dist/chunk-AH2PDM2K.js +3042 -0
  21. package/dist/chunk-BNXWSZ63.js +3742 -0
  22. package/dist/chunk-BTL5DJVU.js +3222 -0
  23. package/dist/chunk-HDHYG7E4.js +104 -0
  24. package/dist/chunk-HLR4KZBP.js +3234 -0
  25. package/dist/chunk-IP3FRFEB.js +1045 -0
  26. package/dist/chunk-KHU56VDO.js +3042 -0
  27. package/dist/chunk-KRYIFLQR.js +88 -0
  28. package/dist/chunk-LBSDNLEM.js +287 -0
  29. package/dist/chunk-MNTQ7HCP.js +2643 -0
  30. package/dist/chunk-MUJELQQ6.js +1387 -0
  31. package/dist/chunk-MXJGMSLV.js +2199 -0
  32. package/dist/chunk-N6QJGC3Z.js +2636 -0
  33. package/dist/chunk-OBELGBPM.js +1713 -0
  34. package/dist/chunk-OT7R5XTA.js +3192 -0
  35. package/dist/chunk-P7X4RA2T.js +106 -0
  36. package/dist/chunk-PIDUQNC2.js +3185 -0
  37. package/dist/chunk-POGCDIH4.js +3187 -0
  38. package/dist/chunk-PSIEOQGZ.js +3043 -0
  39. package/dist/chunk-PVRT3IHA.js +3238 -0
  40. package/dist/chunk-QNN4TT23.js +1430 -0
  41. package/dist/chunk-RE3R45RJ.js +3042 -0
  42. package/dist/chunk-S7E6TFX6.js +803 -0
  43. package/dist/chunk-SG6GLU4U.js +1378 -0
  44. package/dist/chunk-SJCDV2ST.js +274 -0
  45. package/dist/chunk-SYE5XLF3.js +104 -0
  46. package/dist/chunk-T5VLYBZD.js +103 -0
  47. package/dist/chunk-TOQB7VWU.js +3238 -0
  48. package/dist/chunk-VFNMZ4ZQ.js +3228 -0
  49. package/dist/chunk-VVTGZNBT.js +1629 -0
  50. package/dist/chunk-W7Q4RFEV.js +104 -0
  51. package/dist/chunk-XTYYVRLO.js +3190 -0
  52. package/dist/chunk-Y6MDYVJD.js +3063 -0
  53. package/dist/cli/main.d.ts +1 -0
  54. package/dist/cli/main.js +5458 -0
  55. package/dist/index.d.ts +653 -0
  56. package/dist/index.js +79 -0
  57. package/dist/mcp/server.d.ts +1 -0
  58. package/dist/mcp/server.js +472 -0
  59. package/dist/schema-BAWSG7KY.js +22 -0
  60. package/dist/schema-E3QUPL26.js +20 -0
  61. package/dist/schema-EHL7WUT6.js +20 -0
  62. package/docs/019-USAGE.md +625 -0
  63. package/docs/020-current-implementation.md +364 -0
  64. package/docs/021-DOGFOODING-FINDINGS.md +175 -0
  65. package/docs/BACKLOG.md +80 -0
  66. package/docs/CONFIG.md +1123 -0
  67. package/docs/DESIGN.md +439 -0
  68. package/docs/ERRORS.md +383 -0
  69. package/docs/PROJECT.md +88 -0
  70. package/docs/ROADMAP.md +407 -0
  71. package/docs/summarization.md +320 -0
  72. package/docs/test-links.md +9 -0
  73. package/justfile +40 -0
  74. package/package.json +74 -9
  75. package/pnpm-workspace.yaml +5 -0
  76. package/research/INDEX.md +315 -0
  77. package/research/code-review/README.md +90 -0
  78. package/research/code-review/cli-error-handling-review.md +979 -0
  79. package/research/code-review/code-review-validation-report.md +464 -0
  80. package/research/code-review/main-ts-review.md +1128 -0
  81. package/research/config-analysis/01-current-implementation.md +470 -0
  82. package/research/config-analysis/02-strategy-recommendation.md +428 -0
  83. package/research/config-analysis/03-task-candidates.md +715 -0
  84. package/research/config-analysis/033-research-configuration-management.md +828 -0
  85. package/research/config-analysis/034-research-effect-cli-config.md +1504 -0
  86. package/research/config-analysis/04-consolidated-task-candidates.md +277 -0
  87. package/research/config-docs/SUMMARY.md +357 -0
  88. package/research/config-docs/TEST-RESULTS.md +776 -0
  89. package/research/config-docs/TODO.md +542 -0
  90. package/research/config-docs/analysis.md +744 -0
  91. package/research/config-docs/fix-validation.md +502 -0
  92. package/research/config-docs/help-audit.md +264 -0
  93. package/research/config-docs/help-system-analysis.md +890 -0
  94. package/research/dogfood/consolidated-tool-evaluation.md +373 -0
  95. package/research/dogfood/strategy-a/a-synthesis.md +184 -0
  96. package/research/dogfood/strategy-a/a1-docs.md +226 -0
  97. package/research/dogfood/strategy-a/a2-amorphic.md +156 -0
  98. package/research/dogfood/strategy-a/a3-llm.md +164 -0
  99. package/research/dogfood/strategy-b/b-synthesis.md +228 -0
  100. package/research/dogfood/strategy-b/b1-architecture.md +207 -0
  101. package/research/dogfood/strategy-b/b2-gaps.md +258 -0
  102. package/research/dogfood/strategy-b/b3-workflows.md +250 -0
  103. package/research/dogfood/strategy-c/c-synthesis.md +451 -0
  104. package/research/dogfood/strategy-c/c1-explorer.md +192 -0
  105. package/research/dogfood/strategy-c/c2-diver-memory.md +145 -0
  106. package/research/dogfood/strategy-c/c3-diver-control.md +148 -0
  107. package/research/dogfood/strategy-c/c4-diver-failure.md +151 -0
  108. package/research/dogfood/strategy-c/c5-diver-execution.md +221 -0
  109. package/research/dogfood/strategy-c/c6-diver-org.md +221 -0
  110. package/research/effect-cli-error-handling.md +845 -0
  111. package/research/effect-errors-as-values.md +943 -0
  112. package/research/errors-task-analysis/00-consolidated-tasks.md +207 -0
  113. package/research/errors-task-analysis/cli-commands-analysis.md +909 -0
  114. package/research/errors-task-analysis/embeddings-analysis.md +709 -0
  115. package/research/errors-task-analysis/index-search-analysis.md +812 -0
  116. package/research/frontmatter/COMMENTS-ARE-SKIPPED.md +149 -0
  117. package/research/frontmatter/LLM-CODE-NAVIGATION.md +276 -0
  118. package/research/issue-review.md +603 -0
  119. package/research/llm-summarization/agent-cli-tools-2026.md +1082 -0
  120. package/research/llm-summarization/alternative-providers-2026.md +1428 -0
  121. package/research/llm-summarization/anthropic-2026.md +367 -0
  122. package/research/llm-summarization/claude-cli-integration.md +1706 -0
  123. package/research/llm-summarization/cli-integration-patterns.md +3155 -0
  124. package/research/llm-summarization/openai-2026.md +473 -0
  125. package/research/llm-summarization/openai-compatible-providers-2026.md +1022 -0
  126. package/research/llm-summarization/opencode-cli-integration.md +1552 -0
  127. package/research/llm-summarization/prompt-engineering-2026.md +1426 -0
  128. package/research/llm-summarization/prototype-results.md +56 -0
  129. package/research/llm-summarization/provider-switching-patterns-2026.md +2153 -0
  130. package/research/llm-summarization/typescript-llm-libraries-2026.md +2436 -0
  131. package/research/mdcontext-error-analysis.md +521 -0
  132. package/research/mdcontext-pudding/00-EXECUTIVE-SUMMARY.md +282 -0
  133. package/research/mdcontext-pudding/01-index-embed.md +956 -0
  134. package/research/mdcontext-pudding/02-search-COMMANDS.md +142 -0
  135. package/research/mdcontext-pudding/02-search-SUMMARY.md +146 -0
  136. package/research/mdcontext-pudding/02-search.md +970 -0
  137. package/research/mdcontext-pudding/03-context.md +779 -0
  138. package/research/mdcontext-pudding/04-navigation-and-analytics.md +803 -0
  139. package/research/mdcontext-pudding/04-tree.md +704 -0
  140. package/research/mdcontext-pudding/05-config.md +1038 -0
  141. package/research/mdcontext-pudding/06-links-summary.txt +87 -0
  142. package/research/mdcontext-pudding/06-links.md +679 -0
  143. package/research/mdcontext-pudding/07-stats.md +693 -0
  144. package/research/mdcontext-pudding/BUG-FIX-PLAN.md +388 -0
  145. package/research/mdcontext-pudding/P0-BUG-VALIDATION.md +167 -0
  146. package/research/mdcontext-pudding/README.md +168 -0
  147. package/research/mdcontext-pudding/TESTING-SUMMARY.md +128 -0
  148. package/research/npm_publish/011-npm-workflow-research-agent2.md +792 -0
  149. package/research/npm_publish/012-npm-workflow-research-agent1.md +530 -0
  150. package/research/npm_publish/013-npm-workflow-research-agent3.md +722 -0
  151. package/research/npm_publish/014-npm-workflow-synthesis.md +556 -0
  152. package/research/npm_publish/031-npm-workflow-task-analysis.md +134 -0
  153. package/research/research-quality-review.md +834 -0
  154. package/research/semantic-search/002-research-embedding-models.md +490 -0
  155. package/research/semantic-search/003-research-rag-alternatives.md +523 -0
  156. package/research/semantic-search/004-research-vector-search.md +841 -0
  157. package/research/semantic-search/032-research-semantic-search.md +427 -0
  158. package/research/semantic-search/embedding-text-analysis.md +156 -0
  159. package/research/semantic-search/multi-word-failure-reproduction.md +171 -0
  160. package/research/semantic-search/query-processing-analysis.md +207 -0
  161. package/research/semantic-search/root-cause-and-solution.md +114 -0
  162. package/research/semantic-search/threshold-validation-report.md +69 -0
  163. package/research/semantic-search/vector-search-analysis.md +63 -0
  164. package/research/task-management-2026/00-synthesis-recommendations.md +295 -0
  165. package/research/task-management-2026/01-ai-workflow-tools.md +416 -0
  166. package/research/task-management-2026/02-agent-framework-patterns.md +476 -0
  167. package/research/task-management-2026/03-lightweight-file-based.md +567 -0
  168. package/research/task-management-2026/04-established-tools-ai-features.md +541 -0
  169. package/research/task-management-2026/linear/01-core-features-workflow.md +771 -0
  170. package/research/task-management-2026/linear/02-api-integrations.md +930 -0
  171. package/research/task-management-2026/linear/03-ai-features.md +368 -0
  172. package/research/task-management-2026/linear/04-pricing-setup.md +205 -0
  173. package/research/task-management-2026/linear/05-usage-patterns-best-practices.md +605 -0
  174. package/research/test-path-issues.md +276 -0
  175. package/review/ALP-76/1-error-type-design.md +962 -0
  176. package/review/ALP-76/2-error-handling-patterns.md +906 -0
  177. package/review/ALP-76/3-error-presentation.md +624 -0
  178. package/review/ALP-76/4-test-coverage.md +625 -0
  179. package/review/ALP-76/5-migration-completeness.md +440 -0
  180. package/review/ALP-76/6-effect-best-practices.md +755 -0
  181. package/scripts/apply-branch-protection.sh +47 -0
  182. package/scripts/branch-protection-templates.json +79 -0
  183. package/scripts/prototype-summarization.ts +346 -0
  184. package/scripts/rebuild-hnswlib.js +58 -0
  185. package/scripts/setup-branch-protection.sh +64 -0
  186. package/src/__tests__/fixtures/semantic-search/multi-word-corpus/.mdcontext/active-provider.json +7 -0
  187. package/src/__tests__/fixtures/semantic-search/multi-word-corpus/.mdcontext/bm25.json +541 -0
  188. package/src/__tests__/fixtures/semantic-search/multi-word-corpus/.mdcontext/bm25.meta.json +5 -0
  189. package/src/__tests__/fixtures/semantic-search/multi-word-corpus/.mdcontext/config.json +8 -0
  190. package/src/__tests__/fixtures/semantic-search/multi-word-corpus/.mdcontext/embeddings/openai_text-embedding-3-small_512/vectors.bin +0 -0
  191. package/src/__tests__/fixtures/semantic-search/multi-word-corpus/.mdcontext/embeddings/openai_text-embedding-3-small_512/vectors.meta.bin +0 -0
  192. package/src/__tests__/fixtures/semantic-search/multi-word-corpus/.mdcontext/indexes/documents.json +60 -0
  193. package/src/__tests__/fixtures/semantic-search/multi-word-corpus/.mdcontext/indexes/links.json +13 -0
  194. package/src/__tests__/fixtures/semantic-search/multi-word-corpus/.mdcontext/indexes/sections.json +1197 -0
  195. package/src/__tests__/fixtures/semantic-search/multi-word-corpus/configuration-management.md +99 -0
  196. package/src/__tests__/fixtures/semantic-search/multi-word-corpus/distributed-systems.md +92 -0
  197. package/src/__tests__/fixtures/semantic-search/multi-word-corpus/error-handling.md +78 -0
  198. package/src/__tests__/fixtures/semantic-search/multi-word-corpus/failure-automation.md +55 -0
  199. package/src/__tests__/fixtures/semantic-search/multi-word-corpus/job-context.md +69 -0
  200. package/src/__tests__/fixtures/semantic-search/multi-word-corpus/process-orchestration.md +99 -0
  201. package/src/cli/argv-preprocessor.test.ts +210 -0
  202. package/src/cli/argv-preprocessor.ts +202 -0
  203. package/src/cli/cli.test.ts +627 -0
  204. package/src/cli/commands/backlinks.ts +54 -0
  205. package/src/cli/commands/config-cmd.ts +642 -0
  206. package/src/cli/commands/context.ts +285 -0
  207. package/src/cli/commands/duplicates.ts +122 -0
  208. package/src/cli/commands/embeddings.ts +529 -0
  209. package/src/cli/commands/index-cmd.ts +480 -0
  210. package/src/cli/commands/index.ts +16 -0
  211. package/src/cli/commands/links.ts +52 -0
  212. package/src/cli/commands/search.ts +1281 -0
  213. package/src/cli/commands/stats.ts +149 -0
  214. package/src/cli/commands/tree.ts +128 -0
  215. package/src/cli/config-layer.ts +176 -0
  216. package/src/cli/error-handler.test.ts +235 -0
  217. package/src/cli/error-handler.ts +655 -0
  218. package/src/cli/flag-schemas.ts +341 -0
  219. package/src/cli/help.ts +588 -0
  220. package/src/cli/index.ts +9 -0
  221. package/src/cli/main.ts +435 -0
  222. package/src/cli/options.ts +41 -0
  223. package/src/cli/shared-error-handling.ts +199 -0
  224. package/src/cli/typo-suggester.test.ts +105 -0
  225. package/src/cli/typo-suggester.ts +130 -0
  226. package/src/cli/utils.ts +259 -0
  227. package/src/config/file-provider.test.ts +320 -0
  228. package/src/config/file-provider.ts +273 -0
  229. package/src/config/index.ts +72 -0
  230. package/src/config/integration.test.ts +667 -0
  231. package/src/config/precedence.test.ts +277 -0
  232. package/src/config/precedence.ts +451 -0
  233. package/src/config/schema.test.ts +414 -0
  234. package/src/config/schema.ts +603 -0
  235. package/src/config/service.test.ts +320 -0
  236. package/src/config/service.ts +243 -0
  237. package/src/config/testing.test.ts +264 -0
  238. package/src/config/testing.ts +110 -0
  239. package/src/core/index.ts +1 -0
  240. package/src/core/types.ts +113 -0
  241. package/src/duplicates/detector.test.ts +183 -0
  242. package/src/duplicates/detector.ts +414 -0
  243. package/src/duplicates/index.ts +18 -0
  244. package/src/embeddings/embedding-namespace.test.ts +300 -0
  245. package/src/embeddings/embedding-namespace.ts +947 -0
  246. package/src/embeddings/heading-boost.test.ts +222 -0
  247. package/src/embeddings/hnsw-build-options.test.ts +198 -0
  248. package/src/embeddings/hyde.test.ts +272 -0
  249. package/src/embeddings/hyde.ts +264 -0
  250. package/src/embeddings/index.ts +10 -0
  251. package/src/embeddings/openai-provider.ts +414 -0
  252. package/src/embeddings/pricing.json +22 -0
  253. package/src/embeddings/provider-constants.ts +204 -0
  254. package/src/embeddings/provider-errors.test.ts +967 -0
  255. package/src/embeddings/provider-errors.ts +565 -0
  256. package/src/embeddings/provider-factory.test.ts +240 -0
  257. package/src/embeddings/provider-factory.ts +225 -0
  258. package/src/embeddings/provider-integration.test.ts +788 -0
  259. package/src/embeddings/query-preprocessing.test.ts +187 -0
  260. package/src/embeddings/semantic-search-threshold.test.ts +508 -0
  261. package/src/embeddings/semantic-search.ts +1270 -0
  262. package/src/embeddings/types.ts +359 -0
  263. package/src/embeddings/vector-store.ts +708 -0
  264. package/src/embeddings/voyage-provider.ts +313 -0
  265. package/src/errors/errors.test.ts +845 -0
  266. package/src/errors/index.ts +533 -0
  267. package/src/index/ignore-patterns.test.ts +354 -0
  268. package/src/index/ignore-patterns.ts +305 -0
  269. package/src/index/index.ts +4 -0
  270. package/src/index/indexer.ts +684 -0
  271. package/src/index/storage.ts +260 -0
  272. package/src/index/types.ts +147 -0
  273. package/src/index/watcher.ts +189 -0
  274. package/src/index.ts +30 -0
  275. package/src/integration/search-keyword.test.ts +678 -0
  276. package/src/mcp/server.ts +612 -0
  277. package/src/parser/index.ts +1 -0
  278. package/src/parser/parser.test.ts +291 -0
  279. package/src/parser/parser.ts +394 -0
  280. package/src/parser/section-filter.test.ts +277 -0
  281. package/src/parser/section-filter.ts +392 -0
  282. package/src/search/__tests__/hybrid-search.test.ts +650 -0
  283. package/src/search/bm25-store.ts +366 -0
  284. package/src/search/cross-encoder.test.ts +253 -0
  285. package/src/search/cross-encoder.ts +406 -0
  286. package/src/search/fuzzy-search.test.ts +419 -0
  287. package/src/search/fuzzy-search.ts +273 -0
  288. package/src/search/hybrid-search.ts +448 -0
  289. package/src/search/path-matcher.test.ts +276 -0
  290. package/src/search/path-matcher.ts +33 -0
  291. package/src/search/query-parser.test.ts +260 -0
  292. package/src/search/query-parser.ts +319 -0
  293. package/src/search/searcher.test.ts +280 -0
  294. package/src/search/searcher.ts +724 -0
  295. package/src/search/wink-bm25.d.ts +30 -0
  296. package/src/summarization/cli-providers/claude.ts +202 -0
  297. package/src/summarization/cli-providers/detection.test.ts +273 -0
  298. package/src/summarization/cli-providers/detection.ts +118 -0
  299. package/src/summarization/cli-providers/index.ts +8 -0
  300. package/src/summarization/cost.test.ts +139 -0
  301. package/src/summarization/cost.ts +102 -0
  302. package/src/summarization/error-handler.test.ts +127 -0
  303. package/src/summarization/error-handler.ts +111 -0
  304. package/src/summarization/index.ts +102 -0
  305. package/src/summarization/pipeline.test.ts +498 -0
  306. package/src/summarization/pipeline.ts +231 -0
  307. package/src/summarization/prompts.test.ts +269 -0
  308. package/src/summarization/prompts.ts +133 -0
  309. package/src/summarization/provider-factory.test.ts +396 -0
  310. package/src/summarization/provider-factory.ts +178 -0
  311. package/src/summarization/types.ts +184 -0
  312. package/src/summarize/budget-bugs.test.ts +620 -0
  313. package/src/summarize/formatters.ts +419 -0
  314. package/src/summarize/index.ts +20 -0
  315. package/src/summarize/summarizer.test.ts +275 -0
  316. package/src/summarize/summarizer.ts +597 -0
  317. package/src/summarize/verify-bugs.test.ts +238 -0
  318. package/src/types/huggingface-transformers.d.ts +66 -0
  319. package/src/utils/index.ts +1 -0
  320. package/src/utils/tokens.test.ts +142 -0
  321. package/src/utils/tokens.ts +186 -0
  322. package/tests/fixtures/cli/.mdcontext/active-provider.json +7 -0
  323. package/tests/fixtures/cli/.mdcontext/config.json +8 -0
  324. package/tests/fixtures/cli/.mdcontext/embeddings/openai_text-embedding-3-small_512/vectors.bin +0 -0
  325. package/tests/fixtures/cli/.mdcontext/embeddings/openai_text-embedding-3-small_512/vectors.meta.bin +0 -0
  326. package/tests/fixtures/cli/.mdcontext/indexes/documents.json +33 -0
  327. package/tests/fixtures/cli/.mdcontext/indexes/links.json +12 -0
  328. package/tests/fixtures/cli/.mdcontext/indexes/sections.json +247 -0
  329. package/tests/fixtures/cli/README.md +9 -0
  330. package/tests/fixtures/cli/api-reference.md +11 -0
  331. package/tests/fixtures/cli/getting-started.md +11 -0
  332. package/tests/integration/embed-index.test.ts +712 -0
  333. package/tests/integration/search-context.test.ts +469 -0
  334. package/tests/integration/search-semantic.test.ts +522 -0
  335. package/tsconfig.json +26 -0
  336. package/vitest.config.ts +16 -0
  337. package/vitest.setup.ts +12 -0
@@ -0,0 +1,605 @@
1
+ # Linear Usage Patterns and Best Practices
2
+
3
+ Research on real-world Linear usage patterns from blog posts, case studies, and community discussions.
4
+
5
+ ## Table of Contents
6
+
7
+ 1. [Quick Idea Capture Before Planning](#quick-idea-capture-before-planning)
8
+ 2. [Triage Workflows](#triage-workflows)
9
+ 3. [Solo Developer Workflows](#solo-developer-workflows)
10
+ 4. [Team Workflows](#team-workflows)
11
+ 5. [Common Mistakes and Anti-Patterns](#common-mistakes-and-anti-patterns)
12
+ 6. [Templates and Starter Setups](#templates-and-starter-setups)
13
+ 7. [Keyboard-First Productivity](#keyboard-first-productivity)
14
+ 8. [Real-World Case Studies](#real-world-case-studies)
15
+
16
+ ---
17
+
18
+ ## Quick Idea Capture Before Planning
19
+
20
+ ### The Problem Linear Solves
21
+
22
+ Unlike many native task management apps, Linear doesn't have a built-in quick-entry global hotkey. However, the tool's design philosophy prioritizes speed: **issues only require a title and status** - all other properties are optional. This makes rapid idea capture possible.
23
+
24
+ ### Recommended Quick Capture Methods
25
+
26
+ #### 1. Raycast Integration (Recommended)
27
+
28
+ Descript's internal guide recommends using [Raycast](https://www.raycast.com/), a free system-wide command bar:
29
+
30
+ > "Install the Linear extension and bind the 'create issue for myself' action to a hotkey like Command+Space+Shift. This solves a key requirement of any task management system - a way to quickly capture an emergent issue so you're never left trying to store things in your brain."
31
+
32
+ #### 2. Slack to Linear Automation
33
+
34
+ Descript built a Zapier automation workflow:
35
+
36
+ 1. New Slack message triggers the automation
37
+ 2. ChatGPT summarizes the message into 12 words or less
38
+ 3. Creates a Linear issue with the summary as title
39
+ 4. Populates description with markdown link back to Slack
40
+
41
+ #### 3. Direct Keyboard Shortcut
42
+
43
+ Press `C` anywhere in Linear to create a new issue instantly.
44
+
45
+ ### Quick Capture Best Practices
46
+
47
+ - **Capture first, organize later**: Don't worry about labels, assignees, or priorities during brain dump
48
+ - **Use Triage as your inbox**: Issues can sit in Triage until you're ready to process them
49
+ - **Set a daily triage routine**: Process your captured ideas at a scheduled time
50
+ - **Keep titles action-oriented**: Even in quick capture, write titles that describe what needs to happen
51
+
52
+ ---
53
+
54
+ ## Triage Workflows
55
+
56
+ ### Understanding Triage in Linear
57
+
58
+ Triage is an optional status category that acts as an **inbox for your team**. It creates a separation between incoming work and your committed backlog.
59
+
60
+ ### When Issues Land in Triage
61
+
62
+ Issues automatically go to Triage when:
63
+
64
+ - Created through integrations (Slack, Sentry, Zendesk)
65
+ - Created while inside the Triage view
66
+ - Created by workspace members not belonging to your specific team
67
+ - Submitted via in-app feedback widgets
68
+
69
+ ### The Triage Workflow
70
+
71
+ ```
72
+ [New Issue] -> [Triage Inbox] -> Decision Point
73
+ |
74
+ +--------+--------+--------+--------+
75
+ | | | | |
76
+ Accept Escalate Merge Decline Snooze
77
+ | | | | |
78
+ v v v v v
79
+ Backlog Current Existing Closed Later
80
+ Cycle Issue
81
+ ```
82
+
83
+ ### Triage Intelligence (AI-Powered)
84
+
85
+ Linear's AI features automate triage assessment:
86
+
87
+ - Automatically flags duplicate requests
88
+ - Links related issues together
89
+ - Suggests properties like labels and assignees
90
+ - Routes issues to the appropriate team
91
+
92
+ ### Triage Best Practices
93
+
94
+ 1. **Daily review**: Someone should check Triage daily (or set a rotating responsibility)
95
+ 2. **Use keyboard shortcuts**: `G` then `T` navigates to Triage view
96
+ 3. **Process, don't park**: Every issue in Triage should move within 24-48 hours
97
+ 4. **Decline with explanation**: When declining, always leave a comment explaining why
98
+ 5. **Use snooze strategically**: For issues that aren't ready but shouldn't be lost
99
+
100
+ ### Triage vs Backlog: When to Use Each
101
+
102
+ | Triage | Backlog |
103
+ | --------------------------- | ---------------------------- |
104
+ | Unvetted, needs review | Accepted, ready to be worked |
105
+ | Source may be unclear | Properly scoped and assigned |
106
+ | May be duplicate or invalid | Validated and unique |
107
+ | Requires assessment | Prioritized for future work |
108
+
109
+ ---
110
+
111
+ ## Solo Developer Workflows
112
+
113
+ ### Setting Up for Solo Work
114
+
115
+ > "If you're solo, just create one team (e.g., 'Development' or 'My Work')."
116
+
117
+ Solo developers benefit from Linear's structure without the overhead of team coordination.
118
+
119
+ ### Recommended Solo Setup
120
+
121
+ 1. **Single Team**: One team for all your work
122
+ 2. **Label Groups for Life Areas**: Create labels for different contexts (e.g., "Side Project", "Learning", "Client Work")
123
+ 3. **2-Week Cycles**: Short enough to stay focused, long enough to complete meaningful features
124
+ 4. **Realistic Planning**: Target 80-90% completion rate per cycle
125
+
126
+ ### Solo Developer Workflow Example
127
+
128
+ From a personal productivity case study:
129
+
130
+ **Planning Phase (Sprint Grooming)**:
131
+
132
+ - List all pending tasks
133
+ - Estimate time and priority for each
134
+ - If completion rates hover around 50-70%, reduce workload
135
+
136
+ **Execution Phase**:
137
+
138
+ - Plan next day's tasks the night before
139
+ - Review day's completion each morning
140
+ - Update issue statuses daily
141
+
142
+ **Review Phase**:
143
+
144
+ - Track completion rates at end of cycle
145
+ - Note emotional state during execution
146
+ - Identify improvements for next sprint
147
+
148
+ ### Personal Productivity Tips
149
+
150
+ 1. **Use "My Issues" view**: Press `G` then `M` to see all your assigned issues
151
+ 2. **Keep "Scheduled" list tight**: No more than 3 high-priority items at a time
152
+ 3. **Linear as second brain**: Use it to reduce cognitive load - if it's not in Linear, it doesn't exist
153
+ 4. **Leverage MCP integration**: Use AI (Claude) to batch-create tasks from syllabi, notes, or requirements
154
+
155
+ ### Managing Side Projects with Initiatives
156
+
157
+ Even solo, use Linear's hierarchy:
158
+
159
+ - **Initiatives**: Major life/work streams (e.g., "Client Work", "Products", "Learning")
160
+ - **Projects**: Specific deliverables under each initiative
161
+ - **Issues**: Individual tasks
162
+
163
+ ---
164
+
165
+ ## Team Workflows
166
+
167
+ ### The Plum Approach
168
+
169
+ [Plum's engineering blog](https://build.plumhq.com/how-we-use-linear/) details their three-stage workflow:
170
+
171
+ #### Plan Stage
172
+
173
+ - Create quarterly roadmaps aligned with OKRs
174
+ - Projects listed for every key result
175
+ - One week before cycle starts, managers assign estimated projects
176
+
177
+ #### Work Stage
178
+
179
+ **For Managers:**
180
+
181
+ - Use cycle views during standups (filter by assignee)
182
+ - Log blocking issues in Linear for async notifications
183
+ - Mid-cycle: assess progress using cycle graph
184
+ - Maintain updated project and milestone due dates
185
+
186
+ **For Contributors:**
187
+
188
+ - Update issue statuses daily before standups
189
+ - Use GitHub integration for automatic PR status sync
190
+ - Append deliverables (Figma, GitHub PRs) to issues
191
+ - Keep due dates continuously updated
192
+
193
+ #### Review Stage
194
+
195
+ - Calculate team velocity from previous 3 cycles
196
+ - Identify missed milestones
197
+ - Evaluate progress toward quarterly objectives
198
+
199
+ ### Cycle Planning Best Practices
200
+
201
+ > "The cycle is planned when each team member has an adequate number of estimated points assigned. Estimate points serve as a guideline to avoid overloading developers."
202
+
203
+ 1. **Calculate bandwidth**: Team size x working days - carryover work
204
+ 2. **Don't overload**: Cycles should feel reasonable
205
+ 3. **Auto-rollover**: Let unfinished items move to next cycle automatically
206
+ 4. **Include bug fixes**: All software has bugs - budget for them in every cycle
207
+
208
+ ### Team Organization Principles
209
+
210
+ From The Linear Method:
211
+
212
+ 1. **Clear ownership**: Every project and issue should have a single responsible owner
213
+ 2. **Break down work**: Large tasks into smaller parts, ideally completable in a day or two
214
+ 3. **Brevity in specs**: Short documents force clear scoping
215
+ 4. **Designer-engineer collaboration**: Work together throughout, not in handoffs
216
+
217
+ ### GitHub Integration Workflow
218
+
219
+ ```
220
+ 1. Copy git branch name from Linear (auto-moves issue to "In Progress")
221
+ 2. Create branch with issue ID (e.g., eng-123-my-feature)
222
+ 3. PR automatically links to Linear issue
223
+ 4. PR merge automatically moves issue to "Done"
224
+ ```
225
+
226
+ Configuration tip: Set workflow automations per team in team settings.
227
+
228
+ ---
229
+
230
+ ## Common Mistakes and Anti-Patterns
231
+
232
+ ### Mistake 1: Over-Customization
233
+
234
+ > "Teams try to recreate Jira-level complexity with too many custom statuses, nested labels, or rigid workflows. Before long, people stop following the process altogether."
235
+
236
+ **What goes wrong:**
237
+
238
+ - Too many custom states (keep to 5-7 maximum)
239
+ - Excessive automation rules that become hard to maintain
240
+ - Too many teams and projects that fragment work
241
+ - Complex workflows that team members can't follow
242
+
243
+ **The fix:** Start with Linear's defaults. Only customize if a real pain point arises.
244
+
245
+ ### Mistake 2: User Stories Instead of Issues
246
+
247
+ > "At Linear, they don't write user stories and think they're an anti-pattern in product development."
248
+
249
+ **What goes wrong:**
250
+
251
+ - Formulaic "As a user, I want to..." adds overhead without value
252
+ - Focus shifts from clear communication to format compliance
253
+
254
+ **The fix:** Write simple issues in plain language. Focus on what needs to be done, not on following a template.
255
+
256
+ ### Mistake 3: Hoarding Everything in the Backlog
257
+
258
+ > "You don't need to save every feature request or piece of feedback indefinitely. Important ones will resurface, low priority ones will never get fixed."
259
+
260
+ **What goes wrong:**
261
+
262
+ - Backlog becomes a graveyard of forgotten ideas
263
+ - Planning sessions become overwhelming
264
+ - Team loses trust in the system
265
+
266
+ **The fix:**
267
+
268
+ - Archive issues untouched for 30+ days
269
+ - Schedule regular "Linear gardening" sessions
270
+ - Keep backlog focused on realistic work
271
+
272
+ ### Mistake 4: Abandoning Cycles
273
+
274
+ > "Teams stop using cycles, letting issues pile up in the backlog or stay perpetually 'In Progress.' Planning becomes reactive. Velocity becomes meaningless."
275
+
276
+ **What goes wrong:**
277
+
278
+ - No rhythm or routine to work
279
+ - No way to measure progress
280
+ - Scope creep becomes unmanageable
281
+
282
+ **The fix:** Commit to a consistent cycle length and planning routine.
283
+
284
+ ### Mistake 5: Misusing Estimates
285
+
286
+ **What goes wrong:**
287
+
288
+ - Equating story points with hours (1 SP = 4 hours)
289
+ - Using estimates for delivery date promises
290
+ - Judging performance by points completed
291
+
292
+ **The fix:**
293
+
294
+ - Use estimates for relative sizing only
295
+ - Consider issue count instead (with "split until small" rule)
296
+ - Focus estimates on understanding scope, not timelines
297
+
298
+ ### Mistake 6: Misunderstanding Linear Concepts
299
+
300
+ > "Linear's concept of 'Project' is actually what you would call a Feature. Teams have tried to use Linear's Projects as features, as traditional Projects and as Epics, and neither way made sense."
301
+
302
+ **The fix:** Understand Linear's conceptual model:
303
+
304
+ - **Workspace**: Your company
305
+ - **Team**: A group working together (engineering, design, etc.)
306
+ - **Project**: A time-bound deliverable (like a feature launch)
307
+ - **Cycle**: A rhythm for work (like a sprint, but not tied to releases)
308
+ - **Issue**: An individual task
309
+
310
+ ---
311
+
312
+ ## Templates and Starter Setups
313
+
314
+ ### Project Templates
315
+
316
+ Access via `G` `S` (Settings) -> Templates, or per-team settings.
317
+
318
+ **Workspace Templates:**
319
+
320
+ - Available to all teams
321
+ - Cannot preset team-specific properties
322
+ - Best for cross-team issue types
323
+
324
+ **Team Templates:**
325
+
326
+ - Only available within that team
327
+ - Full access to team labels and statuses
328
+ - Best for team-specific workflows (bugs, features, etc.)
329
+
330
+ ### Form Templates
331
+
332
+ More structured than standard templates. Useful for:
333
+
334
+ - Bug reports requiring repro steps and environment details
335
+ - Security incidents capturing severity and timing
336
+ - IT/HR requests for equipment or onboarding
337
+
338
+ Form template fields can include:
339
+
340
+ - Text input, dropdowns, checkboxes
341
+ - Issue properties (priority, customer, label groups)
342
+ - Required field markers
343
+
344
+ ### Starter Issue Templates
345
+
346
+ #### Bug Report Template
347
+
348
+ ```markdown
349
+ ## Description
350
+
351
+ [Brief description of the bug]
352
+
353
+ ## Steps to Reproduce
354
+
355
+ 1.
356
+ 2.
357
+ 3.
358
+
359
+ ## Expected Behavior
360
+
361
+ [What should happen]
362
+
363
+ ## Actual Behavior
364
+
365
+ [What actually happens]
366
+
367
+ ## Environment
368
+
369
+ - Browser/App version:
370
+ - OS:
371
+ - Device:
372
+
373
+ ## Screenshots/Videos
374
+
375
+ [Attach if available]
376
+ ```
377
+
378
+ #### Feature Request Template
379
+
380
+ ```markdown
381
+ ## Problem Statement
382
+
383
+ [What problem does this solve?]
384
+
385
+ ## Proposed Solution
386
+
387
+ [Brief description of the feature]
388
+
389
+ ## Success Criteria
390
+
391
+ - [ ]
392
+ - [ ]
393
+
394
+ ## Additional Context
395
+
396
+ [Any relevant background]
397
+ ```
398
+
399
+ ### Recommended Label Setup
400
+
401
+ Keep labels minimal and consistent:
402
+
403
+ ```
404
+ Priority (built-in):
405
+ - Urgent
406
+ - High
407
+ - Medium
408
+ - Low
409
+
410
+ Type:
411
+ - Bug
412
+ - Feature
413
+ - Improvement
414
+ - Tech Debt
415
+
416
+ Area (team-specific):
417
+ - Frontend
418
+ - Backend
419
+ - Infrastructure
420
+ - Documentation
421
+ ```
422
+
423
+ **Naming conventions:**
424
+
425
+ - Singular, not plural ("Bug" not "Bugs")
426
+ - Consistent capitalization ("Frontend" not "front-end")
427
+ - Don't replicate statuses as labels
428
+
429
+ ### Starter Workflow Setup
430
+
431
+ **Default statuses (recommended to keep):**
432
+
433
+ 1. Triage (optional but recommended)
434
+ 2. Backlog
435
+ 3. Todo
436
+ 4. In Progress
437
+ 5. In Review
438
+ 6. Done
439
+ 7. Canceled
440
+
441
+ **Cycle setup:**
442
+
443
+ - 2-week cycles are most common
444
+ - Set automatic start day (Monday recommended)
445
+ - Enable automatic rollover for incomplete items
446
+
447
+ ---
448
+
449
+ ## Keyboard-First Productivity
450
+
451
+ Linear is arguably the most keyboard-optimized project management tool. Mastering shortcuts dramatically improves efficiency.
452
+
453
+ ### Essential Shortcuts
454
+
455
+ | Shortcut | Action |
456
+ | ---------------- | ----------------------------------- |
457
+ | `?` | Show keyboard shortcuts help |
458
+ | `Cmd/Ctrl + K` | Command palette (context-sensitive) |
459
+ | `C` | Create new issue |
460
+ | `Option/Alt + C` | Create issue from template |
461
+
462
+ ### Navigation
463
+
464
+ | Shortcut | Action |
465
+ | ------------ | ------------------- |
466
+ | `G` then `M` | Go to My Issues |
467
+ | `G` then `T` | Go to Triage |
468
+ | `G` then `B` | Go to Backlog |
469
+ | `G` then `A` | Go to Active issues |
470
+ | `O` then `P` | Search projects |
471
+ | `O` then `T` | Switch teams |
472
+
473
+ ### Issue Management
474
+
475
+ | Shortcut | Action |
476
+ | ----------- | ------------------------ |
477
+ | `A` | Assign to user |
478
+ | `L` | Add label |
479
+ | `P` | Set priority |
480
+ | `S` | Change status |
481
+ | `F` | Add filter |
482
+ | `E` | Archive notification |
483
+ | `Shift + H` | Snooze issue |
484
+ | `J` / `K` | Navigate up/down in list |
485
+
486
+ ### Power User Tips
487
+
488
+ 1. **Command-K is context-sensitive**: It shows commands relevant to what you're currently viewing
489
+ 2. **Copy branch name**: Automatically assigns issue and moves to "In Progress"
490
+ 3. **Learn navigation shortcuts first**: `G` + key combos are the foundation
491
+ 4. **Use filters, then save views**: Build your personal dashboards with saved filtered views
492
+
493
+ ---
494
+
495
+ ## Real-World Case Studies
496
+
497
+ ### Descript: Building a Work Operating System
498
+
499
+ Descript (all-in-one video editing platform) has used Linear since December 2020.
500
+
501
+ **Key practices:**
502
+
503
+ - Linear as "central work operating system" for EPD and business teams
504
+ - Heavy use of keyboard shortcuts
505
+ - Slack + ChatGPT automation for issue creation
506
+ - Raycast for global quick capture
507
+ - Triage status for initial assignment ("putting issues directly into Todo declares they'll be worked on this week")
508
+
509
+ ### Plum: Structured Three-Stage Workflow
510
+
511
+ **Their setup:**
512
+
513
+ - Quarterly roadmaps aligned with OKRs
514
+ - 2-week cycles with bandwidth calculation
515
+ - Projects kept short (no more than 2 cycles)
516
+ - Issues broken into 2-day chunks maximum
517
+ - Daily status updates before standups
518
+ - Heavy use of async communication through Linear
519
+
520
+ **Key insight:**
521
+
522
+ > "When adequately put to use, the majority of communication will be async, freeing teams from the cycle of indefinitely updating people about the same thing."
523
+
524
+ ### Creative Agency Use
525
+
526
+ Small design studios report:
527
+
528
+ - Linear feels "less bloated" than traditional tools
529
+ - Freelancers can be onboarded quickly
530
+ - Tags separate dev, design, content, and marketing work in one workspace
531
+
532
+ ### Non-Traditional Uses
533
+
534
+ According to Linear staff, people use the tool for:
535
+
536
+ - TV productions
537
+ - Wedding planning
538
+ - House builds
539
+
540
+ This demonstrates the flexibility of the system beyond software development.
541
+
542
+ ---
543
+
544
+ ## Summary: Key Principles
545
+
546
+ ### The Linear Method Core Ideas
547
+
548
+ 1. **Momentum over perfection**: Find a cadence and routine; don't rush toward the end
549
+ 2. **Clear ownership**: Single person responsible for every project and issue
550
+ 3. **Brevity**: Short specs are more likely to be read
551
+ 4. **Break down work**: Small tasks you can complete create visible progress
552
+ 5. **Opinionated defaults**: Flexibility creates chaos; constraints create clarity
553
+
554
+ ### Daily Habits for Success
555
+
556
+ 1. **Morning**: Review "My Issues", update statuses before standup
557
+ 2. **Throughout day**: Use keyboard shortcuts, avoid mouse when possible
558
+ 3. **Evening**: Quick capture any lingering ideas, review tomorrow's priorities
559
+ 4. **Weekly**: Triage processing, cycle planning, backlog grooming
560
+ 5. **Quarterly**: Review workflows, simplify what isn't working, adjust structure
561
+
562
+ ### When to Scale Complexity
563
+
564
+ Add structure only when its absence becomes painful:
565
+
566
+ - Start with defaults
567
+ - Customize only for real pain points
568
+ - Review and simplify every quarter
569
+ - What works for 5 people may not work for 15
570
+
571
+ ---
572
+
573
+ ## Sources
574
+
575
+ ### Official Linear Resources
576
+
577
+ - [Linear Method: Principles & Practices](https://linear.app/method/introduction)
578
+ - [Linear Docs: Triage](https://linear.app/docs/triage)
579
+ - [Linear Docs: Issue Templates](https://linear.app/docs/issue-templates)
580
+ - [Linear Docs: GitHub Integration](https://linear.app/docs/github-integration)
581
+ - [Linear Docs: Estimates](https://linear.app/docs/estimates)
582
+ - [Linear Docs: Conceptual Model](https://linear.app/docs/conceptual-model)
583
+
584
+ ### Case Studies and Blog Posts
585
+
586
+ - [Descript's Internal Guide for Using Linear](https://linear.app/now/descript-internal-guide-for-using-linear)
587
+ - [How Plum Uses Linear](https://build.plumhq.com/how-we-use-linear/)
588
+ - [How to Use Linear: Setup, Best Practices, and Hidden Features Guide (Morgen)](https://www.morgen.so/blog-posts/linear-project-management)
589
+ - [Why I Choose Linear as My Personal Project Management Tool (Jing Su)](https://www.jinghuangsu.com/writing/productivity/solo-project-management-with-linear)
590
+ - [How I Use Linear to Manage Projects at Lunch Pail Labs](https://lunchpaillabs.com/blog/managing-projects-at-lpl-with-linear)
591
+ - [Fast Growing Startups Are Built on Linear (Karri Saarinen)](https://medium.com/linear-app/fast-growing-startups-are-built-on-linear-74511bf96afb)
592
+ - [Building at the Early Stage (Karri Saarinen)](https://medium.com/linear-app/building-at-the-early-stage-e79e696341db)
593
+
594
+ ### Guides and Reviews
595
+
596
+ - [Linear Task Management: Organize, Prioritize, and Deliver (Everhour)](https://everhour.com/blog/linear-task-management/)
597
+ - [Linear App Case Study: How to Build a $400M Issue Tracker (Eleken)](https://www.eleken.co/blog-posts/linear-app-case-study)
598
+ - [Mastering Linear: How to Optimize Your Team's Project Management Experience (OneHorizon)](https://onehorizon.ai/blog/linear-app-review)
599
+ - [The Linear Method: Opinionated Software (Figma Blog)](https://www.figma.com/blog/the-linear-method-opinionated-software/)
600
+ - [How Linear Builds Product (Lenny's Newsletter)](https://www.lennysnewsletter.com/p/how-linear-builds-product)
601
+
602
+ ### Keyboard Shortcuts
603
+
604
+ - [Linear Keyboard Shortcuts (KeyCombiner)](https://keycombiner.com/collections/linear/)
605
+ - [Linear App Cheat Sheet (ShortcutFoo)](https://www.shortcutfoo.com/app/dojos/linear-app-mac/cheatsheet)