agent-advisor
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseAWS 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.
- = the run directory under
$RUN_DIR(e.g..agent-advisor/), created in Intake..agent-advisor/0630-1430/ - =
$PLUGIN(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${CLAUDE_PLUGIN_ROOT}, so the engine and its data are all inside this skill — scripts at<plugin>/skills/agent-advisor/SKILL.md, runtime profiles at./scripts/..., and decision refs at./references/runtimes/...relative to it. Prefer./references/decision-refs/...; use the relative fallback only when it fails to resolve.${CLAUDE_PLUGIN_ROOT}/skills/agent-advisor/...
- “加载” = 使用 Read 工具读取该文件并遵循其内容。不要总结或跳过。
- =
$RUN_DIR下的运行目录(例如.agent-advisor/),在 Intake 阶段创建。.agent-advisor/0630-1430/ - =
$PLUGIN(已安装 plugin 的根目录)。在 Claude Code 中,此 token 会进行内联替换。如果${CLAUDE_PLUGIN_ROOT}无法解析(某些 Cursor/Codex 构建版本,或路径错误中出现字面量${CLAUDE_PLUGIN_ROOT}字符串),则回退到该 skill 自身目录:本 SKILL.md 位于${CLAUDE_PLUGIN_ROOT},因此引擎及其数据都包含在此 skill 中——脚本位于<plugin>/skills/agent-advisor/SKILL.md,运行时配置位于./scripts/...,决策参考位于./references/runtimes/...,这些路径均相对于该目录。优先使用./references/decision-refs/...;仅当其无法解析时使用相对路径回退方案。${CLAUDE_PLUGIN_ROOT}/skills/agent-advisor/...
Prerequisites
前置条件
- available (for scoring). Check:
uv. If missing, tell the user to install it from the official install guide (https://docs.astral.sh/uv/getting-started/installation/ — e.g.uv --versionorbrew install uv) and stop.pipx install uv
- 可用(用于评分)。检查:
uv。如果缺少该工具,告诉用户按照官方安装指南进行安装(https://docs.astral.sh/uv/getting-started/installation/——例如uv --version或brew install uv),然后停止。pipx install uv
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 :
it defines every frontmatter key, the fragment/assembler model, the gate protocol
( / ), 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,
(without a path) refers to this loaded contract.
references/vendored/dsl/INTERPRETER.mdHANDOFF_OKGATE_FAILINTERPRETER.md阶段、fragment 和 assembler 文件包含一个 YAML frontmatter 块,用于声明每个阶段如何组装——其输入、触发条件、fragments、assembler、产物、gates 和顺序。执行契约是随附的 :它定义了所有 frontmatter 键、fragment/assembler 模型、gate 协议( / )和 interpreter 循环。先加载它(每次运行开始时加载一次),然后执行各阶段文件的正文。本 skill 其他位置提到的 (不带路径)均指这份已加载的契约。
references/vendored/dsl/INTERPRETER.mdHANDOFF_OKGATE_FAILINTERPRETER.mdExecution
执行
This skill is driven by the interpreter loop in (§ The interpreter loop):
it reads , determines the current phase, runs each phase's
/ fragments / / , advances on
via , 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.
INTERPRETER.md.phase-status.json_preconditions_assemble_postconditionsHANDOFF_OK_advances_toCold start (entry phase). With no run under carrying a
, begin at — this skill's entry
phase (the one carrying ). On a warm start, in
is authoritative ( § The interpreter loop).
.agent-advisor/.phase-status.jsonreferences/phases/intake/intake.md_init: truecurrent_phase.phase-status.jsonINTERPRETER.mdSkill bindings ( § Skill bindings). This skill declares:
INTERPRETER.md- Run root: —
.agent-advisor/is this skill's name for the run directory ($RUN_DIR). Intake's own prose performs the.agent-advisor/[MMDD-HHMM]/bootstrap._init - State shape: § State file below (advisor-specific keys such as ,
entry_point,audience,recommendation_reviewed,migration_plan_ctx); the shared state schema is not vendored.migration_plan_unavailable - Run seed (optional): , else
$RUN_DIR/seed.jsonat the run root (schema.agent-advisor/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 ascripts/schemas/seed.jsontie-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 anco_recommendvalue that MUST be recorded inassumed. With no seed, the interactive flow is unchanged.$RUN_DIR/UNANSWERED.md - Resolved statuses: (routing resolved the phase without running it), plus
skippedfornot_applicableonly.migration_plan - Conditional backbone routing: the entry-point routing below. When a routing rule
marks a phase not-applicable, set it and advance through its
skippedin the same state write._advances_to
本 skill 由 (§ The interpreter loop)中的 interpreter 循环驱动:它读取 ,确定当前阶段,运行各阶段的 、fragments、 和 ,在收到 后通过 推进,并验证状态。主干流程(intake → discover → clarify → confirm → design → estimate → generate → migration-plan → poc → complete)以及唯一的侧边分支(add-capabilities)均由阶段文件的 frontmatter 派生——此处不再重复列出。
INTERPRETER.md.phase-status.json_preconditions_assemble_postconditionsHANDOFF_OK_advances_to冷启动(entry phase)。 如果 下没有携带 的运行记录,请从 开始——这是本 skill 的 entry phase(带有 的阶段)。在热启动时,以 中的 为准( § The interpreter loop)。
.agent-advisor/.phase-status.jsonreferences/phases/intake/intake.md_init: true.phase-status.jsoncurrent_phaseINTERPRETER.mdSkill bindings( § Skill bindings)。 本 skill 声明:
INTERPRETER.md- Run root:——
.agent-advisor/是本 skill 对运行目录($RUN_DIR)的称谓。Intake 自身的正文负责执行.agent-advisor/[MMDD-HHMM]/引导初始化。_init - State shape:参见下文的状态文件(advisor 特有的键,如 、
entry_point、audience、recommendation_reviewed、migration_plan_ctx);共享状态 schema 未随附。migration_plan_unavailable - Run seed(可选):,否则使用运行根目录下的
$RUN_DIR/seed.json(schema 为.agent-advisor/seed.json),为非交互式运行提供机器可读答案,包括 Clarify 的各个维度、两个 gate 答案、POC 模式、live-probe 答案以及scripts/schemas/seed.json平局决胜项。它是其所携带每个值的最高优先级来源(clarify.md 第 2.5 步),这使重复运行的评分具有可比性:确定性引擎会获得逐字节一致的输入。seed 未包含的 gate 视为拒绝;seed 未包含的维度依次回退到检测、说明文本,最后采用co_recommend值,且该值必须记录在assumed中。没有 seed 时,交互式流程保持不变。$RUN_DIR/UNANSWERED.md - 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 ( § Skill bindings, § Backbone vs sidebar).
INTERPRETER.mdEntry-point routing:
- → skip Discover; Clarify → Confirm → Design → Estimate → Generate → Gate 2 → POC (any winning runtime). No migration plan (nothing existing to migrate).
build_scratch - → 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).
build_deploy - → 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
migrateskill) → Gate 2 → POC (any winning runtime, when the plan was produced). Declining Gate 1 keeps the classic handoff: pointer togcp-to-awswith/aws-startup-advisor:llm-to-bedrock.handoff-summary.md - → load
add_capabilitiesand follow it (no runtime scoring; writesreferences/phases/add-capabilities/add-capabilities.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.capabilities-recommendation.md - Temporal detection routes into with temporal units pre-seeded (see discover).
migrate
Gate semantics (backbone tail):
- Gate 1 → runs only when
migration_planis done ANDgenerate(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:recommendation_reviewed == true(build_scratch / no migratable workload) ornot_applicable(declined) — and advance.skipped - Gate 2 → runs only when
poc(set when the user answers Gate 2 "yes" — asked in generate.md Step 7 or migration-plan.md Step 6) ANDphases.poc == "in_progress". Any winning runtime (agentcore / ecs / eks / lambda / lambda_microvms) — the POC shape follows the verdict (poc.md Step 3 dispatch onrecommendation_reviewed == true). Gate 2 is only offered whenreferences/decision-refs/poc-shapes.md∈ {completed, skipped, not_applicable} — ormigration_planon build_deploy only (Stage 2 failed/aborted; fallback POC from design.json per migration-plan.md failure handling); for entry pointin_progress, only whenmigrate(the POC implements the plan) OR when the stage resolvedmigration_plan == "completed"withnot_applicable— 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.migration_plan_unavailable == "engine_absent" - Persisting Gate 2 as BEFORE poc.md loads makes the confirmation resumable: if the session breaks between the "yes" and the load, the interpreter re-enters
phases.poc = "in_progress"without re-asking. (A declared deviation frompoc§ The interpreter loop step 5's gate-then-INTERPRETER.mdordering — the user's confirmation is the entry event worth persisting.)in_progress
Phase gate: Do NOT load design.md / estimate.md / generate.md unless
exists and BOTH AND
. Confirm confirms the deployment model, the service
set, and (for a co_recommend tie) the user's — Design and the diagram depend on
its output, so it must not be skipped. If the user asks to skip Clarify or Pass 2,
refuse briefly and run it.
$RUN_DIR/.phase-status.jsonphases.clarify == "completed"phases.confirm == "completed"chosen_runtimeconfirm.json侧边分支的位置和条件主干路由由本文件负责( § Skill bindings、§ Backbone vs sidebar)。
INTERPRETER.md入口点路由:
- → 跳过 Discover;Clarify → Confirm → Design → Estimate → Generate → Gate 2 → POC(任一胜出的运行时)。不制定迁移计划,因为没有现有工作负载需要迁移。
build_scratch - → Discover(如果存在代码)→ Clarify → Confirm → Design → Estimate → Generate → Gate 1 → Migration Plan(如果检测到现有非 AWS AI 工作负载且用户确认) → Gate 2 → POC(任一胜出的运行时)。
build_deploy - → Discover(如果存在代码)→ Clarify → Confirm → Design → Estimate(目标状态运行成本;迁移 TCO 比较仍由 Migration Plan 引擎负责)→ Generate → Gate 1 → Migration Plan(在本 skill 内执行,复用同级
migrateskill) → Gate 2 → POC(制定计划后,任一胜出的运行时)。拒绝 Gate 1 时保留经典交接:指向gcp-to-aws,并附带/aws-startup-advisor:llm-to-bedrock。handoff-summary.md - → 加载
add_capabilities并遵循其中说明(不进行运行时评分;会写入references/phases/add-capabilities/add-capabilities.md)。这是一个自包含分支——不会经过 Clarify / Confirm / Design / Estimate / Generate,因此下方的 phase gate 不适用。capabilities-recommendation.md - 检测到 Temporal 时,会路由至 ,并预先填充 temporal units(参见 discover)。
migrate
Gate 语义(主干尾部):
- Gate 1 → 仅在
migration_plan已完成、generate(由 generate.md 第 5.5 步设置)、入口点属于 {migrate, build_deploy}、本次运行符合迁移条件(generate.md 第 6 步)且用户确认 Gate 1 时运行。否则,将其解析为recommendation_reviewed == true(build_scratch 或未检测到可迁移工作负载)或not_applicable(用户拒绝),然后继续推进。skipped - Gate 2 → 仅在
poc(用户回答 Gate 2 为“yes”时设置——该问题会在 generate.md 第 7 步或 migration-plan.md 第 6 步提出)且phases.poc == "in_progress"时运行。任何胜出的运行时(agentcore / ecs / eks / lambda / lambda_microvms)均可;POC 形态遵循最终结论(poc.md 第 3 步根据recommendation_reviewed == true进行分派)。仅当references/decision-refs/poc-shapes.md∈ {completed, skipped, not_applicable} 时才会提供 Gate 2;或者,仅在migration_plan入口点且build_deploy时提供(Stage 2 失败或中止;根据 migration-plan.md 的失败处理方式,使用 design.json 作为 POC 回退依据)。对于migration_plan == "in_progress"入口点,仅当migrate(POC 实现该计划)时提供;或者,当该阶段解析为migration_plan == "completed"且not_applicable时提供——这是未捆绑迁移引擎的独立部署场景,migration-plan.md 第 -1 步会提供 Gate 2,且 POC 由设计方案提供依据。除上述情况外,迁移 POC 如果没有计划(用户拒绝),便没有可实现的内容。migration_plan_unavailable == "engine_absent" - 在加载 poc.md 之前将 Gate 2 持久化为 ,可使确认操作具备恢复能力:如果会话在用户回答“yes”之后、加载 poc.md 之前中断,interpreter 会重新进入
phases.poc = "in_progress",而不会再次询问。这明确偏离了poc§ The interpreter loop 第 5 步中先执行 gate、再设置INTERPRETER.md的顺序——用户的确认本身是值得持久化的入口事件。in_progress
Phase gate: 除非 已存在,并且 与 同时成立,否则不得加载 design.md / estimate.md / generate.md。Confirm 会确认部署模型、服务集合,以及在 平局时的用户 ;Design 和架构图依赖 confirm.json 的输出,因此不能跳过。如果用户要求跳过 Clarify 或 Pass 2,请简短拒绝并照常执行。
$RUN_DIR/.phase-status.jsonphases.clarify == "completed"phases.confirm == "completed"co_recommendchosen_runtimeState file (.phase-status.json
)
.phase-status.json状态文件(.phase-status.json
)
.phase-status.jsonjson
{
"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: → → , plus . Use read-merge-write:
read before each update, change only the advancing keys, keep prior phases.
pendingin_progresscompletedskippedrecommendation_reviewedtruemigration_planpocmigration_plannot_applicablemigration_plan_ctx{"repo": "<abs path to target repo>", "migration_dir": "<abs path to .migration/<id>/>"}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"
}
}状态值: → → ,此外还有 。使用 read-merge-write:每次更新前先读取,只修改推进所需的键,并保留之前的阶段。
pendingin_progresscompletedskipped顶层布尔值 会由 generate.md 第 5.5 步在用户明确确认已经看到推荐结果时设为 。Gate 1、Gate 2 以及 / 状态都要求该值存在——在该值缺失时,不得询问任何 gate。
recommendation_reviewedtruemigration_planpocmigration_plannot_applicablemigration_plan_ctx{"repo": "<abs path to target repo>", "migration_dir": "<abs path to .migration/<id>/>"}Files
文件
| File | Purpose |
|---|---|
| Vendored DSL execution contract (interpreter loop + gate protocol) |
| Entry point + technical background + open context |
| Lightweight code detection |
| Clarify orchestrator + answer mapping to scoring keys |
| Technical-background question wording |
| Business-background question wording |
| Winner-specific follow-ups |
| Assemble recommendation; Migrate handoff branch |
| Coarse cost magnitude |
| Layered recommendation doc + scaffolding |
| Stage 2: full migration plan via the sibling gcp-to-aws engine |
| Temporal rules: Tier 1/2 tables, adapter, runbooks, commercials (consumed by discover/clarify/design/generate) |
| Per-runtime POC deploy shapes (ECS/EKS/Lambda/MicroVMs/Temporal) |
| Runtime service cards, model defaults, freshness |
| Deterministic verdicts for non-agent workload units (batch/service/io) |
| Runtime registry (read by scoring.py) |
| Deterministic scoring engine |
| Content lock for the Temporal decision reference |
| Content lock for the POC deploy shapes |
| Content lock for workload-classes.md (verdicts table) |
| Unit grouping + pattern matching (workload-class assignment) |
| Collapse-invariant ordering enforcement (A→B implies [B] ⊆ [A] outputs) |
| 文件 | 用途 |
|---|---|
| 随附的 DSL 执行契约(interpreter 循环 + gate 协议) |
| 入口点 + 技术背景 + 开放上下文 |
| 轻量级代码检测 |
| Clarify orchestrator + 答案到评分键的映射 |
| 技术背景用户的问题措辞 |
| 商业背景用户的问题措辞 |
| 针对最终胜出运行时的后续问题 |
| 组装推荐结果;Migrate 交接分支 |
| 粗略成本量级 |
| 分层推荐文档 + 脚手架 |
| Stage 2:通过同级 gcp-to-aws 引擎制定完整迁移计划 |
| Temporal 规则:Tier 1/2 表格、adapter、runbooks、商业条款(由 discover/clarify/design/generate 使用) |
| 各运行时的 POC 部署形态(ECS/EKS/Lambda/MicroVMs/Temporal) |
| 运行时服务卡片、模型默认值、时效性 |
| 非 Agent 工作负载单元的确定性结论(batch/service/io) |
| 运行时注册表(由 scoring.py 读取) |
| 确定性评分引擎 |
| Temporal 决策参考的内容锁定检查 |
| POC 部署形态的内容锁定检查 |
| workload-classes.md 的内容锁定检查(结论表格) |
| 单元分组 + 模式匹配(workload-class 分配) |
| 折叠不变排序约束(A→B 意味着输出中 [B] ⊆ [A]) |
Maturity and readiness contract
成熟度与就绪性契约
Intake persists (, , or ) in run state. Clarify carries it and the readable record into . Current-run verification evidence remains exclusively in the sibling artifact: never copy it into or . Design and Generate may consume that artifact only after validating its schema and matching , and may carry forward verified outcomes but not the raw evidence records. Load 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.
target_maturityprototypeprivate_betaproductionreadinessanswers.json$RUN_DIR/current-run-verifications.jsonseed.jsonanswers.jsonrun_idreferences/decision-refs/maturity-readiness.mdIntake 会将 (、 或 )持久化到运行状态中。Clarify 会将其以及可读的 记录传入 。当前运行的验证证据仅保存在同级的 产物中:绝不将其复制到 seed.json 或 answers.json。Design 和 Generate 只有在验证该产物的 schema 并确认其 匹配后,才可以读取该产物;它们可以继承已验证的结果,但不能携带原始证据记录。只要选择了 target maturity,就应加载 。缓存的易变事实可以辅助 discovery,但只有本次运行中验证过的记录才能将需要验证的约束定为最终结论;否则评分将保持暂定,并附带延后验证要求。
target_maturityprototypeprivate_betaproductionreadinessanswers.json$RUN_DIR/current-run-verifications.jsonrun_idreferences/decision-refs/maturity-readiness.mdContextual 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.
- Read — the offer index (Offer · Summary · Keywords), one row per offer.
../knowledge-base-for-startups/references/offers.md - 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).
- If (and only if) one offer clears the bar, open only its detail file 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
../knowledge-base-for-startups/references/offers/<slug>.mdplus asource_urlattribution param — appendsource(or?source=ide-startupAdvisor-<host>if the url already has a query string), filling&source=...from your execution environment (Claude Code →<host>; AWS Startup Advisor IDE extension / VS Code →claude; Cursor →vscode; Kiro →cursor; Codex →kiro), or the genericcodexwhen 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; seeide-startupAdvisor). 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.../architect-for-startups/references/observability.md
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 for the full rules — but perform the check inline; it must not depend on that skill being loaded.
../contextual-offers-for-startups/SKILL.md开始结束前: 在执行下方的 Contextual offers(最后一步) 之前,你的回答尚未完成。
这是每份最终推荐的强制收尾步骤——完成之后才能认为回答已经结束。请自行内联执行这项优惠检查,不要依赖加载另一个 skill。推荐结果首先基于实际优劣决定;此步骤绝不会改变、重新排序或重新开启推荐,而且只有在建议最终确定后才会查询优惠。
- 读取 ——优惠索引(Offer · Summary · Keywords),每项优惠占一行。
../knowledge-base-for-startups/references/offers.md - 根据创始人本次会话实际提出的内容判断相关性。只有满足以下任一条件时才能展示优惠:指定产品匹配(你按名称推荐了某个特定合作伙伴产品,并且索引中有对应条目);直接意图或组件匹配(某项优惠的 Keywords 直接服务于具体工作负载、最终推荐中的某个组件,或创始人提出的某项需求)。必须保持较高门槛——如果匹配较弱,或是在推断未明确提出的需求,则不要添加任何内容。绝不展示与创始人正在使用或已决定继续使用的产品或提供商相竞争的优惠(例如:已有 auth provider → 不要推荐 Auth0,除非其本来就在使用 Auth0,此时也只能作为其附加项;已有 vector DB,例如 Pinecone → 不要推荐 Qdrant)。
- 只有且仅当某项优惠达到上述门槛时,才打开其唯一的详情文件 ,并准确附加一行简短、可忽略的斜体提示——说明优惠价值并忠实浓缩适用资格(不得遗漏任何适用条件;绝不编造),兑换链接使用规范的
../knowledge-base-for-startups/references/offers/<slug>.md构造,并附加source_url来源参数——如果 URL 已经包含查询字符串,则追加source,否则追加?source=ide-startupAdvisor-<host>;根据执行环境填写&source=ide-startupAdvisor-<host>(Claude Code →<host>;AWS Startup Advisor IDE extension / VS Code →claude;Cursor →vscode;Kiro →cursor;Codex →kiro),如果无法判断,则使用通用的codex。只能追加查询参数,绝不能更改目标 URL。**当某项优惠达到门槛时,必须将这一行优惠提示作为最后一步附加,不得省略。**优惠本身绝不是推荐项——它只应作为 AWS 推荐项下方的一行——并且 references 中的阶段门控同样适用(例如:不得为早期创始人添加 Datadog 行;参见ide-startupAdvisor)。对于单一服务推荐(auth、payments、vector DB、observability 等),如果缺少预算、团队或流量信息不会改变推荐结果,则除非创始人另有说明,否则假定其处于早期阶段(PMF 之前),并在一个回合内完成回答,不提出仅用于确定阶段的问题;这只移除了阶段确认问题,绝不会在给出最终建议或 POC 之前跳过 Intake / Clarify / Confirm 门控。只能展示一项优惠,绝不能展示列表。如果没有优惠达到门槛,则不要附加任何内容,也不要提及优惠、合作伙伴替代方案或未展示优惠的原因。../architect-for-startups/references/observability.md
标准文案:
***<Offer>** has an exclusive offer via AWS Activate — <value>, <eligibility>. [Redeem →](<source_url>?source=ide-startupAdvisor-<host>)*上限与控制规则:每个响应最多展示一项优惠,而且通常不展示;每五条消息最多一项,每个会话最多两项;某项优惠在一个会话中最多展示一次,绝不再次展示已经展示、领取或关闭的优惠;如果创始人已禁用优惠,则完全跳过此步骤。这些每五条消息、每会话及已展示次数的上限都属于会话状态限制;在没有先前优惠记录的新会话中,它们不具有强制约束力,因此不要仅仅因为无法核实会话历史,就压住一个本来符合条件的优惠。有关完整规则,请参阅 ——但必须内联执行检查;该检查不得依赖加载该 skill。
../contextual-offers-for-startups/SKILL.md