@buivietphi/skill-mobile-mt 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/AGENTS.md ADDED
@@ -0,0 +1,482 @@
1
+ # Skill Mobile MT — Agent Rules
2
+
3
+ > Multi-agent compatibility layer for Claude Code, Cline, Roo Code, Cursor, Windsurf, Copilot, Codex, Gemini CLI, Kimi, Kilo Code, Kiro, Antigravity, and all Agent Skills-compatible tools.
4
+
5
+ ---
6
+
7
+ ## Agent Compatibility Matrix
8
+
9
+ | Agent | How it loads rules | Setup | Think Block |
10
+ |-------|-------------------|-------|-------------|
11
+ | Claude Code | `~/.claude/skills/` (auto) | `npx skill-mobile-mt --claude` | `<think>...</think>` |
12
+ | **Cline** | **`.clinerules/` in project root** | **`npx skill-mobile-mt --init cline`** | Inline reasoning |
13
+ | **Roo Code** | **`.roo/rules/` in project root** | **`npx skill-mobile-mt --init roocode`** | Inline reasoning |
14
+ | **Cursor** | **`.cursorrules` in project root** | **`npx skill-mobile-mt --init cursor`** | Inline reasoning |
15
+ | **Windsurf** | **`.windsurfrules` in project root** | **`npx skill-mobile-mt --init windsurf`** | Inline reasoning |
16
+ | **Copilot** | **`.github/copilot-instructions.md`** | **`npx skill-mobile-mt --init copilot`** | `// PLAN:` comments |
17
+ | Codex | `~/.codex/skills/` (auto) | `npx skill-mobile-mt --codex` | `<think>...</think>` |
18
+ | Gemini CLI | `~/.gemini/skills/` (auto) | `npx skill-mobile-mt --gemini` | `## Thinking:` block |
19
+ | Kimi | `~/.kimi/skills/` (manual) | `npx skill-mobile-mt --kimi` | `【思考】` or markdown |
20
+ | **Kilo Code** | **`.kilocode/rules/` in project root** | **`npx skill-mobile-mt --init kilocode`** | Inline reasoning |
21
+ | **Kiro** | **`.kiro/steering/` in project root** | **`npx skill-mobile-mt --init kiro`** | Inline reasoning |
22
+ | Antigravity | `~/.agents/skills/` (auto) | `npx skill-mobile-mt --antigravity` | Agent-native format |
23
+
24
+ ---
25
+
26
+ ## Full File Structure
27
+
28
+ ```
29
+ skill-mobile-mt/
30
+ ├── SKILL.md ← Entry point. Always load first.
31
+ ├── AGENTS.md ← This file. Multi-agent config.
32
+
33
+ ├── react-native/
34
+ │ └── react-native.md ← RN + Expo patterns (5,108 tokens)
35
+
36
+ ├── flutter/
37
+ │ └── flutter.md ← Flutter + Dart 3.x patterns (2,100 tokens)
38
+
39
+ ├── ios/
40
+ │ └── ios-native.md ← Swift + UIKit/SwiftUI patterns (1,452 tokens)
41
+
42
+ ├── android/
43
+ │ └── android-native.md ← Kotlin + Compose + Java legacy patterns (4,400 tokens)
44
+
45
+ └── shared/
46
+
47
+ ├── ── CORE (always load) ──────────────────────────────────
48
+ ├── code-review.md ← Senior review checklist (865 tokens)
49
+ ├── bug-detection.md ← Auto bug scanner (499 tokens)
50
+ ├── prompt-engineering.md ← Auto-think + XML templates (3,927 tokens)
51
+
52
+ ├── ── ON-DEMAND (load by task) ────────────────────────────
53
+ ├── error-recovery.md ← 16 build/runtime error fixes (2,435 tokens)
54
+ ├── document-analysis.md ← Parse images/PDFs/DOCX → code (1,200 tokens)
55
+ ├── anti-patterns.md ← PII, cardinality, payload detection (2,800 tokens)
56
+ ├── performance-prediction.md ← Frame budget, FPS prediction (1,500 tokens)
57
+ ├── platform-excellence.md ← iOS 18+ vs Android 15+ UX + HIG (2,200 tokens)
58
+ ├── version-management.md ← SDK compat matrix + release testing (3,500 tokens)
59
+ ├── observability.md ← Sessions as 4th pillar (3,000 tokens)
60
+ ├── architecture-intelligence.md ← Patterns from 30+ production repos (4,500 tokens)
61
+ ├── common-pitfalls.md ← Known issue patterns (1,160 tokens)
62
+ ├── release-checklist.md ← App Store/Play Store checklist (587 tokens)
63
+
64
+ ├── offline-first.md ← Local-first + sync patterns (2,566 tokens)
65
+ ├── testing-strategy.md ← Detox + Maestro + XCUITest + Espresso E2E (2,200 tokens)
66
+ ├── ci-cd.md ← GitHub Actions CI templates (2,500 tokens)
67
+ ├── ai-dlc-workflow.md ← AI-DLC structured workflow for complex features (2,500 tokens)
68
+ ├── ui-ux-mobile.md ← Design system, screen templates, touch, navigation, a11y (5,500 tokens)
69
+
70
+ ├── ── TEMPLATES (copy to your project) ────────────────────
71
+ ├── claude-md-template.md ← CLAUDE.md for Claude Code (copy to project root)
72
+ └── agent-rules-template.md ← Rules for ALL agents: Cursor/.cursorrules, Windsurf/.windsurfrules, Copilot/.github/copilot-instructions.md, Codex/AGENTS.md, Gemini/GEMINI.md, Antigravity YAML
73
+ ```
74
+
75
+ **Token totals:**
76
+ - Smart load (1 platform + core shared): **~40,900 tokens** (31.9% of 128K)
77
+ - Full load (all files): **~77,000 tokens** (60.2% of 128K)
78
+
79
+ ---
80
+
81
+ ## When Smart Load vs Full Load
82
+
83
+ ### Smart Load (default — always used)
84
+
85
+ **Triggered by:** `@skill-mobile-mt` or `@skill-mobile-mt project`
86
+
87
+ **Loads automatically:**
88
+ ```
89
+ SKILL.md (~13,200 tokens)
90
+ + 1 platform file (~1,580–5,730 tokens depending on platform)
91
+ + shared/code-review.md (~1,500 tokens)
92
+ + shared/bug-detection.md (~800 tokens)
93
+ + shared/prompt-engineering.md (~5,600 tokens)
94
+ ─────────────────────────────────────────────────
95
+ ≈ 38,600 tokens total (estimated)
96
+ ```
97
+
98
+ **Use case:** Regular coding, new features, code review. Covers 90% of daily work.
99
+
100
+ ---
101
+
102
+ ### On-Demand Load (triggered automatically by task type)
103
+
104
+ The agent reads the task, then decides which extra file to load:
105
+
106
+ | Task the user asks for | File loaded |
107
+ |------------------------|-------------|
108
+ | "Fix this crash / build error" | `shared/error-recovery.md` |
109
+ | "Read this screenshot / PDF / DOCX" | `shared/document-analysis.md` |
110
+ | "Add analytics / logging / crash tracking" | `shared/anti-patterns.md` + `shared/observability.md` |
111
+ | "Build a FlatList / animation" | `shared/performance-prediction.md` |
112
+ | "Make it feel native on iOS/Android" | `shared/platform-excellence.md` |
113
+ | "Install this package / upgrade SDK" | `shared/version-management.md` |
114
+ | "Prepare for App Store / Play Store" | `shared/release-checklist.md` |
115
+ | "Weird issue, not sure why" | `shared/common-pitfalls.md` |
116
+ | "Write / run E2E tests" | `shared/testing-strategy.md` |
117
+ | "Setup CI/CD / GitHub Actions" | `shared/ci-cd.md` |
118
+ | "Big feature / multi-screen" | `shared/ai-dlc-workflow.md` |
119
+ | "Create/design screen / demo UI" | `shared/ui-ux-mobile.md` |
120
+
121
+ **Load cost:** +500 to +3,500 tokens per on-demand file.
122
+
123
+ ---
124
+
125
+ ### Full Load (never automatic — AI reads all files)
126
+
127
+ **No automatic trigger.** Full load happens when the AI reads every file without being selective — either because it's over-eager, or because the user explicitly asks for it.
128
+
129
+ **Total:** ~72,300 tokens (56.5% of 128K, 36% of 200K)
130
+
131
+ **How it actually works:**
132
+ - `@skill-mobile-mt` only injects SKILL.md into context
133
+ - From there, the AI uses the `Read` tool to open additional files
134
+ - Smart load = AI reads selectively (only what the task needs)
135
+ - Full load = AI reads every file in shared/ + all platform files
136
+
137
+ **When full load makes sense:**
138
+ - User says "load everything" or "give me a full audit"
139
+ - New project setup where all patterns are relevant simultaneously
140
+ - Cross-platform (iOS + Android + RN) with all shared patterns needed
141
+ - Antigravity agent configured to load all files upfront
142
+
143
+ **When it's wasteful:**
144
+ - Single focused task ("fix this bug", "add this screen") — loads 3x more tokens than needed
145
+ - Single-platform projects — loading all 4 platform files is waste
146
+
147
+ ---
148
+
149
+ ## Antigravity Configuration
150
+
151
+ ```yaml
152
+ skill:
153
+ name: skill-mobile-mt
154
+ version: "1.4.2"
155
+ author: buivietphi
156
+ category: engineering
157
+ tags:
158
+ - mobile
159
+ - react-native
160
+ - flutter
161
+ - ios
162
+ - android
163
+ - clean-architecture
164
+ - code-review
165
+ - senior
166
+
167
+ modes:
168
+ default:
169
+ description: "Use pre-built production patterns from 18 real mobile apps"
170
+ loads:
171
+ # Core — always
172
+ - SKILL.md
173
+ - "{detected-platform}/{platform}.md"
174
+ - shared/code-review.md
175
+ - shared/bug-detection.md
176
+ - shared/prompt-engineering.md
177
+ # On-demand — add based on task
178
+ # - shared/error-recovery.md
179
+ # - shared/anti-patterns.md
180
+ # - shared/performance-prediction.md
181
+ # - shared/platform-excellence.md
182
+ # - shared/version-management.md
183
+ # - shared/observability.md
184
+ # - shared/document-analysis.md
185
+ # - shared/release-checklist.md
186
+ # - shared/common-pitfalls.md
187
+
188
+ project:
189
+ description: "Read current project, adapt to its framework and conventions"
190
+ argument: "project"
191
+ loads:
192
+ - SKILL.md (Section: Project Adaptation)
193
+ - "{detected-platform}/{platform}.md"
194
+ - shared/code-review.md
195
+ - shared/bug-detection.md
196
+ - shared/prompt-engineering.md
197
+
198
+ platform_detection:
199
+ react-native:
200
+ detect: "package.json contains 'react-native' or 'expo'"
201
+ load: "react-native/react-native.md"
202
+ flutter:
203
+ detect: "pubspec.yaml exists"
204
+ load: "flutter/flutter.md"
205
+ ios:
206
+ detect: "*.xcodeproj or *.xcworkspace exists (without pubspec.yaml)"
207
+ load: "ios/ios-native.md"
208
+ android:
209
+ detect: "build.gradle exists (without package.json or pubspec.yaml)"
210
+ load: "android/android-native.md"
211
+
212
+ language_detection:
213
+ typescript: ".tsx/.ts files in src/"
214
+ javascript: ".jsx/.js files in src/"
215
+ dart: ".dart files in lib/"
216
+ swift: ".swift files"
217
+ kotlin: ".kt files"
218
+ java: ".java files in app/src/"
219
+
220
+ context_budget:
221
+ max_tokens: 77000
222
+ smart_load_tokens: 40900
223
+ savings: "~47%"
224
+ ```
225
+
226
+ ---
227
+
228
+ ## File Loading Rules for All Agents
229
+
230
+ ### Smart Loading Protocol
231
+
232
+ Every agent MUST follow this loading sequence:
233
+
234
+ ```
235
+ 1. ALWAYS load: SKILL.md (entry point, auto-detect, universal principles)
236
+
237
+ 2. AUTO-DETECT project:
238
+ - Framework (React Native / Flutter / iOS / Android)
239
+ - Language (TypeScript / JavaScript / Dart / Swift / Kotlin / Java)
240
+ - Package manager (yarn / npm / pnpm / bun / flutter pub / pod)
241
+ - State management
242
+ - Navigation
243
+
244
+ 3. LOAD the matching platform subfolder:
245
+ - react-native/react-native.md (only if RN/Expo)
246
+ - flutter/flutter.md (only if Flutter)
247
+ - ios/ios-native.md (only if iOS native)
248
+ - android/android-native.md (only if Android native)
249
+
250
+ 4. Cross-platform? Load multiple:
251
+ - Flutter → also load ios/ + android/ (native modules)
252
+ - React Native → also load ios/ + android/ (native modules)
253
+
254
+ 5. ALWAYS load shared/ (core):
255
+ - shared/code-review.md
256
+ - shared/bug-detection.md
257
+ - shared/prompt-engineering.md
258
+
259
+ 6. LOAD shared/ (on-demand, based on task):
260
+ - shared/error-recovery.md (when debugging build/runtime errors)
261
+ - shared/document-analysis.md (when reading images, PDFs, DOCX)
262
+ - shared/anti-patterns.md (when reviewing or writing observability code)
263
+ - shared/performance-prediction.md (when building lists, animations, heavy screens)
264
+ - shared/platform-excellence.md (when implementing platform-specific UX)
265
+ - shared/version-management.md (when installing packages or upgrading SDK)
266
+ - shared/observability.md (when adding logging, analytics, crash tracking)
267
+ - shared/common-pitfalls.md (when encountering unfamiliar errors)
268
+ - shared/release-checklist.md (when preparing for App Store/Play Store submission)
269
+
270
+ 7. SKIP non-matching platform subfolders (saves ~66% context)
271
+ ```
272
+
273
+ ### Loading Priority
274
+
275
+ ```
276
+ Priority 1 (CRITICAL): SKILL.md — Auto-detect, mode selection, principles
277
+ Priority 2 (HIGH): {platform}/{platform}.md — Framework-specific patterns
278
+ Priority 3 (MEDIUM): shared/code-review.md — Review checklist
279
+ Priority 4 (MEDIUM): shared/bug-detection.md — Auto-scanner
280
+ Priority 5 (MEDIUM): shared/prompt-engineering.md — Auto-think templates
281
+ Priority 6 (ON-DEMAND): shared/error-recovery.md — Build/runtime error fixes
282
+ Priority 6 (ON-DEMAND): shared/anti-patterns.md — PII, cardinality, payload detection
283
+ Priority 6 (ON-DEMAND): shared/performance-prediction.md — Frame budget calculations
284
+ Priority 6 (ON-DEMAND): shared/platform-excellence.md — iOS 18+ vs Android 15+ UX
285
+ Priority 6 (ON-DEMAND): shared/version-management.md — SDK compatibility matrix
286
+ Priority 6 (ON-DEMAND): shared/observability.md — Sessions as 4th pillar
287
+ Priority 6 (ON-DEMAND): shared/document-analysis.md — Parse images/PDFs → code
288
+ Priority 6 (ON-DEMAND): shared/release-checklist.md — Pre-release verification
289
+ Priority 6 (ON-DEMAND): shared/common-pitfalls.md — Known issue patterns
290
+ Priority 6 (ON-DEMAND): shared/testing-strategy.md — Detox + Maestro + XCUITest + Espresso E2E
291
+ Priority 6 (ON-DEMAND): shared/ci-cd.md — GitHub Actions CI/CD templates
292
+ Priority 6 (ON-DEMAND): shared/ai-dlc-workflow.md — AI-DLC structured workflow for complex features
293
+ Priority 6 (ON-DEMAND): shared/ui-ux-mobile.md — Screen templates, design tokens, components, dark mode
294
+ ```
295
+
296
+ ---
297
+
298
+ ## Agent-Specific Behavior
299
+
300
+ ### Claude Code
301
+ - Supports `$ARGUMENTS` — use `project` to trigger project mode
302
+ - Can invoke sub-files via Read tool from subfolders
303
+ - Full tool access for project scanning and auto-detect
304
+
305
+ ### Codex
306
+ - Load SKILL.md as system context or prepend to conversation
307
+ - Reference subfolder files with Read tool when needed
308
+ - Use `project` keyword to trigger project adaptation mode
309
+
310
+ ### Gemini CLI
311
+ - Load SKILL.md as system context
312
+ - Parse mode from user prompt ("use project mode" or default)
313
+ - Reference subfolder files as needed
314
+
315
+ ### Kimi
316
+ - Load SKILL.md as knowledge base
317
+ - Supports both Chinese and English prompts
318
+ - Think blocks use `【思考】` format
319
+
320
+ ### Cline
321
+ - Reads `.clinerules/` directory from project root (also supports `.clinerules` single file)
322
+ - Also reads from `~/.cline/skills/` for global skills
323
+ - Run `npx @buivietphi/skill-mobile-mt --init cline` to generate `.clinerules/mobile-rules.md`
324
+ - Supports conditional rules with YAML frontmatter `paths:` field
325
+
326
+ ### Roo Code
327
+ - Reads `.roo/rules/` directory from project root (recursive, multi-file)
328
+ - Also reads from `~/.roo/skills/` for global skills
329
+ - Supports mode-specific rules: `.roo/rules-code/`, `.roo/rules-architect/`
330
+ - Run `npx @buivietphi/skill-mobile-mt --init roocode` to generate `.roo/rules/mobile-rules.md`
331
+ - Auto-loads `AGENTS.md` from workspace root
332
+
333
+ ### Cursor
334
+ - Reads `.cursorrules` from project root
335
+ - Run `npx @buivietphi/skill-mobile-mt --init cursor` to generate `.cursorrules`
336
+ - The generated file includes auto-detected framework, rules, and security patterns
337
+ - Think blocks embedded as inline reasoning in Composer
338
+
339
+ ### GitHub Copilot
340
+ - Reads `.github/copilot-instructions.md` from project
341
+ - Run `npx @buivietphi/skill-mobile-mt --init copilot` to generate the file
342
+ - The generated file includes code patterns, required templates, and rules
343
+ - Think blocks as `// PLAN:` comments before code
344
+
345
+ ### Windsurf
346
+ - Reads `.windsurfrules` from project root
347
+ - Run `npx @buivietphi/skill-mobile-mt --init windsurf` to generate `.windsurfrules`
348
+ - The generated file includes coding rules, security rules, and architecture patterns
349
+ - Think blocks as inline reasoning
350
+
351
+ ### Kilo Code
352
+ - Reads `.kilocode/rules/` directory from project root
353
+ - Also reads from `~/.kilocode/rules/` for global rules
354
+ - Supports mode-specific rules: `.kilocode/rules-code/`, `.kilocode/rules-architect/`
355
+ - Run `npx @buivietphi/skill-mobile-mt --init kilocode` to generate `.kilocode/rules/mobile-rules.md`
356
+ - Auto-loads `AGENTS.md` from workspace root
357
+
358
+ ### Kiro (AWS)
359
+ - Reads `.kiro/steering/` directory from project root
360
+ - Also reads from `~/.kiro/steering/` for global steering
361
+ - Uses YAML frontmatter with `inclusion: always|fileMatch|manual|auto`
362
+ - Run `npx @buivietphi/skill-mobile-mt --init kiro` to generate `.kiro/steering/mobile-rules.md`
363
+ - Separate specs system in `.kiro/specs/` for feature development
364
+
365
+ ### Antigravity
366
+ - Orchestrator loads based on detected project type
367
+ - Follows `platform_detection` rules above
368
+ - Respects `context_budget` limits
369
+
370
+ ---
371
+
372
+ ## Project-Level Rules (Auto-Loaded Per Agent)
373
+
374
+ Each agent reads a specific file from the **user's project root** every session.
375
+ These are separate from the skill files — they go in the user's project, not in skill-mobile-mt/.
376
+
377
+ | Agent | File | Location |
378
+ |-------|------|----------|
379
+ | Claude Code | `CLAUDE.md` | Project root |
380
+ | Cline | `.clinerules/` directory | Project root |
381
+ | Roo Code | `.roo/rules/` directory | Project root |
382
+ | Cursor | `.cursorrules` | Project root |
383
+ | Windsurf | `.windsurfrules` | Project root |
384
+ | GitHub Copilot | `.github/copilot-instructions.md` | `.github/` folder |
385
+ | Codex | `AGENTS.md` | Project root |
386
+ | Gemini CLI | `GEMINI.md` | Project root |
387
+ | Kimi | No auto-load — paste as context | — |
388
+ | Kilo Code | `.kilocode/rules/` directory | Project root |
389
+ | Kiro | `.kiro/steering/` directory | Project root |
390
+ | Antigravity | YAML `context.rules` field | Antigravity config |
391
+
392
+ **Templates for all agents:** `shared/agent-rules-template.md`
393
+ Copy the relevant section to your project to enable auto-check rules in every session.
394
+
395
+ ```bash
396
+ # After installing skill-mobile-mt, find the templates at:
397
+ ~/.claude/skills/skill-mobile-mt/shared/agent-rules-template.md
398
+ ~/.claude/skills/skill-mobile-mt/shared/claude-md-template.md
399
+ ```
400
+
401
+ ---
402
+
403
+ ## Installation Paths
404
+
405
+ ### Skill directory install (agents that read from skills/)
406
+
407
+ ```bash
408
+ # Claude Code
409
+ ~/.claude/skills/skill-mobile-mt/
410
+
411
+ # Cline
412
+ ~/.cline/skills/skill-mobile-mt/
413
+
414
+ # Roo Code
415
+ ~/.roo/skills/skill-mobile-mt/
416
+
417
+ # Codex
418
+ ~/.codex/skills/skill-mobile-mt/
419
+
420
+ # Gemini CLI
421
+ ~/.gemini/skills/skill-mobile-mt/
422
+
423
+ # Kimi
424
+ ~/.kimi/skills/skill-mobile-mt/
425
+
426
+ # Kilo Code
427
+ ~/.kilocode/skills/skill-mobile-mt/
428
+
429
+ # Kiro
430
+ ~/.kiro/skills/skill-mobile-mt/
431
+
432
+ # Antigravity (shared agent directory)
433
+ ~/.agents/skills/skill-mobile-mt/
434
+
435
+ # Custom path
436
+ npx @buivietphi/skill-mobile-mt --path /your/custom/path
437
+ ```
438
+
439
+ ### Project-level files (agents that read from project root)
440
+
441
+ These agents read rules from project-level files. Use `--init` to generate them:
442
+
443
+ ```bash
444
+ # Generate all project-level files (interactive selector)
445
+ npx @buivietphi/skill-mobile-mt --init
446
+
447
+ # Generate specific agent file
448
+ npx @buivietphi/skill-mobile-mt --init cursor # → .cursorrules
449
+ npx @buivietphi/skill-mobile-mt --init cline # → .clinerules/mobile-rules.md
450
+ npx @buivietphi/skill-mobile-mt --init roocode # → .roo/rules/mobile-rules.md
451
+ npx @buivietphi/skill-mobile-mt --init copilot # → .github/copilot-instructions.md
452
+ npx @buivietphi/skill-mobile-mt --init windsurf # → .windsurfrules
453
+ npx @buivietphi/skill-mobile-mt --init kilocode # → .kilocode/rules/mobile-rules.md
454
+ npx @buivietphi/skill-mobile-mt --init kiro # → .kiro/steering/mobile-rules.md
455
+ npx @buivietphi/skill-mobile-mt --init all # → all files
456
+ ```
457
+
458
+ **What `--init` does:**
459
+ 1. Auto-detects your project (framework, language, state management, etc.)
460
+ 2. Generates rules files pre-filled with your detected stack
461
+ 3. Includes all mobile best practices, security rules, and quality gates
462
+ 4. Won't overwrite existing files (safe to run multiple times)
463
+
464
+ ---
465
+
466
+ ## Metadata
467
+
468
+ ```json
469
+ {
470
+ "id": "skill-mobile-mt",
471
+ "name": "skill-mobile-mt",
472
+ "version": "2.0.0",
473
+ "author": "buivietphi",
474
+ "category": "engineering",
475
+ "description": "Master Senior Mobile Engineer. Pre-built patterns from 30+ production repos + project adaptation. Auto-detects language and framework. React Native, Flutter, iOS, Android.",
476
+ "risk": "low",
477
+ "source": "buivietphi (MIT)",
478
+ "platforms": ["react-native", "flutter", "ios", "android"],
479
+ "languages": ["typescript", "javascript", "dart", "swift", "kotlin", "java"],
480
+ "agents": ["claude-code", "cline", "roo-code", "cursor", "windsurf", "copilot", "codex", "gemini", "kimi", "kilo-code", "kiro", "antigravity"]
481
+ }
482
+ ```