Agent skill

Extension Development

by podman-desktop in podman-desktop/extension-bootc

Guides end-to-end feature development in the bootc Podman Desktop extension.

Apache-2.0Auto-check passedDevelopment

Install Extension Development

skills CLI
$ npx skills add podman-desktop/extension-bootc --skill extension-development -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install podman-desktop/extension-bootc extension-development --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/podman-desktop/extension-bootc.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/extension-development .claude/skills/extension-development && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
extension-development
GitHub stars
474
Token cost
~1.1k tokens
SKILL.md length
361 words
Files
1
Skills in repo
5
Repo updated
First seen
Licence
Apache-2.0

At a glance

Guides end-to-end feature development in the bootc Podman Desktop extension.

  • Works in 6 steps: Define API — Add abstract method to… → Implement — Add implementation to… → Call from frontend — Use… → …
  • Adding features spanning backend and frontend
  • SKILL.md covers Extension Lifecycle, Architecture, Adding a New Feature… and Build System, plus 2 more sections
  • Calls pnpm

What it does

Extension Development is an agent skill from podman-desktop/extension-bootc. Guides end-to-end feature development in the bootc Podman Desktop extension. Covers the extension lifecycle, architecture overview, RPC communication, build system, and extension points. Triggers when adding features spanning backend and frontend, understanding the extension lifecycle, or needing an architectural overview of how the pieces connect.

Its SKILL.md is about 1.1k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Development, covering Browser extensions and End-to-end testing. It works with Svelte. The repository describes itself as: Support for bootable OS containers (bootc) and generating disk images. The licence is Apache-2.0.

When your agent uses it

  • Adding features spanning backend and frontend
  • Understanding the extension lifecycle
  • Needing an architectural overview of how the pieces connect

Example prompts

  • “Use the extension-development skill to guide end-to-end feature development in the bootc Podman Desktop extension”
  • “/extension-development”

Requirements

  • Node.js

Workflow steps

6 steps, taken from the first numbered list in SKILL.md.

  1. Define API — Add abstract method to packages/shared/src/BootcAPI.ts
  2. Implement — Add implementation to packages/backend/src/api-impl.ts (see backend-api skill)
  3. Call from frontend — Use bootcClient.myNewMethod() from /@/api/client (auto-proxied)
  4. Add route — Add in App.svelte, navigation in Navigation.svelte`
  5. Add models — Define types in packages/shared/src/models/ if needed
  6. Build UI — See svelte-ui-design skill for layout and component patterns

What it can do on your machine

Read from SKILL.md and the folder at commit 4230bcf. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • pnpm

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use pnpm, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Extension Development loads about 1.1k tokens when it runs. Until then it costs about 93 tokens; SKILL.md has 361 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~93
When it runs · the whole SKILL.md, loaded when a task matches
~1.1k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from podman-desktop/extension-bootc at commit 4230bcf, republished under its Apache-2.0 licence (© podman-desktop). 361 words, ~1,081 tokens.

Download SKILL.mdSave it as .claude/skills/extension-development/SKILL.md (or your agent's skills folder).
name
extension-development
description
Guides end-to-end feature development in the bootc Podman Desktop extension. Covers the extension lifecycle, architecture overview, RPC communication, build system, and extension points. Triggers when adding features spanning backend and frontend, understanding the extension lifecycle, or needing an architectural overview of how the pieces connect.

Bootc Extension Development Guide

Extension Lifecycle

Entry Point (packages/backend/src/extension.ts)

activate() runs when Podman Desktop loads the extension. deactivate() cleans up. Read the file to see the current initialization sequence:

bash
cat packages/backend/src/extension.ts

Architecture

Three packages in packages/:

  • Frontend (packages/frontend/) — Svelte 5 webview UI. Root component: src/App.svelte. Reactive stores in src/stores/. Builds into ../backend/media/.
  • Shared (packages/shared/) — Typed API contract (src/BootcAPI.ts), data models (src/models/), and notification messages (src/messages/Messages.ts). Both frontend and backend depend on this package.
  • Backend (packages/backend/) — Node.js extension host. Entry: src/extension.ts. Implements the shared API contract in src/api-impl.ts (BootcApiImpl). Uses @podman-desktop/api for Podman Desktop integration.

Data flow: Frontend calls bootcClient.method() → RPC MessageProxy serializes the call over webview postMessage → Backend BootcApiImpl handles it and returns the result back through the same channel. Backend pushes notifications to the frontend via Messages enum events.

For detailed UI patterns, see the svelte-ui-design skill. For detailed backend API patterns, see the backend-api skill.

RPC Communication

Frontend ↔ Backend uses a typed RPC proxy over webview postMessage:

  • Contract: packages/shared/src/BootcAPI.ts — abstract class defining every method the frontend can call
  • Implementation: packages/backend/src/api-impl.ts — BootcApiImpl extends the contract with real logic
  • Client: packages/frontend/src/api/client.ts — hand-written file that creates a typed proxy at runtime via rpcBrowser.getProxy<BootcApi>(BootcApi). Any method added to the abstract contract is automatically available on bootcClient without modifying this file.
  • Notifications: Messages enum in packages/shared/src/messages/Messages.ts — backend-to-frontend push events

See the backend-api skill for detailed RPC patterns and examples.

Show full SKILL.md (137 more words)Show less

Adding a New Feature (End-to-End)

  1. Define API — Add abstract method to packages/shared/src/BootcAPI.ts
  2. Implement — Add implementation to packages/backend/src/api-impl.ts (see backend-api skill)
  3. Call from frontend — Use bootcClient.myNewMethod() from /@/api/client (auto-proxied)
  4. Add route — Add <Route> in App.svelte, navigation in Navigation.svelte
  5. Add models — Define types in packages/shared/src/models/ if needed
  6. Build UI — See svelte-ui-design skill for layout and component patterns

Build System

Vite Configuration

Backend (packages/backend/vite.config.js):

  • Library mode, CJS output → dist/extension.js
  • Externals: @podman-desktop/api, ssh2, Node.js builtins
  • Aliases: /@/ → src/, /@shared/ → ../../shared/

Frontend (packages/frontend/vite.config.js):

  • Svelte + Tailwind CSS plugins
  • Output → ../backend/media/
  • Aliases: /@/ → src/, /@shared/ → ../../shared/
Development Watch
bash
pnpm watch  # Watches all packages concurrently

Frontend changes rebuild into packages/backend/media/, which Podman Desktop picks up when using --extension-folder.

Extension Points (package.json)

Extension Points

Configuration properties, menu contributions, commands, icons, and views are all defined in package.json under contributes. Read it for the current state:

bash
# See all extension points (configuration, menus, commands, views, icons)
cat packages/backend/package.json | grep -A 200 '"contributes"'

Telemetry

Telemetry example:

typescript
telemetryLogger.logUsage('buildDiskImage', { type: 'qcow2', arch: 'arm64' });
telemetryLogger.logError('buildFailed', { error: errorMessage });

© podman-desktop, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .agents/skills/extension-development of podman-desktop/extension-bootc.

Open the folder on GitHubat commit 4230bcf

Compare with similar skills

Extension Development next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Extension Development compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Extension Development this skillpodman-desktop/extension-bootc474—~1.1kAutomated safety check: PassApache-2.0
Crxjssamber/cc-skills228—~2.6kAutomated safety check: PassMIT
Repomix Browser Extension Developeryamadashy/repomix29k1 repos~288Automated safety check: PassMIT
Develop ExtensionPostHog/posthog-js613—~2.3kAutomated safety check: PassCustom licence
Svelte Testingspences10/sveltest113—~579Automated safety check: PassMIT
Claude Designkwakseongjae/oh-my-design531—~4.8kAutomated safety check: PassMIT

Similar skills

  • Crxjs

    samber/cc-skills

    CRXJS Chrome extension development — true HMR for popup, options, content scripts, side panels, manifest-driven builds, dynamic content script imports (?script, ?script&module), and defineManifest…

    228 GitHub stars~2.6k tokensUpdated 7 days ago
    DevelopmentAuto-check passed
  • Use this skill when developing or maintaining browser extension code in the `browser/` directory, including Chrome/Firefox/Edge compatibility, content…

    29k GitHub starsUsed in 1 repo~288 tokens
    DevelopmentAuto-check passed
  • Develop Extension

    PostHog/posthog-js

    Official

    Author a new PostHog browser extension, or port a posthog-js v1 extension, against the @posthog/browser-common Client/Extension contract.

    613 GitHub stars~2.3k tokensUpdated today
    DevelopmentAuto-check passed
  • Svelte Testing

    spences10/sveltest

    Fix and create Svelte 5 tests with vitest-browser-svelte and Playwright.

    113 GitHub stars~579 tokensUpdated today
    Testing & QAAuto-check passed
  • Claude Design

    kwakseongjae/oh-my-design

    현재 코드베이스(또는 폴더)를 분석해 "디자인 컨텍스트 브리프"(스택/디자인 토큰/컴포넌트/ 라우트/실제 UI 카피/큐레이션된 에셋/레포 링크)를 합성하고, 그걸 Claude Design (claude.ai/design)에 자동으로 전달해 디자인을 생성한 뒤 결과 링크를 터미널에 클릭 가능한 형태로 돌려주는 스킬.

    531 GitHub stars~4.8k tokensUpdated 7 days ago
    DevelopmentAuto-check passed
  • Freighter Best Practices

    stellar/freighter

    Comprehensive best practices for the Freighter browser extension.

    118 GitHub stars~706 tokensUpdated today
    DevelopmentAuto-check passed

More from podman-desktop/extension-bootc

  • Backend API

    podman-desktop/extension-bootc

    Guides backend development with @podman-desktop/api and the bootc extension's RPC system.

    474 GitHub stars~1k tokensUpdated today
    Auto-check passed
  • Playwright Testing

    podman-desktop/extension-bootc

    Guides writing and maintaining Playwright E2E tests for the bootc Podman Desktop extension.

    474 GitHub stars~2.6k tokensUpdated today
    Auto-check passed
  • Svelte UI Design

    podman-desktop/extension-bootc

    Guides designing and building Svelte 5 UI components in the bootc extension.

    474 GitHub stars~1.3k tokensUpdated today
    Auto-check passed
  • Unit Testing

    podman-desktop/extension-bootc

    Guides writing and maintaining Vitest unit tests for the bootc extension's backend, frontend, and shared packages.

    474 GitHub stars~1.4k tokensUpdated today
    Auto-check passed

Works with

Questions about Extension Development

What does Extension Development do?

Guides end-to-end feature development in the bootc Podman Desktop extension. Extension Development is an agent skill from podman-desktop/extension-bootc. Guides end-to-end feature development in the bootc Podman Desktop extension.

When should I use Extension Development?

Extension Development fits situations like: adding features spanning backend and frontend; understanding the extension lifecycle; needing an architectural overview of how the pieces connect.

How do I install Extension Development in Claude Code?

Run `npx skills add podman-desktop/extension-bootc --skill extension-development -a claude-code`. Or copy the skill folder (.agents/skills/extension-development in podman-desktop/extension-bootc) into .claude/skills/extension-development in your project. Claude Code loads it when a task matches its description.

How do I install Extension Development in Codex?

Run `npx skills add podman-desktop/extension-bootc --skill extension-development -a codex`. Or copy the skill folder (.agents/skills/extension-development in podman-desktop/extension-bootc) into .agents/skills/extension-development in your project. Codex loads it when a task matches its description.

Can I use Extension Development in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add podman-desktop/extension-bootc --skill extension-development -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/extension-development, .gemini/skills/extension-development, .github/skills/extension-development and .opencode/skills/extension-development in your project.

What does Extension Development need to run?

Going by SKILL.md and its folder, Extension Development needs the command-line tools its instructions call (pnpm). Our summary lists: Node.js.

Does Extension Development access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Extension Development safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Extension Development use?

Extension Development is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Extension Development use?

About 1.1k tokens (SKILL.md is roughly 4.3k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Extension Development?

Skills that share tags, products or a category with Extension Development: Crxjs (samber/cc-skills, 228 stars), Repomix Browser Extension Developer (yamadashy/repomix, 29k stars), Develop Extension (PostHog/posthog-js, 613 stars) and Svelte Testing (spences10/sveltest, 113 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Extension Development?

podman-desktop (a GitHub organization) maintains it in podman-desktop/extension-bootc, which has 474 GitHub stars. The repository holds 5 skills in this directory. The repository was last updated on October 8, 2026.

Source: podman-desktop/extension-bootc on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.