feat(instantsearch): add Vue and JS phase-2 stubs, bump to 1.1 (4/4)#25
Merged
NatanTechofNY merged 6 commits intoJun 10, 2026
Conversation
Adds the canonical widget tree (SearchBox, Configure, Hits, Pagination, Stats, NoResultsBoundary), the refinements catalog (RefinementList, HierarchicalMenu, RangeInput, ToggleRefinement, CurrentRefinements, ClearRefinements), sort via SortBy with replicas, and multi-index guidance. The pattern reference points reviewers at types and live docs for prop-level details rather than baking them in. Adds evals 6 and 7 covering the full results page and a searchable refinement list with active-filter chips. Stacks on feat/instantsearch-source-of-truth.
2c2d6ce to
0a537bb
Compare
6 tasks
Member
|
This stacks on #24 (not parallel to it) with three upstream commits in the branch. The "evals.json has 6 prompts" line is also stale, it's at 10 with #23 and #24 included. Worth correcting so we know what to look at. Also, no evals for Vue/JS autocomplete. The recommendation flips from React (autocomplete-js is the right path here, an anti-pattern there) which is exactly the kind of behavior worth a quick eval. |
0a537bb to
bc5569f
Compare
6 tasks
bc5569f to
9a675de
Compare
Three duplications tightened, all per Sarah's review:
- features.md: collapsed five "read .d.ts" / "wire props from types"
mentions down to a single intro reference to the Source-of-truth
check. The intro on line 5 is the canonical pointer; the rest are
rephrased to drop the rule restatement.
- features.md: removed "Do not combine both" from the
Pagination-vs-InfiniteHits prose. The dedicated entry already lives
in anti-patterns.md; the checklist's "(or InfiniteHits, not both)"
is enough of a reminder.
- anti-patterns.md: removed the "Forgetting routing={true}" and
"Forgetting insights={true}" rows. Both are already covered by
PR #22's Always rules and the features checklist; the anti-patterns
rows were the redundant copy.
Forward-references to ../custom-widgets.md and ../ssr.md (PR #24)
left in place per Sarah's "non-blocking, fine if 2 -> 3 ships in
order" note.
…nces Adds three library-level references that close the gaps the Source-of-truth check on its own can't fully bridge: - custom-widgets.md: when widget + classNames suffices vs when to reach for useConnector / useXxx, the renderState contract, common pitfalls (stale state, re-render storms, lost A11y). - middleware.md: contract (subscribe / started / unsubscribe / onStateChange), legitimate uses, and what middleware should NOT be used for (URL sync, default refinements). - ssr.md: App Router via InstantSearchNext (no extra helpers needed) vs Pages Router / non-Next React via getServerState + InstantSearchSSRProvider, with explicit guidance against mixing them. Adds evals 8 (Pages Router SSR) and 9 (custom chip widget via useRefinementList). Stacks on feat/instantsearch-source-of-truth.
Mirrors the React library-level structure (technology-rules, anti-patterns, styling, glossary, source-of-truth) for vue-instantsearch and instantsearch.js, plus autocomplete coverage. Phase 2 deliberately does NOT mirror search-results-page / custom-widgets / middleware / SSR yet; those land in a future phase if needed. Note: the recommended autocomplete path differs from React. For Vue and vanilla JS the maintained path is @algolia/autocomplete-js (which is an anti-pattern in React because EXPERIMENTAL_Autocomplete exists). The stubs flip the rule honestly per library. Updates SKILL.md tables to fill the Vue and JS column cells and bumps the skill version from 1.0 to 1.1. Stacks on feat/instantsearch-source-of-truth.
8eb583d to
9b69b3d
Compare
9a675de to
2fad057
Compare
Sarah's PR #25 review flagged the missing Vue/JS autocomplete coverage: the recommendation flips from React (autocomplete-js is an anti-pattern) to Vue/JS (autocomplete-js is the recommended path), and that inversion deserves direct test coverage. - Eval 11 (Vue 3): user asks for autocomplete on a vue-instantsearch project. Expects @algolia/autocomplete-js mounted from a Vue component (onMounted/onBeforeUnmount), NOT an <ais-search-box> or invented vue-instantsearch autocomplete widget. Asserts the agent does not treat autocomplete-js as an anti-pattern in this context. - Eval 12 (vanilla JS): same intent for an instantsearch.js project. Expects @algolia/autocomplete-js, not the searchBox widget repurposed for autocomplete behavior. Both evals also assert v5 client shape and the source-of-truth check against live docs / installed types.
Member
Author
|
@sarahdayan addressed all three:
|
Base automatically changed from
feat/instantsearch-react-advanced
to
feat/instantsearch-source-of-truth
June 10, 2026 18:37
…arch-vue-js-stubs
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.
What does this skill do?
Mirrors the React library-level reference structure to Vue and vanilla JS. Phase 2 deliberately keeps these as honest stubs: library-level rules + autocomplete only. Pattern-level coverage (search results page, custom widgets, middleware, SSR) for Vue/JS lands in a future phase if/when there's demand. Bumps skill version 1.0 → 1.1.
This is part 4 of 4. Stacks on #24 (which stacks on #23, which stacks on #22). Review #22, #23, and #24 first; this PR's diff now contains only its own changes.
What's in this PR
references/vue/—technology-rules.md,anti-patterns.md,styling.md,glossary.md,source-of-truth.md,autocomplete/{features,styling,anti-patterns}.md.references/js/— same structure.SKILL.md: fills Vue/JS column cells in the source-of-truth table, the autocomplete row of the patterns table, and the library-level references table. Replaces the "React only" coverage note. Bumps version to 1.1.evals/evals.json: adds eval 11 (Vue autocomplete) and eval 12 (JS autocomplete) — both directly testing the recommendation flip Sarah called out:@algolia/autocomplete-jsis the recommended path for Vue and JS, not an anti-pattern as it is on React.Notable: the autocomplete story differs by library
For React,
@algolia/autocomplete-jsis an anti-pattern (React InstantSearch shipsEXPERIMENTAL_Autocomplete). For Vue and vanilla JS,@algolia/autocomplete-jsis the recommended path because no equivalent ships invue-instantsearch/instantsearch.js. The Vue and JS autocomplete docs flip this honestly, and evals 11 and 12 enforce that the agent picks the right side of the flip per library.Reviewer tip
Most files in the Vue and JS folders are parallel mirrors of each other (with framework-appropriate adjustments — kebab-case Vue components,
<script setup>examples, vs. JS factory imports). Reading one Vue file plus its JS counterpart will let you trust the rest.Checklist
python3 scripts/validate_skills.py .passes (31/31)evals/evals.jsonhas 12 prompts after this PR (10 from earlier PRs, plus 11 Vue and 12 JS here)skills/