Skip to content
Back to skills

Formae Rename

ASecurity

Use when the user wants to rename a managed resource, relabel a resource, change a resource's label, or give a discovery-named resource a readable name — a rename on its own never destroys or recreates the cloud object

  • 5 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added October 8, 2026
ai-agents

Works with

  • cli

Security analysis

A100/100

Scanned October 8, 2026

npx -y skills add platform-engineering-labs/formae-mcp --skill formae-rename --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Formae Rename?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Formae Rename
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/platform-engineering-labs-formae-rename/badge)](https://www.skillsdirectory.com/skills/platform-engineering-labs-formae-rename)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: formae-rename
description: "Use when the user wants to rename a managed resource, relabel a resource, change a resource's label, or give a discovery-named resource a readable name — a rename on its own never destroys or recreates the cloud object"
---

# Rename a Resource (`alias`)

Change a resource's `label` without destroying and recreating the cloud object. A rename **on its own** is non-destructive — no cloud operation at all. If you change properties in the same edit, the property change (not the rename) decides the outcome: a mutable change is an in-place update, an immutable (`createOnly`) change forces a destroy-and-recreate `replace`. See "Reading the simulation." The rename happens inline with `apply_forma` — there is no separate rename command.

## How rename works

A `label` is a formae-side identifier; it is never sent to the cloud provider. To rename, set `alias` to the resource's **previous** label and `label` to the **new** one:

```pkl
new vpc.VPC {
  label = "production-vpc"   // the NEW label
  alias = "vpc-008eef..."    // the PREVIOUS label
  cidrBlock = "172.31.0.0/16"
}
```

On apply, the agent matches the existing managed row by `alias` and renames it in place. KSUID and the cloud NativeID are preserved — no destroy/recreate. Cross-resource `.res` references that resolve through the renamed resource's KSUID keep working.

A rename can ride along with a property change in the same apply (one update carries both).

## Workflow

Use `formae-author` to select context and prepare the complete affected stack.
For mode `none`, use its disposable source internally; discuss the old/new
resource labels and actual infrastructure effect, not filenames or alias syntax.
For mode `codebase`, preserve and update the selected maintained project.

1. **Locate the resource in the selected source.** Confirm the current label and the desired new label with the user.
2. **Edit the resource.** Set `alias` to the current label, change `label` to the new name. Leave properties untouched unless the user also asked for a change.
3. **Simulate**: call `apply_forma` with `mode: reconcile` (or `patch`), `simulate: true`.
4. **Check the simulation** against the cases in "Reading the simulation" below. A pure rename is a single `update` with a `change label from "<old>" to "<new>"` line and nothing else. **If the simulation shows a `replace`, stop** — an immutable field changed alongside the rename, and applying will destroy and recreate the cloud object.
5. **Ask for explicit confirmation**, then apply with `simulate: false`.
6. **Monitor** with `get_command_status`:
   - Wait 5 seconds between polls (`sleep 5`). Do NOT poll in a tight loop.
   - Only report state transitions. Summarize what changed rather than dumping JSON.
7. **Report** the renamed resource and command outcome. For a maintained codebase,
   mention the `alias` can stay or be removed (re-applies match the new label first).

## Reading the simulation

The rename itself never destroys the cloud object. What the simulation shows depends on whether you also changed properties in the same edit:

- **Pure rename** — a single `update` whose only change is `change label from "<old>" to "<new>"` (no property patch, no create, no delete). Safe to apply after confirmation.
- **Rename + mutable property change** — an `update` carrying the `change label` line plus a property patch. Still in-place; the cloud object is modified, not recreated. Safe to apply once the user confirms the property change.
- **Rename + immutable (`createOnly`) property change → `replace`** — **DESTRUCTIVE.** The `replace` is driven by the immutable field, not the rename: formae will destroy and recreate the cloud object (losing anything the provider doesn't preserve across recreation). Do NOT treat this as a normal rename outcome. Stop, tell the user plainly that applying will destroy and recreate the resource because of the immutable-field change, and get explicit confirmation — or split the work: do the rename on its own first (non-destructive), then make the property change separately.
- **NOT acceptable — create + delete**: the `alias` doesn't match any existing managed row. Check the alias is the exact current label, same stack, same type. Fix and re-simulate.
- **Apply rejected** with an alias error: see the three pre-flight rejections under "Constraints".

## Constraints

The agent validates `alias` before touching the cloud and rejects:

- **Two resources claim the same row** — one references it by current label, another via `alias`. Remove the duplicate declaration.
- **Dead alias** — `alias` names a label that matches no existing managed (same stack) or unmanaged resource of the same type. Fix or remove it.
- **`alias` equals `label`** — the alias must reference a *different* prior label.

## Renaming while importing

If the resource is still unmanaged (discovered, not yet in a forma), don't use this skill — use `/formae-import` and set `alias` to the discovery-assigned label during the import. The resource is adopted and renamed in one apply.

## Scope

- Renames a resource's `label` only. Moving a resource between stacks or targets is a separate operation.
- Stack rename and target rename are not yet supported.

## Important

- NEVER use `pkl eval` to evaluate forma files — ALWAYS use `formae eval --output-consumer machine`. Forma files use formae-specific extensions that only the formae CLI can resolve, and `--output-consumer machine` ensures parseable output instead of human-formatted text.
- NEVER skip the simulation step
- NEVER apply without user confirmation
- Only set `alias` when the user actually wants a rename — a stray `alias` that matches nothing is rejected at apply time

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.