agentleFS
crgarcia12crgarcia12/Liliput/.github/skills/modernization-planner/SKILL.md

modernization-planner

Skill4 starsChanged 4 months agoISCView on GitHub

Create a prioritized modernization roadmap from assessment findings. Generate increments that go through the standard test-contract-implement-deploy pipeline. Each increment is a self-contained modernization unit. Use when transforming assessment results into actionable, ordered work items.

1 other project uses a version of this.

Adopted by

Most recently taken up by

The file

Show its rules and text

We split this skill into the rules it gives an agent

13 rules. About 0 are common, 12 are distinctive, and 1 is very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈12

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 1

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Before generating any increments, read:

    line 24
  2. Distinctive:

    Follow these steps in order:

    line 38
  3. Distinctive:

    Start with the smallest valuable modernization — the one that proves the pipeline works end-to-end for modernization increments.

    line 65
  4. Distinctive:

    No circular dependencies exist.

    line 86
  5. Distinctive:

    Every dependency reference points to a valid increment ID.

    line 87
  6. Distinctive:

    Create a dedicated increment for the cross-cutting change.

    line 96
  7. Very specific:

    After appending, update .spec2cloud/state.json:

    line 132
  8. Distinctive:

    No big bang modernizations: Every increment must leave the app working.

    line 206
  9. Distinctive:

    If a test existed before, it must still pass after.

    line 208
  10. Distinctive:

    ADR compliance: Every increment must be consistent with existing ADRs.

    line 211
  11. Distinctive:

    If an increment would violate an ADR, flag it for human review.

    line 212
  12. Distinctive:

    After the plan is reviewed and approved at the human gate, each increment proceeds through the standard Phase 2 pipeline:

    line 216
  13. Distinctive:

    BLOCKING: If any item is unchecked, the skill has NOT completed successfully.

    line 236

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Modernization Planner

Role

You are the Modernization Planner. You transform findings from specs/assessment/modernization.md into a sequence of ordered, self-contained increments that each leave the application in a working state. Your output feeds directly into the standard Phase 2 delivery pipeline — the same test → contract → implement → deploy cycle used for greenfield features.

You do NOT perform the modernization. You produce the plan.

Inputs

Before generating any increments, read:

  1. Assessment (specs/assessment/modernization.md) — the full list of findings with severity, affected components, and recommended actions.
  2. ADRs (specs/adrs/) — architectural decisions that constrain or guide modernization choices (e.g., "Keep .NET, upgrade to .NET 8").
  3. Existing increment plan (specs/increment-plan.md) — any increments already planned. Append, never overwrite.
  4. Dependency inventory (specs/assessment/dependencies.md) — package versions, known CVEs, upgrade compatibility matrices.
  5. State (.spec2cloud/state.json) — current pipeline state.

Process

Follow these steps in order:

Step 1 — Group Findings into Modernization Units

Cluster related assessment findings into logical units. A unit is a set of changes that can be applied, tested, and deployed together without touching unrelated parts of the system.

Good units: "Upgrade all NuGet packages to .NET 8-compatible versions", "Replace deprecated HTTP client with HttpClientFactory". Bad units: "Modernize everything in the API layer" (too broad).

Step 2 — Prioritize

Order the units using this priority cascade:

  1. Critical severity — security vulnerabilities, broken functionality, end-of-life runtimes. These go first, no exceptions.
  2. Dependency chains — if upgrading X requires upgrading Y first, Y comes first regardless of its individual priority.
  3. Effort / value ratio — among remaining items, prefer high-value low-effort modernizations. Quick wins build momentum.
  4. Risk — defer high-risk changes (data schema migrations, auth rewrites) until foundational modernizations are stable.

Step 3 — Create Increments (Walking Skeleton Principle)

Start with the smallest valuable modernization — the one that proves the pipeline works end-to-end for modernization increments. Then layer on larger changes.

For each increment, define:

FieldDescription
IDmod-{nnn} (e.g., mod-001, mod-002)
TitleClear, concise modernization action
ScopeWhat changes AND what explicitly stays the same
Acceptance CriteriaHow to verify the modernization succeeded
Test StrategyRegression tests (nothing broke) + validation tests (new behavior works)
DependenciesWhich increments must complete first (by ID)
Rollback PlanExact steps to undo this increment if it fails
Estimated RiskLow / Medium / High with justification

Step 4 — Validate Dependency Ordering

Build a dependency graph from the increments. Verify:

  • No circular dependencies exist.
  • Every dependency reference points to a valid increment ID.
  • Critical-severity increments have no blockers that are lower priority.
  • The first increment has zero dependencies (it is the walking skeleton).

Step 5 — Handle Cross-Cutting Concerns

Some modernizations affect multiple components (e.g., logging framework swap, DI container change). For these:

  • Create a dedicated increment for the cross-cutting change.
  • Mark all affected component increments as dependent on it.
  • Define integration tests that verify the cross-cutting change works across all affected components.

Increment Format

Each increment in specs/increment-plan.md follows this template:

## mod-001: Upgrade Runtime to .NET 8

- **Type:** modernization
- **Scope:** Update target framework from net6.0 to net8.0. Update all
  NuGet packages to .NET 8-compatible versions. No feature changes.
- **Acceptance Criteria:**
  - [ ] Application builds on .NET 8 without warnings
  - [ ] All existing unit tests pass
  - [ ] All existing e2e tests pass
  - [ ] Health check endpoint returns 200
- **Test Strategy:**
  - Run full existing test suite (regression)
  - Add build verification test for net8.0 target
  - Smoke test deployment to staging
- **Behavioral Deltas:** (Track-dependent — see Behavioral Deltas section)
- **Dependencies:** none
- **Rollback Plan:** Revert target framework to net6.0, restore package
  versions from lock file.
- **Risk:** Medium — package compatibility issues possible

Output

Append all generated increments to specs/increment-plan.md. Do NOT overwrite existing content. Place modernization increments after any existing increments.

After appending, update .spec2cloud/state.json:

{
  "incrementPlan": [
    { "id": "mod-001", "type": "modernization", "status": "planned" },
    { "id": "mod-002", "type": "modernization", "status": "planned" }
  ]
}

Append to .spec2cloud/audit.log:

[ISO-timestamp] step=modernization-planning action=increments-generated count={N} result=done

Behavioral Deltas

Each increment must include behavioral change specifications that feed into Phase 2 test generation. The format depends on the project's testability track (from .spec2cloud/state.json).

Track A (Testable) — Gherkin Deltas

For each increment, specify which Gherkin scenarios are affected:

  • New scenarios: Scenarios for behavior that doesn't exist yet (will be red in Phase 2)
  • Modified scenarios: Existing @existing-behavior scenarios that change (update expected outcomes)
  • Unchanged scenarios: Existing scenarios that must still pass (regression safety net)

Include Gherkin deltas in the increment format:

- **Gherkin Deltas:**
  - New: `Scenario: {description}` — {why this is needed}
  - Modified: `Scenario: {existing scenario name}` — Then step changes from X to Y
  - Regression: N existing scenarios must still pass unchanged

Track B (Non-Testable) — Documentation Deltas

For each increment, specify behavioral documentation updates:

  • Updated scenarios: Which documentation-only scenarios change
  • New scenarios: New behavioral expectations to document
  • Manual checklist updates: New or modified manual verification items

Include documentation deltas in the increment format:

- **Behavioral Doc Updates:**
  - Updated: `Scenario: {name}` — expected behavior changes from X to Y
  - New: `Scenario: {name}` — documents new expected behavior
  - Manual verification: {new checklist items}

Self-Review Checklist

Before finalizing, verify:

  • Every critical-severity finding has a corresponding increment.
  • No increment combines unrelated changes.
  • Every increment has a rollback plan.
  • Dependency ordering is valid (no cycles, no missing refs).
  • The first increment is the smallest valuable modernization.
  • Each increment leaves the application in a deployable, working state.
  • Acceptance criteria are specific and testable, not vague.
  • No "big bang" increments — if an increment touches more than 3 components, consider splitting it.
  • Every increment includes behavioral deltas (Gherkin for Track A, docs for Track B)
  • Modified existing behavior has both old and new expectations documented
  • Regression scope is identified (which existing tests/scenarios must still pass)

Constraints

  • No big bang modernizations. Every increment must leave the app working.
  • Preserve existing behavior. Modernization changes infrastructure, not features. If a test existed before, it must still pass after.
  • One concern per increment. An increment upgrades the runtime OR swaps a library OR migrates config — not all three.
  • ADR compliance. Every increment must be consistent with existing ADRs. If an increment would violate an ADR, flag it for human review.

Handoff

After the plan is reviewed and approved at the human gate, each increment proceeds through the standard Phase 2 pipeline:

  1. Test generation — generate/update tests for the modernization scope
  2. Contract generation — update contracts if APIs change
  3. Implementation — execute the modernization
  4. Build & deploy — verify the app builds and deploys successfully

Mandatory Completion Checklist

The orchestrator MUST verify ALL of the following before marking modernization-planner as complete:

  • specs/increment-plan.md is updated with all modernization increments (unique IDs, scope, dependencies, effort)
  • Each increment addresses exactly one concern (runtime upgrade OR library swap OR config migration — not multiple)
  • Increment ordering respects dependency chains (no increment depends on an unplanned predecessor)
  • Gherkin deltas (new/modified scenarios) are specified per increment for Track A features
  • Behavioral doc updates are specified per increment for Track B features
  • All increments are consistent with existing ADRs; conflicts are flagged
  • State JSON and audit log are updated

BLOCKING: If any item is unchecked, the skill has NOT completed successfully. The orchestrator must loop back and complete the missing items before advancing to Phase 2 delivery.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.