pm7y-dotnet-upgrade
Analyzes a .NET 8 codebase and produces analysis findings for upgrading to .NET 10. Uses pm7y-ralph-planner to generate TASKS.md with validation requirements and learnings tracking for autonomous execution. Use when planning a .NET 10 upgrade.
What this skill does
# .NET 10 Upgrade Planner
Analyzes your codebase and produces findings for upgrading from .NET 8 to .NET 10. Passes findings to `pm7y-ralph-planner` for TASKS.md generation.
---
## Overview
This skill performs codebase analysis and passes findings to `pm7y-ralph-planner`, which generates a `TASKS.md` file with validation requirements and learnings tracking for autonomous execution via `pm7y-ralph-loop`.
**You do NOT perform the upgrade.** You create the plan.
**Workflow:**
1. Run `/pm7y-dotnet-upgrade` to analyze the codebase
2. Analysis findings are passed to `pm7y-ralph-planner` to generate TASKS.md
3. Review and adjust `TASKS.md` as needed
4. Run `pwsh ./ralph-loop.ps1` to execute the upgrade
---
## Analysis Phase
Before generating tasks, analyze the codebase to discover:
### 1. Project Structure
Find and document:
- All `.sln` and `.csproj` files
- `Directory.Build.props` (centralized build properties)
- `Directory.Packages.props` (central package management)
- `global.json` (SDK version pinning)
### 2. Current Configuration
Determine:
- Current target framework(s) in use
- Current SDK version (if pinned)
- Whether central package management is already in use
### 3. Infrastructure Files
Locate:
- Dockerfiles (check for .NET base images)
- CI/CD pipelines (`.github/workflows/*.yml`, `azure-pipelines.yml`, etc.)
- Any scripts that reference .NET versions
### 4. NuGet Packages
Categorize all packages from `.csproj` files and/or `Directory.Packages.props`:
- Microsoft.Extensions.* packages
- Azure.* packages
- Testing packages (xunit, NSubstitute, FluentAssertions, etc.)
- Other third-party packages
### 5. Breaking Change Patterns
Search for:
- Patterns known to have breaking changes in .NET 9/10
- Deprecated API usage
---
## Analysis Commands
Use these to gather information:
```bash
# Find all solution and project files
find . -name "*.sln" -o -name "*.csproj" 2>/dev/null
# Check current target frameworks
grep -r "TargetFramework" --include="*.csproj" --include="Directory.Build.props" .
# Find Dockerfiles
find . -name "Dockerfile*" 2>/dev/null
# Find CI/CD files
find . \( -path "*/.github/workflows/*.yml" -o -name "azure-pipelines.yml" \) 2>/dev/null
# Check for global.json
cat global.json 2>/dev/null || echo "No global.json found"
# Check for Directory.Build.props
cat Directory.Build.props 2>/dev/null || echo "No Directory.Build.props found"
# Check for Directory.Packages.props
cat Directory.Packages.props 2>/dev/null || echo "No Directory.Packages.props found"
# List all NuGet packages
grep -rh "PackageReference\|PackageVersion" --include="*.csproj" --include="Directory.Packages.props" . 2>/dev/null | sort -u
```
---
## Output: Pass Findings to pm7y-ralph-planner
After completing the analysis, invoke the `pm7y-ralph-planner` agent using the Task tool. Pass your findings as structured input so the planner can generate a proper TASKS.md with validation requirements and learnings tracking.
**CRITICAL**: Each finding must be:
- **Specific to this codebase** - reference actual file paths discovered during analysis
- **Self-contained** - include all context needed for a worker to complete it
- **Verifiable** - include `(verify: ...)` where build/test verification is needed
- **Atomic** - one logical change per task
**Invoke pm7y-ralph-planner with this prompt:**
```
Generate a TASKS.md for .NET 10 upgrade.
## Goal
Upgrade codebase from .NET {CURRENT_VERSION} to .NET 10.
## Project Context
- **Source Framework:** .NET {CURRENT_VERSION}
- **Target Framework:** .NET 10
- **Build command:** dotnet build
- **Test command:** dotnet test
- **Solution files:** [list of .sln files]
- **Project files:** [list of .csproj files]
## Findings
### Critical [P0] - Framework Version Changes
These tasks update the target framework. Must complete before any package updates.
- Update global.json to pin .NET 10 SDK version 10.0.100 with rollForward: latestFeature (verify: dotnet --version)
- Update TargetFramework from net8.0 to net10.0 in {FILE_PATH} (verify: dotnet build)
[REPEAT FOR EACH CSPROJ OR DIRECTORY.BUILD.PROPS]
### Critical [P0] - Infrastructure Updates
- Update Dockerfile at {PATH} to use mcr.microsoft.com/dotnet/sdk:10.0 and runtime:10.0 base images (verify: docker build .)
[REPEAT FOR EACH DOCKERFILE]
- Update GitHub Actions workflow at {PATH} to use dotnet-version: '10.0.x' (verify: cat {PATH} | grep dotnet)
[REPEAT FOR EACH CI/CD FILE]
### High [P1] - Build Verification
- Run full solution build and fix any compilation errors caused by framework upgrade (verify: dotnet build)
- Run all tests and fix any failures caused by framework upgrade (verify: dotnet test)
### High [P1] - Microsoft Package Updates
Update Microsoft packages first as other packages may depend on them.
- Update {PACKAGE_NAME} from {CURRENT_VERSION} to latest .NET 10 compatible version in {FILE_PATH} (verify: dotnet build)
[REPEAT FOR EACH MICROSOFT.EXTENSIONS.* PACKAGE]
### High [P1] - Azure SDK Updates
- Update {PACKAGE_NAME} from {CURRENT_VERSION} to latest version in {FILE_PATH} (verify: dotnet build)
[REPEAT FOR EACH AZURE.* PACKAGE]
### Medium [P2] - Testing Package Updates
- Update {PACKAGE_NAME} from {CURRENT_VERSION} to latest version in {FILE_PATH} (verify: dotnet test)
[REPEAT FOR EACH TESTING PACKAGE]
### Medium [P2] - Third-Party Package Updates
- Update {PACKAGE_NAME} from {CURRENT_VERSION} to latest .NET 10 compatible version in {FILE_PATH} (verify: dotnet build)
[REPEAT FOR EACH THIRD-PARTY PACKAGE]
### Medium [P2] - Breaking Change Fixes
[ONLY INCLUDE IF BREAKING CHANGES DETECTED]
- Update usage of {DEPRECATED_API} to {NEW_API} in {FILE_PATH}:{LINE_RANGE} (verify: dotnet build)
### Low [P3] - Centralized Build Configuration
[INCLUDE APPROPRIATE TASKS BASED ON CURRENT STATE]
If Directory.Build.props does NOT exist:
- Create Directory.Build.props with centralized TargetFramework, LangVersion, Nullable, and analyzer settings
- Remove TargetFramework property from {CSPROJ_PATH} (now centralized) (verify: dotnet build)
If Directory.Packages.props does NOT exist:
- Create Directory.Packages.props with ManagePackageVersionsCentrally enabled and all current package versions
- Remove Version attribute from PackageReference elements in {CSPROJ_PATH} (verify: dotnet restore)
If global.json does NOT exist:
- Create global.json to pin SDK version to 10.0.100 with rollForward: latestFeature
### Low [P3] - Documentation
- Create UPGRADE_NET10.md documenting all changes made during this upgrade
### Low [P3] - Final Verification
- Run full build to confirm upgrade is complete (verify: dotnet build --no-incremental)
- Run all tests to confirm everything passes (verify: dotnet test)
- Verify no warnings are treated as errors or resolve any that are (verify: dotnet build -warnaserror)
```
**Why use pm7y-ralph-planner:**
The planner will:
1. Add proper validation requirements (build, test verification)
2. Include the Learnings Log section for preserving insights across iterations
3. Add the iteration workflow guidance
4. Format tasks with checkbox format for optimal autonomous execution
---
## Finding Generation Guidelines
1. **Be specific** - Use actual file paths from the codebase, not placeholders
2. **Include versions** - Show current versions when listing package updates
3. **Order matters** - Framework updates before packages, Microsoft packages before others
4. **Verification commands** - Every finding that changes build should have `(verify: dotnet build)` or `(verify: dotnet test)`
5. **Skip what's not needed** - If central package management already exists, don't include tasks to create it
6. **One finding per file** - For target framework changes, create separate findings for each file that needs updating
---
## Process Checklist
- [ ] Find all .sln and .csproj files
- [ ] Check for Directory.Build.props
- [ ] Check for Directory.Packages.props
- [ ] Check for global.json
- [ ] Find all Dockerfiles
- [ ] FiRelated in Productivity
gitea-workflow
IncludedOrchestrate agile development workflows for Gitea repositories using the tea CLI. Use when working with Gitea-hosted repos and asking to 'run the workflow', 'continue working', 'what's next', 'complete the task cycle', 'start my day', 'end the sprint', 'implement the next task', or wanting guided step-by-step development assistance. Keywords: workflow, orchestrate, agile, task cycle, sprint, daily, implement, review, PR, standup, retrospective, gitea, tea.
microsoft-graph-gateway
IncludedRoute Microsoft Graph work in this workspace. Use when users want to read or write Outlook mail, calendar events, contacts, OneDrive or SharePoint files, Teams, Planner, To Do, users, groups, directory data, or arbitrary Microsoft Graph endpoints from VS Code. Prefer WorkIQ for common read scenarios. Use Microsoft Graph for write actions and gap-read scenarios that need exact Graph properties, filters, permissions, or endpoints.
copilotkit
IncludedUse when building with CopilotKit — setup, development, integrations, debugging, upgrading, or contributing. Routes to the appropriate specialized skill based on the task.
wordly-wisdom
IncludedProvides calibrated decision analysis using Charlie Munger-style multiple mental models, inversion, incentive mapping, circle-of-competence checks, misjudgment audits, second-order effects, and forecast updates. Use when the user asks for an oracle take, a hard call, a decision memo, a premortem, an outside view, a red-team, a sanity-check, what am I missing, think this through, or wants a strategy, hire, investment, plan, product, partnership, or major life choice analysed. Avoid for simple factual lookups or time-sensitive legal, medical, or market questions without fresh evidence.
swain-session
IncludedSession management and project status dashboard. Owns the full session lifecycle (start/work/close/resume), focus lane, bookmarks, worktree detection, and tab naming. Also serves as the project status dashboard — shows active epics, progress, actionable next steps, blocked items, tasks, GitHub issues, and recommendations. Worktree creation is deferred to swain-do task dispatch (SPEC-195). Triggers on: 'session', 'status', 'what's next', 'dashboard', 'overview', 'where are we', 'what should I work on', 'show me priorities', 'bookmark', 'focus on', 'session info'.
gandi
IncludedComprehensive Gandi domain registrar integration for domain and DNS management. Register and manage domains, create/update/delete DNS records (A, AAAA, CNAME, MX, TXT, SRV, and more), configure email forwarding and aliases, check SSL certificate status, create DNS snapshots for safe rollback, bulk update zone files, and monitor domain expiration. Supports multi-domain management, zone file import/export, and automated DNS backups. Includes both read-only and destructive operations with safety controls.