eisland-dev-add-empty-…
为 eIsland 灵动岛添加一个新的空白状态机(IslandState)。当用户要求创建新状态、新页面、 新界面(如登录页、设置子页面、独立面板)时使用此…
Add a new empty subpage (tab) to an existing eIsland settings section with page navigation support. Use this skill whenever the user wants to add a new tab/page/subpage to any settings section in the eIsland project, including requests like "添加分页", "add a tab", "add subpage",
$ npx -y skills add JNTMTMTM/eIsland --skill eisland-dev-add-empty-setting-subpage --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/eisland-dev-add-empty-setting-subpageContext preview
The summary Claude sees to decide when to auto-load this skill.
Add a new empty subpage (tab) to an existing eIsland settings section with page navigation support. Use this skill whenever the user wants to add a new tab/page/subpage to any settings section in the eIsland project, including requests like "添加分页", "add a tab", "add subpage",
name: eisland-dev-add-empty-setting-subpage description: > Add a new empty subpage (tab) to an existing eIsland settings section with page navigation support. Use this skill whenever the user wants to add a new tab/page/subpage to any settings section in the eIsland project, including requests like "添加分页", "add a tab", "add subpage", "新建空白分页", "add empty page to settings", or when extending settings sections like AI, update, network, music, weather, mail, etc. with new page navigation. This skill handles the full workflow: type definitions, config constants, PageDots component, section modifications, SettingsTab state wiring, and i18n translations.
This skill guides you through adding a new empty subpage (with page navigation) to an existing eIsland settings section.
Before starting, identify: 1. **Target settings section** — which section to extend (e.g., `update`, `ai`, `network`, `music`, `weather`, `mail`) 2. **New page key** — a kebab-case identifier (e.g., `info-sync`, `data-center`) 3. **New page label** — display name in Chinese (e.g., `信息同步`)
The canonical implementation pattern is the **AI settings section** (`ai`), which has pages: `general`, `r1pxc`, `ollama`.
Key reference files:
File: `src/renderer/components/states/maxExpand/components/setting/utils/settingsConfig.ts`
**1a.** Add/extend the page key type:
// If the type already exists, add the new key to the union export type XxxSettingsPageKey = 'existing-page' | 'new-page'; // If creating a new type, add it after similar types
**1b.** Update `SettingsTabLabelKey` union type to include the new page key:
export type SettingsTabLabelKey = SettingsSidebarTabKey | AppSettingsPageKey | AiSettingsPageKey | MusicNavCardKey | NewPageKey;
**1c.** Add labels in `SETTINGS_TAB_LABELS`:
'new-page': '新页面名称',
**1d.** Add descriptions in `SETTINGS_TAB_DESCRIPTIONS`:
'new-page': '新页面描述',
**1e.** Add pages array and labels record (after similar definitions):
export const XXX_SETTINGS_PAGES: XxxSettingsPageKey[] = ['existing-page', 'new-page'];
export const XXX_SETTINGS_PAGE_LABELS: Record<XxxSettingsPageKey, string> = {
'existing-page': '已有页面',
'new-page': '新页面',
};Create: `src/renderer/components/states/maxExpand/components/setting/components/<section>/<Section>SettingsPageDots.tsx`
Follow the pattern from `AiSettingsPageDots.tsx`:
import type { ReactElement } from 'react';
import { useTranslation } from 'react-i18next';
import { SettingsPageNavigation } from '../SettingsPageNavigation';
import type { XxxSettingsPageKey } from '../../utils/settingsConfig';
export interface XxxSettingsPageDotsProps {
xxxSettingsPage: XxxSettingsPageKey;
expanded: boolean;
xxxSettingsPages: XxxSettingsPageKey[];
settingsTabLabels: Record<string, string>;
setXxxSettingsPage: (page: XxxSettingsPageKey) => void;
}
export function XxxSettingsPageDots({
xxxSettingsPage,
expanded,
xxxSettingsPages,
settingsTabLabels,
setXxxSettingsPage,
}: XxxSettingsPageDotsProps): ReactElement {
const { t } = useTranslation();
return (
<SettingsPageNavigation
activePage={xxxSettingsPage}
expanded={expanded}
pages={xxxSettingsPages}
pageLabels={settingsTabLabels}
navigationLabel={t('settings.xxx.pagination')}
onSelectPage={setXxxSettingsPage}
/>
);
}Modify: `src/renderer/components/states/maxExpand/components/setting/components/<section>/<Section>SettingsSection.tsx`
**3a.** Add imports:
import { useState, type ReactElement } from 'react';
import { XxxSettingsPageDots } from './XxxSettingsPageDots';
import { SettingsPageNavigationToggle } from '../SettingsPageNavigation';
import type { XxxSettingsPageKey } from '../../utils/settingsConfig';**3b.** Add props to the interface:
currentXxxSettingsPageLabel: string; xxxSettingsPage: XxxSettingsPageKey; xxxSettingsPages: XxxSettingsPageKey[]; xxxSettingsPageLabels: Record<string, string>; setXxxSettingsPage: (page: XxxSettingsPageKey) => void;
**3c.** Add state and page rendering in the component body:
const [pageNavigationExpanded, setPageNavigationExpanded] = useState(false);
// Wrap existing content in a page render function
const renderExistingPage = (): ReactElement => (
<div className="settings-cards">
{/* existing cards here */}
</div>
);
// Add new empty page
const renderNewPage = (): ReactElement => (
<div className="settings-cards">
{/* empty - to be implemented */}
</div>
);
const renderCurrentPage = (): ReactElement | null => {
switch (xxxSettingsPage) {
case 'existing-page':
return renderExistingPage();
case 'new-page':
return renderNewPage();
default:
return null;
}
};**3d.** Update the JSX return to use page layout:
return (
<div className="max-expand-settings-section">
<div className="max-expand-settings-title settings-app-title-line">
<span>{t('settings.labels.xxx', { defaultValueeIsland - A sleek, Apple Dynamic Island inspired floating widget for Windows, built with Electron.
Repo: JNTMTMTM/eIsland
为 eIsland 灵动岛添加一个新的空白状态机(IslandState)。当用户要求创建新状态、新页面、 新界面(如登录页、设置子页面、独立面板)时使用此…
创建 eIsland 引导配置窗口的新步骤页面。当用户要求在引导界面(Guide)中新增配置步骤、引导页面、引导分页时使用此 skill。 触发关键词:guide…
为 eIsland 灵动岛的 MaxExpand(全展开)模式添加一个新的 Tab 页面。当用户要求创建新的 MaxExpand…
Add a new SVG icon to the project's icon enum system with matching test assertions. Use this…
Generate a release announcement markdown for eIsland. Use this skill whenever the user asks…
Analyze the current git status, review all staged and unstaged changes, and create a commit…