### Required

[\[1\]](https://github.com/atman-33/obsidian-article-paste/blob/a2d28cc4b35406f95ac138744acb57c924929832/src/lib/pipeline/clipboard-composer.test.ts#L55-L55)[\[2\]](https://github.com/atman-33/obsidian-article-paste/blob/a2d28cc4b35406f95ac138744acb57c924929832/src/lib/pipeline/markdown-renderer.ts#L15-L15)
Async method 'render' has no 'await' expression.

[\[1\]](https://github.com/atman-33/obsidian-article-paste/blob/a2d28cc4b35406f95ac138744acb57c924929832/src/lib/pipeline/clipboard-guard.ts#L21-L21)[\[2\]](https://github.com/atman-33/obsidian-article-paste/blob/a2d28cc4b35406f95ac138744acb57c924929832/src/lib/pipeline/stubs.ts#L57-L57)
Async method 'ensureWithinLimits' has no 'await' expression.

[\[1\]](https://github.com/atman-33/obsidian-article-paste/blob/a2d28cc4b35406f95ac138744acb57c924929832/src/lib/pipeline/clipboard-writer.ts#L20-L20)[\[2\]](https://github.com/atman-33/obsidian-article-paste/blob/a2d28cc4b35406f95ac138744acb57c924929832/src/lib/pipeline/image-encoder.ts#L23-L23)
Unexpected undescribed directive comment. Include descriptions to explain why the comment is necessary.

[\[1\]](https://github.com/atman-33/obsidian-article-paste/blob/a2d28cc4b35406f95ac138744acb57c924929832/src/lib/pipeline/clipboard-writer.ts#L20)[\[2\]](https://github.com/atman-33/obsidian-article-paste/blob/a2d28cc4b35406f95ac138744acb57c924929832/src/lib/pipeline/image-encoder.ts#L23)
Unused eslint-disable directive (no problems were reported from '@typescript-eslint/no-var-requires').

[\[1\]](https://github.com/atman-33/obsidian-article-paste/blob/a2d28cc4b35406f95ac138744acb57c924929832/src/lib/pipeline/clipboard-writer.ts#L21-L21)[\[2\]](https://github.com/atman-33/obsidian-article-paste/blob/a2d28cc4b35406f95ac138744acb57c924929832/src/lib/pipeline/image-encoder.ts#L24-L24)
A `require()` style import is forbidden.

[\[1\]](https://github.com/atman-33/obsidian-article-paste/blob/a2d28cc4b35406f95ac138744acb57c924929832/src/lib/pipeline/clipboard-writer.ts#L51-L51)[\[2\]](https://github.com/atman-33/obsidian-article-paste/blob/a2d28cc4b35406f95ac138744acb57c924929832/src/lib/pipeline/stubs.ts#L51-L51)
Async method 'write' has no 'await' expression.

[\[1\]](https://github.com/atman-33/obsidian-article-paste/blob/a2d28cc4b35406f95ac138744acb57c924929832/src/lib/pipeline/embed-resolver.test.ts#L25-L25)[\[2\]](https://github.com/atman-33/obsidian-article-paste/blob/a2d28cc4b35406f95ac138744acb57c924929832/src/lib/pipeline/embed-resolver.ts#L234-L234)[\[3\]](https://github.com/atman-33/obsidian-article-paste/blob/a2d28cc4b35406f95ac138744acb57c924929832/src/lib/testing/file-stub.ts#L8-L8)
Avoid casting to 'TFile'. Use an 'instanceof TFile' check to safely narrow the type.

[\[1\]](https://github.com/atman-33/obsidian-article-paste/blob/a2d28cc4b35406f95ac138744acb57c924929832/src/lib/pipeline/embed-resolver.test.ts#L48-L48)
Async method 'readBinary' has no 'await' expression.

[\[1\]](https://github.com/atman-33/obsidian-article-paste/blob/a2d28cc4b35406f95ac138744acb57c924929832/src/lib/pipeline/image-encoder.ts#L44-L44)[\[2\]](https://github.com/atman-33/obsidian-article-paste/blob/a2d28cc4b35406f95ac138744acb57c924929832/src/lib/pipeline/stubs.ts#L39-L39)
Async method 'encode' has no 'await' expression.

[\[1\]](https://github.com/atman-33/obsidian-article-paste/blob/a2d28cc4b35406f95ac138744acb57c924929832/src/lib/pipeline/selection-service.ts#L19-L19)[\[2\]](https://github.com/atman-33/obsidian-article-paste/blob/a2d28cc4b35406f95ac138744acb57c924929832/src/lib/pipeline/stubs.ts#L24-L24)
Async method 'getActiveSelection' has no 'await' expression.

[\[1\]](https://github.com/atman-33/obsidian-article-paste/blob/a2d28cc4b35406f95ac138744acb57c924929832/src/lib/pipeline/stubs.ts#L30-L30)
Async method 'collectEmbeds' has no 'await' expression.

[\[1\]](https://github.com/atman-33/obsidian-article-paste/blob/a2d28cc4b35406f95ac138744acb57c924929832/src/lib/pipeline/stubs.ts#L45-L45)
Async method 'compose' has no 'await' expression.

[\[1\]](https://github.com/atman-33/obsidian-article-paste/blob/a2d28cc4b35406f95ac138744acb57c924929832/src/settings-tab.ts#L32-L32)
Use `new Setting(containerEl).setName(...).setHeading()` instead of creating HTML heading elements directly.

[\[1\]](https://github.com/atman-33/obsidian-article-paste/blob/a2d28cc4b35406f95ac138744acb57c924929832/src/settings-tab.ts#L32-L32)[\[2\]](https://github.com/atman-33/obsidian-article-paste/blob/a2d28cc4b35406f95ac138744acb57c924929832/src/settings-tab.ts#L60-L60)[\[3\]](https://github.com/atman-33/obsidian-article-paste/blob/a2d28cc4b35406f95ac138744acb57c924929832/src/settings-tab.ts#L62-L62)
Use sentence case for UI text.



---

### Optional

