Claude Skill
bainquet-pipeline is a distributable Claude Agent Skill that drives the whole ingestion pipeline. Once installed, it auto-invokes when you ask Claude to publish or sync a project to bAInquet, then discovers the content, maps it, obtains and uses a connector token, signs requests, posts batches, verifies them, and sets up incremental sync.
It is the headline form of the Universal AI Plugin: the recipe, packaged as an Agent Skill.
What it does
The skill's job is narrow and deterministic: discover content, map it to ingestion items, sign requests correctly, and post them. bAInquet does all extraction and publishing downstream. The skill walks these steps:
- Read the contract from the offline scaffold or the live manifest (it does not hardcode the contract).
- Obtain a connector token (existing token, dashboard-issued connector, or self-serve onboarding).
- Discover the project's content units (content directories, a product catalog, a docs tree, a sitemap).
- Map each unit to an
IngestItemwith a stablesha256:checksum. - Sign each batch with the
bq.connector.hmac.v1scheme and POST to/v1/ingest/batch. - Read the per-item results, re-send only failed items, and retry only
5xx/429. - Advertise custom
attributesvia/v1/ingest/schemawhen needed. - Set up incremental sync with a persisted cursor and heartbeats.
For JavaScript and TypeScript projects it uses @bainquet/connector-sdk; for any other language it implements the raw recipe (Python 3.11 stdlib hmac and hashlib work with no dependencies).
The gates
The skill respects two non-negotiable gates throughout:
- Ingest only when verified or in grace. Ingest is allowed only when the website's verification state is
verifiedorgrace; otherwise the server returns409 website.not_verifiedand the skill pauses until the domain verifies. - Never publish on an unverified domain. A node never becomes public until the domain is verified.
WARNING
Token safety is non-negotiable. The skill reads the secret only from an environment variable and never prints, logs, echoes, or writes it to any file or to the repository. If a step would expose the secret, the skill stops and asks you to set the env var instead.
Install
Copy the skill directory to one of the standard skill locations, named for the skill:
- Personal (all your projects):
~/.claude/skills/bainquet-pipeline/SKILL.md - Project-local (this repo only):
.claude/skills/bainquet-pipeline/SKILL.md
Ship the offline scaffold alongside it (copy bainquet-scaffold.md into the skill directory) so the skill can read the full contract offline.
The skill declares allowed-tools: Bash, WebFetch, Read: it runs shell commands (to sign and post), fetches the live manifest, and reads project files.
How to invoke
Once installed, the skill auto-invokes when you ask your assistant to publish or sync a project. Natural prompts that trigger it:
- "Publish this project to bAInquet."
- "Sync this site's content to bAInquet."
- "Connect this repo to bAInquet for AI consumption."
You provide the three values it needs as environment variables, never pasted into chat:
export BAINQUET_CONNECTOR_TOKEN="connectorId.secret"
export BAINQUET_WEBSITE_ID="site_xyz"
export BAINQUET_SITE_DOMAIN="example.com"Reference
The skill reads the contract from one of these each run, rather than memorizing it:
- Offline scaffold (full contract and HMAC recipe):
bainquet-scaffold.md. - Online manifest:
https://api.bainquet.online/.well-known/bainquet/manifest.json. - OpenAPI:
https://api.bainquet.online/scaffold/openapi.json. - JSON Schema:
https://api.bainquet.online/scaffold/schema/ingest-item.json. - Worked examples:
https://api.bainquet.online/scaffold/examples/.
See Universal AI Plugin for the full scaffold and online bundle, and Ingestion and signing for the endpoint reference.