← ClaudeAtlas

deploy-capabilitylisted

Use when a product needs a live deploy surface that does not exist yet - "deploy this" or "get it live" on a greenfield product with no platform project, repo connection, domain, or per-environment config - when /release-promotion finds no recorded deploy rules and /guardrails-install has nothing to observe because nothing was ever created, or when a feature needs a product service provisioned (a database, an auth provider, transactional email, a domain). The deploy-surface sibling of /browser-capability - the same source-a-capability-on-a-gap practice.
yoelgal/agent-tools · ★ 1 · AI & Automation · score 65
Install: claude install-skill yoelgal/agent-tools
# Creating the deploy surface so a release has somewhere to land Every deployment-adjacent skill reads a deploy surface; none of them creates one. `/guardrails-install` records only what it can observe, and `/release-promotion` with no recorded rules settles `NEEDS_INPUT` naming the recorder - which, on a greenfield product, observes nothing and sends the question straight back. The circle breaks only when someone creates the surface: a platform project, the repo connected to it, a domain answering, the environment config uploaded. That is a capability gap, not a missing line of code, and it fills the way `/browser-capability` fills a missing browser: compose what the host already wires, walk the operator through what only they can create, source a tool for the rest. One distinction runs first. `deploy-surface: none` is the correct record for a library or a CLI - a deliberate no, settled once. This skill is for the other case: a product that should deploy and has no surface yet. Unsure which this repo is? That is the operator's question, asked before anything is created - creating a surface nobody wanted is as wrong as recording `none` on a product that ships. Read `.better-dev/overrides.md` first. A repo may already pin its platform, forbid new infrastructure, or name the team that owns provisioning - honor that before any rung below. ## 1. Name the gap as an observable check Write the missing surface as the probe it has to pass: "the app answers 200 at a public URL," "