devdaily-ai 0.4.0 → 0.6.0
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.
- package/CHANGELOG.md +197 -0
- package/CONTRIBUTING.md +264 -0
- package/LICENSE +1 -1
- package/README.md +364 -476
- package/dist/index.js +7554 -3004
- package/dist/index.js.map +1 -1
- package/package.json +10 -5
- package/README.md.bak +0 -595
package/README.md
CHANGED
|
@@ -2,662 +2,550 @@
|
|
|
2
2
|
|
|
3
3
|
# DevDaily AI
|
|
4
4
|
|
|
5
|
-
**Your AI-powered developer memory
|
|
5
|
+
**Your AI-powered developer memory.**
|
|
6
6
|
|
|
7
7
|
Auto-generate standup notes, PR descriptions, and weekly summaries from your git history.
|
|
8
8
|
|
|
9
|
-
[](https://www.npmjs.com/package/devdaily-ai)
|
|
10
|
+
[](https://github.com/hempun10/devdaily/actions/workflows/ci.yml)
|
|
10
11
|
[](https://nodejs.org)
|
|
11
|
-
[](https://github.com/hempun10/devdaily)
|
|
12
|
+
[](LICENSE)
|
|
13
13
|
|
|
14
|
-
[Installation](#installation)
|
|
14
|
+
[Installation](#installation) · [Quick Start](#quick-start) · [Commands](#commands) · [Configuration](#configuration) · [Contributing](CONTRIBUTING.md)
|
|
15
15
|
|
|
16
16
|
</div>
|
|
17
17
|
|
|
18
18
|
---
|
|
19
19
|
|
|
20
|
-
## Why DevDaily
|
|
20
|
+
## Why DevDaily?
|
|
21
21
|
|
|
22
|
-
|
|
22
|
+
Developers lose hours every week writing standup notes, crafting PR descriptions, compiling weekly reports, and trying to remember what they were doing before a context switch.
|
|
23
23
|
|
|
24
|
-
|
|
25
|
-
- 📝 Crafting PR descriptions from scratch
|
|
26
|
-
- 📊 Summarizing weekly accomplishments
|
|
27
|
-
- 🔍 Remembering what we were working on last week
|
|
24
|
+
DevDaily analyzes your git history, tracks your work automatically, and uses GitHub Copilot CLI to generate professional summaries — in seconds.
|
|
28
25
|
|
|
29
|
-
**DevDaily
|
|
26
|
+
**Key differentiator:** DevDaily builds a **persistent local memory** of your work. Every standup you run, every PR you generate, every branch you switch — DevDaily silently records a snapshot. That means:
|
|
27
|
+
|
|
28
|
+
- `devdaily context` tells you exactly where you left off, even days later
|
|
29
|
+
- `devdaily recall auth` finds every time you touched authentication code
|
|
30
|
+
- `devdaily week` produces accurate summaries from your local journal
|
|
31
|
+
- Cross-project summaries work across all your repositories
|
|
32
|
+
|
|
33
|
+
No cloud. No telemetry. Everything stays in `~/.config/devdaily/journal/`.
|
|
34
|
+
|
|
35
|
+
---
|
|
30
36
|
|
|
31
37
|
## Features
|
|
32
38
|
|
|
33
|
-
| Feature
|
|
34
|
-
|
|
|
35
|
-
|
|
|
36
|
-
|
|
|
37
|
-
|
|
|
38
|
-
|
|
|
39
|
-
|
|
|
40
|
-
|
|
|
41
|
-
|
|
|
42
|
-
|
|
|
43
|
-
|
|
|
44
|
-
|
|
|
45
|
-
|
|
46
|
-
|
|
39
|
+
| Feature | Description |
|
|
40
|
+
| --------------------- | ------------------------------------------------------------------ |
|
|
41
|
+
| **Standup Generator** | Generate daily standup notes from commits, PRs, and tickets |
|
|
42
|
+
| **PR Descriptions** | Auto-generate titles and bodies with template + commitlint support |
|
|
43
|
+
| **Weekly Summaries** | Compile weekly accomplishments with stats and AI analysis |
|
|
44
|
+
| **Context Recovery** | Recover where you left off after a context switch |
|
|
45
|
+
| **Work Search** | Search your work history by keyword, file, tag, or date |
|
|
46
|
+
| **Auto-Snapshots** | Silent work tracking as a side-effect of commands you already run |
|
|
47
|
+
| **Git Hooks** | Opt-in `post-commit` and `post-checkout` hooks for extra coverage |
|
|
48
|
+
| **PM Integration** | GitHub Issues, Jira, and Linear ticket linking |
|
|
49
|
+
| **Notifications** | Send standups to Slack or Discord via webhooks |
|
|
50
|
+
| **Output Formats** | Markdown, Slack, plain text, and JSON output |
|
|
51
|
+
|
|
52
|
+
---
|
|
47
53
|
|
|
48
54
|
## Installation
|
|
49
55
|
|
|
50
|
-
|
|
56
|
+
### Prerequisites
|
|
51
57
|
|
|
52
|
-
- Node.js >= 18.0.0
|
|
53
|
-
- Git
|
|
54
|
-
- GitHub CLI
|
|
58
|
+
- [Node.js](https://nodejs.org) >= 18.0.0
|
|
59
|
+
- [Git](https://git-scm.com)
|
|
60
|
+
- [GitHub CLI](https://cli.github.com) (`gh`)
|
|
61
|
+
- [GitHub Copilot CLI extension](https://github.com/github/gh-copilot) (`gh extension install github/gh-copilot`)
|
|
55
62
|
|
|
56
|
-
###
|
|
63
|
+
### Install
|
|
57
64
|
|
|
58
65
|
```bash
|
|
59
|
-
# Install DevDaily
|
|
60
66
|
npm install -g devdaily-ai
|
|
61
|
-
|
|
62
|
-
# Run doctor to check/fix prerequisites
|
|
63
|
-
devdaily doctor --fix
|
|
64
|
-
|
|
65
|
-
# Set up shell alias and completions
|
|
66
|
-
devdaily init
|
|
67
67
|
```
|
|
68
68
|
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
### Manual Setup
|
|
72
|
-
|
|
73
|
-
If you prefer to set up manually:
|
|
74
|
-
|
|
75
|
-
#### 1. Install GitHub CLI (if not already installed)
|
|
69
|
+
### Verify
|
|
76
70
|
|
|
77
71
|
```bash
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
# Windows
|
|
82
|
-
winget install --id GitHub.cli
|
|
83
|
-
|
|
84
|
-
# Linux
|
|
85
|
-
sudo apt install gh # Debian/Ubuntu
|
|
86
|
-
sudo dnf install gh # Fedora/RHEL
|
|
72
|
+
devdaily --version
|
|
73
|
+
devdaily doctor # Check all prerequisites
|
|
87
74
|
```
|
|
88
75
|
|
|
89
|
-
|
|
76
|
+
### GitHub Copilot CLI Setup
|
|
90
77
|
|
|
91
|
-
|
|
78
|
+
DevDaily uses GitHub Copilot CLI for AI-powered text generation. Set it up once:
|
|
92
79
|
|
|
93
80
|
```bash
|
|
94
|
-
gh extension install github/gh-copilot
|
|
95
81
|
gh auth login
|
|
82
|
+
gh extension install github/gh-copilot
|
|
83
|
+
gh copilot --version # Verify it works
|
|
96
84
|
```
|
|
97
85
|
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
```bash
|
|
101
|
-
npm install -g devdaily-ai
|
|
102
|
-
```
|
|
103
|
-
|
|
104
|
-
### Verify Installation
|
|
105
|
-
|
|
106
|
-
```bash
|
|
107
|
-
# Check everything is set up correctly
|
|
108
|
-
devdaily doctor
|
|
109
|
-
|
|
110
|
-
# Or manually check version
|
|
111
|
-
devdaily --version
|
|
112
|
-
devdaily --help
|
|
113
|
-
```
|
|
86
|
+
---
|
|
114
87
|
|
|
115
88
|
## Quick Start
|
|
116
89
|
|
|
117
|
-
Navigate to any git repository and run:
|
|
118
|
-
|
|
119
90
|
```bash
|
|
120
|
-
#
|
|
91
|
+
# Set up aliases and shell completions
|
|
121
92
|
devdaily init
|
|
122
93
|
|
|
123
|
-
# Generate standup
|
|
124
|
-
devdaily standup # or: dd s
|
|
125
|
-
|
|
126
|
-
# Generate PR description
|
|
127
|
-
devdaily pr # or: dd p
|
|
128
|
-
|
|
129
|
-
# Get weekly summary
|
|
130
|
-
devdaily week # or: dd w
|
|
131
|
-
|
|
132
|
-
# Open interactive dashboard
|
|
133
|
-
devdaily dash # or: dd d
|
|
134
|
-
```
|
|
135
|
-
|
|
136
|
-
All outputs are automatically copied to your clipboard! 📋
|
|
137
|
-
|
|
138
|
-
## Commands
|
|
139
|
-
|
|
140
|
-
### `devdaily standup`
|
|
141
|
-
|
|
142
|
-
Generate daily standup notes from your recent commits.
|
|
143
|
-
|
|
144
|
-
```bash
|
|
145
|
-
# Yesterday's work (default)
|
|
94
|
+
# Generate today's standup
|
|
146
95
|
devdaily standup
|
|
147
96
|
|
|
148
|
-
#
|
|
149
|
-
devdaily
|
|
150
|
-
|
|
151
|
-
# Last week
|
|
152
|
-
devdaily standup --days=7
|
|
97
|
+
# Generate a PR description
|
|
98
|
+
devdaily pr
|
|
153
99
|
|
|
154
|
-
#
|
|
155
|
-
devdaily
|
|
100
|
+
# See your weekly summary
|
|
101
|
+
devdaily week
|
|
156
102
|
|
|
157
|
-
#
|
|
158
|
-
devdaily
|
|
103
|
+
# Recover context after a break
|
|
104
|
+
devdaily context
|
|
159
105
|
|
|
160
|
-
#
|
|
161
|
-
devdaily
|
|
106
|
+
# Search your work history
|
|
107
|
+
devdaily recall "auth refactor"
|
|
162
108
|
```
|
|
163
109
|
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
- `--days, -d <number>` - Number of days to analyze (default: 1)
|
|
167
|
-
- `--format, -f <format>` - Output format: markdown, slack, plain (default: markdown)
|
|
168
|
-
- `--no-copy` - Don't copy to clipboard
|
|
169
|
-
|
|
170
|
-
### `devdaily pr`
|
|
171
|
-
|
|
172
|
-
Generate comprehensive PR descriptions with smart title generation.
|
|
110
|
+
With the `dd` alias (installed via `devdaily init`):
|
|
173
111
|
|
|
174
112
|
```bash
|
|
175
|
-
#
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
#
|
|
179
|
-
devdaily pr --create
|
|
180
|
-
|
|
181
|
-
# Create draft PR
|
|
182
|
-
devdaily pr --draft
|
|
183
|
-
|
|
184
|
-
# Compare to develop branch
|
|
185
|
-
devdaily pr --base=develop
|
|
186
|
-
|
|
187
|
-
# Don't copy to clipboard
|
|
188
|
-
devdaily pr --no-copy
|
|
113
|
+
dd s # standup
|
|
114
|
+
dd pr # PR description
|
|
115
|
+
dd w # weekly summary
|
|
116
|
+
dd ctx # context recovery
|
|
189
117
|
```
|
|
190
118
|
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
- `--base, -b <branch>` - Base branch to compare against (default: main)
|
|
194
|
-
- `--create, -c` - Create PR on GitHub immediately
|
|
195
|
-
- `--draft, -d` - Create PR as draft
|
|
196
|
-
- `--no-copy` - Don't copy to clipboard
|
|
119
|
+
---
|
|
197
120
|
|
|
198
|
-
|
|
199
|
-
When you run `devdaily pr` without flags, you get an interactive menu:
|
|
121
|
+
## Commands
|
|
200
122
|
|
|
201
|
-
|
|
202
|
-
- 📋 Copy to clipboard
|
|
203
|
-
- 🚀 Create PR on GitHub
|
|
204
|
-
- 📝 Create draft PR
|
|
205
|
-
- ❌ Cancel
|
|
123
|
+
### Core
|
|
206
124
|
|
|
207
|
-
|
|
125
|
+
| Command | Aliases | Description |
|
|
126
|
+
| ---------- | ------------------ | ------------------------------------------- |
|
|
127
|
+
| `standup` | `s`, `su`, `daily` | Generate standup notes from recent commits |
|
|
128
|
+
| `pr` | `p`, `pull` | Generate PR description from current branch |
|
|
129
|
+
| `week` | `w`, `weekly` | Generate weekly work summary |
|
|
130
|
+
| `context` | `ctx`, `resume` | Recover what you were working on |
|
|
131
|
+
| `recall` | `search`, `find` | Search your work history |
|
|
132
|
+
| `snapshot` | `snap`, `save` | Manually capture a work snapshot |
|
|
208
133
|
|
|
209
|
-
|
|
210
|
-
- Extracts issue numbers (e.g., "Closes #123")
|
|
211
|
-
- Categorizes PR type (feature, bugfix, breaking change)
|
|
212
|
-
- Parses commitlint messages for better titles
|
|
134
|
+
### Setup & Utility
|
|
213
135
|
|
|
214
|
-
|
|
136
|
+
| Command | Aliases | Description |
|
|
137
|
+
| --------- | ---------------- | ------------------------------------------------- |
|
|
138
|
+
| `init` | — | Set up aliases, completions, hooks, notifications |
|
|
139
|
+
| `config` | `cfg` | View and edit configuration |
|
|
140
|
+
| `doctor` | `check`, `setup` | Check system requirements |
|
|
141
|
+
| `connect` | `pm`, `link` | Configure project management integration |
|
|
142
|
+
| `dash` | `d`, `dashboard` | Open interactive dashboard |
|
|
215
143
|
|
|
216
|
-
|
|
144
|
+
### `devdaily standup`
|
|
217
145
|
|
|
218
146
|
```bash
|
|
219
|
-
#
|
|
220
|
-
devdaily
|
|
221
|
-
|
|
222
|
-
#
|
|
223
|
-
devdaily
|
|
224
|
-
|
|
225
|
-
#
|
|
226
|
-
devdaily
|
|
227
|
-
|
|
228
|
-
#
|
|
229
|
-
devdaily
|
|
147
|
+
devdaily standup # Yesterday's work
|
|
148
|
+
devdaily standup --days 3 # Last 3 days
|
|
149
|
+
devdaily standup --format plain # Plain text (no markdown)
|
|
150
|
+
devdaily standup --format slack # Slack-ready format
|
|
151
|
+
devdaily standup --format json # Structured JSON
|
|
152
|
+
devdaily standup --ticket PROJ-123 # Include specific ticket context
|
|
153
|
+
devdaily standup --tone business # Business-friendly tone
|
|
154
|
+
devdaily standup --send # Send to Slack + Discord
|
|
155
|
+
devdaily standup --slack # Send to Slack only
|
|
156
|
+
devdaily standup --test-webhook # Test webhook configuration
|
|
157
|
+
devdaily standup --context # Show detailed work analysis
|
|
158
|
+
devdaily standup --raw-context # Output raw context (no AI)
|
|
159
|
+
devdaily standup --no-copy # Don't copy to clipboard
|
|
160
|
+
devdaily standup --debug # Show full prompt and response
|
|
230
161
|
```
|
|
231
162
|
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
- `--last, -l` - Show last week instead of current week
|
|
235
|
-
- `--start, -s <date>` - Custom start date (YYYY-MM-DD)
|
|
236
|
-
- `--no-copy` - Don't copy to clipboard
|
|
237
|
-
|
|
238
|
-
### `devdaily context`
|
|
239
|
-
|
|
240
|
-
Recover work context from past commits (coming soon).
|
|
163
|
+
### `devdaily pr`
|
|
241
164
|
|
|
242
165
|
```bash
|
|
243
|
-
devdaily
|
|
166
|
+
devdaily pr # Generate + interactive menu
|
|
167
|
+
devdaily pr --create # Create PR on GitHub
|
|
168
|
+
devdaily pr --draft # Create as draft PR
|
|
169
|
+
devdaily pr --base develop # Compare against develop
|
|
170
|
+
devdaily pr --ticket PROJ-456 # Include ticket context
|
|
171
|
+
devdaily pr --interactive # Select labels, reviewers, assignees
|
|
172
|
+
devdaily pr --debug # Show AI prompt
|
|
244
173
|
```
|
|
245
174
|
|
|
246
|
-
### `devdaily
|
|
247
|
-
|
|
248
|
-
Open the interactive dashboard with keyboard navigation.
|
|
175
|
+
### `devdaily week`
|
|
249
176
|
|
|
250
177
|
```bash
|
|
251
|
-
#
|
|
252
|
-
devdaily
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
178
|
+
devdaily week # Current week
|
|
179
|
+
devdaily week --last # Last week
|
|
180
|
+
devdaily week --weeks-ago 2 # Two weeks ago
|
|
181
|
+
devdaily week --from 2025-01-01 --to 2025-01-07
|
|
182
|
+
devdaily week --all-projects # Cross-project summary
|
|
183
|
+
devdaily week --save # Save summary to journal
|
|
184
|
+
devdaily week --json # Machine-readable stats
|
|
256
185
|
```
|
|
257
186
|
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
- `s` - Generate standup
|
|
261
|
-
- `p` - Generate PR description
|
|
262
|
-
- `w` - Generate weekly summary
|
|
263
|
-
- `c` - Open configuration
|
|
264
|
-
- `r` - Refresh data
|
|
265
|
-
- `q` - Quit
|
|
266
|
-
|
|
267
|
-
### `devdaily init`
|
|
268
|
-
|
|
269
|
-
Set up DevDaily with shell aliases and completions.
|
|
187
|
+
### `devdaily context`
|
|
270
188
|
|
|
271
189
|
```bash
|
|
272
|
-
#
|
|
273
|
-
devdaily
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
devdaily
|
|
277
|
-
|
|
278
|
-
# Only set up alias
|
|
279
|
-
devdaily init --alias
|
|
280
|
-
|
|
281
|
-
# Only set up completions
|
|
282
|
-
devdaily init --completions
|
|
190
|
+
devdaily context # Where did I leave off?
|
|
191
|
+
devdaily context --ai # AI-powered summary
|
|
192
|
+
devdaily context --days 14 # Look back further
|
|
193
|
+
devdaily context --all-projects # All projects
|
|
194
|
+
devdaily context --branches # Show active branch details
|
|
283
195
|
```
|
|
284
196
|
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
- Shell alias: `dd` → `devdaily`
|
|
288
|
-
- Tab completions for bash/zsh/fish
|
|
289
|
-
- Configuration file
|
|
290
|
-
|
|
291
|
-
### `devdaily config`
|
|
292
|
-
|
|
293
|
-
Manage DevDaily configuration.
|
|
197
|
+
### `devdaily recall`
|
|
294
198
|
|
|
295
199
|
```bash
|
|
296
|
-
#
|
|
297
|
-
devdaily
|
|
298
|
-
|
|
299
|
-
#
|
|
300
|
-
devdaily
|
|
301
|
-
|
|
302
|
-
# Show current config
|
|
303
|
-
devdaily config --show
|
|
304
|
-
|
|
305
|
-
# Show config file path
|
|
306
|
-
devdaily config --path
|
|
307
|
-
|
|
308
|
-
# Reset to defaults
|
|
309
|
-
devdaily config --reset
|
|
200
|
+
devdaily recall "auth" # Search for "auth" in history
|
|
201
|
+
devdaily recall --file src/auth.ts # When was this file changed?
|
|
202
|
+
devdaily recall --tag feature # Find snapshots tagged "feature"
|
|
203
|
+
devdaily recall --from 2025-01-01 # Search within date range
|
|
204
|
+
devdaily recall --ai # AI summary of results
|
|
310
205
|
```
|
|
311
206
|
|
|
312
|
-
### `devdaily
|
|
313
|
-
|
|
314
|
-
Check system requirements and diagnose issues.
|
|
207
|
+
### `devdaily snapshot`
|
|
315
208
|
|
|
316
209
|
```bash
|
|
317
|
-
#
|
|
318
|
-
devdaily
|
|
319
|
-
|
|
320
|
-
#
|
|
321
|
-
devdaily
|
|
322
|
-
|
|
323
|
-
#
|
|
324
|
-
devdaily check
|
|
210
|
+
devdaily snapshot # Capture a full snapshot
|
|
211
|
+
devdaily snapshot --light # Quick capture (no PR/ticket fetch)
|
|
212
|
+
devdaily snapshot --note "before refactor"
|
|
213
|
+
devdaily snapshot --tag release # Tag the snapshot
|
|
214
|
+
devdaily snapshot --list # Browse recent snapshots
|
|
215
|
+
devdaily snapshot --stats # Journal storage stats
|
|
216
|
+
devdaily snapshot --prune 90 # Remove entries older than 90 days
|
|
325
217
|
```
|
|
326
218
|
|
|
327
|
-
|
|
219
|
+
### `devdaily init`
|
|
328
220
|
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
221
|
+
```bash
|
|
222
|
+
devdaily init # Interactive setup wizard
|
|
223
|
+
devdaily init --global # Global setup
|
|
224
|
+
devdaily init --alias # Set up dd alias only
|
|
225
|
+
devdaily init --completions # Shell completions only
|
|
226
|
+
devdaily init --notifications # Slack/Discord webhook setup
|
|
227
|
+
devdaily init --git-hooks # Install auto-snapshot hooks
|
|
228
|
+
devdaily init --remove-hooks # Remove auto-snapshot hooks
|
|
229
|
+
```
|
|
334
230
|
|
|
335
|
-
|
|
231
|
+
---
|
|
336
232
|
|
|
337
|
-
-
|
|
338
|
-
- Copilot extension installation
|
|
233
|
+
## Auto-Snapshots
|
|
339
234
|
|
|
340
|
-
|
|
235
|
+
DevDaily captures lightweight work snapshots automatically so you never lose context:
|
|
341
236
|
|
|
342
|
-
|
|
237
|
+
**When snapshots happen:**
|
|
343
238
|
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
239
|
+
- After running `devdaily standup`, `pr`, or `week` (side-effect)
|
|
240
|
+
- On `git commit` and `git checkout` (opt-in via `devdaily init --git-hooks`)
|
|
241
|
+
- Manually via `devdaily snapshot`
|
|
347
242
|
|
|
348
|
-
**
|
|
243
|
+
**What's stored:**
|
|
349
244
|
|
|
350
|
-
-
|
|
351
|
-
-
|
|
352
|
-
-
|
|
245
|
+
- Current branch and active branches
|
|
246
|
+
- Today's commits (messages, files changed)
|
|
247
|
+
- Diff stats (insertions, deletions, files)
|
|
248
|
+
- Work categories (frontend, backend, infra, etc.)
|
|
249
|
+
- Optional notes and tags
|
|
353
250
|
|
|
354
|
-
**
|
|
251
|
+
**Disabling:**
|
|
355
252
|
|
|
356
253
|
```bash
|
|
357
|
-
#
|
|
358
|
-
devdaily standup
|
|
254
|
+
# Per-command
|
|
255
|
+
devdaily standup --no-journal
|
|
256
|
+
devdaily week --no-auto-snapshot
|
|
359
257
|
|
|
360
|
-
#
|
|
361
|
-
|
|
362
|
-
devdaily pr --no-tickets
|
|
363
|
-
devdaily week --no-tickets
|
|
258
|
+
# Globally
|
|
259
|
+
# Set journal.autoSnapshot to false in .devdaily.json
|
|
364
260
|
```
|
|
365
261
|
|
|
262
|
+
---
|
|
263
|
+
|
|
366
264
|
## Configuration
|
|
367
265
|
|
|
368
|
-
DevDaily
|
|
266
|
+
DevDaily uses a JSON config file with optional JSON Schema support for IDE autocomplete.
|
|
267
|
+
|
|
268
|
+
### Config file locations
|
|
369
269
|
|
|
370
|
-
|
|
270
|
+
| Scope | Path |
|
|
271
|
+
| ------------------- | ------------------------------------------------------------- |
|
|
272
|
+
| Local (per-project) | `.devdaily.json` |
|
|
273
|
+
| Global | `~/.config/devdaily/config.json` |
|
|
274
|
+
| Secrets | `~/.config/devdaily/secrets.json` or `.devdaily.secrets.json` |
|
|
371
275
|
|
|
372
|
-
|
|
373
|
-
- **Local:** `.devdailyrc` in your project root
|
|
276
|
+
Local config overrides global config. Secrets are stored separately and should never be committed.
|
|
374
277
|
|
|
375
|
-
### Example
|
|
278
|
+
### Example
|
|
376
279
|
|
|
377
280
|
```json
|
|
378
281
|
{
|
|
379
|
-
"
|
|
380
|
-
|
|
381
|
-
"primary": "cyan",
|
|
382
|
-
"accent": "magenta"
|
|
383
|
-
},
|
|
384
|
-
"ascii": true,
|
|
385
|
-
"compactMode": false,
|
|
282
|
+
"$schema": "https://raw.githubusercontent.com/hempun10/devdaily/main/schemas/devdaily.schema.json",
|
|
283
|
+
|
|
386
284
|
"output": {
|
|
387
285
|
"format": "markdown",
|
|
388
286
|
"copyToClipboard": true,
|
|
389
287
|
"showStats": true
|
|
390
288
|
},
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
"
|
|
289
|
+
|
|
290
|
+
"git": {
|
|
291
|
+
"defaultBranch": "main",
|
|
292
|
+
"excludePatterns": ["merge commit", "Merge branch"]
|
|
394
293
|
},
|
|
294
|
+
|
|
395
295
|
"standup": {
|
|
396
|
-
"defaultDays": 1
|
|
296
|
+
"defaultDays": 1,
|
|
297
|
+
"sections": ["completed", "in-progress", "blockers"],
|
|
298
|
+
"includeTicketLinks": true
|
|
397
299
|
},
|
|
300
|
+
|
|
398
301
|
"pr": {
|
|
399
|
-
"defaultBase": "main"
|
|
302
|
+
"defaultBase": "main",
|
|
303
|
+
"includeDiff": true,
|
|
304
|
+
"maxDiffLines": 200,
|
|
305
|
+
"titleFormat": "conventional",
|
|
306
|
+
"autoLabels": true
|
|
400
307
|
},
|
|
401
|
-
"week": {
|
|
402
|
-
"startDay": "monday"
|
|
403
|
-
}
|
|
404
|
-
}
|
|
405
|
-
```
|
|
406
308
|
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
309
|
+
"journal": {
|
|
310
|
+
"autoSnapshot": true,
|
|
311
|
+
"gitHooks": false,
|
|
312
|
+
"quiet": true
|
|
313
|
+
},
|
|
410
314
|
|
|
411
|
-
```json
|
|
412
|
-
{
|
|
413
315
|
"projectManagement": {
|
|
414
|
-
|
|
415
|
-
"
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
"jira": {
|
|
422
|
-
"baseUrl": "https://yourcompany.atlassian.net",
|
|
423
|
-
"projectKey": "PROJ"
|
|
424
|
-
},
|
|
425
|
-
|
|
426
|
-
// Linear settings
|
|
427
|
-
"linear": {
|
|
428
|
-
"teamKey": "ENG"
|
|
429
|
-
},
|
|
430
|
-
|
|
431
|
-
// Notion settings
|
|
432
|
-
"notion": {
|
|
433
|
-
"databaseId": "your-database-id"
|
|
434
|
-
}
|
|
316
|
+
"tool": "github",
|
|
317
|
+
"ticketPrefix": "PROJ"
|
|
318
|
+
},
|
|
319
|
+
|
|
320
|
+
"notifications": {
|
|
321
|
+
"slack": { "enabled": false },
|
|
322
|
+
"discord": { "enabled": false }
|
|
435
323
|
}
|
|
436
324
|
}
|
|
437
325
|
```
|
|
438
326
|
|
|
439
|
-
|
|
327
|
+
### Project management integration
|
|
440
328
|
|
|
441
|
-
|
|
442
|
-
# Jira
|
|
443
|
-
export JIRA_BASE_URL="https://yourcompany.atlassian.net"
|
|
444
|
-
export JIRA_EMAIL="you@company.com"
|
|
445
|
-
export JIRA_API_TOKEN="your-api-token"
|
|
446
|
-
|
|
447
|
-
# Linear
|
|
448
|
-
export LINEAR_API_KEY="lin_api_xxx"
|
|
329
|
+
DevDaily extracts ticket IDs from branch names and commit messages, then fetches metadata from your PM tool:
|
|
449
330
|
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
331
|
+
```bash
|
|
332
|
+
devdaily connect # Interactive setup
|
|
333
|
+
devdaily connect --tool jira # Configure Jira
|
|
334
|
+
devdaily connect --tool linear # Configure Linear
|
|
453
335
|
```
|
|
454
336
|
|
|
455
|
-
**
|
|
337
|
+
Supported tools: **GitHub Issues** (default, uses `gh` CLI), **Jira** (REST API v3), **Linear** (GraphQL API).
|
|
456
338
|
|
|
457
|
-
|
|
339
|
+
### Custom PR prompt file
|
|
458
340
|
|
|
459
|
-
|
|
460
|
-
2. **Commit messages**: `fix: resolve issue PROJ-123`
|
|
461
|
-
3. **Manual input**: `devdaily pr --ticket PROJ-123`
|
|
341
|
+
Create a `.devdaily-pr-prompt.md` file in your repo to customize how PR descriptions are generated:
|
|
462
342
|
|
|
463
|
-
|
|
343
|
+
```markdown
|
|
344
|
+
## PR Description Guidelines
|
|
464
345
|
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
-
|
|
468
|
-
-
|
|
469
|
-
|
|
346
|
+
- Use present tense ("Add feature" not "Added feature")
|
|
347
|
+
- Reference ticket numbers
|
|
348
|
+
- Include a testing section
|
|
349
|
+
- Keep descriptions concise
|
|
350
|
+
```
|
|
470
351
|
|
|
471
|
-
|
|
352
|
+
Search order: `.devdaily-pr-prompt.md` → `.github/devdaily-pr-prompt.md` → `docs/devdaily-pr-prompt.md`
|
|
472
353
|
|
|
473
|
-
|
|
474
|
-
2. **Extracts Context** - Parses conventional commits, issue numbers, and PR types
|
|
475
|
-
3. **AI Summarization** - Leverages GitHub Copilot CLI to generate human-readable summaries
|
|
476
|
-
4. **Professional Output** - Formats with clean terminal UI (chalk, boxen, ora)
|
|
477
|
-
5. **Auto-Copy** - Copies results to clipboard for immediate use
|
|
354
|
+
---
|
|
478
355
|
|
|
479
|
-
##
|
|
356
|
+
## Privacy & Security
|
|
480
357
|
|
|
481
|
-
|
|
358
|
+
- **All data stays local.** Journal entries are stored in `~/.config/devdaily/journal/` — nothing is sent to any server.
|
|
359
|
+
- **Secrets are stored separately** in `.devdaily.secrets.json` (auto-added to `.gitignore`) or `~/.config/devdaily/secrets.json`.
|
|
360
|
+
- **Git hooks are opt-in** and POSIX-compatible. They append to existing hooks instead of overwriting.
|
|
361
|
+
- **AI generation** uses GitHub Copilot CLI, which processes your prompts through GitHub's infrastructure under your existing Copilot agreement.
|
|
482
362
|
|
|
483
|
-
|
|
363
|
+
---
|
|
484
364
|
|
|
485
365
|
## Development
|
|
486
366
|
|
|
487
|
-
|
|
367
|
+
### Prerequisites
|
|
368
|
+
|
|
369
|
+
- Node.js >= 18
|
|
370
|
+
- npm >= 9
|
|
371
|
+
- Git
|
|
372
|
+
|
|
373
|
+
### Setup
|
|
488
374
|
|
|
489
375
|
```bash
|
|
490
|
-
# Clone the repository
|
|
491
376
|
git clone https://github.com/hempun10/devdaily.git
|
|
492
377
|
cd devdaily
|
|
493
|
-
|
|
494
|
-
# Install dependencies
|
|
495
378
|
npm install
|
|
379
|
+
```
|
|
496
380
|
|
|
497
|
-
|
|
498
|
-
npm run dev
|
|
499
|
-
|
|
500
|
-
# Run tests
|
|
501
|
-
npm test
|
|
502
|
-
|
|
503
|
-
# Run tests in watch mode
|
|
504
|
-
npm test -- --watch
|
|
505
|
-
|
|
506
|
-
# Type checking
|
|
507
|
-
npm run typecheck
|
|
508
|
-
|
|
509
|
-
# Lint code
|
|
510
|
-
npm run lint
|
|
511
|
-
npm run lint:fix
|
|
512
|
-
|
|
513
|
-
# Format code
|
|
514
|
-
npm run format
|
|
381
|
+
### Common tasks
|
|
515
382
|
|
|
516
|
-
|
|
517
|
-
npm run
|
|
383
|
+
```bash
|
|
384
|
+
npm run dev # Watch mode (auto-rebuild)
|
|
385
|
+
npm run build # Production build (tsup)
|
|
386
|
+
npm run typecheck # TypeScript type checking
|
|
387
|
+
npm run lint # ESLint
|
|
388
|
+
npm run lint:fix # ESLint with auto-fix
|
|
389
|
+
npm run format # Prettier format
|
|
390
|
+
npm run format:check # Prettier check
|
|
391
|
+
npm test # Run all tests (vitest)
|
|
392
|
+
npm run test:watch # Tests in watch mode
|
|
393
|
+
npm run test:coverage # Tests with coverage report
|
|
518
394
|
```
|
|
519
395
|
|
|
520
|
-
### Project
|
|
396
|
+
### Project structure
|
|
521
397
|
|
|
522
398
|
```
|
|
523
|
-
devdaily
|
|
399
|
+
devdaily/
|
|
524
400
|
├── src/
|
|
525
|
-
│ ├── commands/
|
|
526
|
-
│ │ ├── standup.ts
|
|
527
|
-
│ │ ├── pr.ts
|
|
528
|
-
│ │ ├── week.ts
|
|
529
|
-
│ │ ├──
|
|
530
|
-
│ │ ├──
|
|
531
|
-
│ │ ├──
|
|
532
|
-
│ │
|
|
533
|
-
│ ├──
|
|
534
|
-
│ │ ├──
|
|
535
|
-
│ │
|
|
536
|
-
│
|
|
537
|
-
│
|
|
538
|
-
│ │ ├──
|
|
539
|
-
│ │ ├──
|
|
540
|
-
│ │ ├──
|
|
541
|
-
│ │ ├──
|
|
542
|
-
│ │
|
|
543
|
-
│ ├──
|
|
544
|
-
│ │ ├──
|
|
545
|
-
│ │
|
|
546
|
-
│ ├──
|
|
547
|
-
│ │ ├──
|
|
548
|
-
│ │
|
|
549
|
-
│ ├──
|
|
550
|
-
│ └──
|
|
551
|
-
├──
|
|
552
|
-
├──
|
|
553
|
-
├──
|
|
554
|
-
|
|
401
|
+
│ ├── commands/ # CLI command handlers
|
|
402
|
+
│ │ ├── standup.ts # Standup generation
|
|
403
|
+
│ │ ├── pr.ts # PR description generation
|
|
404
|
+
│ │ ├── week.ts # Weekly summary
|
|
405
|
+
│ │ ├── context.ts # Context recovery
|
|
406
|
+
│ │ ├── recall.ts # Work history search
|
|
407
|
+
│ │ ├── snapshot.ts # Manual snapshot capture
|
|
408
|
+
│ │ ├── init.ts # Setup wizard
|
|
409
|
+
│ │ ├── config.ts # Configuration management
|
|
410
|
+
│ │ ├── doctor.ts # System diagnostics
|
|
411
|
+
│ │ ├── connect.ts # PM tool connection
|
|
412
|
+
│ │ └── dash.ts # Interactive dashboard
|
|
413
|
+
│ ├── core/ # Business logic
|
|
414
|
+
│ │ ├── git-analyzer.ts # Git operations (simple-git)
|
|
415
|
+
│ │ ├── copilot.ts # GitHub Copilot CLI integration
|
|
416
|
+
│ │ ├── standup-context.ts # Rich context builder for standups
|
|
417
|
+
│ │ ├── context-analyzer.ts # Work pattern analysis
|
|
418
|
+
│ │ ├── snapshot-builder.ts # Snapshot creation
|
|
419
|
+
│ │ ├── work-journal.ts # Persistent local storage
|
|
420
|
+
│ │ ├── auto-snapshot.ts # Side-effect & hook snapshots
|
|
421
|
+
│ │ ├── notifications.ts # Slack/Discord webhooks
|
|
422
|
+
│ │ ├── project-management.ts # Jira/Linear/GitHub Issues
|
|
423
|
+
│ │ ├── pr-template.ts # PR template detection
|
|
424
|
+
│ │ ├── pr-prompt.ts # Custom prompt file loader
|
|
425
|
+
│ │ ├── github.ts # GitHub API helpers
|
|
426
|
+
│ │ └── github-repo.ts # Repo metadata
|
|
427
|
+
│ ├── config/ # Configuration loading & schema
|
|
428
|
+
│ ├── ui/ # Terminal UI (colors, ASCII, help)
|
|
429
|
+
│ ├── utils/ # Helpers (clipboard, formatting, commitlint)
|
|
430
|
+
│ ├── types/ # TypeScript type definitions
|
|
431
|
+
│ └── index.ts # CLI entry point
|
|
432
|
+
├── tests/ # Vitest test suites
|
|
433
|
+
├── schemas/ # JSON Schema for config validation
|
|
434
|
+
├── examples/ # Example command outputs
|
|
435
|
+
├── docs/ # Additional documentation
|
|
436
|
+
└── .github/ # CI workflows and templates
|
|
555
437
|
```
|
|
556
438
|
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
439
|
+
### Tech stack
|
|
440
|
+
|
|
441
|
+
| Category | Technology |
|
|
442
|
+
| ------------------ | ---------------------------- |
|
|
443
|
+
| Language | TypeScript 5.7 (strict mode) |
|
|
444
|
+
| Runtime | Node.js 18+ (ESM) |
|
|
445
|
+
| CLI framework | Commander.js 12 |
|
|
446
|
+
| Git operations | simple-git |
|
|
447
|
+
| AI generation | GitHub Copilot CLI |
|
|
448
|
+
| Terminal UI | chalk, boxen, ora, inquirer |
|
|
449
|
+
| Build | tsup |
|
|
450
|
+
| Testing | Vitest |
|
|
451
|
+
| Linting | ESLint + Prettier |
|
|
452
|
+
| Commit conventions | commitlint + Husky |
|
|
570
453
|
|
|
571
|
-
|
|
572
|
-
A: No, DevDaily AI requires GitHub Copilot CLI which needs an internet connection for AI summaries.
|
|
573
|
-
|
|
574
|
-
**Q: What git hosting providers are supported?**
|
|
575
|
-
A: DevDaily AI works with any git repository. GitHub CLI is only needed for creating PRs.
|
|
576
|
-
|
|
577
|
-
**Q: Is my code sent to GitHub?**
|
|
578
|
-
A: Only commit messages and diffs are sent to GitHub Copilot CLI for summarization. Full file contents are not shared.
|
|
579
|
-
|
|
580
|
-
**Q: Can I customize the output format?**
|
|
581
|
-
A: Yes! Use `--format` flag for standup command. PR and weekly commands support markdown by default.
|
|
454
|
+
---
|
|
582
455
|
|
|
583
|
-
|
|
584
|
-
A: Yes! DevDaily AI analyzes the entire git history of your current directory.
|
|
456
|
+
## Testing
|
|
585
457
|
|
|
586
|
-
|
|
587
|
-
|
|
458
|
+
```bash
|
|
459
|
+
npm test # Run all tests
|
|
460
|
+
npm run test:watch # Watch mode
|
|
461
|
+
npm run test:coverage # With coverage report
|
|
462
|
+
```
|
|
588
463
|
|
|
589
|
-
|
|
464
|
+
### Test coverage
|
|
465
|
+
|
|
466
|
+
| Module | Tests | Description |
|
|
467
|
+
| -------------------- | ------- | ---------------------------------------- |
|
|
468
|
+
| `auto-snapshot` | 74 | Side-effect snapshots, hooks, config |
|
|
469
|
+
| `work-journal` | 123 | Persistent storage, search, aggregation |
|
|
470
|
+
| `project-management` | 130 | Jira, Linear, GitHub Issues integration |
|
|
471
|
+
| `standup-context` | 70 | Context building, formatting |
|
|
472
|
+
| `notifications` | 70 | Slack/Discord webhooks, output formatter |
|
|
473
|
+
| `pr-creation` | 123 | PR generation pipeline |
|
|
474
|
+
| `copilot` | 38 | AI prompt building |
|
|
475
|
+
| `pr-prompt` | 26 | Custom prompt file loading |
|
|
476
|
+
| `pr-template` | 25 | Template detection and parsing |
|
|
477
|
+
| `context-analyzer` | 22 | Work pattern analysis |
|
|
478
|
+
| `git-analyzer` | 15 | Git operations |
|
|
479
|
+
| `commitlint` | 6 | Conventional commit parsing |
|
|
480
|
+
| `ui` | 2 | UI rendering |
|
|
481
|
+
| **Total** | **724** | |
|
|
590
482
|
|
|
591
|
-
|
|
483
|
+
---
|
|
592
484
|
|
|
593
|
-
|
|
485
|
+
## FAQ
|
|
594
486
|
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
```
|
|
487
|
+
**Q: Does DevDaily send my code anywhere?**
|
|
488
|
+
No. DevDaily reads your local git history and sends a text prompt to GitHub Copilot CLI. Your source code is not uploaded. Journal data stays on your machine.
|
|
598
489
|
|
|
599
|
-
|
|
490
|
+
**Q: Can I use DevDaily without GitHub Copilot?**
|
|
491
|
+
Currently, GitHub Copilot CLI is required for AI-powered generation. You can use `--raw-context` to get the structured context block without AI processing, and pipe it to any LLM of your choice.
|
|
600
492
|
|
|
601
|
-
|
|
493
|
+
**Q: Does it work with monorepos?**
|
|
494
|
+
Yes. DevDaily analyzes the git history of whatever repository you're currently in. Multi-project support via the journal lets you aggregate across repos.
|
|
602
495
|
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
```
|
|
496
|
+
**Q: How do I uninstall the git hooks?**
|
|
497
|
+
Run `devdaily init --remove-hooks`. This cleanly removes only the DevDaily lines from your hook files.
|
|
606
498
|
|
|
607
|
-
|
|
499
|
+
---
|
|
608
500
|
|
|
609
|
-
|
|
501
|
+
## Troubleshooting
|
|
610
502
|
|
|
611
|
-
|
|
612
|
-
git init # Initialize a new repo
|
|
613
|
-
# or
|
|
614
|
-
cd /path/to/your/git/repo
|
|
615
|
-
```
|
|
503
|
+
### Common issues
|
|
616
504
|
|
|
617
|
-
|
|
505
|
+
| Problem | Solution |
|
|
506
|
+
| ------------------------------ | ---------------------------------------------------- |
|
|
507
|
+
| `GitHub Copilot CLI not found` | Run `gh extension install github/gh-copilot` |
|
|
508
|
+
| `Not a git repository` | Navigate to a git repo before running commands |
|
|
509
|
+
| `No commits found` | Try increasing `--days` or check `--author` filter |
|
|
510
|
+
| Clipboard not working | Install `xclip` (Linux) or check permissions (macOS) |
|
|
511
|
+
| Webhook test fails | Run `devdaily init --notifications` to reconfigure |
|
|
618
512
|
|
|
619
|
-
|
|
513
|
+
### Diagnostics
|
|
620
514
|
|
|
621
515
|
```bash
|
|
622
|
-
|
|
516
|
+
devdaily doctor # Check all prerequisites
|
|
517
|
+
devdaily doctor --fix # Attempt automatic fixes
|
|
518
|
+
devdaily config --path # Show config file location
|
|
623
519
|
```
|
|
624
520
|
|
|
625
|
-
|
|
521
|
+
---
|
|
626
522
|
|
|
627
523
|
## Roadmap
|
|
628
524
|
|
|
629
|
-
- [ ]
|
|
630
|
-
- [ ]
|
|
631
|
-
- [ ]
|
|
632
|
-
- [ ]
|
|
633
|
-
- [ ]
|
|
634
|
-
- [ ]
|
|
635
|
-
- [ ] VS Code extension
|
|
636
|
-
|
|
637
|
-
## Contributing
|
|
525
|
+
- [ ] Plugin system for custom output formats and integrations
|
|
526
|
+
- [ ] Background agent for periodic auto-snapshots
|
|
527
|
+
- [ ] Dashboard visualization of work patterns
|
|
528
|
+
- [ ] Notion integration for ticket tracking
|
|
529
|
+
- [ ] Team-level aggregated summaries
|
|
530
|
+
- [ ] Ollama/local LLM support as Copilot alternative
|
|
638
531
|
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
## License
|
|
642
|
-
|
|
643
|
-
MIT © [Hem Pun](https://github.com/hempun10)
|
|
532
|
+
---
|
|
644
533
|
|
|
645
|
-
##
|
|
534
|
+
## Contributing
|
|
646
535
|
|
|
647
|
-
|
|
536
|
+
Contributions are welcome! Please read the [Contributing Guide](CONTRIBUTING.md) before submitting a pull request.
|
|
648
537
|
|
|
649
|
-
|
|
538
|
+
```bash
|
|
539
|
+
git clone https://github.com/hempun10/devdaily.git
|
|
540
|
+
cd devdaily
|
|
541
|
+
npm install
|
|
542
|
+
npm test
|
|
543
|
+
```
|
|
650
544
|
|
|
651
|
-
|
|
652
|
-
- terminal.shop for UI inspiration
|
|
653
|
-
- The awesome TypeScript community
|
|
545
|
+
See [CONTRIBUTING.md](CONTRIBUTING.md) for the full development workflow, coding standards, and pull request process.
|
|
654
546
|
|
|
655
547
|
---
|
|
656
548
|
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
**[⬆ back to top](#devdaily-ai)**
|
|
660
|
-
|
|
661
|
-
Made with ❤️ by developers, for developers
|
|
549
|
+
## License
|
|
662
550
|
|
|
663
|
-
|
|
551
|
+
[MIT](LICENSE) © [Hem Pun](https://github.com/hempun10)
|