Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
79 commits
Select commit Hold shift + click to select a range
418fd76
docs: dogfood the ADR toolkit on its own repo
SHcommit Aug 30, 2026
0aff20e
docs: write the root README and an INIT/RECORD/CHECK quickstart example
SHcommit Aug 30, 2026
93f37b9
docs: record the README/examples/dogfooding work in changelog
SHcommit Aug 30, 2026
57d0481
chore: untrack docs/superpowers/plans/, keep specs/ public
SHcommit Aug 30, 2026
6090b67
chore: add the .gitignore rule for docs/superpowers/plans/
SHcommit Aug 30, 2026
8c32766
chore: broaden .gitignore for common local artifacts
SHcommit Aug 30, 2026
0d4464c
Merge pull request #1 from SHcommit/docs/dogfood-and-cleanup
SHcommit Aug 30, 2026
7b9bb8c
docs: design multilingual ADR readiness work
SHcommit Aug 30, 2026
b69a784
docs: refine v0.2.0 readiness design
SHcommit Aug 30, 2026
9a86f5f
docs: align v0.2.0 work tracking
SHcommit Aug 30, 2026
7322380
feat: add repository locale configuration
SHcommit Aug 30, 2026
966b29b
feat: add eight-locale ADR rendering
SHcommit Aug 30, 2026
efc689a
feat: localize ADR repository initialization
SHcommit Aug 30, 2026
f6c1efb
feat: create localized ADRs with portable slugs
SHcommit Aug 30, 2026
bf347dd
feat: validate localized ADR workflows
SHcommit Aug 30, 2026
d691a33
fix: fail CHECK on incomplete git diff evidence
SHcommit Aug 30, 2026
801fa4c
fix: preserve both paths when CHECK sees renames
SHcommit Aug 30, 2026
dd96e12
fix: make CHECK honor git path semantics
SHcommit Aug 30, 2026
e6877d1
fix: reject conflicting CHECK diff modes
SHcommit Aug 30, 2026
503f5a6
docs: define CHECK evidence confidence
SHcommit Aug 30, 2026
477a738
docs: correct dogfooded ADR provenance
SHcommit Aug 30, 2026
f2f6c75
docs: supersede the MVP localization decision
SHcommit Aug 30, 2026
26141a1
docs: explain multilingual ADR workflows
SHcommit Aug 30, 2026
4588cbf
feat: ship v0.2.0 multilingual ADR support and release evidence
SHcommit Aug 30, 2026
b9e0ec3
fix: harden sync_version.py against silent drift and unicode loss
SHcommit Aug 30, 2026
baa0987
ci: run the manifest version-drift check once, not per matrix leg
SHcommit Aug 30, 2026
2f2a8de
refactor: centralize ADR directory loading into a shared iterator
SHcommit Aug 30, 2026
061d44e
docs: correct the Codex adapter's unverified symlink instruction
SHcommit Aug 30, 2026
5d37bef
fix: make SKILL.md the canonical source for manifest descriptions
SHcommit Aug 30, 2026
63c4c85
docs: formalize --json as a no-op, always-JSON CLI contract
SHcommit Aug 30, 2026
14627a4
docs: mark completed and re-scope enterprise-adoption's next candidates
SHcommit Aug 30, 2026
2c73af6
feat: promote CHECK's confidence classification to a stable field
SHcommit Aug 30, 2026
6e68b5d
feat: add a deterministic exception schema and wire it into CHECK
SHcommit Aug 30, 2026
ffc4f21
docs: bring handoff.md up to date with the P1 backlog work
SHcommit Aug 30, 2026
c995904
docs: close the Codex metadata compatibility item as not applicable
SHcommit Aug 30, 2026
b1a4ec5
chore: delete two stale remote branches, close the backlog item
SHcommit Aug 30, 2026
2fa6d67
docs: record ADR-0007..0010 for this session's design decisions
SHcommit Aug 30, 2026
d860a21
docs: bring handoff.md up to date with the branch rename and ADRs
SHcommit Aug 30, 2026
300456a
docs: write the ADR search and relationship navigation design spec
SHcommit Aug 30, 2026
f8b6423
docs: revise the ADR search/relationships spec per external review
SHcommit Aug 30, 2026
4db7fb8
docs: record the approved search/relationships spec in handoff.md
SHcommit Aug 30, 2026
20254cf
refactor: extract path_under into core/globs.py
SHcommit Aug 30, 2026
7c95692
feat: add core/query.py matching primitives
SHcommit Aug 30, 2026
ff25b68
feat: add deterministic rank_key to core/query.py
SHcommit Aug 30, 2026
92d95cc
docs: checkpoint handoff.md after tasks 1-3 of the search/relationshi…
SHcommit Aug 30, 2026
7ade27d
feat: add core/relationships.py canonical Relationship model
SHcommit Aug 30, 2026
c597a30
feat: add relationship integrity checks to core/relationships.py
SHcommit Aug 30, 2026
c8c2b06
fix: related.py keyword search now matches body, not just title
SHcommit Aug 30, 2026
5db2471
feat: add search command core filtering (keyword/tags/status/path)
SHcommit Aug 30, 2026
9a86666
feat: rank search results deterministically, add --limit/total/truncated
SHcommit Aug 30, 2026
36d7048
feat: wire search into the adr.py CLI
SHcommit Aug 30, 2026
954496a
docs: checkpoint handoff.md after tasks 1-9 (search command complete)
SHcommit Aug 30, 2026
2ed781e
feat: add Relationships section to the generated index
SHcommit Aug 30, 2026
38e0d27
feat: localize the Relationships section across all 8 catalogs
SHcommit Aug 30, 2026
b6d9658
feat: validate relationship integrity (supersedes/superseded_by)
SHcommit Aug 30, 2026
5e19e0a
docs: checkpoint handoff.md after tasks 10-12 (all code done, docs left)
SHcommit Aug 30, 2026
9694f87
docs: document the search command and related vs search framing
SHcommit Aug 30, 2026
68e2007
chore: regenerate docs/decisions/README.md with the Relationships sec…
SHcommit Aug 30, 2026
13accfa
docs: record ADR search/relationships feature as done
SHcommit Aug 30, 2026
8efde92
feat: detect supersession cycles as a validate error
SHcommit Aug 30, 2026
b8d93e4
feat: add --id exact lookup to the search command
SHcommit Aug 30, 2026
72427e1
docs: document cycle detection and --id lookup, checkpoint handoff.md
SHcommit Aug 30, 2026
22f76f5
docs: explain why ADR storage stays flat instead of sharded folders
SHcommit Aug 30, 2026
3ccd1e3
docs: record PR #2 opened, CI pending
SHcommit Aug 30, 2026
e58d8b1
fix: decode git subprocess output as UTF-8 explicitly, not locale def…
SHcommit Aug 30, 2026
105b776
docs: record PR #2 CI green and mergeable, spell out remaining approv…
SHcommit Aug 30, 2026
29b2e22
chore: bump version to 0.2.0
SHcommit Aug 30, 2026
9eccf61
docs: record version bump complete, CI re-verified green
SHcommit Aug 30, 2026
b841357
docs: consolidate completed work into changelog.md, trim tracking docs
SHcommit Aug 31, 2026
3a3a482
Merge pull request #2 from SHcommit/feature/v0.2.0-multilingual-and-c…
SHcommit Aug 31, 2026
8f0343e
feat: add ADR relationship graph exports
SHcommit Aug 31, 2026
35c81aa
docs: record ADR-0011 for relationship graph and public readiness work
SHcommit Aug 31, 2026
b8db211
docs: correct stale ADR count in project-roadmap.md
SHcommit Aug 31, 2026
b1bcb93
docs: add code of conduct and GitHub issue templates
SHcommit Aug 31, 2026
e28eb5d
docs: record Antigravity CLI adapter verification against agy 1.1.13
SHcommit Aug 31, 2026
2f2f604
ci: add harness-parity job for Codex and Gemini CLI end-to-end install
SHcommit Aug 31, 2026
3058325
docs: close out harness-parity session in handoff and roadmap
SHcommit Aug 31, 2026
178394e
docs: record SessionStart hook evaluation as not pursued
SHcommit Aug 31, 2026
36af56c
Merge pull request #3 from SHcommit/feature/project-roadmap-implements
SHcommit Aug 31, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .adr-toolkit.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
{
"schema_version": 1,
"locale": "en"
}
4 changes: 2 additions & 2 deletions .claude-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"name": "adr-toolkit",
"version": "0.1.0",
"description": "Initialize, record, and check Architecture Decision Records by inspecting the repository before asking questions."
"version": "0.2.0",
"description": "Initialize, record, and check Architecture Decision Records by inspecting the repository and existing decisions before asking questions."
}
39 changes: 39 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
---
name: Bug report
about: Report a defect in ADR Toolkit
title: ""
labels: bug
---

## Summary

## Steps to Reproduce

1.
2.
3.

## Expected Behavior

## Actual Behavior

## Environment

- Harness: Claude Code / Codex CLI / Gemini CLI / Antigravity CLI / generic / other
- ADR Toolkit version (`skills/adr-toolkit/VERSION`):
- OS:

## Relevant Output

Paste the command and its output, including `--json` output where
applicable.

```
```

## Scope

- [ ] This affects `adr.py validate`, `create`, `index`, `check`, `graph`,
or `search`.
- [ ] This affects a specific harness adapter (Codex, Gemini CLI,
Antigravity, or generic).
19 changes: 19 additions & 0 deletions .github/ISSUE_TEMPLATE/feature_request.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
---
name: Feature request
about: Propose new functionality for ADR Toolkit
title: ""
labels: enhancement
---

## Problem

What are you trying to do that ADR Toolkit does not support today?

## Proposed Solution

## Alternatives Considered

## Additional Context

- [ ] I checked `project-roadmap.md` and `improvements.md` for existing
plans that already cover this.
22 changes: 22 additions & 0 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
## Summary

-

## ADR Impact

- [ ] I checked whether this changes an accepted architectural decision.
- [ ] I linked related ADRs, or this PR has no ADR impact.
- [ ] I ran `adr.py check` when the change touches governed paths.

Related ADRs:

## Verification

- [ ] `python3 -m pytest -q`
- [ ] `python3 scripts/sync_version.py --check`
- [ ] `python3 skills/adr-toolkit/scripts/adr.py validate --dir docs/decisions --json`
- [ ] `python3 skills/adr-toolkit/scripts/adr.py index --dir docs/decisions --json`

## Notes

-
63 changes: 62 additions & 1 deletion .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -32,5 +32,66 @@ jobs:
run: pip install pytest
- name: Run tests
run: python -m pytest tests/unit tests/integration -v
- name: Check manifest versions are in sync

version-drift:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.12"
- name: Check manifest versions and descriptions are in sync
run: python scripts/sync_version.py --check

harness-parity:
# Installs the real Codex CLI and Gemini CLI and drives their own plugin
# commands against this repo, the same way a contributor would. Manifest
# JSON shape is already covered by tests/unit/test_*_adapter.py; this job
# instead proves discovery -> install -> list -> the installed skill
# package's script layer still runs, so an upstream CLI change or a
# manifest edit that breaks real installation fails CI instead of
# surfacing later as a user-reported install failure. Antigravity CLI
# (agy) has no public package registry distribution, so it stays a
# manually verified adapter only -- see adapters/antigravity/README.md.
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: "20"
- uses: actions/setup-python@v5
with:
python-version: "3.12"
- name: Install Codex CLI
run: npm install -g @openai/codex@0.151.0
- name: Install Gemini CLI
run: npm install -g @google/gemini-cli@0.46.0
- name: Verify Codex CLI adapter end to end
run: |
set -euo pipefail
export CODEX_HOME="$(mktemp -d)"
REPO_ROOT="$(pwd)"
codex plugin marketplace add "$REPO_ROOT"
INSTALLED_PATH="$(codex plugin add adr-toolkit@adr-toolkit-marketplace --json | jq -r '.installedPath')"
codex plugin list
SCRATCH="$(mktemp -d)"
cd "$SCRATCH" && git init -q
python3 "$INSTALLED_PATH/skills/adr-toolkit/scripts/adr.py" preflight --json | jq -e '.ok == true'
python3 "$INSTALLED_PATH/skills/adr-toolkit/scripts/adr.py" init --dir docs/decisions --json | jq -e '.ok == true'
python3 "$INSTALLED_PATH/skills/adr-toolkit/scripts/adr.py" validate --dir docs/decisions --json | jq -e '.ok == true'
- name: Verify Gemini CLI adapter end to end
run: |
set -euo pipefail
REPO_ROOT="$(pwd)"
mkdir -p adapters/gemini-cli/skills
ln -s "$REPO_ROOT/skills/adr-toolkit" adapters/gemini-cli/skills/adr-toolkit
export HOME="$(mktemp -d)"
gemini extensions validate "$REPO_ROOT/adapters/gemini-cli"
printf 'y\ny\n' | gemini extensions install "$REPO_ROOT/adapters/gemini-cli" --consent
gemini extensions list
INSTALLED_PATH="$HOME/.gemini/extensions/adr-toolkit"
SCRATCH="$(mktemp -d)"
cd "$SCRATCH" && git init -q
python3 "$INSTALLED_PATH/skills/adr-toolkit/scripts/adr.py" preflight --json | jq -e '.ok == true'
python3 "$INSTALLED_PATH/skills/adr-toolkit/scripts/adr.py" init --dir docs/decisions --json | jq -e '.ok == true'
python3 "$INSTALLED_PATH/skills/adr-toolkit/scripts/adr.py" validate --dir docs/decisions --json | jq -e '.ok == true'
26 changes: 26 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,36 @@ __pycache__/
*.pyc
.pytest_cache/
*.egg-info/
.coverage
htmlcov/
dist/
build/

# Virtual environments
.venv/
venv/
env/

# Editor/IDE
.vscode/
.idea/

# OS
.DS_Store

# Local secrets/config — never commit real credentials
.env
.env.*.local

# Adapter install-time symlinks. Every adapter README tells the user to
# create these inside this working tree; committing a real symlink breaks
# Windows checkouts without core.symlinks, which the CI matrix includes.
adapters/codex/skills/adr-toolkit
adapters/gemini-cli/skills/adr-toolkit
adapters/antigravity/skills/adr-toolkit

# Task-by-task implementation plans (superpowers subagent-driven-development
# artifacts) — kept locally for reference, not part of the public tree.
# docs/superpowers/specs/ (the design docs) stay tracked; only plans/ is
# excluded. History from before this commit still has them if ever needed.
docs/superpowers/plans/
44 changes: 44 additions & 0 deletions CODE_OF_CONDUCT.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
# Code of Conduct

## Our Standard

Participation in this project — issues, pull requests, discussions, and
reviews — is expected to stay respectful and focused on the technical
problem. Disagreement about a decision or an approach is normal; personal
attacks, harassment, discriminatory language, or deliberately derailing a
discussion are not.

## Expected Behavior

- Assume good faith and give reviewers/contributors the benefit of the
doubt.
- Keep feedback specific to the code, design, or decision under
discussion.
- Accept that maintainers may decline a change and explain why, without
that being an invitation to escalate.

## Unacceptable Behavior

- Harassment, insults, or discriminatory remarks directed at a person
rather than their contribution.
- Publishing others' private information without consent.
- Sustained disruption of issues, pull requests, or reviews.

## Reporting

Report a violation privately to the repository owner rather than escalating
in a public issue or pull request thread. Include what happened, where
(link to the issue/PR/comment), and when.

## Enforcement

The repository owner reviews reports and may edit or remove content, warn a
participant, or restrict further participation in the project's spaces,
proportional to the violation. Enforcement decisions are not owed a public
explanation when doing so would expose reporter identity or private
details.

## Scope

This applies to all project spaces (issues, pull requests, discussions,
commits, and comments) and to representing the project in public spaces.
48 changes: 48 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
# Contributing

Thanks for helping improve ADR Toolkit. This project is intentionally small:
the agent can reason and draft, but deterministic scripts own file writes,
IDs, lifecycle transitions, validation, indexes, and machine-readable output.

## Branches

Follow the repository policy in `AGENTS.md`.

- Branch from `develop` for normal work.
- Use `feature/*`, `fix/*`, or `docs/*` for short-lived work branches.
- Merge normal work back to `develop` through a pull request.
- Release branches merge to `master` and back to `develop`.
- Tags named `v*` are created only from `master`.

## Local Checks

Run the relevant checks before opening a pull request:

```bash
python3 -m pytest -q
python3 scripts/sync_version.py --check
python3 skills/adr-toolkit/scripts/adr.py validate --dir docs/decisions --json
python3 skills/adr-toolkit/scripts/adr.py index --dir docs/decisions --json
```

For changes that may affect accepted architectural decisions, also run:

```bash
python3 skills/adr-toolkit/scripts/adr.py check --uncommitted --dir docs/decisions --json
```

## ADR Changes

- Keep ADR source files flat under `docs/decisions/`.
- Do not hand-edit generated indexes or lifecycle links to repair validation
errors. Change the source ADR or use the lifecycle command.
- Use `adr.py create`, `status`, `deprecate`, `supersede`, and `exception` for
deterministic mutations.
- Accepted ADRs are append-only in spirit: use supersession for changed
decisions instead of rewriting history.

## Public Repository Hygiene

Public repository branch/tag protection is expected to enforce PRs, required
checks, conversation resolution, and force-push/deletion restrictions on
`develop`, `master`, and `v*` tags once the repository is public.
Loading
Loading