AgentStack
Browse Sign in
Browse Why AgentStack Sell Docs
Sign in
SKILL verified MIT Self-run

Media Publish

skill-minara-ai-media-agent-media-publish · by Minara-AI

|

— No reviews yet
0 installs
32 views
0.0% view→install

Install

$ agentstack add skill-minara-ai-media-agent-media-publish

✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • ✓ Prompt-injection patterns
  • ✓ Secret / credential exfiltration
  • ✓ Dangerous shell & filesystem operations
  • ✓ Untrusted network calls
  • ✓ Known-malicious package signatures

What it can access

  • ✓ Network access No
  • ✓ Filesystem access No
  • ✓ Shell / process execution No
  • ● Environment & secrets Used
  • ✓ Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

View the full security report →

Verified badge

Passed review? Show it. Paste this badge into your README, it links to the public security report.

AgentStack Verified badge Links to your public security report.
[![AgentStack Verified](https://agentstack.voostack.com/badges/verified.svg)](https://agentstack.voostack.com/security/report/skill-minara-ai-media-agent-media-publish)

Reliability & compatibility

✓ Security review passed
0 installs to date
— no reviews yet
○ 5mo ago

Declared compatibility

Claude CodeClaude Desktop

Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.

Preview Execution monitoring

We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.

How agent discovery & health will work →
Are you the author of Media Publish? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

/media-publish — Multi-Platform Publishing

Publish your content to all configured platforms in one go.

Prerequisites

Before starting, read these shared library files:

  • Read lib/adapter-discovery.md for adapter invocation patterns
  • Read lib/manifest-ops.md for manifest format and validation

Step 1: Locate the Post

If the user specifies a post path, use it. Otherwise, find the most recent post:

ls -dt content/posts/*/ 2>/dev/null | head -1

Verify the post directory contains:

  • source.md (canonical content)
  • manifest.yaml (content manifest)
  • variants/ directory with at least one variant file

If any are missing, report what's missing and stop.

Step 2: Pre-Publish Validation

Read manifest.yaml and validate:

  1. Source exists and is non-empty:

``bash [ -s "/source.md" ] || echo "ERROR: source.md is empty or missing" ``

  1. Each variant file exists and is non-empty:

For each variant in the manifest, check the file exists: ``bash [ -s "/" ] || echo "ERROR: missing" ``

  1. Asset files exist (if referenced in manifest):

``bash [ -f "/" ] || echo "WARN: asset missing" ``

  1. Filter publishable variants:

Only attempt platforms with status: draft, pending, or failed. Skip: published, skipped.

If no platforms are publishable, tell the user: "All platforms are already published or skipped. Nothing to do."

Step 3: Check Platform Configuration

For each publishable platform, verify:

  1. The adapter directory exists: adapters//
  2. The adapter's publish.sh is executable
  3. The required env var is set in .env (for API-based adapters)
  4. For git-push adapters, the configured repo path exists

Report any missing configuration and offer to run /media-setup.

Step 4: Confirm with User

Show what will be published:

Ready to publish "":

  [PUBLISH] Dev.to — variants/devto.md (draft)
  [PUBLISH] Hashnode — variants/hashnode.md (draft)
  [SKIP]    GitHub Pages — already published

Use AskUserQuestion to confirm. Options:

  • A) Publish all
  • B) Dry run first (preview without publishing)
  • C) Select specific platforms
  • D) Cancel

Step 5: Publish

For each platform, invoke the adapter's publish.sh with credential isolation.

Read the adapter's auth_env_var from adapter.yaml, then invoke:

AUTH_VAR=$(python3 -c "import yaml; print(yaml.safe_load(open('adapters//adapter.yaml')).get('auth_env_var', ''))")
AUTH_VAL=$(grep "^${AUTH_VAR}=" .env | cut -d= -f2-)

env -i PATH="$PATH" HOME="$HOME" \
  "${AUTH_VAR}=${AUTH_VAL}" \
  ./adapters//publish.sh "/variants/.md" "/assets" [--dry-run]

For git-push adapters (no authenvvar):

env -i PATH="$PATH" HOME="$HOME" GIT_DIR="$(git rev-parse --git-dir)" \
  ./adapters//publish.sh "/variants/.md" "/assets" [--dry-run]

Step 6: Update Manifest

After each platform publish attempt, update the manifest atomically:

On success (exit 0): Parse the JSON stdout to get url and id. Update the variant:

status: published
published_at: 
url: 
id: 
error: null

On failure (exit 1-4):

status: failed
error: ""

Use the atomic write pattern from lib/manifest-ops.md:

  1. Write to .manifest.yaml.tmp
  2. Validate YAML
  3. Backup original, then mv temp to manifest.yaml

Step 7: Report Results

After all platforms are attempted, report:

Published "":

  [OK]   Dev.to → https://dev.to/user/post-slug
  [OK]   Hashnode → https://hashnode.com/post/xyz
  [FAIL] GitHub Pages — git push failed (exit 1)

2/3 platforms succeeded. Run /media-publish again to retry failed platforms.

If all succeeded:

All platforms published successfully!

If --dry-run was used:

Dry run complete. No content was actually published.
Run /media-publish again without --dry-run to publish for real.

Source & license

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

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

Reviews

No reviews yet, be the first.

Versions

  • v0.1.0 Imported from the upstream source.