Competitor Release Monitor #19
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Competitor Release Monitor | |
| # Daily scan of competing Claude Code / dev tool repos. If any has published | |
| # a new release since the last check, opens an alert issue with the details. | |
| # This gives you launch-day awareness if a competitor preempts you. | |
| # | |
| # Competitors watched (edit COMPETITORS below to add/remove): | |
| # - thedotmack/claude-mem | |
| # - DeusData/codebase-memory-mcp | |
| # - RooCodeInc/Roo-Code | |
| # - paul-gauthier/aider | |
| # - continuedev/continue | |
| # | |
| # Created 2026-06-18 as part of the launch automation stack. | |
| # Zero cost: GitHub Actions on public repo. | |
| on: | |
| schedule: | |
| # Daily at 10:00 UTC (03:00 PT, 15:30 IST). Picks up overnight US drops. | |
| - cron: '0 10 * * *' | |
| workflow_dispatch: | |
| permissions: | |
| contents: read | |
| issues: write | |
| env: | |
| COMPETITORS: | | |
| thedotmack/claude-mem | |
| DeusData/codebase-memory-mcp | |
| RooCodeInc/Roo-Code | |
| paul-gauthier/aider | |
| continuedev/continue | |
| jobs: | |
| watch-releases: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Check each competitor for new release in last 24h | |
| env: | |
| GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| run: | | |
| CUTOFF=$(date -u -d "24 hours ago" '+%Y-%m-%dT%H:%M:%SZ') | |
| NEW_RELEASES="" | |
| echo "$COMPETITORS" | while IFS= read -r repo; do | |
| [ -z "$repo" ] && continue | |
| repo=$(echo "$repo" | xargs) # trim whitespace | |
| [ -z "$repo" ] && continue | |
| echo "Checking $repo..." | |
| # Get the latest release published date | |
| LATEST=$(gh api "repos/$repo/releases/latest" 2>/dev/null || echo "{}") | |
| PUBLISHED=$(echo "$LATEST" | jq -r '.published_at // empty') | |
| TAG=$(echo "$LATEST" | jq -r '.tag_name // empty') | |
| URL=$(echo "$LATEST" | jq -r '.html_url // empty') | |
| NAME=$(echo "$LATEST" | jq -r '.name // empty') | |
| if [ -z "$PUBLISHED" ]; then | |
| echo " no releases or repo unreachable, skipping" | |
| continue | |
| fi | |
| # Compare ISO 8601 strings (lexicographic compare works for this format) | |
| if [ "$PUBLISHED" \> "$CUTOFF" ]; then | |
| echo " 🔔 NEW RELEASE: $repo $TAG at $PUBLISHED" | |
| # Append to an alert file the next step will read | |
| echo "- **[$repo]($URL)** released **$TAG** ($NAME) on $PUBLISHED" >> /tmp/new_releases.md | |
| else | |
| echo " no new release since $CUTOFF" | |
| fi | |
| done | |
| # Set env var for the alert step | |
| if [ -f /tmp/new_releases.md ]; then | |
| { | |
| echo 'NEW_RELEASES<<EOF' | |
| cat /tmp/new_releases.md | |
| echo 'EOF' | |
| } >> $GITHUB_ENV | |
| fi | |
| - name: Open alert issue if any competitor shipped | |
| if: env.NEW_RELEASES != '' | |
| env: | |
| GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| run: | | |
| # Ensure label exists (idempotent) | |
| gh label create "competitor-alert" \ | |
| --repo ${{ github.repository }} \ | |
| --color "FF6347" \ | |
| --description "Auto-managed: a competitor shipped a release" 2>/dev/null || true | |
| TODAY=$(date -u '+%Y-%m-%d') | |
| BODY="One or more competitors shipped a release in the last 24 hours. | |
| ## New releases | |
| ${{ env.NEW_RELEASES }} | |
| ## Recommended action | |
| Review the release notes. If any of them is a direct competitive feature (warm-fill, drift detection, integrity scoring, mid-session install), pivot to **Angle B** or **Angle C** from \`competitor-monitor.md\` in private notes. | |
| ## Reminder | |
| Your launch narrative is the bug-found-fixed-in-24-hours story. That stays defensible regardless of what competitors ship. Do not move launch date because of a competitor release. | |
| --- | |
| *Auto-generated by [\`competitor-monitor.yml\`](https://github.com/${{ github.repository }}/actions/workflows/competitor-monitor.yml)*" | |
| gh issue create \ | |
| --repo ${{ github.repository }} \ | |
| --title "🔔 Competitor shipped a release ($TODAY)" \ | |
| --label "competitor-alert" \ | |
| --body "$BODY" | |
| - name: Heartbeat to Healthchecks (success) | |
| # Pings even when no competitors shipped (that is still a successful | |
| # run, we want Healthchecks to know we are alive). Only fires if all | |
| # previous steps succeeded. | |
| run: curl -fsS -m 10 --retry 3 https://hc-ping.com/5143cf69-d235-453a-885a-b2617d0a0c33 |