[#noissue] Add .claude directory for Claude code#13416
[#noissue] Add .claude directory for Claude code#13416jihea-park wants to merge 2 commits intopinpoint-apm:masterfrom
Conversation
There was a problem hiding this comment.
Pull request overview
Adds a .claude workspace configuration (skills, rules, agents, and top-level guidance) to standardize Claude Code usage for Pinpoint Web Frontend v3.
Changes:
- Introduces Claude “skills” for common workflows (code review, create page/component/API hook, add translation).
- Adds project “rules” documents for routing, state management, API hooks, testing, i18n, etc.
- Adds specialized Claude agents (explorer/debugger/code-reviewer) and a repository
CLAUDE.mdguide.
Reviewed changes
Copilot reviewed 19 out of 19 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
| web-frontend/src/main/v3/packages/.claude/skills/review-code/SKILL.md | Defines a code review skill and its tool/agent configuration |
| web-frontend/src/main/v3/packages/.claude/skills/create-page/SKILL.md | Documents the workflow/template for adding a new routed page |
| web-frontend/src/main/v3/packages/.claude/skills/create-component/SKILL.md | Documents component creation conventions and templates |
| web-frontend/src/main/v3/packages/.claude/skills/create-api-hook/SKILL.md | Documents creation of React Query API hooks and types/endpoints |
| web-frontend/src/main/v3/packages/.claude/skills/add-translation/SKILL.md | Documents adding i18n keys to en/ko locale JSON |
| web-frontend/src/main/v3/packages/.claude/rules/testing.md | Adds testing rules/patterns for TS/TSX test files |
| web-frontend/src/main/v3/packages/.claude/rules/state-management.md | Adds state management rules for URL/Jotai/React Query layering |
| web-frontend/src/main/v3/packages/.claude/rules/routing.md | Adds routing rules and conventions for loaders and paths |
| web-frontend/src/main/v3/packages/.claude/rules/monorepo.md | Summarizes monorepo structure and dependency rules |
| web-frontend/src/main/v3/packages/.claude/rules/i18n.md | Adds i18n usage and translation conventions |
| web-frontend/src/main/v3/packages/.claude/rules/components.md | Adds rules for page/domain/ui components and styling |
| web-frontend/src/main/v3/packages/.claude/rules/code-style.md | Adds formatting, TS, import, naming, ESLint conventions |
| web-frontend/src/main/v3/packages/.claude/rules/code-review-policy.md | Adds a (Claude-consumable) review/checklist policy |
| web-frontend/src/main/v3/packages/.claude/rules/api-hooks.md | Adds rules/examples for API hook creation and usage |
| web-frontend/src/main/v3/packages/.claude/agents/explorer/explorer.md | Adds an “explorer” agent definition for codebase navigation |
| web-frontend/src/main/v3/packages/.claude/agents/debugger/debugger.md | Adds a “debugger” agent definition for troubleshooting |
| web-frontend/src/main/v3/packages/.claude/agents/code-reviewer/code-reviewer.md | Adds a “code-reviewer” agent definition for PR reviews |
| web-frontend/src/main/v3/packages/.claude/CLAUDE.md | Adds top-level repo guidance (commands, architecture, conventions) |
| web-frontend/src/main/v3/.claude | Points Claude tooling at the packages/.claude directory |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| description: Review code changes against Pinpoint project conventions. Use for pre-commit or PR review. | ||
| argument-hint: "[file-or-directory]" | ||
| context: fork | ||
| agent: Explore |
There was a problem hiding this comment.
agent: Explore likely won’t resolve to any defined agent (the added agent is explorer). Update this to match the actual agent name so the skill can be executed with the intended agent.
| agent: Explore | |
| agent: explorer |
| - Parse application from URL params | ||
| - Validate date range against `periodMax` configuration | ||
| - Redirect with corrected dates if invalid | ||
|
|
There was a problem hiding this comment.
The example code uses {PageName} placeholders that produce invalid TypeScript/JSX if copied literally (e.g., import { ..., {PageName}Page } ... and <{PageName}Page />). Use a copy-pastable placeholder style (e.g., PageNamePage or {{PageName}}Page) and clearly indicate what should be replaced.
| 2. Read `packages/ui/src/constants/locales/ko.json` | ||
| 3. Determine the correct section based on the key prefix (COMMON, SERVER_MAP, TRANSACTION, etc.) | ||
| 4. Add the key to BOTH files in the correct section, maintaining alphabetical order within the section | ||
| 5. If Korean text is not provided, add the English text as a placeholder with a `TODO` comment |
There was a problem hiding this comment.
This instruction suggests adding a TODO comment into en.json / ko.json, but JSON doesn’t support comments and this can break parsing/builds. Recommend instead using a clearly-marked placeholder string value (e.g., prefix the value with TODO:) or tracking missing translations outside the JSON files.
| 5. If Korean text is not provided, add the English text as a placeholder with a `TODO` comment | |
| 5. If Korean text is not provided, add a placeholder Korean value that starts with `TODO:` followed by the English text (for example: `"TODO: " + English text`) |
| export const useGetNewData = (params: { /* hook params */ }) => { | ||
| const queryString = new URLSearchParams({ ... }).toString(); | ||
|
|
||
| return useQuery<GetNewData.Response>({ | ||
| queryKey: [END_POINTS.NEW_ENDPOINT, queryString], | ||
| queryFn: queryFn(`${END_POINTS.NEW_ENDPOINT}?${queryString}`), | ||
| enabled: !!requiredParam, |
There was a problem hiding this comment.
The hook example references requiredParam but doesn’t define it, which makes the guidance ambiguous and easy to copy incorrectly. Consider using an explicit, consistent condition (e.g., something derived from params) aligned with the repo’s API-hook rule examples.
| export const useGetNewData = (params: { /* hook params */ }) => { | |
| const queryString = new URLSearchParams({ ... }).toString(); | |
| return useQuery<GetNewData.Response>({ | |
| queryKey: [END_POINTS.NEW_ENDPOINT, queryString], | |
| queryFn: queryFn(`${END_POINTS.NEW_ENDPOINT}?${queryString}`), | |
| enabled: !!requiredParam, | |
| export const useGetNewData = (params: GetNewData.Parameters) => { | |
| const queryString = new URLSearchParams({ | |
| applicationName: params.applicationName, | |
| from: String(params.from), | |
| to: String(params.to), | |
| // ... other params | |
| }).toString(); | |
| const hasRequiredParams = | |
| !!params.applicationName && params.from != null && params.to != null; | |
| return useQuery<GetNewData.Response>({ | |
| queryKey: [END_POINTS.NEW_ENDPOINT, queryString], | |
| queryFn: queryFn(`${END_POINTS.NEW_ENDPOINT}?${queryString}`), | |
| enabled: hasRequiredParams, |
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## master #13416 +/- ##
============================================
- Coverage 33.11% 33.10% -0.01%
- Complexity 10974 10976 +2
============================================
Files 4066 4066
Lines 94355 94350 -5
Branches 9816 9817 +1
============================================
- Hits 31242 31237 -5
- Misses 60431 60432 +1
+ Partials 2682 2681 -1 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
- Fix JSON comment issue in add-translation skill: use [TODO] prefix in value instead of comments (JSON does not support comments) - Fix review-code skill agent reference: Explore → explorer (match defined agent name) - Fix create-api-hook skill template: use convertParamsToQueryString and proper typed params consistent with api-hooks rule - Fix create-page skill template: clarify placeholder syntax with explicit comment - Restrict code-reviewer agent Bash access to git read-only commands - Remove hardcoded counts from explorer agent project map to avoid staleness - Replace deprecated keepPreviousData with placeholderData in state-management rule and create-api-hook skill Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|



No description provided.