CtrlK
BlogDocsLog inGet started
Tessl Logo

create-connector

Generate Harness Connector YAML for integrations and create/test via MCP. Use when user says "create connector", "git connector", "aws connector", "docker connector", "cloud connector", or wants to connect Harness to external services.

83

1.13x
Quality

73%

Does it follow best practices?

Impact

100%

1.13x

Average score across 3 eval scenarios

SecuritybySnyk

Passed

No known issues

Optimize this skill with Tessl

npx tessl skill review --optimize ./plugins/claude/skills/create-connector/SKILL.md
SKILL.md
Quality
Evals
Security

Create Connector

Generate Harness Connector YAML and create/test via MCP.

Instructions

  1. Identify connector type - Determine what service to connect (Git provider, cloud provider, container registry, Kubernetes cluster)
  2. Generate YAML using the templates below, filling in credentials and endpoint details
  3. Create via MCP using harness_create with resource_type connector
  4. Test connection using harness_execute with action test_connection to verify

Git Connectors

GitHub

connector:
  name: GitHub
  identifier: github_connector
  type: Github
  spec:
    url: https://github.com/myorg
    type: Account                    # Account or Repo
    authentication:
      type: Http
      spec:
        type: UsernameToken
        spec:
          username: myuser
          tokenRef: github_pat       # Secret reference
    apiAccess:
      type: Token
      spec:
        tokenRef: github_pat
    executeOnDelegate: false

GitLab

connector:
  name: GitLab
  identifier: gitlab_connector
  type: Gitlab
  spec:
    url: https://gitlab.com/myorg
    type: Account
    authentication:
      type: Http
      spec:
        type: UsernameToken
        spec:
          username: myuser
          tokenRef: gitlab_token

Bitbucket

connector:
  name: Bitbucket
  identifier: bitbucket_connector
  type: Bitbucket
  spec:
    url: https://bitbucket.org/myorg
    type: Account
    authentication:
      type: Http
      spec:
        type: UsernameToken
        spec:
          username: myuser
          tokenRef: bitbucket_app_password

Cloud Connectors

AWS

connector:
  name: AWS
  identifier: aws_connector
  type: Aws
  spec:
    credential:
      type: ManualConfig          # ManualConfig, InheritFromDelegate, Irsa, OidcAuthentication
      spec:
        accessKeyRef: aws_access_key
        secretKeyRef: aws_secret_key
    delegateSelectors: []         # Optional: target specific delegates
    executeOnDelegate: false

GCP

connector:
  name: GCP
  identifier: gcp_connector
  type: Gcp
  spec:
    credential:
      type: ManualConfig          # ManualConfig, InheritFromDelegate, OidcAuthentication
      spec:
        secretKeyRef: gcp_service_account_key
    executeOnDelegate: false

Azure

connector:
  name: Azure
  identifier: azure_connector
  type: Azure
  spec:
    credential:
      type: ManualConfig
      spec:
        auth:
          type: Secret
          spec:
            secretRef: azure_client_secret
        applicationId: <app_id>
        tenantId: <tenant_id>
    azureEnvironmentType: AZURE     # AZURE, AZURE_US_GOVERNMENT
    executeOnDelegate: false

Registry Connectors

Docker Hub

connector:
  name: Docker Hub
  identifier: dockerhub
  type: DockerRegistry
  spec:
    dockerRegistryUrl: https://index.docker.io/v2/
    providerType: DockerHub
    auth:
      type: UsernamePassword
      spec:
        username: myuser
        passwordRef: dockerhub_password

AWS ECR

connector:
  name: ECR
  identifier: ecr_connector
  type: Aws
  spec:
    credential:
      type: ManualConfig
      spec:
        accessKeyRef: aws_access_key
        secretKeyRef: aws_secret_key

Kubernetes Connector

connector:
  name: K8s Cluster
  identifier: k8s_connector
  type: K8sCluster
  spec:
    credential:
      type: ManualConfig          # ManualConfig, InheritFromDelegate
      spec:
        masterUrl: https://k8s-api.example.com
        auth:
          type: ServiceAccount
          spec:
            serviceAccountTokenRef: k8s_sa_token
            caCertRef: k8s_ca_cert

Helm Repository Connector

HTTP Helm Repo

connector:
  name: Helm Repo
  identifier: helm_repo
  type: HttpHelmRepo
  spec:
    helmRepoUrl: https://charts.example.com
    auth:
      type: UsernamePassword      # UsernamePassword or Anonymous
      spec:
        username: myuser
        passwordRef: helm_password
    delegateSelectors: []

OCI Helm Repo

connector:
  name: OCI Helm
  identifier: oci_helm
  type: OciHelmRepo
  spec:
    helmRepoUrl: oci://registry.example.com/charts
    auth:
      type: UsernamePassword
      spec:
        username: myuser
        passwordRef: oci_password

Artifact Repository Connectors

Nexus

connector:
  name: Nexus
  identifier: nexus_connector
  type: Nexus
  spec:
    nexusServerUrl: https://nexus.example.com
    version: "3.x"               # "2.x" or "3.x"
    auth:
      type: UsernamePassword
      spec:
        username: admin
        passwordRef: nexus_password

Artifactory

connector:
  name: Artifactory
  identifier: artifactory_connector
  type: Artifactory
  spec:
    artifactoryServerUrl: https://artifactory.example.com
    auth:
      type: UsernamePassword
      spec:
        username: admin
        passwordRef: artifactory_password

Ticketing Connectors

Jira

connector:
  name: Jira
  identifier: jira_connector
  type: Jira
  spec:
    jiraUrl: https://mycompany.atlassian.net
    auth:
      type: UsernamePassword
      spec:
        username: user@company.com
        passwordRef: jira_api_token

ServiceNow

connector:
  name: ServiceNow
  identifier: servicenow_connector
  type: ServiceNow
  spec:
    serviceNowUrl: https://mycompany.service-now.com
    auth:
      type: UsernamePassword
      spec:
        username: admin
        usernameRef: snow_username
        passwordRef: snow_password

Creating and Testing via MCP

Create connector:

Call MCP tool: harness_create
Parameters:
  resource_type: "connector"
  org_id: "<organization>"
  project_id: "<project>"
  body: <connector YAML>

Test connection:

Call MCP tool: harness_execute
Parameters:
  resource_type: "connector"
  action: "test_connection"
  resource_id: "<connector_identifier>"
  org_id: "<organization>"
  project_id: "<project>"

Browse available connector types:

Call MCP tool: harness_list
Parameters:
  resource_type: "connector_catalogue"

Examples

  • "Create a GitHub connector with PAT" - Github type with token auth
  • "Set up AWS connector" - Aws type with access key credentials
  • "Create Docker Hub connector" - DockerRegistry type
  • "Connect to my K8s cluster" - K8sCluster with service account
  • "Create a Helm repo connector" - HttpHelmRepo type for chart repositories
  • "Set up Jira connector" - Jira type for approval and ticketing integration
  • "Create Nexus connector" - Nexus type for artifact repository

Performance Notes

  • Always test the connection after creation using harness_execute with action test_connection.
  • Verify that referenced secrets exist before creating the connector.
  • For cloud connectors, confirm IAM permissions match the intended usage (read-only vs. read-write).

Troubleshooting

Connection Test Fails

  • Verify credentials/tokens are valid and not expired
  • Check network connectivity (delegate may need access)
  • Ensure proper IAM permissions for cloud connectors

Secret References

  • Secrets must exist before creating the connector
  • Use format: account.secret_name for account-level secrets
  • Use just secret_name for project-level secrets

Delegate Selectors

  • Use delegateSelectors to target connectors at specific delegates
  • Required when the service is only reachable from specific network locations
  • Match delegate tags exactly (case-sensitive)
Repository
harness/harness-ai
Last updated
Created

Is this your skill?

If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.