ConfigInherit — VSCode Settings Inheritance for Multi-Project Developers
Copy-pasting VSCode settings.json across 12 projects is the kind of trauma that makes devs quit and become farmers. ConfigInherit adds an 'extends' key to any settings.json so your projects inherit from a base config and override only what differs. One change at the root, every project updates instantly.
Difficulty
intermediate
Category
Developer Tools
Market Demand
High
Revenue Score
7/10
Platform
VS Code Extension
Vibe Code Friendly
No
Hackathon Score
6/10
Validated by Real Pain
— sourced from real community discussions
Developers cannot extend VSCode settings files from other configs, forcing manual copy-paste of settings.json across every project in a monorepo.
What is it?
Every dev with more than two projects has a graveyard of slightly-wrong settings.json files they forgot to sync. ConfigInherit is a VSCode extension that parses an 'extends' field pointing to any local or workspace-relative JSON file, deep-merges the configs, and applies the result as the active settings — no shell scripts, no symlinks, no crying. The extension watches for changes in parent configs and re-applies on save. Teams can share a base.json in a monorepo root and each project overrides only its own rules. This is 100% buildable: VSCode Extension API exposes workspace configuration APIs, JSON merge is trivial, and the extension marketplace handles distribution and billing via Gumroad or Paddle layered on top.
Why now?
VSCode monorepo usage exploded in the May 2026 vibe-coding wave with Cursor and AI workspaces — devs now manage 5-10 subprojects at once and the settings drift pain is at peak complaint volume on r/vscode.
- ▸Extends key in settings.json pointing to any relative or absolute path (Implementation: read file, deep merge with JSON5, apply via VSCode workspace config API)
- ▸Nested inheritance (child extends parent extends grandparent, max 5 levels)
- ▸File watcher that re-applies merged config on parent change without restart
- ▸Conflict highlighting that shows which keys are overridden and from where
Target Audience
Full-stack developers managing 3+ VSCode projects simultaneously — roughly 2M+ devs on GitHub who use VSCode workspaces daily.
Example Use Case
Maya runs a Next.js monorepo with 8 packages. She sets base.json at root with formatter and linter rules, each package settings.json has 'extends': '../../base.json' and overrides only its tsconfig path. One Prettier version change propagates to all 8 in 2 seconds.
User Stories
- ▸As a monorepo developer, I want my 8 package settings.json files to inherit from a root base.json, so that I only update formatter rules in one place.
- ▸As a team lead, I want to enforce shared linting rules via a base config while letting each project override language-specific settings, so that code standards are consistent without blocking individual teams.
- ▸As a freelancer, I want to sync my personal VSCode preferences across all client project repos without committing my personal settings, so that I stay productive on every project from day one.
Done When
- ✓Extends resolution: done when user adds 'extends': '../base.json' to settings.json, saves, and VSCode immediately applies the merged formatter settings without any restart.
- ✓Live reload: done when user edits a parent config file and all child workspace settings update within 2 seconds automatically.
- ✓Conflict display: done when user opens the ConfigInherit status panel and sees a table of which keys come from which config file.
- ✓License gate: done when free-tier user attempting 2-level nesting sees a Gumroad upgrade prompt inline in the extension output panel.
Is it worth building?
$60/year x 200 buyers in month 3 = $12k ARR. Realistic: 50 buyers in month 1 via GitHub launch = $3k. Scales slowly via organic VSCode Marketplace installs.
Unit Economics
CAC: $0 (organic GitHub/Marketplace). LTV: $60 one-time or $120 (2-year retention at $60/yr). Payback: immediate. Gross margin: 95%.
Business Model
One-time $9 or $60/year via Gumroad; free tier limited to 1 parent config.
Monetization Path
Free tier (1 extends level), paid tier (nested inheritance, team config sharing) at $60/year via Gumroad checkout link in extension README.
Revenue Timeline
First dollar: week 2 via Gumroad link in README. $1k revenue: month 2. $5k ARR: month 6.
Estimated Monthly Cost
Vercel: $0 (no server needed), Gumroad fees: ~5% of revenue, GitHub Actions for CI: $0. Total: ~$5/month.
Profit Potential
Side income at $5k–$15k ARR. Not a unicorn but a reliable long-tail tool devs pay for once.
Scalability
Medium — can add team cloud-hosted base configs, GitHub Gist as config source, and Cursor IDE support.
Success Metrics
500 installs in week 1. 50 paid conversions by month 1. 4.5+ star rating on VS Marketplace.
Launch & Validation Plan
Post in r/vscode and r/webdev asking if devs want this, collect 30 upvotes as green light, then build.
Customer Acquisition Strategy
First customer: post the GitHub repo to r/vscode with a GIF demo of one settings change propagating across 5 projects in real time — target 100 stars in week 1. Ongoing: VS Marketplace organic, HN Show HN post, Dev.to tutorial on monorepo VSCode setup linking to extension.
What's the competition?
Competition Level
Low
Similar Products
DotEnv Vault for env sharing (different problem), EditorConfig for cross-editor basics (no VSCode-specific settings), Workspace Trust (built-in but no inheritance) — none solve config inheritance.
Competitive Advantage
Zero alternatives exist — no other VSCode extension implements settings inheritance. Pure blue ocean in a tool used by millions daily.
Regulatory Risks
Low regulatory risk.
What's the roadmap?
Feature Roadmap
V1 (launch): extends key, deep merge, file watcher, 1-level free limit. V2 (month 2-3): nested inheritance up to 5 levels, conflict viewer panel. V3 (month 4+): GitHub Gist as remote base config source, team org sharing.
Milestone Plan
Phase 1 (Week 1-2): merger logic, extension scaffold, basic extends parsing ships. Phase 2 (Week 3-4): chokidar watcher, status bar, Gumroad gate ships. Phase 3 (Month 2): VS Marketplace publish, HN launch, 50 paid users.
How do you build it?
Tech Stack
TypeScript, VSCode Extension API, chokidar for file watching, JSON5 for parsing — build logic in Cursor, package with vsce, distribute on VS Marketplace + Gumroad for paid tier.
Suggested Frameworks
VSCode Extension API, chokidar, JSON5
Time to Ship
2 weeks
Required Skills
TypeScript, VSCode Extension API basics, JSON merge logic.
Resources
VSCode Extension API docs, vsce CLI, Gumroad developer docs.
MVP Scope
src/extension.ts (activate, register config watcher), src/merger.ts (deep merge logic), src/watcher.ts (chokidar watch parent files), package.json (extension manifest, contributes config), .vscodeignore, README.md (install + usage), CHANGELOG.md, .env.example (Gumroad license key), out/ (compiled JS), test/merger.test.ts (unit tests for merge logic).
Core User Journey
Install extension -> add 'extends' key to settings.json -> save -> merged config auto-applies across all child projects.
Architecture Pattern
VSCode activates extension -> extension reads workspace settings.json -> finds 'extends' key -> reads parent JSON file via fs -> deep merges objects -> writes resolved config back via VSCode API -> chokidar watches parent path -> re-triggers on file change.
Data Model
ConfigNode has parentPath (string), resolvedConfig (JSON object), childWorkspaces (array of paths). Merge tree is resolved depth-first at activation.
Integration Points
VSCode Extension API for config access, chokidar for file watching, Gumroad for license validation, vsce for packaging and publishing.
V1 Scope Boundaries
V1 excludes: cloud-hosted base configs, GitHub Gist as source, team sharing UI, Cursor IDE support, remote SSH workspace support.
Success Definition
A developer who never heard of the product installs it from VS Marketplace, adds 'extends' to their settings.json, and their monorepo syncs without reading any docs.
Challenges
Distribution is the hard non-technical problem — VS Marketplace discoverability is low and most installs come from GitHub stars, so seeding the first 50 stars via Reddit and HN is the real launch task.
Avoid These Pitfalls
Do not attempt cloud sync in V1 — local file resolution only or you add auth complexity that kills the weekend ship. Do not use VSCode's built-in settings override API (it doesn't support programmatic deep merge). Finding first 50 paying users takes 3x longer than the build — prioritize the GitHub launch post over features.
Security Requirements
No auth in V1. License key stored in VSCode secrets API. Rate limiting not applicable (local extension). No user data leaves the machine.
Infrastructure Plan
No server. Extension runs fully local. CI/CD via GitHub Actions running vsce package on tag push. Published to VS Marketplace via vsce publish. Gumroad handles payments externally.
Performance Targets
Config merge must complete in under 50ms for files under 500 lines. Extension activation under 200ms. No performance impact on VSCode startup (lazy activation on workspace open).
Go-Live Checklist
- ☐Security audit complete.
- ☐Payment flow tested end-to-end.
- ☐Error tracking (Sentry) live.
- ☐Monitoring dashboard configured.
- ☐Custom domain set up with SSL.
- ☐Privacy policy and terms published.
- ☐5+ beta users signed off.
- ☐Rollback plan documented.
- ☐Launch post drafted for ProductHunt and Reddit.
First Run Experience
On first run: extension activates silently with status bar showing 'ConfigInherit: ready'. User can immediately: add 'extends': './base.json' to any settings.json and see merge happen on save. No manual config required: ships with a sample base.json template accessible via command palette.
How to build it, step by step
1. Define the ConfigNode schema and merge algorithm contract in src/merger.ts before any UI. 2. Run 'yo code' to scaffold a new TypeScript VSCode extension. 3. Implement deep merge logic in src/merger.ts with JSON5.parse for comments support. 4. Wire extension activation in src/extension.ts to scan workspace settings.json for 'extends' key. 5. Implement chokidar watcher in src/watcher.ts to detect parent config changes and re-trigger merge. 6. Apply merged config using vscode.workspace.getConfiguration().update() per key. 7. Add a status bar item showing 'ConfigInherit: active (2 levels)' for user feedback. 8. Write unit tests in test/merger.test.ts covering circular reference detection and key conflict resolution. 9. Add Gumroad license check gating nested inheritance beyond 1 level. 10. Verify: open a monorepo with 3 projects, add 'extends' to each, change a parent value, confirm all 3 update without restart.
Generated
May 12, 2026
Model
claude-sonnet-4-6
Disclaimer: Ideas on this site are AI-generated and may contain inaccuracies. Revenue estimates, market demand figures, and financial projections are illustrative assumptions only — not financial advice. Do your own research before making any business or investment decisions. Technology availability, pricing, and market conditions change rapidly; always verify details independently.