Skip to content

Skills: install + active-set + admin manager (increment 2) - #125

Merged
WebTigers merged 1 commit into
mainfrom
feat/skill-install-manage
Aug 15, 2026
Merged

Skills: install + active-set + admin manager (increment 2)#125
WebTigers merged 1 commit into
mainfrom
feat/skill-install-manage

Conversation

@WebTigers

Copy link
Copy Markdown
Owner

The install / manage / turn on-off / remove half of TigerSkills, on top of the #124 browse engine.

Engine — Tiger_Agent_Skills

  • Install a chosen skill's files (SKILL.md + bundled resources, nested dirs) from GitHub into the app-owned store application/skills/<key>/ (survives composer update).
  • Discover installed skills; active-set in a config value (tiger.agent.skills.active — no schema, live-override tier) to turn on/off; remove (files + active-set). Files are source-of-truth; "what's active" is the only state. Install ≠ activate ≠ remove.

Service — Agent_Service_Skills (admin+)

search (via Tiger_Skill_Index, flags already-installed, returns provenance) · install (from a browse entry or a pasted URL) · installed · toggle · remove · source (view the SKILL.md before installing — read-before-run).

Admin screen — /agent/skills

Search the catalog → Install / View source; paste-a-URL install; an Installed list with an on/off switch, view source, and remove. Registered in the admin nav (Agent Skills).

Proven + tested

  • Live: installed the real anthropics/skills pdf skill end-to-end — fetched all files (SKILL.md 8KB, forms.md, reference.md, nested scripts/, LICENSE), discovered + removed it.
  • Tests (13 green): Tiger_Agent_Skills discover / active-set round-trip / remove, and the service (guest denied on all actions, list/toggle/remove round-trip, unknown-key rejects). CAPABILITIES.md regenerated.

Next

The loader (increment 3): the active skills' menu in the system prompt + a load_skill read-tool, wiring active skills into the agent turn. This PR is install + manage.

🤖 Generated with Claude Code

The installed/manage half of TigerSkills (TIGERSKILLS.md §3/§6), on top of the #124 browse engine.

- Tiger_Agent_Skills — install a chosen skill's files (SKILL.md + bundled resources, nested dirs) from
  GitHub into the app-owned store `application/skills/<key>/`; discover installed; the config active-set
  (`tiger.agent.skills.active`, no schema) to turn on/off; remove (files + active-set). Files are the
  source of truth; "what's active" is the only state.
- Agent_Service_Skills — /api: search (via Tiger_Skill_Index, flags installed + returns provenance),
  install (from a browse entry OR a pasted URL), installed, toggle, remove, source (view SKILL.md before
  installing — read-before-run). Admin+ ACL.
- Agent_SkillsController + views/scripts/skills/index.phtml — the "/agent/skills" manager: search the
  catalog, install, paste-a-URL install, and an installed list (on/off switch, view source, remove).
  Registered in the admin nav (Agent Skills).

Proven live: installed the real `anthropics/skills` pdf skill end-to-end (all files incl. nested
scripts/), discovered + removed. Tests: Tiger_Agent_Skills (discover/active-set/remove) + the service
(ACL deny, list/toggle/remove, unknown-key rejects). 13 skill tests green. CAPABILITIES.md regenerated.

Next: the loader (menu-in-prompt + load_skill read-tool) wiring active skills into the agent turn.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@WebTigers
WebTigers merged commit 5d01c85 into main Aug 15, 2026
18 of 19 checks passed
@WebTigers
WebTigers deleted the feat/skill-install-manage branch August 15, 2026 16:01
WebTigers added a commit that referenced this pull request Aug 17, 2026
…ake class) (#130)

Tiger_Uuid::v7() filled the sub-ms bits with pure randomness, so two IDs minted
in the same millisecond had no deterministic order. Any v7-keyed append log that
sorts by id (or falls back to id as a created_at tiebreak) could therefore
re-order two rows written in the same tick — the AgentServiceTest transcript
flake (expected 'user', got 'assistant'), which has recurred across #68/#125/#129.

Fix at the root (RFC 9562 §6.2 "monotonic random", method 2): rand_a becomes a
12-bit counter that increments for each same-ms mint (seeded randomly per ms so it
doesn't leak a mint count; rolls into the next ms if it exhausts 4096). rand_b stays
fully random, so uniqueness and index locality are unchanged, and the ID is still a
valid v7 whose embedded timestamp timeOf() reads. `ORDER BY id` is now a stable
insertion order for same-process appends — the case that matters (a conversation's
turns are appended within one request).

- UuidTest: assert STRICT full-string monotonicity over 5000 tight-loop mints
  (forces same-ms collisions) — the direct regression guard, replacing the old
  "full-string order NOT guaranteed within a ms" assertion.
- Verified: the previously ~1/20-flaky transcript test now passes 40/40; full unit
  (821) + integration (1094) green; v7 still unique over 20k and version/variant-valid.

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
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