# Media

> |

- **Type:** Skill
- **Install:** `agentstack add skill-minara-ai-media-agent-media`
- **Verified:** Yes — security-reviewed for prompt injection and unsafe behavior
- **Seller:** [Minara-AI](https://agentstack.voostack.com/s/minara-ai)
- **Installs:** 0
- **Category:** [Agent Skills](https://agentstack.voostack.com/c/agent-skills)
- **Latest version:** 0.1.0
- **License:** MIT
- **Upstream author:** [Minara-AI](https://github.com/Minara-AI)
- **Source:** https://github.com/Minara-AI/media-agent/tree/main/skills/media

## Install

```sh
agentstack add skill-minara-ai-media-agent-media
```

Requires the [AgentStack CLI](https://agentstack.voostack.com/docs/cli). Works with Claude Code, Cursor, and any MCP-compatible agent.

## About

# /media — Full Content Creation Workflow

The complete guided workflow: idea → write → image → publish.

This orchestrator is a thin sequencer. For each stage, it reads the shared
library files and follows the same logic as the individual sub-skills.

## Prerequisites

Read these shared library files before proceeding:
- Read `lib/adapter-discovery.md`
- Read `lib/manifest-ops.md`
- Read `lib/image-processing.md`

## Step 0: Detect State & Resume

Check if there's an in-progress post:

```bash
# Find posts with draft variants (not yet fully published)
for dir in content/posts/*/; do
  if [ -f "$dir/manifest.yaml" ]; then
    has_draft=$(python3 -c "
import yaml
with open('${dir}manifest.yaml') as f:
    m = yaml.safe_load(f)
variants = m.get('variants', {})
drafts = [k for k,v in variants.items() if v.get('status') in ('draft','pending','failed')]
print('yes' if drafts else 'no')
" 2>/dev/null)
    if [ "$has_draft" = "yes" ]; then
      echo "IN_PROGRESS: $dir"
    fi
  fi
done
```

If an in-progress post is found, use AskUserQuestion:
"Found an in-progress post: ''. What would you like to do?"
- A) Resume this post (continue from where we left off)
- B) Start a new post
- C) Finish publishing this post (jump to /media-publish)

### Detecting resume stage

Read the manifest to determine which stage to resume from:
- No `source.md` → resume from ideation/writing (Stage 1-2)
- `source.md` exists but no variants → resume from variant generation (Stage 2, Step 5)
- Variants exist but no assets → resume from image generation (Stage 3)
- Assets exist but variants are `draft` → resume from publishing (Stage 4)

## Stage 1: Ideation

Read `skills/media-idea/SKILL.md` and follow its workflow.

This stage produces a `brief.yaml` in the post directory.

If a `brief.yaml` already exists (resume scenario), skip to Stage 2.

## Stage 2: Writing

Read `skills/media-write/SKILL.md` and follow its workflow.

This stage produces:
- `source.md` (canonical content)
- `variants/.md` for each platform
- `manifest.yaml`

If `source.md` and variants already exist (resume scenario), ask if the user wants
to edit or proceed to images.

## Stage 3: Image Generation

Read `skills/media-image/SKILL.md` and follow its workflow.

This stage produces:
- Images in `assets/`
- Platform-resized versions
- Updated manifest with asset references

If images already exist (resume scenario), ask if the user wants to regenerate or
proceed to publishing.

**Skip condition:** If the user doesn't have an OpenAI API key configured and
doesn't want to provide their own images, skip this stage entirely.

## Stage 4: Publishing

Read `skills/media-publish/SKILL.md` and follow its workflow.

This stage:
- Validates all files
- Publishes to each configured platform
- Updates manifest with URLs and status

## Stage 5: Complete

After publishing, show the final summary:

```
=== Content Published! ===

""

  Source: content/posts//source.md ( words)

  Published to:
    [OK] Dev.to → 
    [OK] Hashnode → 
    [OK] GitHub Pages → 

  Images:  generated, resized for  platforms

  Manifest: content/posts//manifest.yaml

What's next?
  - Run /media to write another post
  - Edit source.md and run /media-write --update to regenerate variants
  - Run /media-publish to retry any failed platforms
```

## Error Handling

If any stage fails:
1. Report the error clearly
2. Save all progress to disk (manifest, source, variants)
3. Offer to retry the failed step or skip to the next stage
4. The user can always resume later — the manifest tracks all state

## Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

- **Author:** [Minara-AI](https://github.com/Minara-AI)
- **Source:** [Minara-AI/media-agent](https://github.com/Minara-AI/media-agent)
- **License:** MIT

Install and usage instructions live in the source repository linked above.

## Pricing

- **Free** — Free

## Security capabilities

Automated source analysis of v0.1.0 — what this tool can access:

- **Network access:** no
- **Filesystem access:** no
- **Shell / process execution:** no
- **Environment & secrets:** no
- **Dynamic code execution:** no

*"Yes" means the capability is present in the source — more access means more to trust, not that it is unsafe.*


## Versions

- **0.1.0** — security scan: passed — Imported from the upstream source.

## Links

- Listing page: https://agentstack.voostack.com/l/skill-minara-ai-media-agent-media
- Seller: https://agentstack.voostack.com/s/minara-ai
- Browse the marketplace: https://agentstack.voostack.com/browse

---
Listed on AgentStack — the marketplace for AI agent skills and MCP servers. Every listing is security-reviewed. Creators keep 70%.
