Repository navigation
Added
- Collections: the whole
.kiro/layout is synced, not only steering. The packaged defaults
definesteering,specs,skills(with execute bits preserved on scripts),agents,
hooksandsettings(lsp.json,mcp.json); each maps a workspace directory, an
optional global directory and a central directory, with include and exclude globs, an
optional depth limit, a lint profile and a per collection size limit. Collections are
configured in YAML, can be disabled, and new ones need no code. --collection NAME(repeatable) onpull,push,statusandlint, and
steersync config collectionsto list the resolved directories. The MCP tools accept a
collectionslist.- Lint profiles:
markdown,skill(SKILL.mdmust carrynameanddescription, name
should match its directory),agent,hooks(schema and trigger names),jsonand
generic(binary assets allowed, secrets still scanned), next to the existingsteering
rules.steersync lintvalidates every collection with its profile;--profileapplies one
to explicit paths. docs/central-layout.mddescribes a full.kiro/tree in the central repository.
Changed
-
Central repository layout. Each collection lives in its own directory:
global/steering/,projects/<slug>/steering/,projects/<slug>/specs/and so on.
Repositories created with 0.1 must move their files intosteering/;pullandstatus
warn while files are still found directly underglobal/orprojects/<slug>/. -
Lock files are version 2 and record hashes per collection. Version 1 files are read as the
steering collection and upgraded on the next pull. Pulling a subset of collections keeps the
lock entries of the others. -
paths.workspace_steeringandpaths.global_steeringare deprecated in favour of
collections.steering.workspace_pathandcollections.steering.global_path; the old keys
still load with a warning. -
steersync initexcludes every synced workspace directory from the project repository
unless a collection setsgit_exclude: false. -
Push plans, JSON output and the MCP results are keyed by collection; push plan paths carry
the central directory prefix (steering/api.md). One push proposes every selected
collection in a single branch and commit. -
File discovery returns paths sorted by relative path, independent of directory walk order.
-
Releases publish to PyPI through trusted publishing with PEP 740 attestations. The
release jobs now live inci.yml, the workflow the PyPI publisher is registered for, and
run after the normal CI jobs onmainwhen the package version has no release yet; the
separateReleaseworkflow is gone. PyPI rejects attestations produced from a reusable
workflow, which is why the earlier split betweenrelease.ymlandci.ymlcould not
publish. The GitHub release attests and attaches the very files that went to PyPI
instead of building a second time. ThePUBLISH_TO_PYPIvariable is gone.
Fixed
- A server that rejects push options also closes the connection, which the retry logic
treated as a network fault; each proposal to such a server ran two needless retries with
backoff before the push without options. The rejection is now recognised as permanent.
Install
uv tool install https://github.com/SCGIS-Wales/steersync/releases/download/v0.2.0/steersync-0.2.0-py3-none-any.whlVerify provenance with gh attestation verify steersync-0.2.0-py3-none-any.whl --repo SCGIS-Wales/steersync.