Skip to content

promote: 21 memory updates from 2026-05-22 scan - #9

Closed
gyulsbox wants to merge 1 commit into
mainfrom
promote/2026-05-22-290396
Closed

promote: 21 memory updates from 2026-05-22 scan#9
gyulsbox wants to merge 1 commit into
mainfrom
promote/2026-05-22-290396

Conversation

@gyulsbox

Copy link
Copy Markdown
Owner

Summary

promote-cli detected 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.mdmaxBatchSize 설정에도 불구하고 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.mdhasExpectedArtifacts() 함수가 출력 디렉토리 존재 여부만 확인하여 내부 파일이 삭제되거나 손상된 경우 캐시 히트가 잘못 발생할 수 있음. (candidate_019, confidence 0.90)
  • AGENTS.mdsubscribe() 호출 시 onError 핸들러 내에서 subscription.unsubscribe()를 호출할 때, subscriptionconst로 선언되어 동기 호출 시 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.mdSKILL.md 파일명은 md/mdx camelCase 명명 규칙을 위반하지만, 이는 의도된 예외로 명확히 문서화되어야 한다. (candidate_027, confidence 0.95)
  • .claude/rules/queryserializer-undefined-jsonstringify-urlsearchp.instructions.mdquerySerializerundefined 값을 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

  • Each draft was generated by LLM and requires human review before merge — read the appended content in each affected file.
  • Compare against the reasoning and evidence in Memory promotion details below.
  • For the full picture (including skipped / needs_human_decision candidates), see docs/promote/digests/2026-05-22.md.

Memory promotion details

Generated by promote-cli v0.6.0 from scan run on 2026-05-22.

Bundled candidates

1. 통합 테스트에서 서버와 클라이언트 리소스 관리를 위해 testServerAndClientResource 패턴을 일관되게 사용하도록 권장하는 리팩토링 제안입니다. (target: agents, confidence: 0.90)

  • File: AGENTS.md
  • Evidence: #7231 packages/openapi/test/generate.test.ts, #7207 packages/tests/server/httpSubscriptionLink.test.ts, #7304 packages/tests/server/httpSubscriptionLink.fetch.test.ts
  • Reasoning: 여러 PR에서 반복적으로 동일한 테스트 리소스 관리 패턴(testServerAndClientResource) 사용을 권장하고 있어, 이는 저장소 전반에 걸친 테스트 작성 관례로 볼 수 있습니다. 특정 경로나 개별 PR에 국한되지 않고, 테스트 작성 시 일관된 리소스 관리 방법을 안내하는 것이 향후 유지보수와 코드 품질 향상에 도움이 되므로 에이전트 지침 문서에 저장하는 것이 적합합니다.
  • Alternatives considered: pr_only: 각 코멘트가 특정 PR의 코드에만 적용되는 경우.; path_scoped_rule: 특정 경로에만 적용되는 규칙인 경우.; none: 이미 문서화되어 있거나 일회성 제안인 경우.

2. www/scripts/check-twoslash.ts 파일 내에서 인덱스 또는 캡처 접근 시 non-null assertion 연산자(!) 사용을 제거하고 명시적 null 체크 또는 optional chaining으로 대체해야 한다. (target: path_scoped_rule, confidence: 0.95)

  • File: .claude/rules/wwwscriptscheck-twoslashts-non-null-assertion-null.instructions.md
  • Evidence: #7196 www/scripts/check-twoslash.ts, #7176 www/scripts/check-twoslash.ts, #7195 www/scripts/check-twoslash.ts
  • Reasoning: 이 패턴은 특정 파일(www/scripts/check-twoslash.ts)에 반복적으로 나타나는 코딩 가이드라인 위반으로, 해당 경로에 국한된 규칙으로 관리하는 것이 적절하다. 이는 범용적인 에이전트 지침보다는 특정 경로에 적용되는 규칙으로 분류하는 것이 맞으며, 아키텍처 결정(adr)이나 테스트(invariant)와도 거리가 있다.
  • Alternatives considered: agents: 만약 이 규칙이 모든 파일에 걸쳐 일관되게 적용된다면 에이전트 지침에 포함할 수 있다.; pr_only: 특정 PR에만 국한된 문제라면 PR 전용으로 관리할 수 있다.

3. @ts-expect-error 지시문에 ESLint 요구사항에 따라 3자 이상의 설명을 추가해야 한다는 규칙이 반복적으로 지적됨. (target: path_scoped_rule, confidence: 0.95)

  • File: .claude/rules/ts-expect-error-eslint-3.instructions.md
  • Evidence: #7231 packages/openapi/test/routers/superjsonRouter-heyapi/client/client.gen.ts, #7283 packages/openapi/test/routers/cyclicTypesRouter-heyapi/client/client.gen.ts, #7231 packages/openapi/test/routers/appRouter-heyapi/client/client.gen.ts, #7231 packages/openapi/test/routers/errorFormatterRouter-heyapi/client/client.gen.ts
  • Reasoning: 이 패턴은 여러 auto-generated client 코드 파일 내에서 반복적으로 나타나며, ESLint 규칙에 따른 일관된 주석 작성 요구사항으로 특정 경로 내 코드에 적용되는 규칙임. 따라서 전체 레포가 아닌 특정 경로에 국한된 규칙으로 분류하는 것이 적절함.
  • Alternatives considered: agents: 레포 전반에 걸친 코딩 컨벤션으로 볼 수 있으나, 이 경우는 특정 auto-generated 코드 경로에 한정됨.; pr_only: 여러 PR에서 반복되었으므로 일회성 이슈가 아님.

4. @types/node 버전은 Node.js 주요 버전과 일치시켜야 하며, engines.node 설정과 맞지 않으면 버전 불일치 문제가 발생한다. (target: agents, confidence: 0.95)

  • File: AGENTS.md
  • Evidence: #7210 package.json, #7200 package.json
  • Reasoning: 이 패턴은 여러 PR에서 반복적으로 나타나는 Node.js 런타임 버전과 타입 정의 버전 간의 일관성 유지에 관한 전사적 규칙으로, 향후 개발자와 AI 에이전트가 참고할 수 있도록 저장하는 것이 유용하다. 특정 경로나 개별 PR에 국한되지 않고, Node.js 버전 관리에 관한 일반적인 관행이므로 agents에 적합하다.
  • Alternatives considered: pr_only: 각 PR에만 국한된 일회성 문제로 볼 수도 있으나, 반복적이고 전사적 규칙임.; path_scoped_rule: 특정 경로에 한정된 규칙이 아니므로 부적합.

5. 레포지토리 내 pnpm 버전 불일치 문제로 인해 asdf/rtx 환경에서 설치 재현성이 깨질 수 있으므로, .tool-versions와 package.json의 pnpm 버전을 일치시켜야 한다. (target: agents, confidence: 0.95)

  • File: AGENTS.md
  • Evidence: #7194 .tool-versions, #7200 .tool-versions
  • Reasoning: 이 패턴은 레포지토리 전반에 걸쳐 적용되는 도구 버전 관리 규칙으로, 여러 PR에서 반복적으로 지적되고 있어 향후 개발자 및 AI 에이전트가 일관된 환경을 유지하는 데 도움이 되므로 에이전트 지침 문서에 저장하는 것이 적합하다.
  • Alternatives considered: pr_only: 이 지적은 특정 PR에만 국한된 일회성 문제이므로 저장할 필요가 없다.; path_scoped_rule: 비록 특정 경로(.tool-versions)에 관련된 내용이지만, 이 규칙은 도구 버전 관리라는 전사적 관행에 해당한다.

6. 테스트 파일에서 beforeAll을 vitest에서 import하지 않으면 런타임 에러가 발생하므로, vitest에서 describe/it/expect와 함께 beforeAll을 반드시 import해야 한다. (target: path_scoped_rule, confidence: 0.95)

  • File: .claude/rules/beforeall-vitest-import-vitest-describeitexpect-be.instructions.md
  • Evidence: #7231 packages/openapi/test/edgeCases.test.ts, #7231 packages/openapi/test/edgeCases.test.ts, #7283 packages/openapi/test/cyclicTypes.test.ts, #7283 packages/openapi/test/cyclicTypes.test.ts
  • Reasoning: 이 패턴은 vitest를 사용하는 테스트 파일 내에서 반복적으로 발생하는 구체적인 import 규칙으로, 특정 경로(테스트 파일들)에 국한된 규칙이다. 따라서 전체 에이전트 지침보다는 path_scoped_rule로 관리하는 것이 적합하다.
  • Alternatives considered: agents: 만약 이 규칙이 모든 테스트 파일에 공통적으로 적용된다면 에이전트 지침에 포함할 수 있다.; pr_only: 각 PR에만 국한된 문제라면 PR 전용으로 관리할 수 있다.

7. 인터셉터 루프 내에서 변환된 에러를 체인으로 전달해야 한다는 반복된 지적 (target: path_scoped_rule, confidence: 0.95)

  • File: .claude/rules/packages-openapi-test-routers.instructions.md
  • Evidence: #7283 packages/openapi/test/routers/cyclicTypesRouter-heyapi/client/client.gen.ts, #7231 packages/openapi/test/routers/errorFormatterRouter-heyapi/client/client.gen.ts
  • Reasoning: 두 코멘트 모두 특정 경로 내에서 인터셉터가 원본 에러만을 사용하여 변환된 에러가 다음 인터셉터에 전달되지 않는 문제를 지적하고 있어, 이 규칙은 해당 경로에 국한된 코드 품질 및 오류 처리 규칙으로 판단됨
  • Alternatives considered: pr_only: 특정 PR에만 해당되는 일회성 문제일 경우; agents: 전체 저장소에 적용되는 일반적인 에러 처리 규칙일 경우; test: 런타임에서 반드시 검증되어야 하는 불변 조건일 경우

8. maxBatchSize 설정에도 불구하고 opts.path.split(',')가 먼저 배열을 할당하여 DoS 공격에 취약할 수 있으므로, 배열 할당 전에 경로를 스캔하여 크기를 제한하는 방법을 적용해야 한다. (target: path_scoped_rule, confidence: 0.90)

  • File: .claude/rules/maxbatchsize-optspathsplit-dos.instructions.md
  • Evidence: #7191 packages/server/src/unstable-core-do-not-import/http/contentType.ts, #7191 packages/server/src/unstable-core-do-not-import/http/contentType.ts
  • Reasoning: 이 패턴은 특정 파일 경로 내에서 maxBatchSize와 관련된 DoS 방어를 위한 배열 할당 최적화 규칙에 관한 것으로, 범용적인 에이전트 지침보다는 해당 경로에 국한된 규칙으로 관리하는 것이 적절하다.
  • Alternatives considered: agents: 만약 이 규칙이 여러 경로에 걸쳐 적용된다면 에이전트 지침에 포함할 수 있으나, 현재는 특정 경로에 한정됨.; pr_only: 일회성 PR 관련 문제라면 PR 전용으로 관리할 수 있으나, 반복적으로 나타나는 보안 관련 규칙임.

9. 패키지의 bin 실행 파일을 올바르게 배포하기 위해 package.json의 files 배열에 bin 디렉토리를 포함해야 한다. (target: agents, confidence: 0.95)

  • File: AGENTS.md
  • Evidence: #7252 packages/server/package.json, #7252 packages/tanstack-react-query/package.json, #7252 packages/client/package.json, #7252 packages/next/package.json, #7252 packages/client/package.json, …and 5 more
  • Reasoning: 여러 패키지에서 반복적으로 발생하는 문제로, bin 실행 파일이 files allowlist에 포함되지 않아 배포 시 누락되는 현상을 방지하기 위한 공통적인 패키지 관리 규칙이다. 이는 특정 경로에 국한되지 않고 여러 패키지에 적용되므로 repo-wide AI 지침에 포함하는 것이 적절하다.
  • Alternatives considered: pr_only: 특정 PR에만 해당되는 일회성 문제로 보기에는 여러 패키지에서 반복되어 일반화 가능하다.; path_scoped_rule: 문제가 특정 경로에 국한되지 않고 여러 패키지에 걸쳐 발생한다.

10. 여러 @trpc/* 패키지에서 동일한 'intent' 바이너리를 노출하면 node_modules/.bin/intent 충돌이 발생할 수 있으므로, 고유한 네임스페이스가 있는 바이너리 이름을 사용해야 한다. (target: agents, confidence: 0.95)

  • File: AGENTS.md
  • Evidence: #7252 packages/openapi/package.json, #7252 packages/openapi/package.json, #7252 packages/server/package.json, #7252 packages/client/package.json, #7252 packages/next/package.json, …and 2 more
  • Reasoning: 이 패턴은 여러 패키지에 걸쳐 반복적으로 나타나는 네이밍 충돌 문제로, 향후 모든 관련 패키지에서 일관된 네임스페이스 규칙을 적용하는 것이 중요하다. 따라서 특정 PR이나 경로에 국한되지 않고, 전체 저장소에 적용할 수 있는 에이전트 지침으로 보존하는 것이 적절하다.
  • Alternatives considered: pr_only: 이 문제는 특정 PR에만 국한된 일회성 문제일 수 있다.; path_scoped_rule: 만약 이 규칙이 특정 경로에만 적용된다면 경로 범위 규칙이 적합할 수 있다.

11. ServerSentEventsOptions 타입 파라미터 누락 문제를 수정하고, SSE 페이로드 타입 전파를 올바르게 적용하는 규칙 (target: path_scoped_rule, confidence: 0.90)

  • File: .claude/rules/serversenteventsoptions-sse.instructions.md
  • Evidence: #7231 packages/openapi/test/routers/errorFormatterRouter-heyapi/core/serverSentEvents.gen.ts, #7231 packages/openapi/test/routers/appRouter-heyapi/core/serverSentEvents.gen.ts
  • Reasoning: 이 패턴은 packages/openapi/test/routers 경로 내 SSE 관련 코드에서 반복적으로 발생하는 타입 파라미터 누락 및 부적절한 타입 단언 문제로, 특정 경로에 국한된 타입 안전성 규칙으로 판단됨. 전체 에이전트 지침보다는 경로 스코프 규칙으로 관리하는 것이 적절함.
  • Alternatives considered: agents: 만약 이 타입 파라미터 규칙이 전 레포에 걸쳐 SSE 관련 모든 코드에 적용된다면 에이전트 지침으로 적합할 수 있음; pr_only: 특정 PR에만 국한된 문제라면 PR 전용 메모리에 보관하는 것이 적절함

12. hasExpectedArtifacts() 함수가 출력 디렉토리 존재 여부만 확인하여 내부 파일이 삭제되거나 손상된 경우 캐시 히트가 잘못 발생할 수 있음. (target: path_scoped_rule, confidence: 0.90)

  • File: .claude/rules/hasexpectedartifacts.instructions.md
  • Evidence: #7296 packages/openapi/test/scripts/codegen.ts, #7296 packages/openapi/test/scripts/codegen.ts
  • Reasoning: 이 패턴은 packages/openapi/test/scripts/codegen.ts 경로 내에서만 반복적으로 나타나며, 출력 디렉토리와 생성된 파일의 무결성 검증에 관한 구체적인 코드 생성 관련 규칙이므로 경로 범위 규칙(path_scoped_rule)로 분류하는 것이 적절함.
  • Alternatives considered: pr_only: 특정 PR에만 국한된 문제로, 일반화된 규칙으로 만들기 어려움; agents: 전사적 코드 생성 규칙이 아니며 특정 경로에 한정됨; test: 런타임 불변 조건이라기보다는 코드 생성 무결성 검증 권고사항임

13. subscribe() 호출 시 onError 핸들러 내에서 subscription.unsubscribe()를 호출할 때, subscriptionconst로 선언되어 동기 호출 시 temporal dead zone 문제가 발생할 수 있으므로 let으로 선언하는 것을 권장한다. (target: agents, confidence: 0.90)

  • File: AGENTS.md
  • Evidence: #7279 packages/tests/server/websockets.test.ts, #7279 packages/tests/server/httpSubscriptionLink.test.ts
  • Reasoning: 이 패턴은 여러 테스트 파일에서 반복적으로 나타나며, 구독 취소 시점과 변수 선언 방식에 관한 일관된 코딩 관례로, 향후 코드 작성 시 참고할 수 있는 전사적 규칙으로 보인다. 특정 경로나 PR에 국한되지 않고, 여러 위치에서 동일한 문제를 예방하기 위한 지침이므로 agents에 저장하는 것이 적합하다.
  • Alternatives considered: pr_only: 특정 PR에만 국한된 문제일 경우; path_scoped_rule: 특정 경로에만 적용되는 규칙일 경우; none: 이미 문서화되어 있거나 중요하지 않은 경우

14. packages/tanstack-react-query 테스트 파일에서는 React를 네임스페이스 import 방식으로 사용해야 한다는 규칙이 반복적으로 지적됨 (target: path_scoped_rule, confidence: 0.95)

  • File: .claude/rules/packagestanstack-react-query-react-import.instructions.md
  • Evidence: #7362 packages/tanstack-react-query/test/client.test.tsx, #7362 packages/tanstack-react-query/test/polymorphism.test.tsx, #7362 packages/tanstack-react-query/test/infiniteQueryOptions.test.tsx
  • Reasoning: 이 패턴은 특정 경로(packages/tanstack-react-query/test/)에 한정된 import 스타일 규칙으로, 전체 저장소에 적용되는 일반 규칙(agents)보다는 경로 범위 규칙(path_scoped_rule)로 관리하는 것이 적합함. 또한, 기존에 문서화된 규칙이 없으므로 신규 규칙으로 저장할 가치가 있음.
  • Alternatives considered: agents: 만약 이 규칙이 모든 테스트 파일에 적용되는 일반적인 규칙이라면 agents가 적합하나, 현재는 특정 패키지 테스트 파일에 한정됨.; pr_only: 일회성 PR 관련 지적이라면 pr_only가 적합하나, 여러 파일에서 반복적으로 나타남.
  • Human signal: 2 agreed

15. 마크다운 코드 블록에 언어 식별자를 추가하여 markdownlint MD040 경고를 방지하고 편집기 도구 지원을 향상시킵니다. (target: path_scoped_rule, confidence: 0.90)

  • File: .claude/rules/markdownlint-md040.instructions.md
  • Evidence: #7252 packages/next/skills/nextjs-app-router/SKILL.md, #7252 packages/next/skills/nextjs-pages-router/SKILL.md
  • Reasoning: 두 개의 문서 모두 packages/next/skills/ 경로 내에서 마크다운 코드 블록에 언어 식별자를 추가하는 동일한 규칙을 반복적으로 지적하고 있어, 특정 경로에 적용되는 규칙으로 분류하는 것이 적절합니다. 이는 코드 품질과 편집기 지원을 위한 일관된 스타일 가이드로서 향후에도 유용하기 때문입니다.
  • Alternatives considered: pr_only: 이 규칙은 특정 PR에만 국한된 문제로 보이지 않고 여러 문서에 반복적으로 나타납니다.; agents: 이 규칙은 전체 저장소에 걸친 일반적인 마크다운 스타일 규칙이지만, 현재는 특정 경로 내 문서에만 반복되어 적용됩니다.

16. SKILL.md 파일명은 md/mdx camelCase 명명 규칙을 위반하지만, 이는 의도된 예외로 명확히 문서화되어야 한다. (target: agents, confidence: 0.95)

  • File: AGENTS.md
  • Evidence: #7252 packages/tanstack-react-query/skills/react-query-setup/SKILL.md, #7252 packages/server/skills/adapter-fetch/SKILL.md, #7252 packages/server/skills/trpc-router/SKILL.md
  • Reasoning: 이 패턴은 여러 경로에 걸쳐 반복되며, 파일명 명명 규칙과 예외 처리에 관한 전사적 코딩 가이드라인에 해당하므로 AGENTS.md와 같은 AI 에이전트 지침 문서에 저장하는 것이 적합하다.
  • Alternatives considered: path_scoped_rule: 파일명 규칙이 특정 경로에만 적용된다면 경로 범위 규칙으로 저장 가능하다.; pr_only: 특정 PR에만 국한된 경우 PR 전용으로 저장 가능하다.

17. querySerializerundefined 값을 JSON.stringify로 직렬화할 때, URLSearchParams.append()가 이를 문자열 "undefined"로 변환하는 문제와 responseTransformer의 특정 필드 검사 문제는 packages/openapi/src/heyapi 경로에 국한된 규칙이다. (target: path_scoped_rule, confidence: 0.90)

  • File: .claude/rules/queryserializer-undefined-jsonstringify-urlsearchp.instructions.md
  • Evidence: #7231 packages/openapi/src/heyapi/index.ts, #7231 packages/openapi/src/heyapi/index.ts
  • Reasoning: 이 패턴은 querySerializerresponseTransformer의 동작 방식에 관한 구체적이고 반복적인 문제로, 특정 경로인 packages/openapi/src/heyapi/index.ts에만 적용된다. 따라서 전역 에이전트 지침보다는 경로 범위 규칙으로 관리하는 것이 적절하다.
  • Alternatives considered: agents: 패턴이 여러 경로에 걸쳐 적용되는 전역 규칙일 경우; pr_only: 특정 PR에만 국한된 문제일 경우; none: 이미 문서화되어 있거나 중요하지 않은 경우

18. 이 에러 핸들러에서 resolveProcedureError 호출 시 프로시저의 declaredErrors 등록 리스트가 누락되어, 등록된 선언된 에러가 잘못 처리되는 문제가 반복적으로 지적됨. (target: path_scoped_rule, confidence: 0.90)

  • File: .claude/rules/resolveprocedureerror-declarederrors.instructions.md
  • Evidence: #7279 packages/server/src/adapters/ws.ts, #7279 packages/server/src/adapters/ws.ts
  • Reasoning: 이 패턴은 특정 파일 경로(packages/server/src/adapters/ws.ts) 내에서 반복적으로 발생하는 구체적인 구현 문제로, 해당 경로에 한정된 규칙으로 관리하는 것이 적절함. 이는 단일 PR에 국한되지 않고, 전체 해당 경로 코드의 일관성 유지에 도움이 됨.
  • Alternatives considered: pr_only: 문제가 특정 PR에만 국한되어 재사용 가능성이 낮음; agents: 전사적 규칙이라기보다는 특정 경로에 한정된 문제임; none: 중복된 문제지만 저장할 가치가 낮음

19. metadata-only 프레임에 대해 onSseEvent 호출을 건너뛰어야 하며, retry: 전용 청크가 data: undefined로 호출되는 문제를 방지해야 한다. (target: path_scoped_rule, confidence: 0.90)

  • File: .claude/rules/metadata-only-onsseevent-retry-data-undefined.instructions.md
  • Evidence: #7231 packages/openapi/test/routers/appRouter-heyapi/core/serverSentEvents.gen.ts, #7231 packages/openapi/test/routers/errorFormatterRouter-heyapi/core/serverSentEvents.gen.ts
  • Reasoning: 이 패턴은 serverSentEvents.gen.ts 파일들에서 반복적으로 나타나는 특정 경로에 국한된 규칙으로, metadata-only 프레임에 대한 onSseEvent 호출을 건너뛰는 것이 중요하다. 이는 여러 파일에서 동일한 문제로 지적되었으며, repo-wide 규칙보다는 특정 경로에 적용되는 규칙으로 관리하는 것이 적절하다.
  • Alternatives considered: agents: repo-wide AI 지침으로 관리할 수도 있으나, 이 문제는 특정 경로와 파일에 국한되어 있어 path_scoped_rule이 더 적합하다.; pr_only: 특정 PR에만 해당하는 문제일 수 있으나, 여러 파일에서 반복되어 나타나므로 pr_only는 부적절하다.

20. 서버 전송 이벤트 재시도 로직에서 초기 연결 시도에 재시도 예산을 사용하지 않고, AbortError 발생 시 재시도하지 않아야 한다는 규칙 (target: path_scoped_rule, confidence: 0.90)

  • File: .claude/rules/aborterror.instructions.md
  • Evidence: #7231 packages/openapi/test/routers/errorFormatterRouter-heyapi/core/serverSentEvents.gen.ts, #7231 packages/openapi/test/routers/appRouter-heyapi/core/serverSentEvents.gen.ts
  • Reasoning: 이 패턴은 serverSentEvents 관련 특정 경로 내에서 재시도 로직에 대한 일관된 규칙을 다루고 있어, 전체 레포가 아닌 해당 경로에 국한된 규칙으로 관리하는 것이 적절하다.
  • Alternatives considered: agents: 재시도 로직이 여러 기능에 걸쳐 적용된다면 전체 에이전트 지침에 포함할 수 있으나, 현재는 특정 경로에 한정됨.; pr_only: 특정 PR에만 해당하는 일회성 문제일 경우.

21. 릴리스 워크플로우에서 'pnpm add -g npm@latest' 사용은 비재현적이며, npm 버전을 고정하는 것이 안정적임. (target: path_scoped_rule, confidence: 0.95)

  • File: .claude/rules/pnpm-add-g-npmlatest-npm.instructions.md
  • Evidence: #7247 .github/workflows/release-tmp.yml, #7247 .github/workflows/release-canary.yml
  • Reasoning: 이 패턴은 릴리스 관련 GitHub 워크플로우 파일에 국한된 규칙으로, 특정 경로(.github/workflows/)에 적용되는 명확한 규칙이므로 path_scoped_rule로 분류함.
  • Alternatives considered: agents: 만약 이 규칙이 모든 코드베이스에 걸쳐 npm 버전 관리 정책으로 확장된다면 agents가 적합할 수 있음; pr_only: 특정 PR에만 국한된 경우 pr_only가 적합함

Safety

  • This PR was generated. Each draft requires human review before merge.
  • Full digest (skipped + needs_human_decision candidates included) is committed at docs/promote/digests/2026-05-22.md.

@gyulsbox gyulsbox closed this May 22, 2026
@gyulsbox
gyulsbox deleted the promote/2026-05-22-290396 branch May 22, 2026 17:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant