promote: 21 memory updates from 2026-05-22 scan - #9
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
AGENTS.md— 통합 테스트에서 서버와 클라이언트 리소스 관리를 위해testServerAndClientResource패턴을 일관되게 사용하도록 권장하는 리팩토링 제안입니다. (candidate_001, confidence 0.90).claude/rules/wwwscriptscheck-twoslashts-non-null-assertion-null.instructions.md— www/scripts/check-twoslash.ts 파일 내에서 인덱스 또는 캡처 접근 시 non-null assertion 연산자(!) 사용을 제거하고 명시적 null 체크 또는 optional chaining으로 대체해야 한다. (candidate_002, confidence 0.95).claude/rules/ts-expect-error-eslint-3.instructions.md—@ts-expect-error지시문에 ESLint 요구사항에 따라 3자 이상의 설명을 추가해야 한다는 규칙이 반복적으로 지적됨. (candidate_003, confidence 0.95)AGENTS.md—@types/node버전은 Node.js 주요 버전과 일치시켜야 하며,engines.node설정과 맞지 않으면 버전 불일치 문제가 발생한다. (candidate_005, confidence 0.95)AGENTS.md— 레포지토리 내 pnpm 버전 불일치 문제로 인해 asdf/rtx 환경에서 설치 재현성이 깨질 수 있으므로, .tool-versions와 package.json의 pnpm 버전을 일치시켜야 한다. (candidate_006, confidence 0.95).claude/rules/beforeall-vitest-import-vitest-describeitexpect-be.instructions.md— 테스트 파일에서 beforeAll을 vitest에서 import하지 않으면 런타임 에러가 발생하므로, vitest에서 describe/it/expect와 함께 beforeAll을 반드시 import해야 한다. (candidate_007, confidence 0.95).claude/rules/packages-openapi-test-routers.instructions.md— 인터셉터 루프 내에서 변환된 에러를 체인으로 전달해야 한다는 반복된 지적 (candidate_008, confidence 0.95).claude/rules/maxbatchsize-optspathsplit-dos.instructions.md—maxBatchSize설정에도 불구하고opts.path.split(',')가 먼저 배열을 할당하여 DoS 공격에 취약할 수 있으므로, 배열 할당 전에 경로를 스캔하여 크기를 제한하는 방법을 적용해야 한다. (candidate_013, confidence 0.90)AGENTS.md— 패키지의 bin 실행 파일을 올바르게 배포하기 위해 package.json의 files 배열에 bin 디렉토리를 포함해야 한다. (candidate_014, confidence 0.95)AGENTS.md— 여러 @trpc/* 패키지에서 동일한 'intent' 바이너리를 노출하면 node_modules/.bin/intent 충돌이 발생할 수 있으므로, 고유한 네임스페이스가 있는 바이너리 이름을 사용해야 한다. (candidate_016, confidence 0.95).claude/rules/serversenteventsoptions-sse.instructions.md— ServerSentEventsOptions 타입 파라미터 누락 문제를 수정하고, SSE 페이로드 타입 전파를 올바르게 적용하는 규칙 (candidate_017, confidence 0.90).claude/rules/hasexpectedartifacts.instructions.md—hasExpectedArtifacts()함수가 출력 디렉토리 존재 여부만 확인하여 내부 파일이 삭제되거나 손상된 경우 캐시 히트가 잘못 발생할 수 있음. (candidate_019, confidence 0.90)AGENTS.md—subscribe()호출 시onError핸들러 내에서subscription.unsubscribe()를 호출할 때,subscription이const로 선언되어 동기 호출 시 temporal dead zone 문제가 발생할 수 있으므로let으로 선언하는 것을 권장한다. (candidate_020, confidence 0.90).claude/rules/packagestanstack-react-query-react-import.instructions.md— packages/tanstack-react-query 테스트 파일에서는 React를 네임스페이스 import 방식으로 사용해야 한다는 규칙이 반복적으로 지적됨 (candidate_023, confidence 0.95).claude/rules/markdownlint-md040.instructions.md— 마크다운 코드 블록에 언어 식별자를 추가하여 markdownlint MD040 경고를 방지하고 편집기 도구 지원을 향상시킵니다. (candidate_025, confidence 0.90)AGENTS.md—SKILL.md파일명은 md/mdx camelCase 명명 규칙을 위반하지만, 이는 의도된 예외로 명확히 문서화되어야 한다. (candidate_027, confidence 0.95).claude/rules/queryserializer-undefined-jsonstringify-urlsearchp.instructions.md—querySerializer가undefined값을JSON.stringify로 직렬화할 때,URLSearchParams.append()가 이를 문자열 "undefined"로 변환하는 문제와responseTransformer의 특정 필드 검사 문제는 packages/openapi/src/heyapi 경로에 국한된 규칙이다. (candidate_028, confidence 0.90).claude/rules/resolveprocedureerror-declarederrors.instructions.md— 이 에러 핸들러에서resolveProcedureError호출 시 프로시저의declaredErrors등록 리스트가 누락되어, 등록된 선언된 에러가 잘못 처리되는 문제가 반복적으로 지적됨. (candidate_031, 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/pnpm-add-g-npmlatest-npm.instructions.md— 릴리스 워크플로우에서 'pnpm add -g npm@latest' 사용은 비재현적이며, npm 버전을 고정하는 것이 안정적임. (candidate_038, confidence 0.95)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. 통합 테스트에서 서버와 클라이언트 리소스 관리를 위해
testServerAndClientResource패턴을 일관되게 사용하도록 권장하는 리팩토링 제안입니다. (target: agents, confidence: 0.90)AGENTS.mdpackages/openapi/test/generate.test.ts, #7207packages/tests/server/httpSubscriptionLink.test.ts, #7304packages/tests/server/httpSubscriptionLink.fetch.test.tstestServerAndClientResource) 사용을 권장하고 있어, 이는 저장소 전반에 걸친 테스트 작성 관례로 볼 수 있습니다. 특정 경로나 개별 PR에 국한되지 않고, 테스트 작성 시 일관된 리소스 관리 방법을 안내하는 것이 향후 유지보수와 코드 품질 향상에 도움이 되므로 에이전트 지침 문서에 저장하는 것이 적합합니다.2. www/scripts/check-twoslash.ts 파일 내에서 인덱스 또는 캡처 접근 시 non-null assertion 연산자(!) 사용을 제거하고 명시적 null 체크 또는 optional chaining으로 대체해야 한다. (target: path_scoped_rule, confidence: 0.95)
.claude/rules/wwwscriptscheck-twoslashts-non-null-assertion-null.instructions.mdwww/scripts/check-twoslash.ts, #7176www/scripts/check-twoslash.ts, #7195www/scripts/check-twoslash.ts3.
@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.ts4.
@types/node버전은 Node.js 주요 버전과 일치시켜야 하며,engines.node설정과 맞지 않으면 버전 불일치 문제가 발생한다. (target: agents, confidence: 0.95)AGENTS.mdpackage.json, #7200package.json5. 레포지토리 내 pnpm 버전 불일치 문제로 인해 asdf/rtx 환경에서 설치 재현성이 깨질 수 있으므로, .tool-versions와 package.json의 pnpm 버전을 일치시켜야 한다. (target: agents, confidence: 0.95)
AGENTS.md.tool-versions, #7200.tool-versions6. 테스트 파일에서 beforeAll을 vitest에서 import하지 않으면 런타임 에러가 발생하므로, vitest에서 describe/it/expect와 함께 beforeAll을 반드시 import해야 한다. (target: path_scoped_rule, confidence: 0.95)
.claude/rules/beforeall-vitest-import-vitest-describeitexpect-be.instructions.mdpackages/openapi/test/edgeCases.test.ts, #7231packages/openapi/test/edgeCases.test.ts, #7283packages/openapi/test/cyclicTypes.test.ts, #7283packages/openapi/test/cyclicTypes.test.ts7. 인터셉터 루프 내에서 변환된 에러를 체인으로 전달해야 한다는 반복된 지적 (target: path_scoped_rule, confidence: 0.95)
.claude/rules/packages-openapi-test-routers.instructions.mdpackages/openapi/test/routers/cyclicTypesRouter-heyapi/client/client.gen.ts, #7231packages/openapi/test/routers/errorFormatterRouter-heyapi/client/client.gen.ts8.
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 방어를 위한 배열 할당 최적화 규칙에 관한 것으로, 범용적인 에이전트 지침보다는 해당 경로에 국한된 규칙으로 관리하는 것이 적절하다.9. 패키지의 bin 실행 파일을 올바르게 배포하기 위해 package.json의 files 배열에 bin 디렉토리를 포함해야 한다. (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 more10. 여러 @trpc/* 패키지에서 동일한 'intent' 바이너리를 노출하면 node_modules/.bin/intent 충돌이 발생할 수 있으므로, 고유한 네임스페이스가 있는 바이너리 이름을 사용해야 한다. (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 more11. ServerSentEventsOptions 타입 파라미터 누락 문제를 수정하고, SSE 페이로드 타입 전파를 올바르게 적용하는 규칙 (target: path_scoped_rule, confidence: 0.90)
.claude/rules/serversenteventsoptions-sse.instructions.mdpackages/openapi/test/routers/errorFormatterRouter-heyapi/core/serverSentEvents.gen.ts, #7231packages/openapi/test/routers/appRouter-heyapi/core/serverSentEvents.gen.ts12.
hasExpectedArtifacts()함수가 출력 디렉토리 존재 여부만 확인하여 내부 파일이 삭제되거나 손상된 경우 캐시 히트가 잘못 발생할 수 있음. (target: path_scoped_rule, confidence: 0.90).claude/rules/hasexpectedartifacts.instructions.mdpackages/openapi/test/scripts/codegen.ts, #7296packages/openapi/test/scripts/codegen.ts13.
subscribe()호출 시onError핸들러 내에서subscription.unsubscribe()를 호출할 때,subscription이const로 선언되어 동기 호출 시 temporal dead zone 문제가 발생할 수 있으므로let으로 선언하는 것을 권장한다. (target: agents, confidence: 0.90)AGENTS.mdpackages/tests/server/websockets.test.ts, #7279packages/tests/server/httpSubscriptionLink.test.ts14. 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.tsx15. 마크다운 코드 블록에 언어 식별자를 추가하여 markdownlint MD040 경고를 방지하고 편집기 도구 지원을 향상시킵니다. (target: path_scoped_rule, confidence: 0.90)
.claude/rules/markdownlint-md040.instructions.mdpackages/next/skills/nextjs-app-router/SKILL.md, #7252packages/next/skills/nextjs-pages-router/SKILL.md16.
SKILL.md파일명은 md/mdx camelCase 명명 규칙을 위반하지만, 이는 의도된 예외로 명확히 문서화되어야 한다. (target: agents, confidence: 0.95)AGENTS.mdpackages/tanstack-react-query/skills/react-query-setup/SKILL.md, #7252packages/server/skills/adapter-fetch/SKILL.md, #7252packages/server/skills/trpc-router/SKILL.md17.
querySerializer가undefined값을JSON.stringify로 직렬화할 때,URLSearchParams.append()가 이를 문자열 "undefined"로 변환하는 문제와responseTransformer의 특정 필드 검사 문제는 packages/openapi/src/heyapi 경로에 국한된 규칙이다. (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.tsquerySerializer와responseTransformer의 동작 방식에 관한 구체적이고 반복적인 문제로, 특정 경로인 packages/openapi/src/heyapi/index.ts에만 적용된다. 따라서 전역 에이전트 지침보다는 경로 범위 규칙으로 관리하는 것이 적절하다.18. 이 에러 핸들러에서
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) 내에서 반복적으로 발생하는 구체적인 구현 문제로, 해당 경로에 한정된 규칙으로 관리하는 것이 적절함. 이는 단일 PR에 국한되지 않고, 전체 해당 경로 코드의 일관성 유지에 도움이 됨.19. 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.ts20. 서버 전송 이벤트 재시도 로직에서 초기 연결 시도에 재시도 예산을 사용하지 않고, 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.ts21. 릴리스 워크플로우에서 'pnpm add -g npm@latest' 사용은 비재현적이며, npm 버전을 고정하는 것이 안정적임. (target: path_scoped_rule, confidence: 0.95)
.claude/rules/pnpm-add-g-npmlatest-npm.instructions.md.github/workflows/release-tmp.yml, #7247.github/workflows/release-canary.ymlSafety
needs_human_decisioncandidates included) is committed atdocs/promote/digests/2026-05-22.md.