Install
$ agentstack add skill-minara-ai-media-agent-media-publish ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
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 →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.mdfor adapter invocation patterns - Read
lib/manifest-ops.mdfor 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:
- Source exists and is non-empty:
``bash [ -s "/source.md" ] || echo "ERROR: source.md is empty or missing" ``
- Each variant file exists and is non-empty:
For each variant in the manifest, check the file exists: ``bash [ -s "/" ] || echo "ERROR: missing" ``
- Asset files exist (if referenced in manifest):
``bash [ -f "/" ] || echo "WARN: asset missing" ``
- 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:
- The adapter directory exists:
adapters// - The adapter's
publish.shis executable - The required env var is set in
.env(for API-based adapters) - 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:
- Write to
.manifest.yaml.tmp - Validate YAML
- Backup original, then
mvtemp tomanifest.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.
- Author: Minara-AI
- Source: Minara-AI/media-agent
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.