Skip to content

Mirror: feat(slash-commands): type/source indicators (#5696)#39

Closed
jeremylongshore wants to merge 1 commit intomainfrom
mirror/PR-5696
Closed

Mirror: feat(slash-commands): type/source indicators (#5696)#39
jeremylongshore wants to merge 1 commit intomainfrom
mirror/PR-5696

Conversation

@jeremylongshore
Copy link
Copy Markdown
Owner

Mirror of Kilo-Org#5696

Field Value
Upstream PR #5696
Author @Drilmo
Category feature
Tier 5
Size 354 lines, 25 files

This PR mirrors the upstream change for multi-AI review analysis.

Bot Review Tracker

  • CodeRabbit
  • Gemini Code Assist
  • Greptile
  • CodeQL
  • Qodo PR-Agent

Links

@gemini-code-assist
Copy link
Copy Markdown

Warning

You have reached your daily quota limit. Please wait up to 24 hours and I will start processing your requests again!

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Feb 15, 2026

Warning

Rate limit exceeded

@jeremylongshore has exceeded the limit for the number of commits that can be reviewed per hour. Please wait 21 minutes and 28 seconds before requesting another review.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

✨ Finishing touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch mirror/PR-5696

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.

@qodo-code-review
Copy link
Copy Markdown

ⓘ You are approaching your monthly quota for Qodo. Upgrade your plan

Review Summary by Qodo

Enhance slash commands with type indicators, source badges, skills, and argument hints

✨ Enhancement

Grey Divider

Walkthroughs

Description
• Add type/source indicators to slash commands with color-coded badges
• Integrate skills into slash command menu for discovery and invocation
• Display argument hints as ghost text after skill command selection
• Color-code slash command highlights in textarea by command type
• Parse and propagate argument-hint from skill frontmatter metadata
Diagram
flowchart LR
  A["Skill Metadata"] -->|argumentHint| B["SkillsManager"]
  B -->|SkillInfo Array| C["parseKiloSlashCommands"]
  C -->|skillsForMode| D["getSupportedSlashCommands"]
  D -->|SlashCommand with type/source| E["SlashCommandMenu"]
  E -->|Type Badges| F["UI Display"]
  D -->|findSlashCommand| G["ChatTextArea"]
  G -->|argumentHint| H["Ghost Text Hint"]
  I["CSS Styles"] -->|Type Colors| F
  I -->|Highlight Colors| G
Loading

Grey Divider

File Changes

1. webview-ui/src/utils/slash-commands.ts ✨ Enhancement +86/-13

Add type/source metadata and skill support to slash commands

webview-ui/src/utils/slash-commands.ts


2. src/core/slash-commands/kilo.ts ✨ Enhancement +18/-0

Parse and inject skill content into slash command processing

src/core/slash-commands/kilo.ts


3. src/services/skills/SkillsManager.ts ✨ Enhancement +5/-0

Extract and propagate argumentHint from skill frontmatter

src/services/skills/SkillsManager.ts


View more (23)
4. webview-ui/src/components/chat/ChatTextArea.tsx ✨ Enhancement +36/-6

Integrate skills and display argument hints in textarea

webview-ui/src/components/chat/ChatTextArea.tsx


5. webview-ui/src/components/chat/SlashCommandMenu.tsx ✨ Enhancement +51/-5

Display type badges and source labels in command menu

webview-ui/src/components/chat/SlashCommandMenu.tsx


6. webview-ui/src/context/ExtensionStateContext.tsx ✨ Enhancement +18/-1

Add skills state management and message handling

webview-ui/src/context/ExtensionStateContext.tsx


7. webview-ui/src/kilocode.css ✨ Enhancement +28/-0

Add type-specific highlight colors and argument hint styling

webview-ui/src/kilocode.css


8. src/core/task/Task.ts ✨ Enhancement +4/-0

Pass skills to slash command parsing for mode-specific skills

src/core/task/Task.ts


9. src/core/webview/webviewMessageHandler.ts ✨ Enhancement +1/-0

Send skills data to webview for slash command menu

src/core/webview/webviewMessageHandler.ts


10. src/shared/skills.ts ✨ Enhancement +1/-0

Add argumentHint field to SkillMetadata interface

src/shared/skills.ts


11. webview-ui/src/components/chat/hooks/useChatAutocompleteText.ts Formatting +4/-1

Reformat conditional logic for readability

webview-ui/src/components/chat/hooks/useChatAutocompleteText.ts


12. packages/types/src/providers/fireworks.ts Formatting +2/-2

Fix indentation inconsistency in model configuration

packages/types/src/providers/fireworks.ts


13. src/services/autocomplete/classic-auto-complete/HoleFiller.ts Formatting +5/-1

Reformat function signature for consistency

src/services/autocomplete/classic-auto-complete/HoleFiller.ts


14. src/services/autocomplete/AutocompleteServiceManager.ts Formatting +3/-1

Reformat error message for line length consistency

src/services/autocomplete/AutocompleteServiceManager.ts


15. src/test-llm-autocompletion/mock-context-provider.ts Formatting +3/-1

Reformat object creation for readability

src/test-llm-autocompletion/mock-context-provider.ts


16. webview-ui/src/kilocode.ts/hooks/useProviderModels.ts Formatting +0/-0

Fix indentation in kilocode_change comment block

webview-ui/src/kilocode.ts/hooks/useProviderModels.ts


17. webview-ui/src/components/kilocode/settings/AutocompleteServiceSettings.tsx Formatting +9/-3

Reformat JSX elements for line length consistency

webview-ui/src/components/kilocode/settings/AutocompleteServiceSettings.tsx


18. webview-ui/src/components/kilocode/settings/__tests__/AutocompleteServiceSettings.spec.tsx Formatting +6/-2

Reformat test selectors for readability

webview-ui/src/components/kilocode/settings/tests/AutocompleteServiceSettings.spec.tsx


19. webview-ui/src/components/settings/ApiOptions.tsx Formatting +4/-5

Reformat filter logic for improved readability

webview-ui/src/components/settings/ApiOptions.tsx


20. .changeset/slash-command-enhancements.md 📝 Documentation +12/-0

Document slash command enhancement features and changes

.changeset/slash-command-enhancements.md


21. .beads/beads.db-shm Additional files +0/-0

...

.beads/beads.db-shm


22. .beads/beads.db-wal Additional files +0/-0

...

.beads/beads.db-wal


23. cli/src/constants/providers/labels.ts Additional files +0/-1

...

cli/src/constants/providers/labels.ts


24. cli/src/constants/providers/settings.ts Additional files +0/-1

...

cli/src/constants/providers/settings.ts


25. cli/src/constants/providers/validation.ts Additional files +0/-1

...

cli/src/constants/providers/validation.ts


26. webview-ui/src/components/kilocode/hooks/useProviderModels.ts Additional files +1/-1

...

webview-ui/src/components/kilocode/hooks/useProviderModels.ts


Grey Divider

Qodo Logo

@github-actions
Copy link
Copy Markdown

Failed to generate code suggestions for PR

@qodo-code-review
Copy link
Copy Markdown

ⓘ You are approaching your monthly quota for Qodo. Upgrade your plan

Code Review by Qodo

🐞 Bugs (3) 📘 Rule violations (4) 📎 Requirement gaps (0)

Grey Divider


Action required

1. SlashCommandMenu inline style prop 📘 Rule violation ✓ Correctness
Description
New webview markup introduces an inline style={{ ... }} object for the type badge colors instead
of using Tailwind/CSS classes. This violates the repo requirement and can lead to inconsistent
styling patterns and theme compatibility issues.
Code

webview-ui/src/components/chat/SlashCommandMenu.tsx[R105-110]

+										<span
+											className="text-[0.7em] px-1.5 py-0.5 rounded-sm leading-none"
+											style={{
+												backgroundColor: getTypeBadgeColors(command.type).bg,
+												color: getTypeBadgeColors(command.type).text,
+											}}>
Evidence
Compliance ID 14 requires preferring Tailwind classes over inline style objects for new webview
markup; the added badge uses a style object for backgroundColor and color.

AGENTS.md
webview-ui/src/components/chat/SlashCommandMenu.tsx[105-110]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
New UI markup in `SlashCommandMenu` uses an inline `style={{ ... }}` object to color the type badge, but the repo requires using Tailwind classes (or established CSS classes) instead.

## Issue Context
The badge color is derived from `command.type`. You can keep dynamic behavior by mapping `SlashCommandType` to class strings (including Tailwind arbitrary values) or by defining CSS classes (e.g., `.slash-command-type-badge-command`) and applying them via `className`.

## Fix Focus Areas
- webview-ui/src/components/chat/SlashCommandMenu.tsx[105-110]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


2. Task.ts missing kilocode_change 📘 Rule violation ⛯ Reliability
Description
New logic to fetch skillsForMode and pass it into parseKiloSlashCommands was added in an
upstream-shared src/ file without surrounding kilocode_change markers. This increases the risk
of merge conflicts during upstream syncs.
Code

src/core/task/Task.ts[R4127-4134]

+							const currentMode = await this.getTaskMode()
+							const skillsForMode =
+								this.providerRef.deref()?.getSkillsManager()?.getSkillsForMode(currentMode) ?? []
							const { processedText, needsRulesFileCheck: needsCheck } = await parseKiloSlashCommands(
								parsedText.text,
								localWorkflowToggles,
								globalWorkflowToggles,
+								skillsForMode,
Evidence
Compliance ID 8 requires kilocode_change markers when modifying upstream-shared files under
src/; the newly added currentMode/skillsForMode block has no kilocode_change start/end or
inline marker.

AGENTS.md
src/core/task/Task.ts[4126-4135]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
`src/core/task/Task.ts` was modified to include skills in slash-command parsing, but the new block is not marked with `kilocode_change` markers as required for upstream-shared files.

## Issue Context
This file is under `src/` (non-exempt) and must clearly mark Kilo-specific deltas to reduce upstream merge conflicts.

## Fix Focus Areas
- src/core/task/Task.ts[4127-4134]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


3. SlashCommandMenu unmarked additions 📘 Rule violation ⛯ Reliability
Description
New helper/constants for slash command type/source badges were added in an upstream-shared
webview-ui/ file without kilocode_change markers. This makes future upstream merges more
conflict-prone.
Code

webview-ui/src/components/chat/SlashCommandMenu.tsx[R14-40]

+const typeBadgeColors: Record<string, { bg: string; text: string }> = {
+	command: { bg: "rgba(58, 150, 221, 0.15)", text: "rgba(58, 150, 221, 0.9)" },
+	mode: { bg: "rgba(160, 100, 230, 0.15)", text: "rgba(160, 100, 230, 0.9)" },
+	workflow: { bg: "rgba(80, 180, 100, 0.15)", text: "rgba(80, 180, 100, 0.9)" },
+	skill: { bg: "rgba(220, 160, 50, 0.15)", text: "rgba(220, 160, 50, 0.9)" },
+}
+
+const defaultBadgeColors = { bg: "rgba(128, 128, 128, 0.15)", text: "var(--vscode-descriptionForeground)" }
+
+function getTypeBadgeColors(type?: SlashCommandType): { bg: string; text: string } {
+	return (type && typeBadgeColors[type]) || defaultBadgeColors
+}
+
+function getSourceLabel(source?: SlashCommandSource): string | null {
+	switch (source) {
+		case "project":
+			return "project"
+		case "global":
+			return "global"
+		case "organization":
+			return "org"
+		case "built-in":
+		default:
+			return null
+	}
+}
+
Evidence
Compliance ID 8 requires kilocode_change markers for modifications in webview-ui/; the newly
added type/source badge helpers are unmarked.

AGENTS.md
webview-ui/src/components/chat/SlashCommandMenu.tsx[14-40]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
`webview-ui/src/components/chat/SlashCommandMenu.tsx` adds new type/source badge helper logic without `kilocode_change` markers, even though `webview-ui/` is upstream-shared.

## Issue Context
Marking Kilo-specific changes reduces merge conflicts during upstream sync.

## Fix Focus Areas
- webview-ui/src/components/chat/SlashCommandMenu.tsx[14-40]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


View more (3)
4. fireworks.ts missing marker 📘 Rule violation ⛯ Reliability
Description
A change was made in an upstream-shared packages/ file without adding any kilocode_change
marker. This can create avoidable conflicts when syncing with upstream.
Code

packages/types/src/providers/fireworks.ts[210]

+		defaultToolProtocol: "native",
Evidence
Compliance ID 8 requires kilocode_change markers for modifications in packages/; the modified
model entry line is not marked.

AGENTS.md
packages/types/src/providers/fireworks.ts[206-213]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
`packages/types/src/providers/fireworks.ts` was modified without `kilocode_change` markers even though `packages/` is upstream-shared per policy.

## Issue Context
If the change is purely formatting, consider reverting it to avoid touching upstream-shared code. If it must remain, add a marker (inline or block start/end) around the changed lines.

## Fix Focus Areas
- packages/types/src/providers/fireworks.ts[206-247]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


5. Skills not passed to parser 🐞 Bug ✓ Correctness
Description
Skill support was added to parseKiloSlashCommands, but the main request-time pipeline still calls
parseKiloSlashCommands without providing skills, so skills defaults to an empty array and /skill
never matches. Users can see skills in the UI but the backend won’t inject SKILL.md content for
slash-invocation.
Code

src/core/task/Task.ts[R4127-4135]

+							const currentMode = await this.getTaskMode()
+							const skillsForMode =
+								this.providerRef.deref()?.getSkillsManager()?.getSkillsForMode(currentMode) ?? []
							const { processedText, needsRulesFileCheck: needsCheck } = await parseKiloSlashCommands(
								parsedText.text,
								localWorkflowToggles,
								globalWorkflowToggles,
+								skillsForMode,
							)
Evidence
The active Task request path uses processKiloUserContentMentions, which calls parseKiloSlashCommands
without the new skills argument. Since parseKiloSlashCommands defaults skills to [], the new
skill matching block can never trigger in that path.

src/core/task/Task.ts[2841-2853]
src/core/mentions/processKiloUserContentMentions.ts[47-70]
src/core/slash-commands/kilo.ts[27-32]
src/core/slash-commands/kilo.ts[81-89]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

### Issue description
Skill slash commands rely on `parseKiloSlashCommands(..., skills)` but the main request-time pipeline does not pass skills, so `/skill` is never recognized.

### Issue Context
- `parseKiloSlashCommands` now supports `skills: SkillMetadata[]`.
- The main Task path uses `processKiloUserContentMentions`, which calls `parseKiloSlashCommands` without that argument.

### Fix Focus Areas
- src/core/task/Task.ts[2835-2861]
- src/core/mentions/processKiloUserContentMentions.ts[45-72]
- src/core/slash-commands/kilo.ts[27-95]

### Implementation sketch
1) In `Task.ts`, compute `currentMode` and `skillsForMode` (via `getSkillsManager().getSkillsForMode(currentMode)`), and pass them into `processKiloUserContentMentions`.
2) Extend `processKiloUserContentMentions` signature to accept `skills?: SkillMetadata[]` and forward it into `parseKiloSlashCommands`.
3) Add/adjust a unit test to cover `/some-skill` being expanded into `&lt;explicit_instructions&gt;` when skills are provided.

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


6. CLI maps missing apertis 🐞 Bug ✓ Correctness
Description
The PR removes the apertis entries from CLI provider label/default-model/required-fields maps, but
ProviderName still includes apertis. This likely causes TypeScript errors for
Record<ProviderName, ...> (missing key) and/or breaks CLI behavior for the apertis provider.
Code

cli/src/constants/providers/labels.ts[R52-56]

	synthetic: "Synthetic",
	"sap-ai-core": "SAP AI Core",
	baseten: "BaseTen",
-	apertis: "Apertis", // kilocode_change
	corethink: "Corethink",
}
Evidence
CLI provider maps are typed as Record<ProviderName, ...>. ProviderName comes from shared types
where apertis is still included, but the CLI maps no longer define any apertis entry
(labels/default model/required fields).

cli/src/constants/providers/labels.ts[45-56]
cli/src/constants/providers/settings.ts[1095-1114]
cli/src/constants/providers/validation.ts[40-57]
cli/src/types/messages.ts[4-13]
packages/types/src/provider-settings.ts[48-62]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

### Issue description
CLI provider constants no longer define `apertis`, but the shared `ProviderName` still includes it. This breaks type completeness and can break runtime selection.

### Issue Context
`PROVIDER_LABELS`, `PROVIDER_DEFAULT_MODELS`, and `PROVIDER_REQUIRED_FIELDS` are typed as `Record&lt;ProviderName, ...&gt;`.

### Fix Focus Areas
- cli/src/constants/providers/labels.ts[1-56]
- cli/src/constants/providers/settings.ts[1095-1114]
- cli/src/constants/providers/validation.ts[40-57]
- packages/types/src/provider-settings.ts[48-62]

### Implementation sketch
Option A (likely intended): add back `apertis` entries in all three CLI maps:
- label: &quot;Apertis&quot;
- default model: align with shared defaults (e.g. `claude-sonnet-4-20250514`)
- required fields: align with provider settings schema (e.g. `apertisApiKey`, `apertisModelId`)

Option B (if deprecating apertis): remove `apertis` from shared ProviderName/provider lists and all extension/api handlers accordingly (larger change).

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools



Remediation recommended

7. Slash menu skills unfiltered 🐞 Bug ✓ Correctness
Description
Webview slash-command generation appends all skills from extension state without filtering by
current mode or applying project-over-global override resolution. This can surface mode-specific
skills in the wrong mode and show duplicates/incorrect sources, diverging from how skills are
presented to the model in the system prompt.
Code

webview-ui/src/utils/slash-commands.ts[R80-88]

+	// add skill commands
+	const skillCommands: SlashCommand[] = skills.map((skill) => ({
+		name: skill.name,
+		description: skill.description,
+		section: "custom" as const,
+		type: "skill" as const,
+		source: skill.source as SlashCommandSource,
+		...(skill.argumentHint && { argumentHint: skill.argumentHint }),
+	}))
Evidence
The webview builds slash commands by directly mapping the skills array. The extension currently
posts getAllSkills() (not mode-filtered / not override-resolved), while the system prompt
explicitly uses getSkillsForMode(currentMode) with override resolution—so the UI list can be
inconsistent with the actual effective skill set for the current mode.

webview-ui/src/utils/slash-commands.ts[28-90]
src/core/webview/ClineProvider.ts[2183-2186]
src/services/skills/SkillsManager.ts[238-240]
src/core/prompts/sections/skills.ts[26-30]
src/core/prompts/sections/skills.ts[83-86]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

### Issue description
The slash command dropdown/highlighting uses the raw `skills` array and does not enforce mode filtering or override resolution, which can show unusable/duplicated skills.

### Issue Context
System prompt skill list is mode-filtered and override-resolved (`getSkillsForMode(currentMode)`), so the UI should ideally match.

### Fix Focus Areas
- webview-ui/src/utils/slash-commands.ts[28-91]
- webview-ui/src/components/chat/SlashCommandMenu.tsx[46-78]
- webview-ui/src/components/chat/ChatTextArea.tsx[1176-1258]
- src/core/webview/ClineProvider.ts[2183-2186]

### Implementation options
1) **Preferred (single source of truth):** Change `postSkillsDataToWebview()` to send *resolved skills for the current mode* for slash commands (and optionally send a separate `allSkills` payload for Installed Skills UI).
2) **Webview-side filtering:** Pass current mode into slash-command utilities and filter `skills` by `skill.mode` plus dedupe by name with priority rules (project &gt; global, mode-specific &gt; generic).

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


Grey Divider

ⓘ The new review experience is currently in Beta. Learn more

Grey Divider

Qodo Logo

Comment on lines +105 to +110
<span
className="text-[0.7em] px-1.5 py-0.5 rounded-sm leading-none"
style={{
backgroundColor: getTypeBadgeColors(command.type).bg,
color: getTypeBadgeColors(command.type).text,
}}>
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Action required

1. slashcommandmenu inline style prop 📘 Rule violation ✓ Correctness

New webview markup introduces an inline style={{ ... }} object for the type badge colors instead
of using Tailwind/CSS classes. This violates the repo requirement and can lead to inconsistent
styling patterns and theme compatibility issues.
Agent Prompt
## Issue description
New UI markup in `SlashCommandMenu` uses an inline `style={{ ... }}` object to color the type badge, but the repo requires using Tailwind classes (or established CSS classes) instead.

## Issue Context
The badge color is derived from `command.type`. You can keep dynamic behavior by mapping `SlashCommandType` to class strings (including Tailwind arbitrary values) or by defining CSS classes (e.g., `.slash-command-type-badge-command`) and applying them via `className`.

## Fix Focus Areas
- webview-ui/src/components/chat/SlashCommandMenu.tsx[105-110]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools

Comment thread src/core/task/Task.ts
Comment on lines +4127 to +4134
const currentMode = await this.getTaskMode()
const skillsForMode =
this.providerRef.deref()?.getSkillsManager()?.getSkillsForMode(currentMode) ?? []
const { processedText, needsRulesFileCheck: needsCheck } = await parseKiloSlashCommands(
parsedText.text,
localWorkflowToggles,
globalWorkflowToggles,
skillsForMode,
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Action required

2. task.ts missing kilocode_change 📘 Rule violation ⛯ Reliability

New logic to fetch skillsForMode and pass it into parseKiloSlashCommands was added in an
upstream-shared src/ file without surrounding kilocode_change markers. This increases the risk
of merge conflicts during upstream syncs.
Agent Prompt
## Issue description
`src/core/task/Task.ts` was modified to include skills in slash-command parsing, but the new block is not marked with `kilocode_change` markers as required for upstream-shared files.

## Issue Context
This file is under `src/` (non-exempt) and must clearly mark Kilo-specific deltas to reduce upstream merge conflicts.

## Fix Focus Areas
- src/core/task/Task.ts[4127-4134]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools

Comment on lines +14 to +40
const typeBadgeColors: Record<string, { bg: string; text: string }> = {
command: { bg: "rgba(58, 150, 221, 0.15)", text: "rgba(58, 150, 221, 0.9)" },
mode: { bg: "rgba(160, 100, 230, 0.15)", text: "rgba(160, 100, 230, 0.9)" },
workflow: { bg: "rgba(80, 180, 100, 0.15)", text: "rgba(80, 180, 100, 0.9)" },
skill: { bg: "rgba(220, 160, 50, 0.15)", text: "rgba(220, 160, 50, 0.9)" },
}

const defaultBadgeColors = { bg: "rgba(128, 128, 128, 0.15)", text: "var(--vscode-descriptionForeground)" }

function getTypeBadgeColors(type?: SlashCommandType): { bg: string; text: string } {
return (type && typeBadgeColors[type]) || defaultBadgeColors
}

function getSourceLabel(source?: SlashCommandSource): string | null {
switch (source) {
case "project":
return "project"
case "global":
return "global"
case "organization":
return "org"
case "built-in":
default:
return null
}
}

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Action required

3. slashcommandmenu unmarked additions 📘 Rule violation ⛯ Reliability

New helper/constants for slash command type/source badges were added in an upstream-shared
webview-ui/ file without kilocode_change markers. This makes future upstream merges more
conflict-prone.
Agent Prompt
## Issue description
`webview-ui/src/components/chat/SlashCommandMenu.tsx` adds new type/source badge helper logic without `kilocode_change` markers, even though `webview-ui/` is upstream-shared.

## Issue Context
Marking Kilo-specific changes reduces merge conflicts during upstream sync.

## Fix Focus Areas
- webview-ui/src/components/chat/SlashCommandMenu.tsx[14-40]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools

supportsPromptCache: false,
supportsNativeTools: true,
defaultToolProtocol: "native",
defaultToolProtocol: "native",
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Action required

4. fireworks.ts missing marker 📘 Rule violation ⛯ Reliability

A change was made in an upstream-shared packages/ file without adding any kilocode_change
marker. This can create avoidable conflicts when syncing with upstream.
Agent Prompt
## Issue description
`packages/types/src/providers/fireworks.ts` was modified without `kilocode_change` markers even though `packages/` is upstream-shared per policy.

## Issue Context
If the change is purely formatting, consider reverting it to avoid touching upstream-shared code. If it must remain, add a marker (inline or block start/end) around the changed lines.

## Fix Focus Areas
- packages/types/src/providers/fireworks.ts[206-247]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools

Comment thread src/core/task/Task.ts
Comment on lines +4127 to 4135
const currentMode = await this.getTaskMode()
const skillsForMode =
this.providerRef.deref()?.getSkillsManager()?.getSkillsForMode(currentMode) ?? []
const { processedText, needsRulesFileCheck: needsCheck } = await parseKiloSlashCommands(
parsedText.text,
localWorkflowToggles,
globalWorkflowToggles,
skillsForMode,
)
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Action required

5. Skills not passed to parser 🐞 Bug ✓ Correctness

Skill support was added to parseKiloSlashCommands, but the main request-time pipeline still calls
parseKiloSlashCommands without providing skills, so skills defaults to an empty array and /skill
never matches. Users can see skills in the UI but the backend won’t inject SKILL.md content for
slash-invocation.
Agent Prompt
### Issue description
Skill slash commands rely on `parseKiloSlashCommands(..., skills)` but the main request-time pipeline does not pass skills, so `/skill` is never recognized.

### Issue Context
- `parseKiloSlashCommands` now supports `skills: SkillMetadata[]`.
- The main Task path uses `processKiloUserContentMentions`, which calls `parseKiloSlashCommands` without that argument.

### Fix Focus Areas
- src/core/task/Task.ts[2835-2861]
- src/core/mentions/processKiloUserContentMentions.ts[45-72]
- src/core/slash-commands/kilo.ts[27-95]

### Implementation sketch
1) In `Task.ts`, compute `currentMode` and `skillsForMode` (via `getSkillsManager().getSkillsForMode(currentMode)`), and pass them into `processKiloUserContentMentions`.
2) Extend `processKiloUserContentMentions` signature to accept `skills?: SkillMetadata[]` and forward it into `parseKiloSlashCommands`.
3) Add/adjust a unit test to cover `/some-skill` being expanded into `<explicit_instructions>` when skills are provided.

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools

Comment on lines 52 to 56
synthetic: "Synthetic",
"sap-ai-core": "SAP AI Core",
baseten: "BaseTen",
apertis: "Apertis", // kilocode_change
corethink: "Corethink",
}
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Action required

6. Cli maps missing apertis 🐞 Bug ✓ Correctness

The PR removes the apertis entries from CLI provider label/default-model/required-fields maps, but
ProviderName still includes apertis. This likely causes TypeScript errors for
Record<ProviderName, ...> (missing key) and/or breaks CLI behavior for the apertis provider.
Agent Prompt
### Issue description
CLI provider constants no longer define `apertis`, but the shared `ProviderName` still includes it. This breaks type completeness and can break runtime selection.

### Issue Context
`PROVIDER_LABELS`, `PROVIDER_DEFAULT_MODELS`, and `PROVIDER_REQUIRED_FIELDS` are typed as `Record<ProviderName, ...>`.

### Fix Focus Areas
- cli/src/constants/providers/labels.ts[1-56]
- cli/src/constants/providers/settings.ts[1095-1114]
- cli/src/constants/providers/validation.ts[40-57]
- packages/types/src/provider-settings.ts[48-62]

### Implementation sketch
Option A (likely intended): add back `apertis` entries in all three CLI maps:
- label: "Apertis"
- default model: align with shared defaults (e.g. `claude-sonnet-4-20250514`)
- required fields: align with provider settings schema (e.g. `apertisApiKey`, `apertisModelId`)

Option B (if deprecating apertis): remove `apertis` from shared ProviderName/provider lists and all extension/api handlers accordingly (larger change).

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools

@jeremylongshore
Copy link
Copy Markdown
Owner Author

@greptileai review

@jeremylongshore
Copy link
Copy Markdown
Owner Author

@greptileai

@jeremylongshore
Copy link
Copy Markdown
Owner Author

Merged into batch-6-combined-20-mirrors branch for combined testing. Bot reviews collected. Review artifacts preserved in .reviews/.

@jeremylongshore jeremylongshore deleted the mirror/PR-5696 branch February 16, 2026 00:43
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