Skip to content

Conversation

@joshuadavidthomas
Copy link
Contributor

@joshuadavidthomas joshuadavidthomas commented Nov 26, 2025

The OpenCode plugin injects the bootstrap and skill content as visible user messages. OpenCode's TextPartInput supports a synthetic Boolean property that hides parts from the UI while keeping them visible to the AI -- it's been available in the v2 message format since around the v1.0.0 version bump.

Motivation and Context

Bootstrap content (the <EXTREMELY_IMPORTANT> block) appears as a visible user message at the start of every OpenCode session. When loading skills via use_skill, the full skill content also appears as a visible message. While noReply: true prevents an AI response, the injected content still appears in the chat UI which makes it just a bit noisy.

How Has This Been Tested?

Tested locally in OpenCode v1.0.114:

  • Fresh session: Bootstrap is now invisible, AI still knows about superpowers
  • Loading a skill: Both "Loading skill: X" and full content are now hidden
  • AI correctly receives and uses all injected content

Chat session before change: https://opencode.ai/s/Z3AqwrES
Chat session after change: https://opencode.ai/s/WjTuvSy6

Breaking Changes

None. This is purely a UI visibility change - the AI receives identical content.

Types of changes

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to change)
  • Documentation update

Checklist

  • I have read the MCP Documentation (https://modelcontextprotocol.io) (I mean, I have, but it's a bit irrelvant to this change 😄)
  • My code follows the repository's style guidelines
  • New and existing tests pass locally
  • I have added appropriate error handling
  • I have added or updated documentation as needed

Summary by CodeRabbit

  • Chores
    • Updated internal message handling to mark certain message parts as synthetic when injecting bootstrap content and launching loaded skills. This may affect how messages are processed downstream but does not change user-visible behavior.

✏️ Tip: You can customize this high-level summary in your review settings.

The OpenCode plugin injects the bootstrap and skill content as visible
user messages. While `noReply: true` prevents an AI response, the
injected content still appears in the chat UI which makes it just a bit
noisy.

OpenCode's `TextPartInput` supports a `synthetic` Boolean property that
hides parts from the UI while keeping them visible to the AI -- it's
been available in the v2 message format since around the v1.0.0 version
bump.
@coderabbitai
Copy link

coderabbitai bot commented Nov 26, 2025

Walkthrough

The pull request adds a synthetic: true flag to message text parts in two message-passing paths within the superpowers plugin: when injecting bootstrap content into session prompts and when launching loaded skills with their headers and content.

Changes

Cohort / File(s) Summary
Message synthesis tagging
\.opencode/plugin/superpowers\.js
Added synthetic: true flag to message parts in bootstrap content injection and skill launch paths

Estimated code review effort

🎯 1 (Trivial) | ⏱️ ~3 minutes

Poem

🐰 A synthetic spark now marks the way,
Two message paths wear flags today,
Bootstrap flows and skills aligned,
With true intent and flagged design! ✨

Pre-merge checks and finishing touches

✅ Passed checks (3 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly and specifically describes the main change: marking injected content as synthetic to hide it from the UI while keeping it visible to the AI.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment

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.

@obra
Copy link
Owner

obra commented Nov 26, 2025

Awesome. Thank you!

@obra obra merged commit 207a23e into obra:main Nov 26, 2025
1 check passed
EthanJStark pushed a commit to EthanJStark/superpowers that referenced this pull request Dec 16, 2025
…bra#122)

The OpenCode plugin injects the bootstrap and skill content as visible
user messages. While `noReply: true` prevents an AI response, the
injected content still appears in the chat UI which makes it just a bit
noisy.

OpenCode's `TextPartInput` supports a `synthetic` Boolean property that
hides parts from the UI while keeping them visible to the AI -- it's
been available in the v2 message format since around the v1.0.0 version
bump.
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.

2 participants