Goal
Author, update, review, and execute kongctl declarative configuration for
Konnect without drifting into read-only query work or a different declarative
toolchain.
Tool Positioning
- Use this skill when the repository already manages Konnect resources through
kongctlYAML,_defaults.kongctl, orkongctlplan/apply workflows, or when the user explicitly asks forkongctl. - Use the shared
kong-konnectMCP server first when the task depends on live Konnect state and MCP is available. - Use
kongctl-queryfor read-only inspection, exactgetsyntax, output shaping, or CLI-shaped proof that should not mutate state. - Preserve the repository's existing declarative toolchain. Do not convert
decKor Terraform repositories tokongctlunless the user explicitly asks. - Choose execution style from user intent:
- User-run mode: explain the path and give commands.
- Agent-run mode: execute the commands and report results.
References To Load
Load only the branch that matches the task:
references/commands.md- Load for command selection, saved-plan versus inline execution, adopt/dump command shape, output mode behavior, and guardrail flags.
references/resources.md- Load for ownership layout,
_defaults, parent versus child metadata,!file,!ref, and schema discovery.
- Load for ownership layout,
references/apiops-openapi.md- Load when the task generates or updates
apisresources from OpenAPI.
- Load when the task generates or updates
references/cicd-github-actions.md- Load for GitHub Actions validation or deployment workflows.
references/troubleshooting.md- Load when preview or execution fails, or when drift and namespace behavior are unclear.
This skill must stay portable across repositories. Do not assume the upstream
kongctl repo layout or a local docs/ tree.
Validation Contract
Preflight
Before editing manifests or proposing execution:
- Confirm the repository already owns the target Konnect slice through
kongctlrather thandecKor Terraform. - Confirm the CLI is available and authentication works with a small read
command such as
kongctl get organization -o json. - Confirm namespace, profile, file scope, and whether
!fileusage will require--base-dir. - If exact syntax is uncertain, check local help instead of guessing.
Preview
Use the smallest preview surface that matches intent:
- review or CI path: generate a saved plan or a scoped diff artifact
- apply/sync/delete execution path: run a scoped
diffor inline--dry-run - adopt path: read the target resource and its labels, then state the exact namespace label change
- inspect unexpected deletes, wrong namespace ownership, unresolved
!refvalues, and!fileboundary issues before mutation
Execute
- Run live
apply,sync, ordeleteonly after a plan, diff, or--dry-runpreview and the user confirms that previewed change in the conversation. - For
adopt, preview through read-only inspection of the target and its labels, state the exact label change, and wait for conversation confirmation. Using--overwrite-namespaceneeds its own confirmation. - A request for direct execution does not skip these gates. In a CI deployment job, the pull-request plan/diff job and merge review are the preview and confirmation.
- State the intended effect in plain language before any mutating command.
- Keep execution aligned with the previewed path instead of switching tools or widening scope mid-task.
Prove
After a requested mutation:
- rerun the matching preview path and expect no remaining intended drift
- confirm the exact namespace and resource slice now reflect the intended state
- for adopt or dump workflows, prove the integrated declarative config is clean instead of stopping at a successful command
Operating Rules
- If live Konnect state matters and MCP is unavailable, say so early and
continue with
kongctl-based inspection as the fallback. - Prefer explicit namespace, profile, and output flags when environment or profile defaults could obscure behavior.
- Treat
syncanddeleteas destructive. Follow the Preview and Execute gates for every live mutation. - Inspect environment variable names only, never their values. Do not read credential files or print, log, or commit tokens or config-file secrets.
- Use
adoptonly for existing unmanaged parent resources.adoptlabels the resource for namespace ownership; it does not rewrite the resource fields. - Keep OpenAPI files in their existing repository locations. Prefer
!fileextraction and!reflinks over copied literals or hard-coded UUIDs. - Keep resolved
!filepaths and--base-dirwithin the repository that owns the declarative config. Never use absolute paths that leave the repository or symlinks that escape it, or reference credential, key, or env files. - Do not place non-resource YAML inside a
--recursivedeclarative tree. If a directory mixes resource YAML with specs or docs, target specific files instead of the whole tree. - When scope is unclear, inspect existing manifests or live state. Do not invent a default starter bundle of Konnect resources.
- If a required
kongctlcommand appears blocked by the agent sandbox rather than by Konnect or the CLI, ask the user to run it or approve a retry outside the sandbox before diagnosing the command itself as broken.
Workflow
- Identify the owned declarative root and target file scope.
If the path is not provided, search for existing
_defaults.kongctl,apis,portals,control_planes, or relatedkongctlresource keys instead of assumingkonnect/resources/. - Classify the branch before editing:
- general manifest authoring or repair: load
references/resources.md - OpenAPI-driven API modeling: also load
references/apiops-openapi.md - adopt or dump integration: also load
references/commands.md - CI/CD workflow work: also load
references/cicd-github-actions.md
- general manifest authoring or repair: load
- Update manifests in place, preserving the repository's file layout, ownership boundaries, and existing reference patterns.
- Run the validation gates in order: Preflight, Preview, Execute if confirmed, then Prove.
- Report the files changed, the exact command path used, and the proof of the resulting state or remaining drift.
Validation Checklist
Before answering, verify that you can state:
- why
kongctlis the correct implementation owner for this request - which namespace, profile, and file scope the change owns
- which preview path proves the change safely
- whether the user confirmed the previewed change before live mutation
- how post-change proof will confirm the exact resource slice
- whether
kongctl-queryshould provide read-only follow-up proof
Handoffs
- Hand off to
kongctl-querywhen the real task is read-only inspection, auth checking, exactgetsyntax, or output formatting. - Hand off to
deck-gateway,terraform-konnect, orterraform-kong-gatewaywhen the repository already uses those tools for the target resources. - Hand off to the relevant Konnect domain skill, or to
konnect-platform-routerwhen the workflow owner is unclear, if the user first needs diagnosis or classification rather than declarative implementation.