Skip to content

Commit f159f9e

Browse files
authored
Merge pull request #126 from runkids/feat/agents
v0.19.0
2 parents 7a010a9 + 953db06 commit f159f9e

339 files changed

Lines changed: 29695 additions & 5590 deletions

File tree

Some content is hidden

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

.mdproof/lessons-learned.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,13 @@
7272
- **Fix**: Use `>/dev/null 2>&1` (redirect both stdout AND stderr) for cleanup commands in steps that need pure JSON output
7373
- **Runbooks affected**: extras_flatten_runbook.md
7474

75+
### [gotcha] chmod 0444 does not block writes when running as root
76+
77+
- **Context**: `TestLog_SyncPartialStatus` used `os.Chmod(dir, 0444)` to make a target directory read-only, expecting sync to fail on that target and log `"status":"partial"`
78+
- **Discovery**: The devcontainer runs as root. Root ignores POSIX permission bits — `chmod 0444` has no effect. The "broken" target synced successfully, so the oplog recorded `"status":"ok"` instead of `"partial"`
79+
- **Fix**: Use a **dangling symlink** instead: `os.Symlink("/nonexistent/path", targetPath)`. This makes `os.Stat` return "not exist" (passes config validation) but `os.MkdirAll` fails because the symlink entry blocks directory creation. Works regardless of UID
80+
- **Runbooks affected**: `tests/integration/log_test.go` (`TestLog_SyncPartialStatus`)
81+
7582
### [gotcha] Full-directory mdproof runs cause inter-runbook state leakage
7683

7784
- **Context**: Running `mdproof --report json /path/to/tests/` executes all runbooks sequentially in the same environment (same ssenv). Earlier runbooks install skills, modify config, fill trash — this state persists for later runbooks

CHANGELOG.md

Lines changed: 126 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,131 @@
11
# Changelog
22

3+
## [0.19.0] - 2026-04-11
4+
5+
### New Features
6+
7+
#### Agent Management
8+
9+
Agents are now a first-class resource type alongside skills. You can install, sync, audit, and manage agent files (`.md`) across agent-capable targets (Claude, Cursor, OpenCode, Augment) with the same workflow as skills.
10+
11+
- **Agents source directory** — agents live in `~/.config/skillshare/agents/` (or `.skillshare/agents/` in project mode). `skillshare init` creates the directory automatically, and `agents_source` is a new config field that can be customized
12+
```bash
13+
skillshare init # creates skills/ and agents/
14+
skillshare init -p # same for project mode
15+
```
16+
17+
- **Positional kind filter** — most commands accept an `agents` keyword to scope the operation to agents only. Without it, commands operate on skills (existing behavior is unchanged)
18+
```bash
19+
skillshare sync agents # sync agents only
20+
skillshare sync --all # sync skills + agents + extras
21+
skillshare list agents # list installed agents
22+
skillshare check agents # detect drift on agent repos
23+
skillshare update agents # update agents
24+
skillshare audit agents # scan agents for security issues
25+
skillshare uninstall agents # uninstall by kind
26+
skillshare enable foo --kind agent
27+
skillshare disable foo --kind agent
28+
```
29+
30+
- **Install agents from repos**`install` auto-detects agents in three layouts:
31+
- `agents/` convention subdirectory
32+
- mixed-kind repos with both `SKILL.md` and `agents/`
33+
- pure-agent repos (root `.md` files, no `SKILL.md`)
34+
```bash
35+
skillshare install github.com/team/agents # auto-detect
36+
skillshare install github.com/team/repo --kind agent # force agent mode
37+
skillshare install github.com/team/repo --agent cr # specific agents
38+
```
39+
Conventional files (`README.md`, `LICENSE.md`, `CHANGELOG.md`) are automatically excluded
40+
41+
- **Tracked agent repos** — agents can be installed with `--track` for git-pull updates, including nested discovery. `check`, `update`, `doctor`, and `uninstall` all recognise tracked agent repos, and the `--group` / `-G` flag filters by repo group
42+
43+
- **Agent sync modes** — merge (default, per-file symlink), symlink (whole directory), and copy are all supported. `skillshare sync agents` skips targets that don't declare an `agents:` path and prints a warning
44+
45+
- **`.agentignore` support** — agents can be excluded via `.agentignore` and `.agentignore.local` using the same gitignore-style patterns as `.skillignore`. The Web UI Config page now has a dedicated `.agentignore` tab
46+
47+
- **Agent audit**`skillshare audit` scans agent files individually against the full audit rule set, with Skills/Agents tab switching in both the TUI and Web UI. Audit results carry a `kind` field so tooling can filter by resource type
48+
49+
- **Agent backup and restore** — sync automatically backs up agents before applying changes, in both global and project mode. The backup TUI and trash TUI tag agents with an `[A]` badge and route restores to the correct source directory
50+
51+
- **Project-mode agent support** — every agent command works in project mode with `-p`. Agents are reconciled alongside skills into `.skillshare/`
52+
53+
- **JSON output for agents**`install --json` and `update --json` now emit agent-aware payloads and apply the same audit block-threshold gate as skills. Useful for scripted agent workflows
54+
```bash
55+
skillshare update agents --json --audit-threshold high
56+
```
57+
58+
- **Kind badges** — TUI and Web UI surface `[S]` / `[A]` badges throughout (list, diff, audit, trash, backup, detail, update, targets pages) so you can tell at a glance what kind of resource you're looking at
59+
60+
#### Unified Web UI Resources
61+
62+
- **`/resources` route** — the old `/skills` page is now `/resources`, with Skills and Agents tabs. Tab state persists to localStorage, and the underline tab style follows the active theme (playful mode gets wobble borders)
63+
64+
- **Targets page redesign** — equal Skills and Agents sections, with a modal picker for adding targets. Filter Studio links include a `?kind=` param so you jump directly to the right context
65+
66+
- **Update page redesign** — a new three-phase flow (selecting → updating → done) with skills/agents tabs, group-based sorting, and status cards. EventSource streaming is properly cleaned up on page change
67+
68+
- **Filter Studio agent support** — agent filters can be edited via `PATCH /api/targets/:name` (`agent_include`, `agent_exclude`, `agent_mode`) and via the CLI (`targets edit --add-agent-include`, `--remove-agent-include`, `--agent-mode`, and so on). The UI Filter Studio is a single-context view driven by `?kind=skill|agent`
69+
70+
- **Audit cache** — audit results are now cached with React Query and invalidated on mutation. The audit card icon colour follows the max severity, and the count no longer mixes agent totals with finding counts
71+
72+
- **Collect page scope switcher** — a new segmented control lets you collect skills or agents from targets
73+
74+
#### Theme System
75+
76+
- **`internal/theme` package** — unified light/dark terminal palette with WCAG-AA-compliant light colours and softened dark primary. Resolution order: `NO_COLOR` > `SKILLSHARE_THEME` > OSC 11 terminal probe > dark fallback. All TUIs, list output, audit output, and plain CLI output now route through the theme
77+
```bash
78+
SKILLSHARE_THEME=light skillshare list
79+
SKILLSHARE_THEME=dark skillshare audit
80+
```
81+
`skillshare doctor` includes a theme check to help debug unreadable colours
82+
83+
#### Install & TUI Polish
84+
85+
- **Explicit `SKILL.md` URLs resolve to one skill** — pasting a direct `blob/.../SKILL.md` URL now installs only that skill, bypassing the orchestrator pack prompt. Previously, the URL would trigger the full multi-select picker even though the intent was clear
86+
```bash
87+
skillshare install https://github.com/team/repo/blob/main/frontend/tdd/SKILL.md
88+
```
89+
Refs: #124
90+
91+
- **Radio checklist follows the cursor** — the single-select TUI (used for orchestrator selection, branch selection, and similar flows) now auto-selects the focused row. No more confusing empty-selection state — pressing Enter always confirms the item your cursor is on
92+
93+
- **Diff TUI** — single-line items with group headers instead of the old verbose-per-item layout. Agent diffs are shown with an `[A]` badge
94+
95+
- **List TUI** — entries are now grouped by tracked repo root and local top directory, with a new `k:kind` filter tag for quick agent/skill filtering inside the fuzzy filter
96+
97+
#### Centralized Metadata Store
98+
99+
- **`.metadata.json` replaces sidecar files and `registry.yaml`** — installation metadata is now stored in a single atomic file per source (`~/.config/skillshare/skills/.metadata.json`). This fixes long-standing issues with grouped skill collisions (e.g. two skills both named `dev` in different folders) where the old basename-keyed registry would mix them up
100+
- **Automatic migration** — the first load after upgrade reads any existing `registry.yaml` and per-skill `.skillshare-meta.json` sidecars, merges them into `.metadata.json`, and cleans up the old files. Idempotent — safe to run repeatedly
101+
- **Full-path keys** — lookups use the full source-relative path, so nested skills never collide
102+
- No user action required; existing installs continue to work
103+
104+
### Bug Fixes
105+
106+
- **Sync extras no longer flood when `agents` target overlaps** — targets that declare an extras entry called `agents` are now skipped automatically when agent sync is active, preventing duplicate file writes
107+
- **Nested agent discovery**`check agents` now uses the recursive discovery engine, so agents in sub-folders (e.g. `demo/code-reviewer.md`) are detected correctly
108+
- **Doctor drift count excludes disabled agents** — agents disabled via `.agentignore` no longer count toward the drift total reported by `skillshare doctor`
109+
- **Audit card mixes counts** — the Web UI audit card no longer mixes agent counts with finding counts, and excludes `_cross-skill` from the card total (shown separately)
110+
- **Audit scans disabled agents too** — the audit scan walks every agent file regardless of `.agentignore` state, so hidden agents still get checked
111+
- **List TUI tab bar clipping** — the tab bar no longer gets cut off in the split-detail layout on narrow terminals
112+
- **Sync extras indent** — removed the stray space between the checkmark and the path in `sync` extras output; summary headers are now consistent across skills, agents, and extras
113+
- **UI skill detail agent mode** — the detail page hides the Files section for agents (single-file resources), remembers the selected tab via localStorage, and shows the correct folder-view labels
114+
- **Sync page layout** — the stats row and ignored-skills grouping are now easier to scan
115+
- **Button warning variant** — the shared `Button` component now supports a `warning` variant that was already referenced by several pages
116+
- **Check progress bar pop-in** — removed the loading progress bar that caused layout shift on the Skills page
117+
- **Tracked repo check status** — the propagated check status is now applied to every item within the repo, not just the root
118+
- **Target name colouring in doctor** — only the status word is coloured in `doctor` target output, not the full line
119+
120+
### Breaking Changes
121+
122+
- **`audit --all` flag removed** — use the positional kind filter instead:
123+
```bash
124+
skillshare audit # skills (default, unchanged)
125+
skillshare audit agents # agents only
126+
```
127+
The old `--all` flag is gone because audit now runs per kind and the Web UI has dedicated tabs
128+
3129
## [0.18.9] - 2026-04-07
4130

5131
### New Features

README.md

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
</p>
2323

2424
<p align="center">
25-
<strong>One source of truth for AI CLI skills, rules, commands & more. Sync everywhere with one command — from personal to organization-wide.</strong><br>
25+
<strong>One source of truth for AI CLI skills, agents, rules, commands & more. Sync everywhere with one command — from personal to organization-wide.</strong><br>
2626
Codex, Claude Code, OpenClaw, OpenCode & 50+ more.
2727
</p>
2828

@@ -40,7 +40,7 @@
4040
</p>
4141

4242
> [!NOTE]
43-
> **Latest**: [v0.18.3](https://github.com/runkids/skillshare/releases/tag/v0.18.3)enable/disable skills, skills sub-key config, upgrade auto-sudo. [All releases →](https://github.com/runkids/skillshare/releases)
43+
> **Latest**: [v0.19.0](https://github.com/runkids/skillshare/releases/tag/v0.19.0)agent management, filter studio, unified resources UI. [All releases →](https://github.com/runkids/skillshare/releases)
4444
4545
## Why skillshare
4646

@@ -50,6 +50,7 @@ You edit in one, forget to copy to another, and lose track of what's where.
5050
skillshare fixes this:
5151

5252
- **One source, every agent** — sync to Claude, Cursor, Codex & 50+ more with `skillshare sync`
53+
- **Agent management** — sync custom agents alongside skills to agent-capable targets
5354
- **More than skills** — manage rules, commands, prompts & any file-based resource with [extras](https://skillshare.runkids.cc/docs/reference/targets/configuration#extras)
5455
- **Install from anywhere** — GitHub, GitLab, Bitbucket, Azure DevOps, or any self-hosted Git
5556
- **Built-in security** — audit skills for prompt injection and data exfiltration before use
@@ -68,6 +69,7 @@ skillshare fixes this:
6869
┌─────────────────────────────────────────────────────────────┐
6970
│ Source Directory │
7071
│ ~/.config/skillshare/skills/ ← skills (SKILL.md) │
72+
│ ~/.config/skillshare/agents/ ← agents │
7173
│ ~/.config/skillshare/extras/ ← rules, commands, etc. │
7274
└─────────────────────────────────────────────────────────────┘
7375
│ sync
@@ -78,10 +80,10 @@ skillshare fixes this:
7880
└───────────┘ └───────────┘ └───────────┘
7981
```
8082

81-
| Platform | Skills Source | Extras Source | Link Type |
82-
|----------|---------------|---------------|-----------|
83-
| macOS/Linux | `~/.config/skillshare/skills/` | `~/.config/skillshare/extras/` | Symlinks |
84-
| Windows | `%AppData%\skillshare\skills\` | `%AppData%\skillshare\extras\` | NTFS Junctions (no admin required) |
83+
| Platform | Skills Source | Agents Source | Extras Source | Link Type |
84+
|----------|---------------|---------------|---------------|-----------|
85+
| macOS/Linux | `~/.config/skillshare/skills/` | `~/.config/skillshare/agents/` | `~/.config/skillshare/extras/` | Symlinks |
86+
| Windows | `%AppData%\skillshare\skills\` | `%AppData%\skillshare\agents\` | `%AppData%\skillshare\extras\` | NTFS Junctions (no admin required) |
8587

8688
| | Imperative (install-per-command) | Declarative (skillshare) |
8789
|---|---|---|
@@ -180,6 +182,13 @@ skillshare audit
180182
skillshare init -p && skillshare sync
181183
```
182184

185+
**Agents** —sync custom agents to agent-capable targets
186+
187+
```bash
188+
skillshare sync agents # sync agents only
189+
skillshare sync --all # sync skills + agents + extras together
190+
```
191+
183192
**Extras** —manage rules, commands, prompts & more
184193

185194
```bash
@@ -242,6 +251,8 @@ Thanks to everyone who helped shape skillshare.
242251
<a href="https://github.com/Curtion"><img src="https://github.com/Curtion.png" width="50" style="border-radius:50%" alt="Curtion"></a>
243252
<a href="https://github.com/amdoi7"><img src="https://github.com/amdoi7.png" width="50" style="border-radius:50%" alt="amdoi7"></a>
244253
<a href="https://github.com/jessica-engel"><img src="https://github.com/jessica-engel.png" width="50" style="border-radius:50%" alt="jessica-engel"></a>
254+
<a href="https://github.com/AlimuratYusup"><img src="https://github.com/AlimuratYusup.png" width="50" style="border-radius:50%" alt="AlimuratYusup"></a>
255+
<a href="https://github.com/thor-shuang"><img src="https://github.com/thor-shuang.png" width="50" style="border-radius:50%" alt="thor-shuang"></a>
245256

246257
---
247258

0 commit comments

Comments
 (0)