Skip to content

plugin: add installable dotnet skills#52

Merged
gaelic-ghost merged 6 commits into
mainfrom
docs/dotnet-skills-plan
May 14, 2026
Merged

plugin: add installable dotnet skills#52
gaelic-ghost merged 6 commits into
mainfrom
docs/dotnet-skills-plan

Conversation

@gaelic-ghost
Copy link
Copy Markdown
Owner

@gaelic-ghost gaelic-ghost commented May 14, 2026

Summary

  • turn dotnet-skills from a placeholder into an installable Socket child plugin
  • add .NET skills for project shape, bootstrap, F#, C#, testing, packaging, diagnostics, ASP.NET Core, interop, CI, upgrades, and tooling/style
  • make F# and C# equal first-party .NET language choices while recommending xUnit as the default scaffold test framework for new projects
  • add SharpIcon as the dotnet-skills composer/logo asset and validate plugin interface asset paths
  • prepare the Socket 6.9.0 release surfaces for the dotnet-skills launch
  • add release guidance requiring temporary CODEX_HOME plugin smoke checks before releases that change marketplace or plugin payloads

Review

No blocking review findings remain from the local pass. The main issue found during review was that the bootstrap recipes used dotnet new xunit while the plan said not to declare a default test framework. That is now resolved by explicitly documenting xUnit as the recommended scaffold default for new F# and C# test projects while preserving existing repo test frameworks.

The release-prep pass also found that Socket did not validate plugin interface asset paths. The validator now checks composerIcon, logo, and screenshots asset references so missing icon files are caught before release.

.NET Alignment Report

The plugin guidance is aligned with documented .NET practice around the dotnet CLI as the stable command surface. It uses official Microsoft documentation for CLI commands, F#, C#, ASP.NET Core, testing, packaging, formatting, CI, and upgrades. It treats F# and C# as peer languages in metadata, skill descriptions, bootstrap guidance, testing, package guidance, diagnostics, and mixed-language interop. It keeps package publication and release automation explicit instead of letting package validation imply publication.

Covered surfaces include:

  • project-shape choice across apps, libraries, services, tests, packages, and mixed F#/C# solutions
  • reproducible solution bootstrap with explicit language and SDK decisions
  • idiomatic F# implementation guidance, including file ordering, modules, records, discriminated unions, options, and async/task interop
  • idiomatic C# implementation guidance, including nullable behavior, records/classes, analyzers, and async/task contracts
  • dotnet test workflows with xUnit recommended for new scaffolds
  • dotnet pack package validation without publishing by default
  • restore/build/test/pack diagnostics
  • ASP.NET Core service planning and validation
  • F#/C# interop boundaries
  • CI, upgrade, formatting, analyzer, and local-tool guidance

Verification

  • uv run scripts/validate_socket_metadata.py
  • uv run pytest
  • git diff --check
  • temporary CODEX_HOME marketplace smoke check with codex plugin marketplace add /Users/galew/Workspace/gaelic-ghost/socket
  • local DOTNET_CLI_HOME=/private/tmp/socket-dotnet-home dotnet new xunit --help
  • local DOTNET_CLI_HOME=/private/tmp/socket-dotnet-home dotnet new xunit --help --language F#

Summary by CodeRabbit

  • New Features
    • dotnet-skills is now available in the marketplace and ships a .NET Skills plugin (F# & C#) covering selection, bootstrap, build, test, CI, packaging, diagnostics, interop, and ASP.NET Core service guidance.
  • Documentation
    • Extensive new dotnet-skills skill docs and maintainer guidance; README/ROADMAP updated; release procedures now require a marketplace install smoke check.
  • Tests
    • Added tests to verify marketplace installability, interface assets, and expected skill inventory.
  • Chores
    • Version bumps across plugins and project metadata.

Review Change Stack

@gaelic-ghost gaelic-ghost added the enhancement New feature or request label May 14, 2026
@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented May 14, 2026

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 25e57713-f3ff-458e-a51a-6911ace6bd34

📥 Commits

Reviewing files that changed from the base of the PR and between bc65ed9 and 4a35fb2.

⛔ Files ignored due to path filters (9)
  • plugins/agent-plugin-skills/uv.lock is excluded by !**/*.lock
  • plugins/apple-dev-skills/uv.lock is excluded by !**/*.lock
  • plugins/cardhop-app/mcp/uv.lock is excluded by !**/*.lock
  • plugins/dotnet-skills/assets/sharp-icon.jpg is excluded by !**/*.jpg
  • plugins/productivity-skills/uv.lock is excluded by !**/*.lock
  • plugins/python-skills/uv.lock is excluded by !**/*.lock
  • plugins/things-app/mcp/uv.lock is excluded by !**/*.lock
  • plugins/things-app/uv.lock is excluded by !**/*.lock
  • uv.lock is excluded by !**/*.lock
📒 Files selected for processing (22)
  • plugins/agent-plugin-skills/.codex-plugin/plugin.json
  • plugins/agent-plugin-skills/pyproject.toml
  • plugins/apple-dev-skills/.codex-plugin/plugin.json
  • plugins/apple-dev-skills/pyproject.toml
  • plugins/cardhop-app/.codex-plugin/plugin.json
  • plugins/cardhop-app/mcp/pyproject.toml
  • plugins/dotnet-skills/.codex-plugin/plugin.json
  • plugins/productivity-skills/.codex-plugin/plugin.json
  • plugins/productivity-skills/pyproject.toml
  • plugins/python-skills/.codex-plugin/plugin.json
  • plugins/python-skills/pyproject.toml
  • plugins/rust-skills/.codex-plugin/plugin.json
  • plugins/spotify/.codex-plugin/plugin.json
  • plugins/swiftasb-skills/.codex-plugin/plugin.json
  • plugins/things-app/.codex-plugin/plugin.json
  • plugins/things-app/mcp/pyproject.toml
  • plugins/things-app/pyproject.toml
  • plugins/web-dev-skills/.codex-plugin/plugin.json
  • pyproject.toml
  • scripts/validate_socket_metadata.py
  • tests/test_swiftasb_skills_install.py
  • tests/test_validate_socket_metadata.py
✅ Files skipped from review due to trivial changes (18)
  • plugins/rust-skills/.codex-plugin/plugin.json
  • plugins/productivity-skills/.codex-plugin/plugin.json
  • plugins/apple-dev-skills/.codex-plugin/plugin.json
  • plugins/cardhop-app/mcp/pyproject.toml
  • plugins/python-skills/.codex-plugin/plugin.json
  • plugins/web-dev-skills/.codex-plugin/plugin.json
  • plugins/cardhop-app/.codex-plugin/plugin.json
  • plugins/productivity-skills/pyproject.toml
  • plugins/python-skills/pyproject.toml
  • pyproject.toml
  • plugins/things-app/pyproject.toml
  • plugins/things-app/.codex-plugin/plugin.json
  • plugins/agent-plugin-skills/pyproject.toml
  • plugins/things-app/mcp/pyproject.toml
  • plugins/swiftasb-skills/.codex-plugin/plugin.json
  • plugins/spotify/.codex-plugin/plugin.json
  • plugins/apple-dev-skills/pyproject.toml
  • plugins/agent-plugin-skills/.codex-plugin/plugin.json
🚧 Files skipped from review as they are similar to previous changes (1)
  • tests/test_swiftasb_skills_install.py

📝 Walkthrough

Walkthrough

This PR enables the dotnet-skills plugin in the marketplace, adds/updates plugin metadata and branding, introduces twelve SKILL.md workflow documents for .NET (F# and C# parity), updates release and install-test procedures, extends manifest validation for interface assets, adds tests, and bumps package/plugin versions.

Changes

Dotnet Skills Plugin Release

Layer / File(s) Summary
Strategic Planning & Roadmap
ROADMAP.md, docs/maintainers/dotnet-skills-plugin-plan.md
ROADMAP.md adds Milestone 6 tracking and the plan document specifies the dotnet-skills scope, F#/C# parity, a detailed skill inventory, implementation slices, open decisions, and a Definition of Done checklist.
Plugin Marketplace & Metadata
.agents/plugins/marketplace.json, plugins/dotnet-skills/.codex-plugin/plugin.json, plugins/dotnet-skills/AGENTS.md
Marketplace enables dotnet-skills by setting policy.installation to AVAILABLE. plugin.json updates version, description, homepage/repository, keywords (adds fsharp), interface metadata (displayName, descriptions, defaultPrompt), and visual assets. AGENTS.md defines local rules and repo scope for the plugin.
Skill Workflow Documentation
plugins/dotnet-skills/skills/*/SKILL.md (12 files)
Twelve skill documents added: choose-project-shape, bootstrap-solution, build-fsharp-project, build-csharp-project, testing-workflow, package-workflow, diagnose-project, aspnet-core-service-workflow, fsharp-csharp-interop, ci-workflow, tooling-style-workflow, upgrade-workflow — each with usage guidance, source checks, workflows, output shapes, and guardrails.
Release & Testing Procedures
CONTRIBUTING.md, docs/maintainers/plugin-install-testing.md, docs/maintainers/release-modes.md
CONTRIBUTING.md requires a temporary CODEX_HOME smoke check for release PRs touching marketplace/plugin entries. plugin-install-testing.md documents the smoke-check checklist; release-modes.md inserts the smoke-check into socket and subtrees workflows.
Manifest Validation & Scripts
scripts/validate_socket_metadata.py
Adds validation for packaged plugin interface asset fields (composerIcon, logo) and list fields (screenshots), with repo-relative path and existence checks; wires validation into local plugin entry checks.
Test Validation
tests/test_swiftasb_skills_install.py, tests/test_validate_socket_metadata.py
Adds tests asserting dotnet-skills marketplace entry is AVAILABLE and its source path, verifies expected SKILL.md files and assets exist, and adds validator tests for interface asset presence/missing-file error cases.
Version & Project Bumps
various plugins/*/.codex-plugin/plugin.json, plugins/*/pyproject.toml, pyproject.toml
Bumps plugin and package versions from 6.8.0 → 6.9.0 across multiple plugins and project manifests.

🎯 4 (Complex) | ⏱️ ~60 minutes

🐰 A dotnet rabbit hops with glee,
F# and C# living equally,
Twelve skills bundled, tested, true,
The socket marketplace made new!
Guidance workflows, no runtimes shipped—
Just wisdom and workflow scripts!

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'plugin: add installable dotnet skills' directly describes the main change: converting dotnet-skills from a placeholder to an installable Socket child plugin with a full skill inventory.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch docs/dotnet-skills-plan

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@plugins/dotnet-skills/skills/ci-workflow/SKILL.md`:
- Line 97: Replace the ambiguous glob patterns `**.fs`, `**.fsproj`, `**.cs`,
and `**.csproj` with standard recursive globs `**/*.fs`, `**/*.fsproj`,
`**/*.cs`, and `**/*.csproj` in the SKILL.md examples that demonstrate GitHub
Actions path filters (e.g., the `on.push.paths` / `paths-ignore` examples);
update the example text so the path-filter snippets show `**/*.ext` form to
ensure recursive matches and avoid CI trigger gaps.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: a8b27463-ab33-49a1-8144-af15d5cdde81

📥 Commits

Reviewing files that changed from the base of the PR and between 02b876d and bc65ed9.

📒 Files selected for processing (23)
  • .agents/plugins/marketplace.json
  • CONTRIBUTING.md
  • README.md
  • ROADMAP.md
  • docs/maintainers/dotnet-skills-plugin-plan.md
  • docs/maintainers/plugin-install-testing.md
  • docs/maintainers/release-modes.md
  • plugins/dotnet-skills/.codex-plugin/plugin.json
  • plugins/dotnet-skills/AGENTS.md
  • plugins/dotnet-skills/skills/aspnet-core-service-workflow/SKILL.md
  • plugins/dotnet-skills/skills/bootstrap-solution/SKILL.md
  • plugins/dotnet-skills/skills/build-csharp-project/SKILL.md
  • plugins/dotnet-skills/skills/build-fsharp-project/SKILL.md
  • plugins/dotnet-skills/skills/choose-project-shape/SKILL.md
  • plugins/dotnet-skills/skills/ci-workflow/SKILL.md
  • plugins/dotnet-skills/skills/diagnose-project/SKILL.md
  • plugins/dotnet-skills/skills/fsharp-csharp-interop/SKILL.md
  • plugins/dotnet-skills/skills/package-workflow/SKILL.md
  • plugins/dotnet-skills/skills/testing-workflow/SKILL.md
  • plugins/dotnet-skills/skills/tooling-style-workflow/SKILL.md
  • plugins/dotnet-skills/skills/upgrade-workflow/SKILL.md
  • tests/test_swiftasb_skills_install.py
  • tests/test_validate_socket_metadata.py


For mixed solutions:

- include `**.fs`, `**.fsproj`, `**.cs`, and `**.csproj` in path filters when filters are used
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major | ⚡ Quick win

Use standard recursive file globs in path-filter examples.

**.fs / **.cs are ambiguous for GitHub Actions path filters and can miss expected matches. Use **/*.fs and **/*.cs (and same shape for project files) to avoid CI trigger gaps.

Suggested doc fix
-- include `**.fs`, `**.fsproj`, `**.cs`, and `**.csproj` in path filters when filters are used
+- include `**/*.fs`, `**/*.fsproj`, `**/*.cs`, and `**/*.csproj` in path filters when filters are used
In GitHub Actions `on.push.paths` / `paths-ignore`, what is the documented glob pattern to match files recursively by extension (for example, all `.fs` or `.cs` files)?

As per coding guidelines, “For validation guidance, prefer the narrowest relevant dotnet restore, dotnet build, dotnet test, or dotnet pack command for the project shape.”

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@plugins/dotnet-skills/skills/ci-workflow/SKILL.md` at line 97, Replace the
ambiguous glob patterns `**.fs`, `**.fsproj`, `**.cs`, and `**.csproj` with
standard recursive globs `**/*.fs`, `**/*.fsproj`, `**/*.cs`, and `**/*.csproj`
in the SKILL.md examples that demonstrate GitHub Actions path filters (e.g., the
`on.push.paths` / `paths-ignore` examples); update the example text so the
path-filter snippets show `**/*.ext` form to ensure recursive matches and avoid
CI trigger gaps.

@gaelic-ghost gaelic-ghost merged commit 2c9e434 into main May 14, 2026
2 checks passed
@gaelic-ghost gaelic-ghost deleted the docs/dotnet-skills-plan branch May 14, 2026 18:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant