Skip to content

Latest commit

 

History

History
133 lines (97 loc) · 4.8 KB

File metadata and controls

133 lines (97 loc) · 4.8 KB

CI/CD — webflow-agent-kit

All workflows run on GitHub Actions. Every PR must pass all checks before merge.

Workspace Boundaries

The repository contains components with different toolchains:

Area Toolchain Managed By
packages/*, examples/* pnpm workspace Root pnpm install, pnpm build, pnpm test
docs-site/ Astro Starlight (npm) Independent npm install && npm run build
webflow-agent-kit-python/ pip, pytest, ruff, mypy pip install -e '.[dev]'
skill-packs/ YAML + Markdown Validated by @webflow-agent-kit/skills package + docs CI

Each area has its own CI jobs that run when its files change.

Workflows

ci.yml — TypeScript + MCP + Python + Docs

Runs on every push to main and every pull request.

Job What it checks Concurrency
Changed Files Uses dorny/paths-filter@v3 to detect which paths changed. Outputs python and docs booleans used by downstream conditional jobs. Always runs. Always
TS Quality pnpm lint, pnpm format:check, pnpm typecheck, pnpm test, pnpm build on Node 20 and Node 22 (matrix) Cancelled on new PR pushes
Package Smoke Packs every npm package into a tarball, installs it into a clean temp project, verifies successful install. Checks that workspace:* references are resolved After quality
MCP Protocol Smoke Starts @webflow-agent-kit/mcp with a fake token, sends MCP initialize + tools/list requests, verifies tool names appear in output After quality
Python Quality ruff, mypy, pytest, python -m build, twine check on Python 3.10, 3.11, and 3.12 (matrix). Runs when webflow-agent-kit-python/** files change (detected by dorny/paths-filter), on workflow_dispatch, or on every push to main. Commit-message keywords are no longer used. After changed-files
Docs Build Builds the Astro Starlight docs-site. Runs when docs/**, docs-site/**, README.md, CONTRIBUTING.md, or skill-packs/** change (detected by dorny/paths-filter), on workflow_dispatch, or on every push to main. After changed-files

security.yml — CodeQL + Dependency Review

Job Frequency
CodeQL TypeScript Every push/PR + weekly on main
CodeQL Python Every push/PR + weekly on main
Dependency Review Every PR

release.yml — Changesets + NPM Publish

Job What it does
Quality Gate Runs full lint, typecheck, test, build before any publish
Release Smoke tests all packages (pack verification), then uses Changesets to version and publish. Only runs after quality gate passes

Dependabot (.github/dependabot.yml)

Keeps dependencies updated weekly:

Ecosystem Directory
npm (monorepo root) /
npm (Next.js demo) /examples/vercel-ai-agent
pip (Python package) /webflow-agent-kit-python
GitHub Actions /

Permissions

All workflows use permissions: contents: read by default. The release workflow additionally needs contents: write, pull-requests: write, and id-token: write for Changesets and npm publish.

Required Secrets

Secret Used By Purpose
NPM_TOKEN Release workflow Publishes packages to npm (@webflow-agent-kit/*). Must be a granular token with publish access. If not set, the release workflow runs Changesets but does not publish.
GITHUB_TOKEN Release workflow Auto-provided by GitHub. Used by Changesets for creating PRs and commits.

No other secrets are required. No production Webflow API keys are used in CI.

How to Reproduce Locally

TypeScript quality

pnpm install --frozen-lockfile
pnpm lint
pnpm format:check
pnpm typecheck
pnpm test
pnpm build

Package smoke

pnpm build
cd packages/core && pnpm pack --pack-destination /tmp/test
cd /tmp/test && mkdir core && cd core && npm init -y && npm install /tmp/test/webflow-agent-kit-core-*.tgz
# Repeat for each package

MCP smoke

WEBFLOW_TOKEN=fake-token node packages/mcp/dist/server.js
# Send: {"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"test","version":"1.0"}}}
# Send: {"jsonrpc":"2.0","id":2,"method":"tools/list","params":{}}

Python quality

cd webflow-agent-kit-python
python -m pip install -e '.[dev]'
ruff check .
mypy webflow_agent_kit
pytest
python -m build
python -m twine check dist/*

Docs build

cd docs-site
npm install
npm run build

YAML Validation

All workflow files use standard GitHub Actions YAML syntax. Validate locally:

# Using actionlint (recommended)
brew install actionlint
actionlint .github/workflows/*.yml

# Or check GitHub's web validator at:
# https://rhysd.github.io/actionlint/