agent-advisor

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

AWS Agent Advisor

AWS Agent Advisor

Helps startups decide how and where to run AI agents on AWS. Deterministic scoring recommends a runtime; the conversation adapts to the user's technical background.
帮助初创公司决定如何在 AWS 上以及在哪里运行 AI Agent。确定性评分会推荐合适的运行时;对话则根据用户的技术背景进行调整。

Definitions

定义

  • "Load" = Read the file with the Read tool and follow it. Do not summarize or skip.
  • $RUN_DIR
    = the run directory under
    .agent-advisor/
    (e.g.
    .agent-advisor/0630-1430/
    ), created in Intake.
  • $PLUGIN
    =
    ${CLAUDE_PLUGIN_ROOT}
    (the installed plugin root). On Claude Code this token substitutes inline. If
    ${CLAUDE_PLUGIN_ROOT}
    does not resolve
    (some Cursor/Codex builds, or a literal
    ${CLAUDE_PLUGIN_ROOT}
    string showing up in a path error), fall back to the skill's own directory: this SKILL.md lives at
    <plugin>/skills/agent-advisor/SKILL.md
    , so the engine and its data are all inside this skill — scripts at
    ./scripts/...
    , runtime profiles at
    ./references/runtimes/...
    , and decision refs at
    ./references/decision-refs/...
    relative to it. Prefer
    ${CLAUDE_PLUGIN_ROOT}/skills/agent-advisor/...
    ; use the relative fallback only when it fails to resolve.
  • “加载” = 使用 Read 工具读取该文件并遵循其内容。不要总结或跳过。
  • $RUN_DIR
    =
    .agent-advisor/
    下的运行目录(例如
    .agent-advisor/0630-1430/
    ),在 Intake 阶段创建。
  • $PLUGIN
    =
    ${CLAUDE_PLUGIN_ROOT}
    (已安装 plugin 的根目录)。在 Claude Code 中,此 token 会进行内联替换。如果
    ${CLAUDE_PLUGIN_ROOT}
    无法解析
    (某些 Cursor/Codex 构建版本,或路径错误中出现字面量
    ${CLAUDE_PLUGIN_ROOT}
    字符串),则回退到该 skill 自身目录:本 SKILL.md 位于
    <plugin>/skills/agent-advisor/SKILL.md
    ,因此引擎及其数据都包含在此 skill 中——脚本位于
    ./scripts/...
    ,运行时配置位于
    ./references/runtimes/...
    ,决策参考位于
    ./references/decision-refs/...
    ,这些路径均相对于该目录。优先使用
    ${CLAUDE_PLUGIN_ROOT}/skills/agent-advisor/...
    ;仅当其无法解析时使用相对路径回退方案。

Prerequisites

前置条件

Phase Structure (frontmatter)

阶段结构(frontmatter)

Phase, fragment, and assembler files carry a YAML frontmatter block that declares how each phase is composed — its inputs, triggers, fragments, assembler, artifacts, gates, and ordering. The execution contract is the vendored
references/vendored/dsl/INTERPRETER.md
: it defines every frontmatter key, the fragment/assembler model, the gate protocol (
HANDOFF_OK
/
GATE_FAIL
), and the interpreter loop. Load it first (once, at the start of a run), then execute each phase file's prose body. Elsewhere in this skill,
INTERPRETER.md
(without a path) refers to this loaded contract.
阶段、fragment 和 assembler 文件包含一个 YAML frontmatter 块,用于声明每个阶段如何组装——其输入、触发条件、fragments、assembler、产物、gates 和顺序。执行契约是随附的
references/vendored/dsl/INTERPRETER.md
:它定义了所有 frontmatter 键、fragment/assembler 模型、gate 协议(
HANDOFF_OK
/
GATE_FAIL
)和 interpreter 循环。先加载它(每次运行开始时加载一次),然后执行各阶段文件的正文。本 skill 其他位置提到的
INTERPRETER.md
(不带路径)均指这份已加载的契约。

Execution

执行

This skill is driven by the interpreter loop in
INTERPRETER.md
(§ The interpreter loop): it reads
.phase-status.json
, determines the current phase, runs each phase's
_preconditions
/ fragments /
_assemble
/
_postconditions
, advances on
HANDOFF_OK
via
_advances_to
, and validates state. The backbone (intake → discover → clarify → confirm → design → estimate → generate → migration-plan → poc → complete) and the one sidebar branch (add-capabilities) are derived from the phase files' frontmatter — they are not restated here.
Cold start (entry phase). With no run under
.agent-advisor/
carrying a
.phase-status.json
, begin at
references/phases/intake/intake.md
— this skill's entry phase (the one carrying
_init: true
). On a warm start,
current_phase
in
.phase-status.json
is authoritative (
INTERPRETER.md
§ The interpreter loop).
Skill bindings (
INTERPRETER.md
§ Skill bindings).
This skill declares:
  • Run root:
    .agent-advisor/
    —
    $RUN_DIR
    is this skill's name for the run directory (
    .agent-advisor/[MMDD-HHMM]/
    ). Intake's own prose performs the
    _init
    bootstrap.
  • State shape: § State file below (advisor-specific keys such as
    entry_point
    ,
    audience
    ,
    recommendation_reviewed
    ,
    migration_plan_ctx
    ,
    migration_plan_unavailable
    ); the shared state schema is not vendored.
  • Run seed (optional):
    $RUN_DIR/seed.json
    , else
    .agent-advisor/seed.json
    at the run root (schema
    scripts/schemas/seed.json
    ) supplies machine-readable answers for a non-interactive run — the Clarify dimensions, the two gate answers, the POC mode, the live-probe answer, and a
    co_recommend
    tie-break. It is the HIGHEST-precedence source for every value it carries (clarify.md Step 2.5), which is what makes a repeated run's score comparable: the deterministic engine gets byte-identical input. A gate the seed omits is declined; a dimension the seed omits falls through to detection, then prose, then an
    assumed
    value that MUST be recorded in
    $RUN_DIR/UNANSWERED.md
    . With no seed, the interactive flow is unchanged.
  • Resolved statuses:
    skipped
    (routing resolved the phase without running it), plus
    not_applicable
    for
    migration_plan
    only.
  • Conditional backbone routing: the entry-point routing below. When a routing rule marks a phase not-applicable, set it
    skipped
    and advance through its
    _advances_to
    in the same state write.
本 skill 由
INTERPRETER.md
(§ The interpreter loop)中的 interpreter 循环驱动:它读取
.phase-status.json
,确定当前阶段,运行各阶段的
_preconditions
、fragments、
_assemble
和
_postconditions
,在收到
HANDOFF_OK
后通过
_advances_to
推进,并验证状态。主干流程(intake → discover → clarify → confirm → design → estimate → generate → migration-plan → poc → complete)以及唯一的侧边分支(add-capabilities)均由阶段文件的 frontmatter 派生——此处不再重复列出。
冷启动(entry phase)。 如果
.agent-advisor/
下没有携带
.phase-status.json
的运行记录,请从
references/phases/intake/intake.md
开始——这是本 skill 的 entry phase(带有
_init: true
的阶段)。在热启动时,以
.phase-status.json
中的
current_phase
为准(
INTERPRETER.md
§ The interpreter loop)。
Skill bindings(
INTERPRETER.md
§ Skill bindings)。
本 skill 声明:
  • Run root:
    .agent-advisor/
    ——
    $RUN_DIR
    是本 skill 对运行目录(
    .agent-advisor/[MMDD-HHMM]/
    )的称谓。Intake 自身的正文负责执行
    _init
    引导初始化。
  • State shape:参见下文的状态文件(advisor 特有的键,如
    entry_point
    、
    audience
    、
    recommendation_reviewed
    、
    migration_plan_ctx
    、
    migration_plan_unavailable
    );共享状态 schema 未随附。
  • Run seed(可选):
    $RUN_DIR/seed.json
    ,否则使用运行根目录下的
    .agent-advisor/seed.json
    (schema 为
    scripts/schemas/seed.json
    ),为非交互式运行提供机器可读答案,包括 Clarify 的各个维度、两个 gate 答案、POC 模式、live-probe 答案以及
    co_recommend
    平局决胜项。它是其所携带每个值的最高优先级来源(clarify.md 第 2.5 步),这使重复运行的评分具有可比性:确定性引擎会获得逐字节一致的输入。seed 未包含的 gate 视为拒绝;seed 未包含的维度依次回退到检测、说明文本,最后采用
    assumed
    值,且该值必须记录在
    $RUN_DIR/UNANSWERED.md
    中。没有 seed 时,交互式流程保持不变。
  • Resolved statuses:
    skipped
    (路由已解决该阶段,无需运行),此外仅
    migration_plan
    可使用
    not_applicable
    。
  • Conditional backbone routing:见下方的入口点路由。当路由规则将某阶段标记为不适用时,在同一次状态写入中将其设为
    skipped
    ,并通过
    _advances_to
    推进。

Routing & gates (orchestration)

路由与 gates(orchestration)

Sidebar placement and conditional backbone routing are orchestration prose owned by this file (
INTERPRETER.md
§ Skill bindings, § Backbone vs sidebar).
Entry-point routing:
  • build_scratch
    → skip Discover; Clarify → Confirm → Design → Estimate → Generate → Gate 2 → POC (any winning runtime). No migration plan (nothing existing to migrate).
  • build_deploy
    → Discover (if code) → Clarify → Confirm → Design → Estimate → Generate → Gate 1 → Migration Plan (if existing non-AWS AI workload detected and user confirms) → Gate 2 → POC (any winning runtime).
  • migrate
    → Discover (if code) → Clarify → Confirm → Design → Estimate (target-state run cost; migration TCO comparison stays with the Migration Plan engine) → Generate → Gate 1 → Migration Plan (in-skill, reusing the sibling
    gcp-to-aws
    skill)
    → Gate 2 → POC (any winning runtime, when the plan was produced). Declining Gate 1 keeps the classic handoff: pointer to
    /aws-startup-advisor:llm-to-bedrock
    with
    handoff-summary.md
    .
  • add_capabilities
    → load
    references/phases/add-capabilities/add-capabilities.md
    and follow it (no runtime scoring; writes
    capabilities-recommendation.md
    ). This is a self-contained branch — it does NOT pass through Clarify / Confirm / Design / Estimate / Generate, so the phase gate below never applies to it.
  • Temporal detection routes into
    migrate
    with temporal units pre-seeded (see discover).
Gate semantics (backbone tail):
  • Gate 1 →
    migration_plan
    runs only when
    generate
    is done AND
    recommendation_reviewed == true
    (generate.md Step 5.5) AND entry point ∈ {migrate, build_deploy} AND the run is migration-eligible (generate.md Step 6) AND the user confirmed Gate 1. Otherwise resolve it:
    not_applicable
    (build_scratch / no migratable workload) or
    skipped
    (declined) — and advance.
  • Gate 2 →
    poc
    runs only when
    phases.poc == "in_progress"
    (set when the user answers Gate 2 "yes" — asked in generate.md Step 7 or migration-plan.md Step 6) AND
    recommendation_reviewed == true
    . Any winning runtime (agentcore / ecs / eks / lambda / lambda_microvms) — the POC shape follows the verdict (poc.md Step 3 dispatch on
    references/decision-refs/poc-shapes.md
    ). Gate 2 is only offered when
    migration_plan
    ∈ {completed, skipped, not_applicable} — or
    in_progress
    on build_deploy only (Stage 2 failed/aborted; fallback POC from design.json per migration-plan.md failure handling); for entry point
    migrate
    , only when
    migration_plan == "completed"
    (the POC implements the plan) OR when the stage resolved
    not_applicable
    with
    migration_plan_unavailable == "engine_absent"
    — a standalone deployment that does not bundle the migration engine, where Gate 2 is offered by migration-plan.md Step -1 and the POC is design-backed. A migrate-POC with no plan for any OTHER reason (the user declined) has nothing to implement.
  • Persisting Gate 2 as
    phases.poc = "in_progress"
    BEFORE poc.md loads makes the confirmation resumable: if the session breaks between the "yes" and the load, the interpreter re-enters
    poc
    without re-asking. (A declared deviation from
    INTERPRETER.md
    § The interpreter loop step 5's gate-then-
    in_progress
    ordering — the user's confirmation is the entry event worth persisting.)
Phase gate: Do NOT load design.md / estimate.md / generate.md unless
$RUN_DIR/.phase-status.json
exists and BOTH
phases.clarify == "completed"
AND
phases.confirm == "completed"
. Confirm confirms the deployment model, the service set, and (for a co_recommend tie) the user's
chosen_runtime
— Design and the diagram depend on its
confirm.json
output, so it must not be skipped. If the user asks to skip Clarify or Pass 2, refuse briefly and run it.
侧边分支的位置和条件主干路由由本文件负责(
INTERPRETER.md
§ Skill bindings、§ Backbone vs sidebar)。
入口点路由:
  • build_scratch
    → 跳过 Discover;Clarify → Confirm → Design → Estimate → Generate → Gate 2 → POC(任一胜出的运行时)。不制定迁移计划,因为没有现有工作负载需要迁移。
  • build_deploy
    → Discover(如果存在代码)→ Clarify → Confirm → Design → Estimate → Generate → Gate 1 → Migration Plan(如果检测到现有非 AWS AI 工作负载且用户确认) → Gate 2 → POC(任一胜出的运行时)。
  • migrate
    → Discover(如果存在代码)→ Clarify → Confirm → Design → Estimate(目标状态运行成本;迁移 TCO 比较仍由 Migration Plan 引擎负责)→ Generate → Gate 1 → Migration Plan(在本 skill 内执行,复用同级
    gcp-to-aws
    skill)
    → Gate 2 → POC(制定计划后,任一胜出的运行时)。拒绝 Gate 1 时保留经典交接:指向
    /aws-startup-advisor:llm-to-bedrock
    ,并附带
    handoff-summary.md
    。
  • add_capabilities
    → 加载
    references/phases/add-capabilities/add-capabilities.md
    并遵循其中说明(不进行运行时评分;会写入
    capabilities-recommendation.md
    )。这是一个自包含分支——不会经过 Clarify / Confirm / Design / Estimate / Generate,因此下方的 phase gate 不适用。
  • 检测到 Temporal 时,会路由至
    migrate
    ,并预先填充 temporal units(参见 discover)。
Gate 语义(主干尾部):
  • Gate 1 →
    migration_plan
    仅在
    generate
    已完成、
    recommendation_reviewed == true
    (由 generate.md 第 5.5 步设置)、入口点属于 {migrate, build_deploy}、本次运行符合迁移条件(generate.md 第 6 步)且用户确认 Gate 1 时运行。否则,将其解析为
    not_applicable
    (build_scratch 或未检测到可迁移工作负载)或
    skipped
    (用户拒绝),然后继续推进。
  • Gate 2 →
    poc
    仅在
    phases.poc == "in_progress"
    (用户回答 Gate 2 为“yes”时设置——该问题会在 generate.md 第 7 步或 migration-plan.md 第 6 步提出)且
    recommendation_reviewed == true
    时运行。任何胜出的运行时(agentcore / ecs / eks / lambda / lambda_microvms)均可;POC 形态遵循最终结论(poc.md 第 3 步根据
    references/decision-refs/poc-shapes.md
    进行分派)。仅当
    migration_plan
    ∈ {completed, skipped, not_applicable} 时才会提供 Gate 2;或者,仅在
    build_deploy
    入口点且
    migration_plan == "in_progress"
    时提供(Stage 2 失败或中止;根据 migration-plan.md 的失败处理方式,使用 design.json 作为 POC 回退依据)。对于
    migrate
    入口点,仅当
    migration_plan == "completed"
    (POC 实现该计划)时提供;或者,当该阶段解析为
    not_applicable
    且
    migration_plan_unavailable == "engine_absent"
    时提供——这是未捆绑迁移引擎的独立部署场景,migration-plan.md 第 -1 步会提供 Gate 2,且 POC 由设计方案提供依据。除上述情况外,迁移 POC 如果没有计划(用户拒绝),便没有可实现的内容。
  • 在加载 poc.md 之前将 Gate 2 持久化为
    phases.poc = "in_progress"
    ,可使确认操作具备恢复能力:如果会话在用户回答“yes”之后、加载 poc.md 之前中断,interpreter 会重新进入
    poc
    ,而不会再次询问。这明确偏离了
    INTERPRETER.md
    § The interpreter loop 第 5 步中先执行 gate、再设置
    in_progress
    的顺序——用户的确认本身是值得持久化的入口事件。
Phase gate: 除非
$RUN_DIR/.phase-status.json
已存在,并且
phases.clarify == "completed"
与
phases.confirm == "completed"
同时成立,否则不得加载 design.md / estimate.md / generate.md。Confirm 会确认部署模型、服务集合,以及在
co_recommend
平局时的用户
chosen_runtime
;Design 和架构图依赖 confirm.json 的输出,因此不能跳过。如果用户要求跳过 Clarify 或 Pass 2,请简短拒绝并照常执行。

State file (
.phase-status.json
)

状态文件(
.phase-status.json
)

json
{
  "run_id": "0630-1430",
  "entry_point": "build_scratch",
  "audience": "technical",
  "current_phase": "clarify",
  "phases": {
    "intake": "completed",
    "discover": "skipped",
    "clarify": "in_progress",
    "confirm": "pending",
    "design": "pending",
    "estimate": "pending",
    "generate": "pending",
    "migration_plan": "pending",
    "poc": "pending"
  }
}
Status values:
pending
→
in_progress
→
completed
, plus
skipped
. Use read-merge-write: read before each update, change only the advancing keys, keep prior phases.
recommendation_reviewed
(top level, boolean) is set to
true
by generate.md Step 5.5 when the user explicitly confirms they have seen the recommendation. Gate 1, Gate 2, and the
migration_plan
/
poc
states all require it — no gate may be asked while it is absent.
migration_plan
additionally uses
not_applicable
(build_scratch, or no migratable workload detected). When Stage 2 runs,
migration_plan_ctx
is added at the top level:
{"repo": "<abs path to target repo>", "migration_dir": "<abs path to .migration/<id>/>"}
— Stage 3 reads gcp-to-aws artifacts ONLY via this recorded path, never by re-globbing.
json
{
  "run_id": "0630-1430",
  "entry_point": "build_scratch",
  "audience": "technical",
  "current_phase": "clarify",
  "phases": {
    "intake": "completed",
    "discover": "skipped",
    "clarify": "in_progress",
    "confirm": "pending",
    "design": "pending",
    "estimate": "pending",
    "generate": "pending",
    "migration_plan": "pending",
    "poc": "pending"
  }
}
状态值:
pending
→
in_progress
→
completed
,此外还有
skipped
。使用 read-merge-write:每次更新前先读取,只修改推进所需的键,并保留之前的阶段。
顶层布尔值
recommendation_reviewed
会由 generate.md 第 5.5 步在用户明确确认已经看到推荐结果时设为
true
。Gate 1、Gate 2 以及
migration_plan
/
poc
状态都要求该值存在——在该值缺失时,不得询问任何 gate。
migration_plan
还会使用
not_applicable
(用于 build_scratch,或未检测到可迁移工作负载)。Stage 2 运行时,会在顶层添加
migration_plan_ctx
:
{"repo": "<abs path to target repo>", "migration_dir": "<abs path to .migration/<id>/>"}
——Stage 3 只通过此记录路径读取 gcp-to-aws 产物,绝不重新进行 glob 扫描。

Files

文件

FilePurpose
references/vendored/dsl/INTERPRETER.md
Vendored DSL execution contract (interpreter loop + gate protocol)
references/phases/intake/intake.md
Entry point + technical background + open context
references/phases/discover/discover.md
Lightweight code detection
references/phases/clarify/clarify.md
Clarify orchestrator + answer mapping to scoring keys
references/phases/clarify/clarify-technical.md
Technical-background question wording
references/phases/clarify/clarify-business.md
Business-background question wording
references/phases/confirm/confirm.md
Winner-specific follow-ups
references/phases/design/design.md
Assemble recommendation; Migrate handoff branch
references/phases/estimate/estimate.md
Coarse cost magnitude
references/phases/generate/generate.md
Layered recommendation doc + scaffolding
references/phases/migration-plan/migration-plan.md
Stage 2: full migration plan via the sibling gcp-to-aws engine
references/decision-refs/temporal.md
Temporal rules: Tier 1/2 tables, adapter, runbooks, commercials (consumed by discover/clarify/design/generate)
references/decision-refs/poc-shapes.md
Per-runtime POC deploy shapes (ECS/EKS/Lambda/MicroVMs/Temporal)
references/decision-refs/*.md
Runtime service cards, model defaults, freshness
references/decision-refs/workload-classes.md
Deterministic verdicts for non-agent workload units (batch/service/io)
references/runtimes/*.json
Runtime registry (read by scoring.py)
scripts/scoring.py
Deterministic scoring engine
scripts/test_temporal_decision_refs.py
Content lock for the Temporal decision reference
scripts/test_poc_shapes.py
Content lock for the POC deploy shapes
scripts/test_workload_classes.py
Content lock for workload-classes.md (verdicts table)
scripts/test_unit_grouping.py
Unit grouping + pattern matching (workload-class assignment)
scripts/test_collapse_invariant.py
Collapse-invariant ordering enforcement (A→B implies [B] ⊆ [A] outputs)
文件用途
references/vendored/dsl/INTERPRETER.md
随附的 DSL 执行契约(interpreter 循环 + gate 协议)
references/phases/intake/intake.md
入口点 + 技术背景 + 开放上下文
references/phases/discover/discover.md
轻量级代码检测
references/phases/clarify/clarify.md
Clarify orchestrator + 答案到评分键的映射
references/phases/clarify/clarify-technical.md
技术背景用户的问题措辞
references/phases/clarify/clarify-business.md
商业背景用户的问题措辞
references/phases/confirm/confirm.md
针对最终胜出运行时的后续问题
references/phases/design/design.md
组装推荐结果;Migrate 交接分支
references/phases/estimate/estimate.md
粗略成本量级
references/phases/generate/generate.md
分层推荐文档 + 脚手架
references/phases/migration-plan/migration-plan.md
Stage 2:通过同级 gcp-to-aws 引擎制定完整迁移计划
references/decision-refs/temporal.md
Temporal 规则:Tier 1/2 表格、adapter、runbooks、商业条款(由 discover/clarify/design/generate 使用)
references/decision-refs/poc-shapes.md
各运行时的 POC 部署形态(ECS/EKS/Lambda/MicroVMs/Temporal)
references/decision-refs/*.md
运行时服务卡片、模型默认值、时效性
references/decision-refs/workload-classes.md
非 Agent 工作负载单元的确定性结论(batch/service/io)
references/runtimes/*.json
运行时注册表(由 scoring.py 读取)
scripts/scoring.py
确定性评分引擎
scripts/test_temporal_decision_refs.py
Temporal 决策参考的内容锁定检查
scripts/test_poc_shapes.py
POC 部署形态的内容锁定检查
scripts/test_workload_classes.py
workload-classes.md 的内容锁定检查(结论表格)
scripts/test_unit_grouping.py
单元分组 + 模式匹配(workload-class 分配)
scripts/test_collapse_invariant.py
折叠不变排序约束(A→B 意味着输出中 [B] ⊆ [A])

Maturity and readiness contract

成熟度与就绪性契约

Intake persists
target_maturity
(
prototype
,
private_beta
, or
production
) in run state. Clarify carries it and the readable
readiness
record into
answers.json
. Current-run verification evidence remains exclusively in the sibling
$RUN_DIR/current-run-verifications.json
artifact: never copy it into
seed.json
or
answers.json
. Design and Generate may consume that artifact only after validating its schema and matching
run_id
, and may carry forward verified outcomes but not the raw evidence records. Load
references/decision-refs/maturity-readiness.md
whenever target maturity is selected. A cached volatile fact may inform discovery, but only a record verified in this run can make a verification-required constraint final; otherwise the score remains provisional with deferred verification requirements.
Intake 会将
target_maturity
(
prototype
、
private_beta
或
production
)持久化到运行状态中。Clarify 会将其以及可读的
readiness
记录传入
answers.json
。当前运行的验证证据仅保存在同级的
$RUN_DIR/current-run-verifications.json
产物中:绝不将其复制到 seed.json 或 answers.json。Design 和 Generate 只有在验证该产物的 schema 并确认其
run_id
匹配后,才可以读取该产物;它们可以继承已验证的结果,但不能携带原始证据记录。只要选择了 target maturity,就应加载
references/decision-refs/maturity-readiness.md
。缓存的易变事实可以辅助 discovery,但只有本次运行中验证过的记录才能将需要验证的约束定为最终结论;否则评分将保持暂定,并附带延后验证要求。

Contextual offers (final step)

情境化优惠(最后一步)

Before you finish: your answer is not complete until you have run the Contextual offers (final step) below.
This is a mandatory closing step of every final recommendation — complete it before you consider your answer done. Run this offer check inline yourself; do not depend on loading another skill. The recommendation is decided on merit first; this step never changes, re-ranks, or re-opens it, and the offer is looked up only after the advice is final.
  1. Read
    ../knowledge-base-for-startups/references/offers.md
    — the offer index (Offer · Summary · Keywords), one row per offer.
  2. Judge relevance against what the founder actually surfaced this session. Surface an offer only if one holds: a named-product match (you recommended a specific partner product by name and it has a row); a direct intent/component match (an offer's Keywords directly serve a concrete workload, a component in the final recommendation, or a need the founder raised). Keep a high bar — if the match is weak, or you would be inferring an unstated need, append nothing. Never surface an offer that competes with a product or provider the founder already uses or decided to keep (e.g. existing auth provider → no Auth0 unless they are already on Auth0, and then only as a credit on it; existing vector DB such as Pinecone → no Qdrant).
  3. If (and only if) one offer clears the bar, open only its detail file
    ../knowledge-base-for-startups/references/offers/<slug>.md
    and append exactly one quiet, dismissible italic line — stating the value and condensing eligibility faithfully from that file (drop no qualifying criterion; never fabricate), with the redeem link built from the canonical
    source_url
    plus a
    source
    attribution param — append
    ?source=ide-startupAdvisor-<host>
    (or
    &source=...
    if the url already has a query string), filling
    <host>
    from your execution environment (Claude Code →
    claude
    ; AWS Startup Advisor IDE extension / VS Code →
    vscode
    ; Cursor →
    cursor
    ; Kiro →
    kiro
    ; Codex →
    codex
    ), or the generic
    ide-startupAdvisor
    when you cannot tell. Only append the query param; never change the destination. When an offer clears the bar you MUST append that single offer line as the last step; do not omit it. The offer is never the pick — only a line under the AWS pick — and stage gates in the references apply (e.g. no Datadog line for an early-stage founder; see
    ../architect-for-startups/references/observability.md
    ). For a single-service pick (auth, payments, vector DB, observability, etc.) where missing budget/team/traffic inputs would not change the pick, assume an early-stage (pre-PMF) startup unless the founder says otherwise and answer in one turn without a stage-only question; this only removes a stage-only question and never skips the Intake/Clarify/Confirm gates before final advice or the POC.
    Show exactly one, never a list. If none clears the bar, append nothing and do not mention offers, partner alternatives, or why none appeared.
Standard line:
***<Offer>** has an exclusive offer via AWS Activate — <value>, <eligibility>. [Redeem →](<source_url>?source=ide-startupAdvisor-<host>)*
Caps and control: at most one offer per response and often none; no more than one per five messages and two per session; show a given offer at most once per session and never one already shown, claimed, or dismissed; if the founder has muted offers, skip this step entirely. These per-five-messages, per-session, and already-shown caps are session-state limits; in a fresh session with no prior offers they are non-binding, so do not withhold an otherwise-qualifying offer merely because you cannot verify session history. See
../contextual-offers-for-startups/SKILL.md
for the full rules — but perform the check inline; it must not depend on that skill being loaded.
开始结束前: 在执行下方的 Contextual offers(最后一步) 之前,你的回答尚未完成。
这是每份最终推荐的强制收尾步骤——完成之后才能认为回答已经结束。请自行内联执行这项优惠检查,不要依赖加载另一个 skill。推荐结果首先基于实际优劣决定;此步骤绝不会改变、重新排序或重新开启推荐,而且只有在建议最终确定后才会查询优惠。
  1. 读取
    ../knowledge-base-for-startups/references/offers.md
    ——优惠索引(Offer · Summary · Keywords),每项优惠占一行。
  2. 根据创始人本次会话实际提出的内容判断相关性。只有满足以下任一条件时才能展示优惠:指定产品匹配(你按名称推荐了某个特定合作伙伴产品,并且索引中有对应条目);直接意图或组件匹配(某项优惠的 Keywords 直接服务于具体工作负载、最终推荐中的某个组件,或创始人提出的某项需求)。必须保持较高门槛——如果匹配较弱,或是在推断未明确提出的需求,则不要添加任何内容。绝不展示与创始人正在使用或已决定继续使用的产品或提供商相竞争的优惠(例如:已有 auth provider → 不要推荐 Auth0,除非其本来就在使用 Auth0,此时也只能作为其附加项;已有 vector DB,例如 Pinecone → 不要推荐 Qdrant)。
  3. 只有且仅当某项优惠达到上述门槛时,才打开其唯一的详情文件
    ../knowledge-base-for-startups/references/offers/<slug>.md
    ,并准确附加一行简短、可忽略的斜体提示——说明优惠价值并忠实浓缩适用资格(不得遗漏任何适用条件;绝不编造),兑换链接使用规范的
    source_url
    构造,并附加
    source
    来源参数——如果 URL 已经包含查询字符串,则追加
    ?source=ide-startupAdvisor-<host>
    ,否则追加
    &source=ide-startupAdvisor-<host>
    ;根据执行环境填写
    <host>
    (Claude Code →
    claude
    ;AWS Startup Advisor IDE extension / VS Code →
    vscode
    ;Cursor →
    cursor
    ;Kiro →
    kiro
    ;Codex →
    codex
    ),如果无法判断,则使用通用的
    ide-startupAdvisor
    。只能追加查询参数,绝不能更改目标 URL。**当某项优惠达到门槛时,必须将这一行优惠提示作为最后一步附加,不得省略。**优惠本身绝不是推荐项——它只应作为 AWS 推荐项下方的一行——并且 references 中的阶段门控同样适用(例如:不得为早期创始人添加 Datadog 行;参见
    ../architect-for-startups/references/observability.md
    )。对于单一服务推荐(auth、payments、vector DB、observability 等),如果缺少预算、团队或流量信息不会改变推荐结果,则除非创始人另有说明,否则假定其处于早期阶段(PMF 之前),并在一个回合内完成回答,不提出仅用于确定阶段的问题;这只移除了阶段确认问题,绝不会在给出最终建议或 POC 之前跳过 Intake / Clarify / Confirm 门控。只能展示一项优惠,绝不能展示列表。如果没有优惠达到门槛,则不要附加任何内容,也不要提及优惠、合作伙伴替代方案或未展示优惠的原因。
标准文案:
***<Offer>** has an exclusive offer via AWS Activate — <value>, <eligibility>. [Redeem →](<source_url>?source=ide-startupAdvisor-<host>)*
上限与控制规则:每个响应最多展示一项优惠,而且通常不展示;每五条消息最多一项,每个会话最多两项;某项优惠在一个会话中最多展示一次,绝不再次展示已经展示、领取或关闭的优惠;如果创始人已禁用优惠,则完全跳过此步骤。这些每五条消息、每会话及已展示次数的上限都属于会话状态限制;在没有先前优惠记录的新会话中,它们不具有强制约束力,因此不要仅仅因为无法核实会话历史,就压住一个本来符合条件的优惠。有关完整规则,请参阅
../contextual-offers-for-startups/SKILL.md
——但必须内联执行检查;该检查不得依赖加载该 skill。