docs(skills): seller-skill behavioral coverage gaps — 5 patterns from matrix v4 (#1120)#1122
Merged
bokelley merged 5 commits intoMay 1, 2026
Merged
Conversation
…1120) Five patterns surfaced by matrix v4 where LLM-built sales_guaranteed agents failed storyboard scenarios. All fixes are to skills/build-seller-agent/ only (docs-only, no changeset needed). - Pattern 1: add minimum-tool-surface callout after the tools table so LLMs can't omit sync_accounts and cascade-skip 3 storyboard scenarios - Patterns 2+5: add error-code matrix for create_media_buy / update_media_buy — TERMS_REJECTED (unacceptable performance_standards / measurement_terms), PACKAGE_NOT_FOUND (bogus package_id on update); fix misleading prose at line 523 that said "not adcpError" when adcpError is correct - Pattern 3: rewrite updateMediaBuy example to advance pending_creatives → pending_start (start_time future) or active (start_time now/past) when creative_assignments arrive; add key-point #8 - Pattern 4: fix property_list / collection_list field path from pkg.property_list (wrong — no such field on PackageRequest) to pkg.targeting_overlay.property_list (correct per generated types); add storyboard-discrepancy note for adcontextprotocol/adcp upstream fix https://claude.ai/code/session_01LYWfxv9GxrAwXKYVZ1cXGJ
…guard, list_creatives, BUDGET_TOO_LOW - sales-guaranteed (not sales_guaranteed) in the minimum-tool callout — spec uses kebab-case specialism IDs per CLAUDE.md - remove list_creatives from required surface (it is optional per SalesPlatform interface; only required when seller hosts its own creative library) - add BUDGET_TOO_LOW as distinct row in error matrix (below-floor budget maps to BUDGET_TOO_LOW, not INVALID_REQUEST per error taxonomy) - fix paused → active guard to patch.paused === false (absent paused field means no state change, not resume) - fix status cast from concrete union to string (covers all reachable states) - tighten storyboard-discrepancy note path to packages[].property_list https://claude.ai/code/session_01LYWfxv9GxrAwXKYVZ1cXGJ
…-1120-with-changeset
Skills bundle with the npm package (files: ["skills/**/*"]), so the behavioral-coverage updates need a published patch release. Documents the four concrete deltas: minimum tool surface, error-code matrix, update_media_buy state machine, targeting_overlay nesting. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Addressed parallel expert review on PR #1122: - Error-code matrix: added PRODUCT_UNAVAILABLE row (canonical sold-out / no-longer-available rejection per the spec — `schemas/cache/3.0.0/ enums/error-code.json`). Product expert flagged it missing from the guaranteed-rejection paths. - updateMediaBuy state-machine: typed the `status` local + return cast as `MediaBuyStatus` instead of `string`. Imported `MediaBuyStatus` from `@adcp/sdk`. Code reviewer flagged `as string` as type-loose. - sales-guaranteed.md: dropped the "may check the flat path / storyboard is the bug" footnote. Without verified grader logic the hedge reads as a permission slip ("ship broken code, blame the storyboard"). Skill now teaches the spec-correct nested path only — if the grader actually checks a wrong path, that surfaces organically and we file an upstream issue then with evidence. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #1120
Docs-only changes to
skills/build-seller-agent/SKILL.mdandskills/build-seller-agent/specialisms/sales-guaranteed.md. No changeset needed — skills/ markdown is excluded from the changeset requirement per CLAUDE.md.Matrix v4 surfaced 5 behavioral patterns where LLM-built
sales_guaranteedagents failed storyboard scenarios despite framework-correct scaffolding. This PR adds the missing teaching signal in the skill files:sync_accountsomitted): Added asales-guaranteedminimum-tool-surface callout immediately after the tools table. The required surface is 10 tools (note:list_creativesis optional — only required if the seller hosts its own creative library; omitted from the mandatory list perSalesPlatforminterface classification).TERMS_REJECTED,PACKAGE_NOT_FOUNDmissing): Added an error-code matrix covering all spec-defined rejections oncreate_media_buyandupdate_media_buy. Fixed a contradictory comment at the old line 523 that said "notadcpError" whenadcpErroris the correct mechanism throughout.pending_creativesnever exits): Rewrote theupdateMediaBuyexample to advancepending_creatives → pending_start(futurestart_time) oractive(past/now) whencreative_assignmentsarrive. Added key-point Fix Fly.io deployment host/port configuration and add regression tests #8 to the key-points list.property_list/collection_listfield path wrong): Fixedsales-guaranteed.md's example frompkg.property_list(no such field onPackageRequest) topkg.targeting_overlay(correct per generated types —TargetingOverlaycontainsproperty_list/collection_list; neitherPackagenorPackageRequesthas them as direct fields). Added a storyboard-discrepancy note: theinventory_list_targetinggrader may checkpackages[].property_list(flat) rather than the spec-correctpackages[].targeting_overlay.property_list; the upstream storyboard fix belongs atadcontextprotocol/adcp.Nits surfaced (not fixed — see pre-PR review):
What was tested
npm run format:check— ✅ all files pass Prettiernpm run typecheck— pre-existingTS2688/TS5107errors onmainconfirmed prior to this branch; no new errors introducednpx tsx scripts/typecheck-skill-examples.ts— ✅ no new errors (229 known baselined, 33 blocks compiled)Pre-PR review
patch.paused === false),list_creativesremoval correct perSalesPlatforminterface,BUDGET_TOO_LOWaddition correct, storyboard-path nit addressed in noteTERMS_REJECTEDbundling ofmeasurement_terms+performance_standardsconfirmed indocs/llms.txtline 913;BUDGET_TOO_LOWvsINVALID_REQUESTdistinction confirmed per error taxonomy;targeting_overlay.property_listnesting confirmed in generated types;pending_creativestrigger viaupdate_media_buyaligns with storyboard flow atdocs/llms.txtline 916–917Session: https://claude.ai/code/session_01LYWfxv9GxrAwXKYVZ1cXGJ
Generated by Claude Code