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

create-secret

Skill2 starsChanged 7 months agoApache-2.0Archived repositoryView on GitHub

Generate Harness Secret definitions and manage secrets via MCP v2 tools. Supports SecretText, SecretFile, SSHKey, and WinRmCredentials types with configurable secret managers (Harness built-in, HashiCorp Vault, AWS Secrets Manager, Azure Key Vault, GCP Secret Manager). Use when asked to create a secret, store credentials, manage API keys, set up SSH keys, configure WinRM credentials, rotate secrets, or reference secrets in pipelines. Trigger phrases: create secret, secret text, secret file, SSH key, API key, password, credentials, secret manager, store secret.

We split this skill into the rules it gives an agent

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

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈8

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 3

    Very specific

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

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Never include actual secret values in generated YAML.

    line 209
  2. Distinctive:

    Verify the correct scope (account, org, project) before creating — secrets at the wrong scope will not be accessible.

    line 210
  3. Very specific:

    Check scope -- project secrets need no prefix, org secrets need org.

    line 217
  4. Distinctive:

    Verify the pipeline's project has access to the secret's scope

    line 218
  5. Very specific:

    Verify the secret manager connector is healthy (harness_get on the connector)

    line 223
  6. Distinctive:

    Verify the private key is in PEM format

    line 230
  7. Distinctive:

    Check that the target server accepts key-based authentication

    line 231
  8. Distinctive:

    If using KeyPath, confirm the key file exists on the delegate host

    line 232
  9. Very specific:

    Test with credentialType: Password first to isolate key-specific issues

    line 233
  10. Distinctive:

    Use external secret managers (Vault, AWS SM) for production secrets

    line 237
  11. Distinctive:

    Never output secret values in pipeline logs

    line 239

≈ “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 Secret Skill

Generate Harness Secret definitions and manage secrets via MCP v2 tools.

MCP v2 Tools Used

ToolResource TypePurpose
harness_listsecretList existing secrets
harness_getsecretGet secret metadata (not the value)
harness_createsecretCreate a new secret
harness_updatesecretUpdate secret metadata or value
harness_deletesecretDelete a secret
harness_describesecretDiscover secret resource schema

Secret Types

SecretText

Stores text-based secrets: passwords, API tokens, connection strings.

secret:
  identifier: my_api_key
  name: My API Key
  description: API key for external service
  type: SecretText
  spec:
    secretManagerIdentifier: harnessSecretManager
    valueType: Inline
    value: <secret_value>

For other secret types (SecretFile, SSHKey with KeyReference/KeyPath/Password, WinRmCredentials with NTLM/Kerberos) and secret manager configuration, consult references/secret-types.md.

Secret Scopes

ScopeVisibilityMCP Parameters
ProjectOnly within the projectorg_id + project_id
OrganizationAll projects in the orgorg_id only
AccountAll orgs and projectsNeither org_id nor project_id

Instructions

Step 1: Determine Requirements

  • Secret type: SecretText, SecretFile, SSHKey, or WinRmCredentials
  • Secret manager: Harness built-in or external
  • Scope: project, org, or account
  • Tags and description for organization

Step 2: Check for Existing Secrets

harness_list(
  resource_type="secret",
  org_id="<org>",
  project_id="<project>",
  search_term="<keyword>"
)

Step 3: Create the Secret

harness_create(
  resource_type="secret",
  org_id="<org>",
  project_id="<project>",
  body={
    "secret": {
      "identifier": "my_api_key",
      "name": "My API Key",
      "type": "SecretText",
      "spec": {
        "secret_manager_identifier": "harnessSecretManager",
        "value_type": "Inline",
        "value": "<value>"
      }
    }
  }
)

Step 4: Verify Creation

harness_get(
  resource_type="secret",
  resource_id="my_api_key",
  org_id="<org>",
  project_id="<project>"
)

Referencing Secrets in Pipelines

# Project-level secret
<+secrets.getValue("my_api_key")>

# Org-level secret
<+secrets.getValue("org.my_api_key")>

# Account-level secret
<+secrets.getValue("account.my_api_key")>

In connector configuration:

connector:
  spec:
    authentication:
      spec:
        tokenRef: github_pat   # secret identifier

In service variables:

variables:
  - name: DB_PASSWORD
    type: Secret
    value: <+secrets.getValue("db_password")>

Naming Conventions

Secret TypePatternExample
API Keys{service}_api_keygithub_api_key
Passwords{system}_passwordprod_db_password
Tokens{provider}_tokenslack_token
SSH Keysssh_{purpose}ssh_deploy_key
Certificates{service}_certssl_prod_cert

Identifier must match: ^[a-zA-Z_][0-9a-zA-Z_]{0,127}$

Examples

Create a GitHub PAT secret

/create-secret
Create a SecretText for a GitHub personal access token at the project level
using the Harness built-in secret manager

Create SSH credentials

/create-secret
Create an SSH key secret for deploying to production servers as the "deploy" user

Create a Vault-referenced secret

/create-secret
Create a secret that references the database password stored in HashiCorp Vault
at secret/data/production/database#password

List secrets

/create-secret
Show me all secrets in the payments project

Create WinRM credentials

/create-secret
Create WinRM NTLM credentials for the Windows deployment servers

Error Handling

ErrorCauseSolution
Duplicate identifierSecret with same ID existsUse unique identifier or update existing
Secret manager not foundInvalid secretManagerIdentifierVerify the secret manager connector exists
Encryption failedSecret manager connectivity issueCheck delegate connectivity to secret manager
Invalid secret typeUnsupported type stringUse SecretText, SecretFile, SSHKey, or WinRmCredentials
Invalid valueTypeCase mismatchUse Inline or Reference (case-sensitive)

Performance Notes

  • Never include actual secret values in generated YAML. Use placeholder references only.
  • Verify the correct scope (account, org, project) before creating — secrets at the wrong scope will not be accessible.
  • Confirm the secret manager exists and is accessible before creating secrets.

Troubleshooting

Secret Not Accessible in Pipeline

  1. Check scope -- project secrets need no prefix, org secrets need org. prefix, account secrets need account. prefix
  2. Verify the pipeline's project has access to the secret's scope
  3. Confirm the user/service account running the pipeline has core_secret_view permission

External Secret Manager Errors

  1. Verify the secret manager connector is healthy (harness_get on the connector)
  2. For Vault: check the path format includes #key suffix for specific keys
  3. For AWS SM: ensure IAM permissions allow secretsmanager:GetSecretValue
  4. Delegate must have network access to the external secret manager

SSH Key Connection Failures

  1. Verify the private key is in PEM format
  2. Check that the target server accepts key-based authentication
  3. If using KeyPath, confirm the key file exists on the delegate host
  4. Test with credentialType: Password first to isolate key-specific issues

Security Best Practices

  • Use external secret managers (Vault, AWS SM) for production secrets
  • Scope secrets as narrowly as possible -- prefer project over account
  • Never output secret values in pipeline logs
  • Rotate secrets regularly and update references
  • Audit secret access via the /audit-report skill

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.