Repository navigation
docs(skills): align the data-integration guide with the real QueryParams, SortConfig and QueryResult contracts - #6737
Merged
Conversation
…SortConfig/QueryResult contracts
os-zhuang
approved these changes
Aug 29, 2026
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.
Fixes #6006
Fixes #5947
One published-skill correction, folded because both cards land on the same file:
skills/objectui/guides/data-integration.md. Every corrected snippet was checked verbatim against the real declarations, not against the cards' quoted line numbers (which had drifted —SortConfigis atpackages/types/src/objectql.ts:311, not:212).Authored in session https://claude.ai/code/session_01MnijPVVDakqK2J335JoJtq
Size — the 2026-08-21 published-skills ruling
Whole published package, all 18 markdown files under
skills/: 5673 before, 5676 after. This is a correction, not an expansion: three of the four defect blocks are same-line-count rewrites, and the +3 is one line per corrected interface (the real declarations carry one field more than the sketches did) plus one bullet in the existing mistakes list.Defect 1 — query options were spelled without the
$prefix (#6006)The real
QueryParams(packages/types/src/data.ts:43) ends in an index signature, so an unprefixed key type-checks, is never read, and is dropped in silence. A dropped page size is an unbounded read.filter$filtersort$orderbylimit$topoffset$skipfields$selectexpand$expandCorrected in three places: the interface sketch, the worked
dataSource.findexample (which passedfilter/sort/limit— all three dropped), and theRestApiAdaptersample, which readparams?.filter/params?.limit/params?.offset/params?.sortoff a realQueryParamsand therefore read nothing. The adapter's outgoing query-string names are unchanged — those are its own REST wire format, and translating is the adapter's job.Defect 2 — the sort direction key (#6006)
SortConfig(packages/types/src/objectql.ts:311) spells the keyorder, andconvertSortToQueryParams(packages/core/src/utils/sort-query.ts) folds it asentry.order === 'desc' ? 'desc' : 'asc'— so an entry spelleddirectionyields ascending, always, with nothing thrown.sort: [{ field: 'name', direction: 'asc' }]$orderby: [{ field: 'name', order: 'asc' }]Defect 3 — the
QueryResultsketch declared a shape that does not exist (#5947)Root cause of the bad usage, so it is fixed first. The real
QueryResult(packages/types/src/data.ts:139) has a requireddata; the guide declaredrecords?andpageNumber?and omitteddataentirely.records?data(required)pageNumber?page?metadata?The example's
return result.records;is nowreturn result.data;, and theRestApiAdapterreturn isdata:rather thanrecords:(its localconst datais renamedbodyso the returned key is unambiguous).Sweep
Swept the whole file for all three defect classes; the counts above are the complete population. The one surviving
recordstoken isdataset.recordsin the MSW seeding loop, which is app-manifest data and unrelated, and the one survivingrecordsmention in the corrected sketch is the deliberate "NOT namedrecords" callout. No prose outside the four blocks was rewritten, and no sibling guide was touched.Gates, at 29e9685
check:skills-pathscheck-skills-paths: OK (93/94 stated path(s) resolve across 18 guide file(s); 1 baselined).check:control-bytescheck-control-bytes: OK (scanned 5593 tracked text file(s); skipped 85 binary).check:doc-fencescheck:doc-fences — every TypeScript block in 223 document(s) is fenced ts/tsx/typescript ...No source of a released package changed in this range, so no changeset is owed.Exit codes were captured by redirecting first, never through a pipe. The union was re-run after the final commit and reports that tree.
No changeset is owed and none is added — the gate's own verdict, not a judgement call:
skills/is outside thepackages/appsroots the release covers. Noskip-changesetlabel is applied; in this repo that label is a phantom that gates nothing.The coverage gap this pair is an instance of — already on file as #5465
check-doc-snippet-types.mjsis the gate that compiles TypeScript in docs, but its scan surface iscontent/docsplus the package READMEs. Measured by calling its ownlistDocuments(): 223 documents in surface, 0 underskills/, and this file absent. So no gate compiles the snippets in these published skills, which is how both defects shipped and why this PR's snippets were checked by hand against the declarations instead. That gap is already filed and dispatched as #5465, so no duplicate was opened, and it is not widened here.Generated by Claude Code