Skip to content

fix(skills): canonicalize standalone skill sources#408

Merged
christso merged 3 commits into
mainfrom
fix/407-source-canonicalization
May 19, 2026
Merged

fix(skills): canonicalize standalone skill sources#408
christso merged 3 commits into
mainfrom
fix/407-source-canonicalization

Conversation

@christso
Copy link
Copy Markdown
Contributor

Closes #407

Summary

  • canonicalize repeated standalone GitHub skill adds to the smallest shared repo container
  • preserve a single plugin entry and merge the allowlist for same-repo skill URLs
  • keep promoted container paths coherent for skill discovery and sync, including nested skill trees

E2E

bun run build

# Red E2E
TMPDIR=$(mktemp -d /tmp/allagents-407-red-XXXXXX)
mkdir -p "$TMPDIR/.allagents"
cat > "$TMPDIR/.allagents/workspace.yaml" <<'YAML'\nplugins:\n  - source: https://github.com/NousResearch/hermes-agent/tree/main/skills/research/llm-wiki\n    skills:\n      - llm-wiki\nclients:\n  - claude\nrepositories: []\nversion: 2\nYAML\n(cd "$TMPDIR" && node dist/index.js skill add https://github.com/NousResearch/hermes-agent/tree/main/skills/research/blogwatcher)\n\n# Green E2E\nTMPDIR=$(mktemp -d /tmp/allagents-407-green-XXXXXX)\nmkdir -p "$TMPDIR/.allagents"\ncat > "$TMPDIR/.allagents/workspace.yaml" <<'YAML'\nplugins:\n  - source: https://github.com/NousResearch/hermes-agent/tree/main/skills/research/llm-wiki\n    skills:\n      - llm-wiki\nclients:\n  - claude\nrepositories: []\nversion: 2\nYAML\n(cd "$TMPDIR" && \\\n  node /home/entity/projects/EntityProcess/allagents.worktrees/fix-407-source-canonicalization/dist/index.js skill add https://github.com/NousResearch/hermes-agent/tree/main/skills/research/blogwatcher && \\\n  node /home/entity/projects/EntityProcess/allagents.worktrees/fix-407-source-canonicalization/dist/index.js skill add https://github.com/NousResearch/hermes-agent/tree/main/skills/productivity/nano-pdf)\n```\n\nVerified the final workspace source is promoted to `https://github.com/NousResearch/hermes-agent/tree/main/skills` with a single plugin entry and the expected synced skills.

christso added 3 commits May 19, 2026 13:03
…calization

# Conflicts:
#	src/cli/commands/plugin-skills.ts
#	src/core/workspace-modify.ts
#	tests/unit/core/skills.test.ts
@cloudflare-workers-and-pages
Copy link
Copy Markdown

Deploying allagents with  Cloudflare Pages  Cloudflare Pages

Latest commit: bb9decd
Status:⚡️  Build in progress...

View logs

@christso christso merged commit 34df5dd into main May 19, 2026
1 check was pending
@christso christso deleted the fix/407-source-canonicalization branch May 19, 2026 22:34
christso added a commit that referenced this pull request May 30, 2026
…415)

* feat(status): distinguish skills vs plugins, hoist `status` to root

`workspace status` and `plugin list` labeled every installed entry as a
"plugin" even when the source was a standalone skill (single-skill repo or
deep URL into a `skills/<name>` subpath). That made the output misleading
once support for standalone-skill sources was added in #406/#408/#413.

This change classifies each resolved source as either `skill` (root
SKILL.md, no `skills/` subdir) or `plugin` (everything else) and surfaces
the kind in both human and JSON output:

  workspace status (before):
    ✓ NousResearch/hermes-agent/skills/research/llm-wiki (cached)

  workspace status (after):
    ✓ NousResearch/hermes-agent/skills/research/llm-wiki (skill, cached)

`plugin list` gains a `Type:` line per entry and a kind-broken-down total.

Also hoists `status` to the root surface so `allagents status` works
without `workspace`, mirroring how `update` is already exposed.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* feat(tui): show skill vs plugin kind in TUI status and plugins picker

Mirrors the CLI labeling added in the previous commit so the interactive
wizard surfaces the same skill/plugin distinction users see in
`allagents status` and `allagents plugin list`.

  status panel (before):
    ✓ <source> (github)

  status panel (after):
    ✓ <source> (skill, github)

  plugins picker hint (before):
    <source>      github · project

  plugins picker hint (after):
    <source>      skill · github · project

Verified end-to-end by driving the wizard through agent-tui against a
temp workspace containing a deep-URL skill source.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.7 (1M context) <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.

Design source canonicalization for multi-skill standalone repo adds

1 participant