Agent skill

Migrate Talhelper To Topf

by postfinance in postfinance/topf

Migrate a Talos cluster from talhelper (budimanjojo/talhelper, now archived) to TOPF (postfinance/topf).

MITAuto-check passedBusiness, Finance & HR

Install Migrate Talhelper To Topf

skills CLI
$ npx skills add postfinance/topf --skill migrate-talhelper-to-topf -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install postfinance/topf migrate-talhelper-to-topf --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/postfinance/topf.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/migrate-talhelper-to-topf .claude/skills/migrate-talhelper-to-topf && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
migrate-talhelper-to-topf
GitHub stars
175
Token cost
~5.7k tokens
SKILL.md length
2,207 words
Files
2
Skills in repo
2
Repo updated
First seen
Licence
MIT

At a glance

Migrate a Talos cluster from talhelper (budimanjojo/talhelper, now archived) to TOPF (postfinance/topf).

  • Works in 8 steps: Inventory the talhelper setup → Create topf.yaml → Extract node config into patch files → …
  • The user wants to convert a talconfig.yaml-based setup to topf.yaml + patch files
  • SKILL.md covers Critical: migrate on the…, When to use, How talhelper and TOPF differ and Reference documentation, plus 2 more sections
  • Calls git and yq; needs REPO_TOKEN

What it does

Migrate Talhelper To Topf is an agent skill from postfinance/topf. Migrate a Talos cluster from talhelper (budimanjojo/talhelper, now archived) to TOPF (postfinance/topf). Use when the user wants to convert a talconfig.yaml-based setup to topf.yaml + patch files, asks "how do I move off talhelper", or says they want to migrate/switch/transition to topf. Triggers: talhelper, talconfig.yaml, talsecret.sops.yaml, talenv.sops.yaml, "migrate to topf", "switch from talhelper", "talhelper is archived". Covers generating the new topf.yaml, extracting inline node config into patch files…

Its SKILL.md is about 5.7k tokens, which your agent loads only when the skill is triggered. The skill folder holds 1 other file (for example `field-mapping.md`).

It sits in Business, Finance & HR, covering Operations and SOPs and Code migrations. It works with Kubernetes and Linux. The repository describes itself as: Talos orchestrator by PostFinance. The licence is MIT.

When your agent uses it

  • The user wants to convert a talconfig.yaml-based setup to topf.yaml + patch files
  • Asks how do I move off talhelper
  • Says they want to migrate/switch/transition to topf

Example prompts

  • “how do I move off talhelper”
  • “migrate to topf”
  • “switch from talhelper”
  • “/migrate-talhelper-to-topf”

Requirements

  • A credential in REPO_TOKEN

Workflow steps

8 steps, taken from the step headings in SKILL.md.

  1. Inventory the talhelper setup
  2. Create topf.yaml
  3. Extract node config into patch files
  4. Convert JSON patches to strategic merge
  5. Migrate envsubst / talenv to Go templates
  6. Rename the secrets bundle
  7. Apply
  8. Verify: prove the render matches talhelper's

What it can do on your machine

Read from SKILL.md and the folder at commit 232db62. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • git
    • yq

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Links to these hosts (documentation or services it may open):

    • postfinance.github.io
    • budimanjojo.github.io
    • github.com

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names these keys or tokens, usually read from environment variables:

    • REPO_TOKEN

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Migrate Talhelper To Topf loads about 5.7k tokens when it runs. Until then it costs about 209 tokens; SKILL.md has 2,207 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~209
When it runs · the whole SKILL.md, loaded when a task matches
~5.7k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from postfinance/topf at commit 232db62, republished under its MIT licence (© postfinance). 2,207 words, ~5,661 tokens.

Download SKILL.mdSave it as .claude/skills/migrate-talhelper-to-topf/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.
name
migrate-talhelper-to-topf
description
Migrate a Talos cluster from talhelper (budimanjojo/talhelper, now archived) to TOPF (postfinance/topf). Use when the user wants to convert a talconfig.yaml-based setup to topf.yaml + patch files, asks "how do I move off talhelper", or says they want to migrate/switch/transition to topf. Triggers: talhelper, talconfig.yaml, talsecret.sops.yaml, talenv.sops.yaml, "migrate to topf", "switch from talhelper", "talhelper is archived". Covers generating the new topf.yaml, extracting inline node config into patch files, rewriting JSON patches as strategic merge, moving envsubst/talenv values into SOPS-encrypted `data` + Go templates, renaming talsecret.sops.yaml to secrets.yaml, wrapping `@./file` inline-manifest includes into patches, and proving the TOPF render matches talhelper's before the first apply.

Migrating from talhelper to TOPF

talhelper is archived (since Aug 2026). TOPF is a recommended successor and the upstream migration guide is canonical: https://postfinance.github.io/topf/main/migration-from-talhelper/

Critical: migrate on the running config format, upgrade later

Do the tooling migration on whatever Talos version and config format the cluster runs today, and prove the TOPF render is equivalent to talhelper's (Step 8) before the first topf apply. Only then upgrade Talos or move to the v1.14 multi-document format, as a separate change with the talos-v114-migration skill. Mixing the two makes the first diff unreviewable: every hunk could be the tool or the format.

TOPF v0.6.0+ renders v1.14 multi-document configs too; that is not a reason to switch formats during the migration. The examples below use the v1.13 single-document machine: / cluster: format.

When to use

Use this skill when the task involves ANY of:

  • Migrating a cluster managed by talhelper to TOPF
  • Converting talconfig.yaml to topf.yaml + patch files
  • A user asks to "migrate to topf", "switch from talhelper", or "move off talhelper"
  • Handling talenv.sops.yaml / talsecret.sops.yaml as part of a topf migration

Do NOT use this skill for:

  • The Talos v1.14 multi-doc config format migration (use talos-v114-migration)
  • Writing a topf config from scratch with no existing talhelper setup
  • Talos version upgrades that don't involve a tooling migration

How talhelper and TOPF differ

AspecttalhelperTOPF
Config filetalconfig.yamltopf.yaml
PatchesInline in config or separate filesSeparate files in all/, <role>/, node/<host>/
Patch formatStrategic merge + JSON patches (RFC 6902)Strategic merge only (with $patch: delete support)
Secrets filetalsecret.sops.yamlsecrets.yaml (same format, just renamed)
Env secretstalenv.sops.yaml + envsubstSOPS-encrypted data fields in topf.yaml
Templatingenvsubst / talhelper variablesGo templates (.Data, .Node.Data, sprig functions)
Workflowtalhelper genconfig then talosctl apply-configtopf apply (generates + applies in one step)

Reference documentation

Workflow

Work through the user's talconfig.yaml in this order. Always read the actual talconfig.yaml (and talenv.sops.yaml / talsecret.sops.yaml if present) in the repo before editing — do not guess at field names.

1. Inventory the talhelper setup

Read talconfig.yaml and record:

  • Top-level cluster fields (clusterName, endpoint, talosVersion, kubernetesVersion, domain, allowSchedulingOnMasters, etc.)
  • Top-level patches:, controlPlane: block, worker: block, inlineManifests:
  • Per-node fields (every key under each nodes: entry)
  • Whether talenv.sops.yaml / talenv.yaml exists and what keys it holds
  • Whether talsecret.sops.yaml / talsecret.yaml exists
2. Create topf.yaml

Translate the top-level cluster fields and the node list. Only these fields have direct equivalents in topf.yaml; everything else becomes a patch (Step 3).

talconfig.yamltopf.yamlNotes
clusterNameclusterNameunchanged
endpointclusterEndpointrenamed
kubernetesVersionkubernetesVersionunchanged (keep the same value, e.g. v1.32.8)
talosVersiontalosVersionunchanged
node hostnamenode hostrenamed
node ipAddressnode iprenamed
node controlPlane: truenode role: control-planebool → enum
node controlPlane: falsenode role: workerbool → enum

Example minimal topf.yaml:

yaml
clusterName: mycluster
clusterEndpoint: https://192.168.1.100:6443
kubernetesVersion: v1.32.8
talosVersion: v1.12.0
nodes:
  - host: node-01
    ip: 192.168.1.1
    role: control-plane
  - host: node-02
    ip: 192.168.1.2
    role: worker

For the full field map (including fields with no direct equivalent), see field-mapping.md.

3. Extract node config into patch files

Patches live in a directory tree next to topf.yaml (default: same dir; override with patchesDir). TOPF loads, in order, for each node:

<patchesDir>/all/             # applied to every node
<patchesDir>/control-plane/   # applied to control-plane nodes only
<patchesDir>/worker/          # applied to worker nodes only
<patchesDir>/node/<host>/     # applied to one specific node

Files are matched by *.yaml, *.yml, or *.tpl (templated). They are applied in lexicographic order within each folder, so prefix with two-digit numbers to control ordering (01-…, 02-…). Lists with a merge key (cluster.inlineManifests by name, machine.files by path) merge across scopes exactly as they did in talhelper — both tools use Talos's own strategic-merge patcher — so a control-plane/ patch that adds inline manifests appends to the all/ list instead of replacing it.

Map each talhelper source to a target directory:

talhelper sourceTOPF patch directory
top-level patches:all/
top-level controlPlane: patches:control-plane/
top-level worker: patches:worker/
top-level inlineManifests:all/ (see the @./file gotcha below)
node-level patches:node/<host>/
node-level config fields (installDisk, networkInterfaces, nodeLabels, …)node/<host>/
node hostname: (talhelper set it for you)all/05-hostname.yaml.tpl — see gotchas

Each patch file is a single standalone YAML document — a strategic merge patch against the Talos v1.13 machine config (machine: / cluster: maps).

Example per-node install + network patches:

yaml
# node/node-01/01-install.yaml
machine:
  install:
    disk: /dev/nvme0n1
yaml
# node/node-01/02-network.yaml
machine:
  network:
    interfaces:
      - interface: eno1
        dhcp: true

For a control-plane VIP shared by all CP nodes, put it under control-plane/:

yaml
# control-plane/01-vip.yaml
machine:
  network:
    interfaces:
      - interface: eno1
        vip:
          ip: 192.168.1.100
4. Convert JSON patches to strategic merge

talhelper accepts RFC 6902 JSON patches (arrays of {op, path, value}). TOPF does not — it only accepts strategic merge patches, and will reject a document that is a YAML array with an error like "document at index N looks like a JSON patch (array of operations), which is not supported".

Remove a field (e.g. a node label):

yaml
# Before (RFC 6902)
- op: remove
  path: /machine/nodeLabels/node.kubernetes.io~1exclude-from-external-load-balancers
yaml
# After (strategic merge, $patch: delete)
machine:
  nodeLabels:
    node.kubernetes.io/exclude-from-external-load-balancers:
      $patch: delete

Note / in keys is written literally — no ~1 escaping.

Add/replace a field: write the strategic merge directly:

yaml
# Before
- op: add
  path: /machine/kubelet/extraArgs/rotate-server-certificates
  value: "true"
yaml
# After
machine:
  kubelet:
    extraArgs:
      rotate-server-certificates: "true"

If a talhelper patch was already strategic merge (a mapping, not an array), it carries over unchanged — just move it into the right file.

5. Migrate envsubst / talenv to Go templates

talhelper reads talenv.sops.yaml (or talenv.yaml) into env vars and runs envsubst on talconfig.yaml and patch files. TOPF has no envsubst.

Pattern A — non-secret values: move them under data: in topf.yaml:

yaml
# topf.yaml
data:
  controlPlaneEndpoint: 192.168.1.100
  domain: mycluster.local
yaml
# control-plane/01-extra-SANs.yaml.tpl
cluster:
  apiServer:
    certSANs:
      - {{ .Data.controlPlaneEndpoint }}

The .tpl suffix triggers Go template rendering. Templates use the sprig function library and missingkey=error (a missing key is a hard error, not a blank).

Pattern B — secret values: put them under data: in topf.yaml and encrypt the whole topf.yaml with SOPS (or use vals references like ref+vault://…). SOPS-encrypted values in topf.yaml are decrypted at load time and redacted from output by default.

yaml
# topf.yaml (SOPS-encrypted)
data:
  controlPlaneEndpoint: ENC[AES256_GCM,data:...,type:str]

Template files reference them the same way: {{ .Data.controlPlaneEndpoint }}.

Encrypt only the data block so the rest of topf.yaml stays diffable and editable without sops, and move the values without ever writing plaintext to disk:

yaml
# .sops.yaml — first matching rule wins, so list this before any catch-all
creation_rules:
  - path_regex: topf\.yaml$
    encrypted_regex: ^data$
    mac_only_encrypted: true
    age: <recipient>
bash
# placeholders in data:, then encrypt in place, then overwrite each value from talenv
sops encrypt -i topf.yaml
sops set topf.yaml '["data"]["repoToken"]' "\"$(sops -d --extract '["REPO_TOKEN"]' talenv.sops.yaml)\""
sops filestatus topf.yaml    # {"encrypted":true}

A .tpl file is parsed by Go's template engine in full, YAML comments included — a literal {{ in a comment fails the render with bad character or function not defined. Values with characters YAML could misread are safer as {{ .Data.x | quote }}.

Per-node data: a node's data: block is reachable in templates as .Node.Data.<key> (the node the patch is being rendered for). Use this for per-node values that used to be envsubst'd with node-specific vars.

talhelper template variables like {{ .MachineConfig … }} do not exist in TOPF. Replace with the TOPF template context:

talhelper varTOPF template
{{ .ClusterName }}{{ .ClusterName }}
(hostname){{ .Node.Host }}
(node IP){{ .Node.IP }}
(node data foo){{ .Node.Data.foo }}
(global data foo){{ .Data.foo }}
.MachineConfig.…not available — restructure as a patch
6. Rename the secrets bundle

talsecret.sops.yaml (or talsecret.yaml) → secrets.yaml. The Talos secrets bundle format is identical between talhelper and TOPF; only the filename changes. TOPF looks for secrets.yaml next to topf.yaml by default (override with secretsPath). Keep it SOPS-encrypted.

bash
git mv talsecret.sops.yaml secrets.yaml

Delete talenv.sops.yaml / talenv.yaml — there is no equivalent in TOPF. Its contents either become data: in topf.yaml (if still needed) or are dropped. Also delete clusterconfig/ and its .gitignore entries (talenv.yaml, talsecret.yaml); add output/ instead — that is where topf render writes full configs, secrets included.

7. Apply
bash
# Before (talhelper)
talhelper genconfig
talosctl apply-config --insecure -n 192.168.1.1 --file clusterconfig/mycluster-node-01.yaml
# ...repeat per node

# After (TOPF) — single command, all nodes
topf apply

For an existing cluster being migrated (nodes already running Talos), use --dry-run first to diff the generated config against the running nodes and confirm nothing unexpected changes:

bash
topf apply --dry-run
topf apply

topf apply generates the machine config from patches + secrets and applies it to each node over the Talos API (not --insecure file apply). It authenticates with a client certificate minted from secrets.yaml, so the talhelper-era talosconfig keeps working too (same secrets bundle, same CA); topf talosconfig regenerates it if needed.

TOPF dials every node's ip (or host) on :50000 directly. There is no talosctl -e <control-plane> -n <worker> style apid proxying, so a NAT'd or LAN-only node is only reachable when TOPF runs from a network that reaches it. Use --nodes-filter to apply the reachable nodes from elsewhere.

Show full SKILL.md (969 more words)Show less
8. Verify: prove the render matches talhelper's

Both tools emit Talos-machinery YAML, so the two renders can be diffed directly and every hunk must be explainable. Take the talhelper baseline before deleting talconfig.yaml / talenv.sops.yaml:

bash
talhelper genconfig                                   # baseline, one last time
topf render -o /tmp/topf-out
diff <(yq -P . clusterconfig/<cluster>-<host>.yaml) <(yq -P . /tmp/topf-out/<host>.yaml)

Harmless hunks: multi-document order (TOPF emits documents in patch order — all/, then role, then node — where talhelper put node and role documents first; Talos keys documents by kind + name, so order is irrelevant), and any comment or quoting you changed inside inline manifests. Anything else is a real difference — typical culprits are a missing hostname patch, a role schematic that changed, or a field talhelper defaulted (machine.install.wipe, certSANs) that TOPF does not.

  • topf schematic-ids must print the IDs already in each node's machine.install.image; only a genuinely new schematic needs --submit-to-factory.
  • topf apply --dry-run (exit code 2 = changes) shows Talos's own diff against the running config. That diff is textual, so document reordering appears even when the parsed config is identical — Talos still reports it as applicable without a reboot. Anything that was changed in talhelper but never applied to the node surfaces here too; review it, do not let the migration apply it unnoticed.
  • Delete the rendered files afterwards: they contain the cluster secrets in plaintext.
  • Only run topf apply with the user's explicit approval.

Gotchas

installDisk is not a topf.yaml node field

It goes in a patch: machine.install.disk: /dev/nvme0n1 under node/<host>/.

networkInterfaces is not a topf.yaml node field

It goes in a patch under machine.network.interfaces (per-node) or control-plane/ if shared by CP nodes.

schematic / extensions

In TOPF, set schematicId in topf.yaml (or per node). Prefer the @schematic.yaml reference form (see the topf configuration docs) over hand-computing the hash. The schematic YAML is the same shape as talhelper's schematic: block — move it into its own file.

talhelper also accepts controlPlane.schematic / worker.schematic, and a node-level schematic replaces the role one rather than merging. Express that as one schematic.yaml.tpl (schematicId: "@schematic.yaml.tpl") keyed on .Node.Role, or as per-node schematicId entries, and check the IDs with topf schematic-ids:

yaml
customization:
  systemExtensions:
    officialExtensions:
      - siderolabs/crun
{{- if eq .Node.Role "worker" }}
      - siderolabs/intel-ucode
{{- end }}
imageFactory (self-hosted factory)

Set factory: in topf.yaml (or per node). The URL template customization talhelper exposes is not available in TOPF; if the user relied on a non-default template, flag it and ask how to proceed.

allowSchedulingOnMasters / allowSchedulingOnControlPlanes

Becomes cluster.allowSchedulingOnControlPlanes: true in an all/ patch.

additionalApiServerCertSans / additionalMachineCertSans

Becomes cluster.apiServer.certSANs: […] (and/or machine.certSANs) in an all/ patch. Merge with any existing certSANs.

cniConfig, clusterPodNets, clusterSvcNets, domain

Becomes cluster.network.cni, cluster.network.podSubnets, cluster.network.serviceSubnets, cluster.network.dnsDomain in an all/ patch.

patches: entries starting with @./file.yaml (talhelper file includes)

The referenced file is already a standalone patch — copy it into the appropriate patch directory as-is (rename to *.yaml if needed).

inlineManifests[].contents: "@./file.yaml" and skipEnvsubst

talhelper reads the file into contents; TOPF has no include mechanism (no readFile template function). Two options:

  • Wrap the file into a plain patch — no new tooling, and the manifest is visible in topf apply diffs. Go through a temp file: a single environment string is capped at 128 KiB and an Argo CD or Cilium bundle exceeds that.

    bash
    SRC=./argocd-install.yaml yq -n \
      '{"cluster": {"inlineManifests": [{"name": "argo-install", "contents": load_str(strenv(SRC))}]}}' \
      > all/60-argo-install.yaml
  • vals ref+file:// in a plain patch (contents: ref+file://argocd-install.yaml). Needs the vals binary, resolves the path against the working directory, and TOPF redacts vals-resolved values, so the manifest shows as *** redacted *** in diffs.

skipEnvsubst: true has no equivalent and needs none: plain .yaml patches are never templated, so $f, ${TMP} and friends survive untouched. The trap is reversed — a manifest containing {{ must NOT live in a .tpl patch.

Hostname: talhelper set it, TOPF does not

talhelper emitted machine.network.hostname (or a HostnameConfig document on newer Talos) from each node's hostname:. TOPF's host is a display and selection label only. Without a patch, the first topf apply renames every node to talos-xxx-xxx and the render diff shows the hostname document missing:

yaml
# all/05-hostname.yaml.tpl
apiVersion: v1alpha1
kind: HostnameConfig
auto: "off"
hostname: {{ .Node.Host }}

Use machine.network.hostname: {{ .Node.Host }} instead if the baseline render used that form — match whatever talhelper produced.

extraManifests: (deprecated in talhelper)

Treat like patches: — move the referenced files into the patch tree.

overridePatches: true on a node

TOPF always appends node patches after role patches; there's no override flag. If the user relied on override semantics, inspect the role-level patch the node was overriding and decide whether to edit the role patch or put an explicit $patch: delete in the node patch.

filenameTmpl

No equivalent. TOPF doesn't write per-node files to disk by default; it applies directly. Ignore this field.

talosImageURL

In TOPF the installer image comes from factory + schematicId + talosVersion. If the user pinned a specific talosImageURL, translate to the matching factory/schematicId/talosVersion triple, or flag it.

machineSpec

Only used by talhelper for genurl image. TOPF's topf upgrade and image generation use talosVersion, schematicId, platform, secureboot instead. Map what you can; flag the rest.

Verification checklist

Before telling the user they're done, confirm:

  1. topf.yaml exists with clusterName, clusterEndpoint, kubernetesVersion, and a nodes: list where every node has host, ip, and role.
  2. No talhelper-only fields (hostname, ipAddress, controlPlane, installDisk, networkInterfaces, patches, etc.) remain on node entries.
  3. Patch tree exists: at least all/, plus control-plane/ and/or worker/ if there were role-level patches, plus node/<host>/ for any per-node config.
  4. No patch file is a YAML array at the top level (that would be a JSON patch) — all are mappings, or use $patch: delete.
  5. All {{ .… }} template refs in .tpl files resolve against the TOPF context (.Data, .Node.Data, .ClusterName, .Node.Host, .Node.IP, …) — no envsubst ${VAR} and no talhelper .MachineConfig.… left.
  6. secrets.yaml exists (renamed from talsecret.sops.yaml); talenv.sops.yaml is removed or its values folded into data:; sops filestatus reports both topf.yaml and secrets.yaml encrypted; clusterconfig/ is gone, output/ ignored.
  7. A hostname patch exists, and topf schematic-ids reproduces the IDs from the talhelper render.
  8. talhelper genconfig vs topf render differ only in document order and hunks you can name; the rendered files are deleted afterwards.
  9. topf apply --dry-run runs clean and the diff against the live cluster matches expectations.

© postfinance, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 1 other file in skills/migrate-talhelper-to-topf of postfinance/topf.

  • SKILL.md
  • field-mapping.md

Open the folder on GitHubat commit 232db62

Compare with similar skills

Migrate Talhelper To Topf next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Migrate Talhelper To Topf compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Migrate Talhelper To Topf this skillpostfinance/topf175—~5.7kAutomated safety check: PassMIT
Deployment Sopbybren-llc/safe-agentic-workflow423—~966Automated safety check: NotesMIT
K8s Security PoliciesCybereason-Public/owLSM28012 repos~2kAutomated safety check: PassGPL-2.0
Helm Chart ScaffoldingCybereason-Public/owLSM28013 repos~381Automated safety check: PassGPL-2.0
Cc Sdd New Agentgotalab/cc-sdd3.7k—~1.1kAutomated safety check: PassMIT
DBS Business Toolkit Entrydontbesilent2025/dbskill11k—~2kAutomated safety check: PassCustom licence

Similar skills

  • Deployment Sop

    bybren-llc/safe-agentic-workflow

    Deployment workflows, pre-deploy validation, and smoke testing patterns.

    423 GitHub stars~966 tokensUpdated 2 mo ago
    DevOps & CloudAuto-check: notes
  • K8s Security Policies

    Cybereason-Public/owLSM

    Comprehensive guide for implementing NetworkPolicy, PodSecurityPolicy, RBAC, and Pod Security Standards in Kubernetes.

    280 GitHub starsUsed in 12 repos~2k tokens
    Backend & APIsAuto-check passed
  • Helm Chart Scaffolding

    Cybereason-Public/owLSM

    Comprehensive guidance for creating, organizing, and managing Helm charts for packaging and deploying Kubernetes applications.

    280 GitHub starsUsed in 13 repos~381 tokens
    DevOps & CloudAuto-check passed
  • Cc Sdd New Agent

    gotalab/cc-sdd

    Add or extend coding-agent support in cc-sdd by executing the SOP in docs/cc-sdd/sop-new-agent.md end-to-end.

    3.7k GitHub stars~1.1k tokensUpdated 18 days ago
    Business, Finance & HRAuto-check passed
  • DBS Business Toolkit Entry

    dontbesilent2025/dbskill

    Chinese-language entry skill for the dontbesilent business toolkit: onboards new users, orchestrates tasks across sub-skills, runs numbered prompts and lists hidden ones.

    11k GitHub stars~2k tokensUpdated yesterday
    Business, Finance & HRAuto-check passed
  • Kubernetes Architect

    Cybereason-Public/owLSM

    Expert Kubernetes architect specializing in cloud-native infrastructure, advanced GitOps workflows (ArgoCD/Flux), and enterprise container orchestration.

    280 GitHub starsUsed in 9 repos~2.6k tokens
    DevOps & CloudAuto-check passed

More from postfinance/topf

  • Talos V114 Migration

    postfinance/topf

    Migrate a Talos Linux machine configuration from v1.13 (or earlier) v1alpha1 single-document format to the v1.14 multi-document config format introduced in Talos 1.14.

    175 GitHub stars~2.5k tokensUpdated 9 days ago
    Auto-check passed

Works with

Questions about Migrate Talhelper To Topf

What does Migrate Talhelper To Topf do?

Migrate a Talos cluster from talhelper (budimanjojo/talhelper, now archived) to TOPF (postfinance/topf). Migrate Talhelper To Topf is an agent skill from postfinance/topf. Migrate a Talos cluster from talhelper (budimanjojo/talhelper, now archived) to TOPF (postfinance/topf).

When should I use Migrate Talhelper To Topf?

Migrate Talhelper To Topf fits situations like: the user wants to convert a talconfig.yaml-based setup to topf.yaml + patch files; asks how do I move off talhelper; says they want to migrate/switch/transition to topf.

How do I install Migrate Talhelper To Topf in Claude Code?

Run `npx skills add postfinance/topf --skill migrate-talhelper-to-topf -a claude-code`. Or copy the skill folder (skills/migrate-talhelper-to-topf in postfinance/topf) into .claude/skills/migrate-talhelper-to-topf in your project. Claude Code loads it when a task matches its description.

How do I install Migrate Talhelper To Topf in Codex?

Run `npx skills add postfinance/topf --skill migrate-talhelper-to-topf -a codex`. Or copy the skill folder (skills/migrate-talhelper-to-topf in postfinance/topf) into .agents/skills/migrate-talhelper-to-topf in your project. Codex loads it when a task matches its description.

Can I use Migrate Talhelper To Topf in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add postfinance/topf --skill migrate-talhelper-to-topf -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/migrate-talhelper-to-topf, .gemini/skills/migrate-talhelper-to-topf, .github/skills/migrate-talhelper-to-topf and .opencode/skills/migrate-talhelper-to-topf in your project.

What does Migrate Talhelper To Topf need to run?

Going by SKILL.md and its folder, Migrate Talhelper To Topf needs the command-line tools its instructions call (git and yq) and credentials named REPO_TOKEN. Our summary lists: A credential in REPO_TOKEN.

Does Migrate Talhelper To Topf access the network?

SKILL.md names 3 domains. As links in the text: postfinance.github.io, budimanjojo.github.io and github.com. This is read from the text; nothing was executed.

Is Migrate Talhelper To Topf safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Migrate Talhelper To Topf use?

Migrate Talhelper To Topf is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Migrate Talhelper To Topf use?

About 5.7k tokens (SKILL.md is roughly 23k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Migrate Talhelper To Topf?

Skills that share tags, products or a category with Migrate Talhelper To Topf: Deployment Sop (bybren-llc/safe-agentic-workflow, 423 stars), K8s Security Policies (Cybereason-Public/owLSM, 280 stars), Helm Chart Scaffolding (Cybereason-Public/owLSM, 280 stars) and Cc Sdd New Agent (gotalab/cc-sdd, 3.7k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Migrate Talhelper To Topf?

postfinance (a GitHub organization) maintains it in postfinance/topf, which has 175 GitHub stars. The repository holds 2 skills in this directory. The repository was last updated on October 2, 2026.

Source: postfinance/topf on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.