SuggestMee
SuggestMee explains why TypeScript and JavaScript code is broken and helps you fix it in one click. It does not build another diagnostic engine — it reads the diagnostics your language tools already produce (TypeScript, ESLint) and turns them into plain-English explanations plus safe, reviewable fixes.
Local only. No network. No AI.
Features
- Human-friendly explanations — every issue is described as problem → why it happens → impact → recommended fix, with a before/after example.
- Hover explanations — hover an error or warning to read the explanation inline.
- Quick Fix actions — open the lightbulb for:
SuggestMee: Explain — …
SuggestMee: Preview fix — … (opens a diff before touching your file)
SuggestMee: Apply fix — …
- One-click deterministic fixes for a focused set of patterns:
- missing null check → add optional chaining (
a?.b.c → a?.b?.c)
- loose equality →
== / != become === / !==
- assignment in condition →
= becomes ===
- unhandled promise → prefix with
void
- Custom bug rules (AST-based, no network) that flag possible bugs TypeScript may not report.
- Native fixes bridged — the language tool's own quick fixes are offered alongside SuggestMee's.
- Safety levels — every suggestion is labelled Known error, Possible bug, or Complex issue. Complex issues are explained but never auto-applied.
Usage
- Open a
.ts, .tsx, .js, or .jsx file.
- Hover any squiggle to read the explanation.
- Press
Ctrl+. / Cmd+. (Quick Fix) and pick a SuggestMee action.
- For fixes that need review, SuggestMee opens a side-by-side diff and asks for confirmation before applying.
You can also run SuggestMee: Explain Issue at Cursor from the command palette.
Configuration
| Setting |
Default |
Description |
suggestmee.enabled |
true |
Master switch. |
suggestmee.showEditorDiagnostics |
true |
Show SuggestMee's own diagnostics in the editor. |
suggestmee.minSeverity |
info |
Hide diagnostics below this severity in commands. |
suggestmee.preferNativeFixes |
true |
Also offer the language tool's native quick fixes. |
suggestmee.customRules.missingNullCheck |
true |
Flag unsafe access after an optional chain. |
suggestmee.customRules.looseEquality |
true |
Flag == / !=. |
suggestmee.customRules.floatingPromise |
true |
Flag unawaited async calls in the same file. |
suggestmee.customRules.assignmentInCondition |
true |
Flag = used as a condition. |
Architecture
src/
extension.ts activation, commands, providers, listeners
diagnostics/
bridge.ts publishes SuggestMee diagnostics, refreshes on edit/save
customRules.ts runs AST rules against a document
inspect.ts diagnostic -> issue/explanation helpers
rules/ pure, tested AST rules (one file per rule)
explanations/
typescript.ts TypeScript error code -> explanation
eslint.ts ESLint rule id -> explanation
index.ts lookup with safe fallback for unknown codes
fixes/
providers.ts deterministic fix builders (pure core + VS Code wrapper)
engine.ts applies a WorkspaceEdit
nativeBridge.ts invokes native quick fixes (re-entrancy guarded)
safety.ts known / possible / complex policy
ui/
codeActions.ts Quick Fix provider
hover.ts Hover provider
preview.ts diff preview content provider
format.ts shared markdown rendering
Development
npm install
npm run compile # tsc -p ./
npm run lint # tsc -p ./ --noEmit
npm test # mocha over out/test
npm run package # vsce package -> suggestmee-0.1.0.vsix
Press F5 in VS Code to launch an Extension Development Host.
Safety model
- Known error — the rule and correction are reliable; one-click apply is available.
- Possible bug — a heuristic; the fix is shown as a diff and requires confirmation.
- Complex issue — explained with a proposed patch; always requires review.
SuggestMee never applies a fix without a user action.
Limitations (current milestone)
- TypeScript / JavaScript only.
- Custom rules are syntax-based; cross-file async detection is not attempted yet.
- A custom rule can overlap with a native TypeScript diagnostic on the same node (
a?.b.c), producing two marks; both point to the same fix.
- No AI. No network.
Roadmap
- Preview for native fixes before applying.
- Related-issue grouping (one root cause, many errors).
- Additional languages via existing language servers.
- Optional AI explanations (off by default).
License
MIT