Skip to content

feat(slides): add skip and unskip commands - #1009

Open
marnunez wants to merge 1 commit into
openclaw:mainfrom
marnunez:feat/slides-skip-slide
Open

feat(slides): add skip and unskip commands#1009
marnunez wants to merge 1 commit into
openclaw:mainfrom
marnunez:feat/slides-skip-slide

Conversation

@marnunez

@marnunez marnunez commented Aug 21, 2026

Copy link
Copy Markdown

Summary

  • add gog slides skip-slide and gog slides unskip-slide
  • add hide-slide and unhide-slide aliases for familiar terminology
  • expose each slide's isSkipped state in slides list-slides
  • regenerate command reference pages and the Slides agent skill

The commands use updateSlideProperties with an isSkipped field mask. Unskipping explicitly serializes isSkipped: false rather than allowing Go's zero-value omission to drop it.

Testing

  • make SHELL="$(command -v bash)" ci
  • focused request, JSON output, validation, and dry-run tests
  • live Google Slides verification shown below

Live Google Slides verification

Run from reviewed head b6635a5d5ca406984eb60707b8252b7640059fdb against a temporary three-slide Google Slides presentation created with the CLI. Presentation and slide IDs were redacted after capture; the temporary presentation was moved to Drive trash afterwards.

$ gog slides list-slides <presentation-id> --json
{
  "presentationId": "<presentation-id>",
  "slideCount": 3,
  "slides": [
    {"isSkipped": false, "number": 1, "objectId": "<slide-1-id>"},
    {"isSkipped": false, "number": 2, "objectId": "<target-slide-id>"},
    {"isSkipped": false, "number": 3, "objectId": "<slide-3-id>"}
  ],
  "title": "gogcli PR 1009 live verification"
}

$ gog slides skip-slide <presentation-id> <target-slide-id> --json
{
  "isSkipped": true,
  "presentationId": "<presentation-id>",
  "slideObjectId": "<target-slide-id>"
}

$ gog slides list-slides <presentation-id> --json
{
  "presentationId": "<presentation-id>",
  "slideCount": 3,
  "slides": [
    {"isSkipped": false, "number": 1, "objectId": "<slide-1-id>"},
    {"isSkipped": true,  "number": 2, "objectId": "<target-slide-id>"},
    {"isSkipped": false, "number": 3, "objectId": "<slide-3-id>"}
  ],
  "title": "gogcli PR 1009 live verification"
}

$ gog slides unskip-slide <presentation-id> <target-slide-id> --json
{
  "isSkipped": false,
  "presentationId": "<presentation-id>",
  "slideObjectId": "<target-slide-id>"
}

$ gog slides list-slides <presentation-id> --json
{
  "presentationId": "<presentation-id>",
  "slideCount": 3,
  "slides": [
    {"isSkipped": false, "number": 1, "objectId": "<slide-1-id>"},
    {"isSkipped": false, "number": 2, "objectId": "<target-slide-id>"},
    {"isSkipped": false, "number": 3, "objectId": "<slide-3-id>"}
  ],
  "title": "gogcli PR 1009 live verification"
}

Assertions performed on the captured JSON:

  • after skip-slide, exactly the target slide changed to isSkipped: true
  • both neighbouring slides remained isSkipped: false
  • after unskip-slide, the target returned to isSkipped: false
  • the final slide array exactly matched the initial slide array

User-facing changes

slides list-slides adds a SKIPPED column to text output and an additive isSkipped field to each JSON slide record.

@marnunez
marnunez requested a review from a team as a code owner August 21, 2026 00:24
@clawsweeper

clawsweeper Bot commented Aug 21, 2026

Copy link
Copy Markdown
Contributor

🦞👀
ClawSweeper picked this up.

Pull request received. I will update this pull request when review starts.

@clawsweeper clawsweeper Bot added P3 Low-risk cleanup, docs, polish, ergonomics, or speculative feature. rating: 🧂 unranked krab Not merge-ready due to missing proof or serious correctness/safety concerns. status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask. labels Aug 21, 2026
@clawsweeper

clawsweeper Bot commented Aug 21, 2026

Copy link
Copy Markdown
Contributor

Codex review: needs maintainer review before merge. Reviewed August 22, 2026, 9:29 AM ET / 13:29 UTC.

ClawSweeper review

What this changes

Adds gog slides skip-slide and unskip-slide (with hide/unhide aliases), and exposes each slide’s skipped state in list output and generated documentation.

Merge readiness

⚠️ Ready for maintainer review - 1 item remains

This PR remains necessary: current main has no first-class Slides skip/unskip command or skipped-state list output. The implementation is focused, consistent with adjacent Slides commands, and supported by live after-fix evidence; no discrete repair blocker was found.

Priority: P3
Reviewed head: b6635a5d5ca406984eb60707b8252b7640059fdb

Review scores

Measure Result What it means
Overall readiness 🐚 platinum hermit (4/6) A focused implementation with strong live proof and targeted request, output, validation, and dry-run coverage.
Proof confidence 🦞 diamond lobster (5/6) Sufficient (terminal): The PR body provides redacted terminal output from a real Google Slides presentation showing skip, list-state change, unskip, and restoration of the initial state.
Patch quality 🐚 platinum hermit (4/6) No actionable review findings were identified.

Verification

Check Result Evidence
Real behavior Verified Sufficient (terminal): The PR body provides redacted terminal output from a real Google Slides presentation showing skip, list-state change, unskip, and restoration of the initial state.
Evidence reviewed 6 items Current-main capability check: Current main registers structural Slides commands and list-slides, but has no skip-slide or unskip-slide command.
Request construction: The branch builds an UpdateSlideProperties request with the isSkipped field mask and force-sends false when restoring a slide.
Focused regression coverage: Tests cover skip request construction, explicit false serialization for unskip, dry-run behavior, and argument validation.
Findings None None.
Security None None.

Live Verification

Command: go run ./cmd/gog slides skip-slide --help

Result: FAIL (failed) — execution before step 1 run: sh -lc pnpm install --ignore-scripts --frozen-lockfile failed: ! Corepack is about to download https://registry.npmjs.org/pnpm/-/pnpm-11.22.0.tgz

sh -lc pnpm install --ignore-scripts --frozen-lockfile failed: ! Corepack is about to download https://registry.npmjs.org/pnpm/-/pnpm-11.22.0.tgz

Assertions:

  • FAIL expect_output: Skip a slide during presentation

How this fits together

The Slides CLI turns presentation and slide IDs into Google Slides API batch-update requests, then reports the resulting state for terminal and JSON users. These commands alter a slide’s presentation visibility while leaving the slide in the deck.

flowchart LR
A[Presentation and slide IDs] --> B[Skip or unskip command]
B --> C[Validate identifiers]
C --> D[Slides API batch update]
D --> E[Slide visibility state]
E --> F[List and JSON output]
Loading

Before merge

  • Complete next step (P2) - No discrete automated repair is needed; this PR can proceed through ordinary maintainer review and merge checks.
Agent review details

Security

None.

Review metrics

Metric Value Why it matters
Implementation and coverage production +117/-5; tests +203/-2 The new command behavior has more focused test coverage than production code, alongside generated documentation updates.

Technical review

Best possible solution:

Merge the focused API-backed command pair after ordinary maintainer review and normal merge checks, preserving the tested explicit-false unskip serialization.

Do we have a high-confidence way to reproduce the issue?

Not applicable as a defect report; the PR supplies a high-confidence live Google Slides verification of the new command behavior at its reviewed head.

Is this the best way to solve the issue?

Yes. Mapping the existing Google Slides isSkipped property to two explicit CLI commands, with aliases and list visibility, is a narrow maintainable implementation.

AGENTS.md: found and applied where relevant.

Codex review notes: model internal, reasoning high; reviewed against ab7e0ed706f9.

Labels

Label justifications:

  • P3: This is a focused additive Slides CLI capability with limited blast radius.
  • rating: 🐚 platinum hermit: Overall readiness is 🐚 platinum hermit; proof is 🦞 diamond lobster and patch quality is 🐚 platinum hermit.
  • status: 👀 ready for maintainer look: ClawSweeper has no concrete contributor-facing blocker left for this PR. Sufficient (terminal): The PR body provides redacted terminal output from a real Google Slides presentation showing skip, list-state change, unskip, and restoration of the initial state.
  • proof: sufficient: Contributor real behavior proof is sufficient. The PR body provides redacted terminal output from a real Google Slides presentation showing skip, list-state change, unskip, and restoration of the initial state.

Evidence

What I checked:

  • Current-main capability check: Current main registers structural Slides commands and list-slides, but has no skip-slide or unskip-slide command. (internal/cmd/slides.go:25, ab7e0ed706f9)
  • Request construction: The branch builds an UpdateSlideProperties request with the isSkipped field mask and force-sends false when restoring a slide. (internal/cmd/slides_visibility.go:86, b6635a5d5ca4)
  • Focused regression coverage: Tests cover skip request construction, explicit false serialization for unskip, dry-run behavior, and argument validation. (internal/cmd/slides_visibility_test.go:14, b6635a5d5ca4)
  • Live behavior proof: The PR body records a real three-slide Google Slides round trip at this head: skip changes only the target, unskip restores it, and the final list matches the initial state. (b6635a5d5ca4)
  • Adjacent feature provenance: Current Slides structural-command patterns date to the native structure work, with subsequent Slides operations maintained in the same command registry. (internal/cmd/slides.go:25, a91ceadc8c31)
  • Release check: The PR head is not contained in any local release tag, including the latest known v0.37.0 release; it remains an unmerged proposed feature. (b6635a5d5ca4)

Likely related people:

  • Peter Steinberger: History shows repeated Slides command, structural-operation, and refactoring work in the affected command surface. (role: recent Slides-area contributor; confidence: high; commits: eda03e04a4fb, 45b5d766e137; files: internal/cmd/slides.go, internal/cmd/slides_structural.go)
  • clawsweeper[bot]: The native slide structure commands provide the closest existing batch-update and dry-run pattern for this addition. (role: introduced adjacent command pattern; confidence: medium; commits: a91ceadc8c31; files: internal/cmd/slides.go, internal/cmd/slides_structural.go)

Rating scale

Score Internal tier Crab rank Meaning
6/6 S 🦀 challenger crab Exceptional readiness
5/6 A 🦞 diamond lobster Very strong readiness
4/6 B 🐚 platinum hermit Good normal PR; ordinary maintainer review
3/6 C 🦐 gold shrimp Useful, but confidence is limited
2/6 D 🦪 silver shellfish Proof or implementation needs work
1/6 F 🧂 unranked krab Not merge-ready
N/A NA 🌊 off-meta tidepool Rating does not apply

Overall follows the weaker of proof and patch quality.
Shiny media proof means a screenshot, video, or linked artifact directly shows the changed behavior. Runtime, network, CSP, and security claims still need visible diagnostics.

Workflow

  • ClawSweeper keeps one durable marker-backed review comment per issue or PR.
  • Re-runs edit this comment so the latest verdict, findings, and automation markers stay together instead of adding duplicate bot comments.
  • A fresh review can be triggered by eligible @clawsweeper re-review comments, exact-item GitHub events, scheduled/background review runs, or manual workflow dispatch.
  • PR/issue authors and users with repository write access can comment @clawsweeper re-review or @clawsweeper re-run on an open PR or issue to request a fresh review only.
  • Maintainers can also comment @clawsweeper review to request a fresh review only.
  • Fresh-review commands do not start repair, autofix, rebase, CI repair, or automerge.
  • Maintainer-only repair and merge flows require explicit commands such as @clawsweeper autofix, @clawsweeper automerge, @clawsweeper fix ci, or @clawsweeper address review.
  • Maintainers can comment @clawsweeper explain to ask for more context, or @clawsweeper stop to stop active automation.

History

Review history (2 earlier review cycles)
  • reviewed 2026-08-21T00:26:36.845Z sha b6635a5 :: needs real behavior proof before merge. :: none
  • reviewed 2026-08-21T00:46:40.117Z sha b6635a5 :: needs maintainer review before merge. :: none

@marnunez

Copy link
Copy Markdown
Author

@clawsweeper re-review

@clawsweeper

clawsweeper Bot commented Aug 21, 2026

Copy link
Copy Markdown
Contributor

🦞🧹
ClawSweeper re-review requested.

I asked ClawSweeper to review this item again.
Action: item re-review queued (workflow sweep.yml, event exact_review_queue).
Result: when the review finishes, ClawSweeper will create the durable review comment if needed or update the existing comment in place.

@clawsweeper clawsweeper Bot added proof: sufficient Contributor real behavior proof is sufficient. rating: 🐚 platinum hermit Good normal PR readiness with ordinary maintainer review expected. status: 👀 ready for maintainer look ClawSweeper has no concrete contributor-facing blocker left for this PR. and removed rating: 🧂 unranked krab Not merge-ready due to missing proof or serious correctness/safety concerns. status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask. labels Aug 21, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

P3 Low-risk cleanup, docs, polish, ergonomics, or speculative feature. proof: sufficient Contributor real behavior proof is sufficient. rating: 🐚 platinum hermit Good normal PR readiness with ordinary maintainer review expected. status: 👀 ready for maintainer look ClawSweeper has no concrete contributor-facing blocker left for this PR.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant