Observed since 20 Oct, 19:50 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
Documentation-as-code bootstrap for AI agents
Documentation-as-code bootstrap for AI agents.
adrlane scaffolds a minimal docs/ layout and agent skills so AI tools know where to read and write project documentation. The agent decides when to update docs — there is no sync pipeline or enforcement.
Install adrlane once on your machine with uv:
uv tool install adrlane
From a local checkout:
uv tool install -e .
Verify:
adrlane --help
Clone the repository and install dependencies:
git clone https://github.com/koradon/adrlane.git
cd adrlane
uv sync
uv run adrlane --help
cd /path/to/your-project
adrlane init
adrlane skills install --global
Multi-repo workspace (project root is not a single git repo):
adrlane init --workspace # adds .adrlane/workspace.yaml for doc routing
# Then run `adrlane init` in each sub-repository for service-level docs.
Preview without writing files:
adrlane init --dry-run
Limit which agent adapters init installs:
adrlane init --agent cursor
adrlane init --agent cursor --agent claude-code
adrlane init --agent codex
adrlane init --agent agy
init and skills --local always use the current working directory — there is no --path flag.
init is additive: it never overwrites an existing file. After you upgrade the adrlane package, re-running init will not refresh stale docs/llm/* contracts or skills. Use upgrade for that.
# 1. Upgrade the installed CLI
uv tool upgrade adrlane
# 2. In each bootstrapped repository: refresh package-owned content
cd /path/to/your-project
adrlane upgrade
# 3. If you use global skills, refresh those too
adrlane skills upgrade --global
adrlane upgrade overwrites:
docs/llm/* contract files and templates.adrlane/bootstrap-versionskills upgrade --local)It never touches user-owned content: docs/README.md, docs/ideas/README.md, docs/roadmap/README.md, the contents of docs/{specs,plans,adr,ideas,roadmap}, or .adrlane/workspace.yaml.
Preview: adrlane upgrade --dry-run. Details: ADR 0005.
| Command | Description |
|---|---|
adrlane init | Bootstrap docs/ and install agent skills in the current repository |
adrlane init --dry-run | Show planned bootstrap actions without writing files |
adrlane init --agent <name> | Limit adapters (cursor, claude-code, codex, agy; repeatable) |
adrlane init --workspace | Bootstrap with multi-repo doc routing config |
adrlane skills install --global | Install skills in ~/.cursor/skills/, ~/.claude/skills/, ~/.codex/skills/ and ~/.gemini/config/skills/ |
adrlane skills install --local | Install skills in the current repository (skips existing files) |
adrlane skills upgrade --global | Overwrite global skills with the current package version |
adrlane skills upgrade --local | Overwrite local skills in the current repository |
adrlane upgrade | Refresh docs/llm/* contract files, .adrlane/bootstrap-version, and local agent skills after upgrading the adrlane package |
adrlane upgrade --dry-run | Show planned upgrade actions without writing files |
adrlane upgrade --agent <name> | Limit which agent adapters get their skills refreshed (repeatable) |
adrlane doctor | Report docs/agent-adapter drift (informational only, never fails) |
adrlane does not detect documentation gaps, schedule updates, or write docs on its own. The agent decides when documentation needs updating during normal development.
Typical loop:
adrlane and runs adrlane init once per repository.docs/llm/* to create or patch files under docs/.git diff and commits normally.Skills are thin adapters; the contract is docs/llm/AGENT_PROTOCOL.md and docs/llm/DECISION_RULES.md.
init scaffolds a minimal core that grows with the project:
| Path | Purpose |
|---|---|
docs/specs/ | What the system should do |
docs/plans/ | How to implement a spec |
docs/adr/ | Why significant decisions were made |
docs/ideas/ | Early concepts that may be promoted to specs |
docs/roadmap/ | Now / Next / Later horizons |
docs/llm/ | Agent contract, decision rules, and templates |
Templates live in docs/llm/templates/. Documents use markdown sections (## Status, ## Related) — not YAML frontmatter.
When the project gains new documentation needs (runbooks, API reference, CLI docs), the agent adds new folders under docs/ and updates docs/README.md. init does not predict project type.
One exception grows outside that minimal core on request rather than by default: the adrlane-write-architecture-overview skill creates or refreshes a single docs/architecture.md — a whole-system overview with diagrams — when asked, or proactively after a change that alters module boundaries, execution flow, or requirements to run.
Release history stays in Git and release tooling — not in docs/.
By default, init installs seven skills for every supported agent:
| Skill | Role |
|---|---|
adrlane-dev-context | Ambient — read specs before coding; propose ADRs after significant decisions |
adrlane-write-idea | Write or update ideas |
adrlane-write-spec | Write or update specs (and Gherkin .feature files) |
adrlane-write-plan | Write or update implementation plans |
adrlane-write-adr | Document architectural decisions |
adrlane-write-architecture-overview | Create or refresh docs/architecture.md, the whole-system overview |
adrlane-workspace-routing | Route docs to project or sub-repo trees (when .adrlane/workspace.yaml exists) |
Project-local (default via init): .cursor/skills/, .claude/skills/, .codex/skills/ and .agents/skills/ in the repository.
Global (optional via skills install --global): same skills in your home directory, shared across all projects.
Codex CLI scans both: <repo>/.codex/skills as a project-local skill root, and $CODEX_HOME/skills (default ~/.codex/skills) as the user-level one. The same .codex/skills prefix therefore serves both scopes.
Antigravity CLI (agy) scans <workspace>/.agents/skills as its project-local skill root, but a different, unrelated global root: ~/.gemini/config/skills. Its adapter installs into .agents/skills for --local and .gemini/config/skills for --global — see ADR 0009.
Skills are thin adapters; the canonical contract lives in docs/llm/AGENT_PROTOCOL.md and docs/llm/DECISION_RULES.md.
Use this when the Cursor workspace root is not a single git repository — for example a folder that contains several independent repos plus shared project docs.
cd /path/to/project-root
# Project-level docs + routing config + skills
adrlane init --workspace
# Service-level docs in each repository
cd repository1 && adrlane init
cd ../repository2 && adrlane init
Open the project root in Cursor so routing applies. Optionally install skills globally once: adrlane skills install --global.
Flat — repositories are direct children of the project root. No repo_roots needed:
project/
docs/ ← cross-cutting ADRs, specs, roadmap
repository1/docs/ ← service-specific docs
repository2/docs/
Grouped — repositories live under category folders. Uncomment and edit repo_roots in .adrlane/workspace.yaml:
project/
docs/
services/order-service/docs/
frontends/checkout-fe/docs/
project_docs: docs
repo_roots:
- services
- frontends
The adrlane-workspace-routing skill (active when .adrlane/workspace.yaml exists) sends documentation to:
| Scope | Location | Examples |
|---|---|---|
| Project | docs/ at project root | Platform ADRs, cross-service conventions |
| Service | <repo>/docs/ | API specs, service-internal decisions |
The other adrlane-write-* skills follow the resolved path automatically. Link project and service docs in ## Related.
Run tests:
uv run pytest
Install pre-commit hooks:
uv run pre-commit install
uv run pre-commit run --all-files
Dependency management:
uv add <package> # runtime dependency
uv add --dev <package> # dev dependency
uv lock # refresh lockfile after manual pyproject edits
AGPL-3.0-or-later. See LICENSE.
pypistats · 61 observations shown. Missing days are unknown. Source category: overall: without mirrors.
| Date / source period | Value | Observed at |
|---|---|---|
| 2026-10-20 – 2026-10-20 | 15 | 2026-10-21T10:49:04.9272643Z |
| 2026-10-19 – 2026-10-19 | 13 | 2026-10-21T10:49:04.9272643Z |
| 2026-10-18 – 2026-10-18 | 11 | 2026-10-21T10:49:04.9272643Z |
| 2026-10-17 – 2026-10-17 | 9 | 2026-10-21T10:49:04.9272643Z |
| 2026-10-16 – 2026-10-16 | 138 | 2026-10-21T10:49:04.9272643Z |
| 2026-10-15 – 2026-10-15 | 3 | 2026-10-21T10:49:04.9272643Z |
| 2026-10-14 – 2026-10-14 | 2 | 2026-10-21T10:49:04.9272643Z |
| 2026-10-13 – 2026-10-13 | 2 | 2026-10-21T10:49:04.9272643Z |
| 2026-10-12 – 2026-10-12 | 1 | 2026-10-21T10:49:04.9272643Z |
| 2026-10-10 – 2026-10-10 | 3 | 2026-10-21T10:49:04.9272643Z |
| 2026-10-09 – 2026-10-09 | 7 | 2026-10-21T10:49:04.9272643Z |
| 2026-10-08 – 2026-10-08 | 3 | 2026-10-21T10:49:04.9272643Z |
| 2026-10-06 – 2026-10-06 | 1 | 2026-10-21T10:49:04.9272643Z |
| 2026-10-05 – 2026-10-05 | 2 | 2026-10-21T10:49:04.9272643Z |
| 2026-10-04 – 2026-10-04 | 4 | 2026-10-21T10:49:04.9272643Z |
| 2026-10-03 – 2026-10-03 | 2 | 2026-10-21T10:49:04.9272643Z |
| 2026-10-02 – 2026-10-02 | 2 | 2026-10-21T10:49:04.9272643Z |
| 2026-09-30 – 2026-09-30 | 5 | 2026-10-21T10:49:04.9272643Z |
| 2026-09-29 – 2026-09-29 | 3 | 2026-10-21T10:49:04.9272643Z |
| 2026-09-28 – 2026-09-28 | 5 | 2026-10-21T10:49:04.9272643Z |
| 2026-09-27 – 2026-09-27 | 3 | 2026-10-21T10:49:04.9272643Z |
| 2026-09-26 – 2026-09-26 | 5 | 2026-10-21T10:49:04.9272643Z |
| 2026-09-25 – 2026-09-25 | 8 | 2026-10-21T10:49:04.9272643Z |
| 2026-09-24 – 2026-09-24 | 21 | 2026-10-21T10:49:04.9272643Z |
| 2026-09-23 – 2026-09-23 | 6 | 2026-10-21T10:49:04.9272643Z |
| 2026-09-22 – 2026-09-22 | 19 | 2026-10-21T10:49:04.9272643Z |
| 2026-09-21 – 2026-09-21 | 86 | 2026-10-21T10:49:04.9272643Z |
| 2026-09-19 – 2026-09-19 | 15 | 2026-10-21T10:49:04.9272643Z |
| 2026-09-16 – 2026-09-16 | 15 | 2026-10-21T10:49:04.9272643Z |
| 2026-09-15 – 2026-09-15 | 1 | 2026-10-21T10:49:04.9272643Z |
| 2026-09-14 – 2026-09-14 | 7 | 2026-10-21T10:49:04.9272643Z |
| 2026-09-13 – 2026-09-13 | 15 | 2026-10-21T10:49:04.9272643Z |
| 2026-09-12 – 2026-09-12 | 1 | 2026-10-21T10:49:04.9272643Z |
| 2026-09-09 – 2026-09-09 | 1 | 2026-10-21T10:49:04.9272643Z |
| 2026-09-07 – 2026-09-07 | 10 | 2026-10-21T10:49:04.9272643Z |
| 2026-09-03 – 2026-09-03 | 1 | 2026-10-21T10:49:04.9272643Z |
| 2026-08-31 – 2026-08-31 | 2 | 2026-10-21T10:49:04.9272643Z |
| 2026-08-28 – 2026-08-28 | 1 | 2026-10-21T10:49:04.9272643Z |
| 2026-08-26 – 2026-08-26 | 1 | 2026-10-21T10:49:04.9272643Z |
| 2026-08-24 – 2026-08-24 | 13 | 2026-10-21T10:49:04.9272643Z |
| 2026-08-23 – 2026-08-23 | 3 | 2026-10-21T10:49:04.9272643Z |
| 2026-08-20 – 2026-08-20 | 2 | 2026-10-21T10:49:04.9272643Z |
| 2026-08-17 – 2026-08-17 | 3 | 2026-10-21T10:49:04.9272643Z |
| 2026-08-14 – 2026-08-14 | 4 | 2026-10-21T10:49:04.9272643Z |
| 2026-08-13 – 2026-08-13 | 2 | 2026-10-21T10:49:04.9272643Z |
| 2026-08-11 – 2026-08-11 | 4 | 2026-10-21T10:49:04.9272643Z |
| 2026-08-09 – 2026-08-09 | 7 | 2026-10-21T10:49:04.9272643Z |
| 2026-08-06 – 2026-08-06 | 14 | 2026-10-21T10:49:04.9272643Z |
| 2026-08-04 – 2026-08-04 | 2 | 2026-10-21T10:49:04.9272643Z |
| 2026-08-03 – 2026-08-03 | 13 | 2026-10-21T10:49:04.9272643Z |
| 2026-08-02 – 2026-08-02 | 1 | 2026-10-21T10:49:04.9272643Z |
| 2026-08-01 – 2026-08-01 | 1 | 2026-10-21T10:49:04.9272643Z |
| 2026-07-31 – 2026-07-31 | 3 | 2026-10-21T10:49:04.9272643Z |
| 2026-07-30 – 2026-07-30 | 2 | 2026-10-21T10:49:04.9272643Z |
| 2026-07-29 – 2026-07-29 | 10 | 2026-10-21T10:49:04.9272643Z |
| 2026-07-28 – 2026-07-28 | 4 | 2026-10-21T10:49:04.9272643Z |
| 2026-07-27 – 2026-07-27 | 1 | 2026-10-21T10:49:04.9272643Z |
| 2026-07-26 – 2026-07-26 | 3 | 2026-10-21T10:49:04.9272643Z |
| 2026-07-25 – 2026-07-25 | 7 | 2026-10-21T10:49:04.9272643Z |
| 2026-07-24 – 2026-07-24 | 6 | 2026-10-21T10:49:04.9272643Z |
| 2026-07-23 – 2026-07-23 | 6 | 2026-10-21T10:49:04.9272643Z |
| Version | Published | Direct dependencies | Open version |
|---|---|---|---|
| 0.5.2 | 16 Oct 2026 | 1 |
This describes our collected data; it is not a security assessment.
Observed since 20 Oct, 19:50 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
package:28658d27bea0a78bf82439bf71c22cbd6f8c90beaff2d7cd7dcda26193c792ec