Skip to content

Commit 9e3dad2

Browse files
authored
Implement custom style editor support for NaverMapView (#161)
* docs: standardize claude pattern keywords and update documentation - Standardize keywords in all claude pattern files for consistency - Update CLAUDE.md pattern list table with new keyword format - Update claude commands and settings configuration - Update package dependencies * docs: complete pattern keyword standardization - Finalize keyword updates for remaining pattern files - Ensure consistent hyphenated keyword format across all patterns - Update CLAUDE.md with final pattern list table * feat: add expo example as submodule - Add mym0404/naver-map-expo-example as git submodule - Located at expoexample/ directory for easy access - Provides Expo SDK 54 integration example with full map features * feat: implement custom style editor support for NaverMapView ## Features - Add customStyleId prop to apply Naver Style Editor styles - Add onCustomStyleLoaded callback for successful style loading - Add onCustomStyleLoadFailed callback with error message - Support both iOS and Android platforms with native implementations ## Implementation Details - TypeScript: Added new props to NaverMapViewProps interface - Native Spec: Updated codegen specification with new props and events - iOS: Implemented setCustomStyleId with load/fail handlers using NMFMapView - Android: Implemented setCustomStyleId with OnCustomStyleLoadCallback - Example: Added toggle button and test with style ID bf462d9f-fa82-413d-ab7c-df9c5e3c9f7f - Docs: Added custom style guide in English and Korean ## Testing - Android build: ✅ Successful (gradlew assembleDebug) - Example app: Added "Custom Style" toggle for testing - Error handling: Proper error message parsing for both platforms ## Breaking Changes None - all new props are optional ## References - Style Editor: https://style-editor.map.naver.com * docs: add custom-style to Korean meta.json * fix: improve custom style API for iOS implementation - Remove unused _isRecycled flag - Fix setCustomStyleId method handler parameter names (LoadHandler/FailHandler) - Use local mapView variable for cleaner code - Simplify style clearing when customStyleId is nil * chore: update example iOS dependencies - Update library version from 2.5.6 to 2.6.1 - Update ReactCodegen checksums * docs: remove completed custom map styling milestone Remove custom map styling section from milestone documentation as the feature has been implemented * docs: remove redundant pattern detection section from CLAUDE.md Clean up duplicate keyword detection and command intent recognition instructions
1 parent 95fb4d2 commit 9e3dad2

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

47 files changed

+1316
-150
lines changed

.claude/commands/page-refer.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,20 +15,20 @@ This command retrieves saved session histories to restore context from previous
1515
### CLI Commands Used
1616

1717
```bash
18-
npx -y cc-self-refer page search <keyword> # Search pages by keyword
19-
npx -y cc-self-refer page list # List all pages
20-
npx -y cc-self-refer page view <id> # View specific page
18+
npx cc-self-refer page search <keyword> # Search pages by keyword
19+
npx cc-self-refer page list # List all pages
20+
npx cc-self-refer page view <id> # View specific page
2121
```
2222

2323
### Command Arguments
2424
- `id`: Page ID number (for view command)
2525
- `keyword`: Search keyword or phrase (for search command)
2626

2727
### Expected Workflow
28-
1. Search for relevant session pages using `npx -y cc-self-refer page search <keyword>` (keyword is generated by claude code from user input)
28+
1. Search for relevant session pages using `npx cc-self-refer page search <keyword>` (keyword is generated by claude code from user input)
2929
2. Check search results:
3030
- If search result contains sufficient session context, use that information directly
31-
- If search result only shows summary/metadata, use `npx -y cc-self-refer page view <id>` for complete session content
31+
- If search result only shows summary/metadata, use `npx cc-self-refer page view <id>` for complete session content
3232
3. **APPLY the session knowledge** to current development work:
3333
- Reference previous decisions and architectural choices
3434
- **Focus on continuing the development work based on past session context**

.claude/commands/page-save.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ This commadns run `cc-self-refer page create` commands with title
1313
### CLI Command Used
1414

1515
```bash
16-
npx -y cc-self-refer page create "<title>"
16+
npx cc-self-refer page create "<title>"
1717
```
1818

1919
### Command Arguments

.claude/commands/pattern-create.md

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,29 @@ Extract code snippet or common pattern in project and run cc-self-refer pattern
1313
### CLI Command Used
1414

1515
```bash
16-
npx -y cc-self-refer pattern create "<pattern-name>" "<keyword1>,<keyword2>,<keyword3>" "<language>" "<explanation>" <<'EOF'
16+
npx cc-self-refer pattern create "<pattern-name>" "<keyword1>,<keyword2>,<keyword3>" "<language>" "<explanation>" <<'EOF'
1717
<pattern-content>
1818
EOF
1919
```
2020

2121
### Command Arguments
2222
- `pattern-name`: Name of the code pattern, Don't include `pattern` in the name
23-
- `keywords`: Comma-separated **specific** keywords for pattern search and CLAUDE.md listing (required). Use only unique, pattern-specific terms. Avoid generic language names (javascript, nodejs, python) or broad categories. Focus on the distinctive aspects of the pattern (e.g., "commander", "subcommands", "cli-options" rather than "javascript, nodejs, cli")
23+
- `keywords`: Comma-separated keywords for pattern search (3-5 keywords recommended)
24+
- **DO**: Use conceptual terms that describe the pattern's purpose and functionality
25+
- **DO**: Include technology-specific terms when they're central to the pattern (e.g., "fabric", "turbo-module", "codegen")
26+
- **DO**: Focus on what the pattern DOES, not implementation details
27+
- **DON'T**: Use generic language names alone (javascript, typescript, python)
28+
- **DON'T**: Use specific class/method names unless they're widely recognized APIs
29+
- **DON'T**: Over-specify with implementation details
30+
31+
Examples:
32+
- ✅ GOOD: "fabric,component,props,events" (describes pattern purpose)
33+
- ✅ GOOD: "commands,imperative,async" (describes functionality)
34+
- ✅ GOOD: "validation,error-handling,schemas" (describes what it does)
35+
- ❌ BAD: "javascript,nodejs,function" (too generic)
36+
- ❌ BAD: "RCTViewComponentView,updateProps,initWithFrame" (too specific - API names)
37+
- ❌ BAD: "ios,objective-c,native" (only platform/language identifiers)
38+
2439
- `language`: Programming language (e.g., javascript, typescript, python, go, rust)
2540
- `explanation`: Brief explanation (1-2 sentences) of what this pattern does and when to use it
2641
- `pattern-content`: Complete code snippet or pattern content
@@ -143,7 +158,7 @@ Claude will:
143158
2. Generate <formatted content> with the above rules.
144159
3. Execute:
145160
```bash
146-
npx -y cc-self-refer pattern create "api-error-handler" "error,handler,api,utilities" "typescript" "Utility pattern for handling API errors in TypeScript applications with proper error typing." <<'EOF'
161+
npx cc-self-refer pattern create "api-error-handler" "error,handler,api,utilities" "typescript" "Utility pattern for handling API errors in TypeScript applications with proper error typing." <<'EOF'
147162
<formatted content>
148163
EOF
149164
```

.claude/commands/pattern-use.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,23 +14,23 @@ Retrieve and apply code patterns with `cc-self-refer pattern search` command
1414

1515
```bash
1616
# Search for patterns first
17-
npx -y cc-self-refer pattern search <keyword>
17+
npx cc-self-refer pattern search <keyword>
1818

1919
# View specific pattern
20-
npx -y cc-self-refer pattern view <id>
20+
npx cc-self-refer pattern view <id>
2121

2222
# List all patterns
23-
npx -y cc-self-refer pattern list
23+
npx cc-self-refer pattern list
2424
```
2525

2626
### Command Arguments
2727
- `id_or_keyword`: Pattern ID number or search keyword
2828

2929
### Expected Workflow
30-
1. Search for relevant patterns using `npx -y cc-self-refer pattern search`
30+
1. Search for relevant patterns using `npx cc-self-refer pattern search`
3131
2. Check search results:
3232
- If search result contains full pattern content, use that content directly
33-
- If search result only shows summary/metadata, use `npx -y cc-self-refer pattern view <number>` for complete content
33+
- If search result only shows summary/metadata, use `npx cc-self-refer pattern view <number>` for complete content
3434
3. **IMPLEMENT the actual code** using the printed content:
3535
- Apply the pattern's architectural principles and design decisions
3636
- **Focus on implementing working code, not just creating examples or documentation**

.claude/commands/plan-create.md

Lines changed: 47 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ This command initiates a comprehensive implementation planning process through e
1616

1717
```bash
1818
# Create the implementation plan after planning:
19-
npx -y cc-self-refer plan create "<plan-title>" <<'EOF'
19+
npx cc-self-refer plan create "<plan-title>" <<'EOF'
2020
<plan-content>
2121
EOF
2222
```
@@ -26,13 +26,44 @@ EOF
2626
## Interactive Planning Process
2727

2828
**Simple Workflow:**
29-
1. Ask what the user wants to plan
30-
2. Have a conversation to understand details
31-
3. Create the plan with CLI command
29+
1. Load existing patterns for context
30+
2. Ask what the user wants to plan
31+
3. Have a conversation to understand details (avoiding questions about existing patterns)
32+
4. Create the plan with CLI command (referencing patterns when applicable)
33+
34+
**MANDATORY: Load Patterns Before Planning**
35+
36+
**First, load all existing patterns into context:**
37+
```bash
38+
# Load pattern list
39+
npx cc-self-refer pattern list
40+
41+
# Search for relevant patterns based on initial understanding
42+
npx cc-self-refer pattern search "<relevant-keywords>"
43+
44+
# View specific patterns that might be useful
45+
npx cc-self-refer pattern view <pattern-id>
46+
```
47+
48+
**WHY THIS MATTERS:**
49+
- Avoid asking questions already answered in patterns
50+
- Reference existing solutions in the implementation plan
51+
- Use established code templates and architectures
52+
- Maintain consistency with project conventions
53+
54+
**PATTERN USAGE GUIDELINE:**
55+
- When writing implementation sections, actively consider if existing patterns apply
56+
- If a pattern matches the implementation need → Add "Use Pattern #[N]" inline
57+
- If no pattern exists → Write the implementation details normally
58+
- Don't force pattern usage where it doesn't naturally fit
59+
- Examples of when to reference patterns:
60+
- Component structure matches existing pattern → "Use Pattern #[N] for component template"
61+
- API client implementation exists → "Use Pattern #[N] for API integration"
62+
- Error handling pattern available → "Use Pattern #[N] for error handling"
3263

3364
**MANDATORY: Infinite Interactive Dialogue Process**
3465

35-
**Start by asking:**
66+
**Start by asking (AFTER loading patterns):**
3667
```
3768
What would you like to plan?
3869
@@ -45,26 +76,29 @@ Please describe:
4576
**CRITICAL: After every user response, analyze what implementation details are still missing and ask deeper questions. NEVER stop asking until you know exactly how to implement everything.**
4677

4778
**Self-Assessment Questions - Ask yourself after each user response:**
79+
- "Can any existing patterns solve this?" → Check patterns first
4880
- "What files exactly need to be created or modified?"
4981
- "What specific code changes are required?"
5082
- "What dependencies need to be installed?"
5183
- "What configuration changes are needed?"
5284
- "How will this integrate with existing code?"
5385
- "What testing approach should be used?"
86+
- "Which patterns should be referenced in the plan?"
5487

55-
**Continuous Implementation Deep-Dive Pattern:**
56-
- If user says "add authentication" → Ask: Which files handle auth? What database changes? JWT or sessions? Middleware needed? Registration flow? Password reset?
57-
- If user says "improve performance" → Ask: What specific bottlenecks? Which components are slow? Database queries? Frontend rendering? API endpoints? Caching strategy?
58-
- If user says "refactor components" → Ask: Which exact components? What's the new structure? How to maintain backwards compatibility? Migration steps?
88+
**Continuous Implementation Deep-Dive Pattern (Skip if covered by patterns):**
89+
- If user says "add authentication" → First check: Any auth patterns exist? If not, ask: Which files handle auth? What database changes? JWT or sessions? Middleware needed? Registration flow? Password reset?
90+
- If user says "improve performance" → First check: Any performance patterns exist? If not, ask: What specific bottlenecks? Which components are slow? Database queries? Frontend rendering? API endpoints? Caching strategy?
91+
- If user says "refactor components" → First check: Any refactoring patterns exist? If not, ask: Which exact components? What's the new structure? How to maintain backwards compatibility? Migration steps?
5992

60-
**Keep Digging Until You Know:**
61-
- Exact file paths that need changes
62-
- Specific functions/components to create/modify
93+
**Keep Digging Until You Know (Unless Pattern Already Provides):**
94+
- Exact file paths that need changes (or pattern references)
95+
- Specific functions/components to create/modify (or pattern usage)
6396
- Complete dependency list with versions
6497
- Step-by-step implementation sequence
6598
- All configuration changes required
6699
- Comprehensive testing strategy
67100
- Success criteria with measurable outcomes
101+
- Which patterns to apply and where
68102

69103
**Signs You Need More Implementation Details:**
70104
- You don't know exact file paths → ASK MORE
@@ -79,7 +113,7 @@ Please describe:
79113
After complete implementation understanding, create the plan using:
80114

81115
```bash
82-
npx -y cc-self-refer plan create "<plan-title>" <<'EOF'
116+
npx cc-self-refer plan create "<plan-title>" <<'EOF'
83117
<plan-content>
84118
EOF
85119
```

.claude/commands/plan-resolve.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ This command facilitates comprehensive execution of strategic plans by:
3838

3939
```bash
4040
# Step 1: Load the plan for implementation reference
41-
npx -y cc-self-refer plan view <id_or_keyword>
41+
npx cc-self-refer plan view <id_or_keyword>
4242
```
4343

4444
### Command Arguments

.claude/commands/spec-refer.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,21 +15,21 @@ This command retrieves stored project specifications to restore development cont
1515
### CLI Commands Used
1616

1717
```bash
18-
npx -y cc-self-refer spec search <keyword> # Search specs by keyword
19-
npx -y cc-self-refer spec list # List all specs
20-
npx -y cc-self-refer spec view <id> # View specific spec
18+
npx cc-self-refer spec search <keyword> # Search specs by keyword
19+
npx cc-self-refer spec list # List all specs
20+
npx cc-self-refer spec view <id> # View specific spec
2121
```
2222

2323
### Command Arguments
2424
- `id`: Spec ID number (for view command)
2525
- `keyword`: Search keyword or phrase (for search command)
2626

2727
### Expected Workflow
28-
1. Search for relevant specifications using `npx -y cc-self-refer spec search <keyword>` (keyword is generated by claude code from user input)
28+
1. Search for relevant specifications using `npx cc-self-refer spec search <keyword>` (keyword is generated by claude code from user input)
2929
2. Check search results:
3030
- If search result contains sufficient spec context, use that information directly
31-
- If search result only shows summary/metadata, use `npx -y cc-self-refer spec view <id>` for complete spec content
31+
- If search result only shows summary/metadata, use `npx cc-self-refer spec view <id>` for complete spec content
3232
3. **APPLY the specification knowledge** to current development work:
3333
- Reference project requirements and constraints
3434
- **Focus on implementing features based on spec context**
35-
- Integrate the spec knowledge directly into current task execution
35+
- Integrate the spec knowledge directly into current task execution

.claude/commands/spec.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ This command initiates a comprehensive specification creation process through ex
1616

1717
```bash
1818
# Create each specification file after planning:
19-
npx -y cc-self-refer spec create "<spec-title>" <<'EOF'
19+
npx cc-self-refer spec create "<spec-title>" <<'EOF'
2020
<spec-content>
2121
EOF
2222
```
@@ -80,7 +80,7 @@ Execute CLI commands to create each specification:
8080

8181
```bash
8282
# Example for e-commerce platform specifications
83-
npx -y cc-self-refer spec create "E-commerce Product Vision" <<'EOF'
83+
npx cc-self-refer spec create "E-commerce Product Vision" <<'EOF'
8484
# E-commerce Platform Product Vision
8585
8686
## Executive Summary
@@ -91,7 +91,7 @@ npx -y cc-self-refer spec create "E-commerce Product Vision" <<'EOF'
9191
...
9292
EOF
9393

94-
npx -y cc-self-refer spec create "User Personas and Journeys" <<'EOF'
94+
npx cc-self-refer spec create "User Personas and Journeys" <<'EOF'
9595
# User Personas and Customer Journeys
9696
9797
## Primary Personas

.claude/patterns/001-fabric-native-component.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
---
2-
keywords: fabric, native, component, react-native, codegen
2+
keywords: fabric,component,props,events,codegen
33
language: typescript
44
explanation: Defines React Native Fabric component using codegenNativeComponent with TypeScript props interface
55
---

.claude/patterns/002-codegen-native-commands.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
---
2-
keywords: codegen, native, commands, react-native, async, sync
2+
keywords: commands,imperative,async,native-methods,codegen
33
language: typescript
44
explanation: Defines imperative native methods using codegenNativeCommands for async/sync operations
55
---

0 commit comments

Comments
 (0)