Copier template for bootstrapping graph-sync projects with the current WordLift SDK v8 cloud-flow contract.
Agent-driven graph-sync workflows are handled through wordlift/graph-sync-agent-kit.
Generated projects receive a small AGENTS.md pointer to the skill kit and may add project-specific notes there. Install and update commands live in the Graph Sync Agent Kit documentation.
Use this repository when you need a new graph-sync project with the WordLift runtime contract, GitHub Actions workflow, profile scaffolding, and local examples already aligned.
This template provides:
- generated runtime configuration from
worai.toml.jinja - profile scaffolding under
profiles/ - a generated GitHub Actions workflow from
.github/workflows/graph-sync.yml - example local runtime code under
src/acme_kg/ - template smoke coverage for generated project shape
Generate from the local checkout:
pipx run copier copy . ../my-graph-projectGenerate from GitHub:
pipx run copier copy gh:wordlift/graph-sync-template my-graph-projectFor offline or automation-friendly generation, skip API-key validation explicitly:
pipx run copier copy --data validate_api_key=false gh:wordlift/graph-sync-template my-graph-projectIf copier is already installed, use the same commands without pipx run.
See docs/QUICKSTART.md for the generated-project quick start.
The full question contract is defined in copier.yml. At a high level, generated projects start from a WordLift API key and one source type: manual URLs, sitemap, or Google Sheets.
Runtime defaults are rendered into generated worai.toml. Keep reusable modeling, mapping, validation, and review strategy in the installed graph-sync skills.
During copier copy, the template:
- validates the WordLift API key against
/accounts/meby default - derives the generated project package name from the WordLift account URL, falling back to
datasetUri - renames the local runtime module from
acme_kgto the underscore-safe project package name - writes secrets to local
.envinstead of tracked config - sets generated
pyproject.toml[project].namefrom the derivedgraph-sync-*project package name - sets generated
pyproject.toml[project].descriptionfrom the account URL, domain URI, dataset URI, or destination directory - resets generated
pyproject.toml[project].versionto0.1.0and adds a comment with the template version used - scaffolds
profiles/<profile>/mappings,templates, andpostprocessors - renders
AGENTS.md.jinjaas the generated project'sAGENTS.md - removes
.copier-answers.ymland excludescopier.ymlfrom generated output - initializes a git repository and creates an
initial commitwhengitis available
Post-generation work runs through .copier-tasks/post_copy.py. Copier renders a temporary .copier-tasks/context.json for answers, and the helper removes it immediately after reading it so secrets are not left in generated output.
If validation is skipped or the API is unreachable, package names fall back to the destination directory with a graph-sync- prefix.
Generated projects include the runtime files needed to run graph-sync: runtime configuration, the graph-sync GitHub workflow, profile folders, local runtime code, docs, and a small AGENTS.md pointer to the Graph Sync Agent Kit.
Generated projects intentionally exclude template-maintenance assets such as copier.yml, .github/workflows/template-smoke.yml, scripts/smoke_render_template.sh, tests/, and specs/.
Supported runtime settings depend on the wordlift-sdk version resolved by the generated project's pyproject.toml and uv.lock. The pinned worai version in the generated GitHub workflow acts as the CLI/action executor for that SDK contract.
For worai CLI configuration, profile selection, and command usage, see the official worai documentation. Graph-sync runtime settings are interpreted by the resolved wordlift-sdk version.
- Copier questions:
copier.yml - Copier post-generation behavior:
.copier-tasks/post_copy.py - Runtime dependency constraints:
pyproject.toml - Resolved dependency versions:
uv.lock - Graph-sync workflow executor version:
.github/workflows/graph-sync.yml - Generated project agent pointer:
AGENTS.md.jinja - Generated project README:
README.md.jinja - Reusable agent workflows: wordlift/graph-sync-agent-kit
Install dependencies:
uv sync --devRun the template-maintenance test suite:
uv run pytest -qRun the render smoke check:
uv run scripts/smoke_render_template.shdeploy release [major|minor|patch]: runscripts/deploy_release.sh [major|minor|patch].upgrade project: runscripts/upgrade_project.sh.
The template-maintenance workflow lives in .github/workflows/template-smoke.yml. It installs dependencies, runs tests, and renders a sample project.
Generated projects receive .github/workflows/graph-sync.yml, which exposes profile-based manual dispatch and reusable workflow inputs.
