CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

heroku-to-aws

Migrate workloads from Heroku to AWS. Triggers on: migrate from Heroku, Heroku to AWS, move off Heroku, migrate Heroku Postgres to RDS, migrate Heroku Redis to ElastiCache, migrate Heroku Kafka to MSK, migrate dynos to Elastic Beanstalk, migrate dynos to Fargate, migrate Heroku Private Space, Heroku to ECS, leave Heroku, what-if workshop, compare migration scenarios, workshop mode. Runs a 6-phase process: discover Heroku resources live via the authenticated Heroku CLI (read-only, consent-gated) and/or from Terraform, Procfile/app.json, and billing exports; Terraform is optional. Then clarify, design, estimate costs, generate artifacts, and collect feedback. Clarify must finish before Design, Estimate, or Generate. An optional post-Estimate what-if workshop reprices region/HA/compute/Graviton scenarios. Do not use for: GCP migrations (see gcp-to-aws), Azure migrations (see azure-to-aws), AWS-to-Heroku reverse migration, general AWS architecture advice without migration intent, or Heroku-to-Heroku refactoring.

Quality

88%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide
SecuritybySnyk

Low

Low-risk findings worth noting

SKILL.md
Quality
Evals
Security

Quality

Content

73%Weight 40%Scale 1-5

Reviews the quality of instructions and guidance provided to agents. Good implementation is clear, handles edge cases, and produces reliable results.

An unusually rigorous orchestration body: workflow sequencing, gating, state management, and validation are exemplary, and nearly every instruction is executable. It is weakened by resume/offer policy duplicated across sections instead of delegated, and by a file map that does not match the shipped bundle (phantom knowledge/ directory, missing vendored/ subtree).

Suggestions

Collapse the four overlapping resume-state sections ('Workshop resume', 'Gate-presented resume', 'Decision gate resume', 'Warm start / explicit what-if') into one short table of state predicates with one-line pointers to the files that own the reset logic (INTERPRETER.md, workshop.md), honoring the body's own 'No duplication' rule.

Regenerate the 'Files in This Skill' tree from the actual bundle: remove the nonexistent knowledge/design/ entries (or ship those sizing JSONs), and add the omitted files — the *-assemble.md fragments, discover-live.md's siblings, estimate-cost-engine.md, and the entire references/vendored/ subtree.

Reduce the 'Contextual offers (final step)' section to the inline-check requirement plus a pointer, moving the full caps/host-param policy into ../contextual-offers-for-startups/SKILL.md, and relocate dated facts ('April 2026' App Runner status, the 404 share landing page) into a dedicated gating/maintenance note so the body stays date-stable.

DimensionReasoningScore

Conciseness

No pedagogical padding (Heroku/Terraform familiarity is assumed), but the body duplicates canonical logic it elsewhere forbids: the overlapping 'Workshop resume (mandatory)', 'Gate-presented resume (mandatory)', 'Decision gate resume (mandatory)' and 'Warm start / explicit what-if' paragraphs restate rules owned by INTERPRETER.md and workshop.md, and the ~50-line 'Files in This Skill' tree plus inline dated facts ('no longer accepting new customers as of April 2026', 'not yet live (404)') add trimmable tokens. Not 4 because the duplication spans multiple sections rather than being minor over-explanation; not 2 because everything written is mission-critical operational detail, not explanation of concepts Claude already knows.

3 / 5

Actionability

Concrete executable guidance throughout: a copy-paste tooling probe ('uv --version 2>/dev/null || echo "UV_MISSING"'), exact state fields and values ('run_mode: "decide_and_execute"', 'pricing_source.status'), exact failure outputs ('Unsupported dyno type: {type}. Cannot map to target compute service.'), and a literal offer-line template. Not 5 because the 'Files in This Skill' tree promises a knowledge/design/ sizing-table directory (dyno-eb-sizing.json, postgres-rds-sizing.json, etc.) that does not exist in the bundle, and ../knowledge-base-for-startups/references/offers.md is absent, so some mapped executable resources cannot be loaded as documented.

4 / 5

Workflow Clarity

The 6-phase sequence is explicit with hard ordering ('Clarify must finish before Design, Estimate, or Generate'), explicit gates and feedback loops ('absent or not_run validation is a blocking GATE_FAIL, not a pass'; 'Generate does not complete until the report validator runs successfully'), an error-conditions table with exact stop messages, and a recovery rule ('If unable to complete a step, stop and report the specific issue. Do not fabricate or infer data.'). Not 4 because validation checkpoints are explicit and hard-gated rather than merely present with minor gaps.

5 / 5

Progressive Disclosure

Strong architecture: frontmatter-driven conditional loading with an '~800 lines' per-phase budget, a 'No duplication' canonical-file rule, 'Progressive depth' orchestrator routing, and prose references that all resolve in the actual bundle (spot-checked references/vendored/dsl/INTERPRETER.md, references/phases/estimate/estimate-assemble.md, scripts/validate-heroku-migration-report.py, and 11 others — all present). Not 5 because the 'Files in This Skill' tree is stale against the real bundle: it lists a nonexistent knowledge/design/ directory, omits ~13 existing files (every *-assemble.md fragment, the entire references/vendored/ subtree, shared/report-decision-core.md), so map-only navigation would fail; not 3 because operative references are clearly signaled and accurate.

4 / 5

Total

16

/

20

Passed

Description

100%Weight 40%Scale 1-5

Based on the skill's description, can an agent find and select it at the right time? Clear, specific descriptions lead to better discovery.

The description is exemplary: concrete third-person capabilities, comprehensive natural trigger phrases, and explicit use-when and do-not-use boundaries that disambiguate sibling migration skills. Every clause carries information; no padding or over-claims.

DimensionReasoningScore

Specificity

Multiple concrete third-person actions with comprehensive domain coverage: 'discover Heroku resources live via the authenticated Heroku CLI (read-only, consent-gated) and/or from Terraform, Procfile/app.json, and billing exports', then 'clarify, design, estimate costs, generate artifacts, and collect feedback', with named service mappings (Heroku Postgres to RDS, Heroku Redis to ElastiCache, Heroku Kafka to MSK, dynos to Elastic Beanstalk/Fargate). Not 4: discovery sources, all six phases, and the workshop repricing are all enumerated — no coverage gaps remain.

5 / 5

Completeness

Explicitly answers both questions: what — 'Runs a 6-phase process: discover… Then clarify, design, estimate costs, generate artifacts, and collect feedback' — and when — 'Triggers on: migrate from Heroku, Heroku to AWS, move off Heroku…', plus explicit exclusions ('Do not use for: GCP migrations (see gcp-to-aws), Azure migrations (see azure-to-aws), AWS-to-Heroku reverse migration…'). Not 4: the 'when' is a concrete trigger list, not merely present-but-could-be-more-explicit.

5 / 5

Trigger Term Quality

Thirteen explicit natural trigger phrases — 'migrate from Heroku', 'move off Heroku', 'leave Heroku', 'Heroku to ECS', 'what-if workshop', 'compare migration scenarios', plus service-specific variants ('migrate Heroku Postgres to RDS', 'migrate dynos to Fargate'). Not 4: synonyms and phrasing variants a user would actually say are comprehensively covered for this domain.

5 / 5

Distinctiveness Conflict Risk

Clear niche (Heroku-to-AWS migration) with distinct service-level triggers and explicit disambiguation against sibling skills: 'Do not use for: GCP migrations (see gcp-to-aws), Azure migrations (see azure-to-aws), AWS-to-Heroku reverse migration, general AWS architecture advice without migration intent, or Heroku-to-Heroku refactoring'. Not 4: the negative scope plus specific triggers leave minimal overlap risk with any neighboring skill.

5 / 5

Total

20

/

20

Passed

Validation

87%

Checks the skill against the spec for correct structure and formatting. All validation checks must pass before discovery and implementation can be scored.

Validation — 14 / 16 Passed

Validation for skill structure

CriteriaDescriptionResult

relative_links

Relative link issues: 1 missing, 2 suspicious

Warning

referenced_paths_exist

Referenced path issues: 16 deeper-than-1-level

Warning

Total

14

/

16

Passed

Repository

aws/agent-toolkit-for-aws

Path

plugins/aws-startup-advisor/skills/heroku-to-aws/SKILL.md

Reviewed

Table of Contents

Is this your skill?

If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.