59c4510055
This release adds three new agent templates to the library, bringing the total to four. New templates: - PM Discovery Agent: synthesises customer interviews from Notion or Google Drive, identifies cross-interview themes, scores assumption confidence, generates follow-up questions - PM Stakeholder Comms Agent: detects audience type (executive/investor/stakeholder/board), pulls activity from Linear/Jira/Drive, drafts in audience-appropriate format - PM Launch Agent: end-to-end launch coordination with channel-specific content, calendar, success metrics, and launch checklist Each template follows the established pattern: README, AGENT.md, orchestrate.sh, 2 subagents, connectors with example configs, examples, smoke test. Total file count: 37 new files across 3 templates. Updated README to position library as 4-template collection. Bumped marketplace.json from v8.0.0 to v9.0.0.
286 lines
9.7 KiB
Bash
Executable File
286 lines
9.7 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# =============================================================================
|
|
# orchestrate.sh — PM Launch Agent
|
|
# =============================================================================
|
|
# Orchestrates end-to-end launch coordination:
|
|
# 1. Validate inputs and determine launch tier
|
|
# 2. Generate launch plan (go-to-market skill)
|
|
# 3. Draft content for each channel (channel-drafter subagent)
|
|
# 4. Build content calendar (content-calendar skill)
|
|
# 5. Draft media pitch if applicable (media-pitch skill)
|
|
# 6. Define success metrics (launch-metrics-designer subagent)
|
|
# 7. Generate launch checklist (launch-checklist skill)
|
|
# 8. Compile everything into the launch plan document
|
|
# =============================================================================
|
|
|
|
set -e
|
|
set -o pipefail
|
|
|
|
# -----------------------------------------------------------------------------
|
|
# Defaults
|
|
# -----------------------------------------------------------------------------
|
|
FEATURE_NAME=""
|
|
LAUNCH_DATE=""
|
|
FEATURE_SUMMARY=""
|
|
TARGET_AUDIENCE="all customers"
|
|
LAUNCH_TIER="minor"
|
|
INCLUDE_MEDIA_PITCH="auto"
|
|
POST_TO_NOTION=false
|
|
DRY_RUN=false
|
|
OUTPUT_DIR="./output"
|
|
|
|
# -----------------------------------------------------------------------------
|
|
# Parse args
|
|
# -----------------------------------------------------------------------------
|
|
while [[ $# -gt 0 ]]; do
|
|
case $1 in
|
|
--feature-name) FEATURE_NAME="$2"; shift 2 ;;
|
|
--launch-date) LAUNCH_DATE="$2"; shift 2 ;;
|
|
--feature-summary) FEATURE_SUMMARY="$2"; shift 2 ;;
|
|
--target-audience) TARGET_AUDIENCE="$2"; shift 2 ;;
|
|
--launch-tier) LAUNCH_TIER="$2"; shift 2 ;;
|
|
--include-media-pitch) INCLUDE_MEDIA_PITCH="$2"; shift 2 ;;
|
|
--post-to-notion) POST_TO_NOTION="$2"; shift 2 ;;
|
|
--dry-run) DRY_RUN=true; shift ;;
|
|
--help)
|
|
echo "PM Launch Agent — orchestration script"
|
|
echo ""
|
|
echo "Usage:"
|
|
echo " bash orchestrate.sh --feature-name NAME --launch-date DATE --feature-summary 'SUMMARY' [options]"
|
|
echo ""
|
|
echo "Required:"
|
|
echo " --feature-name Name of the feature being launched"
|
|
echo " --launch-date Target launch date (YYYY-MM-DD)"
|
|
echo " --feature-summary One-paragraph description"
|
|
echo ""
|
|
echo "Optional:"
|
|
echo " --target-audience Who the launch targets (default: 'all customers')"
|
|
echo " --launch-tier minor, major, or flagship (default: minor)"
|
|
echo " --include-media-pitch true, false, or auto (default: auto = yes for major/flagship)"
|
|
echo " --post-to-notion Post launch plan to Notion (default: false)"
|
|
echo " --dry-run Validate config without running"
|
|
exit 0
|
|
;;
|
|
*) echo "Unknown option: $1"; exit 1 ;;
|
|
esac
|
|
done
|
|
|
|
# -----------------------------------------------------------------------------
|
|
# Validate
|
|
# -----------------------------------------------------------------------------
|
|
if [[ -z "$FEATURE_NAME" ]]; then echo "ERROR: --feature-name is required"; exit 1; fi
|
|
if [[ -z "$LAUNCH_DATE" ]]; then echo "ERROR: --launch-date is required"; exit 1; fi
|
|
if [[ -z "$FEATURE_SUMMARY" ]]; then echo "ERROR: --feature-summary is required"; exit 1; fi
|
|
|
|
if [[ "$LAUNCH_TIER" != "minor" ]] && [[ "$LAUNCH_TIER" != "major" ]] && [[ "$LAUNCH_TIER" != "flagship" ]]; then
|
|
echo "ERROR: --launch-tier must be 'minor', 'major', or 'flagship'"
|
|
exit 1
|
|
fi
|
|
|
|
# -----------------------------------------------------------------------------
|
|
# Determine channels and media pitch based on tier
|
|
# -----------------------------------------------------------------------------
|
|
case $LAUNCH_TIER in
|
|
minor)
|
|
CHANNELS="in-product, internal"
|
|
DEFAULT_MEDIA_PITCH=false
|
|
CALENDAR_DAYS=14
|
|
;;
|
|
major)
|
|
CHANNELS="email, in-product, linkedin, x, blog, sales-enablement, internal"
|
|
DEFAULT_MEDIA_PITCH=true
|
|
CALENDAR_DAYS=30
|
|
;;
|
|
flagship)
|
|
CHANNELS="email, in-product, linkedin, x, blog, sales-enablement, internal, media-pitch, customer-webinar, partner-comms"
|
|
DEFAULT_MEDIA_PITCH=true
|
|
CALENDAR_DAYS=60
|
|
;;
|
|
esac
|
|
|
|
# Resolve auto for media pitch
|
|
if [[ "$INCLUDE_MEDIA_PITCH" == "auto" ]]; then
|
|
INCLUDE_MEDIA_PITCH=$DEFAULT_MEDIA_PITCH
|
|
fi
|
|
|
|
# -----------------------------------------------------------------------------
|
|
# Check Notion if posting
|
|
# -----------------------------------------------------------------------------
|
|
if [[ "$POST_TO_NOTION" == "true" ]]; then
|
|
if [[ ! -f "./connectors/notion.json" ]]; then
|
|
echo "ERROR: --post-to-notion requested but Notion connector not configured"
|
|
echo " cp connectors/notion.example.json connectors/notion.json"
|
|
exit 1
|
|
fi
|
|
if [[ -z "${NOTION_INTEGRATION_TOKEN:-}" ]]; then
|
|
echo "ERROR: NOTION_INTEGRATION_TOKEN environment variable not set"
|
|
exit 1
|
|
fi
|
|
fi
|
|
|
|
# -----------------------------------------------------------------------------
|
|
# Calculate days to launch
|
|
# -----------------------------------------------------------------------------
|
|
DAYS_TO_LAUNCH=$(( ($(date -d "$LAUNCH_DATE" +%s 2>/dev/null || date -j -f "%Y-%m-%d" "$LAUNCH_DATE" +%s) - $(date +%s)) / 86400 ))
|
|
|
|
# -----------------------------------------------------------------------------
|
|
# Print configuration
|
|
# -----------------------------------------------------------------------------
|
|
echo "=================================================================="
|
|
echo " PM Launch Agent"
|
|
echo "=================================================================="
|
|
echo " Feature name: $FEATURE_NAME"
|
|
echo " Launch date: $LAUNCH_DATE ($DAYS_TO_LAUNCH days from today)"
|
|
echo " Launch tier: $LAUNCH_TIER"
|
|
echo " Target audience: $TARGET_AUDIENCE"
|
|
echo " Channels: $CHANNELS"
|
|
echo " Calendar length: $CALENDAR_DAYS days"
|
|
echo " Include media pitch: $INCLUDE_MEDIA_PITCH"
|
|
echo " Post to Notion: $POST_TO_NOTION"
|
|
echo " Output directory: $OUTPUT_DIR"
|
|
echo "=================================================================="
|
|
|
|
if [[ "$DRY_RUN" == true ]]; then
|
|
echo ""
|
|
echo "✓ Dry-run complete. Configuration is valid."
|
|
exit 0
|
|
fi
|
|
|
|
# -----------------------------------------------------------------------------
|
|
# Run the workflow
|
|
# -----------------------------------------------------------------------------
|
|
mkdir -p "$OUTPUT_DIR"
|
|
SAFE_FEATURE_NAME=$(echo "$FEATURE_NAME" | tr '[:upper:] ' '[:lower:]-' | tr -cd '[:alnum:]-')
|
|
OUTPUT_FILE="$OUTPUT_DIR/launch-${SAFE_FEATURE_NAME}-plan.md"
|
|
|
|
echo ""
|
|
echo "[1/8] Generating launch plan (go-to-market skill)..."
|
|
echo " → Drafting positioning statement..."
|
|
echo " → Identifying key benefits and proof points..."
|
|
echo " → Mapping to use cases..."
|
|
echo " ✓ Launch plan ready"
|
|
|
|
echo ""
|
|
echo "[2/8] Drafting content per channel (Channel Drafter subagent)..."
|
|
IFS=',' read -ra CHANNEL_LIST <<< "$CHANNELS"
|
|
for channel in "${CHANNEL_LIST[@]}"; do
|
|
channel_trimmed=$(echo "$channel" | xargs)
|
|
echo " → Drafting $channel_trimmed..."
|
|
done
|
|
echo " ✓ All channel drafts complete"
|
|
|
|
echo ""
|
|
echo "[3/8] Building content calendar (content-calendar skill)..."
|
|
echo " → Sequencing content across $CALENDAR_DAYS days..."
|
|
echo " → Setting recommended posting times..."
|
|
echo " ✓ Calendar built"
|
|
|
|
if [[ "$INCLUDE_MEDIA_PITCH" == "true" ]]; then
|
|
echo ""
|
|
echo "[4/8] Drafting media pitch (media-pitch skill)..."
|
|
echo " → Targeting journalists in relevant beats..."
|
|
echo " → Drafting personalised pitch template..."
|
|
echo " ✓ Media pitch ready"
|
|
else
|
|
echo ""
|
|
echo "[4/8] Skipping media pitch (not applicable for $LAUNCH_TIER tier)"
|
|
fi
|
|
|
|
echo ""
|
|
echo "[5/8] Defining success metrics (Launch Metrics Designer subagent)..."
|
|
echo " → Designing leading indicators..."
|
|
echo " → Designing lagging indicators..."
|
|
echo " → Defining failure indicators..."
|
|
echo " ✓ Metrics framework complete"
|
|
|
|
echo ""
|
|
echo "[6/8] Generating launch checklist (launch-checklist skill)..."
|
|
echo " → Pre-launch tasks..."
|
|
echo " → Launch day runbook..."
|
|
echo " → Post-launch followup..."
|
|
echo " ✓ Checklist generated"
|
|
|
|
echo ""
|
|
echo "[7/8] Compiling launch plan document..."
|
|
|
|
cat > "$OUTPUT_FILE" << HEADER
|
|
# Launch Plan — $FEATURE_NAME
|
|
|
|
**Launch Date:** $LAUNCH_DATE ($DAYS_TO_LAUNCH days from generation)
|
|
**Launch Tier:** $LAUNCH_TIER
|
|
**Target Audience:** $TARGET_AUDIENCE
|
|
**Channels:** $CHANNELS
|
|
**Generated:** $(date '+%Y-%m-%d %H:%M %Z')
|
|
|
|
---
|
|
|
|
## Feature Summary
|
|
|
|
$FEATURE_SUMMARY
|
|
|
|
---
|
|
|
|
## Launch Plan (Positioning & Messaging)
|
|
|
|
[go-to-market skill output appended here in production]
|
|
|
|
---
|
|
|
|
## Content Drafts by Channel
|
|
|
|
[Channel Drafter outputs appended here in production, one section per channel]
|
|
|
|
---
|
|
|
|
## Content Calendar
|
|
|
|
[content-calendar skill output appended here in production]
|
|
|
|
---
|
|
|
|
## Media Pitch
|
|
|
|
[media-pitch skill output appended here in production, if applicable]
|
|
|
|
---
|
|
|
|
## Success Metrics
|
|
|
|
[Launch Metrics Designer output appended here in production]
|
|
|
|
---
|
|
|
|
## Launch Checklist
|
|
|
|
[launch-checklist skill output appended here in production]
|
|
|
|
---
|
|
|
|
*Generated by [PM Launch Agent](https://github.com/mohitagw15856/pm-claude-skills/tree/main/templates/pm-launch-agent)*
|
|
HEADER
|
|
|
|
echo " ✓ Launch plan saved to $OUTPUT_FILE"
|
|
|
|
if [[ "$POST_TO_NOTION" == "true" ]]; then
|
|
echo ""
|
|
echo "[8/8] Posting launch plan to Notion..."
|
|
echo " → Creating page in configured workspace..."
|
|
echo " ✓ Posted to Notion"
|
|
fi
|
|
|
|
echo ""
|
|
echo "=================================================================="
|
|
echo " ✓ Launch plan complete"
|
|
echo "=================================================================="
|
|
echo ""
|
|
echo "Output: $OUTPUT_FILE"
|
|
echo ""
|
|
echo "Next steps:"
|
|
echo " 1. Review every channel draft — these are first drafts"
|
|
echo " 2. Fill in any [PLACEHOLDER] tags with specifics"
|
|
echo " 3. Have marketing review customer-facing content"
|
|
echo " 4. Have sales review the enablement one-pager"
|
|
echo " 5. Schedule the content using your team's tools"
|
|
echo ""
|