Skip to content

Commit 0dfd3c8

Browse files
martincjarvismcj-coderclaude
authored
feat: add release preparation documentation and tooling (Phase 8) (#61)
## Summary Completes Phase 8: Release Preparation for Issue #15. This PR adds all necessary documentation, tooling updates, and test fixes for the first release. ### Changes **Documentation:** - Updated CHANGELOG.md with comprehensive release notes for v1.0.0 - Updated README.md with CI badges, quick start guide, and headless mode docs - Added `docs/playbooks/release.md` - complete release checklist and process - Added `docs/playbooks/github-setup.md` - secrets and branch protection guide **Tooling:** - Updated ADR-0031 (PR Validation Automation) from proposed to accepted - Updated Stryker.NET from 4.4.2 to 4.11.0 with new config schema - Set realistic mutation testing thresholds (baseline: 14.44%) - Added 'unlist' to project spelling dictionary **CI/CD:** - Fixed Dependabot config to use `build` prefix (valid conventional commit type) - Previous `deps` prefix was invalid, causing commitlint failures **Test Isolation:** - Refactored LogCapture to use isolated ILogger instance - No longer modifies global Log.Logger, preventing cross-test interference - Tests now use `_logCapture.Logger.Information()` instead of `Log.Information()` ## Test Plan - [x] All pre-commit hooks pass (prettier, markdownlint, cspell, secretlint) - [x] Build succeeds with no warnings: `dotnet build -c Release -warnaserror` - [x] All 93 tests pass: `dotnet test -c Release` - [x] Code formatting verified: `dotnet format --verify-no-changes` - [x] npm lint passes: `npm run lint` - [x] No secrets in code: `npx secretlint .` - [x] Mutation testing baseline established (14.44%) - [x] CI passes on all platforms (Windows, Ubuntu, macOS) ## Commits 1. `feat: add release preparation documentation and tooling` - Main docs and config 2. `fix: use conventional commit prefixes in dependabot config` - CI fix 3. `fix: isolate log capture from global serilog logger` - Test isolation Closes #15 🤖 Generated with [Claude Code](https://claude.com/claude-code) --------- Co-authored-by: Claude (Tech Lead) <[email protected]> Co-authored-by: Claude Opus 4.5 <[email protected]>
1 parent a5334fc commit 0dfd3c8

File tree

14 files changed

+534
-94
lines changed

14 files changed

+534
-94
lines changed

.config/dotnet-tools.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
"rollForward": false
99
},
1010
"dotnet-stryker": {
11-
"version": "4.4.2",
11+
"version": "4.11.0",
1212
"commands": ["dotnet-stryker"],
1313
"rollForward": false
1414
},

.cspell.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -163,7 +163,8 @@
163163
"innersource",
164164
"amannn",
165165
"msbuild",
166-
"msdata"
166+
"msdata",
167+
"unlist"
167168
],
168169
"flagWords": [],
169170
"allowCompoundWords": true,

.cspell/project-terms.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
11
# Project-specific terms for spell checking
22
# Add words here that are specific to this project
33
# One word per line
4+
5+
# NuGet terminology
6+
unlist

.github/dependabot.yml

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,8 @@ updates:
1313
timezone: 'UTC'
1414
open-pull-requests-limit: 10
1515
commit-message:
16-
prefix: 'deps'
16+
prefix: 'build'
17+
prefix-development: 'build'
1718
include: 'scope'
1819
groups:
1920
# Group all patch updates together
@@ -60,7 +61,8 @@ updates:
6061
timezone: 'UTC'
6162
open-pull-requests-limit: 5
6263
commit-message:
63-
prefix: 'deps'
64+
prefix: 'build'
65+
prefix-development: 'build'
6466
include: 'scope'
6567
groups:
6668
# Group all npm patch updates

CHANGELOG.md

Lines changed: 25 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,19 +7,36 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77

88
## [Unreleased]
99

10-
### Features
11-
12-
- Initial project structure and tooling
13-
- .NET 10 project configuration
14-
- GitHub Actions CI/CD pipeline
15-
- Comprehensive documentation framework
10+
### Added
11+
12+
- Core application functionality
13+
- PTY-based Claude CLI monitoring with `ClaudeMonitor`
14+
- Rate limit detection with configurable patterns
15+
- Auto-resume after rate limit wait period
16+
- Headless mode with auto-response to prompts
17+
- Configurable wait times and patterns via `WrapperConfig`
18+
- CLI interface with argument parsing
19+
- `--help`, `--version`, `--diagnose` flags
20+
- `--headless` and `--dangerously-skip-permissions` for automation
21+
- `--prompt` and `--continue` for session management
22+
- `--wait` for custom rate limit wait times
23+
- `--verbose` for detailed logging
24+
- Comprehensive test coverage (93 tests)
25+
- Unit tests for all components
26+
- BDD feature tests (rate limit detection, auto-resume, headless mode)
27+
- E2E tests for application startup
28+
- Architecture tests for dependency validation
29+
- .NET 10 project structure with central package management
30+
- GitHub Actions CI/CD pipeline (build, test, lint on Windows/macOS/Linux)
31+
- Comprehensive documentation framework with Docusaurus
1632
- Pre-commit hooks and code quality enforcement
33+
- 32 Architecture Decision Records (ADRs)
1734

1835
### Documentation
1936

20-
- Architecture Decision Records (ADRs)
37+
- Developer onboarding guides
2138
- Contributing guidelines
22-
- Developer playbooks
2339
- Accessibility standards
40+
- Release playbooks
2441

2542
<!-- generated by git-cliff -->

README.md

Lines changed: 74 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
# Claude Auto Resume
22

3+
[![CI](https://github.com/mcj-coder-org/claude-auto-resume/actions/workflows/ci.yml/badge.svg)](https://github.com/mcj-coder-org/claude-auto-resume/actions/workflows/ci.yml)
4+
[![.NET 10](https://img.shields.io/badge/.NET-10-512BD4)](https://dotnet.microsoft.com/)
5+
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)
6+
37
A cross-platform .NET tool that wraps the Claude CLI to provide automatic session
48
resumption when rate limits are hit.
59

@@ -14,67 +18,87 @@ limit resets.
1418

1519
- **Automatic rate limit detection** - Monitors Claude CLI output for rate limit messages
1620
- **Seamless resumption** - Waits for the reset time and automatically resumes your session
21+
- **Headless mode** - Run unattended with auto-response to prompts
1722
- **Transparent operation** - Acts as a passthrough until rate limits are detected
1823
- **Cross-platform** - Runs on Windows, macOS, and Linux
1924
- **Privacy-first** - No telemetry or data collection (see [Privacy Policy](docs/standards/privacy.md))
2025

2126
## Installation
2227

28+
### Prerequisites
29+
30+
- [Claude CLI](https://docs.anthropic.com/en/docs/agents-and-tools/claude-code/overview) installed and in PATH
31+
- .NET 10 Runtime (for .NET tool installation)
32+
2333
### .NET Tool (Recommended)
2434

25-
````bash
35+
```bash
2636
dotnet tool install -g McjCoderOrg.ClaudeAutoResume
27-
```text
37+
```
2838

2939
### Standalone Executable
3040

31-
Download the latest release for your platform from the [Releases](https://github.com/mcj-coder-org/claude-auto-resume/releases) page.
32-
33-
## Usage
41+
Download the latest release for your platform from the
42+
[Releases](https://github.com/mcj-coder-org/claude-auto-resume/releases) page.
3443

35-
Use `claude-auto-resume` as a drop-in replacement for `claude`:
44+
## Quick Start
3645

3746
```bash
38-
# Basic usage
47+
# Interactive mode (default) - use like normal claude
3948
claude-auto-resume
4049

41-
# With verbose logging
42-
claude-auto-resume --verbose
50+
# With an initial prompt
51+
claude-auto-resume -p "implement the login feature"
4352

44-
# Run diagnostics
45-
claude-auto-resume --diagnose
46-
47-
# Pass arguments to Claude CLI
48-
claude-auto-resume -- --help
49-
```text
53+
# Continue previous session
54+
claude-auto-resume -c -p "continue where we left off"
5055

51-
## Configuration
56+
# Headless mode for CI/automation
57+
claude-auto-resume --headless --dangerous -p "implement feature"
5258

53-
Configuration can be provided via CLI arguments, environment variables, project config, or user config.
59+
# Pass additional args to claude
60+
claude-auto-resume -- --model claude-3-opus
61+
```
5462

55-
### CLI Arguments
63+
## Usage
5664

57-
```bash
58-
claude-auto-resume --retry-delay 10000 --max-retries 5
5965
```text
66+
USAGE:
67+
claude-auto-resume [OPTIONS] [-- CLAUDE_ARGS...]
6068
61-
### Environment Variables
69+
OPTIONS:
70+
-h, --help Show help
71+
-v, --version Show version information
72+
-p, --prompt <PROMPT> Initial prompt to send to Claude
73+
-c, --continue Continue previous conversation
74+
-w, --wait <MINUTES> Minutes to wait on rate limit (default: 15)
75+
-V, --verbose Enable verbose logging to file
76+
--headless Run without user input (auto-respond to prompts)
77+
--dangerously-skip-permissions Pass dangerous flag to Claude (required for headless)
78+
--dangerous Alias for --dangerously-skip-permissions
79+
--diagnose Run environment diagnostics
6280
63-
```bash
64-
export CLAUDE_AUTO_RESUME_RETRY_DELAY=10000
65-
export CLAUDE_AUTO_RESUME_MAX_RETRIES=5
66-
```text
81+
ENVIRONMENT:
82+
CLAUDE_WAIT_MINUTES Override default wait time
83+
```
6784

68-
### Configuration File
85+
## Modes
6986

70-
Create `.claude-auto-resume.json` in your project directory or `~/.config/claude-auto-resume/config.json` for user-level config:
87+
### Interactive (Default)
7188

72-
```json
73-
{
74-
"retryDelayMs": 10000,
75-
"maxRetries": 5
76-
}
77-
```text
89+
- Full PTY pass-through with colors
90+
- You type, Claude responds
91+
- Auto-waits and continues on rate limit
92+
93+
### Headless (`--headless --dangerous`)
94+
95+
- No user input required
96+
- Auto-responds 'y' to permission prompts
97+
- Detects when Claude hangs waiting for input
98+
- Ideal for CI/CD pipelines
99+
100+
> **Warning:** `--dangerously-skip-permissions` allows Claude to execute commands
101+
> without confirmation. Use only in trusted environments.
78102
79103
## Development
80104

@@ -99,11 +123,12 @@ dotnet build
99123

100124
# Run tests
101125
dotnet test
102-
```text
126+
```
103127

104128
### For AI Agents
105129

106-
If you're an AI agent working on this codebase, start by reading [AGENTS.md](AGENTS.md) for orientation and documentation routing guidance.
130+
If you're an AI agent working on this codebase, start by reading [AGENTS.md](AGENTS.md)
131+
for orientation and documentation routing guidance.
107132

108133
### Documentation
109134

@@ -130,30 +155,33 @@ If you're an AI agent working on this codebase, start by reading [AGENTS.md](AGE
130155
131156
┌────────────────────────▼────────────────────────────┐
132157
│ claude-auto-resume (this tool) │
133-
│ • Wraps Claude CLI process
158+
│ • Wraps Claude CLI in pseudo-terminal
134159
│ • Monitors output for rate limits │
135160
│ • Auto-resumes when limit resets │
161+
│ • Handles prompts in headless mode │
136162
└────────────────────────┬────────────────────────────┘
137163
138164
┌────────────────────────▼────────────────────────────┐
139165
│ Claude CLI (Anthropic) │
140166
└─────────────────────────────────────────────────────┘
141-
```text
167+
```
142168

143169
## Exit Codes
144170

145-
| Code | Meaning |
146-
| ---- | -------------------------------------------- |
147-
| 0 | Success |
148-
| 1 | General error |
149-
| 2 | Configuration error |
150-
| 3 | Claude CLI not found |
151-
| 4 | Rate limit detected (when not auto-resuming) |
152-
| 5 | User cancelled (Ctrl+C) |
171+
| Code | Meaning |
172+
| ---- | ----------------------- |
173+
| 0 | Success |
174+
| 1 | General error |
175+
| 2 | Invalid arguments |
176+
| 3 | Configuration error |
177+
| 4 | Claude CLI not found |
178+
| 5 | Rate limit detected |
179+
| 6 | User cancelled (Ctrl+C) |
153180

154181
## Privacy
155182

156-
This tool collects **no telemetry, analytics, or usage data**. All data remains on your machine. See our [Privacy Policy](docs/standards/privacy.md) for details.
183+
This tool collects **no telemetry, analytics, or usage data**. All data remains on your
184+
machine. See our [Privacy Policy](docs/standards/privacy.md) for details.
157185

158186
## License
159187

@@ -163,4 +191,3 @@ This tool collects **no telemetry, analytics, or usage data**. All data remains
163191

164192
- [Anthropic](https://www.anthropic.com/) for the Claude CLI
165193
- All contributors to this project
166-
````

docs/adr/0031-pr-validation-automation.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ description: |
44
Automated PR validation using DangerJS to enforce Definition of Done
55
checklists, evidence requirements, and design plan archiving.
66
decision: Use DangerJS for automated PR validation with custom rules
7-
status: proposed
7+
status: accepted
88
audience: [developer, agent]
99
topics: [ci, automation, pr, validation, dangerjs]
1010
last_validated: 2026-01-11
@@ -14,7 +14,7 @@ last_validated: 2026-01-11
1414

1515
## Status
1616

17-
Proposed
17+
Accepted
1818

1919
## Context
2020

0 commit comments

Comments
 (0)