Skip to content

Replace Specialist Agent with full Skill editing in the integration editor - #252

Merged
mattprintz merged 8 commits into
devfrom
skill-integration-editor
Jul 28, 2026
Merged

Replace Specialist Agent with full Skill editing in the integration editor#252
mattprintz merged 8 commits into
devfrom
skill-integration-editor

Conversation

@mattprintz

Copy link
Copy Markdown
Collaborator

Summary

Removes the "Specialist Agent" / AdhocAPI integration from the integration
editor and replaces it with full management of Agent Skills. Skills are now a
mutable integration provider: you can create, edit, and delete local skills,
add remote (URL-based) skills, edit their progressively-disclosed resources,
and import a skill from a SKILL.md file or a .zip. Skills bundled within a
context remain read-only (view mode).

Backend

  • SkillIntegrationProvider is now a MutableBaseIntegrationProvider:
    add/update/remove_integration (local + remote) and
    add/update/remove_resource for local skills, with SKILL.md
    (frontmatter + body) serialization and file writes under reference/script/
    asset (singular and plural) and examples.
  • Deterministic integration uuids (agent-skill:<corpus>:<slug>); context
    skills namespaced under context-<slug> so the UI renders them read-only.
  • Local file-resource discovery scans on-disk resource dirs; body-reference
    extraction is used only for remote skills and normalizes ./ prefixes
    (fixes phantom/duplicate resources).
  • add_integration(preview=True, ...) builds an unsaved skill from a URL or
    raw SKILL.md content so the editor can prefill before saving.
  • Write-location resolution (first existing-writable, else first creatable)
    across the skill search roots; remote skills persisted as skills.json
    entries. Path-containment guards on all resource writes.
  • New DELETE /beaker/integrations/{session}/{id}remove_integration.
  • System-preamble refresh is now lazy: an integration mutation marks it dirty
    and it rebuilds at the next agent turn — no session restart.

Frontend

  • New SkillIntegrationEditor.vue (source type/URL, name, description, metadata
    incl. allowed-tools chips, instructions body) and editable
    SkillResourcePanel.vue (add/edit/delete file & example resources; shows
    pending-import resources).
  • agent-skill uses the MCP-style viewer/editor split; Specialist Agent removed
    from the New-Integration menu and dispatch.
  • Import: skillArchive.ts unzips in the browser (fflate), locates
    SKILL.md (root or one dir deep, fails on >1), enumerates valid resource
    files, skips non-text with a surfaced count. Upload button + panel-wide drop
    target.
  • Delete button; Save is always present for editable skills (disabled until
    dirty). Left-panel Edit/View label now correct for skills.
  • Layout fix: header and action bar stay pinned; only the content between them
    scrolls (also fixes the same issue for MCP).

Docs & tests

  • Updated concept_integrations.md, integration_providers.md,
    integrations_api.md (incl. correcting pre-existing remove_resource /
    display_name / package-path inaccuracies).
  • Backend tests/integrations/skills/test_skill_mutation.py (+ extraction
    tests); frontend src/util/__tests__/skillArchive.spec.ts.

Behavior notes

  • Remote skills: source type + URL are the only editable fields; fetched content
    is read-only. Source type is fixed after creation (delete + recreate to
    change). Binary resource content is not yet supported (text-only).

Follow-ups (out of scope)

  • Remove the adhoc backend provider + adhoc_api dependency (UI-only removal
    here). Existing adhoc integrations now render a blank editor — deprecated and
    believed unused.
  • Hard backend read-only guard for context-bundled integrations (tracked
    separately); currently enforced frontend-only, matching MCP.
  • Binary resource support (base64 content_encoding marker); remote name/slug
    override (needs skills.json object-entry parsing).

Testing

  • Backend: hatch run pytest tests/ — full suite green (skills suite: 99).
  • Frontend: vitest run green; vue-tsc --build 0 errors.

- Remove AdHoc/Specialist Agent from creation list
- Add Skills in its place
- Ability to upload skils as a zip or .md file
  - Zip unpacking handled in browser with results populating local
    interface until save
- Backend changes for saving/updating/deleting skills
Resolves three conflicts in the skill provider, all where dev's
remote-example discovery met this branch's plural-directory support:

- extract_file_references: keep the "./" normalization and the
  constant-driven directory lists, adopt dev's behavior of emitting
  examples/ paths for the caller to route, and generalize the
  bare-directory drop to every recognized example dir spelling.
- _build_skill_integration: keep the _discover_file_resources /
  _discover_examples split, and do dev's single-pass example/file
  routing in the caller so _discover_examples still receives its
  `referenced` paths.
- _discover_examples: keep the scan over every example dir spelling,
  plus dev's `seen` bookkeeping and referenced-path pass.

dev's EXAMPLES_DIR constant is replaced by EXAMPLE_DIR_PREFIXES and a
strip_example_dir() helper so the singular "example/" spelling routes
and strips the same as "examples/".
@mattprintz
mattprintz merged commit d7d0f30 into dev Jul 28, 2026
4 checks passed
@mattprintz
mattprintz deleted the skill-integration-editor branch July 28, 2026 15:41
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