Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
17 commits
Select commit Hold shift + click to select a range
e6746ad
feat(ce-demo-reel): add R2 upload + headless auto-upload + auto-start…
kieranklaassen May 4, 2026
916d80f
docs(ce-replan-beta): add brainstorm + plan for new beta skill
kieranklaassen May 6, 2026
9c1d439
feat(ce-replan-beta): add skill scaffold and frontmatter
kieranklaassen May 6, 2026
8bba1cd
feat(ce-replan-beta): add PR and original-plan discovery scripts
kieranklaassen May 6, 2026
27ddf04
feat(ce-replan-beta): add re-grounding workflow reference
kieranklaassen May 6, 2026
b3f0bfd
feat(ce-replan-beta): add output plan doc template
kieranklaassen May 6, 2026
a285ce1
feat(ce-replan-beta): wire phase content into SKILL.md
kieranklaassen May 6, 2026
332e46f
docs(ce-replan-beta): list the new skill in README Beta / Experimental
kieranklaassen May 6, 2026
3f6b835
fix(review): apply autofix feedback
kieranklaassen May 6, 2026
4722057
docs(ce-replan-beta): supersede v1 design with v2 rebrainstorm + replan
kieranklaassen May 6, 2026
64447d1
feat(ce-replan-beta): u1 — scaffold v2 frontmatter and intro
kieranklaassen May 6, 2026
179faf5
feat(ce-replan-beta): u2 — surface jq failures + add brainstorm finder
kieranklaassen May 6, 2026
bf6900c
feat(ce-replan-beta): u3 — re-brainstorm workflow reference
kieranklaassen May 6, 2026
0d2b805
feat(ce-replan-beta): u4 — forked brainstorm output template
kieranklaassen May 6, 2026
f9bf541
feat(ce-replan-beta): u5 — replan output template
kieranklaassen May 6, 2026
69d80d8
feat(ce-replan-beta): u6 — wire two-phase flow into SKILL.md
kieranklaassen May 6, 2026
3b0ab86
docs(ce-replan-beta): u7 — refresh README Beta Skills wording
kieranklaassen May 6, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view

Large diffs are not rendered by default.

220 changes: 220 additions & 0 deletions docs/brainstorms/2026-05-06-ce-replan-skill-requirements.md

Large diffs are not rendered by default.

563 changes: 563 additions & 0 deletions docs/plans/2026-05-06-001-feat-ce-replan-beta-plan.md

Large diffs are not rendered by default.

511 changes: 511 additions & 0 deletions docs/plans/2026-05-06-002-replan-ce-replan-beta-beta-plan.md

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions plugins/compound-engineering/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,7 @@ For `/ce-optimize`, see [`skills/ce-optimize/README.md`](./skills/ce-optimize/RE
| Skill | Description |
|-------|-------------|
| `ce-polish-beta` | Human-in-the-loop polish phase after /ce-code-review — verifies review + CI, starts a dev server from `.claude/launch.json`, generates a testable checklist, and dispatches polish sub-agents for fixes. Emits stacked-PR seeds for oversized work |
| `ce-replan-beta` | Replan from an existing PR after new learnings — runs a two-phase re-brainstorm + re-plan flow, forking the original requirements doc with R-IDs carried forward stably and producing a fresh full-redo plan from main. Original PR, plan, and brainstorm preserved as superseded artifacts |
| `/lfg` | Full autonomous engineering workflow |

## Agents
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,10 @@ If `agent-browser` is not installed, inform the user: "`agent-browser` is not in
- Check `Gemfile` for Rails (`bin/rails server`) or Sinatra
- Check for running processes on common ports (3000, 5000, 8080)

If the server is not running, tell the user what start command was detected and ask them to start it. Do not start it automatically (it may require environment variables, database setup, etc.).
If the server is not running:

- **Headless / background mode** (no blocking question tool available): try starting the server automatically using the detected start command in a background process. For Rails apps, run `bin/dev` or `bin/rails server` in the background. Poll until port 3000 (or the detected port) is accepting connections (max 30s). If it doesn't come up, fall back to static screenshots tier. Track the server PID so you can stop it in Step 4 cleanup.
- **Interactive mode**: tell the user what start command was detected and ask them to start it. Do not start it automatically (it may require environment variables, database setup, etc.).

If the server cannot be reached after the user confirms it should be running, fall back to static screenshots tier.

Expand Down Expand Up @@ -115,6 +118,6 @@ python3 scripts/capture-demo.py stitch --duration 2.0 [RUN_DIR]/demo.gif [RUN_DI

Before uploading, inspect the final GIF for any credential material visible on-screen. If any appears, discard the GIF and recapture with the offending page or state routed out of frame. Do not upload, do not blur.

After a clean GIF is confirmed, remove individual PNG frames. Keep only the final GIF for upload.
After a clean GIF is confirmed, remove individual PNG frames. Keep only the final GIF for upload. If you auto-started the dev server in Step 1 (headless mode), stop it now using the tracked PID.

Proceed to `references/upload-and-approval.md`.
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,13 @@

Upload a temporary preview for the user to review, then either promote to permanent hosting or save locally based on user choice.

## Headless / Background Mode

If no blocking question tool is available (Codex running autonomously, background agent, or any mode where there is no synchronous user), skip Steps 1–2 and go straight to headless upload:

1. **R2 available** (`R2_ACCESS_KEY_ID`, `R2_SECRET_ACCESS_KEY`, `R2_BUCKET`, `R2_ENDPOINT`, `R2_PUBLIC_URL` all set): upload to R2 and use the public URL. Proceed to Step 3-R2.
2. **R2 not available**: upload directly to catbox permanent hosting without a preview step. Proceed to Step 3.

## Step 1: Preview Upload (Temporary)

Upload the evidence file (GIF or PNG) to litterbox for a temporary 1-hour preview:
Expand All @@ -23,16 +30,21 @@ Present the preview URL to the user and ask how to handle the evidence. Use the
**Question:** "Evidence preview (1h link): [PREVIEW_URL]. Where should the evidence go?"

**Options:**
1. **Upload to catbox (public URL)** -- promote to permanent hosting for PR embedding
2. **Save locally** -- save to a stable OS-temp path (/tmp/compound-engineering/ce-demo-reel/)
3. **Recapture** -- provide instructions on what to change
4. **Proceed without evidence** -- set evidence to null and proceed
1. **Upload to R2 (public URL)** -- upload to Cloudflare R2 for permanent PR embedding (available when R2 env vars are set)
2. **Upload to catbox (public URL)** -- promote to catbox permanent hosting for PR embedding
3. **Save locally** -- save to a stable OS-temp path (/tmp/compound-engineering/ce-demo-reel/)
4. **Recapture** -- provide instructions on what to change
5. **Proceed without evidence** -- set evidence to null and proceed

Omit option 1 if R2 env vars (`R2_ACCESS_KEY_ID`, `R2_BUCKET`, `R2_ENDPOINT`, `R2_PUBLIC_URL`) are not set.

If the question tool is unavailable (headless/background mode), present the numbered options and wait for the user's reply before proceeding.
### On "Upload to R2 (public URL)"

Proceed to Step 3-R2: R2 Upload.

### On "Upload to catbox (public URL)"

Proceed to Step 3: Promote to Permanent Hosting.
Proceed to Step 3: Promote to Permanent Hosting (catbox).

### On "Save locally"

Expand All @@ -46,7 +58,7 @@ Return to the tier execution step. The user's instructions guide what to change

Set evidence to null and proceed. The preview link expires on its own.

## Step 3: Promote to Permanent Hosting
## Step 3: Promote to Permanent Hosting (catbox)

After the user selects "Upload to catbox", upload to permanent catbox hosting. The command accepts either the preview URL (preferred) or the local file path (fallback):

Expand All @@ -60,6 +72,27 @@ The last line of output is the permanent URL (e.g., `https://files.catbox.moe/ab

For multiple files, promote each separately.

## Step 3-R2: R2 Upload

Upload the artifact to Cloudflare R2 using the AWS CLI:

```bash
KEY="ce-demo-reel/$(date +%Y%m%d-%H%M%S)-$(basename [ARTIFACT_PATH])"
AWS_ACCESS_KEY_ID="$R2_ACCESS_KEY_ID" \
AWS_SECRET_ACCESS_KEY="$R2_SECRET_ACCESS_KEY" \
aws s3 cp [ARTIFACT_PATH] "s3://$R2_BUCKET/$KEY" \
--endpoint-url "https://$R2_ENDPOINT" \
--content-type "image/gif"
```

Adjust `--content-type` to `image/png` for static screenshots.

The permanent public URL is: `$R2_PUBLIC_URL/$KEY`

**If upload fails** (aws CLI not available, credentials invalid), fall back to catbox (Step 3) and note the fallback reason.

For multiple files, upload each separately with a unique key.

## Step 3b: Local Save

After the user selects "Save locally", save the artifact to the default OS-temp path using the pipeline script:
Expand All @@ -78,7 +111,7 @@ For multiple files (static screenshots tier), save each file separately.

## Step 4: Return Output

Return the structured output defined in the SKILL.md Output section: `Tier`, `Description`, and either `URL` (permanent catbox URL) or `Path` (local file path). The caller formats the evidence into the PR description. ce-demo-reel does not generate markdown.
Return the structured output defined in the SKILL.md Output section: `Tier`, `Description`, and either `URL` (permanent public URL) or `Path` (local file path). The caller formats the evidence into the PR description. ce-demo-reel does not generate markdown.

## Step 5: Cleanup

Expand Down
Loading