promote: 21 memory updates from 2026-05-22 scan - #10
Closed
gyulsbox wants to merge 1 commit into
Closed
Conversation
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.
Summary
promote-clidetected 21 repeated AI review pattern(s) across 62 PR(s) over the last 90 days and is proposing the corresponding memory updates. See Memory promotion details below for evidence and reasoning per candidate.Why
Repeated review comments often encode implicit conventions that future agents and contributors should already know. This PR promotes 21 such pattern(s) into durable repository memory so the same review feedback doesn't have to be re-issued PR after PR.
Changes
.claude/rules/wwwscriptscheck-twoslashts-non-null-assertion-unde.instructions.md— www/scripts/check-twoslash.ts 파일 내에서 인덱스나 캡처 접근 시 non-null assertion 연산자(!) 사용을 제거하고 명시적 undefined 검사 또는 optional chaining으로 대체해야 한다. (candidate_001, confidence 0.95).claude/rules/ts-expect-error-eslint-3.instructions.md—@ts-expect-error지시자에 대해 ESLint가 요구하는 3자 이상의 설명을 자동 생성 코드에 포함시키는 규칙 (candidate_003, confidence 0.95)AGENTS.md— 레포지토리 내 pnpm 버전 불일치 문제로 인해 asdf/rtx 환경에서 설치 재현성이 깨질 수 있으므로, .tool-versions와 package.json의 pnpm 버전을 일치시켜야 한다. (candidate_006, confidence 0.95).claude/rules/beforeall-vitest-vitest-describeitexpect-beforeall.instructions.md— 테스트 파일에서 beforeAll을 vitest에서 임포트하지 않으면 런타임 에러가 발생하므로, vitest에서 describe/it/expect와 함께 beforeAll을 반드시 임포트해야 한다. (candidate_007, confidence 0.95)AGENTS.md— 패키지의 package.json에서 bin 필드에 명시된 실행 파일 경로가 files 배열에 포함되어 있지 않으면, 해당 실행 파일이 배포 시 누락되어 소비자에게 깨진 바이너리가 전달된다. 따라서 bin 디렉토리를 files에 반드시 포함시켜야 한다. (candidate_012, confidence 0.95).claude/rules/maxbatchsize-optspathsplit-dos.instructions.md—maxBatchSize설정이 있어도opts.path.split(',')가 먼저 배열을 할당하여 DoS 공격에 취약하므로, 경로 내 쉼표 개수를 직접 세어 제한하는 방식으로 개선해야 한다. (candidate_014, confidence 0.90)AGENTS.md— 여러 패키지에서 동일한 이름의 실행 파일(intent)을 노출하면node_modules/.bin내에서 충돌이 발생할 수 있으므로, 고유한 네임스페이스가 있는 실행 파일 이름을 사용하는 것이 권장됩니다. (candidate_016, confidence 0.95).claude/rules/packagestanstack-react-query-react-import.instructions.md— packages/tanstack-react-query 테스트 파일에서는 React를 네임스페이스 import 방식으로 사용해야 한다는 규칙이 반복적으로 지적됨 (candidate_017, confidence 0.95).claude/rules/hasexpectedartifacts.instructions.md—hasExpectedArtifacts()함수가 출력 디렉토리 존재 여부만 확인하여 내부 파일이 삭제되거나 손상된 경우 캐시 히트가 잘못 발생할 수 있음. (candidate_020, confidence 0.95)AGENTS.md—subscribe()호출 시onError핸들러 내에서subscription.unsubscribe()를 호출할 때,subscription변수가const로 선언되어 초기화 중에 참조되는 문제를 방지하기 위해let으로 선언하는 것을 권장한다. (candidate_021, confidence 0.90)AGENTS.md— maxBatchSize가 NaN, Infinity, 음수, 0 또는 비정수일 경우 제한 조건이 제대로 작동하지 않으므로, 이를 방지하기 위해 maxBatchSize가 유한한 양의 정수인지 검증해야 한다. (candidate_025, confidence 0.95)AGENTS.md—SKILL.md파일명이 md/mdx 파일의 camelCase 명명 규칙을 위반하므로, 예외를 명시하거나 파일명을 camelCase로 변경해야 한다. (candidate_027, confidence 0.90).claude/rules/queryserializer-undefined-jsonstringify-urlsearchp.instructions.md—querySerializer가undefined값을 처리할 때JSON.stringify와URLSearchParams.append()의 동작으로 인해 의도치 않은 문자열 "undefined"가 쿼리 파라미터에 포함되는 문제와responseTransformer의 특정 필드 검사 방식에 대한 반복적인 지적입니다. (candidate_028, confidence 0.90).claude/rules/resolveprocedureerror-declarederrors.instructions.md— 이 에러 핸들러에서resolveProcedureError호출 시 프로시저의declaredErrors등록 리스트가 누락되어, 등록된 선언된 에러가 잘못 처리되는 문제를 다룸 (candidate_030, confidence 0.90).claude/rules/metadata-only-onsseevent-retry-data-undefined.instructions.md— metadata-only 프레임에 대해 onSseEvent 호출을 건너뛰어야 하며, retry: 전용 청크가 data: undefined로 호출되는 문제를 방지해야 한다. (candidate_033, confidence 0.90).claude/rules/aborterror.instructions.md— 서버 전송 이벤트 재시도 로직에서 초기 연결 시도에 재시도 예산을 사용하지 않고, AbortError 발생 시 재시도하지 않아야 한다는 규칙 (candidate_034, confidence 0.90).claude/rules/github-actions-lerna-publish-git-permissionsconten.instructions.md— GitHub Actions 워크플로우에서 lerna publish 명령어가 git 태깅 및 푸시를 수행하므로, permissions.contents 권한 설정과 lerna 옵션(--no-push, --no-git-tag-version) 사용에 주의해야 한다. (candidate_035, confidence 0.90)AGENTS.md— 의존성 변경 시 package.json과 pnpm-lock.yaml 파일을 항상 동기화하여 CI 실패를 방지해야 합니다. (candidate_036, confidence 0.90)AGENTS.md—pnpm add -g npm@latest는 릴리스를 비재현 가능하게 만들고 npm의 새로운 메이저/마이너 버전이 나올 때 예기치 않게 깨질 수 있으므로, 알려진 안정된 npm 버전을 고정하거나 Node에 번들된 npm 버전을 사용하는 것이 좋습니다. (candidate_037, confidence 0.95)AGENTS.md— CI 워크플로우에서 사용하는 CLI 버전을 package.json에 명시된 버전과 일치하도록 고정해야 한다. (candidate_041, confidence 0.95)AGENTS.md— 마크다운 코드 블록에 언어 식별자를 추가하여 markdownlint MD040 경고를 방지하고 편집기 도구 지원을 향상시킵니다. (candidate_044, confidence 0.90)docs/promote/digests/2026-05-22.md— full scan digest (included for traceability)Testing
needs_human_decisioncandidates), seedocs/promote/digests/2026-05-22.md.Memory promotion details
Generated by
promote-cliv0.6.0 from scan run on 2026-05-22.Bundled candidates
1. www/scripts/check-twoslash.ts 파일 내에서 인덱스나 캡처 접근 시 non-null assertion 연산자(!) 사용을 제거하고 명시적 undefined 검사 또는 optional chaining으로 대체해야 한다. (target: path_scoped_rule, confidence: 0.95)
.claude/rules/wwwscriptscheck-twoslashts-non-null-assertion-unde.instructions.mdwww/scripts/check-twoslash.ts, #7176www/scripts/check-twoslash.ts, #7195www/scripts/check-twoslash.ts2.
@ts-expect-error지시자에 대해 ESLint가 요구하는 3자 이상의 설명을 자동 생성 코드에 포함시키는 규칙 (target: path_scoped_rule, confidence: 0.95).claude/rules/ts-expect-error-eslint-3.instructions.mdpackages/openapi/test/routers/superjsonRouter-heyapi/client/client.gen.ts, #7283packages/openapi/test/routers/cyclicTypesRouter-heyapi/client/client.gen.ts, #7231packages/openapi/test/routers/appRouter-heyapi/client/client.gen.ts, #7231packages/openapi/test/routers/errorFormatterRouter-heyapi/client/client.gen.ts@ts-expect-error주석에 설명을 반드시 포함해야 한다는 점이 공통적이다. 이는 특정 경로 내 자동 생성 코드에만 적용되는 규칙으로, 향후 자동 생성기 설정이나 코드 생성 프로세스 개선에 도움이 되므로 path_scoped_rule로 분류했다.3. 레포지토리 내 pnpm 버전 불일치 문제로 인해 asdf/rtx 환경에서 설치 재현성이 깨질 수 있으므로, .tool-versions와 package.json의 pnpm 버전을 일치시켜야 한다. (target: agents, confidence: 0.95)
AGENTS.md.tool-versions, #7200.tool-versions4. 테스트 파일에서 beforeAll을 vitest에서 임포트하지 않으면 런타임 에러가 발생하므로, vitest에서 describe/it/expect와 함께 beforeAll을 반드시 임포트해야 한다. (target: path_scoped_rule, confidence: 0.95)
.claude/rules/beforeall-vitest-vitest-describeitexpect-beforeall.instructions.mdpackages/openapi/test/edgeCases.test.ts, #7231packages/openapi/test/edgeCases.test.ts, #7283packages/openapi/test/cyclicTypes.test.ts, #7283packages/openapi/test/cyclicTypes.test.ts5. 패키지의 package.json에서 bin 필드에 명시된 실행 파일 경로가 files 배열에 포함되어 있지 않으면, 해당 실행 파일이 배포 시 누락되어 소비자에게 깨진 바이너리가 전달된다. 따라서 bin 디렉토리를 files에 반드시 포함시켜야 한다. (target: agents, confidence: 0.95)
AGENTS.mdpackages/server/package.json, #7252packages/tanstack-react-query/package.json, #7252packages/client/package.json, #7252packages/next/package.json, #7252packages/client/package.json, …and 5 more6.
maxBatchSize설정이 있어도opts.path.split(',')가 먼저 배열을 할당하여 DoS 공격에 취약하므로, 경로 내 쉼표 개수를 직접 세어 제한하는 방식으로 개선해야 한다. (target: path_scoped_rule, confidence: 0.90).claude/rules/maxbatchsize-optspathsplit-dos.instructions.mdpackages/server/src/unstable-core-do-not-import/http/contentType.ts, #7191packages/server/src/unstable-core-do-not-import/http/contentType.tsmaxBatchSize와 관련된 DoS 방어를 위한 구체적인 구현 방식에 관한 반복적인 리뷰 코멘트로, 전체 레포지토리보다는 해당 경로에 국한된 규칙으로 관리하는 것이 적절하다.7. 여러 패키지에서 동일한 이름의 실행 파일(
intent)을 노출하면node_modules/.bin내에서 충돌이 발생할 수 있으므로, 고유한 네임스페이스가 있는 실행 파일 이름을 사용하는 것이 권장됩니다. (target: agents, confidence: 0.95)AGENTS.mdpackages/openapi/package.json, #7252packages/openapi/package.json, #7252packages/server/package.json, #7252packages/client/package.json, #7252packages/next/package.json, …and 2 more8. packages/tanstack-react-query 테스트 파일에서는 React를 네임스페이스 import 방식으로 사용해야 한다는 규칙이 반복적으로 지적됨 (target: path_scoped_rule, confidence: 0.95)
.claude/rules/packagestanstack-react-query-react-import.instructions.mdpackages/tanstack-react-query/test/client.test.tsx, #7362packages/tanstack-react-query/test/polymorphism.test.tsx, #7362packages/tanstack-react-query/test/infiniteQueryOptions.test.tsx9.
hasExpectedArtifacts()함수가 출력 디렉토리 존재 여부만 확인하여 내부 파일이 삭제되거나 손상된 경우 캐시 히트가 잘못 발생할 수 있음. (target: path_scoped_rule, confidence: 0.95).claude/rules/hasexpectedartifacts.instructions.mdpackages/openapi/test/scripts/codegen.ts, #7296packages/openapi/test/scripts/codegen.ts10.
subscribe()호출 시onError핸들러 내에서subscription.unsubscribe()를 호출할 때,subscription변수가const로 선언되어 초기화 중에 참조되는 문제를 방지하기 위해let으로 선언하는 것을 권장한다. (target: agents, confidence: 0.90)AGENTS.mdpackages/tests/server/websockets.test.ts, #7279packages/tests/server/httpSubscriptionLink.test.ts11. maxBatchSize가 NaN, Infinity, 음수, 0 또는 비정수일 경우 제한 조건이 제대로 작동하지 않으므로, 이를 방지하기 위해 maxBatchSize가 유한한 양의 정수인지 검증해야 한다. (target: agents, confidence: 0.95)
AGENTS.mdpackages/server/src/unstable-core-do-not-import/http/contentType.ts, #7191packages/server/src/unstable-core-do-not-import/http/types.ts12.
SKILL.md파일명이 md/mdx 파일의 camelCase 명명 규칙을 위반하므로, 예외를 명시하거나 파일명을 camelCase로 변경해야 한다. (target: agents, confidence: 0.90)AGENTS.mdpackages/tanstack-react-query/skills/react-query-setup/SKILL.md, #7252packages/server/skills/adapter-fetch/SKILL.md, #7252packages/server/skills/trpc-router/SKILL.md13.
querySerializer가undefined값을 처리할 때JSON.stringify와URLSearchParams.append()의 동작으로 인해 의도치 않은 문자열 "undefined"가 쿼리 파라미터에 포함되는 문제와responseTransformer의 특정 필드 검사 방식에 대한 반복적인 지적입니다. (target: path_scoped_rule, confidence: 0.90).claude/rules/queryserializer-undefined-jsonstringify-urlsearchp.instructions.mdpackages/openapi/src/heyapi/index.ts, #7231packages/openapi/src/heyapi/index.tspackages/openapi/src/heyapi/index.ts경로에 국한된 구체적인 직렬화 및 응답 변환 로직에 관한 문제로, 해당 경로에 적용되는 규칙으로 저장하는 것이 적절합니다. 이는 범용적인 에이전트 지침보다는 특정 경로에 한정된 규칙이기 때문입니다.14. 이 에러 핸들러에서
resolveProcedureError호출 시 프로시저의declaredErrors등록 리스트가 누락되어, 등록된 선언된 에러가 잘못 처리되는 문제를 다룸 (target: path_scoped_rule, confidence: 0.90).claude/rules/resolveprocedureerror-declarederrors.instructions.mdpackages/server/src/adapters/ws.ts, #7279packages/server/src/adapters/ws.tspackages/server/src/adapters/ws.ts)에 국한된 문제로, 해당 경로 내에서 일관된 에러 처리 규칙을 적용하는 것이 적절함. 이는 코드베이스 전반에 걸친 일반적인 규칙이라기보다는 특정 모듈의 구현 세부사항에 관한 것이므로 path_scoped_rule이 적합함.15. metadata-only 프레임에 대해 onSseEvent 호출을 건너뛰어야 하며, retry: 전용 청크가 data: undefined로 호출되는 문제를 방지해야 한다. (target: path_scoped_rule, confidence: 0.90)
.claude/rules/metadata-only-onsseevent-retry-data-undefined.instructions.mdpackages/openapi/test/routers/appRouter-heyapi/core/serverSentEvents.gen.ts, #7231packages/openapi/test/routers/errorFormatterRouter-heyapi/core/serverSentEvents.gen.ts16. 서버 전송 이벤트 재시도 로직에서 초기 연결 시도에 재시도 예산을 사용하지 않고, AbortError 발생 시 재시도하지 않아야 한다는 규칙 (target: path_scoped_rule, confidence: 0.90)
.claude/rules/aborterror.instructions.mdpackages/openapi/test/routers/errorFormatterRouter-heyapi/core/serverSentEvents.gen.ts, #7231packages/openapi/test/routers/appRouter-heyapi/core/serverSentEvents.gen.ts17. GitHub Actions 워크플로우에서 lerna publish 명령어가 git 태깅 및 푸시를 수행하므로, permissions.contents 권한 설정과 lerna 옵션(--no-push, --no-git-tag-version) 사용에 주의해야 한다. (target: path_scoped_rule, confidence: 0.90)
.claude/rules/github-actions-lerna-publish-git-permissionsconten.instructions.md.github/workflows/release-tmp.yml, #7247.github/workflows/release-canary.yml18. 의존성 변경 시 package.json과 pnpm-lock.yaml 파일을 항상 동기화하여 CI 실패를 방지해야 합니다. (target: agents, confidence: 0.90)
AGENTS.mdpackages/react-query/package.json, #7200package.json19.
pnpm add -g npm@latest는 릴리스를 비재현 가능하게 만들고 npm의 새로운 메이저/마이너 버전이 나올 때 예기치 않게 깨질 수 있으므로, 알려진 안정된 npm 버전을 고정하거나 Node에 번들된 npm 버전을 사용하는 것이 좋습니다. (target: agents, confidence: 0.95)AGENTS.md.github/workflows/release-tmp.yml, #7247.github/workflows/release-canary.yml20. CI 워크플로우에서 사용하는 CLI 버전을 package.json에 명시된 버전과 일치하도록 고정해야 한다. (target: agents, confidence: 0.95)
AGENTS.md.github/workflows/validate-skills.yml, #7252.github/workflows/check-skills.yml21. 마크다운 코드 블록에 언어 식별자를 추가하여 markdownlint MD040 경고를 방지하고 편집기 도구 지원을 향상시킵니다. (target: agents, confidence: 0.90)
AGENTS.mdpackages/next/skills/nextjs-pages-router/SKILL.md, #7252packages/next/skills/nextjs-app-router/SKILL.mdSafety
needs_human_decisioncandidates included) is committed atdocs/promote/digests/2026-05-22.md.