From 0b12d409b14af5fc954a0d84f9af286962396ae5 Mon Sep 17 00:00:00 2001 From: viclafouch Date: Fri, 2 Oct 2026 09:39:56 +0200 Subject: [PATCH 1/2] fix: match nested review sources before the node_modules exclude --- .changeset/review-source-pathspec-order.md | 5 +++++ packages/intent/src/review/review.ts | 3 ++- packages/intent/tests/review.test.ts | 8 ++++++++ 3 files changed, 15 insertions(+), 1 deletion(-) create mode 100644 .changeset/review-source-pathspec-order.md diff --git a/.changeset/review-source-pathspec-order.md b/.changeset/review-source-pathspec-order.md new file mode 100644 index 0000000..13753ac --- /dev/null +++ b/.changeset/review-source-pathspec-order.md @@ -0,0 +1,5 @@ +--- +'@tanstack/intent': patch +--- + +Match a skill source in `review` when its path is nested. Git dropped the matches when the source came before the `node_modules` exclude, so a valid source reported no available files. diff --git a/packages/intent/src/review/review.ts b/packages/intent/src/review/review.ts index 77c9b0d..e83a4dc 100644 --- a/packages/intent/src/review/review.ts +++ b/packages/intent/src/review/review.ts @@ -404,8 +404,9 @@ export function createReview(cwd: string, baseRef?: string): ReviewReport { '--exclude-standard', '-z', '--', - ...patterns, + // Git drops matches when one include precedes the exclude (#301). dependencyExclude, + ...patterns, ]), ) const diff = (patterns: Array = [], from = base) => diff --git a/packages/intent/tests/review.test.ts b/packages/intent/tests/review.test.ts index 7741909..5abb058 100644 --- a/packages/intent/tests/review.test.ts +++ b/packages/intent/tests/review.test.ts @@ -229,6 +229,14 @@ it('excludes installed dependencies even without a gitignore entry', () => { ]) }) +it('matches a single nested source while excluding installed dependencies', () => { + write('packages/client/src/index.ts', 'export const client = true\n') + skill(['acme/library:packages/client/src/**']) + git('add', '.') + git('commit', '-qm', 'nested source') + expect(createReview(root).items[0]?.problems).toEqual([]) +}) + it('includes staged, unstaged, untracked and deleted paths and uses Git glob semantics', () => { accept() write('src/nested/more.ts', 'new source\n') From f8932af9d539039fc57c09e85be9019b85ee9533 Mon Sep 17 00:00:00 2001 From: viclafouch Date: Fri, 2 Oct 2026 09:39:56 +0200 Subject: [PATCH 2/2] test: assert the nested source snapshot excludes installed dependencies --- packages/intent/src/review/review.ts | 1 - packages/intent/tests/review.test.ts | 8 +++++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/packages/intent/src/review/review.ts b/packages/intent/src/review/review.ts index e83a4dc..d442134 100644 --- a/packages/intent/src/review/review.ts +++ b/packages/intent/src/review/review.ts @@ -404,7 +404,6 @@ export function createReview(cwd: string, baseRef?: string): ReviewReport { '--exclude-standard', '-z', '--', - // Git drops matches when one include precedes the exclude (#301). dependencyExclude, ...patterns, ]), diff --git a/packages/intent/tests/review.test.ts b/packages/intent/tests/review.test.ts index 5abb058..b44bf0a 100644 --- a/packages/intent/tests/review.test.ts +++ b/packages/intent/tests/review.test.ts @@ -231,10 +231,16 @@ it('excludes installed dependencies even without a gitignore entry', () => { it('matches a single nested source while excluding installed dependencies', () => { write('packages/client/src/index.ts', 'export const client = true\n') + write('packages/client/src/node_modules/installed/index.ts', 'dependency\n') skill(['acme/library:packages/client/src/**']) git('add', '.') git('commit', '-qm', 'nested source') - expect(createReview(root).items[0]?.problems).toEqual([]) + const [item] = createReview(root).items + expect(item?.problems).toEqual([]) + expect(Object.keys(item?.snapshot ?? {})).toEqual([ + 'packages/client/src/index.ts', + 'skills/request/SKILL.md', + ]) }) it('includes staged, unstaged, untracked and deleted paths and uses Git glob semantics', () => {