- Use caller-provided .mp4 path during upload in resume mode instead of
hardcoding the RUN_ID path
- Fix textarea restore: assign JS string literal directly instead of
JSON.parse(), which breaks on multiline content
- Add upload-only resume mode: pass an .mp4 path as first argument to
skip recording and go directly to upload (fixes "no resume path" gap)
- Inline DEFAULT_BRANCH into a single shell block so it persists for
both git diff and git log in record-only mode
- Add plain-chat fallback for the GitHub login prompt per cross-platform
compliance checklist
Verify ffmpeg, agent-browser, and gh are installed in Step 1b before
proceeding to recording. Prevents wasting time capturing screenshots
only to fail at the encoding step.
- P2: Replace shell $RUN_ID variable with [RUN_ID] placeholder that
the agent substitutes with the concrete timestamp value, since shell
variables don't persist across separate code blocks
- P2: JSON-encode saved textarea content before restoring to handle
apostrophes, newlines, and special characters in draft text
- P2: Cleanup only removes the current run's directory, not the whole
feature-video tree, preserving other in-progress or record-only runs
- P1: Use double quotes for ffmpeg -i glob so $RUN_ID expands correctly
- P2: Move textarea save before upload to capture the user's actual
draft, not the post-upload mutated content
- P2: Detect default branch via gh repo view instead of hardcoding
main, so record-only mode works in repos using master/develop/etc
- P1: Add URL validation guard -- verify extracted URL contains
user-attachments/assets/ before editing PR body, with retry logic
- P1: Record-only mode now works end-to-end -- Step 2 falls back to
git diff/log when no PR exists instead of failing on gh pr view
- P2: Respect explicit PR numbers -- only check current branch when
no PR number argument was provided
- P2: Preserve existing textarea content -- save/restore any draft
text in the comment box around the upload operation
- P2: Per-run screenshot directories ($RUN_ID) prevent stale frames
from prior runs being spliced into new videos
The skill name is "feature-video" not "PR-video" -- it should be able to
record a video of a feature regardless of whether a PR exists yet. Step 1
now detects the missing PR and offers to create a draft PR automatically
or proceed in record-only mode (save locally, upload later).
Drop the rclone/R2 external storage dependency and GitHub Release asset
fallback in favor of uploading videos directly through GitHub's native
attachment system via agent-browser. This produces user-attachments/assets/
URLs that render as inline video players in PR descriptions -- the same
result as pasting a video interactively in the GitHub editor.
Key changes:
- Use agent-browser upload command with Chrome engine to set video files
on GitHub's hidden comment form file input
- Add session-based auth flow (--engine chrome --session-name github)
with one-time headed login for 2FA/SSO/OAuth compatibility
- Reorder auth check before auth setup for correct execution flow
- Move scratch files to .context/compound-engineering/feature-video/
- Expand description for better auto-triggering
- Add cross-platform question tool references
- Add troubleshooting table for common failure modes
- Add solution docs for native upload pattern and browser auth patterns
- Remove all R2, rclone, GIF preview, and release asset logic
Beta skills now use disable-model-invocation: true to prevent accidental
auto-triggering. Descriptions written as future stable descriptions with
[BETA] prefix for clean promotion. Updated solutions doc and AGENTS.md
promotion checklist to include removing the field.
- Beta plans use -beta-plan.md suffix to avoid clobbering stable plans
- Fix internal references in beta skills to use beta names consistently
- Add beta skills section to AGENTS.md with promotion checklist
Create separate beta skills instead of gating existing ones. Stable
ce:plan and deepen-plan are restored to main versions. Beta skills
reference each other and work standalone outside lfg/slfg orchestration.
- Surface deferred implementation questions and scope boundaries
- Use per-unit Patterns and Verification fields for task execution
- Add execution strategy: inline, serial subagents, or parallel
- Reframe Swarm Mode as Agent Teams with opt-in requirement
- Make tool references platform-agnostic
- Remove plan checkbox editing during execution
Restructures ce:plan around a decisions-first philosophy:
- Replace issue-template output with durable implementation plans
- Add blocker classification gate for upstream requirements (R11-R13)
- Replace MINIMAL/MORE/A LOT with Lightweight/Standard/Deep
- Add planning bootstrap fallback with ce:brainstorm recommendation
- Remove all implementation code, shell commands, and executor litter
- Make SpecFlow conditional for Standard/Deep plans
- Keep research agents, brainstorm-origin integration, and handoff options
- Restore origin doc completeness checks, user signal gathering,
research decision examples, filename examples, stakeholder awareness,
and mermaid diagram nudges from the old skill
plugin.json and marketplace.json were stuck at 2.40.0 while root
package.json was already at 2.41.0. Skill count was listed as 47
but actual count is 42. README still had stale "Commands | 23"
row from before the commands→skills migration in v2.39.0.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
New issue-intelligence-analyst agent that fetches GitHub issues via
gh CLI, clusters by root-cause themes, and returns structured analysis
with trend direction, confidence scores, and source mix. Designed for
both ce:ideate integration and standalone use.
Agent design:
- Priority-aware fetching with label scanning for focus targeting
- Truncated bodies (500 chars) in initial fetch to avoid N+1 calls
- Single gh call per fetch, no pipes or scripts (avoids permission spam)
- Built-in --jq for all field extraction and filtering
- Mandatory structured output with self-check checklist
- Accurate counts from actual data, not assumptions
- Closed issues as recurrence signal only, not standalone evidence
ce:ideate gains:
- Issue-tracker intent detection in Phase 0.2
- Conditional agent dispatch in Phase 1 (parallel with existing scans)
- Dynamic frame derivation from issue clusters in Phase 2
- Hybrid strategy: cluster-derived frames + default padding when < 4
- Resume awareness distinguishing issue vs non-issue ideation
- Numbered table format for rejection summary in ideation artifacts
Reduce per-agent idea target from 10 to 7-8 based on real usage data
showing ideas 8-11 were speculative tail that rarely survived filtering.
This keeps the unique candidate pool manageable (~20-30 after dedup)
while preserving frame diversity across 4-6 agents. Also add scannable
overview line before detail blocks in Phase 4, and clarify foreground
dispatch and native tool usage in Phase 1.
- Clarify sub-agent volume: each agent targets ~10 ideas (40-60 raw, ~30-50 after dedupe)
- Reframe ideation lenses as starting biases, not constraints, to encourage cross-cutting ideas
- Add orchestrator synthesis step between merge/dedupe and critique
- Improve skill description with specific trigger phrases for better auto-discovery
- Update argument-hint to be user-facing ("feature, focus area, or constraint")
- Position ideate as optional entry point in workflow diagram, not part of core loop
- Update plugin metadata and README with new skill counts and descriptions
Research agents (repo-research-analyst, git-history-analyzer,
best-practices-researcher, framework-docs-researcher) were using
shell commands like find, rg, cat, and chained pipelines for routine
codebase exploration. This triggers permission prompts in Claude Code
and degrades the user experience when these agents run as sub-agents.
Updated all research agents with platform-agnostic tool selection
guidance that prefers native file-search/glob, content-search/grep,
and file-read tools over shell equivalents. Shell is now reserved for
commands with no native equivalent (ast-grep, bundle show, git).
Git-history-analyzer additionally limits shell to one simple git
command per call with no chaining or piping.
Added tool selection rules to AGENTS.md so future agents follow
the same pattern by default.
* docs: capture codex skill prompt model
* fix: align codex workflow conversion
* chore: remove deprecated workflows:* skill aliases
The workflows:brainstorm, workflows:plan, workflows:work, workflows:review,
and workflows:compound aliases have been deprecated long enough. Remove them
and update skill counts (46 → 41) across plugin.json, marketplace.json,
README, and CLAUDE.md.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: Trevin Chow <trevin@trevinchow.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>