> For the complete documentation index, see [llms.txt](https://docs.cushystudio.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.cushystudio.com/going-further/creating-apps/contextual-apps.md).

# Contextual Apps

CushyApps can be started form both context menu. this page shows how your custom app can support that

Contextual apps allow you start any app (workflow) from an existing image ( [Image Comtext menu](/getting-started/cushy-interface/image-comtext-menu.md)) or selection ([Unified canvas](/getting-started/unified-canvas.md))

## Make your app compatible

1. Add canStartFromImage

```typescript
app({
   ...
   canStartFromImage: true,
})
```

2. update  your `run` handler to take a third param

```typescript
    //                  👇👇👇👇👇
    run: async (run, ui, startImg) => {
```

## Add new entries to the image context menu

once your **CushyApp** is *start-from-image* enabled, you can just create new drafts of your app.

Every draft will show as a new menu entry

## Support both beeing run as context action or standalone

Supporting both is easy.

```typescript
    run: async (run, ui, startImg) => {
        //  if  startImg is null, it will take ui.startImage instead
        let img = startImg ?? ui.startImage
    }
```

## Built-in examples to look at

look at the `library/quick-actions/*`

* library/built-in/quick-actions/quick-dispace.ts
* library/built-in/quick-actions/quick-refine.ts
* ...
