docwright 0.1.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- docwright-0.1.0/LICENSE +21 -0
- docwright-0.1.0/PKG-INFO +188 -0
- docwright-0.1.0/README.md +152 -0
- docwright-0.1.0/ai_docgen/__init__.py +0 -0
- docwright-0.1.0/ai_docgen/analyzer.py +59 -0
- docwright-0.1.0/ai_docgen/built_in_templates/__init__.py +0 -0
- docwright-0.1.0/ai_docgen/built_in_templates/readme/__init__.py +0 -0
- docwright-0.1.0/ai_docgen/built_in_templates/readme/default.md.j2 +30 -0
- docwright-0.1.0/ai_docgen/built_in_templates/wiki/__init__.py +0 -0
- docwright-0.1.0/ai_docgen/built_in_templates/wiki/adr.md.j2 +27 -0
- docwright-0.1.0/ai_docgen/built_in_templates/wiki/api-contracts.md.j2 +20 -0
- docwright-0.1.0/ai_docgen/built_in_templates/wiki/architecture.md.j2 +25 -0
- docwright-0.1.0/ai_docgen/built_in_templates/wiki/data-model.md.j2 +22 -0
- docwright-0.1.0/ai_docgen/built_in_templates/wiki/db-schema.md.j2 +22 -0
- docwright-0.1.0/ai_docgen/built_in_templates/wiki/development-guide.md.j2 +22 -0
- docwright-0.1.0/ai_docgen/built_in_templates/wiki/integrations.md.j2 +22 -0
- docwright-0.1.0/ai_docgen/built_in_templates/wiki/operations.md.j2 +27 -0
- docwright-0.1.0/ai_docgen/built_in_templates/wiki/security.md.j2 +22 -0
- docwright-0.1.0/ai_docgen/built_in_templates/wiki/troubleshooting.md.j2 +22 -0
- docwright-0.1.0/ai_docgen/cli.py +136 -0
- docwright-0.1.0/ai_docgen/config.py +71 -0
- docwright-0.1.0/ai_docgen/engine.py +165 -0
- docwright-0.1.0/ai_docgen/outputs/__init__.py +0 -0
- docwright-0.1.0/ai_docgen/outputs/base.py +7 -0
- docwright-0.1.0/ai_docgen/outputs/direct.py +16 -0
- docwright-0.1.0/ai_docgen/outputs/factory.py +12 -0
- docwright-0.1.0/ai_docgen/outputs/pull_request.py +69 -0
- docwright-0.1.0/ai_docgen/providers/__init__.py +0 -0
- docwright-0.1.0/ai_docgen/providers/base.py +6 -0
- docwright-0.1.0/ai_docgen/providers/claude.py +22 -0
- docwright-0.1.0/ai_docgen/providers/factory.py +26 -0
- docwright-0.1.0/ai_docgen/providers/ollama.py +25 -0
- docwright-0.1.0/ai_docgen/providers/openai.py +20 -0
- docwright-0.1.0/ai_docgen/registry.py +125 -0
- docwright-0.1.0/ai_docgen/renderer.py +104 -0
- docwright-0.1.0/ai_docgen/reporters/__init__.py +0 -0
- docwright-0.1.0/ai_docgen/reporters/html.py +54 -0
- docwright-0.1.0/ai_docgen/reporters/terminal.py +31 -0
- docwright-0.1.0/ai_docgen/scaffolder.py +163 -0
- docwright-0.1.0/pyproject.toml +64 -0
docwright-0.1.0/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Artem Gotlib
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
docwright-0.1.0/PKG-INFO
ADDED
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: docwright
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: AI-powered documentation agent: auto-generates and maintains README & wiki on every commit
|
|
5
|
+
License: MIT
|
|
6
|
+
License-File: LICENSE
|
|
7
|
+
Keywords: documentation,ai,llm,claude,openai,git,automation
|
|
8
|
+
Author: Artem Gotlib
|
|
9
|
+
Author-email: gotlib.artem.m@gmail.com
|
|
10
|
+
Requires-Python: >=3.11,<4.0
|
|
11
|
+
Classifier: Development Status :: 3 - Alpha
|
|
12
|
+
Classifier: Environment :: Console
|
|
13
|
+
Classifier: Intended Audience :: Developers
|
|
14
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
15
|
+
Classifier: Programming Language :: Python :: 3
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
20
|
+
Classifier: Topic :: Documentation
|
|
21
|
+
Classifier: Topic :: Software Development :: Documentation
|
|
22
|
+
Classifier: Topic :: Utilities
|
|
23
|
+
Requires-Dist: anthropic (>=0.28,<0.29)
|
|
24
|
+
Requires-Dist: click (>=8.1,<9.0)
|
|
25
|
+
Requires-Dist: gitpython (>=3.1,<4.0)
|
|
26
|
+
Requires-Dist: httpx (>=0.27,<0.28)
|
|
27
|
+
Requires-Dist: jinja2 (>=3.1,<4.0)
|
|
28
|
+
Requires-Dist: openai (>=1.30,<2.0)
|
|
29
|
+
Requires-Dist: pydantic (>=2.0,<3.0)
|
|
30
|
+
Requires-Dist: pyyaml (>=6.0,<7.0)
|
|
31
|
+
Requires-Dist: rich (>=13.0,<14.0)
|
|
32
|
+
Project-URL: Homepage, https://github.com/GotlibArtem/ai-docgen
|
|
33
|
+
Project-URL: Repository, https://github.com/GotlibArtem/ai-docgen
|
|
34
|
+
Description-Content-Type: text/markdown
|
|
35
|
+
|
|
36
|
+
# ai-docgen
|
|
37
|
+
|
|
38
|
+
AI-powered documentation agent that watches your commits and keeps README and wiki pages up to date automatically.
|
|
39
|
+
|
|
40
|
+
## How It Works
|
|
41
|
+
|
|
42
|
+
```
|
|
43
|
+
Developer commits / pushes
|
|
44
|
+
│
|
|
45
|
+
▼
|
|
46
|
+
CI runs ai-docgen
|
|
47
|
+
│
|
|
48
|
+
├─ First run?
|
|
49
|
+
│ └─ Generates all docs from scratch via LLM
|
|
50
|
+
│
|
|
51
|
+
└─ Already initialized?
|
|
52
|
+
├─ No relevant changes → skips (fast)
|
|
53
|
+
└─ Relevant changes → updates only affected AUTO sections
|
|
54
|
+
│
|
|
55
|
+
▼
|
|
56
|
+
Direct commit OR Pull Request (configurable)
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
The agent only rewrites `<!-- AUTO:section -->` blocks. Anything you write manually stays untouched.
|
|
60
|
+
|
|
61
|
+
## Quick Start
|
|
62
|
+
|
|
63
|
+
Install into any repository:
|
|
64
|
+
|
|
65
|
+
```bash
|
|
66
|
+
pip install ai-docgen
|
|
67
|
+
ai-docgen install
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
This asks two questions (AI provider, commit mode) and creates:
|
|
71
|
+
- `.ai-docgen/ai-docgen.yml` — config
|
|
72
|
+
- `Makefile` targets: `make docs`, `make docs-sync`
|
|
73
|
+
- CI workflow (GitHub Actions or GitLab CI)
|
|
74
|
+
|
|
75
|
+
Then generate docs for the first time:
|
|
76
|
+
|
|
77
|
+
```bash
|
|
78
|
+
make docs
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
After that, docs update automatically on every push.
|
|
82
|
+
|
|
83
|
+
## CLI Commands
|
|
84
|
+
|
|
85
|
+
| Command | Description |
|
|
86
|
+
|---------|-------------|
|
|
87
|
+
| `ai-docgen install` | Bootstrap a repository (interactive or `--auto`) |
|
|
88
|
+
| `ai-docgen init` | Generate all documents from scratch |
|
|
89
|
+
| `ai-docgen run` | Update changed sections based on latest diff |
|
|
90
|
+
| `ai-docgen sync` | Force re-sync all AUTO sections |
|
|
91
|
+
| `ai-docgen dashboard` | Terminal table of all registered projects |
|
|
92
|
+
| `ai-docgen report` | Generate static HTML status report |
|
|
93
|
+
|
|
94
|
+
## Configuration
|
|
95
|
+
|
|
96
|
+
`.ai-docgen/ai-docgen.yml`:
|
|
97
|
+
|
|
98
|
+
```yaml
|
|
99
|
+
provider:
|
|
100
|
+
type: claude # claude | openai | ollama
|
|
101
|
+
model: claude-opus-4-7
|
|
102
|
+
api_key_env: ANTHROPIC_API_KEY
|
|
103
|
+
|
|
104
|
+
output:
|
|
105
|
+
mode: direct # direct | pull_request
|
|
106
|
+
|
|
107
|
+
triggers:
|
|
108
|
+
paths:
|
|
109
|
+
- "src/**"
|
|
110
|
+
- "app/**"
|
|
111
|
+
ignore:
|
|
112
|
+
- "tests/**"
|
|
113
|
+
|
|
114
|
+
documents:
|
|
115
|
+
- type: readme
|
|
116
|
+
template: readme/default
|
|
117
|
+
target: README.md
|
|
118
|
+
- type: wiki
|
|
119
|
+
template: wiki/architecture
|
|
120
|
+
target: docs/wiki/architecture.md
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
## Supported Providers
|
|
124
|
+
|
|
125
|
+
| Provider | When to use |
|
|
126
|
+
|----------|-------------|
|
|
127
|
+
| Claude (Anthropic) | Best output quality |
|
|
128
|
+
| OpenAI (GPT-4o) | Alternative if you have OpenAI keys |
|
|
129
|
+
| Ollama | Local model, no external API — for private projects |
|
|
130
|
+
|
|
131
|
+
## Document Templates
|
|
132
|
+
|
|
133
|
+
Built-in templates cover the full documentation surface:
|
|
134
|
+
|
|
135
|
+
| Template | AUTO sections |
|
|
136
|
+
|----------|---------------|
|
|
137
|
+
| `readme/default` | overview, getting_started, architecture, api, development |
|
|
138
|
+
| `wiki/architecture` | overview, components, data_flow, dependencies |
|
|
139
|
+
| `wiki/api-contracts` | endpoints, authentication, error_codes |
|
|
140
|
+
| `wiki/development-guide` | setup, testing, code_style |
|
|
141
|
+
| `wiki/operations` | deployment, monitoring, runbooks, incident_response |
|
|
142
|
+
| `wiki/data-model` | entities, business_rules, relationships |
|
|
143
|
+
| `wiki/db-schema` | tables, indexes, migrations |
|
|
144
|
+
| `wiki/integrations` | external_services, auth_credentials, data_exchange |
|
|
145
|
+
| `wiki/security` | access_model, sensitive_data, requirements |
|
|
146
|
+
| `wiki/troubleshooting` | common_issues, diagnostics, known_limitations |
|
|
147
|
+
| `wiki/adr` | recent_decisions, decision_index |
|
|
148
|
+
|
|
149
|
+
Custom templates go in `.ai-docgen/templates/` inside your repository.
|
|
150
|
+
|
|
151
|
+
## AUTO / MANUAL Sections
|
|
152
|
+
|
|
153
|
+
```markdown
|
|
154
|
+
# README
|
|
155
|
+
|
|
156
|
+
<!-- AUTO:overview -->
|
|
157
|
+
This section is managed by ai-docgen.
|
|
158
|
+
<!-- /AUTO:overview -->
|
|
159
|
+
|
|
160
|
+
<!-- MANUAL -->
|
|
161
|
+
## Contributing
|
|
162
|
+
|
|
163
|
+
Write whatever you want here — ai-docgen never touches MANUAL blocks.
|
|
164
|
+
<!-- /MANUAL -->
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
## Central Registry
|
|
168
|
+
|
|
169
|
+
After `ai-docgen init`, the project is registered in a central `registry.yml`. View all projects:
|
|
170
|
+
|
|
171
|
+
```bash
|
|
172
|
+
ai-docgen dashboard # terminal table
|
|
173
|
+
ai-docgen report # HTML page at ai-docgen-report.html
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
## Development
|
|
177
|
+
|
|
178
|
+
```bash
|
|
179
|
+
poetry install
|
|
180
|
+
poetry run pytest # 46 tests
|
|
181
|
+
poetry run ruff check . # lint
|
|
182
|
+
poetry run mypy ai_docgen # type check
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
## License
|
|
186
|
+
|
|
187
|
+
MIT
|
|
188
|
+
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
# ai-docgen
|
|
2
|
+
|
|
3
|
+
AI-powered documentation agent that watches your commits and keeps README and wiki pages up to date automatically.
|
|
4
|
+
|
|
5
|
+
## How It Works
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
Developer commits / pushes
|
|
9
|
+
│
|
|
10
|
+
▼
|
|
11
|
+
CI runs ai-docgen
|
|
12
|
+
│
|
|
13
|
+
├─ First run?
|
|
14
|
+
│ └─ Generates all docs from scratch via LLM
|
|
15
|
+
│
|
|
16
|
+
└─ Already initialized?
|
|
17
|
+
├─ No relevant changes → skips (fast)
|
|
18
|
+
└─ Relevant changes → updates only affected AUTO sections
|
|
19
|
+
│
|
|
20
|
+
▼
|
|
21
|
+
Direct commit OR Pull Request (configurable)
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
The agent only rewrites `<!-- AUTO:section -->` blocks. Anything you write manually stays untouched.
|
|
25
|
+
|
|
26
|
+
## Quick Start
|
|
27
|
+
|
|
28
|
+
Install into any repository:
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
pip install ai-docgen
|
|
32
|
+
ai-docgen install
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
This asks two questions (AI provider, commit mode) and creates:
|
|
36
|
+
- `.ai-docgen/ai-docgen.yml` — config
|
|
37
|
+
- `Makefile` targets: `make docs`, `make docs-sync`
|
|
38
|
+
- CI workflow (GitHub Actions or GitLab CI)
|
|
39
|
+
|
|
40
|
+
Then generate docs for the first time:
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
make docs
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
After that, docs update automatically on every push.
|
|
47
|
+
|
|
48
|
+
## CLI Commands
|
|
49
|
+
|
|
50
|
+
| Command | Description |
|
|
51
|
+
|---------|-------------|
|
|
52
|
+
| `ai-docgen install` | Bootstrap a repository (interactive or `--auto`) |
|
|
53
|
+
| `ai-docgen init` | Generate all documents from scratch |
|
|
54
|
+
| `ai-docgen run` | Update changed sections based on latest diff |
|
|
55
|
+
| `ai-docgen sync` | Force re-sync all AUTO sections |
|
|
56
|
+
| `ai-docgen dashboard` | Terminal table of all registered projects |
|
|
57
|
+
| `ai-docgen report` | Generate static HTML status report |
|
|
58
|
+
|
|
59
|
+
## Configuration
|
|
60
|
+
|
|
61
|
+
`.ai-docgen/ai-docgen.yml`:
|
|
62
|
+
|
|
63
|
+
```yaml
|
|
64
|
+
provider:
|
|
65
|
+
type: claude # claude | openai | ollama
|
|
66
|
+
model: claude-opus-4-7
|
|
67
|
+
api_key_env: ANTHROPIC_API_KEY
|
|
68
|
+
|
|
69
|
+
output:
|
|
70
|
+
mode: direct # direct | pull_request
|
|
71
|
+
|
|
72
|
+
triggers:
|
|
73
|
+
paths:
|
|
74
|
+
- "src/**"
|
|
75
|
+
- "app/**"
|
|
76
|
+
ignore:
|
|
77
|
+
- "tests/**"
|
|
78
|
+
|
|
79
|
+
documents:
|
|
80
|
+
- type: readme
|
|
81
|
+
template: readme/default
|
|
82
|
+
target: README.md
|
|
83
|
+
- type: wiki
|
|
84
|
+
template: wiki/architecture
|
|
85
|
+
target: docs/wiki/architecture.md
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
## Supported Providers
|
|
89
|
+
|
|
90
|
+
| Provider | When to use |
|
|
91
|
+
|----------|-------------|
|
|
92
|
+
| Claude (Anthropic) | Best output quality |
|
|
93
|
+
| OpenAI (GPT-4o) | Alternative if you have OpenAI keys |
|
|
94
|
+
| Ollama | Local model, no external API — for private projects |
|
|
95
|
+
|
|
96
|
+
## Document Templates
|
|
97
|
+
|
|
98
|
+
Built-in templates cover the full documentation surface:
|
|
99
|
+
|
|
100
|
+
| Template | AUTO sections |
|
|
101
|
+
|----------|---------------|
|
|
102
|
+
| `readme/default` | overview, getting_started, architecture, api, development |
|
|
103
|
+
| `wiki/architecture` | overview, components, data_flow, dependencies |
|
|
104
|
+
| `wiki/api-contracts` | endpoints, authentication, error_codes |
|
|
105
|
+
| `wiki/development-guide` | setup, testing, code_style |
|
|
106
|
+
| `wiki/operations` | deployment, monitoring, runbooks, incident_response |
|
|
107
|
+
| `wiki/data-model` | entities, business_rules, relationships |
|
|
108
|
+
| `wiki/db-schema` | tables, indexes, migrations |
|
|
109
|
+
| `wiki/integrations` | external_services, auth_credentials, data_exchange |
|
|
110
|
+
| `wiki/security` | access_model, sensitive_data, requirements |
|
|
111
|
+
| `wiki/troubleshooting` | common_issues, diagnostics, known_limitations |
|
|
112
|
+
| `wiki/adr` | recent_decisions, decision_index |
|
|
113
|
+
|
|
114
|
+
Custom templates go in `.ai-docgen/templates/` inside your repository.
|
|
115
|
+
|
|
116
|
+
## AUTO / MANUAL Sections
|
|
117
|
+
|
|
118
|
+
```markdown
|
|
119
|
+
# README
|
|
120
|
+
|
|
121
|
+
<!-- AUTO:overview -->
|
|
122
|
+
This section is managed by ai-docgen.
|
|
123
|
+
<!-- /AUTO:overview -->
|
|
124
|
+
|
|
125
|
+
<!-- MANUAL -->
|
|
126
|
+
## Contributing
|
|
127
|
+
|
|
128
|
+
Write whatever you want here — ai-docgen never touches MANUAL blocks.
|
|
129
|
+
<!-- /MANUAL -->
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
## Central Registry
|
|
133
|
+
|
|
134
|
+
After `ai-docgen init`, the project is registered in a central `registry.yml`. View all projects:
|
|
135
|
+
|
|
136
|
+
```bash
|
|
137
|
+
ai-docgen dashboard # terminal table
|
|
138
|
+
ai-docgen report # HTML page at ai-docgen-report.html
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
## Development
|
|
142
|
+
|
|
143
|
+
```bash
|
|
144
|
+
poetry install
|
|
145
|
+
poetry run pytest # 46 tests
|
|
146
|
+
poetry run ruff check . # lint
|
|
147
|
+
poetry run mypy ai_docgen # type check
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
## License
|
|
151
|
+
|
|
152
|
+
MIT
|
|
File without changes
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
import fnmatch
|
|
4
|
+
import re
|
|
5
|
+
from dataclasses import dataclass
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
@dataclass
|
|
9
|
+
class ChangedFile:
|
|
10
|
+
path: str
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class DiffAnalyzer:
|
|
14
|
+
def __init__(
|
|
15
|
+
self,
|
|
16
|
+
diff_text: str,
|
|
17
|
+
trigger_paths: list[str],
|
|
18
|
+
ignore_paths: list[str],
|
|
19
|
+
) -> None:
|
|
20
|
+
self.diff_text = diff_text
|
|
21
|
+
self.trigger_paths = trigger_paths
|
|
22
|
+
self.ignore_paths = ignore_paths
|
|
23
|
+
|
|
24
|
+
def changed_files(self) -> list[ChangedFile]:
|
|
25
|
+
paths: list[str] = []
|
|
26
|
+
for line in self.diff_text.splitlines():
|
|
27
|
+
match = re.match(r"^\+\+\+ b/(.+)$", line)
|
|
28
|
+
if match:
|
|
29
|
+
paths.append(match.group(1))
|
|
30
|
+
return [ChangedFile(path=p) for p in paths]
|
|
31
|
+
|
|
32
|
+
def has_relevant_changes(self) -> bool:
|
|
33
|
+
for changed in self.changed_files():
|
|
34
|
+
if self.is_ignored(changed.path):
|
|
35
|
+
continue
|
|
36
|
+
if self.matches_trigger(changed.path):
|
|
37
|
+
return True
|
|
38
|
+
return False
|
|
39
|
+
|
|
40
|
+
def diff_summary(self) -> str:
|
|
41
|
+
files = self.changed_files()
|
|
42
|
+
if not files:
|
|
43
|
+
return "No changed files."
|
|
44
|
+
lines = ["Changed files:"]
|
|
45
|
+
for f in files:
|
|
46
|
+
lines.append(f" - {f.path}")
|
|
47
|
+
lines.append("")
|
|
48
|
+
lines.append(self.diff_text[:3000])
|
|
49
|
+
if len(self.diff_text) > 3000:
|
|
50
|
+
lines.append("... (truncated)")
|
|
51
|
+
return "\n".join(lines)
|
|
52
|
+
|
|
53
|
+
def is_ignored(self, path: str) -> bool:
|
|
54
|
+
return any(fnmatch.fnmatch(path, pattern) for pattern in self.ignore_paths)
|
|
55
|
+
|
|
56
|
+
def matches_trigger(self, path: str) -> bool:
|
|
57
|
+
if not self.trigger_paths:
|
|
58
|
+
return True
|
|
59
|
+
return any(fnmatch.fnmatch(path, pattern) for pattern in self.trigger_paths)
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# {{ service_name }}
|
|
2
|
+
|
|
3
|
+
<!-- AUTO:overview -->
|
|
4
|
+
<!-- /AUTO:overview -->
|
|
5
|
+
|
|
6
|
+
## Getting Started
|
|
7
|
+
|
|
8
|
+
<!-- AUTO:getting_started -->
|
|
9
|
+
<!-- /AUTO:getting_started -->
|
|
10
|
+
|
|
11
|
+
## Architecture
|
|
12
|
+
|
|
13
|
+
<!-- AUTO:architecture -->
|
|
14
|
+
<!-- /AUTO:architecture -->
|
|
15
|
+
|
|
16
|
+
## API
|
|
17
|
+
|
|
18
|
+
<!-- AUTO:api -->
|
|
19
|
+
<!-- /AUTO:api -->
|
|
20
|
+
|
|
21
|
+
## Development
|
|
22
|
+
|
|
23
|
+
<!-- AUTO:development -->
|
|
24
|
+
<!-- /AUTO:development -->
|
|
25
|
+
|
|
26
|
+
<!-- MANUAL -->
|
|
27
|
+
## Contributing
|
|
28
|
+
|
|
29
|
+
Add contributing notes here.
|
|
30
|
+
<!-- /MANUAL -->
|
|
File without changes
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# Architecture Decision Records
|
|
2
|
+
|
|
3
|
+
## Recent Decisions
|
|
4
|
+
|
|
5
|
+
<!-- AUTO:recent_decisions -->
|
|
6
|
+
<!-- /AUTO:recent_decisions -->
|
|
7
|
+
|
|
8
|
+
## Decision Index
|
|
9
|
+
|
|
10
|
+
<!-- AUTO:decision_index -->
|
|
11
|
+
<!-- /AUTO:decision_index -->
|
|
12
|
+
|
|
13
|
+
<!-- MANUAL -->
|
|
14
|
+
## ADR Template
|
|
15
|
+
|
|
16
|
+
Use this format for new decisions:
|
|
17
|
+
|
|
18
|
+
### ADR-NNN: Title
|
|
19
|
+
|
|
20
|
+
**Status:** Proposed / Accepted / Deprecated / Superseded
|
|
21
|
+
|
|
22
|
+
**Context:** What prompted this decision.
|
|
23
|
+
|
|
24
|
+
**Decision:** What was decided.
|
|
25
|
+
|
|
26
|
+
**Consequences:** What changes as a result.
|
|
27
|
+
<!-- /MANUAL -->
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# API Contracts
|
|
2
|
+
|
|
3
|
+
<!-- AUTO:endpoints -->
|
|
4
|
+
<!-- /AUTO:endpoints -->
|
|
5
|
+
|
|
6
|
+
## Authentication
|
|
7
|
+
|
|
8
|
+
<!-- AUTO:authentication -->
|
|
9
|
+
<!-- /AUTO:authentication -->
|
|
10
|
+
|
|
11
|
+
## Error Codes
|
|
12
|
+
|
|
13
|
+
<!-- AUTO:error_codes -->
|
|
14
|
+
<!-- /AUTO:error_codes -->
|
|
15
|
+
|
|
16
|
+
<!-- MANUAL -->
|
|
17
|
+
## Changelog
|
|
18
|
+
|
|
19
|
+
Document breaking changes here.
|
|
20
|
+
<!-- /MANUAL -->
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# Architecture
|
|
2
|
+
|
|
3
|
+
<!-- AUTO:overview -->
|
|
4
|
+
<!-- /AUTO:overview -->
|
|
5
|
+
|
|
6
|
+
## Components
|
|
7
|
+
|
|
8
|
+
<!-- AUTO:components -->
|
|
9
|
+
<!-- /AUTO:components -->
|
|
10
|
+
|
|
11
|
+
## Data Flow
|
|
12
|
+
|
|
13
|
+
<!-- AUTO:data_flow -->
|
|
14
|
+
<!-- /AUTO:data_flow -->
|
|
15
|
+
|
|
16
|
+
## Dependencies
|
|
17
|
+
|
|
18
|
+
<!-- AUTO:dependencies -->
|
|
19
|
+
<!-- /AUTO:dependencies -->
|
|
20
|
+
|
|
21
|
+
<!-- MANUAL -->
|
|
22
|
+
## Decision Log
|
|
23
|
+
|
|
24
|
+
Document architectural decisions here.
|
|
25
|
+
<!-- /MANUAL -->
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# Data Model
|
|
2
|
+
|
|
3
|
+
## Domain Entities
|
|
4
|
+
|
|
5
|
+
<!-- AUTO:entities -->
|
|
6
|
+
<!-- /AUTO:entities -->
|
|
7
|
+
|
|
8
|
+
## Business Rules
|
|
9
|
+
|
|
10
|
+
<!-- AUTO:business_rules -->
|
|
11
|
+
<!-- /AUTO:business_rules -->
|
|
12
|
+
|
|
13
|
+
## Relationships
|
|
14
|
+
|
|
15
|
+
<!-- AUTO:relationships -->
|
|
16
|
+
<!-- /AUTO:relationships -->
|
|
17
|
+
|
|
18
|
+
<!-- MANUAL -->
|
|
19
|
+
## Glossary
|
|
20
|
+
|
|
21
|
+
Define domain terms here.
|
|
22
|
+
<!-- /MANUAL -->
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# Database Schema
|
|
2
|
+
|
|
3
|
+
## Tables
|
|
4
|
+
|
|
5
|
+
<!-- AUTO:tables -->
|
|
6
|
+
<!-- /AUTO:tables -->
|
|
7
|
+
|
|
8
|
+
## Indexes
|
|
9
|
+
|
|
10
|
+
<!-- AUTO:indexes -->
|
|
11
|
+
<!-- /AUTO:indexes -->
|
|
12
|
+
|
|
13
|
+
## Migrations
|
|
14
|
+
|
|
15
|
+
<!-- AUTO:migrations -->
|
|
16
|
+
<!-- /AUTO:migrations -->
|
|
17
|
+
|
|
18
|
+
<!-- MANUAL -->
|
|
19
|
+
## Migration Runbook
|
|
20
|
+
|
|
21
|
+
Document manual migration steps and rollback procedures here.
|
|
22
|
+
<!-- /MANUAL -->
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# Development Guide
|
|
2
|
+
|
|
3
|
+
## Setup
|
|
4
|
+
|
|
5
|
+
<!-- AUTO:setup -->
|
|
6
|
+
<!-- /AUTO:setup -->
|
|
7
|
+
|
|
8
|
+
## Running Tests
|
|
9
|
+
|
|
10
|
+
<!-- AUTO:testing -->
|
|
11
|
+
<!-- /AUTO:testing -->
|
|
12
|
+
|
|
13
|
+
## Code Style
|
|
14
|
+
|
|
15
|
+
<!-- AUTO:code_style -->
|
|
16
|
+
<!-- /AUTO:code_style -->
|
|
17
|
+
|
|
18
|
+
<!-- MANUAL -->
|
|
19
|
+
## Team Conventions
|
|
20
|
+
|
|
21
|
+
Add team-specific conventions here.
|
|
22
|
+
<!-- /MANUAL -->
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# Integrations
|
|
2
|
+
|
|
3
|
+
## External Services
|
|
4
|
+
|
|
5
|
+
<!-- AUTO:external_services -->
|
|
6
|
+
<!-- /AUTO:external_services -->
|
|
7
|
+
|
|
8
|
+
## Authentication & Credentials
|
|
9
|
+
|
|
10
|
+
<!-- AUTO:auth_credentials -->
|
|
11
|
+
<!-- /AUTO:auth_credentials -->
|
|
12
|
+
|
|
13
|
+
## Data Exchange
|
|
14
|
+
|
|
15
|
+
<!-- AUTO:data_exchange -->
|
|
16
|
+
<!-- /AUTO:data_exchange -->
|
|
17
|
+
|
|
18
|
+
<!-- MANUAL -->
|
|
19
|
+
## Integration Contacts
|
|
20
|
+
|
|
21
|
+
Document vendor contacts and SLA details here.
|
|
22
|
+
<!-- /MANUAL -->
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# Operations
|
|
2
|
+
|
|
3
|
+
## Deployment
|
|
4
|
+
|
|
5
|
+
<!-- AUTO:deployment -->
|
|
6
|
+
<!-- /AUTO:deployment -->
|
|
7
|
+
|
|
8
|
+
## Monitoring
|
|
9
|
+
|
|
10
|
+
<!-- AUTO:monitoring -->
|
|
11
|
+
<!-- /AUTO:monitoring -->
|
|
12
|
+
|
|
13
|
+
## Runbooks
|
|
14
|
+
|
|
15
|
+
<!-- AUTO:runbooks -->
|
|
16
|
+
<!-- /AUTO:runbooks -->
|
|
17
|
+
|
|
18
|
+
## Incident Response
|
|
19
|
+
|
|
20
|
+
<!-- AUTO:incident_response -->
|
|
21
|
+
<!-- /AUTO:incident_response -->
|
|
22
|
+
|
|
23
|
+
<!-- MANUAL -->
|
|
24
|
+
## On-Call Contacts
|
|
25
|
+
|
|
26
|
+
Document on-call rotation and escalation paths here.
|
|
27
|
+
<!-- /MANUAL -->
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# Security
|
|
2
|
+
|
|
3
|
+
## Access Model
|
|
4
|
+
|
|
5
|
+
<!-- AUTO:access_model -->
|
|
6
|
+
<!-- /AUTO:access_model -->
|
|
7
|
+
|
|
8
|
+
## Sensitive Data Handling
|
|
9
|
+
|
|
10
|
+
<!-- AUTO:sensitive_data -->
|
|
11
|
+
<!-- /AUTO:sensitive_data -->
|
|
12
|
+
|
|
13
|
+
## Security Requirements
|
|
14
|
+
|
|
15
|
+
<!-- AUTO:requirements -->
|
|
16
|
+
<!-- /AUTO:requirements -->
|
|
17
|
+
|
|
18
|
+
<!-- MANUAL -->
|
|
19
|
+
## Security Contacts
|
|
20
|
+
|
|
21
|
+
Document responsible disclosure process and security team contacts here.
|
|
22
|
+
<!-- /MANUAL -->
|