coordinate-external-ag…
Coordinate independently operated external agents through durable handoffs. Use when work crosses hosts, sessions, accounts,…
Design and maintain explicit F# and C# boundaries in mixed .NET solutions, including project references, public API shape, async/task interop, nullability, options, records, and package-facing contracts.
Claude Code
$ npx -y skills add gaelic-ghost/socket --skill fsharp-csharp-interop --agent claude-code
Codex
$ npx skills add gaelic-ghost/socket --skill fsharp-csharp-interop -a codex -y
Cursor
$ npx skills add gaelic-ghost/socket --skill fsharp-csharp-interop -a cursor -y
Gemini CLI
$ npx skills add gaelic-ghost/socket --skill fsharp-csharp-interop -a gemini-cli -y
GitHub Copilot
$ npx skills add gaelic-ghost/socket --skill fsharp-csharp-interop -a github-copilot -y
OpenCode
$ npx skills add gaelic-ghost/socket --skill fsharp-csharp-interop -a opencode -y
Windsurf
$ npx skills add gaelic-ghost/socket --skill fsharp-csharp-interop -a windsurf -y
name: fsharp-csharp-interop description: Design and maintain explicit F# and C# boundaries in mixed .NET solutions, including project references, public API shape, async/task interop, nullability, options, records, and package-facing contracts. license: Apache-2.0 compatibility: Designed for Codex and compatible Agent Skills clients working with mixed F# and C# .NET solutions. metadata: owner: gaelic-ghost repo: socket category: dotnet-interop allowed-tools: Read Bash(rg:*) Bash(git:*) Bash(dotnet:*)
Keep mixed F# and C# solutions intentional.
The practical job is to decide which language owns which responsibility, make the project-reference direction explicit, and shape public APIs so each language can call the other without awkward translation code leaking everywhere.
Use repo-local .NET files, checked-out dependency sources, Dash MCP or Dash HTTP for installed .NET docsets, and then official Microsoft documentation when Dash/local coverage is missing or stale:
1. Inspect project graph:
rg --files -g '*.fsproj' -g '*.csproj' -g '*.sln' -g '*.slnx'
2. Identify the language-owned responsibilities:
3. Choose dependency direction. 4. Shape the API at the boundary. 5. Add tests from the consuming side when the boundary is public or fragile. 6. Run solution-level build and tests.
Common durable shapes:
Avoid mixed language solutions when the only reason is indecision. Ask for a language choice instead.
When C# consumes F#:
When F# consumes C#:
Use `dotnet add reference` or direct project-file edits that match the repo style.
After reference changes, run:
dotnet build dotnet test
Use package references instead of project references only when the dependency is intentionally versioned and released independently.
Return:
1. `Boundary`: which language owns which project. 2. `Dependency direction`: project references and rationale. 3. `API shape`: F#-native, C#-friendly, or dual surface. 4. `Interop risks`: nullability, options, unions, async/task, file ordering. 5. `Validation`: exact build and test commands.
Coordinate independently operated external agents through durable handoffs. Use when work crosses hosts, sessions, accounts,…
Assign worktree, branch, write, validation, integration, and cleanup ownership before parallel repository work. Use when a worker…
Design framework-neutral agent and automation workflows before implementation. Use when choosing between Codex app automations,…
Design evaluation workflows for agent, skill, prompt, and automation behavior before implementation. Use when choosing eval…
Design safe n8n workflows with deterministic routing, credentials, idempotency, recovery, local-model checks, drafts, and exact…
Coordinate bounded worker tasks with a launch envelope, report-back, escalation, and synthesis contract. Use before spawning,…
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…
Ask which skill or flow fits your situation. A router over the skills in this repo.