Skip to content

refactor(skills): retire malloy-analyze and slim malloy-modeling - #1093

Closed
jswir wants to merge 4 commits into
mainfrom
skill-consolidation
Closed

jswir wants to merge 4 commits into
mainfrom
skill-consolidation

Conversation

@jswir

@jswir jswir commented Aug 29, 2026 •

Copy link
Copy Markdown
Collaborator

Stacked on #1088 (manifests/publisher-local.json). Do not merge this before 1088; the tree-coverage and symlink tests fail until the manifest matches this tree.

Summary

  • Retire malloy-analyze. Its exploration loop (profile, hypothesize, triangulate) now lives in malloy-analysis as When there is no specific question. Hosts auto-invoked on malloy-analyze's description (analyze this data, what's interesting, what's driving X); those triggers moved with it, so deleting the skill is what makes the routing change take effect.
  • Split setup out of malloy-getting-started into malloy-publisher-setup (server, MCP client, diagnosis table, tools table, edit-and-run loop). Getting-started keeps discovery and a first query. The malloy index is generated from frontmatter (packages/skills/scripts/build-index.ts) so a new skill cannot ship unlisted.
  • Slim malloy-modeling to the shared 8-step workflow (217 → 121 lines). Duplicated syntax (reminders, SQL-to-Malloy, critical rules, anti-patterns, reserved words) is a pointer to the gotcha skills. Publisher tool names are gone; the host's setup skill names those. A question that arrives before a model routes to malloy-model-as-you-go.
  • Register malloy-publisher-setup in publisher-local.json and drop malloy-analyze, so 1088's tree-coverage / symlink tests agree with this tree.

This is handoff tasks 01 and 02 on one branch. They both edit malloy-modeling and the setup skill, so they review more cheaply together.

Test plan

  • bun run --cwd packages/skills test — 156 pass (index in sync, every skill grouped, manifest matches the tree, no malloy-analyze)
  • cd packages/server && bun test src/mcp/skills — 18 pass (bundle matches skills/, no em dashes)
  • cd packages/create-malloy-package && bun test src (scaffolder still pins @latest, now also scans malloy-publisher-setup)
  • Confirm nothing under skills/ still names malloy-analyze
  • Read malloy-modeling end to end: pauses still read as real stops; no malloy_* tool names; edit-and-run loop is in malloy-publisher-setup
  • Ask an agent "what's interesting in this data?" and confirm it loads malloy-analysis, not a missing skill
  • Ask how to start the server / tools are missing and confirm it loads malloy-publisher-setup

jswir and others added 2 commits August 29, 2026 00:07
… every channel to it

Publisher shipped skills four ways - the .claude/skills symlinks, the npm
pack, the MCP prompt bundle, and the scaffolder - and each one
independently took everything under skills/ minus credible-*. So a skill
added to the tree shipped everywhere by default, there was nowhere to say
otherwise, and nothing noticed when the four disagreed.

manifests/publisher-local.json is now the single answer to what ships,
and the pack and the bundle resolve it instead of globbing. The
scaffolder inherits it: it copies the packed skills/, which the pack has
already filtered. docs/agent-skills/authoring-skills.md documented a
manifests/ directory that did not exist; it exists now and the doc
describes the real file.

manifest.spec.ts is the part that makes it true rather than aspirational,
ported from ms2data/agent-skills tests/test_manifests.py so both sides of
the vendoring boundary enforce the same contract: the manifest names only
skills that exist AND ships every skill in the tree (the second is what
catches forgetting to register one), frontmatter names its own directory,
no body hardcodes a host install path, relative reference/ paths resolve,
cross-skill references are closed over the manifest and never carry a
subpath, and the .claude/skills symlinks match. 134 cases.

Confirmed the checks fire: dropping malloy-charts from the manifest fails
three of them, and naming a skill that does not exist fails six. The
reference scan sees 186 real skill: references across 57 files, so the
closure check passes on evidence rather than by matching nothing.

The bundle is byte-identical to main, which is the intended outcome: the
same 31 skills ship, now through something that can be reasoned about.

skills/README.md also records that this repo is the source of truth for
the shared skills rather than a copy kept in step by hand, per the
proposal in ms2data/service#6177.

Signed-off-by: James Swirhun <james@credibledata.com>
Retire malloy-analyze into malloy-analysis, split setup into
malloy-publisher-setup, and generate the malloy index from frontmatter.
Cut duplicated syntax from malloy-modeling and stop naming malloy_* tools
so the 8-step workflow can be shared across hosts.

Signed-off-by: James Swirhun <james@credibledata.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
}

function cell(text: string): string {
return text.replace(/\|/g, "\\|");
jswir and others added 2 commits August 29, 2026 22:41
1093 retires malloy-analyze and adds malloy-publisher-setup; 1088 is
what decides which skills ship. Land them together so the tree-coverage
test sees the same set as the tree.

Co-authored-by: Cursor <cursoragent@cursor.com>
#1088's publisher-local.json still listed malloy-analyze and omitted
the setup skill this branch added. The tree-coverage and symlink
tests fail until the manifest matches the tree.

Signed-off-by: James Swirhun <james@credibledata.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
@jswir
jswir changed the base branch from main to jswir/skills-manifest August 30, 2026 04:54
Base automatically changed from jswir/skills-manifest to main September 2, 2026 21:34
@jswir

jswir commented Sep 23, 2026

Copy link
Copy Markdown
Collaborator Author

Closing: 92 commits behind, and #1088, which it was stacked on, has merged. If malloy-analyze still needs retiring, that gets redone from main.

@jswir jswir closed this Sep 23, 2026
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.

2 participants