feat: ship a Claude Code plugin with the user skills - #311
Merged
Merged
Conversation
…oper-run skills The repository doubles as a plugin marketplace (.claude-plugin/marketplace.json) serving plugins/interloper, versioned with the framework. The two first skills target users of the framework in their own projects: writing a source with a connection, schemas, partitioning and dependencies, and running or backfilling from Python or the CLI with a spec file. Both were written against baseline runs of agents without the skills (guessed subcommands and constructor keywords, import paths without destinations, windowed runs without allow_window, unknown SettingsConfigDict import) and verified with the same scenarios afterwards. A reference page documents the install. By Digitl
… exposed Adds interloper-connection, interloper-schema, interloper-destination, interloper-manifest, interloper-backfill, interloper-triage, interloper-deploy and interloper-upgrade, each written against a baseline run without the skill and re-verified with it. Corrects the docs statements those runs disproved: the spec assets map is a whitelist, cross-source requires are checked but not wired, interloper.yaml is not interpolated and its fields win over the environment, and the bare Destination example is not partition-safe. By Digitl
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
A Claude Code plugin aimed at users of the framework (people with
interloper-corein their own project), distinct from the contributor skills in.claude/skills/..claude-plugin/marketplace.json: the repository is installable as a marketplace (/plugin marketplace add digitl-cloud/interloper, then/plugin install interloper@interloper).plugins/interloper/: the plugin manifest (version pinned to the framework release) and ten skills:interloper-source: writing a source with a connection, schemas on every asset, partitioning, dependencies, verification on one partition, typed read-back, registration.interloper-run:run()versusmaterialize(), the DAG, the sync bridge, the CLI recipe and its spec file.interloper-connection: credentials, OAuth through a provider,check(), fetch-field pickers,definition()attributes.interloper-schema: what AUTO, STRICT and RECONCILE do, normalizer options, value-level transforms, error signatures.interloper-destination:PartitionedDestinationandDatabaseDestinationhooks, window splitting, REPLACE semantics, reconcile on read.interloper-manifest: the job spec shape,${VAR}rules,selectversus theassetswhitelist, cross-source wiring by id.interloper-backfill: one run per partition, windowed runs,lookbackwindows, per-partition progress and outcomes.interloper-triage: reading an event stream, placing the failure in the operation lifecycle, error signature to fix table, when a retry helps.interloper-deploy:interloper.yamlandINTERLOPER_*precedence, encryption, sign-in, catalog, provider apps, telemetry, images and chart.interloper-upgrade: version discovery, changelog reading, the rename table fromFileIOandOAuthConnectionBaseto today's names.docs/reference/claude-code.md: install instructions and the skill list, linked from the Reference nav.Method
Every skill follows the same discipline: a subagent played a framework user without the skill (public docs and introspection only) on a realistic task, its report gave the failure list, the skill was written against that list, and the scenario was re-run with the skill and refined from the residual gaps. Ten scenarios in total (source authoring, run and backfill, OAuth connection with picker, vendor payload typing, JSONL and SQLite destinations, a two-source job spec, daily plus monthly backfill, three failed-run event logs, a platform deployment, a legacy script upgrade).
Docs corrections the baseline runs exposed
assetsoverride map is a whitelist; assets absent from it do not exist after reconstruction.requiresis a contract check, not wiring; the edge is wired by id in Python or in the spec.interloper.yamlis not interpolated, a field present in the YAML wins over its environment variable and the environment fills the rest.il.Destinationexample is not partition-safe; partitioned assets belong onPartitionedDestination.Follow-ups (not in this PR)
requiresinDAG.__init__instead of requiring manual wiring (found while testing; a task chip was raised).plugin.json/marketplace.jsonversions from semantic-release alongside the pyproject files.By Digitl