ivy-interactive/ivy-framework/ivy-create-soap-connection
Claude Code and agent skill by ivy-interactive/ivy-framework
- community
Checking that the SKILL.md file is still in the repository.
Add a SOAP/WSDL web service connection to an Ivy project. Generates a typed client from a WSDL URL using dotnet-svcutil. Supports no auth, HTTP Basic, Bearer token, and custom header authentication. Use when the user wants to connect to a SOAP service, WSDL endpoint, or WCF service.
Install
npx vskill@latest install ivy-interactive/ivy-framework/ivy-create-soap-connectionSKILL.md
ivy-create-soap-connection
Add a SOAP web service connection to an existing Ivy project. This skill guides you through collecting the WSDL URL, authentication details, and generating a typed client using dotnet-svcutil.
Pre-flight: Read Learnings
If the file .ivy/learnings/ivy-create-soap-connection.md exists in the project directory, read it first and apply any lessons learned from previous runs of this skill.
Reference Files
Read before implementing:
- references/AGENTS.md -- Ivy framework API reference (widgets, hooks, layouts, inputs, colors)
Step 1: Validate the Project
- Verify this is a valid Ivy project. Check for a
.csprojfile andProgram.csin the working directory. If this is not an Ivy project, tell the user and stop.
- Clean up any empty connection folders under
Connections/if they exist.
Step 2: Collect the WSDL URL
- Ask the user for the WSDL URL if not already provided. The URL must be a valid HTTP or HTTPS URL (matching
^https?://.+$). If the URL is invalid, ask the user to provide a valid one.
- Validate that the URL is accessible and points to a WSDL document.
Step 3: Collect Connection Details
- Ask the user for a connection name in PascalCase (e.g. "PaymentService", "WeatherApi"). The name must match the regex
^[A-Z][a-zA-Z0-9]*$. A name is suggested based on the WSDL URL hostname. If the name is invalid or already in use, ask the user to provide a different one.
- Ask the user for the SOAP service endpoint URL. This is the actual service URL that the client will call at runtime (not the WSDL URL). A suggestion is derived from the WSDL URL hostname.
- Ask the user to select the authentication type:
| Auth Type | Description | Required Credentials | |
|---|---|---|---|
| none | No authentication | -- | |
| basic | HTTP Basic (username + password) | Username, Password | |
| bearer | Bearer token | Token | |
| custom-header | Custom header (name + value) | Header Name, Token/Value |
- Based on the chosen auth type, collect the required credentials:
- basic: Ask for username and password (password is a secret)
- bearer: Ask for the bearer token (secret)
- custom-header: Ask for the header name and the header value (value is a secret)
- none: No credentials needed
Step 4: Generate the Connection
- Create the connection directory at
Connections/[ConnectionName]/.
- Ensure dotnet tools are installed. The
dotnet-svcutiltool is required:
- Initialize user secrets and store credentials:
For auth credentials, also store them in user secrets:
- basic:
[ConnectionName]:Usernameand[ConnectionName]:Password - bearer or custom-header:
[ConnectionName]:Token
- Add the required WCF NuGet packages:
- Run
dotnet-svcutilto generate the client from the WSDL:
This generates a Reference.cs file containing the service client class (inheriting from System.ServiceModel.ClientBase<T>).
- Verify that
Reference.cswas generated in the connection directory. If generation fails:
- Verify that the WSDL URL is accessible and valid
- Check that .NET SDK is installed and
dotnet-svcutilis available - Verify the service uses SOAP 1.1 or 1.2
Create the ClientFactory
- Create
Connections/[ConnectionName]/[ConnectionName]ClientFactory.cs. This class reads credentials from configuration and creates the SOAP client with the appropriate binding and authentication:
Uncomment and use only the auth section matching the chosen auth type. Remove the AuthHeaderBehavior and AuthHeaderInspector classes if auth type is none or basic.
The [ServiceClientClassName] is detected from the generated Reference.cs -- look for a class inheriting from System.ServiceModel.ClientBase<T> (e.g. SomeServiceClient). If detection fails, default to [ConnectionName]Client.
Create the Connection class
- Create
Connections/[ConnectionName]/[ConnectionName]Connection.csimplementingIConnectionandIHaveSecrets:
Adjust the GetSecrets() method to include only the secrets relevant to the chosen auth type.
Expected directory structure after completion:
Step 5: Verify
- Run
dotnet buildto verify everything compiles. Fix any errors.
- Run
dotnet buildto verify the project compiles. Then test the connection by runningdotnet runand verifying the app starts without errors. If the test fails, investigate and fix the issue.
- If the project is in a git repository, create a commit with a descriptive message, for example: "Added SOAP connection '[ConnectionName]'."
- Tell the user the connection is ready and show them how to use it. Example usage:
Recovery
If the setup fails:
This is the start of the file. Read the full SKILL.md on GitHub.
Security
- Security scanPassed, 100 of 100Pattern checks on the skill's files.
- Model reviewNot runA model review is scheduled for the next rescan.
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingsrc/claude-plugin/skills/ivy-create-soap-connection/SKILL.md
Popularity
- 7-day trend score
- 0
Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/ivy-interactive/ivy-framework/ivy-create-soap-connection)