Skip to content

Capabilities

Capabilities are the contracts between the Holocron CLI and its plugins. Each capability is a TypeScript interface that plugins implement; the CLI calls methods on the interface without knowing which provider is behind it.

Single-provider capabilities

These accept exactly one plugin per repo.

source

Repository, branch, workflow file, and security operations. Implemented by: GitHub.

Method Description
whoami() Verify authentication
getRepo() Return the repo’s { owner, name, defaultBranch }
listRulesets() List all branch rulesets
createRuleset(payload) Create a new ruleset
updateRuleset(id, payload) Update an existing ruleset
updateRepoSettings(settings) Toggle repo feature flags (squash merge, auto-delete, etc.)
protectBranch(branch, payload) Apply classic branch protection (fallback for free-plan repos)
enableVulnerabilityAlerts() Enable Dependabot alerts
enableAutomatedSecurityFixes() Enable Dependabot auto-PRs
enableSecretScanning() Enable secret scanning
enablePrivateVulnerabilityReporting() Enable private security advisories
enableDependencyGraph() Enable dependency graph + snapshot submission
enableCodeScanning() Enable CodeQL default setup (extended query suite)
disableDefaultCodeScanning() Disable CodeQL default setup (required for advanced workflows)
listWorkflowFiles() List .github/workflows/ file names
readWorkflowFile(name) Read a workflow file’s contents
writeWorkflowFile(name, contents) Write a workflow file
removeWorkflowFile(name) Delete a workflow file
writeRepoFile(path, contents) Write any file relative to the repo root
syncLabels?(canonical, stale) Upsert canonical labels, delete stale ones
syncProperties?(values) Set org custom property values
syncTopics?(topics) Replace repo topic set
syncTeams?(teams) Sync team repository access
syncDescription?(description) Set repo description
syncHomepage?(homepage) Set repo homepage URL

ci

Read CI workflow run history and status. Implemented by: GitHub.

Method Description
listRuns(filter?) List recent CI runs (filter by branch, status, limit)
getRun(id) Get a single run by id

secrets

Set and delete CI/platform secrets at repo, environment, or org scope. Implemented by: GitHub.

Method Description
listSecrets(scope) List secret names at the given scope
setSecret(scope, name, value) Upsert a secret (handles encryption)
deleteSecret(scope, name) Remove a secret

Scope forms:

  • { kind: "repo" } — repository secret
  • { kind: "environment", name: "production" } — environment secret
  • { kind: "organization", name: "my-org" } — org secret

environments

Manage named deployment environments (protection rules, reviewers, wait timers). Implemented by: GitHub.

Method Description
listEnvironments() List all environments
upsertEnvironment(env) Create or update an environment
deleteEnvironment(name) Remove an environment

issues

Issue creation, search, lifecycle transitions, and comments. Implemented by: GitHub.

Method Description
getMyself() Return the authenticated user
search(filter) Search issues (by assignee, open status, limit)
get(key) Fetch a single issue by key
create(input) Create an issue
transition(key, slot) Move an issue to inProgress, inReview, or done
comment(key, body) Add a comment
doctor() Validate tracker configuration and lifecycle slot mapping

deployment

Trigger and query deployments; manage projects and env vars. Implemented by: Vercel.

Method Description
listProjects() List all projects
ensureProject(input) Create a project if missing (idempotent)
updateProjectSettings(id, settings) Update project settings
listEnvVars(projectId, target) List env var names for a target
setEnvVar(projectId, target, name, value) Upsert an env var
triggerDeployment(input) Deploy a branch (to preview or a named environment)
getDeployment(id) Poll a deployment’s status

storage

Database branch management and connection strings. Implemented by: Neon.

Method Description
getConnectionString(scope, options?) Get the connection URL for a branch/scope
listBranches?() List all database branches
createBranch?(input) Create a new branch
destroyBranch?(branch) Delete a branch
resetBranch?(input) Reset a branch to match another
enableExtension?(input) Run CREATE EXTENSION IF NOT EXISTS … on a branch

auth

Identity provider integration (user management, webhooks). Implemented by: Clerk.

Method Description
describe() Return the provider name and required env var keys
whoami() Reachability probe — verifies the configured key works
ensureWebhookApp?() Idempotent webhook backend provisioning
getWebhookDashboardUrl?() Deep-link to the webhook config dashboard
createUser?(input) Seed a user (test fixtures, admin bootstrap)
syncWebhook?(input) Wire the auth provider’s webhook into the project’s repo

vault

Secret source-of-truth — read, write, list, and manage environments. Implemented by: 1Password, Doppler, Infisical.

Method Description
read(reference) Read a secret by provider-specific reference
write(reference, value) Write or update a secret
list() List available secret keys
environments?() List named environments (e.g. Doppler configs)
readEnvironment?(id) Bulk-read all KEY=VALUE pairs from an environment
ensureProject?(name) Create the project container if it doesn’t exist
ensureEnvironment?(project, name) Create a named environment inside a project

dns

DNS record management. No first-party plugin ships yet — implement via a community plugin.

Method Description
listRecords(domain) List all DNS records for a domain
upsertRecord(domain, record) Create or update a record
deleteRecord(domain, id) Delete a record by id

Multi-provider capabilities

These accept any number of providers — all are active simultaneously.

tooling

Sync external tool state from the repo. Implemented by: Postman.

Method Description
sync() Pull the tool’s authoritative state from the repo
doctor() Return { ok, message } — a health check for the tool

notifications

Send messages. No first-party plugin ships yet.

Method Description
send(channel, message) Send a message to a channel

analytics / observability

Describe the provider’s DSN env key. No first-party plugin ships yet.

Method Description
describe() Return { provider, dsnEnvKey }