Skip to content

Commit 15a50cb

Browse files
authored
Merge pull request #6 from Bitslix/feat/better-harness
feat(agent): Better Harness, coordinated subagents, and harness tooling
2 parents 684b3e4 + 5d880bd commit 15a50cb

87 files changed

Lines changed: 7102 additions & 804 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.agents/plans/PLANS.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,5 +11,7 @@ Persistent plans for multi-step work on **blxcode**. Individual plans live as Ma
1111
| done | [graph-3d-toolbar-preview.md](graph-3d-toolbar-preview.md) | Memory Graph: 3D-Orb (default), Icon-Toolbar (Zoom/2D-3D), Popover-Preview on node click, lazy local bundle, memory_panel.rs split |
1212
| done | [skills-rules-tabs.md](skills-rules-tabs.md) | Neue RightPanel-Tabs für Skills & Rules: Card-Liste mit Toggle, Skill-Install-Dialog (git/npm/local), agent toolcalls (list/read/write/enable/remove/install), index.json pro Bereich, System-Prompt-Update |
1313
| done | [terminal-agent-context-handoff.md](terminal-agent-context-handoff.md) | BLXCode Agent kann aktuellen Kontext gezielt per Toolcall an Terminal-Agent-Sessions uebergeben; Bilder werden als Metadaten plus lokale Pfade exportiert |
14-
| planned | [plan-manager.md](plan-manager.md) | Plan Manager fuer `.agents/plans`: Manage-Tab wie Memory Files, plan-linked Tasks gruppiert, Agent-Toolcalls, System-Prompt-Update und shared Context fuer BLXCode Agent plus Terminal-Handoff |
14+
| done | [plan-manager.md](plan-manager.md) | Plan Manager fuer `.agents/plans`: Manage-Tab wie Memory Files, plan-linked Tasks gruppiert, Agent-Toolcalls, System-Prompt-Update und shared Context fuer BLXCode Agent plus Terminal-Handoff |
1515
| planned | [kanban-board-view.md](kanban-board-view.md) | Kanban-View im Plans-Panel fuer alle Plan-Tasks eines Workspaces: Status-Spalten, Drag-and-Drop fuer Karten und Spalten, Spalten ein-/ausblenden und Markdown-Writeback |
16+
| done | [coordinated-subagents.md](coordinated-subagents.md) | Coordinated Subagents fuer BLXCode Agent mit Rollen, i18n Live-Subcards, Provider-Reuse, Environment Detection, Shell/Git/Web Toolsets und scoped Toolgruppen |
17+
| done | [better-harness.md](better-harness.md) | BetterHarness: Shrink system prompt by extracting tool docs into 6 embedded Core Skills; Skills tab gets Core/User sub-tabs |

.agents/plans/better-harness.md

Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
# BetterHarness: Core Harness Skills + Slim System Prompt
2+
3+
## Context
4+
5+
The current system prompt (`system_prompt.rs`) is ~470 lines and embeds full documentation for 50+ tools inline. This bloats every API request, consuming tokens and making prompt maintenance fragile. The goal is to extract tool documentation into **Core Skills** — built-in Markdown skill files shipped with the app — and reduce the system prompt to a minimal checklist + compact tool-name index. The Skills panel UI is extended to separate Core (built-in) from User (installed) skills.
6+
7+
---
8+
9+
## Overview of Changes
10+
11+
### 1. Core Harness Skill Files (new embedded assets)
12+
Create `src-tauri/src/agent/harness_skills/` with 6 Markdown skill files (embedded via `include_str!`):
13+
14+
| File | Covers |
15+
|---|---|
16+
| `memory.md` | `memory_*`, `memory_context_*`, `image_context_*` |
17+
| `plans.md` | `plan_*`, `plan_context_*` |
18+
| `tasks.md` | `task_*` |
19+
| `rules-skills.md` | `rules_*`, `skills_*` |
20+
| `file-access.md` | `list_workspace_files`, `read_workspace_file`, `list_tools` |
21+
| `harness.md` | `harness.*` client tools |
22+
23+
Each file contains usage guidance, parameter notes, and patterns — exactly as a user-authored `SKILL.md` would.
24+
25+
### 2. Backend: Add `Core` skill source + load harness skills
26+
27+
**`src-tauri/src/skills_rules/types.rs`**
28+
- Add `Core` variant to `SkillSourceKind` enum
29+
30+
**`src-tauri/src/skills_rules/store.rs`**
31+
- Add `CORE_SKILLS: &[(&str, &str)]` array — pairs of `(name, content)` using `include_str!`
32+
- `list_skills()` prepends core skills into the result (enabled state from workspace index, default `true`)
33+
- `read_skill()` serves core skill content from the embedded array
34+
- Core skills cannot be removed (error on `remove_skill` for core names)
35+
- `set_skill_enabled` works for both core and user skills (persisted in workspace index)
36+
37+
**`src-tauri/src/agent/system_prompt.rs`** — major reduction (~470 → ~240 lines):
38+
- Remove all per-tool documentation sections
39+
- Keep: workspace scope, security policy, turn checklist
40+
- Replace tool catalog with compact grouped name list (~25 lines)
41+
- Add: *"Call `skills_read` with a core skill name to get full usage guidance"*
42+
43+
**`src/skills_rules_wire.rs`**
44+
- Add `Core` variant to `SkillSourceKind` (mirrors backend type)
45+
46+
### 3. Frontend: Skills Tab — Core / User tabs
47+
48+
**`src/workbench/skills_rules_panel/skills_tab.rs`**
49+
- Add `SkillsView` signal: `Core | User` (default: `Core`)
50+
- Render a two-button sub-tab strip below the header
51+
- Filter displayed skills by view; "Install skill" button only visible in User view
52+
53+
**`src/workbench/skills_rules_panel/skill_card.rs`**
54+
- Add `"core"` badge with `blx-sr-card__badge--core` CSS class
55+
- Remove button suppressed for core skills (`is_core` flag)
56+
57+
**I18n strings added** (all 13 locale files):
58+
- `SrSkillsTabCore` — "Core" / locale equivalents
59+
- `SrSkillsTabUser` — "User" / locale equivalents
60+
- `SrSourceCore` — "core"
61+
62+
---
63+
64+
## Critical Files
65+
66+
| File | Change |
67+
|---|---|
68+
| `src-tauri/src/skills_rules/types.rs` | Add `Core` to `SkillSourceKind` |
69+
| `src-tauri/src/skills_rules/store.rs` | Embed + serve core skills, merge with index |
70+
| `src-tauri/src/skills_rules/install.rs` | Add `Core` arm to install match |
71+
| `src-tauri/src/agent/system_prompt.rs` | Reduce to ~240 lines; add core skill reference |
72+
| `src-tauri/src/agent/harness_skills/*.md` | 6 new embedded skill files |
73+
| `src/skills_rules_wire.rs` | Add `Core` to `SkillSourceKind` |
74+
| `src/workbench/skills_rules_panel/skills_tab.rs` | Core/User sub-tab strip + filtering |
75+
| `src/workbench/skills_rules_panel/skill_card.rs` | Core badge + no-remove guard |
76+
| `src/workbench/skills_rules_panel/install_dialog.rs` | `Core` arm in source kind matches |
77+
| `src/i18n/locales/*.rs` (all 13 locales) | 3 new I18n keys |
78+
79+
## Tasks
80+
81+
- [x] `create-skill-files` - Create 6 harness skill .md files in src-tauri/src/agent/harness_skills/
82+
- [x] `extend-source-kind` - Add Core variant to SkillSourceKind (backend + frontend wire)
83+
- [x] `update-store` - Embed + serve core skills, guard remove, enable/disable
84+
- [x] `slim-system-prompt` - Replace inline tool docs with compact list + core skill reference
85+
- [x] `i18n-keys` - Add SrSkillsTabCore, SrSkillsTabUser, SrSourceCore to all locales
86+
- [x] `skill-card-ui` - Core badge + remove button suppression
87+
- [x] `skills-tab-ui` - Core/User sub-tab strip with filtering
88+
- [x] `fix-match-exhaustive` - Add Core arms to install.rs and install_dialog.rs
89+
- [x] `update-tests` - Fix store tests to account for core skills always being present

0 commit comments

Comments
 (0)