Skip to content

Feature/opencode compatibility#4

Open
wankimmy wants to merge 3 commits into
mainfrom
feature/opencode-compatibility
Open

Feature/opencode compatibility#4
wankimmy wants to merge 3 commits into
mainfrom
feature/opencode-compatibility

Conversation

@wankimmy

@wankimmy wankimmy commented Jun 5, 2026

Copy link
Copy Markdown
Owner

No description provided.

@coderabbitai

coderabbitai Bot commented Jun 5, 2026

Copy link
Copy Markdown

Too many files changed? Review this PR in Change Stack to see how the pieces fit before you dive in.

Review Change Stack

📝 Walkthrough

Summary by CodeRabbit

  • New Features
    • Added specialized AI agents for code review, security analysis, design system compliance, competitor monitoring, market research, customer discovery, financial modeling, and growth experimentation
    • Added command workflows for intelligent planning, quality verification, deep research, investor preparation, and continuous improvement
    • Enabled OpenCode integration with MCP servers for web search, web scraping, and GitHub operations

Walkthrough

This PR introduces OpenCode as an integrated interface to BosskuAI, adding foundational configuration, 16 specialized agent role definitions, 11 command workflow specifications, and supporting installation logic. The changes enable coordinated AI-assisted workflows for planning, execution, research, code review, QA, and learning across multiple domains.

Changes

OpenCode Integration & Agent/Command Framework

Layer / File(s) Summary
OpenCode Configuration & Documentation
opencode.json, .opencode/skills, AGENTS.md
opencode.json defines model selection via OPENCODE_MODEL, permission set (websearch, webfetch, edit, bash, task), and MCP server connections (Playwright, Exa, Firecrawl, Context7, GitHub with environment-based auth). .opencode/skills symlinks to ../ai-assistant/skills. AGENTS.md adds OpenCode Integration section describing skill loading, subagent/command invocation syntax, and Plan vs Build mode behavior.
Installation & Deployment Integration
scripts/install.sh
Installation script updated to discover skills via find ... -exec basename, and to sync/copy opencode.json and .opencode directory alongside top-level artifacts in both default and --sync-layer flows; skill list population switched to while read loop.
Agent Role Specifications (16 agents)
.opencode/agents/browser-agent.md, build-fixer.md, code-reviewer.md, competitor-tracker.md, customer-researcher.md, design-reviewer.md, doc-updater.md, docs-lookup.md, e2e-runner.md, financial-analyst.md, growth-experimenter.md, harness-optimizer.md, lead-finder.md, market-researcher.md, planner.md, prototype-builder.md, refactor-cleaner.md, security-reviewer.md, tdd-guide.md
Declarative specifications for 16 specialized agent roles spanning QA/browser automation, code/technical review, research/discovery, and business/growth workflows. Each agent defines activation triggers, responsibilities, step-by-step process, structured output format, operational guardrails, and required skill dependencies.
Command Workflow Specifications (11 commands)
.opencode/commands/bossku.md, competitor-check.md, continuous-learning.md, deep-research.md, investor-prep.md, plan.md, quality-gate.md, route.md, rules-distill.md, skill-stocktake.md, verify.md
Declarative command specifications for 11 system-level workflows covering task routing/execution, research/discovery, learning capture, quality verification, and stakeholder prep. Each command defines intent, ordered execution steps, required output artifacts, and integration points with agents and skills.

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~60 minutes

The review spans diverse agent specifications and command workflows with varying functional purposes, requires understanding MCP server configuration and permission models, and includes installation script logic changes. While each agent and command follows a consistent pattern, reviewers must assess the coherence of role definitions, output schemas, guardrails, and skill integration references across 27 new markdown specifications and updated orchestration files.

Poem

A rabbit hops through Opencode's new doors,
Sixteen agents, eleven commands to explore,
Planning and building, researching with care,
Learning and growing, intelligence everywhere! 🐰✨

🚥 Pre-merge checks | ✅ 3 | ❌ 2

❌ Failed checks (2 inconclusive)

Check name Status Explanation Resolution
Title check ❓ Inconclusive The title 'Feature/opencode compatibility' is vague and does not clearly summarize the main changes; it uses a generic convention-based format without describing specific functionality added. Use a more descriptive title that highlights the core change, such as 'Add OpenCode agent specifications and command configs' or 'Implement OpenCode integration with agent/skill framework'.
Description check ❓ Inconclusive No pull request description was provided by the author, making it impossible to assess whether the description relates to the changeset. Add a pull request description explaining the purpose of the OpenCode integration, the new agents/commands added, and any configuration changes made to support the feature.
✅ Passed checks (3 passed)
Check name Status Explanation
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

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

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feature/opencode-compatibility
⚔️ Resolve merge conflicts
  • Resolve merge conflict in branch feature/opencode-compatibility

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.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 10

Note

Due to the large number of review comments, Critical, Major severity comments were prioritized as inline comments.

🟡 Minor comments (22)
.opencode/agents/e2e-runner.md-26-26 (1)

26-26: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Specify the fenced block language for the report template.

Line 26 should include a language identifier to satisfy MD040 and keep markdown tooling clean.

Suggested diff
-```
+```md
 ## E2E Test Report: <Suite> | <Date>
 ...
-```
+```
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.opencode/agents/e2e-runner.md at line 26, The fenced code block that
contains the report template (starting triple-backticks before "## E2E Test
Report: <Suite> | <Date>") lacks a language identifier, triggering MD040; update
the opening fence from ``` to ```md so the block is marked as Markdown and
tools/linters recognize it (ensure only the opening fence is changed and the
closing ``` remains unchanged).
.opencode/agents/browser-agent.md-26-26 (1)

26-26: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Add a language tag to the fenced output example.

The code fence starts without a language, which triggers markdownlint MD040 and reduces editor rendering quality.

Suggested diff
-```
+```md
 ## Browser QA Report: <URL> | <Date>
 ...
-```
+```
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.opencode/agents/browser-agent.md at line 26, The fenced code block in the
Browser QA Report example is missing a language tag, causing markdownlint MD040;
update the opening fence to include the markdown language tag (change the triple
backticks before "## Browser QA Report: <URL> | <Date>" to "```md") so the
example renders correctly and linting passes.
.opencode/agents/design-reviewer.md-61-61 (1)

61-61: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Add a language hint to the output-format code fence.

The fenced block should declare a language to satisfy markdownlint MD040.

Suggested diff
-```
+```md
 ## Design Review: <Screen/Component>
 ...
-```
+```
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.opencode/agents/design-reviewer.md at line 61, Add a language hint "md" to
the output-format code fence so the opening fence becomes "```md" instead of
"```" around the block that starts with "## Design Review: <Screen/Component>"
in .opencode/agents/design-reviewer.md to satisfy markdownlint MD040; update the
opening fence only and keep the closing fence as-is.
.opencode/agents/doc-updater.md-29-29 (1)

29-29: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Add a language to the output-format fence.

This block is unlabeled and fails markdownlint MD040.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.opencode/agents/doc-updater.md at line 29, The closing code fence is
unlabeled (```) and triggers markdownlint MD040; update the corresponding code
block in doc-updater.md by adding an appropriate language identifier after the
opening ``` (for example ```bash, ```json, ```text, etc.) matching the block
content so the fence is labeled and MD040 is satisfied.
.opencode/agents/build-fixer.md-29-29 (1)

29-29: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Add a language to the fenced output template block.

The code fence under “Output Format” is missing a language tag, which triggers markdownlint MD040.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.opencode/agents/build-fixer.md at line 29, The fenced code block under the
"Output Format" section is missing a language tag (triggering markdownlint
MD040); edit the fenced output template block (the triple-backtick code fence in
the "Output Format" section) and add the appropriate language identifier (e.g.,
"md" or "markdown") immediately after the opening ``` to satisfy the linter and
clarify the block type.
.opencode/agents/refactor-cleaner.md-29-29 (1)

29-29: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Fix missing language tag on the fenced template block.

The output-format fence is unlabeled and will keep triggering MD040.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.opencode/agents/refactor-cleaner.md at line 29, A fenced code block in the
file currently uses an unlabeled triple-backtick (```) which triggers MD040; add
an appropriate language tag to the opening fence (for example ```output-format
or ```text) so the block is labeled and the markdown lint rule MD040 is
satisfied by changing the opening fence from ``` to a tagged fence like
```output-format.
.opencode/agents/planner.md-29-29 (1)

29-29: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Add a language tag to the fenced plan template block.

The unlabeled fence violates markdownlint MD040.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.opencode/agents/planner.md at line 29, The fenced plan template block
currently uses an unlabeled triple-backtick fence (```) which triggers
markdownlint MD040; update that fence to include an explicit language tag (for
example change the opening fence to ```text or ```markdown) so the plan template
block is labeled and the linter warning is resolved.
.opencode/agents/security-reviewer.md-29-29 (1)

29-29: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Add a language identifier to the fenced output example.

This fence is currently unlabeled and violates markdownlint MD040.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.opencode/agents/security-reviewer.md at line 29, The markdown fenced output
example is missing a language identifier (violates markdownlint MD040); locate
the unlabeled fenced code block (the triple-backtick fence used for the output
example) and add an appropriate language tag after the opening ``` (for example
```text or ```json depending on content) so the fence is labeled and MD040 is
satisfied.
.opencode/agents/tdd-guide.md-35-42 (1)

35-42: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Harden markdown structure for nested code + table rendering.

The output template embeds a fenced typescript block inside another triple-backtick fence and places a table tightly inside the same block area; this is fragile and causes lint/render drift. Use a longer outer fence (e.g., ````markdown) and keep required blank lines around the table section.

Also applies to: 55-57

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.opencode/agents/tdd-guide.md around lines 35 - 42, The nested fenced code
blocks in the TDD guide (the RED test example containing the typescript block
with it('should <behavior>') and the other similar block later) are fragile;
change the outer fence to a longer delimiter (e.g., ````markdown) and ensure
there are blank lines before and after any embedded fenced blocks and
before/after any tables placed next to those blocks so the inner ```typescript
fence and following table render correctly; update both occurrences mentioned
(the block with the it('should <behavior>') example and the similar block at the
later occurrence) to follow this pattern.
.opencode/agents/code-reviewer.md-30-30 (1)

30-30: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Specify the fenced code block language in the output template.

Line 30 should include a language identifier to satisfy markdownlint (MD040).

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.opencode/agents/code-reviewer.md at line 30, The fenced code block in the
output template currently uses a bare opening fence (```) which triggers
markdownlint MD040; update the opening fence to include a language identifier
(for example replace ``` with ```text or ```json as appropriate) so the block is
explicitly typed and MD040 is satisfied, ensuring any template variable or
template string that emits the ``` fence is changed accordingly.
.opencode/agents/docs-lookup.md-25-25 (1)

25-25: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Specify languages for both fenced template blocks.

Both fences are missing language tags and will continue to trigger MD040.

Also applies to: 46-46

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.opencode/agents/docs-lookup.md at line 25, Add explicit language
identifiers to the two fenced code blocks in .opencode/agents/docs-lookup.md
(the template fences flagged by MD040) by replacing the bare ``` fences with
language-tagged fences that match each block's content (e.g., ```bash, ```yaml,
```json, etc.), ensuring both fenced template blocks are annotated so the MD040
linter warning is resolved.
.opencode/agents/tdd-guide.md-26-26 (1)

26-26: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Label the outer fenced template blocks with a language.

Both outer fences are missing a language tag and trigger MD040.

Also applies to: 58-58

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.opencode/agents/tdd-guide.md at line 26, The two outer triple-backtick
fenced template blocks are missing a language identifier (triggering MD040);
locate the outer fenced blocks (the top-level ```...``` template sections) and
add an appropriate language tag (for example ```html, ```xml, or ```text
depending on the content) to each fence so the blocks are language-labeled and
satisfy the linter.
.opencode/agents/prototype-builder.md-26-26 (1)

26-26: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Add a language to the fenced output template block.

Line 26 triggers MD040; use markdown for this template fence.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.opencode/agents/prototype-builder.md at line 26, The fenced output template
block currently uses a bare triple-backtick fence which triggers MD040; update
the fence to include the language identifier by changing the opening fence from
``` to ```markdown so the block is explicitly marked as markdown (look for the
fenced output template block / opening ``` in prototype-builder.md).
.opencode/agents/harness-optimizer.md-26-26 (1)

26-26: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Specify fenced code block language.

Markdown lint warning MD040 is valid here; add a language tag for the output template block.

Suggested fix
-```
+```markdown
 ## BosskuAI Harness Health Report
 ...
-```
+```
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.opencode/agents/harness-optimizer.md at line 26, The fenced code block that
contains the output template (starting with "## BosskuAI Harness Health Report")
is missing a language tag; update the triple-backtick fence to include
"markdown" (i.e., ```markdown) so the block is correctly flagged and avoids
MD040 lint warnings—edit the block in .opencode/agents/harness-optimizer.md
where the output template is defined.
.opencode/agents/customer-researcher.md-21-21 (1)

21-21: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Fix markdownlint warnings in template sections.

Line 21 triggers MD037 (underscore emphasis parsing), and Line 27 triggers MD040 (missing fenced language). Both are low-effort and help keep docs/lint clean.

Suggested patch
-3. **JTBD framing** — For each insight: "When I ___, I want to ___, so I can ___." Captures context, motivation, and outcome.
+3. **JTBD framing** — For each insight: `When I ___, I want to ___, so I can ___.` Captures context, motivation, and outcome.

-```
+```md
 ## Customer Research Report
@@
-```
+```

Also applies to: 27-27

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.opencode/agents/customer-researcher.md at line 21, Escape or neutralize the
underscores in the JTBD sentence "When I ___, I want to ___, so I can ___."
(e.g., escape each underscore or wrap the whole sentence in backticks) to fix
MD037, and add the markdown language tag to the fenced code blocks (change ```
to ```md) in the template section to fix MD040; locate the JTBD line and the
adjacent fenced code fences in Customer Research Report within
.opencode/agents/customer-researcher.md (look for the exact JTBD sentence and
the ``` fences) and apply these two small edits.
.opencode/agents/market-researcher.md-26-26 (1)

26-26: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Add a language to the fenced output template block.

This removes MD040 and keeps markdownlint clean.

Suggested patch
-```
+```md
 ## Market Research Report: <Topic>
@@
-```
+```
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.opencode/agents/market-researcher.md at line 26, The fenced code block that
contains the "Market Research Report: <Topic>" template is missing a language
tag; change the opening fence from ``` to ```md to add the Markdown language
identifier so markdownlint rule MD040 is satisfied and the block reads as a
Markdown code fence.
.opencode/agents/competitor-tracker.md-26-26 (1)

26-26: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Specify fenced block language for the output template.

Line 26 should use a language tag to satisfy MD040.

Suggested patch
-```
+```md
 ## Competitor Check: <Date>
@@
-```
+```
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.opencode/agents/competitor-tracker.md at line 26, The fenced code block
around the output template for "## Competitor Check: <Date>" needs a language
tag to satisfy MD040; edit the block delimiter near that header (the triple
backticks surrounding the template in .opencode/agents/competitor-tracker.md) to
include a language like "md" (i.e., change ``` to ```md) so the markdown linter
recognizes the fenced block language.
.opencode/agents/financial-analyst.md-27-27 (1)

27-27: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Mark the fenced template block with a language.

Using md here resolves MD040.

Suggested patch
-```
+```md
 ## Financial Model Summary
@@
-```
+```
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.opencode/agents/financial-analyst.md at line 27, Update the fenced code
block that contains "## Financial Model Summary" to specify the markdown
language by changing the opening fence from ``` to ```md so the block is marked
with a language and satisfies MD040; locate the block that starts with the
header "## Financial Model Summary" and modify only the opening fence to ```md,
leaving the closing fence unchanged.
.opencode/agents/lead-finder.md-29-29 (1)

29-29: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Add fenced code language in the output-format block.

This addresses MD040 and avoids lint noise.

Suggested patch
-```
+```md
 ## Lead Intelligence Report
@@
-```
+```
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.opencode/agents/lead-finder.md at line 29, Change the output-format fenced
code block to include the language specifier "md" by replacing the opening
triple backticks for the block that contains "## Lead Intelligence Report" with
"```md" (leave the closing ``` intact) so the block is explicitly marked as
Markdown and silences MD040 lint warnings.
.opencode/agents/growth-experimenter.md-27-27 (1)

27-27: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Add a language tag to the fenced output template.

This fixes MD040 for the block at Line 27.

Suggested patch
-```
+```md
 ## Experiment Brief: <Name>
@@
-```
+```
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.opencode/agents/growth-experimenter.md at line 27, The fenced output
template starting with "## Experiment Brief: <Name>" uses a plain code fence;
update the opening fence to include the markdown language tag by changing the
opening "```" to "```md" so the block is marked as Markdown (refer to the fenced
block that contains "## Experiment Brief: <Name>" in growth-experimenter.md).
.opencode/commands/quality-gate.md-4-6 (1)

4-6: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Add explicit /quality-gate invocation syntax to the command header.

This command doc does not currently show the slash invocation form, which can make usage inconsistent with the OpenCode command contract.

Suggested patch
 # BosskuAI Quality Gate Command
 
 Use this command when you want a concise quality decision on the current work before moving on.
+Invoke with: `/quality-gate`

As per coding guidelines: ".opencode/commands/**: Define 11 custom commands in .opencode/commands/ and invoke them using /command-name syntax".

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.opencode/commands/quality-gate.md around lines 4 - 6, Update the command
header to include the explicit slash invocation form by adding "/quality-gate"
alongside the human title; specifically change the header text "BosskuAI Quality
Gate Command" to include the invocation syntax (e.g., "BosskuAI Quality Gate
Command — /quality-gate") so the doc follows the `.opencode/commands/**`
convention and clearly shows how to invoke the command; ensure any introductory
sentence references the slash form consistently (use "/quality-gate" wherever
the command is mentioned).
.opencode/commands/quality-gate.md-26-32 (1)

26-32: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Require the [BOSSKUAI] indicator in the output template.

The output contract should explicitly require the mandatory indicator block/header so downstream command outputs stay consistent with repo protocol.

Suggested patch
 ## Output
 
+- `[BOSSKUAI]` indicator at the top of the response
 - scope reviewed
 - gate decision
 - top findings or risks
 - missing checks
 - recommended next action

Based on learnings: "Always include the [BOSSKUAI] indicator at the top of responses".

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.opencode/commands/quality-gate.md around lines 26 - 32, Update the "##
Output" template to mandate the [BOSSKUAI] indicator at the top of the output
block so every downstream command includes it consistently; modify the "##
Output" section (the header and its bullet list) to begin with a required line
like "[BOSSKUAI] <status/metadata>" and add a short note that this indicator is
mandatory for all responses produced from this template, referencing the "##
Output" header and the existing list items to ensure the indicator is the first
item emitted.
🧹 Nitpick comments (1)
.opencode/agents/docs-lookup.md (1)

4-6: ⚡ Quick win

Tighten subagent permissions to least privilege.

This agent is defined as documentation lookup, but it has edit: allow and bash: allow. Restricting to deny-by-default reduces accidental or unnecessary write/command execution surface.

Also applies to: 48-53

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.opencode/agents/docs-lookup.md around lines 4 - 6, The agent's permissions
are too permissive: change the permission block so the docs-lookup subagent uses
least privilege by removing or setting permission.edit and permission.bash to
deny (or omit them) and only allow read/lookup operations; update the same
permission keys in the other occurrence referenced (lines 48-53) so both blocks
enforce deny-by-default for edits and shell execution, leaving only the minimal
read/lookup privileges required for documentation lookup.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In @.opencode/agents/harness-optimizer.md:
- Line 20: The audit step currently targets the wrong directory ("agents/")
which misses OpenCode agents living under ".opencode/agents/"; update the audit
logic to list files from ".opencode/agents/" (not "agents/") and compare that
inventory to AGENTS.md so the roster check and the "Flag agents with no
corresponding skill" logic use the canonical OpenCode agent path; ensure any
variable or config that referenced "agents/" is changed to ".opencode/agents/"
so functions that build the agent list and perform the comparison (the agent
audit routine) operate on the correct directory.
- Around line 1-7: Add an explicit front-matter "name" field so the subagent can
be routed via `@harness-optimizer`; update the YAML front-matter to include name:
harness-optimizer (or the exact agent identifier you want) at the top-level of
the markdown so loaders recognize the subagent identity and `@harness-optimizer`
invocations resolve correctly.

In @.opencode/agents/prototype-builder.md:
- Around line 1-7: The front matter in prototype-builder.md is missing a `name`
field which prevents invocation via `@agent-name`; add a top-level YAML `name:
prototype-builder` (or the intended agent identifier) to the existing front
matter so the agent can be resolved by `@prototype-builder`; ensure the `name`
value matches the file/agent identifier and keep it at the same level as
`description`, `mode`, and `permission`.

In @.opencode/commands/competitor-check.md:
- Line 6: Update the invocation text to document a slash command rather than a
skill trigger: replace the phrase referencing `bosskuai-competitor-intelligence`
with the slash command `/competitor-check`, and reword the sentence to read
something like "Invoke the `/competitor-check` slash command for systematic
competitor monitoring" so the command doc in `.opencode/commands/**` uses the
required `/command-name` syntax.

In @.opencode/commands/continuous-learning.md:
- Line 30: Replace the skill-style token "bosskuai-continuous-learning" in the
execution step with the slash command "/continuous-learning" so the file in
.opencode/commands (specifically the execution step that references
bosskuai-continuous-learning and the learning-promotion/continuous-learning
checklists) uses the required `/command-name` syntax; update any adjacent
examples or instructions in continuous-learning.md to invoke
"/continuous-learning" instead of the skill-style token to comply with the
.opencode/commands/** guideline.

In @.opencode/commands/deep-research.md:
- Line 6: Update the command invocation text to use the slash-command format:
replace the skill-style trigger "bosskuai-deep-research" with the OpenCode
command "/deep-research" so the doc uses the required `/command-name` syntax for
invoking the deep-research command.

In @.opencode/commands/investor-prep.md:
- Line 6: Replace the raw skill name "bosskuai-investor-prep" with the
command-style invocation "/investor-prep" in the documentation text so it reads
something like "Activate the /investor-prep command to build or review
fundraising materials"; update any other occurrences in this doc that reference
bosskuai-investor-prep to use the slash-prefixed command name so the file
follows the .opencode/commands command-syntax guideline.

In @.opencode/commands/rules-distill.md:
- Line 16: Update the command invocation text so it uses the slash-command
syntax: replace occurrences of the non-slash token `bosskuai-rules-distill` with
`/rules-distill` and ensure any surrounding guidance (the "rule distillation
checklist" reference) reflects the new `/rules-distill` invocation so the
document in .opencode/commands follows the required `/command-name` convention.

In @.opencode/commands/skill-stocktake.md:
- Line 17: Replace the inline skill token "bosskuai-skill-stocktake" with the
slash-command invocation "/skill-stocktake" in the skill-stocktake command docs
and ensure the skill health checklist is referenced using the same slash-command
syntax; update any occurrences in the markdown where the token form appears and
confirm headings or examples use "/skill-stocktake" consistently.

In `@scripts/install.sh`:
- Around line 166-169: The loop that copies ai-assistant subpaths (for sub in
memory references scripts hooks; do copy_path "ai-assistant/$sub"; done)
unconditionally copies ai-assistant/memory which allows --sync-layer to
overwrite existing memory; change this to skip copying "ai-assistant/memory"
when running in sync-layer mode unless the user explicitly set the
preserve-memory flag (e.g. check the variable set by --sync-layer and the
variable set by --preserve-memory or --skills-only) so that memory is only
copied when not syncing layers or when preserve-memory is true; update the
conditional around the copy_path call (or split the loop) to respect those flags
while leaving other subfolders unaffected.

---

Minor comments:
In @.opencode/agents/browser-agent.md:
- Line 26: The fenced code block in the Browser QA Report example is missing a
language tag, causing markdownlint MD040; update the opening fence to include
the markdown language tag (change the triple backticks before "## Browser QA
Report: <URL> | <Date>" to "```md") so the example renders correctly and linting
passes.

In @.opencode/agents/build-fixer.md:
- Line 29: The fenced code block under the "Output Format" section is missing a
language tag (triggering markdownlint MD040); edit the fenced output template
block (the triple-backtick code fence in the "Output Format" section) and add
the appropriate language identifier (e.g., "md" or "markdown") immediately after
the opening ``` to satisfy the linter and clarify the block type.

In @.opencode/agents/code-reviewer.md:
- Line 30: The fenced code block in the output template currently uses a bare
opening fence (```) which triggers markdownlint MD040; update the opening fence
to include a language identifier (for example replace ``` with ```text or
```json as appropriate) so the block is explicitly typed and MD040 is satisfied,
ensuring any template variable or template string that emits the ``` fence is
changed accordingly.

In @.opencode/agents/competitor-tracker.md:
- Line 26: The fenced code block around the output template for "## Competitor
Check: <Date>" needs a language tag to satisfy MD040; edit the block delimiter
near that header (the triple backticks surrounding the template in
.opencode/agents/competitor-tracker.md) to include a language like "md" (i.e.,
change ``` to ```md) so the markdown linter recognizes the fenced block
language.

In @.opencode/agents/customer-researcher.md:
- Line 21: Escape or neutralize the underscores in the JTBD sentence "When I
___, I want to ___, so I can ___." (e.g., escape each underscore or wrap the
whole sentence in backticks) to fix MD037, and add the markdown language tag to
the fenced code blocks (change ``` to ```md) in the template section to fix
MD040; locate the JTBD line and the adjacent fenced code fences in Customer
Research Report within .opencode/agents/customer-researcher.md (look for the
exact JTBD sentence and the ``` fences) and apply these two small edits.

In @.opencode/agents/design-reviewer.md:
- Line 61: Add a language hint "md" to the output-format code fence so the
opening fence becomes "```md" instead of "```" around the block that starts with
"## Design Review: <Screen/Component>" in .opencode/agents/design-reviewer.md to
satisfy markdownlint MD040; update the opening fence only and keep the closing
fence as-is.

In @.opencode/agents/doc-updater.md:
- Line 29: The closing code fence is unlabeled (```) and triggers markdownlint
MD040; update the corresponding code block in doc-updater.md by adding an
appropriate language identifier after the opening ``` (for example ```bash,
```json, ```text, etc.) matching the block content so the fence is labeled and
MD040 is satisfied.

In @.opencode/agents/docs-lookup.md:
- Line 25: Add explicit language identifiers to the two fenced code blocks in
.opencode/agents/docs-lookup.md (the template fences flagged by MD040) by
replacing the bare ``` fences with language-tagged fences that match each
block's content (e.g., ```bash, ```yaml, ```json, etc.), ensuring both fenced
template blocks are annotated so the MD040 linter warning is resolved.

In @.opencode/agents/e2e-runner.md:
- Line 26: The fenced code block that contains the report template (starting
triple-backticks before "## E2E Test Report: <Suite> | <Date>") lacks a language
identifier, triggering MD040; update the opening fence from ``` to ```md so the
block is marked as Markdown and tools/linters recognize it (ensure only the
opening fence is changed and the closing ``` remains unchanged).

In @.opencode/agents/financial-analyst.md:
- Line 27: Update the fenced code block that contains "## Financial Model
Summary" to specify the markdown language by changing the opening fence from ```
to ```md so the block is marked with a language and satisfies MD040; locate the
block that starts with the header "## Financial Model Summary" and modify only
the opening fence to ```md, leaving the closing fence unchanged.

In @.opencode/agents/growth-experimenter.md:
- Line 27: The fenced output template starting with "## Experiment Brief:
<Name>" uses a plain code fence; update the opening fence to include the
markdown language tag by changing the opening "```" to "```md" so the block is
marked as Markdown (refer to the fenced block that contains "## Experiment
Brief: <Name>" in growth-experimenter.md).

In @.opencode/agents/harness-optimizer.md:
- Line 26: The fenced code block that contains the output template (starting
with "## BosskuAI Harness Health Report") is missing a language tag; update the
triple-backtick fence to include "markdown" (i.e., ```markdown) so the block is
correctly flagged and avoids MD040 lint warnings—edit the block in
.opencode/agents/harness-optimizer.md where the output template is defined.

In @.opencode/agents/lead-finder.md:
- Line 29: Change the output-format fenced code block to include the language
specifier "md" by replacing the opening triple backticks for the block that
contains "## Lead Intelligence Report" with "```md" (leave the closing ```
intact) so the block is explicitly marked as Markdown and silences MD040 lint
warnings.

In @.opencode/agents/market-researcher.md:
- Line 26: The fenced code block that contains the "Market Research Report:
<Topic>" template is missing a language tag; change the opening fence from ```
to ```md to add the Markdown language identifier so markdownlint rule MD040 is
satisfied and the block reads as a Markdown code fence.

In @.opencode/agents/planner.md:
- Line 29: The fenced plan template block currently uses an unlabeled
triple-backtick fence (```) which triggers markdownlint MD040; update that fence
to include an explicit language tag (for example change the opening fence to
```text or ```markdown) so the plan template block is labeled and the linter
warning is resolved.

In @.opencode/agents/prototype-builder.md:
- Line 26: The fenced output template block currently uses a bare
triple-backtick fence which triggers MD040; update the fence to include the
language identifier by changing the opening fence from ``` to ```markdown so the
block is explicitly marked as markdown (look for the fenced output template
block / opening ``` in prototype-builder.md).

In @.opencode/agents/refactor-cleaner.md:
- Line 29: A fenced code block in the file currently uses an unlabeled
triple-backtick (```) which triggers MD040; add an appropriate language tag to
the opening fence (for example ```output-format or ```text) so the block is
labeled and the markdown lint rule MD040 is satisfied by changing the opening
fence from ``` to a tagged fence like ```output-format.

In @.opencode/agents/security-reviewer.md:
- Line 29: The markdown fenced output example is missing a language identifier
(violates markdownlint MD040); locate the unlabeled fenced code block (the
triple-backtick fence used for the output example) and add an appropriate
language tag after the opening ``` (for example ```text or ```json depending on
content) so the fence is labeled and MD040 is satisfied.

In @.opencode/agents/tdd-guide.md:
- Around line 35-42: The nested fenced code blocks in the TDD guide (the RED
test example containing the typescript block with it('should <behavior>') and
the other similar block later) are fragile; change the outer fence to a longer
delimiter (e.g., ````markdown) and ensure there are blank lines before and after
any embedded fenced blocks and before/after any tables placed next to those
blocks so the inner ```typescript fence and following table render correctly;
update both occurrences mentioned (the block with the it('should <behavior>')
example and the similar block at the later occurrence) to follow this pattern.
- Line 26: The two outer triple-backtick fenced template blocks are missing a
language identifier (triggering MD040); locate the outer fenced blocks (the
top-level ```...``` template sections) and add an appropriate language tag (for
example ```html, ```xml, or ```text depending on the content) to each fence so
the blocks are language-labeled and satisfy the linter.

In @.opencode/commands/quality-gate.md:
- Around line 4-6: Update the command header to include the explicit slash
invocation form by adding "/quality-gate" alongside the human title;
specifically change the header text "BosskuAI Quality Gate Command" to include
the invocation syntax (e.g., "BosskuAI Quality Gate Command — /quality-gate") so
the doc follows the `.opencode/commands/**` convention and clearly shows how to
invoke the command; ensure any introductory sentence references the slash form
consistently (use "/quality-gate" wherever the command is mentioned).
- Around line 26-32: Update the "## Output" template to mandate the [BOSSKUAI]
indicator at the top of the output block so every downstream command includes it
consistently; modify the "## Output" section (the header and its bullet list) to
begin with a required line like "[BOSSKUAI] <status/metadata>" and add a short
note that this indicator is mandatory for all responses produced from this
template, referencing the "## Output" header and the existing list items to
ensure the indicator is the first item emitted.

---

Nitpick comments:
In @.opencode/agents/docs-lookup.md:
- Around line 4-6: The agent's permissions are too permissive: change the
permission block so the docs-lookup subagent uses least privilege by removing or
setting permission.edit and permission.bash to deny (or omit them) and only
allow read/lookup operations; update the same permission keys in the other
occurrence referenced (lines 48-53) so both blocks enforce deny-by-default for
edits and shell execution, leaving only the minimal read/lookup privileges
required for documentation lookup.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 45baa0a0-e2bc-49d6-b8bb-b763dd68e35b

📥 Commits

Reviewing files that changed from the base of the PR and between 2ba232e and af76ba7.

📒 Files selected for processing (35)
  • .opencode/agents/browser-agent.md
  • .opencode/agents/build-fixer.md
  • .opencode/agents/code-reviewer.md
  • .opencode/agents/competitor-tracker.md
  • .opencode/agents/customer-researcher.md
  • .opencode/agents/design-reviewer.md
  • .opencode/agents/doc-updater.md
  • .opencode/agents/docs-lookup.md
  • .opencode/agents/e2e-runner.md
  • .opencode/agents/financial-analyst.md
  • .opencode/agents/growth-experimenter.md
  • .opencode/agents/harness-optimizer.md
  • .opencode/agents/lead-finder.md
  • .opencode/agents/market-researcher.md
  • .opencode/agents/planner.md
  • .opencode/agents/prototype-builder.md
  • .opencode/agents/refactor-cleaner.md
  • .opencode/agents/security-reviewer.md
  • .opencode/agents/tdd-guide.md
  • .opencode/commands/bossku.md
  • .opencode/commands/competitor-check.md
  • .opencode/commands/continuous-learning.md
  • .opencode/commands/deep-research.md
  • .opencode/commands/investor-prep.md
  • .opencode/commands/plan.md
  • .opencode/commands/quality-gate.md
  • .opencode/commands/route.md
  • .opencode/commands/rules-distill.md
  • .opencode/commands/skill-stocktake.md
  • .opencode/commands/verify.md
  • .opencode/skills
  • AGENTS.md
  • opencode.json
  • scripts/check-workspace.sh
  • scripts/install.sh

Comment on lines +1 to +7
---
description: Optimize bosskuAI configuration — skill routing, hook tuning, MCP health, and memory hygiene. Auto-activate on "optimize bosskuAI", "skill stocktake", or "harness health check" requests.
mode: subagent
permission:
edit: deny
bash: deny
---

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major | ⚡ Quick win

Add explicit subagent name in front matter for @agent-name routing.

This spec is missing name, which makes @harness-optimizer invocation ambiguous for loaders that rely on front-matter identity.

Suggested fix
 ---
+name: harness-optimizer
 description: Optimize bosskuAI configuration — skill routing, hook tuning, MCP health, and memory hygiene. Auto-activate on "optimize bosskuAI", "skill stocktake", or "harness health check" requests.
 mode: subagent
 permission:
   edit: deny
   bash: deny
 ---

As per coding guidelines: .opencode/agents/** should define subagents and be invokable via @agent-name syntax.

📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
---
description: Optimize bosskuAI configuration — skill routing, hook tuning, MCP health, and memory hygiene. Auto-activate on "optimize bosskuAI", "skill stocktake", or "harness health check" requests.
mode: subagent
permission:
edit: deny
bash: deny
---
---
name: harness-optimizer
description: Optimize bosskuAI configuration — skill routing, hook tuning, MCP health, and memory hygiene. Auto-activate on "optimize bosskuAI", "skill stocktake", or "harness health check" requests.
mode: subagent
permission:
edit: deny
bash: deny
---
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.opencode/agents/harness-optimizer.md around lines 1 - 7, Add an explicit
front-matter "name" field so the subagent can be routed via `@harness-optimizer`;
update the YAML front-matter to include name: harness-optimizer (or the exact
agent identifier you want) at the top-level of the markdown so loaders recognize
the subagent identity and `@harness-optimizer` invocations resolve correctly.


## Process
1. **Skill audit** — Read `skill-index.json` and `AGENTS.md`. Check skill count match. Flag deprecated aliases. Identify skills with no checklists or playbooks.
2. **Agent audit** — List all files in `agents/`. Verify each is in the agent roster in `AGENTS.md`. Flag agents with no corresponding skill.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major | ⚡ Quick win

Agent audit path is pointed at the wrong directory for OpenCode specs.

Line 20 audits agents/, but this agent lives under .opencode/agents/; this can report false drift/missing-agent results.

Suggested fix
-2. **Agent audit** — List all files in `agents/`. Verify each is in the agent roster in `AGENTS.md`. Flag agents with no corresponding skill.
+2. **Agent audit** — List all files in `.opencode/agents/`. Verify each is in the agent roster in `AGENTS.md`. Flag agents with no corresponding skill.

Based on learnings: AGENTS.md is the canonical contract, so agent inventory needs to target the correct OpenCode agent path to compare correctly.

📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
2. **Agent audit** — List all files in `agents/`. Verify each is in the agent roster in `AGENTS.md`. Flag agents with no corresponding skill.
2. **Agent audit** — List all files in `.opencode/agents/`. Verify each is in the agent roster in `AGENTS.md`. Flag agents with no corresponding skill.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.opencode/agents/harness-optimizer.md at line 20, The audit step currently
targets the wrong directory ("agents/") which misses OpenCode agents living
under ".opencode/agents/"; update the audit logic to list files from
".opencode/agents/" (not "agents/") and compare that inventory to AGENTS.md so
the roster check and the "Flag agents with no corresponding skill" logic use the
canonical OpenCode agent path; ensure any variable or config that referenced
"agents/" is changed to ".opencode/agents/" so functions that build the agent
list and perform the comparison (the agent audit routine) operate on the correct
directory.

Comment on lines +1 to +7
---
description: Rapid time-boxed prototyping with explicit tech-debt ledger. Auto-activate on "prototype", "POC", "MVP in X hours", or "hackathon build" requests.
mode: subagent
permission:
edit: allow
bash: allow
---

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major | ⚡ Quick win

Add name in front matter so @prototype-builder is resolvable.

Without an explicit name, invocation by @agent-name is fragile across dispatchers.

Suggested fix
 ---
+name: prototype-builder
 description: Rapid time-boxed prototyping with explicit tech-debt ledger. Auto-activate on "prototype", "POC", "MVP in X hours", or "hackathon build" requests.
 mode: subagent
 permission:
   edit: allow
   bash: allow
 ---

As per coding guidelines: .opencode/agents/** definitions should be invokable using @agent-name syntax.

📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
---
description: Rapid time-boxed prototyping with explicit tech-debt ledger. Auto-activate on "prototype", "POC", "MVP in X hours", or "hackathon build" requests.
mode: subagent
permission:
edit: allow
bash: allow
---
---
name: prototype-builder
description: Rapid time-boxed prototyping with explicit tech-debt ledger. Auto-activate on "prototype", "POC", "MVP in X hours", or "hackathon build" requests.
mode: subagent
permission:
edit: allow
bash: allow
---
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.opencode/agents/prototype-builder.md around lines 1 - 7, The front matter
in prototype-builder.md is missing a `name` field which prevents invocation via
`@agent-name`; add a top-level YAML `name: prototype-builder` (or the intended
agent identifier) to the existing front matter so the agent can be resolved by
`@prototype-builder`; ensure the `name` value matches the file/agent identifier
and keep it at the same level as `description`, `mode`, and `permission`.

---
# BosskuAI Competitor Check

Activate the `bosskuai-competitor-intelligence` skill for systematic competitor monitoring.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major | ⚡ Quick win

Document this as a slash command, not a skill trigger.

For command docs in .opencode/commands/**, invocation should be /command-name. Replace this with /competitor-check to match the required interface.

Suggested patch
-Activate the `bosskuai-competitor-intelligence` skill for systematic competitor monitoring.
+Invoke `/competitor-check` for systematic competitor monitoring.

As per coding guidelines, .opencode/commands/** commands must be invoked with /command-name syntax.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.opencode/commands/competitor-check.md at line 6, Update the invocation text
to document a slash command rather than a skill trigger: replace the phrase
referencing `bosskuai-competitor-intelligence` with the slash command
`/competitor-check`, and reword the sentence to read something like "Invoke the
`/competitor-check` slash command for systematic competitor monitoring" so the
command doc in `.opencode/commands/**` uses the required `/command-name` syntax.


## Instructions

1. Use `bosskuai-continuous-learning` plus the learning-promotion and continuous-learning checklists.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major | ⚡ Quick win

Use /continuous-learning in the execution step.

The instruction currently uses a skill-style token; this should be a slash command for consistency and operability.

Suggested patch
-1. Use `bosskuai-continuous-learning` plus the learning-promotion and continuous-learning checklists.
+1. Use `/continuous-learning` plus the learning-promotion and continuous-learning checklists.

As per coding guidelines, .opencode/commands/** must invoke commands with /command-name syntax.

📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
1. Use `bosskuai-continuous-learning` plus the learning-promotion and continuous-learning checklists.
1. Use `/continuous-learning` plus the learning-promotion and continuous-learning checklists.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.opencode/commands/continuous-learning.md at line 30, Replace the
skill-style token "bosskuai-continuous-learning" in the execution step with the
slash command "/continuous-learning" so the file in .opencode/commands
(specifically the execution step that references bosskuai-continuous-learning
and the learning-promotion/continuous-learning checklists) uses the required
`/command-name` syntax; update any adjacent examples or instructions in
continuous-learning.md to invoke "/continuous-learning" instead of the
skill-style token to comply with the .opencode/commands/** guideline.

---
# BosskuAI Deep Research

Activate the `bosskuai-deep-research` skill for a multi-source investigation.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major | ⚡ Quick win

Use slash-command invocation format in command docs.

This command guide currently instructs a skill-style trigger (bosskuai-deep-research) instead of the required command trigger format. Update it to /deep-research so users can invoke it consistently with OpenCode command conventions.

Suggested patch
-Activate the `bosskuai-deep-research` skill for a multi-source investigation.
+Invoke `/deep-research` for a multi-source investigation.

As per coding guidelines, .opencode/commands/** must invoke commands using /command-name syntax.

📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
Activate the `bosskuai-deep-research` skill for a multi-source investigation.
Invoke `/deep-research` for a multi-source investigation.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.opencode/commands/deep-research.md at line 6, Update the command invocation
text to use the slash-command format: replace the skill-style trigger
"bosskuai-deep-research" with the OpenCode command "/deep-research" so the doc
uses the required `/command-name` syntax for invoking the deep-research command.

---
# BosskuAI Investor Prep

Activate the `bosskuai-investor-prep` skill to build or review fundraising materials.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major | ⚡ Quick win

Switch the trigger text to command syntax.

This should instruct /investor-prep invocation, not a raw skill name.

Suggested patch
-Activate the `bosskuai-investor-prep` skill to build or review fundraising materials.
+Invoke `/investor-prep` to build or review fundraising materials.

As per coding guidelines, command docs under .opencode/commands/** must use /command-name invocation.

📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
Activate the `bosskuai-investor-prep` skill to build or review fundraising materials.
Invoke `/investor-prep` to build or review fundraising materials.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.opencode/commands/investor-prep.md at line 6, Replace the raw skill name
"bosskuai-investor-prep" with the command-style invocation "/investor-prep" in
the documentation text so it reads something like "Activate the /investor-prep
command to build or review fundraising materials"; update any other occurrences
in this doc that reference bosskuai-investor-prep to use the slash-prefixed
command name so the file follows the .opencode/commands command-syntax
guideline.


## Instructions

1. Use `bosskuai-rules-distill` and the rule distillation checklist.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major | ⚡ Quick win

Align invocation to /rules-distill.

Replace the current non-slash trigger with slash-command syntax to match the command framework.

Suggested patch
-1. Use `bosskuai-rules-distill` and the rule distillation checklist.
+1. Use `/rules-distill` and the rule distillation checklist.

As per coding guidelines, commands in .opencode/commands/** must be invoked using /command-name.

📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
1. Use `bosskuai-rules-distill` and the rule distillation checklist.
1. Use `/rules-distill` and the rule distillation checklist.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.opencode/commands/rules-distill.md at line 16, Update the command
invocation text so it uses the slash-command syntax: replace occurrences of the
non-slash token `bosskuai-rules-distill` with `/rules-distill` and ensure any
surrounding guidance (the "rule distillation checklist" reference) reflects the
new `/rules-distill` invocation so the document in .opencode/commands follows
the required `/command-name` convention.


## Instructions

1. Use `bosskuai-skill-stocktake` and the skill health checklist.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major | ⚡ Quick win

Use /skill-stocktake for command invocation.

The current wording uses a skill token; this should be slash-command syntax in command docs.

Suggested patch
-1. Use `bosskuai-skill-stocktake` and the skill health checklist.
+1. Use `/skill-stocktake` and the skill health checklist.

As per coding guidelines, .opencode/commands/** requires /command-name invocation format.

📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
1. Use `bosskuai-skill-stocktake` and the skill health checklist.
1. Use `/skill-stocktake` and the skill health checklist.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.opencode/commands/skill-stocktake.md at line 17, Replace the inline skill
token "bosskuai-skill-stocktake" with the slash-command invocation
"/skill-stocktake" in the skill-stocktake command docs and ensure the skill
health checklist is referenced using the same slash-command syntax; update any
occurrences in the markdown where the token form appears and confirm headings or
examples use "/skill-stocktake" consistently.

Comment thread scripts/install.sh
Comment on lines +166 to +169
for e in AGENTS.md CLAUDE.md WORKSPACE-ONBOARDING.md skill-index.json agents mcp-configs .codex .claude .cursor .claude-plugin opencode.json .opencode; do copy_path "$e"; done
mkdir -p "$target_dir/ai-assistant"
for sub in memory references scripts hooks; do copy_path "ai-assistant/$sub"; done
mapfile -t selected < <(profile_skills)
selected=(); while IFS= read -r s; do selected+=("$s"); done < <(profile_skills)

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major | ⚡ Quick win

--sync-layer currently overwrites ai-assistant/memory/ despite the documented contract.

Line 168 copies ai-assistant/memory unconditionally in the non---skills-only path, so --sync-layer can erase existing memory unless users also pass --preserve-memory. That conflicts with the option description on Line 22 (“except ai-assistant/memory/”).

Suggested fix
 else
   for e in AGENTS.md CLAUDE.md WORKSPACE-ONBOARDING.md skill-index.json agents mcp-configs .codex .claude .cursor .claude-plugin opencode.json .opencode; do copy_path "$e"; done
   mkdir -p "$target_dir/ai-assistant"
-  for sub in memory references scripts hooks; do copy_path "ai-assistant/$sub"; done
+  if (( sync_layer )); then
+    for sub in references scripts hooks; do copy_path "ai-assistant/$sub"; done
+  else
+    for sub in memory references scripts hooks; do copy_path "ai-assistant/$sub"; done
+  fi
   selected=(); while IFS= read -r s; do selected+=("$s"); done < <(profile_skills)
   copy_selected_skills "${selected[@]}"
   apply_hooks_choice
 fi
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
for e in AGENTS.md CLAUDE.md WORKSPACE-ONBOARDING.md skill-index.json agents mcp-configs .codex .claude .cursor .claude-plugin opencode.json .opencode; do copy_path "$e"; done
mkdir -p "$target_dir/ai-assistant"
for sub in memory references scripts hooks; do copy_path "ai-assistant/$sub"; done
mapfile -t selected < <(profile_skills)
selected=(); while IFS= read -r s; do selected+=("$s"); done < <(profile_skills)
for e in AGENTS.md CLAUDE.md WORKSPACE-ONBOARDING.md skill-index.json agents mcp-configs .codex .claude .cursor .claude-plugin opencode.json .opencode; do copy_path "$e"; done
mkdir -p "$target_dir/ai-assistant"
if (( sync_layer )); then
for sub in references scripts hooks; do copy_path "ai-assistant/$sub"; done
else
for sub in memory references scripts hooks; do copy_path "ai-assistant/$sub"; done
fi
selected=(); while IFS= read -r s; do selected+=("$s"); done < <(profile_skills)
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@scripts/install.sh` around lines 166 - 169, The loop that copies ai-assistant
subpaths (for sub in memory references scripts hooks; do copy_path
"ai-assistant/$sub"; done) unconditionally copies ai-assistant/memory which
allows --sync-layer to overwrite existing memory; change this to skip copying
"ai-assistant/memory" when running in sync-layer mode unless the user explicitly
set the preserve-memory flag (e.g. check the variable set by --sync-layer and
the variable set by --preserve-memory or --skills-only) so that memory is only
copied when not syncing layers or when preserve-memory is true; update the
conditional around the copy_path call (or split the loop) to respect those flags
while leaving other subfolders unaffected.

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