Agent skill

windows15-app-development

Build and modify apps in the Windows 15 desktop environment. Use when creating new apps, modifying existing apps in apps/, working with window management, persistence, hotkeys, notifications, or UI components.

Stars 163
Forks 31

Install this agent skill to your Project

npx add-skill https://github.com/majiayu000/claude-skill-registry/tree/main/skills/development/windows15-app-development-thomasrohde-windows15

SKILL.md

Windows 15 App Development

Use this skill when building or modifying apps under apps/ in the Windows 15 desktop environment.

Quick Navigation

Task Documentation
Create a new app guides/creating-simple-app.md
Register an app / app config core/app-architecture.md
Open/focus/minimize windows core/window-lifecycle.md
Persist app state guides/adding-persistence.md
Keyboard shortcuts guides/hotkeys.md
Toast notifications guides/notifications.md
UI components & styling guides/styling-patterns.md, reference/ui-components.md
Full API lookup reference/contexts.md, reference/hooks.md
Learn by example examples/calculator-walkthrough.md, examples/notepad-walkthrough.md

Codebase Landmarks

  • App registration: apps/registry.ts (authoritative app registry)
  • Window lifecycle: context/WindowContext.tsx and components/Window.tsx
  • OS wrapper hook: context/OSContext.tsx (useOS())
  • Common hooks: hooks/index.ts
  • UI primitives: components/ui/

Essential Patterns

Creating a New App

  1. Create component in apps/MyApp.tsx:
tsx
import { AppContainer } from '../components/ui/AppContainer';

export function MyApp() {
    return (
        <AppContainer padding>
            <h1>My App</h1>
        </AppContainer>
    );
}
  1. Register in apps/registry.ts:
ts
{
  id: 'myapp',
  title: 'My App',
  icon: 'apps',
  color: 'bg-slate-400',
  component: React.lazy(() => import('./MyApp').then(m => ({ default: m.MyApp }))),
  defaultWidth: 520,
  defaultHeight: 420,
}

Persisting State

Use usePersistedState() (Dexie/IndexedDB-backed):

tsx
const { value, setValue, isLoading } = usePersistedState<Settings>('myapp.settings', defaultSettings);

Window Instance Control

Apps receive windowId as a prop to control their window:

tsx
const MyApp: React.FC<{ windowId: string }> = ({ windowId }) => {
    const { setTitle, setBadge } = useWindowInstance(windowId);
    // ...
};

Toast Notifications

tsx
const notify = useNotification();
notify.success('Saved!');
notify.error('Failed');

Keyboard Shortcuts

tsx
useStandardHotkeys({
    onSave: () => handleSave(),
    onFind: () => handleFind(),
});

Constraints

  • Prefer existing UI primitives in components/ui/
  • Prefer usePersistedState() over useLocalStorage() for persistence
  • Don't invent new global patterns when existing hooks/contexts solve it
  • Keep id in registry stable (used for session restore)

Documentation Index

Core Architecture

Guides

Reference

Examples

API Documentation

Didn't find tool you were looking for?

Be as detailed as possible for better results