Skip to content

chore: consolidate skills into one#3672

Merged
dantasse merged 1 commit into
mainfrom
dantasse/consolidate-skill
Jul 15, 2026
Merged

chore: consolidate skills into one#3672
dantasse merged 1 commit into
mainfrom
dantasse/consolidate-skill

Conversation

@dantasse

@dantasse dantasse commented Jul 15, 2026

Copy link
Copy Markdown
Contributor

Consolidating skills so we have only one lancedb skill, making it easier to install and work with, vs. installing and using different skills for "lancedb-column-metadata", "lancedb-branch-ops", etc.

Also deleted lancedb-connect, because the new monoskill uses the python/TS APIs so it doesn't need extra handholding to connect to the REST API.

does it work?

Test 1: do some column metadata operations with 1. no skills, 2. our previous baseline lancedb skill, 3. the baseline lancedb skill with the lancedb-column-metadata skill folded in:

┌───────────────────────────┬──────────────────────┬────────────────────┬───────────────────────┐
│           eval            │       no-skill       │ lancedb (original) │ lancedb2-incl-columns │
├───────────────────────────┼──────────────────────┼────────────────────┼───────────────────────┤
│ 2-add-all-metadata-types  │ 2.5/5 · 116s · $0.44 │ 0/5 · 154s · $0.60 │ 5/5 · 58s · $0.26     │
├───────────────────────────┼──────────────────────┼────────────────────┼───────────────────────┤
│ 3-delete-one-metadata-key │ 4/4 · 67s · $0.23    │ 4/4 · 100s · $0.45 │ 4/4 · 45s · $0.20     │
├───────────────────────────┼──────────────────────┼────────────────────┼───────────────────────┤
│ TOTAL (per rep avg)       │ 6.5/9 · 183s · $0.66 │ 4/9 · 254s · $1.05 │ 9/9 · 103s · $0.46    │
└───────────────────────────┴──────────────────────┴────────────────────┴───────────────────────┘

without column-metadata-specific content, it failed because it wrote keys like description instead of lancedb:description. That's pretty undiscoverable without the skill.

Test 2: do some simple branch operations with 1. no skills, 2. our previous baseline lancedb skill, 3. the combined skill (in this PR):

┌───────────────────────────┬────────────────────┬────────────────────┬────────────────────────────────┐
│           eval            │      no-skill      │ lancedb (original) │ lancedb3-incl-columns-branches │
├───────────────────────────┼────────────────────┼────────────────────┼────────────────────────────────┤
│ 5-create-branch           │ 2/2 · 64s · $0.30  │ 2/2 · 57s · $0.34  │ 2/2 · 38s · $0.22              │
├───────────────────────────┼────────────────────┼────────────────────┼────────────────────────────────┤
│ 6-delete-branch           │ 2/2 · 38s · $0.21  │ 2/2 · 44s · $0.27  │ 2/2 · 40s · $0.22              │
├───────────────────────────┼────────────────────┼────────────────────┼────────────────────────────────┤
│ 7-switch-branch-and-write │ 1/2 · 96s · $0.49  │ 1/2 · 106s · $0.58 │ 2/2 · 66s · $0.40              │
├───────────────────────────┼────────────────────┼────────────────────┼────────────────────────────────┤
│ TOTAL (per rep avg)       │ 5/6 · 199s · $1.00 │ 5/6 · 207s · $1.20 │ 6/6 · 143s · $0.83             │
└───────────────────────────┴────────────────────┴────────────────────┴────────────────────────────────┘

Test 3: run everything, with the lancedb (original) skill, lancedb(original) + all the separate skills, and lancedb3-incl-columns-branches

┌────────────────────────────────┬──────────────────────┬────────────────────────────────┬─────────────────────────────────────────────────────────────────┐
│              eval              │  lancedb (original)  │ lancedb3-incl-columns-branches │ all-separate (lancedb + connect + column-metadata + branch-ops) │
├────────────────────────────────┼──────────────────────┼────────────────────────────────┼─────────────────────────────────────────────────────────────────┤
│ 1-pick-column-for-image-search │ 2/2 · 141s · $0.67   │ 2/2 · 128s · $0.43             │ 1/2 · 257s · $0.81                                              │
├────────────────────────────────┼──────────────────────┼────────────────────────────────┼─────────────────────────────────────────────────────────────────┤
│ 2-add-all-metadata-types       │ 5/5 · 93s · $0.52    │ 5/5 · 54s · $0.30              │ 5/5 · 40s · $0.24                                               │
├────────────────────────────────┼──────────────────────┼────────────────────────────────┼─────────────────────────────────────────────────────────────────┤
│ 3-delete-one-metadata-key      │ 4/4 · 84s · $0.44    │ 4/4 · 36s · $0.24              │ 4/4 · 28s · $0.20                                               │
├────────────────────────────────┼──────────────────────┼────────────────────────────────┼─────────────────────────────────────────────────────────────────┤
│ 4-build-index                  │ 3/3 · 275s · $0.52   │ 3/3 · 84s · $0.39              │ 3/3 · 68s · $0.50                                               │
├────────────────────────────────┼──────────────────────┼────────────────────────────────┼─────────────────────────────────────────────────────────────────┤
│ 5-create-branch                │ 2/2 · 39s · $0.31    │ 2/2 · 41s · $0.20              │ 2/2 · 15s · $0.17                                               │
├────────────────────────────────┼──────────────────────┼────────────────────────────────┼─────────────────────────────────────────────────────────────────┤
│ 6-delete-branch                │ 2/2 · 59s · $0.25    │ 2/2 · 69s · $0.29              │ 2/2 · 26s · $0.17                                               │
├────────────────────────────────┼──────────────────────┼────────────────────────────────┼─────────────────────────────────────────────────────────────────┤
│ 7-switch-branch-and-write      │ 1/2 · 84s · $0.46    │ 2/2 · 62s · $0.40              │ 2/2 · 27s · $0.23                                               │
├────────────────────────────────┼──────────────────────┼────────────────────────────────┼─────────────────────────────────────────────────────────────────┤
│ TOTAL                          │ 19/20 · 774s · $3.17 │ 20/20 · 474s · $2.24           │ 19/20 · 462s · $2.32                                            │
└────────────────────────────────┴──────────────────────┴────────────────────────────────┴─────────────────────────────────────────────────────────────────┘

("lancedb3-incl-columns-branches" is the combined skill in this PR, all-separate is using the four separate skills.)

For overall performance, it helps to have the specialized skills for metadata and branching; doesn't really matter whether they're separate skills or all together. Also doesn't matter much whether it's REST or Python. So let's merge these skills to make it easier for users.

@claude claude Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Claude Code Review

This repository is configured for manual code reviews. Comment @claude review for a one-time review, or @claude review always to subscribe this PR to a review on every future push.

Tip: disable this comment in your organization's Code Review settings.

@dantasse
dantasse requested a review from prrao87 July 15, 2026 19:10
@github-actions github-actions Bot added the chore Small non-consequential change. Hidden from changelogs. label Jul 15, 2026

@prrao87 prrao87 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Some concerns with this design, listed below 😅

- TypeScript API quick reference: `references/typescript/api_reference.md`
- TypeScript performance guidance: `references/typescript/performance.md`
4. Start with `patterns.md` for the selected SDK. Read `api_reference.md` when choosing method names or return collectors. Read `performance.md` when the task involves ingestion, indexing, filtering, query tuning, diagnostics, or large datasets.
- Column metadata authoring (both SDKs): `references/column_metadata.md`

@prrao87 prrao87 Jul 15, 2026

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

TBH I'm questioning whether we should have everything in a single skill. Having multiple sub-SKILL.md files and a directory for every skill, with a master SKILL.md at the top level would be the right structure for agents, because with the YAML frontmatter on top, it's very token-efficient for an agent to quickly parse through the description, and decide whether or not it wants to go through that skill.

My concern with this design is that all relevant context is buried deep inside these bullet points, and if the model gets "lost in the middle" with context (common in smaller, cheaper models), it can potentially fail to recognize that the relevant markdown file even exists. In this design, only one file has YAML frontmatter, so the agent's model will have to be really good at parsing these finer points as we add more and more skills in the future. It's best to reduce the surface area of failure, and this one seems to increase it.

@prrao87

prrao87 commented Jul 15, 2026

Copy link
Copy Markdown
Contributor

Also deleted lancedb-connect, because the new monoskill uses the python/TS APIs so it doesn't need extra handholding to connect to the REST API.

@dantasse would it make sense to add a domain-specific skill later on called connect-rest-api that explains to the agent how to use the REST API only? That would make sense once we test that out more on actual tasks, so for a future PR.

@prrao87 prrao87 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

OK, per more discussion, this structure makes sense!

Since column metadata and branch ops are sub-domains of "using LanceDB" — the agent will nearly always enter through the parent skill anyway. Anthropic's documented pattern is a router SKILL.md plus per-domain reference files. From the official best-practices doc: for Skills with multiple domains, organize content by domain to avoid loading irrelevant context — when a user asks about sales metrics, Claude only needs to read sales-related schemas, keeping token usage low and context focused. The bundled skill-creator skill I have locally gives the same advice: "When a skill supports multiple domains/frameworks, organize by variant" with a SKILL.md doing "workflow + selection" and one reference file per variant (skill-creator SKILL.md, lines 100–109).

Guidelines that shape this:

  • Keep your main SKILL.md under 500 lines; move detailed reference material to separate files. Agent Skills
  • Keep references one level deep from SKILL.md: Claude may partially read files (e.g., head -100) when they're referenced from other referenced files, resulting in incomplete information. So link branch-ops.md directly from SKILL.md, not through an intermediate index. Claude Platform Docs
    For reference files longer than 100 lines, include a table of contents at the top.

@dantasse
dantasse merged commit 00c4a7b into main Jul 15, 2026
9 checks passed
@dantasse
dantasse deleted the dantasse/consolidate-skill branch July 15, 2026 20:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

chore Small non-consequential change. Hidden from changelogs.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants