-
Notifications
You must be signed in to change notification settings - Fork 9
docs(adr): add AI workflow and SDD decision records #342
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from all commits
Commits
Show all changes
2 commits
Select commit
Hold shift + click to select a range
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,76 @@ | ||
| # ADR-0013: Adopt AI-Assisted Development Workflow | ||
|
|
||
| Date: 2026-06-10 | ||
|
|
||
| ## Status | ||
|
|
||
| Accepted | ||
|
|
||
| ## Context | ||
|
|
||
| Software development has historically relied on three successive layers | ||
| of knowledge: | ||
|
|
||
| 1. **Official documentation** — authoritative but static; describes the | ||
| intended API but not how real projects apply it | ||
| 2. **Community collaboration** — Stack Overflow, GitHub Discussions, blog | ||
| posts; describes how practitioners actually solve problems, but requires | ||
| the developer to synthesize and apply that knowledge themselves | ||
| 3. **AI synthesis** — models trained on both layers above, capable of | ||
| applying idiomatic, stack-specific knowledge directly to a given | ||
| codebase | ||
|
|
||
| Agentic AI tools represent a qualitative shift: instead of consulting | ||
| knowledge and applying it manually, the developer delegates implementation | ||
| to an agent that has absorbed the collective idioms of a stack — "the | ||
| Microsoft way", "the Spring Boot way" — and can apply them consistently. | ||
|
|
||
| For a cross-language REST API comparison project, this matters | ||
| particularly: each implementation should reflect how an experienced | ||
| practitioner in that stack would structure the same problem, not a | ||
| generic approach that happens to compile. | ||
|
|
||
| Prior to Claude Code, AI assistance was used ad-hoc — pasting code into | ||
| web interfaces (ChatGPT, DeepSeek) or via IDE-integrated assistants | ||
| (GitHub Copilot). Both approaches lack persistent codebase context and | ||
| the ability to act autonomously across a project. | ||
|
|
||
| ## Decision | ||
|
|
||
| We adopt Claude Code as the primary development workflow tool for this | ||
| project. | ||
|
|
||
| A `CLAUDE.md` file at the repository root serves as the workflow | ||
| specification: it documents architecture, coding conventions, invariants, | ||
| and explicit boundaries for autonomous operation — what the agent may do | ||
| freely, what requires human approval, and what must never be changed. | ||
|
|
||
| CodeRabbit provides an additional automated code review layer | ||
| independent of the primary workflow. | ||
|
|
||
| ## Consequences | ||
|
|
||
| ### Positive | ||
|
|
||
| - Stack-specific idioms are enforced by the agent's collective knowledge | ||
| rather than individual developer discipline | ||
| - `CLAUDE.md` is living architectural documentation: it must stay | ||
| accurate for the workflow to function, creating a natural incentive to | ||
| keep it current | ||
| - Explicit autonomy boundaries make human oversight intentional rather | ||
| than incidental | ||
|
|
||
| ### Negative | ||
|
|
||
| - Token economics: long-running work may exceed context limits, requiring | ||
| active session management and continuation prompts to resume work | ||
| across sessions | ||
| - The global `~/.claude/CLAUDE.md` and per-repo `CLAUDE.md` must stay | ||
| aligned; drift between them produces inconsistent agent behavior | ||
|
|
||
| ### Neutral | ||
|
|
||
| - Development workflow moves to the terminal/CLI rather than an IDE; | ||
| this has no impact on the codebase itself | ||
| - `CLAUDE.md` is specific to Claude Code; a different tool would require | ||
| a different workflow specification format | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,61 @@ | ||
| # ADR-0014: Adopt Spec-Driven Development (SDD) | ||
|
|
||
| Date: 2026-06-10 | ||
|
|
||
| ## Status | ||
|
|
||
| Accepted | ||
|
|
||
| ## Context | ||
|
|
||
| In an agentic development workflow, it is easy to begin implementation | ||
| before requirements are fully understood. An AI assistant will produce | ||
| working code from a vague prompt — but working and correct are not the | ||
| same thing. Without a forcing function that requires requirements to be | ||
| stated explicitly before implementation begins, scope creep, rework, and | ||
| misaligned implementations are likely outcomes. | ||
|
|
||
| GitHub Issues provide a natural spec artifact: persistent, linkable, | ||
| and — critically — they survive session boundaries. In a workflow where | ||
| context is lost between sessions, an Issue that captures the agreed | ||
| approach and acceptance criteria before implementation begins serves as | ||
| the durable contract between intent and implementation. | ||
|
|
||
| ## Decision | ||
|
|
||
| All new features and non-trivial changes follow a three-step workflow: | ||
|
|
||
| 1. **Discuss** — describe the requirement in Claude Code Plan mode; | ||
| explore alternatives and consequences before committing to an approach | ||
| 2. **Specify** — create a GitHub Issue as the spec artifact, capturing | ||
| the agreed approach, acceptance criteria, and any constraints | ||
| 3. **Implement** — work against the Issue; commits reference it via | ||
| the `(#issue)` suffix in the Conventional Commits format | ||
|
|
||
| Trivial changes (documentation updates, formatting fixes, dependency | ||
| bumps) may skip the Issue step at the developer's discretion. | ||
|
|
||
| ## Consequences | ||
|
|
||
| ### Positive | ||
|
coderabbitai[bot] marked this conversation as resolved.
|
||
|
|
||
| - Requirements are stated explicitly before implementation; the agent | ||
| works against a written spec rather than an interpreted prompt | ||
| - Issues survive session boundaries — a new session can resume from | ||
| the Issue rather than reconstructing intent from scratch | ||
| - The implementation trail (Issue → branch → PR → commit) is traceable | ||
| without relying on session memory | ||
|
|
||
| ### Negative | ||
|
|
||
| - Adds upfront overhead for changes that feel small; the Issue step can | ||
| seem bureaucratic for straightforward work | ||
| - The line between "spec-worthy" and "trivial" is judgment-dependent | ||
| and not enforced by tooling | ||
|
|
||
| ### Neutral | ||
|
|
||
| - GitHub Issues double as the project backlog; SDD and backlog | ||
| management share the same artifact | ||
| - Plan mode discussion is ephemeral — not persisted outside the session; | ||
| the Issue is the only durable record of the pre-implementation reasoning | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.