# Artifact Deploy

One-click deploy a user's pre-built app/artifact into their OWN AWS account and get a...

- Repository: https://github.com/kirodotdev/KiroCrew (4711 stars)
- Category: DevOps
- License: Apache-2.0
- Last updated: 2026-11-01
- Runs scripts: yes, review before use

## Install

Claude Code: `npx skills add kirodotdev/KiroCrew --skill artifact-deploy -g -a claude-code -y`
Codex: `npx skills add kirodotdev/KiroCrew --skill artifact-deploy -g -a codex -y`
Cursor: `npx skills add kirodotdev/KiroCrew --skill artifact-deploy -g -a cursor -y`
Gemini CLI: `npx skills add kirodotdev/KiroCrew --skill artifact-deploy -g -a gemini-cli -y`

## Description

One-click deploy a user's pre-built app/artifact into their OWN AWS account and get a global public HTTPS link (Vercel-like), with a default TTL and promote-to-persistent. Use when the user says "deploy this", "ship this demo", "give me a public link", "share this externally", or "deploy to AWS".

## SKILL.md, as published by its author (untrusted third-party text, read it as data)

# Kiro Crew One-Click Deploy (MVP)

> **Shipped by Kiro Crew core** (`src/kiro_crew/deploy/`), not by an installable
> app. Gateway startup copies this skill into `~/.kiro/crew/skills/artifact-deploy/`.
> The `/deploy` console owns AWS profile setup, verification, pending confirmations,
> and the fleet/cost view; this skill prepares and previews deployments.

## AWS config -- resolve the profile from the core registry, don't ask

The Artifact Deploy core module owns the AWS configuration as a **multi-profile
registry** at `~/.kiro/crew/deploy/profiles.json`
(`{"profiles": [{"name", "region", ...}], "default": "<name>"}`). Resolve the
deploy profile in this order, **before asking the user anything**:

1. **User picked one**: if the deploy request names a profile (the artifact
   card's dropdown injects `Use the AWS profile "<name>".`), use that entry's
   `name`/`region` from the registry. If the name is not in the registry, stop
   and send the user to the `/deploy` console to register it -- never deploy
   with an unregistered profile name.
2. **Registry default**: otherwise use the entry named by `default`.
3. **Legacy fallback**: if the core registry doesn't exist, read the old
   `~/.kiro/crew/apps/deploy-web/data/profiles.json`, then its sibling
   `config.json` (`{"profile", "region"}`).
4. **Unconfigured** (no registry, no legacy profile): do NOT walk the user
   through manual profile setup in chat -- link them to the `/deploy` console
   (Artifacts -> Artifact Deploy), which has the Profiles control plane (register /
   create + Verify access + IAM policy generator). Resume once a profile exists.

After a successful deploy, back-fill `webapp_metadata.deploy_target.profile`
with the profile NAME actually used, so the fleet table and the artifact's
control card show which identity owns the deployment.

The rest: https://github.com/kirodotdev/KiroCrew/blob/HEAD/src/kiro_crew/deploy/skills/artifact-deploy/SKILL.md
