본문으로 건너뛰기
cccskills
무료GitHub에 공개

remove-window-panel

No-trace removal recipe for a window panel or overlay. Use when deleting, killing or retiring a window/overlay, or consolidating X into Y and deleting X ('kill this panel', 'remove the X window'). NOT for adding or opening an overlay (use overlay-system).

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

설치 방법 보기

포함된 파일(1)

  • SKILL.md6.1 KB

SKILL.md(원문)

설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.

Remove a Window Panel (kill it completely)

Deleting a panel means removing it from every place its registration spreads, then proving zero residue. A panel that "looks deleted" but leaves a stale overlay id, a dangling opener, a tile or an index row is a half-kill. No shims. No back-compat aliases. No forwarding opener. No commented-out block or // removed X tombstone. No dead panel name in a comment.

Read the overlay-system skill first if you do not know how overlays are declared. Editing the WindowPanel primitive itself is the window-panels skill, and that engine is the npm package @ai-matrx/summon, so never "remove" package behavior here.

The keystone: pull the definition, let TypeScript hunt

Each definition augments OverlayRegistry (declare module "@ai-matrx/summon"), so OverlayId is a closed union built from the definition files themselves.

  1. Delete the registrations first (rows 1-4 below). That removes the union member.
  2. Run pnpm type-check. Every hard reference (an openOverlay({ overlayId: "x" }), a tile overlayId, a caller of the deleted useOpenX) fails to compile. The compiler hands you the list.
  3. Grep finds the soft references the compiler cannot see (comments, docs, link tokens, baselines). Do both; neither alone is complete.

The removal checklist

Parameterize on <overlayId> (camelCase, e.g. agentContentSidebarWindow), <slug> (the definition's window.windowId, kebab), <Component>, and the tile id / label / link key.

#LocationWhat to remove
1features/overlays/definitions/<overlayId>.overlay.ts(x)git rm. The opener and the OverlayRegistry augmentation go with it. Do this first.
2features/overlays/definitions/<overlayId>.render.tsx and <overlayId>.link.ts (if present)git rm.
3features/overlays/definitions/registry.tsThe d.<id>Overlay, line in APP_OVERLAYS.
4pnpm gen:overlaysRegenerates overlay-definitions.gen.ts and overlay-meta-index.ts (never hand-edit them; OVERLAY_ID_INDEX derives from the meta index).
5features/window-panels/windows/**/<Component>.tsxThe window component, git rm.
6features/window-panels/tools-grid/toolsGridTiles.tsThe tile.
7features/overlays/definitions/trayPreviews.tsAny registerTrayPreview("<overlayId>", ...) (and its component in registry/tray-previews.tsx if unused elsewhere).
8features/overlays/definitions/callbacks/<name>.ts or windows/<feature>/callbacks.tsOnly for a callback-aware opener: delete its contract.
9features/window-panels/registry/window-address-baseline.jsonAny row naming <overlayId> (unaddressedBaseline / addressless / sharedAddresses).
10features/admin/** (FeatureAdminMap), FEATURE.md, README, docsAny map row, table row or prose naming the panel.

Not every panel touches all ten: no link skips the .link.ts, no callbacks skips 8. Rows 1-5 are universal.

Repoint every opener before you delete it

git grep -n "useOpen<Component>\|<Component>Controller\|definitions/<overlayId>"   # opener hook + declarative wrapper + imports
git grep -n 'overlayId: "<overlayId>"'                                              # raw dispatch sites and tiles
git grep -n "panels=<linkKey>"                                                      # ?panels= deep links in code and docs

Repoint each caller to the replacement before removing the dead one. The Tools grid tile is itself a usage: remove it (capability gone) or repoint its overlayId (capability moved). Confirm the replacement covers the dead panel's capability; parity is the user's call, never a silent drop.

Do NOT delete shared infrastructure the panel happened to touch

Before removing anything the dead component imported, owned or was marked with, prove it is unused elsewhere:

  • The window.deprecated mechanism (red ring + banner, mirrored in the generated overlay-meta-index.ts) is shared by many windows. Remove the panel's block, never the package's rendering of it.
  • Shared icons in toolsGridTiles.ts: the import stays if another tile uses it.
  • Shared exports the component re-exported (ALL_TABS, TabContent, a panel such as MediaDevicesPanel): relocate the shared piece first.
  • Package behavior: never delete or fork anything under @ai-matrx/summon; if the package is wrong, fix it in ../aidream/apps/shared/summon.

Clean comments, do not just delete

Reword a comment that names the dead panel to keep the useful doc without the name. The bar: not even a comment mentions it.

Verify: the kill is not done until this passes

  1. Re-grep every token, case-insensitive, across the repo (exclude node_modules, .next*). Must be empty:
    git grep -niE "<overlayId>|<Component>|<slug>|<label>|tile.<tile-id>|<linkKey>" -- '*.ts' '*.tsx' '*.md' '*.json'
    
  2. Deleted files are gone and no import of the deleted opener or component path survives.
  3. pnpm type-check clean for every touched file.
  4. npx jest features/overlays/definitions features/window-panels/__tests__ (pnpm check:overlays and the address census catch a missed step).
  5. pnpm check:doctrine and pnpm check:surface-overlays pass.
  6. Spawn an independent Explore subagent to re-verify from scratch with this checklist and the token list.
  7. Inspect git status and commit only the panel's files; stage your paths explicitly if unrelated files are dirty.

Worked example

The kill of Agent Editor (Sidebar) (agentContentSidebarWindow, replaced by agentAdvancedEditorWindow) was small and total: definition + render + registrations, the window component, the tile, zero external openers, the deprecated mechanism and the shared FileStack icon kept. That is the canonical shape.

리뷰

아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.

댓글

로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.

아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.

보내면 바로 공개됩니다. 이메일 주소나 전화번호 같은 개인 정보는 쓰지 마세요. URL은 2개까지입니다.

0 / 1,000자

이 양식은 reCAPTCHA로 보호되며 Google 개인정보처리방침 및 서비스 약관이 적용됩니다.

같은 저장소의 스킬

Admin debug system wiring for the floating AdminIndicator's live debug data and Copy Full Context. Use when adding debug visibility to a route or feature, wiring useDebugContext or the debug panel, capturing console errors, or enabling the copy-context workflow for a page.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

armanisadeghi/ai-matrx32026년 10월 19일 업데이트

Compact two-icon Copy / Copy-for-AI controls (components/agent-copy). Use when adding copy buttons to a row, card, list, or record; merging duplicate Copy/JSON/AI controls; continuing the copy rollout; or writing a Copy-for-AI payload. NOT for markdown content actions (use rich-document-actions).

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

armanisadeghi/ai-matrx32026년 10월 19일 업데이트

Disclosing a surface's existing fixed AI jobs in the shell's top Agents menu. Use when a page, panel, overlay, or window already runs a mandate behind a button, assist, automatic action, or mode; when the agent-disclosure guard names a file; or during a surface check.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

armanisadeghi/ai-matrx32026년 10월 19일 업데이트

The watch-fix-rerun method for making an existing platform agent or automated process efficient and correct: baseline its ledger, run one unit yourself, fix the class behind every wasted call, rerun, record. Use when asked to improve, optimize, watch, or 'make efficient' an agent, a sandbox session, a sync job, or any recurring automated process.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

armanisadeghi/ai-matrx32026년 10월 19일 업데이트

Redux state for agent execution and firing agent shortcuts. Use when editing features/agents/redux/, building agent UI, creating a conversation, touching assembleRequest or NDJSON stream state, wiring agent-state selectors, adding a per-conversation capability, or triggering a shortcut from a button, menu, or code (useShortcutTrigger, launchAgentExecution).

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

armanisadeghi/ai-matrx32026년 10월 19일 업데이트

The provision for a call site: the exhaustive menu of values that place in the code can realistically produce. Use before creating or fixing a mandate or agent that reasons about more than its own input, when deciding whether an agent can answer at all with what it is sent, or when its output 'looks right' but nobody checked it could be. NOT for building the agent (use create-agent).

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

armanisadeghi/ai-matrx32026년 10월 19일 업데이트

armanisadeghi의 스킬 모두 보기

이 스킬의 문제 신고