agentleFS
thisrohanguptathisrohangupta/harness-skills/skills/create-connector/SKILL.md

create-connector

Skill2 starsChanged 7 months agoApache-2.0Archived repositoryView on GitHub

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.

We split this skill into the rules it gives an agent

8 rules. About 0 are common, 4 are distinctive, and 4 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈4

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 4

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Very specific:

    Always test the connection after creation using harness_execute with action test_connection.

    line 328
  2. Distinctive:

    Verify that referenced secrets exist before creating the connector.

    line 329
  3. Distinctive:

    Verify credentials/tokens are valid and not expired

    line 335
  4. Distinctive:

    Check network connectivity (delegate may need access)

    line 336
  5. Distinctive:

    Ensure proper IAM permissions for cloud connectors

    line 337
  6. Very specific:

    Use format: account.secret_name for account-level secrets

    line 341
  7. Very specific:

    Use just secret_name for project-level secrets

    line 342
  8. Very specific:

    Use delegateSelectors to target connectors at specific delegates

    line 345

≈ “Common” is an estimate: at least 1 in 5 of the 308,232 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

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)

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.