Skip to content

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

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

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

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

  • .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.mdmaxBatchSize 설정이 있어도 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.mdhasExpectedArtifacts() 함수가 출력 디렉토리 존재 여부만 확인하여 내부 파일이 삭제되거나 손상된 경우 캐시 히트가 잘못 발생할 수 있음. (candidate_020, confidence 0.95)
  • AGENTS.mdsubscribe() 호출 시 onError 핸들러 내에서 subscription.unsubscribe()를 호출할 때, subscription 변수가 const로 선언되어 초기화 중에 참조되는 문제를 방지하기 위해 let으로 선언하는 것을 권장한다. (candidate_021, confidence 0.90)
  • AGENTS.md — maxBatchSize가 NaN, Infinity, 음수, 0 또는 비정수일 경우 제한 조건이 제대로 작동하지 않으므로, 이를 방지하기 위해 maxBatchSize가 유한한 양의 정수인지 검증해야 한다. (candidate_025, confidence 0.95)
  • AGENTS.mdSKILL.md 파일명이 md/mdx 파일의 camelCase 명명 규칙을 위반하므로, 예외를 명시하거나 파일명을 camelCase로 변경해야 한다. (candidate_027, confidence 0.90)
  • .claude/rules/queryserializer-undefined-jsonstringify-urlsearchp.instructions.mdquerySerializerundefined 값을 처리할 때 JSON.stringifyURLSearchParams.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.mdpnpm 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

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

  • File: .claude/rules/wwwscriptscheck-twoslashts-non-null-assertion-unde.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 파일에 국한된 코딩 가이드라인 위반 사항으로, 특정 경로에 적용되는 규칙으로 분류하는 것이 적절하다. 여러 PR에서 반복적으로 지적되었으며, 이는 전사적 규칙보다는 해당 파일 또는 경로에 특화된 규칙이다.
  • Alternatives considered: agents: 만약 non-null assertion 사용 금지가 전사적 코딩 컨벤션이라면 agents 문서에 포함할 수 있다.; pr_only: 각 PR 별로만 의미가 있는 일회성 지적일 경우.

2. @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: 이 패턴은 여러 자동 생성된 클라이언트 코드 파일에서 반복적으로 나타나며, ESLint 규칙에 따라 @ts-expect-error 주석에 설명을 반드시 포함해야 한다는 점이 공통적이다. 이는 특정 경로 내 자동 생성 코드에만 적용되는 규칙으로, 향후 자동 생성기 설정이나 코드 생성 프로세스 개선에 도움이 되므로 path_scoped_rule로 분류했다.
  • Alternatives considered: agents: 만약 이 규칙이 모든 코드베이스에 걸쳐 적용된다면 repo-wide AI instruction에 포함할 수 있다.; pr_only: 각 PR에서만 개별적으로 적용되는 일회성 수정이라면 pr_only가 적합하다.

3. 레포지토리 내 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: 특정 경로에만 적용되지만, 이 경우는 도구 버전 관리 정책으로 더 넓은 범위에 적용됨

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

  • File: .claude/rules/beforeall-vitest-vitest-describeitexpect-beforeall.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 테스트 훅을 사용할 때 반드시 beforeAll을 임포트해야 한다는 구체적이고 반복적인 규칙으로, packages/openapi/test/ 경로에 국한되어 적용된다. 이는 테스트 관련 규칙이지만 특정 경로에 한정되어 있어 path_scoped_rule이 적합하다.
  • Alternatives considered: test: 테스트 관련 규칙이지만 이 경우는 특정 경로에 한정되어 있어 범용 테스트 규칙으로 보기는 어렵다.; agents: 테스트 훅 임포트 규칙이지만 모든 테스트 파일에 적용되는 일반 규칙이 아니라 특정 경로에 집중되어 있다.

5. 패키지의 package.json에서 bin 필드에 명시된 실행 파일 경로가 files 배열에 포함되어 있지 않으면, 해당 실행 파일이 배포 시 누락되어 소비자에게 깨진 바이너리가 전달된다. 따라서 bin 디렉토리를 files에 반드시 포함시켜야 한다. (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: 이 패턴은 여러 패키지에서 반복적으로 나타나는 배포 설정 관련 규칙으로, 모든 패키지에 적용되는 공통된 관례이다. 따라서 특정 PR에 국한되지 않고, 전체 저장소의 패키지 관리 및 배포 관행에 관한 지침으로 AGENTS.md 같은 AI 에이전트 지침 문서에 저장하는 것이 적합하다.
  • Alternatives considered: pr_only: 각 PR에만 국한된 일회성 문제로 판단될 경우; path_scoped_rule: 특정 경로에만 적용되는 규칙일 경우; none: 이미 문서화되어 있거나 중요하지 않은 경우

6. 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: pr_only: 특정 PR에만 국한된 문제로 보일 경우; agents: 레포지토리 전반에 적용되는 일반적인 코딩 규칙일 경우; test: 런타임에서 반드시 지켜져야 하는 불변식일 경우

7. 여러 패키지에서 동일한 이름의 실행 파일(intent)을 노출하면 node_modules/.bin 내에서 충돌이 발생할 수 있으므로, 고유한 네임스페이스가 있는 실행 파일 이름을 사용하는 것이 권장됩니다. (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: 이 패턴은 여러 패키지에 걸쳐 반복적으로 나타나는 네이밍 충돌 문제로, 저장소 전반에 적용되는 실행 파일 명명 규칙과 관련된 지침으로서, 향후 개발자와 AI 에이전트가 참고할 수 있도록 에이전트 문서에 저장하는 것이 적합합니다.
  • Alternatives considered: pr_only: 이 지침은 특정 PR에만 국한된 문제이지만, 반복적으로 나타나므로 저장소 전반에 도움이 된다.; path_scoped_rule: 문제가 특정 경로에 국한되지 않고 여러 패키지에 걸쳐 발생한다.

8. 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: 만약 이 규칙이 저장소 전반에 걸친 React import 스타일이라면 agents가 적합하나, 현재는 특정 경로에 한정됨.; pr_only: 한 번의 PR에서만 지적된 일회성 문제라면 pr_only가 적합하나, 여러 파일에서 반복되어 나타남.
  • Human signal: 2 agreed

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

  • 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 경로 내 코드 생성 관련 스크립트에 국한된 문제로, 해당 경로에 한정된 규칙으로 관리하는 것이 적절함. 여러 PR에서 반복적으로 지적되었으며, 향후 이 경로 내 코드 생성 신뢰성을 높이기 위해 파일 존재 여부뿐 아니라 내부 파일 상태도 검사하는 규칙이 필요함.
  • Alternatives considered: pr_only: 특정 PR에만 국한된 문제로 보일 경우; agents: 전사적으로 적용되는 코드 생성 캐시 검증 규칙일 경우; test: 파일 존재 및 무결성 검증을 테스트로 강제할 경우

10. subscribe() 호출 시 onError 핸들러 내에서 subscription.unsubscribe()를 호출할 때, subscription 변수가 const로 선언되어 초기화 중에 참조되는 문제를 방지하기 위해 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이나 경로에 국한되지 않고, 전체 저장소에 적용할 수 있는 에이전트 지침으로 보존하는 것이 적절하다.
  • Alternatives considered: pr_only: 특정 PR에만 관련된 일회성 문제일 경우; none: 이미 문서화되어 있거나 중요하지 않은 경우

11. maxBatchSize가 NaN, Infinity, 음수, 0 또는 비정수일 경우 제한 조건이 제대로 작동하지 않으므로, 이를 방지하기 위해 maxBatchSize가 유한한 양의 정수인지 검증해야 한다. (target: agents, confidence: 0.95)

  • File: AGENTS.md
  • Evidence: #7191 packages/server/src/unstable-core-do-not-import/http/contentType.ts, #7191 packages/server/src/unstable-core-do-not-import/http/types.ts
  • Reasoning: 이 패턴은 여러 파일에서 반복적으로 나타나며, maxBatchSize 값 검증에 대한 일관된 규칙을 제시한다. 이는 특정 경로나 한 PR에 국한되지 않고, 여러 기능에 걸쳐 적용될 수 있는 일반적인 코드 품질 및 안정성 지침이므로 agents에 저장하는 것이 적합하다.
  • Alternatives considered: pr_only: 특정 PR에만 관련된 일회성 코드 문제일 경우; path_scoped_rule: 특정 경로에만 적용되는 규칙일 경우; none: 이미 문서화되어 있거나 중요하지 않은 경우

12. SKILL.md 파일명이 md/mdx 파일의 camelCase 명명 규칙을 위반하므로, 예외를 명시하거나 파일명을 camelCase로 변경해야 한다. (target: agents, confidence: 0.90)

  • 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: 이 패턴은 여러 PR에서 반복적으로 나타나며, repo-wide 파일명 규칙과 예외 처리에 관한 내용으로, 전체 저장소에 적용되는 AI 지침 문서에 포함하는 것이 적절하다.
  • Alternatives considered: pr_only: 특정 PR에만 관련된 일회성 문제일 경우; path_scoped_rule: 특정 경로에만 적용되는 규칙일 경우; none: 이미 문서화되어 있거나 중요하지 않은 경우

13. querySerializerundefined 값을 처리할 때 JSON.stringifyURLSearchParams.append()의 동작으로 인해 의도치 않은 문자열 "undefined"가 쿼리 파라미터에 포함되는 문제와 responseTransformer의 특정 필드 검사 방식에 대한 반복적인 지적입니다. (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: 이 패턴은 packages/openapi/src/heyapi/index.ts 경로에 국한된 구체적인 직렬화 및 응답 변환 로직에 관한 문제로, 해당 경로에 적용되는 규칙으로 저장하는 것이 적절합니다. 이는 범용적인 에이전트 지침보다는 특정 경로에 한정된 규칙이기 때문입니다.
  • Alternatives considered: agents: 만약 이 패턴이 여러 경로에 걸쳐 공통적으로 적용되는 직렬화 규칙이라면 에이전트 지침에 포함할 수 있습니다.; pr_only: 이 문제들이 특정 PR에만 국한된 일회성 문제라면 PR 전용 메모리에 저장할 수 있습니다.

14. 이 에러 핸들러에서 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)에 국한된 문제로, 해당 경로 내에서 일관된 에러 처리 규칙을 적용하는 것이 적절함. 이는 코드베이스 전반에 걸친 일반적인 규칙이라기보다는 특정 모듈의 구현 세부사항에 관한 것이므로 path_scoped_rule이 적합함.
  • Alternatives considered: pr_only: 이 문제는 특정 PR과 코드에만 해당되는 일회성 문제일 수 있음; agents: 에러 처리 관련 일반 규칙이라면 전체 에이전트 지침에 포함될 수 있음; none: 이미 문서화되었거나 중요하지 않은 문제일 수 있음

15. 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 파일들에서 반복적으로 나타나며, 특정 경로 내에서만 적용되는 규칙으로 보인다. 이는 cross-cutting convention이라기보다는 특정 경로에 국한된 구현 세부사항이므로 path_scoped_rule이 적합하다.
  • Alternatives considered: agents: 만약 이 규칙이 모든 이벤트 스트림 처리에 공통적으로 적용된다면 repo-wide AI instruction에 적합할 수 있다.; pr_only: 특정 PR에만 국한된 문제라면 pr_only가 적합하다.

16. 서버 전송 이벤트 재시도 로직에서 초기 연결 시도에 재시도 예산을 사용하지 않고, 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 관련 특정 경로 내에서 재시도 로직에 대한 명확한 규칙을 반복적으로 지적하고 있어, 전체 저장소보다는 해당 경로에 국한된 규칙으로 관리하는 것이 적절하다. 이는 재시도 횟수 계산과 AbortError 처리 방식에 관한 구체적인 구현 세부사항에 관한 내용이다.
  • Alternatives considered: agents: 재시도 로직이 여러 경로에 걸쳐 공통적으로 적용된다면 저장소 전체 AI 지침에 포함할 수 있으나, 현재는 특정 경로에 한정됨; pr_only: 특정 PR에만 해당되는 일회성 문제일 경우; none: 이미 문서화되어 있거나 중요하지 않은 경우

17. GitHub Actions 워크플로우에서 lerna publish 명령어가 git 태깅 및 푸시를 수행하므로, permissions.contents 권한 설정과 lerna 옵션(--no-push, --no-git-tag-version) 사용에 주의해야 한다. (target: path_scoped_rule, confidence: 0.90)

  • File: .claude/rules/github-actions-lerna-publish-git-permissionsconten.instructions.md
  • Evidence: #7247 .github/workflows/release-tmp.yml, #7247 .github/workflows/release-canary.yml
  • Reasoning: 이 패턴은 GitHub Actions 워크플로우 내 특정 경로(.github/workflows/)에 국한된 권한 설정과 lerna publish 사용 관련 규칙으로, 다른 영역에는 적용되지 않으므로 path_scoped_rule이 적합하다.
  • Alternatives considered: agents: 만약 이 권한 설정과 lerna 사용 규칙이 모든 워크플로우에 공통적으로 적용된다면 repo-wide AI instruction에 포함할 수 있다.; pr_only: 특정 PR에만 해당되는 일회성 권한 문제라면 pr_only가 적합하다.

18. 의존성 변경 시 package.json과 pnpm-lock.yaml 파일을 항상 동기화하여 CI 실패를 방지해야 합니다. (target: agents, confidence: 0.90)

  • File: AGENTS.md
  • Evidence: #7200 packages/react-query/package.json, #7200 package.json
  • Reasoning: 이 패턴은 여러 PR에서 반복적으로 나타나는 전사적 관행으로, 의존성 변경 후 반드시 lockfile을 재생성하고 커밋해야 한다는 중요한 개발 프로세스 지침을 담고 있습니다. 이는 특정 경로나 개별 PR에 국한되지 않고, 전체 저장소에 적용되는 규칙이므로 agents 문서에 기록하는 것이 적합합니다.
  • Alternatives considered: pr_only: 이 지침이 특정 PR에만 국한되어 반복되지 않는 경우.; path_scoped_rule: 이 규칙이 특정 경로에만 적용되는 경우.; none: 이미 문서화되어 있거나 중요하지 않은 경우.

19. pnpm add -g npm@latest는 릴리스를 비재현 가능하게 만들고 npm의 새로운 메이저/마이너 버전이 나올 때 예기치 않게 깨질 수 있으므로, 알려진 안정된 npm 버전을 고정하거나 Node에 번들된 npm 버전을 사용하는 것이 좋습니다. (target: agents, confidence: 0.95)

  • File: AGENTS.md
  • Evidence: #7247 .github/workflows/release-tmp.yml, #7247 .github/workflows/release-canary.yml
  • Reasoning: 이 패턴은 여러 릴리스 관련 워크플로우 파일에서 반복되며, 릴리스 도구 체인의 결정론적이고 안정적인 버전 관리를 위한 전사적 권장사항으로 보입니다. 따라서 특정 PR이나 경로에 국한되지 않고, 전체 저장소의 에이전트 지침 문서에 포함하는 것이 적절합니다.
  • Alternatives considered: pr_only: 패턴이 특정 PR에만 국한된 경우; path_scoped_rule: 특정 경로에만 적용되는 규칙인 경우; none: 이미 문서화되어 있거나 중요하지 않은 경우

20. CI 워크플로우에서 사용하는 CLI 버전을 package.json에 명시된 버전과 일치하도록 고정해야 한다. (target: agents, confidence: 0.95)

  • File: AGENTS.md
  • Evidence: #7252 .github/workflows/validate-skills.yml, #7252 .github/workflows/check-skills.yml
  • Reasoning: 여러 워크플로우 파일에서 동일한 문제인 CLI 버전 고정 누락이 반복적으로 지적되고 있으며, 이는 CI의 결정적 실행을 보장하기 위한 중요한 관행이다. 이 규칙은 특정 경로에 국한되지 않고, 여러 CI 관련 워크플로우에 적용되므로 repo-wide AI 지침 문서에 포함하는 것이 적절하다.
  • Alternatives considered: pr_only: 이 문제는 특정 PR에만 국한된 일회성 문제로 보기 어렵고, 반복적으로 나타나므로 pr_only는 부적절하다.; path_scoped_rule: 문제가 특정 경로에 한정되지 않고 여러 워크플로우 파일에 걸쳐 발생하므로 path_scoped_rule은 부적절하다.

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

  • File: AGENTS.md
  • Evidence: #7252 packages/next/skills/nextjs-pages-router/SKILL.md, #7252 packages/next/skills/nextjs-app-router/SKILL.md
  • Reasoning: 이 패턴은 여러 문서에서 반복적으로 나타나며, 마크다운 문서 작성 시 일관된 코드 블록 언어 지정 관행을 확립하는 데 도움이 됩니다. 이는 특정 경로에 국한되지 않고, 문서 작성 전반에 적용 가능한 규칙이므로 에이전트 지침 문서에 포함하는 것이 적절합니다.
  • Alternatives considered: path_scoped_rule: 만약 이 규칙이 특정 경로에만 적용된다면 경로 범위 규칙으로 분류할 수 있습니다.; pr_only: 일회성 PR에만 관련된 경우에는 PR 전용으로 분류할 수 있습니다.

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-7e4515 branch May 22, 2026 17:49
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