skills/ecspresso/SKILL.md
ECS deployment tool - deploy, manage, and troubleshoot ECS services
npx skillsauth add kayac/ecspresso ecspressoInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
ecspresso is a deployment tool for Amazon ECS. You can use it to deploy, manage, and troubleshoot ECS services through configuration files.
Use the docs subcommand to look up how ecspresso works. This command requires no AWS credentials or config file.
# Browse the table of contents to find relevant sections
ecspresso docs --index --json
# Search for a topic by keyword
ecspresso docs --search "fargate" --json
# Read the full documentation
ecspresso docs --json
Always use --json for structured output that is easier to parse.
# Show service status (running tasks, deployments, events)
ecspresso status --config ecspresso.yml
# Show differences between local definitions and running service
ecspresso diff --config ecspresso.yml
# Verify that resources referenced in definitions exist and are valid
ecspresso verify --config ecspresso.yml
# Preview what will change (dry-run)
ecspresso deploy --config ecspresso.yml --dry-run
# Deploy the service
ecspresso deploy --config ecspresso.yml
# Deploy and wait until stable
ecspresso deploy --config ecspresso.yml --wait-until stable
# Rollback to the previous task definition
ecspresso rollback --config ecspresso.yml
# Rollback with dry-run
ecspresso rollback --config ecspresso.yml --dry-run
# Scale to a specific number of tasks
ecspresso scale --config ecspresso.yml --tasks 5
# Run a standalone task using the service's task definition
ecspresso run --config ecspresso.yml
# Run and watch logs
ecspresso run --config ecspresso.yml --watch-container app
# List running tasks as JSON
ecspresso tasks --config ecspresso.yml --output json
# Render resolved task definition (with template variables expanded)
ecspresso render --config ecspresso.yml taskdef
# Render resolved service definition
ecspresso render --config ecspresso.yml servicedef
ecspresso uses a config file (default: ecspresso.yml) that references a task definition file and optionally a service definition file.
ecspresso.yml # Main config: region, cluster, service, file paths
ecs-task-def.json # ECS task definition (JSON, YAML, or Jsonnet)
ecs-service-def.json # ECS service definition (JSON, YAML, or Jsonnet)
Definition files support template syntax: {{ env "VAR" "default" }}, {{ must_env "VAR" }}, and plugin functions like {{ tfstate "resource.attr" }}.
When creating or modifying definition files, prefer the Jsonnet (.jsonnet) format over JSON or YAML. Jsonnet has several advantages:
// and /* */ comments. JSON does not allow comments at all.std.parseInt(), std.parseJson(), etc.{{ }} can cause readability issues. In Jsonnet, use native functions like std.native('env')('VAR', 'default') instead, which are cleaner and can return non-string types.Example Jsonnet config:
// ecspresso.jsonnet
{
region: 'ap-northeast-1',
cluster: 'default',
service: 'myservice',
service_definition: 'ecs-service-def.jsonnet',
task_definition: 'ecs-task-def.jsonnet',
}
Example Jsonnet task definition:
// ecs-task-def.jsonnet
local env = std.native('env');
local must_env = std.native('must_env');
local tfstate = std.native('tfstate');
{
family: 'myservice',
cpu: '256',
memory: '512',
networkMode: 'awsvpc',
requiresCompatibilities: ['FARGATE'],
executionRoleArn: tfstate('aws_iam_role.ecs_execution.arn'),
containerDefinitions: [
{
name: 'app',
image: must_env('APP_IMAGE'),
cpu: 0,
portMappings: [{ containerPort: 8080 }],
environment: [
{ name: 'ENV', value: env('ENV', 'production') },
],
logConfiguration: {
logDriver: 'awslogs',
options: {
'awslogs-group': '/ecs/myservice',
'awslogs-region': 'ap-northeast-1',
'awslogs-stream-prefix': 'app',
},
},
},
],
}
Use ecspresso init --jsonnet to generate Jsonnet files from an existing service. For more details, run ecspresso docs --search "jsonnet" --json.
ecspresso diff before ecspresso deploy to understand what will change.--dry-run on destructive operations (deploy, rollback, delete, scale) to preview the action.verify command checks IAM roles, container images, secrets, and log groups referenced in definitions.ecspresso docs --search "<keyword>" --json to find the relevant documentation section.tools
Use when work should span one or more detached tasks but still behave like one job with a single owner context. TaskFlow is the durable flow substrate under authoring layers like Lobster, ACPX, plugins, or plain code. Keep conditional logic in the caller; use TaskFlow for flow identity, child-task linkage, waiting state, revision-checked mutations, and user-facing emergence.
tools
# Lobster Lobster executes multi-step workflows with approval checkpoints. Use it when: - User wants a repeatable automation (triage, monitor, sync) - Actions need human approval before executing (send, post, delete) - Multiple tool calls should run as one deterministic operation ## When to use Lobster | User intent | Use Lobster? | | ------------------------------------------------------ | --------------------------
tools
# Lobster Lobster executes multi-step workflows with approval checkpoints. Use it when: - User wants a repeatable automation (triage, monitor, sync) - Actions need human approval before executing (send, post, delete) - Multiple tool calls should run as one deterministic operation ## When to use Lobster | User intent | Use Lobster? | | ------------------------------------------------------ | --------------------------
tools
A CLI tool for making authenticated requests to the X (Twitter) API. Use this skill when you need to post tweets, reply, quote, search, read posts, manage followers, send DMs, upload media, or interact with any X API v2 endpoint.