ln-831-oss-replacer
Paths: File paths (
shared/,references/,../ln-*) are relative to skills repo root. If not found at CWD, locate this SKILL.md directory and go up one level for repo root.
ln-831-oss-replacer
Type: L3 Worker Category: 8XX Optimization Parent: ln-830-code-modernization-coordinator
Executes OSS replacement plans from ln-645-open-source-replacer auditor. For each custom module with an OSS alternative: install package, rewrite imports, run tests, keep or discard atomically.
Overview
| Aspect | Details |
|---|---|
| Input | Migration plan from docs/project/codebase_audit.md (ln-645 section) OR target module |
| Output | Replaced modules, migration report |
| Companion | ln-645-open-source-replacer (finds candidates) → ln-831 (executes replacement) |
Workflow
Phases: Pre-flight → Load Plan → Prioritize → Replace Loop → Report
Phase 0: Pre-flight Checks
| Check | Required | Action if Missing |
|---|---|---|
| Migration plan OR target module | Yes | Block replacement |
| Test infrastructure | Yes | Block (need tests for verification) |
| Package manager available | Yes | Block (need to install OSS packages) |
| Git clean state | Yes | Block (need clean baseline for revert) |
MANDATORY READ: Load shared/references/ci_tool_detection.md — use Test Frameworks section for test detection.
Worktree & Branch Isolation
MANDATORY READ: Load shared/references/git_worktree_fallback.md — use ln-831 row.
Phase 1: Load Migration Plan
From Audit Report
Read docs/project/codebase_audit.md, extract ln-645 findings:
| Field | Description |
|---|---|
| custom_module | Path to custom implementation |
| loc | Lines of code in custom module |
| oss_package | Recommended OSS replacement |
| confidence | How well OSS covers functionality (HIGH/MEDIUM/LOW) |
| api_mapping | Custom function → OSS equivalent |
From Target Module
If no audit report: analyze target module, search Context7/Ref for OSS alternatives.
MANDATORY READ: Load shared/references/research_tool_fallback.md for MCP tool chain.
Phase 2: Prioritize Replacements
| Priority | Criteria |
|---|---|
| 1 (highest) | HIGH confidence + >200 LOC (max code reduction) |
| 2 | HIGH confidence + 100-200 LOC |
| 3 | MEDIUM confidence + >200 LOC |
| 4 | MEDIUM confidence + 100-200 LOC |
| Skip | LOW confidence (too risky for automated replacement) |
Phase 3: Replace Loop (Keep/Discard)
Per-Module Cycle
FOR each replacement candidate (R1..RN):
1. INSTALL: Add OSS package
npm install {package} / dotnet add package / pip install
2. REWRITE: Update imports + call sites using api_mapping
3. VERIFY: Run tests
IF tests FAIL → DISCARD (revert ALL: uninstall package, restore files) → next
4. TESTS PASS → KEEP
5. DELETE: Remove old custom module (only after keep)
6. LOG: Record replacement for report
Atomic Revert on Discard
| Step | Revert Action |
|---|---|
| Package installed | Uninstall: npm uninstall / dotnet remove package / pip uninstall |
| Files modified | git checkout -- {modified_files} |
| Lock file changed | git checkout -- {lock_file} |
Safety Rules
| Rule | Description |
|---|---|
| One module at a time | Never replace multiple modules simultaneously |
| No API signature changes | Public API of replaced module must stay compatible |
| Tests required | Skip module if no tests cover it (too risky) |
| Confidence gate | Skip LOW confidence replacements |
Phase 4: Report Results
Report Schema
| Field | Description |
|---|---|
| source | Audit report path or target module |
| candidates_total | Total replacement candidates |
| replacements_applied | Successfully replaced modules |
| replacements_discarded | Failed replacements with reasons |
| replacements_skipped | LOW confidence / no test coverage |
| loc_removed | Total lines of custom code removed |
| packages_added | New OSS packages installed |
| details[] | Per-replacement: module, package, LOC removed |
Configuration
Options:
# Source
audit_report: "docs/project/codebase_audit.md"
target_module: ""
# Confidence
min_confidence: "MEDIUM" # MEDIUM | HIGH
# Verification
run_tests: true
# Safety
require_test_coverage: true # Skip modules with no tests
delete_old_module: true # Delete custom module after successful replacement
Error Handling
| Error | Cause | Solution |
|---|---|---|
| Package not found | OSS package name changed | Search Context7/Ref for current name |
| API mismatch | OSS API differs from mapping | Query docs for correct API, attempt fix |
| Circular dependency | New package conflicts | Skip replacement, log as manual |
| No test coverage | Custom module untested | Skip (too risky for automated replacement) |
References
../ln-645-open-source-replacer/SKILL.md(companion: finds candidates)shared/references/ci_tool_detection.md(test detection)shared/references/research_tool_fallback.md(MCP tool chain)
Definition of Done
- Migration plan loaded from audit report or target module analyzed
- Candidates prioritized by confidence + LOC
- Each replacement applied atomically: install → rewrite → test → keep/discard
- Discarded replacements fully reverted (package + files + lock)
- Kept replacements: old custom module deleted
- Report returned with candidates total, applied, discarded, LOC removed
Version: 1.0.0 Last Updated: 2026-03-08