ln-831-oss-replacer
Replaces custom modules with OSS packages using atomic keep/discard testing. Use when migrating custom code to established libraries.
Works with
---
name: ln-831-oss-replacer
description: Replaces custom modules with OSS packages using atomic keep/discard testing. Use when migrating custom code to established libraries.
license: MIT
---
> **Paths:** File paths (`references/`, `../ln-*`) are relative to this skill directory.
# ln-831-oss-replacer
**Type:** L3 Worker
**Category:** 8XX Optimization
Executes OSS replacement plans from `ln-645-architecture-modernization-auditor`. For each custom module with a viable OSS alternative: install package, rewrite imports, run verification, then keep or discard atomically.
---
## Overview
| Aspect | Details |
|--------|---------|
| **Input** | Migration plan from audit output or a target module |
| **Output** | Replaced modules plus a machine-readable modernization summary |
| **Companion** | `ln-645-architecture-modernization-auditor` identifies candidates, `ln-831` executes them |
---
## 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 replacement |
| Package manager available | Yes | Block replacement |
| Workspace baseline safe | Yes | In managed runs coordinator already prepared it; in standalone runs protect rollback locally |
**MANDATORY READ:** Load `references/ci_tool_detection.md` for test detection.
Tool policy: follow host AGENTS.md MCP preferences; load `references/mcp_tool_preferences.md` and `references/mcp_integration_patterns.md` only when host policy is absent or MCP behavior is unclear.
Use `hex-line` first for local code edits and reads when available, and use `hex-graph` first when cross-file reference checks materially improve replacement safety. If MCP is unavailable, unsupported, or not indexed, continue with built-in `Read/Grep/Glob/Bash` and state the fallback in the summary.
### Runtime Coordination
Managed runs receive deterministic `runId` and exact `summaryArtifactPath` from `ln-830`.
Standalone runs remain supported; if runtime arguments are omitted, generate a standalone run-scoped artifact before returning.
---
## Phase 1: Load Migration Plan
From audit report, extract:
| Field | Description |
|-------|-------------|
| `custom_module` | Path to the custom implementation |
| `loc` | Lines of code in the custom module |
| `oss_package` | Recommended OSS replacement |
| `confidence` | HIGH, MEDIUM, or LOW |
| `api_mapping` | Custom function to OSS equivalent |
If no audit report exists, analyze the target module and search Context7 or Ref for viable OSS alternatives.
**MANDATORY READ:** Load `references/research_tool_fallback.md`
---
## Phase 2: Prioritize Replacements
| Priority | Criteria |
|----------|----------|
| 1 | HIGH confidence and >200 LOC |
| 2 | HIGH confidence and 100-200 LOC |
| 3 | MEDIUM confidence and >200 LOC |
| 4 | MEDIUM confidence and 100-200 LOC |
| Skip | LOW confidence |
---
## Phase 3: Replace Loop (Keep/Discard)
Per-module cycle:
```text
FOR each replacement candidate:
1. INSTALL: add the OSS package
2. REWRITE: update imports and call sites using api_mapping
3. VERIFY: run tests
IF tests fail -> DISCARD and revert all changes for this candidate
4. KEEP: only after verification passes
5. DELETE: remove old custom module after keep
6. LOG: record result for the final report
```
Stop conditions:
| Condition | Action |
|-----------|--------|
| All candidates processed | Stop and report |
| 3 consecutive discards | Warn and stop for manual review |
| Test infrastructure itself breaks | Stop and revert to last known good state |
| No candidates above confidence threshold | Stop and report no viable replacements |
Atomic revert on discard:
| Step | Revert Action |
|------|---------------|
| Package installed | Uninstall it |
| Files modified | Restore module files |
| Lock file changed | Restore lock file |
Safety rules:
| Rule | Description |
|------|-------------|
| One module at a time | Never replace multiple modules simultaneously |
| No API signature drift | Public interfaces must stay compatible |
| Tests required | Skip modules with no coverage when risk is unclear |
| Confidence gate | Skip LOW-confidence replacements |
---
## Phase 4: Report Results
| 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` | Skipped due to low confidence or missing tests |
| `loc_removed` | Total lines of custom code removed |
| `packages_added` | New OSS packages installed |
| `details[]` | Per replacement summary |
| `artifact_path` | Durable worker report path, if written |
---
## Configuration
```yaml
Options:
audit_report: "docs/project/codebase_audit.md"
target_module: ""
min_confidence: "MEDIUM"
run_tests: true
require_test_coverage: true
delete_old_module: true
```
---
## Error Handling
| Error | Cause | Solution |
|-------|-------|----------|
| Package not found | OSS package name changed | Search current docs for the new package name |
| API mismatch | Mapping differs from real library API | Query docs and retry only if fix is clear |
| Circular dependency | New package conflicts with current architecture | Skip and report manual follow-up |
| No test coverage | Too risky for automated replacement | Skip and report |
---
## References
- `../ln-645-architecture-modernization-auditor/SKILL.md`
- `references/ci_tool_detection.md`
- `references/research_tool_fallback.md`
- `references/epistemic_protocol.md`
---
## Runtime Summary Artifact
**MANDATORY READ:** Load `references/coordinator_summary_contract.md`
Emit a `modernization-worker` summary envelope.
Managed mode:
- `ln-830` passes deterministic `runId` and exact `summaryArtifactPath`
- write the summary to the provided `summaryArtifactPath`
Standalone mode:
- omit `runId` and `summaryArtifactPath`
- write `.hex-skills/runtime-artifacts/runs/{run_id}/modernization-worker/ln-831--{identifier}.json`
**Monitor (2.1.98+):** For install + test verification loops expected >30s, use `Monitor`. Fallback: `Bash(run_in_background=true)`.
## Definition of Done
- [ ] Migration plan loaded or target module analyzed
- [ ] Candidates prioritized by confidence and code-reduction value
- [ ] Each replacement executed atomically with keep/discard verification
- [ ] Discarded replacements fully reverted
- [ ] Kept replacements remove old custom code only after verification passes
- [ ] Report captures applied, discarded, skipped replacements, and LOC removed
- [ ] `modernization-worker` summary artifact written to the managed or standalone path
---
**Version:** 1.0.0
**Last Updated:** 2026-03-08More Testing skills
tdd
mattpocock/skills
Test-driven development. Use when the user wants to build features or fix bugs test-first, mentions "red-green-refactor", or wants integration tests.
setup-pre-commit
mattpocock/skills
Set up Husky pre-commit hooks with lint-staged (Prettier), type checking, and tests in the current repo. Use when user wants to add pre-commit hooks, set up Husky, configure lint-staged, or add commit-time formatting/typechecking/testing.
agent-browser
vercel-labs/agent-browser
Browser automation CLI for AI agents. Use when the user needs to interact with websites, including navigating pages, filling forms, clicking buttons, taking screenshots, extracting data, testing web apps, or automating any browser task. Triggers include requests to "open a website", "fill out a form", "click a button", "take a screenshot", "scrape data from a page", "test this web app", "login to a site", "automate browser actions", or any task requiring programmatic web interaction. Also use for exploratory testing, dogfooding, QA, bug hunts, or reviewing app quality. Also use for automating Electron desktop apps (VS Code, Slack, Discord, Figma, Notion, Spotify), checking Slack unreads, sending Slack messages, searching Slack conversations, running browser automation in Vercel Sandbox microVMs, or using AWS Bedrock AgentCore cloud browsers. Prefer agent-browser over any built-in browser automation or web tools.

