Skills DirectorySkills Directory
SkillsLearnSecurityCategoriesDocsBlogPro
Sign InSubmit Skill
Skills Directory

Security-tested agent skills for Claude, coding agents, and AI workflows.

Directory

  • Browse Skills
  • All Skills A–Z
  • Claude Skills
  • Claude Code Skills
  • Agent Skills
  • Categories
  • Authors
  • Submit a Skill

Learn

  • Learn Hub
  • Install Claude Skills
  • Write SKILL.md
  • Skills vs MCP
  • Directories Compared

Security

  • Security
  • Methodology
  • Secure Claude Skills
  • Security Badges
  • Chrome Extension
  • Skill Manager

Company

  • About
  • Community
  • Blog
  • API Docs
  • Advertise

2026 Skills Directory. All rights reserved.

ProTermsPrivacyRefunds
Back to skills

Eisland Dev Add Maxexpand Tab

ASecurity

为 eIsland 灵动岛的 MaxExpand(全展开)模式添加一个新的 Tab 页面。当用户要求创建新的 MaxExpand 页面、添加全展开界面组件(如计算器、时钟、天气面板、便签、日历等)时使用此 skill。 即使用户只说"新建一个 maxexpand 界面"、"加个全展开页面"、"在 maxexpand 里加个 XX", 也应触发。此 skill 覆盖从类型注册、设置配置、懒加载/即时加载渲染到 i18n 国际化的全部 8 个 修改点,确保新 Tab 完整可用且可在设置中拖拽排序与切换可见性。

320 stars
0 votes
0 copies
0 views
Added 10/6/2026
developmenttypescriptbashreactgit

Security Analysis

A100/100

Pro scans all 2 files and shows the line behind each finding

Scanned 10/6/2026

$npx -y skills add JNTMTMTM/eIsland --skill eisland-dev-add-maxexpand-tab --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Eisland Dev Add Maxexpand Tab?

Add the live security badge to your README — it updates automatically with every re-scan.

Security grade badge for Eisland Dev Add Maxexpand Tab
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/jntmtmtm-eisland-dev-add-maxexpand-tab/badge)](https://www.skillsdirectory.com/skills/jntmtmtm-eisland-dev-add-maxexpand-tab)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
Files
SKILL.md
---
name: eisland-dev-add-maxexpand-tab
description: >
  为 eIsland 灵动岛的 MaxExpand(全展开)模式添加一个新的 Tab 页面。当用户要求创建新的
  MaxExpand 页面、添加全展开界面组件(如计算器、时钟、天气面板、便签、日历等)时使用此 skill。
  即使用户只说"新建一个 maxexpand 界面"、"加个全展开页面"、"在 maxexpand 里加个 XX",
  也应触发。此 skill 覆盖从类型注册、设置配置、懒加载/即时加载渲染到 i18n 国际化的全部 8 个
  修改点,确保新 Tab 完整可用且可在设置中拖拽排序与切换可见性。
---

# eIsland: 添加 MaxExpand Tab 页面

为灵动岛的全展开(MaxExpand)模式添加一个新的 Tab 页面。

## 前置确认

在开始前,向用户确认以下信息:

1. **Tab 名称** — kebab-case 目录名(如 `calculator`、`weather`、`calendar`)
2. **Tab 显示名** — 中文标签(如 `计算器`、`天气`、`日历`),用于设置界面和 i18n
3. **内容策略** — 选择一种:
   - `placeholder`(默认)— 创建空占位组件,后续填充
   - `skeleton` — 带基本骨架布局的占位组件

## 目录结构

每个 MaxExpand Tab 遵循统一的模块结构:

```
src/renderer/components/states/maxExpand/components/<tabName>/
├── index.ts                          # 模块入口,导出 Tab 组件
└── components/
    └── <TabName>Tab.tsx              # Tab 主组件
```

## 实现步骤

### Step 1: 创建 Tab 组件

**1a.** 创建目录和组件文件:

`src/renderer/components/states/maxExpand/components/<tabName>/components/<TabName>Tab.tsx`

```tsx
/*
 * eIsland - A sleek, Apple Dynamic Island inspired floating widget for Windows, built with Electron.
 * https://github.com/JNTMTMTM/eIsland
 *
 * Copyright (C) 2026 JNTMTMTM
 * Copyright (C) 2026 pyisland.com
 *
 * Original author: JNTMTMTM[](https://github.com/JNTMTMTM)
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 */

/**
 * @file <TabName>Tab.tsx
 * @description 最大展开模式 — <中文描述> Tab — 占位组件(内容留白)
 * @author 鸡哥
 */

import type { ReactElement } from 'react';

/**
 * <TabName> Tab — 最大展开模式下的<中文描述>面板(占位)
 */
export function <TabName>Tab(): ReactElement {
  return <div className="max-expand-tab-panel <tabName>-panel" />;
}
```

**1b.** 创建模块入口 `index.ts`:

```ts
/*
 * eIsland - ...(标准 GPL-3.0 头部)
 */

/**
 * @file index.ts
 * @description <中文描述>模块入口,导出 <TabName>Tab 组件
 * @author 鸡哥
 */

export { <TabName>Tab } from './components/<TabName>Tab';
```

### Step 2: 注册类型

**文件:** `src/renderer/store/types/index.ts`

在 `MaxExpandTab` 联合类型中添加新 Tab ID(放在 `'settings'` 之前):

```typescript
export type MaxExpandTab = '...' | '<tabName>' | 'settings';
```

### Step 3: 注册设置配置

**文件:** `src/renderer/components/states/maxExpand/components/setting/utils/settingsConfig.ts`

**3a.** 在 `MAXEXPAND_CONFIGURABLE_TABS` 数组末尾添加:
```typescript
export const MAXEXPAND_CONFIGURABLE_TABS: string[] = [
  // ... 已有项
  '<tabName>',
];
```

**3b.** 在 `MAXEXPAND_TAB_LABELS` 对象中添加:
```typescript
export const MAXEXPAND_TAB_LABELS: Record<string, string> = {
  // ... 已有项
  <tabName>: '<中文标签>',
};
```

### Step 4: 注册懒加载渲染

**文件:** `src/renderer/components/states/maxExpand/MaxExpandContentLazy.tsx`

**4a.** 添加 lazy import(与其他 Tab 放在一起):
```typescript
const <TabName>Tab = lazy(() => import('./components/<tabName>').then((module) => ({ default: module.<TabName>Tab })));
```

**4b.** 在 `renderLazyActiveTab` 函数的条件链中添加(放在 `settings` 之前):
```typescript
if (activeTab === '<tabName>') content = <<TabName>Tab />;
```

### Step 5: 注册即时加载渲染

**文件:** `src/renderer/components/states/maxExpand/MaxExpandContentEager.tsx`

**5a.** 添加 import:
```typescript
import { <TabName>Tab } from './components/<tabName>';
```

**5b.** 在 `renderEagerActiveTab` 函数的条件链中添加(放在 `settings` 之前):
```typescript
if (activeTab === '<tabName>') return <<TabName>Tab />;
```

### Step 6: 添加 i18n 翻译

需要在 **3 个位置** 添加翻译条目,遗漏任何一处都会导致 tooltip 或设置界面显示原始英文 ID。

**6a.** 设置界面标签 — 在两个语言文件的 `settings.app.maxExpandLayout.tabLabels` 对象中添加:

**`i18n/zh-CN.json`:**
```json
"<tabName>": "<中文标签>"
```

**`i18n/en-US.json`:**
```json
"<tabName>": "<English Label>"
```

**6b.** 底部导航点 tooltip — 在两个语言文件的 `maxExpand.nav` 对象中添加(该对象控制导航点的 `title` 属性):

**`i18n/zh-CN.json`:**
```json
"<tabName>": "<中文标签>"
```

**`i18n/en-US.json`:**
```json
"<tabName>": "<English Label>"
```

**6c.** 导航点默认标签回退 — 在 `src/renderer/components/states/maxExpand/utils/getNavLabel.ts` 的 `NAV_LABEL_MAP` 中添加:

```typescript
<tabName>: '<中文标签>',
```

### Step 7: 验证

```bash
npx tsc --noEmit --skipLibCheck
```

## 文件清单

完成所有步骤后,验证以下文件已被修改:

- [ ] `components/states/maxExpand/components/<tabName>/index.ts` — **新文件**
- [ ] `components/states/maxExpand/components/<tabName>/components/<TabName>Tab.tsx` — **新文件**
- [ ] `store/types/index.ts` — MaxExpandTab 类型
- [ ] `components/states/maxExpand/components/setting/utils/settingsConfig.ts` — CONFIGURABLE_TABS + TAB_LABELS
- [ ] `components/states/maxExpand/MaxExpandContentLazy.tsx` — 懒加载注册
- [ ] `components/states/maxExpand/MaxExpandContentEager.tsx` — 即时加载注册
- [ ] `i18n/zh-CN.json` — `settings.app.maxExpandLayout.tabLabels` + `maxExpand.nav` 两处翻译
- [ ] `i18n/en-US.json` — `settings.app.maxExpandLayout.tabLabels` + `maxExpand.nav` 两处翻译
- [ ] `components/states/maxExpand/utils/getNavLabel.ts` — NAV_LABEL_MAP 回退标签

## 注意事项

- Tab ID 必须放在 `MaxExpandTab` 联合类型的 `'settings'` 之前,因为渲染逻辑中 `settings` 通常作为兜底条件。
- `MAXEXPAND_CONFIGURABLE_TABS` 中的顺序决定了默认导航排列顺序,新 Tab 默认追加到末尾。
- 懒加载和即时加载两种模式都必须注册,否则在对应性能模式下新页面不会渲染。
- 组件使用 `max-expand-tab-panel` 作为通用容器类名,与已有 Tab 保持一致。
- **翻译必须覆盖 3 处**:`settings.app.maxExpandLayout.tabLabels`(设置界面标签)、`maxExpand.nav`(底部导航点 tooltip)、`getNavLabel.ts` 的 `NAV_LABEL_MAP`(导航点中文回退)。遗漏任一处会导致对应场景显示原始英文 ID。

Attribution

JNTMTMTMJNTMTMTM
View sourceSee grades on GitHubMore from JNTMTMTM →
SSkills DirectorySkills Directory

Ship a skill? Prove it's safe.

Free 120-pattern security scan, letter grade, and an embeddable README badge.

Submit a skill

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments (0)

No comments yet. Be the first to comment!

SSkills DirectorySkills Directory

Ship a skill? Prove it's safe.

Free 120-pattern security scan, letter grade, and an embeddable README badge.

Submit a skill

Related Skills

Clean Code

Pragmatic coding standards - concise, direct, no over-engineering, no unnecessary comments

304955 votes

Browser Extension Developer

Use this skill when developing or maintaining browser extension code in the `browser/` directory, including Chrome/Firefox/Edge compatibility, content scripts, background scripts, or i18n updates.

286712 votes

Seo Optimizer

SEO optimization with keyword analysis, readability assessment, technical validation, content quality. Use for search rankings, blog posts, content audits, or encountering keyword density, readability scores, meta tags, schema markup errors.

2222 votes

Google Official Seo Guide

Official Google SEO guide covering search optimization, best practices, Search Console, crawling, indexing, and improving website search visibility based on official Google documentation

1862 votes

Writing Plans

Use when you have a spec or requirements for a multi-step task, before touching code

2927051 votes
View all in development →