Flex unbrick
Portable Agent Skills for non-RAPP systems and launchpads for single-file RAPP agents
npx -y skills add kody-w/rapp-skills --skill flex-unbrickAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- 20 days oldThe repository was created 20 days ago. New is not bad, but a brand new repository carrying a familiar-sounding name is the shape a typosquat arrives in, and there has been no time for anyone else to find a problem with it.
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Unbrick an Azure Flex Consumption function app after a tenant security-policy sweep silently re-disables storage public network access (app 403/503s, PNA=Disabled). Runs the proven 2026-07-09 runbook — PNA check, SecurityControl=Ignore tag, re-enable PNA, full stop/start, bounded health poll.
SKILL.md
10.7 KB, as published. Nobody here has run it
flex-unbrick — the storage-PNA outage runbook as one verb
Root cause: a management-group policy silently flips the function app's storage
account to publicNetworkAccess: Disabled, which kills Flex Consumption apps.
The fix sequence was re-derived by hand once (169 az calls, 573-minute session) —
this skill replays it.
1 — Diagnose (read-only, always first)
bash ~/.claude/skills/flex-unbrick/scripts/unbrick.sh check <app> <rg> <storage>
Prints subscription, storage PNA state, app state, live HTTPS probe, and a
verdict line: HEALTHY / DEGRADED (classic PNA outage — fix applies) /
DOWN-OTHER-CAUSE (probe failed but PNA already Enabled — fix will NOT help).
The live probe is the truth: PNA=Disabled with a healthy probe is the
private-endpoint deployment shape, NOT an outage. If HEALTHY, stop — do not fix.
2 — Fix (mutating; only on a DEGRADED verdict)
bash ~/.claude/skills/flex-unbrick/scripts/unbrick.sh fix <app> <rg> <storage>
Order matters and is encoded in the script:
SecurityControl=Ignoretag on the storage account (merge, keeps other tags) — without it the policy re-disables PNA again within hours.--public-network-access Enabledon the storage account.- FULL
az functionapp stopthenstart—restartdoes NOT re-bind Flex storage. - Bounded health poll (20 × 15 s). HTTP 401/404 counts as recovered — an auth layer may 404 without its client-id env var; the metal being up is what we're testing.
3 — Aftercare
- If you have alert rules wired on the app (health check, app-down, storage-config-change), check them: a storage-config-change alert firing timestamps the policy sweep.
- If the app is still down after the poll: the problem is NOT this policy — go read Function App logs instead of re-running fix.
Don'ts
- Don't run
fixwithout acheckfirst, and never on a HEALTHY verdict. - Don't substitute
az functionapp restartfor stop/start. - Don't remove the
SecurityControl=Ignoretag "to clean up" — it is the thing keeping the app alive.
Parameters
The typed contract this capability answers to (JSON Schema — the deterministic layer):
{
"properties": {
"app": {
"description": "Derived from `<app>` used in the documented command at line 11.",
"type": "string"
},
"rg": {
"description": "Derived from `<rg>` used in the documented command at line 11.",
"type": "string"
},
"storage": {
"description": "Derived from `<storage>` used in the documented command at line 11.",
"type": "string"
}
},
"required": [],
"type": "object"
}
<!-- toaster:generated:end -->
<!-- toaster:generated:begin -->
Deterministic steps
Lifted verbatim from the procedure above by toaster.py toast. Run them in order, substituting the typed parameters; do not paraphrase:
az functionapp stop
az functionapp restart
bash ~/.claude/skills/flex-unbrick/scripts/unbrick.sh check <app> <rg> <storage>
bash ~/.claude/skills/flex-unbrick/scripts/unbrick.sh fix <app> <rg> <storage>
<!-- toaster:generated:end -->
<!-- rci-capsule:v1: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 -->