build-vs-buy
Compares building a solution internally versus buying/adopting a third-party tool, service, or library. Analyzes cost (total cost of ownership), effort, risk, vendor lock-in, maintenance burden, feature fit, and strategic alignment. Produces a structured recommendation. Saves output to project-decisions/ folder. Use when the user says "build vs buy", "build or buy", "should we build this ourselves", "should we use a service for this", "roll our own or use", "make vs buy", "build in-house or", "vendor comparison", "evaluate tools for", or "should we use X or build our own".
What this skill does
# Build vs Buy Skill When evaluating whether to build in-house or adopt an external solution, follow this structured process. The goal is to make a clear, data-driven recommendation that accounts for the full lifecycle — not just the initial build. **IMPORTANT**: Always save the output as a markdown file in the `project-decisions/` directory at the project root. Create the directory if it doesn't exist. ## 0. Output Setup ```bash # Create project-decisions directory if it doesn't exist mkdir -p project-decisions # File will be saved as: # project-decisions/YYYY-MM-DD-build-vs-buy-[kebab-case-topic].md # Example: project-decisions/2026-02-19-build-vs-buy-auth-system.md ``` ## 1. Frame the Problem ### Define the Need Before comparing options, get crystal clear on what you actually need: ``` What problem are we solving? [Clear problem statement — not the solution, the problem] Who needs it? [Target users/systems — internal team, end users, API consumers] What are the hard requirements? (must have) 1. [Requirement 1] 2. [Requirement 2] 3. [Requirement 3] What are the soft requirements? (nice to have) 1. [Nice to have 1] 2. [Nice to have 2] What are the constraints? - Budget: [$ amount or range] - Timeline: [when do we need this by?] - Team capacity: [available engineering time] - Compliance: [GDPR, SOC2, HIPAA, PCI, etc.] - Scale: [users, requests, data volume] What does success look like? [Measurable outcome — e.g., "auth flow takes < 200ms, supports 10K concurrent users"] ``` ### Check What Already Exists ```bash # Do we already have something in this area? grep -rn "[feature-keyword]" --include="*.ts" --include="*.js" --include="*.py" src/ app/ 2>/dev/null | grep -v "node_modules\|\.git\|test\|spec" | head -20 # Check existing dependencies cat package.json 2>/dev/null | grep -i "[keyword]" cat requirements.txt pyproject.toml 2>/dev/null | grep -i "[keyword]" cat docker-compose.yml 2>/dev/null | grep -i "[keyword]" # Check for existing integrations grep -rn "api_key\|API_KEY\|client_id\|CLIENT_ID" --include="*.ts" --include="*.js" --include="*.py" --include="*.env*" . 2>/dev/null | grep -v "node_modules\|\.git" | grep -i "[keyword]" # Check for previous decisions on this topic ls project-decisions/ 2>/dev/null | grep -i "[keyword]" grep -rn "[keyword]" --include="*.md" docs/ project-decisions/ 2>/dev/null ``` ## 2. Define the Options Always evaluate at least 3 options: ``` Option A: BUILD — Build in-house from scratch Option B: BUY — Adopt [specific vendor/tool 1] Option C: BUY — Adopt [specific vendor/tool 2] Option D: HYBRID — Build core + use vendor for [specific part] Option E: OPEN SOURCE — Use [OSS solution] and self-host ``` ### Common Option Patterns | Pattern | When It Works Best | |---------|-------------------| | **Build** | Core differentiator, unique requirements, full control needed, team has expertise | | **Buy (SaaS)** | Commodity feature, time-to-market critical, team lacks expertise, managed service preferred | | **Buy (Licensed)** | On-premise required, compliance restrictions, one-time cost preferred | | **Open Source (managed)** | Need flexibility + support, community ecosystem matters | | **Open Source (self-hosted)** | Cost-sensitive, team has ops capability, customization needed | | **Hybrid** | Core logic is custom, but commodity parts (email, payments, auth) are bought | ## 3. Evaluate Each Option ### 3a. Feature Fit Analysis ``` | Requirement | Weight | Build | Buy (Vendor A) | Buy (Vendor B) | OSS | |-------------|--------|-------|----------------|----------------|-----| | [Must have 1] | 🔴 Must | ✅ Custom | ✅ Yes | ✅ Yes | ⚠️ Partial | | [Must have 2] | 🔴 Must | ✅ Custom | ✅ Yes | ❌ No | ✅ Yes | | [Must have 3] | 🔴 Must | ✅ Custom | ⚠️ Workaround | ✅ Yes | ✅ Yes | | [Nice to have 1] | 🟡 Want | ❌ Not in v1 | ✅ Yes | ✅ Yes | ⚠️ Plugin | | [Nice to have 2] | 🟡 Want | ❌ Not in v1 | ✅ Yes | ❌ No | ✅ Yes | | [Nice to have 3] | 🟢 Nice | ❌ Future | ✅ Yes | ✅ Yes | ❌ No | | **Feature Score** | | **3/3 must** | **2.5/3 must** | **2/3 must** | **2.5/3 must** | ``` Legend: - ✅ Fully supported - ⚠️ Partially supported or workaround needed - ❌ Not supported - 🔧 Requires customization ### 3b. Total Cost of Ownership (TCO) — 3 Year View #### BUILD ``` | Cost Category | Year 1 | Year 2 | Year 3 | Total | |---------------|--------|--------|--------|-------| | **Initial Development** | | | | | | Engineering (X devs × Y weeks × $rate) | $X | — | — | $X | | Design / UX | $X | — | — | $X | | Testing / QA | $X | — | — | $X | | **Infrastructure** | | | | | | Servers / Cloud | $X | $X | $X | $X | | Database / Storage | $X | $X | $X | $X | | Monitoring / Logging | $X | $X | $X | $X | | **Ongoing Maintenance** | | | | | | Bug fixes (X hrs/month × $rate) | $X | $X | $X | $X | | Feature enhancements | $X | $X | $X | $X | | Security patches | $X | $X | $X | $X | | Dependency updates | $X | $X | $X | $X | | On-call / operations | $X | $X | $X | $X | | **Hidden Costs** | | | | | | Knowledge transfer / documentation | $X | $X | — | $X | | Opportunity cost (team not building features) | $X | $X | $X | $X | | Recruitment (if specialized skills needed) | $X | — | — | $X | | **TOTAL BUILD** | **$X** | **$X** | **$X** | **$X** | ``` #### BUY ``` | Cost Category | Year 1 | Year 2 | Year 3 | Total | |---------------|--------|--------|--------|-------| | **Subscription / License** | | | | | | Base subscription (tier × price) | $X | $X | $X | $X | | Per-user / per-seat cost | $X | $X | $X | $X | | Overage charges (estimated) | $X | $X | $X | $X | | **Integration** | | | | | | Integration development | $X | — | — | $X | | Data migration | $X | — | — | $X | | Custom configuration | $X | — | — | $X | | **Ongoing** | | | | | | Integration maintenance | $X | $X | $X | $X | | Vendor management | $X | $X | $X | $X | | Training | $X | $X | — | $X | | **Hidden Costs** | | | | | | Price increases (assume X%/year) | — | $X | $X | $X | | Migration cost (if switching later) | — | — | $X | $X | | Workarounds for missing features | $X | $X | $X | $X | | **TOTAL BUY** | **$X** | **$X** | **$X** | **$X** | ``` #### OPEN SOURCE (Self-Hosted) ``` | Cost Category | Year 1 | Year 2 | Year 3 | Total | |---------------|--------|--------|--------|-------| | **Setup** | | | | | | Deployment / Configuration | $X | — | — | $X | | Integration development | $X | — | — | $X | | Customization | $X | — | — | $X | | **Infrastructure** | | | | | | Servers / Cloud | $X | $X | $X | $X | | Database / Storage | $X | $X | $X | $X | | **Ongoing** | | | | | | Upgrades / Patches | $X | $X | $X | $X | | Operations / Monitoring | $X | $X | $X | $X | | Bug fixes / Contributions | $X | $X | $X | $X | | Commercial support (optional) | $X | $X | $X | $X | | **TOTAL OSS** | **$X** | **$X** | **$X** | **$X** | ``` #### TCO Comparison Summary ``` | | Year 1 | Year 2 | Year 3 | 3-Year Total | |---|--------|--------|--------|-------------| | BUILD | $X | $X | $X | $X | | BUY (Vendor A) | $X | $X | $X | $X | | BUY (Vendor B) | $X | $X | $X | $X | | OSS (self-hosted) | $X | $X | $X | $X | | HYBRID | $X | $X | $X | $X | ``` ### 3c. Time to Value ``` | Option | Time to MVP | Time to Full Feature | Notes | |--------|------------|---------------------|-------| | BUILD | X weeks | X months | Need design + dev + test | | BUY (Vendor A) | X days | X weeks | Integration time | | BUY (Vendor B) | X days | X weeks | Integration time | | OSS | X weeks | X weeks | Setup + customization | | HYBRID | X weeks | X weeks | Fastest for core, buy rest | ``` ### 3d. Risk Assessment #### Build Risks ``` | Risk | Likelihood | Impact | Mitigation | |------|-----------|--------|------------| | Takes longer than estimated | High | High | Phased delivery, MVP first | | Team lacks domain expertise | Med | High | Hire / consult expert | | Ongoing maintenance burden | High | Med | Dedicated on-call rotation | | Key developer leaves | Med | High | Documentation, pair programming | | Security vulnerabilities
Related in Code Review
gstack
IncludedFast headless browser for QA testing and site dogfooding. Navigate pages, interact with elements, verify state, diff before/after, take annotated screenshots, test responsive layouts, forms, uploads, dialogs, and capture bug evidence. Use when asked to open or test a site, verify a deployment, dogfood a user flow, or file a bug with screenshots. (gstack)
startup-due-diligence
IncludedLegal due diligence review for seed-stage and Series A startups (US, Delaware C-Corp focus). Supports both investor and founder perspectives. Capabilities include: (1) Interactive document review and issue spotting; (2) Document request list generation; (3) Cap table and SAFE/convertible note analysis; (4) Red flag identification with severity ratings; (5) Diligence report generation. TRIGGERS: due diligence, DD, startup investment, cap table review, Series A, seed round, investor diligence, legal review startup, SAFE analysis, convertible note, 409A, founder vesting.
interview-master
IncludedThis skill should be used when the user asks to "generate interview questions", "prepare for interview", "optimize resume", "conduct mock interview", "analyze git commits for resume", "generate resume from code", "review my resume", or mentions interview preparation, career assistance, or extracting project experience from git history. Provides comprehensive interview and career development guidance for both job seekers and interviewers.
fix-issue
IncludedFixes GitHub issues using parallel analysis agents for root cause investigation, code exploration, and regression detection. Reads issue context from gh CLI, searches codebase and memory for related patterns, generates a fix with tests, and links the resolution back to the issue via PR. Includes prevention analysis to avoid recurrence. Use when debugging errors, resolving regressions, fixing bugs, or triaging issues.
sf-apex
IncludedGenerates and reviews Salesforce Apex code with 150-point scoring. TRIGGER when: user writes, reviews, or fixes Apex classes, triggers, test classes, batch/queueable/schedulable jobs, or touches .cls/.trigger files. DO NOT TRIGGER when: LWC JavaScript (use sf-lwc), Flow XML (use sf-flow), SOQL-only queries (use sf-soql), or non-Salesforce code.
swift-development
IncludedComprehensive Swift development for building, testing, and deploying iOS/macOS applications. Use when Claude needs to: (1) Build Swift packages or Xcode projects from command line, (2) Run tests with XCTest or Swift Testing framework, (3) Manage iOS simulators with simctl, (4) Handle code signing, provisioning profiles, and app distribution, (5) Format or lint Swift code with SwiftFormat/SwiftLint, (6) Work with Swift Package Manager (SPM), (7) Implement Swift 6 concurrency patterns (async/await, actors, Sendable), (8) Create SwiftUI views with MVVM architecture, (9) Set up Core Data or SwiftData persistence, or any other Swift/iOS/macOS development tasks.