Skip to content

feat: batch subagent creation + orchestration fixes#557

Merged
marcusquinn merged 9 commits intomainfrom
chore/autonomous-batch-session
Feb 8, 2026
Merged

feat: batch subagent creation + orchestration fixes#557
marcusquinn merged 9 commits intomainfrom
chore/autonomous-batch-session

Conversation

@marcusquinn
Copy link
Owner

@marcusquinn marcusquinn commented Feb 8, 2026

Summary

  • Fix pre-edit-check.sh unbound variable bug (missing color definitions)
  • Enforce opencode as only supported CLI for supervisor orchestration (deprecate claude CLI fallback)
  • Add Autonomous Orchestration section to AGENTS.md with cron pulse docs
  • Add 15 new subagents across mobile, content, voice, git, security, and deployment domains

Tasks Completed

Task Description
t153 Git merge/cherry-pick conflict resolution skill
t124 Tirith terminal security guard
t120 @thymikee agent-device review (recommend: add subagent)
t101 Mom Test UX/CRO agent framework
t098 Playwright device emulation (already existed)
t078 Lumen AI-powered git diffs
t095 XcodeBuildMCP for iOS/macOS
t096 Maestro mobile E2E testing
t097 iOS Simulator MCP
t100 AXe CLI iOS accessibility
t077 LinkedIn Content subagent
t076 Platform Persona Adaptations
t075 Content Calendar Workflow
t074 DocStrange document extraction
t072 Audio/Video Transcription (refined)
t071 Voice AI models landscape
t062 Vercel Agent Skills integration
t060 Jujutsu (jj) VCS research

Orchestration Fixes

  • supervisor-helper.sh: opencode is now the only supported CLI, claude marked DEPRECATED
  • agent-test-helper.sh: CLI detection order fixed (opencode first)
  • AGENTS.md: New "Autonomous Orchestration" section with cron pulse requirements

Summary by CodeRabbit

  • New Features

    • Added Mom Test UX agent for evaluating user experience and conversion optimization.
    • New mobile testing tools and iOS simulator automation guides.
    • Voice AI model selection reference and transcription workflow documentation.
    • Content planning calendars and social media guidelines.
  • Updates

    • Migrated primary CLI to opencode; claude now deprecated.
    • Added color output support to diagnostic tools.
  • Documentation

    • Expanded guides for security, deployment, Git workflows, and development tools.

The script used $RED, $YELLOW, $NC, $GREEN before defining them.
Under set -euo pipefail, this caused 'unbound variable' errors when
running on main branch (the else branch sourced shared-constants.sh
but the if branch never did). Define colors at the top of the script.
- Mark claude CLI fallback as DEPRECATED in resolve_ai_cli()
- Add warning log when claude fallback is used
- Add 'Orchestration Requirements' block to supervisor header comments
- Add 'Autonomous Orchestration' section to AGENTS.md with cron pulse docs
- Update AGENTS.md supported tools description (opencode CLI, not claude-code)
- Fix agent-test-helper.sh CLI detection order (opencode first)
- Update comments throughout to reference opencode workers only

The supervisor cron pulse is mandatory for autonomous operation.
Without it, the supervisor is passive and requires manual pulse calls.
…subagent (t124)

t153: Git merge/cherry-pick/rebase conflict resolution skill covering
detection, marker anatomy, resolution strategies, common patterns,
post-resolution verification, and AI-assisted tips.

t124: Tirith terminal security guard subagent covering 7 rule categories
(homograph, injection, pipe-to-shell, dotfile, transport, ecosystem,
credential exposure), installation, shell hooks, and aidevops integration.
…t078)

t101: Apple-inspired 'Would this confuse my mom?' UX evaluation framework
with 6 principles, severity ranking, effort/impact matrix, CRO patterns,
and browser automation integration.

t078: Lumen (Rust, 1.8k stars) AI-powered git diff viewer, commit message
generator, change explainer, and natural language git commands. Supports
8 providers including OpenAI, Claude, Gemini, Ollama.

t098: Already existed (playwright-emulation.md, 585 lines).
t095: XcodeBuildMCP (3.9k stars) - Xcode MCP server for building, testing,
deploying iOS/macOS apps. 76 MCP tools across 12 workflow groups.

t096: Maestro (10.2k stars) - E2E mobile automation with YAML flows,
cross-platform support (React Native, Flutter, hybrid), Studio IDE.

t097: iOS Simulator MCP (1.5k stars) - simulator interaction via MCP
with tap, swipe, type, screenshot, video recording, accessibility tree.
Featured in Anthropic's Claude Code Best Practices.
t100: AXe CLI (1.1k stars) - iOS simulator accessibility automation via
Apple's Accessibility APIs. Single binary, tap/swipe/type/screenshot/video.

t077: LinkedIn content subagent covering post types, OAuth API access,
content best practices, analytics, and automation patterns.

t076: Platform persona adaptations for LinkedIn, Instagram, YouTube,
X/Twitter, and Blog with cross-platform repurposing workflow.
…ption (t072)

t075: Content calendar workflow with gap analysis, topic suggestions,
lifecycle tracking, platform scheduling, and TODO.md-compatible format.

t074: DocStrange document extraction subagent (NanoNets, 1.3k stars).
Single-package PDF/DOCX/PPTX extraction with MCP server and schema-based
JSON output. Complements t073 Docling stack.

t072: Refined transcription subagent - trimmed from 205 to 160 lines,
added model selection guidance table, consolidated code examples,
stripped unnecessary tool permissions from frontmatter.
…060)

t071: Voice AI model landscape - TTS, STT, S2S providers and local models
t062: Vercel Agent Skills format and integration with aidevops skill system
t060: Jujutsu (jj) VCS research - git-compatible with undo, first-class conflicts
@gemini-code-assist
Copy link

Warning

You have reached your daily quota limit. Please wait up to 24 hours and I will start processing your requests again!

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Feb 8, 2026

Warning

Rate limit exceeded

@marcusquinn has exceeded the limit for the number of commits that can be reviewed per hour. Please wait 16 minutes and 2 seconds before requesting another review.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

Walkthrough

This PR standardizes the AI CLI stack to prioritize opencode (deprecating claude), expands agent orchestration documentation with autonomous operation guidance, and introduces comprehensive documentation for 15+ new tools spanning mobile automation, content management, security, voice AI, and Git workflows.

Changes

Cohort / File(s) Summary
Agent CLI & Orchestration
.agents/AGENTS.md, .agents/scripts/agent-test-helper.sh, .agents/scripts/pre-edit-check.sh, .agents/scripts/supervisor-helper.sh
Standardized opencode as primary CLI with claude marked deprecated; added autonomous orchestration docs covering supervisor helpers, cron pulse mechanics, and batch task management; introduced color constants for script output.
Agent Definitions
.agents/seo/mom-test-ux.md
New UX/CRO agent implementing "Mom Test" heuristic with ARIA snapshot analysis, confusing element detection, quick wins matrix, and accessibility compliance checks.
Content Tools
.agents/tools/content/content-calendar.md, guidelines.md, docstrange.md
Content calendar workflow with gap analysis, topic clustering, and lifecycle tracking; platform-specific voice/tone guidelines (LinkedIn, Instagram, YouTube, X, blog); DocStrange schema-based document extraction with cloud/local GPU modes.
Deployment Tools
.agents/tools/deployment/agent-skills.md
Vercel Agent Skills ecosystem documentation covering SKILL.md format, installation, auto-detection by task type, and aidevops integration workflow.
Git Tools
.agents/tools/git/conflict-resolution.md, jujutsu.md, lumen.md
Merge/rebase conflict resolution strategies with git commands; Jujutsu (jj) version control with operation undo and conflict handling; Lumen diff-viewing with provider support and theming.
Mobile Tools
.agents/tools/mobile/axe-cli.md, ios-simulator-mcp.md, maestro.md, xcodebuild-mcp.md
iOS automation via AXe CLI (touch, gesture, input, recording) and iOS Simulator MCP; Maestro YAML E2E testing across platforms; XcodeBuildMCP for building, testing, debugging, and UI automation workflows.
Security Tools
.agents/tools/security/tirith.md
Terminal security guard blocking homograph attacks, ANSI injection, pipe-to-shell threats; seven rule categories, YAML policy format, audit logging, and command bypass controls.
Voice Tools
.agents/tools/voice/transcription.md, voice-ai-models.md
Restructured transcription guide with streamlined model selection, local inference via whisper.cpp, and dependency simplification; comprehensive voice AI model landscape (TTS/STT/S2S) with cloud/local options, GPU requirements, and decision guidance.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related issues

Possibly related PRs


🔧 From Claude to the Code of Tomorrow

Opencode rises to lead the orchestration dance, 🎭
While deprecated whispers fade with each stance.
Fifteen tools bloom in the agents' great garden—
Security, voices, and mobile automation's pardon! 📱🔐🎙️
Zero debt reigns, as quality standards stand grand.

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'feat: batch subagent creation + orchestration fixes' accurately summarizes the main changes: adding 15 new subagents (batch creation) and fixing orchestration issues (CLI deprecation, color variables, cron pulse documentation).
Docstring Coverage ✅ Passed Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch chore/autonomous-batch-session

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 14

🤖 Fix all issues with AI agents
In @.agents/scripts/supervisor-helper.sh:
- Around line 1742-1749: The issue: the script calls undefined log_warning in
the claude CLI fallback, which will fail under set -e; update the fallback to
call the existing log_warn function (or define log_warning) so the logging call
succeeds; locate the block that checks "if command -v claude" and replace
log_warning with log_warn (or add a compatible log_warning wrapper that
delegates to log_warn) and keep the rest of the flow (echo "claude" and return
0) unchanged.

In @.agents/seo/mom-test-ux.md:
- Around line 53-59: Replace the non-existent CLI flag usage "playwright
screenshot --aria-snapshot" with the canonical ARIA snapshot test workflow:
remove references to the "--aria-snapshot" flag and the misuse of "playwright
screenshot", and instead show creating an actual Playwright test that navigates
to the page and calls the ARIA snapshot matcher (e.g., toMatchAriaSnapshot on a
locator such as page.getByRole('main')), then instruct readers to update
snapshots with "npx playwright test --update-snapshots"; if ARIA snapshots
aren’t central to this doc, replace the example with a file:line reference to
the official Playwright ARIA snapshot docs instead.

In @.agents/tools/content/content-calendar.md:
- Around line 31-34: Replace the standalone example command "gsc-helper.sh
query-report --min-impressions 500 --max-ctr 0.02 --days 90" in
.agents/tools/content/content-calendar.md with an authoritative reference:
either cite the source that defines that CLI usage (e.g., link or doc section in
seo/google-search-console.md if it documents gsc-helper.sh) or change the
example to a file:line reference pointing to the canonical implementation/usage
(for example the file that contains the gsc-helper.sh help text), and update the
surrounding text to mention the file:line reference instead of an unreferenced
code snippet.
- Around line 31-34: The workflow references a missing helper script and doc:
implement a new executable script named gsc-helper.sh (or a Go/JS CLI with that
entrypoint) that provides the subcommand query-report with flags
--min-impressions, --max-ctr, and --days and wire it to Google Search Console
data retrieval and filtering, and add the corresponding documentation file
seo/google-search-console.md describing usage and required credentials;
alternatively, if you can't implement now, replace the command in
content-calendar.md with a clear TODO note pointing to where gsc-helper.sh and
seo/google-search-console.md will live and remove the non-functional example so
the workflow is not presented as runnable.

In @.agents/tools/deployment/agent-skills.md:
- Around line 52-80: Replace the illustrative directory template, SKILL.md
frontmatter block, and installation examples with pointers to the authoritative
sources: remove the generic "Directory structure template" and the duplicated
"SKILL.md frontmatter" (the duplicated name: skill-name pattern) and instead
reference the single source-of-truth frontmatter defined in the existing
add-skill source; likewise replace the three installation command examples with
a file:line reference to the canonical installation snippet; update headings
"SKILL.md frontmatter", "Directory structure template", and "Installation
command examples" to point readers to those authoritative file:line references
and remove the duplicated frontmatter block so only the single source-of-truth
remains.

In @.agents/tools/git/jujutsu.md:
- Around line 61-85: Replace the unverified CLI examples in
.agents/tools/git/jujutsu.md with authoritative references: either pull the
exact example lines from the official Jujutsu documentation (and add a
citation/URL footnote) or replace each command example (e.g., "jj new", "jj
describe -m", "jj diff", "jj log", "jj status", "jj squash", "jj split", "jj
edit <rev>", "jj rebase -r/-s <rev> -d <dst>", "jj git fetch", "jj git push",
"jj init --git-repo=.", "jj git clone <url>", "jj git init", "jj bookmark set
main") with file:line references to the authoritative internal doc; update the
header of the code block to note the source and ensure the examples exactly
match that source to comply with the .agents/**/*.md guideline.

In @.agents/tools/mobile/axe-cli.md:
- Around line 36-75: The examples in the "Touch, Gestures, and Input", "Hardware
Buttons and Timing", and "Screenshots, Video, and Accessibility" sections are
not backed by an authoritative source; replace each standalone command example
(e.g., axe tap, axe gesture, axe button, axe screenshot, axe record-video, axe
stream-video, axe describe-ui) with either (a) a citation/link to the official
AXe CLI docs or specification that verifies the exact flags and behavior, or (b)
a file:line reference to a vetted internal implementation (e.g., the source that
defines tap/gesture/button/screenshot handlers), and update the text to
reference that source; ensure every code block contains a short note like
"source: <URL or file:line>" per .agents guidelines.

In @.agents/tools/mobile/ios-simulator-mcp.md:
- Around line 51-66: Replace the inline configuration snippets in
.agents/tools/mobile/ios-simulator-mcp.md with authoritative references: either
cite the official MCP configuration docs (include the exact doc URL or section)
or change the examples to file:line references pointing to the actual config
files (~/.config/opencode/mcp.json or ~/.cursor/mcp.json) and the snippet
location; update the text around the symbols "mcpServers", "ios-simulator",
"command", and "args" to reference those authoritative sources instead of
presenting standalone code blocks.
- Around line 21-27: Update the unpinned install snippet `npx -y
ios-simulator-mcp` to pin the minimum safe release by changing it to `npx -y
ios-simulator-mcp@^1.3.3` so installations default to v1.3.3 or newer (addresses
CVE-2025-52573/GHSA-6f6r-m9pv-67jw); modify the install line where the `npx -y
ios-simulator-mcp` snippet appears and ensure the markdown text around it still
reads correctly.

In @.agents/tools/mobile/xcodebuild-mcp.md:
- Around line 40-60: Mark the CLI and JSON examples as non-authoritative or
replace them with authoritative file:line references: update the "claude mcp add
XcodeBuildMCP -- npx -y xcodebuildmcp@beta mcp" snippet and the JSON block
containing "mcpServers" / "XcodeBuildMCP" to either (a) prepend a clear
"Non-authoritative example" note above both the bash and JSON snippets, or (b)
replace each snippet with a reference to the verified source (e.g., the
canonical config file and exact line range) that documents "xcodebuildmcp@beta"
and the "XcodeBuildMCP" server entry; ensure the change mentions the example
command "claude mcp add XcodeBuildMCP" so reviewers can locate and verify the
original content.

In @.agents/tools/security/tirith.md:
- Around line 30-111: The examples in the Installation, Shell Hook Setup,
Configuration and Bypass sections of .agents/tools/security/tirith.md are not
backed by authoritative sources; replace each ad-hoc code/example with either
(a) a citation/link to the official Tirith docs or upstream project pages, or
(b) file:line references to a verified internal policy file containing the exact
commands; update the "Installation" block (brew/npm/cargo/mise lines), "Shell
Hook Setup" block (eval/tirith init examples), the YAML "Configuration" snippet
(version/allowlist/fail_mode keys), and the "Bypass" example (TIRITH=0 ...) to
point to the chosen authoritative source or to internal file:line references,
and add a short note under each section indicating where the authoritative
reference lives (e.g., "See: <official-url> or <repo>/path/to/policy:LINE").

In @.agents/tools/social-media/linkedin.md:
- Around line 40-68: The LinkedIn API examples in the "OAuth 2.0 Setup" and "Key
Endpoints" sections (including the curl example that posts to "/v2/posts" and
the listed endpoints) are not authoritative; replace those inline examples with
either direct citations/links to the official LinkedIn developer documentation
or with explicit internal file:line references to an approved canonical doc, and
remove or mark any code blocks as examples only if you include the authoritative
source; update the markdown in .agents/tools/social-media/linkedin.md
accordingly so the "OAuth 2.0 Setup", "Key Endpoints", and the curl POST example
explicitly reference the official LinkedIn docs or the internal doc:line
locator.
- Around line 24-35: Update the "Post Types" table in
.agents/tools/social-media/linkedin.md to include inline citations/links to the
official LinkedIn/Microsoft Learn UGC Post API or relevant LinkedIn docs for
each limit (e.g., attach a source link next to "Text post" to confirm the 3,000
char limit and links for "Carousel", "Document", "Video", "Image post", and
"Poll"); for any limits that are not present in the official docs, mark them as
"unverified" or "recommended" and link to the nearest authoritative page (UGC
Post API, Media Upload, Rich Content/Assets docs) so readers can verify as the
API evolves and easily locate the specific endpoint or doc section (update
entries for the Type labels "Text post", "Article", "Carousel", "Document",
"Poll", "Image post", and "Video" accordingly).

In @.agents/tools/voice/voice-ai-models.md:
- Around line 29-35: Update the TTS pricing table in
.agents/tools/voice/voice-ai-models.md by adding a "last-updated" timestamp
(e.g., "as of Feb 2026") near the table header, and replace ambiguous price
cells with explicit model variants and billing periods: for OpenAI include
"OpenAI TTS (tts-1, tts-1-hd $30/1M chars)", for Google specify "Google Cloud
TTS (standard), Chirp 3 HD $30/1M chars", and for Gemini-TTS note "token-based
pricing, see provider docs"; correct Cartesia Sonic to list current subscription
tiers and monthly prices explicitly (Pro $4–8/mo, Startup $39/mo, Scale $239/mo)
and annotate which ranges are monthly vs per‑1M chars where applicable. Ensure
each pricing cell clearly states the model variant and billing unit (per month
or per 1M chars/tokens).
🧹 Nitpick comments (9)
.agents/scripts/pre-edit-check.sh (1)

81-85: Consider consolidating color definitions across scripts.

Since multiple scripts in .agents/scripts/ likely use similar color definitions, you might consider extracting these to a shared constants file (e.g., shared-colors.sh) to reduce duplication and prevent similar issues. However, given that line 166 already sources shared-constants.sh, this fix keeps the critical definitions local for immediate script execution.

.agents/tools/mobile/maestro.md (1)

25-25: Static star count will go stale.

10.6k stars is a snapshot. Consider removing the count or noting it's approximate, to avoid misleading readers over time. This is a minor nit — not blocking.

Suggested change
-- **GitHub**: https://github.com/mobile-dev-inc/maestro (10.6k stars, Apache-2.0)
+- **GitHub**: https://github.com/mobile-dev-inc/maestro (Apache-2.0)
.agents/tools/content/docstrange.md (1)

80-91: MCP config path is macOS-only.

Line 80 references ~/Library/Application Support/Claude/claude_desktop_config.json which is macOS-specific. Since the framework supports Linux as well (Lumen doc references brew for macOS/Linux), consider noting the Linux path or making it platform-aware.

.agents/AGENTS.md (1)

202-227: Autonomous Orchestration section is well-structured but consider trimming the code block.

The section follows the progressive disclosure pattern (brief overview → pointer to full docs), which is good. However, the 6-command code block (Lines 209-222) is fairly detailed for root AGENTS.md. Most tasks won't involve batch orchestration, so this may fall below the >80% relevance threshold.

Consider condensing to just the most essential commands (e.g., cron install + pulse + dashboard) and deferring the rest to the full docs.

Suggested trimmed version
 **Supervisor** (`supervisor-helper.sh`): Manages parallel task execution with SQLite state machine.
 
 ```bash
-# Add tasks and create batch
-supervisor-helper.sh add t001 --repo "$(pwd)" --description "Task description"
-supervisor-helper.sh batch "my-batch" --concurrency 3 --tasks "t001,t002,t003"
-
 # Install cron pulse (REQUIRED for autonomous operation)
 supervisor-helper.sh cron install
 
-# Manual pulse (cron does this automatically every 2 minutes)
-supervisor-helper.sh pulse --batch <batch-id>
-
 # Monitor
 supervisor-helper.sh dashboard --batch <batch-id>
-supervisor-helper.sh status <batch-id>
</details>

As per coding guidelines, `.agents/AGENTS.md`: "Organize agent documentation with instructions budget of ~50-100 max in root AGENTS.md, using progressive disclosure with pointers to subagents" and "Keep every instruction in root AGENTS.md relevant to >80% of tasks."

</blockquote></details>
<details>
<summary>.agents/tools/mobile/xcodebuild-mcp.md (1)</summary><blockquote>

`42-48`: **Align CLI guidance with opencode-only policy.**

This doc still foregrounds Claude Code setup. To avoid drift from the opencode-only orchestration policy, label Claude usage as legacy/deprecated or move it behind a “Legacy” note.

</blockquote></details>
<details>
<summary>.agents/tools/mobile/axe-cli.md (1)</summary><blockquote>

`69-72`: **Call out ffmpeg as a prerequisite for the stream example.**

The stream-to-ffmpeg pipeline assumes ffmpeg is installed; add a one-line prerequisite to avoid CI/agent confusion in automation runs.

</blockquote></details>
<details>
<summary>.agents/tools/mobile/ios-simulator-mcp.md (1)</summary><blockquote>

`23-25`: **Consider marking Claude CLI as legacy here too.**

To keep docs consistent with opencode-only orchestration, add a “Legacy/Deprecated” note for Claude CLI usage.

</blockquote></details>
<details>
<summary>.agents/tools/voice/voice-ai-models.md (1)</summary><blockquote>

`141-145`: **Consider: Duplicate cross-references.**

The Related section duplicates cross-references from lines 16-19. While this repetition aids navigation in a longer document, consider whether a single reference location would reduce maintenance burden.

</blockquote></details>
<details>
<summary>.agents/tools/voice/transcription.md (1)</summary><blockquote>

`62-66`: **Add model download instructions for whisper.cpp.**

The command at line 65 assumes the model file `models/ggml-large-v3-turbo.bin` already exists, but no download instructions are provided. Users following this example may not know how to obtain the model file.


<details>
<summary>📥 Proposed addition for model download step</summary>

```diff
 Optimized for Apple Silicon and CPU inference. Build from source: https://github.com/ggml-org/whisper.cpp
 
+# Download model (first time only)
+bash models/download-ggml-model.sh large-v3-turbo
+
 ```bash
 ./build/bin/whisper-cli -m models/ggml-large-v3-turbo.bin -f audio.wav -otxt -osrt
</details>

</blockquote></details>

</blockquote></details>

<!-- This is an auto-generated comment by CodeRabbit for review status -->

Comment on lines +1742 to +1749
# DEPRECATED: claude CLI fallback - will be removed
if command -v claude &>/dev/null; then
log_warning "Using deprecated claude CLI fallback. Install opencode: npm i -g opencode"
echo "claude"
return 0
fi
log_error "Neither opencode nor claude CLI found. Install one to dispatch workers."
log_error "opencode CLI not found. Install it: npm i -g opencode"
log_error "See: https://opencode.ai/docs/installation/"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🔴 Critical

Fix undefined log_warning call (will exit under set -e).

log_warning isn’t defined in this script (only log_warn exists). Under set -euo pipefail, hitting the claude fallback will terminate the supervisor.

🐛 Suggested fix
-        log_warning "Using deprecated claude CLI fallback. Install opencode: npm i -g opencode"
+        log_warn "Using deprecated claude CLI fallback. Install opencode: npm i -g opencode"
🤖 Prompt for AI Agents
In @.agents/scripts/supervisor-helper.sh around lines 1742 - 1749, The issue:
the script calls undefined log_warning in the claude CLI fallback, which will
fail under set -e; update the fallback to call the existing log_warn function
(or define log_warning) so the logging call succeeds; locate the block that
checks "if command -v claude" and replace log_warning with log_warn (or add a
compatible log_warning wrapper that delegates to log_warn) and keep the rest of
the flow (echo "claude" and return 0) unchanged.

Comment on lines +53 to +59
```bash
# ARIA snapshot (preferred - fast, structured, no vision tokens)
playwright screenshot --aria-snapshot https://example.com/pricing

# Full screenshot (for layout/visual issues)
playwright screenshot https://example.com/pricing --full-page
```
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

🧩 Analysis chain

🌐 Web query:

Playwright CLI screenshot command --aria-snapshot flag documentation

💡 Result:

There is no --aria-snapshot flag for the Playwright CLI screenshot command in the official docs/CLI reference. The CLI docs explicitly point you to discover the current screenshot options via npx playwright screenshot --help (and overall CLI options via npx playwright --help). [1]

“Aria snapshots” are a separate feature: they produce a YAML representation of the accessibility tree and are generated/used via Playwright tests (e.g., expect(locator).toMatchAriaSnapshot(...), updated with npx playwright test -u/--update-snapshots) and via the Code Generator UI (“Assert snapshot” / “Aria snapshot” tab)—not via the screenshot CLI. [2]

Sources: [1] [2]


🌐 Web query:

Playwright screenshot ARIA snapshot command line

💡 Result:

Screenshot (CLI)

npx playwright screenshot --full-page https://example.com example.png

(See also npx playwright screenshot --help for options like --wait-for-timeout.) [1]

ARIA snapshot (there isn’t a single “aria snapshot” CLI like screenshot)

ARIA snapshots are produced via Playwright Test assertions (or via Codegen), then written/updated using the test runner. [2]

1) Add an ARIA snapshot assertion in a test

import { test, expect } from '@playwright/test';

test('aria snapshot', async ({ page }) => {
  await page.goto('https://example.com');
  await expect(page.getByRole('main')).toMatchAriaSnapshot({ name: 'main.aria.yml' });
});

[2]

2) Generate / update the .aria.yml snapshot from the command line

npx playwright test --update-snapshots
# or: npx playwright test -u

[2][3]

Optional (print YAML to stdout):

const yaml = await page.locator('body').ariaSnapshot();
console.log(yaml);

[2]

Sources: [1] [2] [3]


Remove non-existent --aria-snapshot flag and use correct ARIA snapshot workflow.

The playwright screenshot --aria-snapshot flag does not exist in the official Playwright CLI. ARIA snapshots are generated through Playwright tests, not the screenshot command. Replace this example with the correct approach:

// In test file
import { test, expect } from '@playwright/test';

test('aria snapshot', async ({ page }) => {
  await page.goto('https://example.com/pricing');
  await expect(page.getByRole('main')).toMatchAriaSnapshot({ name: 'pricing.aria.yml' });
});

Then update snapshots via:

npx playwright test --update-snapshots

This example violates the .agents/**/*.md guideline requiring code examples to be authoritative. If ARIA snapshots aren't the focus of this doc, use a file:line reference to canonical instructions instead.

🤖 Prompt for AI Agents
In @.agents/seo/mom-test-ux.md around lines 53 - 59, Replace the non-existent
CLI flag usage "playwright screenshot --aria-snapshot" with the canonical ARIA
snapshot test workflow: remove references to the "--aria-snapshot" flag and the
misuse of "playwright screenshot", and instead show creating an actual
Playwright test that navigates to the page and calls the ARIA snapshot matcher
(e.g., toMatchAriaSnapshot on a locator such as page.getByRole('main')), then
instruct readers to update snapshots with "npx playwright test
--update-snapshots"; if ARIA snapshots aren’t central to this doc, replace the
example with a file:line reference to the official Playwright ARIA snapshot docs
instead.

Comment on lines +31 to +34
```bash
# Extract high-impression, low-CTR queries as content gaps (see seo/google-search-console.md)
gsc-helper.sh query-report --min-impressions 500 --max-ctr 0.02 --days 90
```
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Use authoritative examples or replace with file:line references.

This command example should be tied to an authoritative source or replaced with a file:line reference per .agents guidance.
As per coding guidelines: “.agents/**/*.md: Use code examples only when authoritative, otherwise use file:line references”.

🤖 Prompt for AI Agents
In @.agents/tools/content/content-calendar.md around lines 31 - 34, Replace the
standalone example command "gsc-helper.sh query-report --min-impressions 500
--max-ctr 0.02 --days 90" in .agents/tools/content/content-calendar.md with an
authoritative reference: either cite the source that defines that CLI usage
(e.g., link or doc section in seo/google-search-console.md if it documents
gsc-helper.sh) or change the example to a file:line reference pointing to the
canonical implementation/usage (for example the file that contains the
gsc-helper.sh help text), and update the surrounding text to mention the
file:line reference instead of an unreferenced code snippet.

⚠️ Potential issue | 🔴 Critical

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Search for gsc-helper.sh in the repository
echo "=== Searching for gsc-helper.sh ==="
rg -n "gsc-helper\.sh" . --type md --type sh

echo ""
echo "=== Locating gsc-helper.sh file ==="
find . -name "gsc-helper.sh" -type f

echo ""
echo "=== Checking for seo/google-search-console.md ==="
ls -la seo/google-search-console.md 2>/dev/null || echo "File not found"

echo ""
echo "=== Searching for any references to gsc or google-search-console ==="
rg -n "gsc|google-search-console" . --type md | head -20

Repository: marcusquinn/aidevops

Length of output: 2731


Implement missing helper script and documentation—this workflow is non-functional.

The referenced gsc-helper.sh script does not exist in the repository, and neither does the documentation file seo/google-search-console.md that it depends on. The command at line 33 cannot execute without these components. Either implement these missing pieces or replace this section with a placeholder/TODO until the infrastructure is ready.

🤖 Prompt for AI Agents
In @.agents/tools/content/content-calendar.md around lines 31 - 34, The workflow
references a missing helper script and doc: implement a new executable script
named gsc-helper.sh (or a Go/JS CLI with that entrypoint) that provides the
subcommand query-report with flags --min-impressions, --max-ctr, and --days and
wire it to Google Search Console data retrieval and filtering, and add the
corresponding documentation file seo/google-search-console.md describing usage
and required credentials; alternatively, if you can't implement now, replace the
command in content-calendar.md with a clear TODO note pointing to where
gsc-helper.sh and seo/google-search-console.md will live and remove the
non-functional example so the workflow is not presented as runnable.

Comment on lines +52 to +80
```text
skill-name/
SKILL.md # Instructions for the agent (required)
scripts/ # Helper scripts for automation (optional)
references/ # Supporting documentation (optional)
```

**SKILL.md frontmatter:**

```yaml
---
name: skill-name
description: One sentence describing when to use this skill
metadata:
author: author-name
version: "1.0.0"
---
```

The body contains agent instructions: how the skill works, usage examples,
expected output format, and troubleshooting guidance.

## Installation

```bash
npx skills add vercel-labs/agent-skills # Native CLI
aidevops skill add vercel-labs/agent-skills # aidevops (preferred)
/add-skill vercel-labs/agent-skills --name vercel-deploy # With custom name
```
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion | 🟠 Major

🧩 Analysis chain

🏁 Script executed:

cd /tmp && cat -n .agents/tools/deployment/agent-skills.md | sed -n '52,80p'

Repository: marcusquinn/aidevops

Length of output: 136


🏁 Script executed:

rg -n "agent skills|add-skill|vercel-deploy|SKILL.md|skills add" .agents/

Repository: marcusquinn/aidevops

Length of output: 16147


🏁 Script executed:

cat -n .agents/tools/deployment/agent-skills.md | sed -n '52,80p'

Repository: marcusquinn/aidevops

Length of output: 1012


🏁 Script executed:

# Search for exact matches of the SKILL.md frontmatter example
rg -A 5 "name: skill-name" .agents/

Repository: marcusquinn/aidevops

Length of output: 775


🏁 Script executed:

# Check if "npx skills add vercel-labs/agent-skills" appears elsewhere
rg -n "npx skills add vercel-labs/agent-skills" .agents/

Repository: marcusquinn/aidevops

Length of output: 270


Replace illustrative code examples with file:line references and consolidate duplicate frontmatter pattern.

Lines 52–80 contain illustrative templates rather than authoritative excerpts. Per guidelines (.agents/**/*.md), replace these with file:line references to the authoritative sources. Additionally, the name: skill-name frontmatter pattern at lines 61–69 is duplicated in .agents/tools/build-agent/add-skill.md — consolidate to a single source of truth.

Affected line ranges
  • 52–57: Directory structure template (generic example)
  • 61–69: SKILL.md frontmatter template (duplicated elsewhere)
  • 76–80: Installation command examples (illustrative)
🤖 Prompt for AI Agents
In @.agents/tools/deployment/agent-skills.md around lines 52 - 80, Replace the
illustrative directory template, SKILL.md frontmatter block, and installation
examples with pointers to the authoritative sources: remove the generic
"Directory structure template" and the duplicated "SKILL.md frontmatter" (the
duplicated name: skill-name pattern) and instead reference the single
source-of-truth frontmatter defined in the existing add-skill source; likewise
replace the three installation command examples with a file:line reference to
the canonical installation snippet; update headings "SKILL.md frontmatter",
"Directory structure template", and "Installation command examples" to point
readers to those authoritative file:line references and remove the duplicated
frontmatter block so only the single source-of-truth remains.

Comment on lines +61 to +85
```bash
# Repository setup
jj git init # New jj repo with git backend
jj git clone <url> # Clone a git remote
jj init --git-repo=. # Colocate: add jj to existing git repo

# Daily workflow
jj new # Start a new change on top of current
jj describe -m "message" # Set/update commit message
jj diff # Show changes in working copy
jj log # Show commit graph (rich template output)
jj status # Show working copy status

# Rewriting history
jj squash # Move working copy changes into parent
jj split # Split working copy commit into two
jj edit <rev> # Edit an earlier commit (descendants auto-rebase)
jj rebase -r <rev> -d <dst> # Rebase a single commit
jj rebase -s <rev> -d <dst> # Rebase commit and descendants

# Git interop
jj git fetch # Fetch from git remotes
jj git push # Push bookmarks to git remote
jj bookmark set main # Set a bookmark (branch) on current commit
```
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Use authoritative examples or replace with file:line references.

The CLI examples should be sourced from official Jujutsu docs or replaced with file:line references to an authoritative internal doc.
As per coding guidelines: “.agents/**/*.md: Use code examples only when authoritative, otherwise use file:line references”.

🤖 Prompt for AI Agents
In @.agents/tools/git/jujutsu.md around lines 61 - 85, Replace the unverified
CLI examples in .agents/tools/git/jujutsu.md with authoritative references:
either pull the exact example lines from the official Jujutsu documentation (and
add a citation/URL footnote) or replace each command example (e.g., "jj new",
"jj describe -m", "jj diff", "jj log", "jj status", "jj squash", "jj split", "jj
edit <rev>", "jj rebase -r/-s <rev> -d <dst>", "jj git fetch", "jj git push",
"jj init --git-repo=.", "jj git clone <url>", "jj git init", "jj bookmark set
main") with file:line references to the authoritative internal doc; update the
header of the code block to note the source and ensure the examples exactly
match that source to comply with the .agents/**/*.md guideline.

Comment on lines +40 to +60
## MCP Configuration

### Claude Code

```bash
claude mcp add XcodeBuildMCP -- npx -y xcodebuildmcp@beta mcp
```

### JSON Config (Cursor, VS Code, Claude Desktop, OpenCode)

```json
{
"mcpServers": {
"XcodeBuildMCP": {
"command": "npx",
"args": ["-y", "xcodebuildmcp@beta", "mcp"]
}
}
}
```

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Mark non-authoritative snippets or replace with file:line references.

These CLI/config examples are not tied to an authoritative source. Per .agents guidelines, either cite authoritative sources for these examples or replace them with file:line references to a verified source document.
As per coding guidelines: “.agents/**/*.md: Use code examples only when authoritative, otherwise use file:line references”.

🤖 Prompt for AI Agents
In @.agents/tools/mobile/xcodebuild-mcp.md around lines 40 - 60, Mark the CLI
and JSON examples as non-authoritative or replace them with authoritative
file:line references: update the "claude mcp add XcodeBuildMCP -- npx -y
xcodebuildmcp@beta mcp" snippet and the JSON block containing "mcpServers" /
"XcodeBuildMCP" to either (a) prepend a clear "Non-authoritative example" note
above both the bash and JSON snippets, or (b) replace each snippet with a
reference to the verified source (e.g., the canonical config file and exact line
range) that documents "xcodebuildmcp@beta" and the "XcodeBuildMCP" server entry;
ensure the change mentions the example command "claude mcp add XcodeBuildMCP" so
reviewers can locate and verify the original content.

Comment on lines +30 to +111
## Installation

```bash
brew install sheeki03/tap/tirith # macOS
npm install -g tirith # cross-platform
cargo install tirith # from source
mise use -g tirith # mise
```

Also available via Nix, deb, rpm, AUR, Scoop, and Chocolatey.

## Shell Hook Setup

Add to your shell profile — this is the only activation step:

```bash
# zsh (~/.zshrc)
eval "$(tirith init --shell zsh)"

# bash (~/.bashrc)
eval "$(tirith init --shell bash)"

# fish (~/.config/fish/config.fish)
tirith init --shell fish | source
```

Every command is now guarded. Clean commands pass through invisibly.

## Rule Categories

| Category | What it stops |
|----------|---------------|
| **Homograph attacks** | Cyrillic/Greek lookalikes in hostnames, punycode domains, mixed-script labels |
| **Terminal injection** | ANSI escape sequences that rewrite display, bidi overrides, zero-width characters |
| **Pipe-to-shell** | `curl \| bash`, `wget \| sh`, `python <(curl ...)`, `eval $(wget ...)` |
| **Dotfile attacks** | Downloads targeting `~/.bashrc`, `~/.ssh/authorized_keys`, `~/.gitconfig` |
| **Insecure transport** | Plain HTTP piped to shell, `curl -k`, disabled TLS verification |
| **Ecosystem threats** | Git clone typosquats, untrusted Docker registries, pip/npm URL installs |
| **Credential exposure** | `http://user:pass@host` userinfo tricks, shortened URLs hiding destinations |

Critical rules (homograph, dotfile) **block** execution. Medium rules (pipe-to-shell with clean URL) **warn** but allow.

## Commands

```bash
tirith check -- <cmd> # Analyze without executing
tirith score <url> # URL trust signal breakdown
tirith diff <url> # Byte-level suspicious character comparison
tirith run <url> # Safe curl|bash replacement (download, review, confirm)
tirith receipt list # Audit trail of scripts run via tirith run
tirith why # Explain last triggered rule
tirith doctor # Diagnostic check (shell, hooks, policy)
```

## Configuration

YAML policy file, discovered in order:

1. `.tirith/policy.yaml` (walks up to repo root)
2. `~/.config/tirith/policy.yaml`

```yaml
version: 1
allowlist:
- "get.docker.com"
- "sh.rustup.rs"

severity_overrides:
docker_untrusted_registry: critical

fail_mode: open # or "closed" for strict environments
```

Organizations can set `allow_bypass: false` to prevent per-command bypass.

## Bypass

For commands you've verified manually:

```bash
TIRITH=0 curl -L https://known-safe.example.com | bash
```
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Use authoritative examples or replace with file:line references.

These installation/configuration examples need authoritative sources (official docs) or must be replaced with file:line references to a verified source per .agents guidance.
As per coding guidelines: “.agents/**/*.md: Use code examples only when authoritative, otherwise use file:line references”.

🤖 Prompt for AI Agents
In @.agents/tools/security/tirith.md around lines 30 - 111, The examples in the
Installation, Shell Hook Setup, Configuration and Bypass sections of
.agents/tools/security/tirith.md are not backed by authoritative sources;
replace each ad-hoc code/example with either (a) a citation/link to the official
Tirith docs or upstream project pages, or (b) file:line references to a verified
internal policy file containing the exact commands; update the "Installation"
block (brew/npm/cargo/mise lines), "Shell Hook Setup" block (eval/tirith init
examples), the YAML "Configuration" snippet (version/allowlist/fail_mode keys),
and the "Bypass" example (TIRITH=0 ...) to point to the chosen authoritative
source or to internal file:line references, and add a short note under each
section indicating where the authoritative reference lives (e.g., "See:
<official-url> or <repo>/path/to/policy:LINE").

Comment on lines +24 to +35
## Post Types

| Type | Use Case | Notes |
|------|----------|-------|
| **Text post** | Thought leadership, updates | 3,000 char limit |
| **Article** | Long-form content | Published on LinkedIn's platform |
| **Carousel** | Multi-page visual content | PDF upload, up to 300 pages |
| **Document** | Whitepapers, guides | PDF/PPT/DOC, 100MB max |
| **Poll** | Audience engagement | 2-4 options, 1-2 week duration |
| **Image post** | Visual content | Up to 9 images per post |
| **Video** | Native video content | Up to 10 min recommended |

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

🧩 Analysis chain

🏁 Script executed:

# First, check the actual file to see its current state
cat -n .agents/tools/social-media/linkedin.md | head -50

Repository: marcusquinn/aidevops

Length of output: 1962


🌐 Web query:

LinkedIn Community Management API v2 post types character limits size restrictions official documentation

💡 Result:

Official docs (LinkedIn Community Management / UGC posting) — post types + limits

Post “types” (via shareMediaCategory)

The UGC Post API (POST /v2/ugcPosts) supports these shareMediaCategory values (i.e., post content types): ARTICLE, IMAGE, NONE, RICH, VIDEO, LEARNING_COURSE, JOB, QUESTION, ANSWER, CAROUSEL, TOPIC, NATIVE_DOCUMENT, URN_REFERENCE, LIVE_VIDEO. [1]

Character limits / field length limits (UGC Post API)

  • Post text (shareCommentary.text): max 3000 characters. [1]
  • Landing page URL (primaryLandingPageUrl, landingPageUrl): max 2000 characters. [1]
  • originalUrl: max 8192 characters. [1]
  • Thumbnail altText: max 4086 characters (recommended <120). [1]
  • Thumbnail url: max 8192 characters. [1]

Media upload restrictions (Assets / Vector Asset API)

Images

  • Supported formats: JPG, GIF, PNG. [2]
  • Pixel limit: < 36,152,320 pixels. [2]
  • GIF limit: up to 250 frames. [2]

Videos (upload mechanics)

  • < 200 MB: single-operation upload. [3]
  • > 200 MB: must use multi-part upload; LinkedIn’s doc example splits parts into 5 MB chunks. [3]

Creation validation note (video/live video/document posts)

LinkedIn enforces that for VIDEO, LIVE_VIDEO, and NATIVE_DOCUMENT UGC posts, the fields thumbnail, originalURL, and description must be empty (otherwise the API can return a 400 error). [4]

Sources: UGC Post API (Microsoft Learn) [1], Assets/Vector Asset API (Microsoft Learn) [2][3], LinkedIn Developer Newsletter / API changes note [4].


🏁 Script executed:

# Check for duplicate instructions in .agents directory related to linkedin or post types
rg "post type|carousel|document|character limit|300 pages" .agents/ --type md

Repository: marcusquinn/aidevops

Length of output: 50376


Cite official LinkedIn API documentation sources for specific limits.

The 3,000 character limit for text posts is confirmed in LinkedIn's official UGC Post API docs. However, several other limits in the table (carousel 300 pages, document 100MB, video 10 min recommended, 9 images per post, and poll 1–2 week duration) could not be verified against the current official Microsoft Learn documentation. Add links to the specific LinkedIn API endpoints or documentation sections that define each limit to ensure accuracy as the API evolves.

🤖 Prompt for AI Agents
In @.agents/tools/social-media/linkedin.md around lines 24 - 35, Update the
"Post Types" table in .agents/tools/social-media/linkedin.md to include inline
citations/links to the official LinkedIn/Microsoft Learn UGC Post API or
relevant LinkedIn docs for each limit (e.g., attach a source link next to "Text
post" to confirm the 3,000 char limit and links for "Carousel", "Document",
"Video", "Image post", and "Poll"); for any limits that are not present in the
official docs, mark them as "unverified" or "recommended" and link to the
nearest authoritative page (UGC Post API, Media Upload, Rich Content/Assets
docs) so readers can verify as the API evolves and easily locate the specific
endpoint or doc section (update entries for the Type labels "Text post",
"Article", "Carousel", "Document", "Poll", "Image post", and "Video"
accordingly).

Comment on lines +40 to +68
### OAuth 2.0 Setup

1. Create app at https://www.linkedin.com/developers/apps
2. Request Community Management API access (requires app review)
3. Configure redirect URI and obtain client ID/secret

```bash
# Store credentials securely
aidevops secret set LINKEDIN_CLIENT_ID
aidevops secret set LINKEDIN_CLIENT_SECRET
aidevops secret set LINKEDIN_ACCESS_TOKEN
```

### Key Endpoints

| Endpoint | Method | Purpose |
|----------|--------|---------|
| `/v2/userinfo` | GET | Authenticated user profile |
| `/v2/posts` | POST | Create text/media posts |
| `/v2/images?action=initializeUpload` | POST | Register image upload |
| `/v2/organizationalEntityShareStatistics` | GET | Post analytics |

```bash
# Create a text post
curl -X POST -H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
"https://api.linkedin.com/v2/posts" \
-d '{"author":"urn:li:person:ID","lifecycleState":"PUBLISHED","visibility":"PUBLIC","commentary":"Post text here","distribution":{"feedDistribution":"MAIN_FEED"}}'
```
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Use authoritative examples or replace with file:line references.

These API examples need to be sourced from official LinkedIn docs or replaced with file:line references to an authoritative internal doc.
As per coding guidelines: “.agents/**/*.md: Use code examples only when authoritative, otherwise use file:line references”.

🤖 Prompt for AI Agents
In @.agents/tools/social-media/linkedin.md around lines 40 - 68, The LinkedIn
API examples in the "OAuth 2.0 Setup" and "Key Endpoints" sections (including
the curl example that posts to "/v2/posts" and the listed endpoints) are not
authoritative; replace those inline examples with either direct citations/links
to the official LinkedIn developer documentation or with explicit internal
file:line references to an approved canonical doc, and remove or mark any code
blocks as examples only if you include the authoritative source; update the
markdown in .agents/tools/social-media/linkedin.md accordingly so the "OAuth 2.0
Setup", "Key Endpoints", and the curl POST example explicitly reference the
official LinkedIn docs or the internal doc:line locator.

Comment on lines +29 to +35
| Provider | Latency | Quality | Voice Clone | Languages | Pricing |
|----------|---------|---------|-------------|-----------|---------|
| ElevenLabs | ~300ms | Best | Yes | 29 | $5-330/mo |
| OpenAI TTS | ~400ms | Great | No | 57 | $15/1M chars |
| Cartesia Sonic | ~150ms | Great | Yes (5s ref) | 17 | $8-66/mo |
| Google Cloud TTS | ~200ms | Good | No (custom) | 50+ | $4-16/1M chars |

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

🧩 Analysis chain

🏁 Script executed:

cat -n .agents/tools/voice/voice-ai-models.md | head -50

Repository: marcusquinn/aidevops

Length of output: 2448


🌐 Web query:

ElevenLabs TTS API current pricing 2026

💡 Result:

As of February 2026, ElevenLabs’ TTS/API access is priced via the standard subscription plans (credits/month) on their API Pricing page: (elevenlabs.io)

  • Free: $0/mo10k credits/mo (elevenlabs.io)
  • Starter: $5/mo30k credits/mo (elevenlabs.io)
  • Creator: $22 first month (50% off), then $11/mo100k credits/mo (elevenlabs.io)
  • Pro: $99/mo500k credits/mo (elevenlabs.io)
  • Scale: $330/mo2M credits/mo (includes seats/workspace) (elevenlabs.io)
  • Business: $1,320/mo11M credits/mo (mentions low-latency TTS “as low as 5c/minute”) (elevenlabs.io)
  • Enterprise: Custom pricing (elevenlabs.io)

They also advertise a rough TTS cost of “~$0.12 per minute” on their TTS API page (model-dependent). (elevenlabs.io)

Citations:


🌐 Web query:

OpenAI TTS API current pricing rates 2026

💡 Result:

As of February 2026, OpenAI’s Text-to-Speech (TTS) API pricing is listed as:

  • TTS (tts-1): $15.00 per 1M characters (speech generation) [1]
  • TTS HD (tts-1-hd): $30.00 per 1M characters (speech generation) [1]
  • gpt-4o-mini-tts (newer TTS option billed via audio tokens): $12.00 per 1M audio output tokens (estimated ~$0.015/min) [1][2]

Sources: OpenAI API Pricing page and pricing docs [1][2].

[1] https://platform.openai.com/pricing
[2] https://platform.openai.com/docs/pricing/


🌐 Web query:

Cartesia Sonic TTS pricing 2026

💡 Result:

As of February 8, 2026, Cartesia’s Sonic (TTS) is priced via subscription tiers that include a monthly pool of model credits, with Sonic TTS usage billed at 1 credit per character. [1]

Plans (credits included)

  • Free: $0/mo with 20K model credits [1]
  • Pro: $4/mo (billed yearly) with 100K model credits [1]
  • Startup: $39/mo (billed yearly) with 1.25M model credits [1]
  • Scale: $239/mo (billed yearly) with 8M model credits [1]
  • Enterprise: “Contact us” (custom usage pricing) [1]

Effective TTS cost (from included credits; 1 credit = 1 character)

Approximate included cost per 1,000 characters:

  • Pro: $4 / 100,000 chars ≈ $0.04 / 1K chars
  • Startup: $39 / 1,250,000 chars ≈ $0.0312 / 1K chars
  • Scale: $239 / 8,000,000 chars ≈ $0.0299 / 1K chars

Notes

  • Cartesia’s public pricing page shows the credit rates (e.g., 1 credit/character for Sonic TTS) but does not clearly publish a universal $/credit overage rate; overages/extra usage appear to be handled via their portal/calculator and plan terms. [1]
  • A third-party comparison site lists Cartesia Sonic 3 at $0.05 per 1K characters, but treat that as non-official. [2]

Sources: Cartesia pricing page [1]; third-party comparison [2].

[1] https://cartesia.ai/pricing
[2] https://www.zubnet.ai/compare.html


🌐 Web query:

Google Cloud TTS pricing 2026

💡 Result:

As listed on Google Cloud’s Text-to-Speech pricing page (accessed Feb 8, 2026), pricing is mainly based on characters (legacy/latest models) or tokens (Gemini-TTS). Billing counts spaces/newlines and most SSML tags (except <mark>). [1]

Gemini‑TTS (token-based)

  • Gemini 2.5 Flash TTS / Flash‑Lite Preview TTS: No free tier; $0.50 / 1M text input tokens and $10.00 / 1M audio output tokens [1]
  • Gemini 2.5 Pro TTS: No free tier; $1.00 / 1M text input tokens and $20.00 / 1M audio output tokens [1]
  • Note: 25 audio tokens ≈ 1 second of audio [1]

Latest TTS models (character-based)

  • Chirp 3: HD: 1M chars free/month, then $30 / 1M chars [1]
  • Instant custom voice: No free tier, $60 / 1M chars [1]

Legacy TTS models (character-based)

  • Standard voices: 4M chars free/month, then $4 / 1M chars [1]
  • WaveNet voices: 4M chars free/month, then $4 / 1M chars [1]
  • Neural2 voices: 1M chars free/month, then $16 / 1M chars [1]
  • Studio voices: 1M chars free/month, then $160 / 1M chars [1]
  • Polyglot (Preview): 1M chars free/month, then $16 / 1M chars [1]

Source: Google Cloud “Text-to-Speech pricing” page. [1]


Add last-updated date to TTS pricing table and verify currency of model tiers.

The table omits newer pricing options (OpenAI's tts-1-hd at $30/1M chars; Google's Chirp 3 HD at $30/1M; Gemini-TTS token-based pricing). Cartesia's documented range ($8-66/mo) does not align with current subscription structure (Pro $4-8/mo, Startup $39/mo, Scale $239/mo). Add a timestamp (e.g., "as of Feb 2026") and specify which model variants and billing periods the ranges represent.

🤖 Prompt for AI Agents
In @.agents/tools/voice/voice-ai-models.md around lines 29 - 35, Update the TTS
pricing table in .agents/tools/voice/voice-ai-models.md by adding a
"last-updated" timestamp (e.g., "as of Feb 2026") near the table header, and
replace ambiguous price cells with explicit model variants and billing periods:
for OpenAI include "OpenAI TTS (tts-1, tts-1-hd $30/1M chars)", for Google
specify "Google Cloud TTS (standard), Chirp 3 HD $30/1M chars", and for
Gemini-TTS note "token-based pricing, see provider docs"; correct Cartesia Sonic
to list current subscription tiers and monthly prices explicitly (Pro $4–8/mo,
Startup $39/mo, Scale $239/mo) and annotate which ranges are monthly vs per‑1M
chars where applicable. Ensure each pricing cell clearly states the model
variant and billing unit (per month or per 1M chars/tokens).

…h-session

# Conflicts:
#	.agents/tools/git/conflict-resolution.md
@github-actions
Copy link

github-actions bot commented Feb 8, 2026

🔍 Code Quality Report

�[0;35m[MONITOR]�[0m Code Review Monitoring Report

�[0;34m[INFO]�[0m Latest Quality Status:
SonarCloud: 0 bugs, 0 vulnerabilities, 34 code smells

�[0;34m[INFO]�[0m Recent monitoring activity:
Sun Feb 8 04:20:51 UTC 2026: Code review monitoring started
Sun Feb 8 04:20:51 UTC 2026: SonarCloud - Bugs: 0, Vulnerabilities: 0, Code Smells: 34

📈 Current Quality Metrics

  • BUGS: 0
  • CODE SMELLS: 34
  • VULNERABILITIES: 0

Generated on: Sun Feb 8 04:20:54 UTC 2026


Generated by AI DevOps Framework Code Review Monitoring

@marcusquinn marcusquinn merged commit 6a418fd into main Feb 8, 2026
8 of 10 checks passed
@sonarqubecloud
Copy link

sonarqubecloud bot commented Feb 8, 2026

marcusquinn added a commit that referenced this pull request Feb 8, 2026
- Add mom-test-ux to subagent-index.toon seo/ key_files
- Fix broken page-cro reference in seo-audit-skill.md to point to mom-test-ux.md
- The agent file itself was already merged via PR #557

Closes #521
@marcusquinn marcusquinn deleted the chore/autonomous-batch-session branch February 21, 2026 01:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant