@wonsukchoi/crondex 0.2.0 → 0.4.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/README.md +42 -2
- package/catalog.json +530 -1
- package/jobs/content/rss-feed-validate.yaml +32 -0
- package/jobs/content/seo-meta-check.yaml +32 -0
- package/jobs/devops/api-rate-limit-check.yaml +31 -0
- package/jobs/devops/db-backup-verify.yaml +37 -0
- package/jobs/devops/dns-record-check.yaml +32 -0
- package/jobs/devops/license-compliance-check.yaml +31 -0
- package/jobs/devops/orphaned-branch-cleanup.yaml +28 -0
- package/jobs/devops/queue-depth-check.yaml +35 -0
- package/jobs/finance/invoice-overdue-check.yaml +32 -0
- package/jobs/finance/saas-seat-audit.yaml +35 -0
- package/jobs/finance/tax-deadline-reminder.yaml +33 -0
- package/jobs/learning/course-progress-checkin.yaml +37 -0
- package/jobs/learning/daily-flashcard-review.yaml +29 -0
- package/jobs/learning/reading-list-nudge.yaml +25 -0
- package/jobs/productivity/focus-block-reminder.yaml +25 -0
- package/jobs/security/failed-login-watch.yaml +37 -0
- package/jobs/security/firewall-rule-diff.yaml +30 -0
- package/jobs/security/open-port-check.yaml +36 -0
- package/jobs/security/secrets-scan.yaml +28 -0
- package/jobs/security/sudo-usage-audit.yaml +35 -0
- package/jobs/team/1on1-prep-reminder.yaml +26 -0
- package/jobs/team/pto-balance-check.yaml +33 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -60,7 +60,10 @@ crondex/
|
|
|
60
60
|
│ ├── productivity/
|
|
61
61
|
│ ├── personal/
|
|
62
62
|
│ ├── content/
|
|
63
|
-
│
|
|
63
|
+
│ ├── finance/
|
|
64
|
+
│ ├── security/
|
|
65
|
+
│ ├── learning/
|
|
66
|
+
│ └── team/
|
|
64
67
|
└── scripts/
|
|
65
68
|
├── build-catalog.js regenerates catalog.json from jobs/**/*.yaml
|
|
66
69
|
└── validate-jobs.js validates every job against the schema
|
|
@@ -68,7 +71,7 @@ crondex/
|
|
|
68
71
|
|
|
69
72
|
## Available jobs
|
|
70
73
|
|
|
71
|
-
|
|
74
|
+
46 jobs across 8 categories. Full details (description, tags, variables)
|
|
72
75
|
live in `catalog.json` and each job's YAML file — run `crondex list` or
|
|
73
76
|
browse `jobs/<category>/` for the plain-language rundown of each.
|
|
74
77
|
|
|
@@ -87,6 +90,12 @@ browse `jobs/<category>/` for the plain-language rundown of each.
|
|
|
87
90
|
| `docker-image-prune` | `0 4 * * *` | script |
|
|
88
91
|
| `env-drift-check` | `0 8 * * *` | script |
|
|
89
92
|
| `stale-dependency-pr-nudge` | `0 9 * * 1-5` | script |
|
|
93
|
+
| `db-backup-verify` | `0 5 * * *` | script |
|
|
94
|
+
| `license-compliance-check` | `0 8 * * 1` | script |
|
|
95
|
+
| `orphaned-branch-cleanup` | `0 9 * * 1` | script |
|
|
96
|
+
| `dns-record-check` | `0 */6 * * *` | script |
|
|
97
|
+
| `queue-depth-check` | `*/10 * * * *` | script |
|
|
98
|
+
| `api-rate-limit-check` | `*/15 * * * *` | script |
|
|
90
99
|
|
|
91
100
|
**productivity**
|
|
92
101
|
|
|
@@ -95,6 +104,7 @@ browse `jobs/<category>/` for the plain-language rundown of each.
|
|
|
95
104
|
| `daily-standup-summary` | `0 8 * * 1-5` | script + agent-prompt |
|
|
96
105
|
| `inbox-triage` | `0 7,13 * * 1-5` | agent-prompt only |
|
|
97
106
|
| `weekly-report` | `0 16 * * 5` | script + agent-prompt |
|
|
107
|
+
| `focus-block-reminder` | `0 9,14 * * 1-5` | script |
|
|
98
108
|
|
|
99
109
|
**personal**
|
|
100
110
|
|
|
@@ -113,6 +123,8 @@ browse `jobs/<category>/` for the plain-language rundown of each.
|
|
|
113
123
|
| `changelog-digest` | `0 10 * * 5` | script + agent-prompt |
|
|
114
124
|
| `broken-link-check` | `0 7 * * 1` | script |
|
|
115
125
|
| `social-mentions-watch` | `0 9 * * *` | agent-prompt only |
|
|
126
|
+
| `seo-meta-check` | `0 7 * * 1` | script |
|
|
127
|
+
| `rss-feed-validate` | `0 8 * * *` | script |
|
|
116
128
|
|
|
117
129
|
**finance**
|
|
118
130
|
|
|
@@ -120,6 +132,34 @@ browse `jobs/<category>/` for the plain-language rundown of each.
|
|
|
120
132
|
|---|---|---|
|
|
121
133
|
| `subscription-audit` | `0 9 1 * *` | script |
|
|
122
134
|
| `net-worth-snapshot` | `0 9 1 * *` | script |
|
|
135
|
+
| `saas-seat-audit` | `0 9 1 * *` | script |
|
|
136
|
+
| `invoice-overdue-check` | `0 9 * * *` | script |
|
|
137
|
+
| `tax-deadline-reminder` | `0 9 * * *` | script |
|
|
138
|
+
|
|
139
|
+
**security**
|
|
140
|
+
|
|
141
|
+
| id | schedule | modes |
|
|
142
|
+
|---|---|---|
|
|
143
|
+
| `secrets-scan` | `0 3 * * *` | script |
|
|
144
|
+
| `open-port-check` | `0 */4 * * *` | script |
|
|
145
|
+
| `failed-login-watch` | `*/15 * * * *` | script |
|
|
146
|
+
| `sudo-usage-audit` | `0 * * * *` | script |
|
|
147
|
+
| `firewall-rule-diff` | `0 6 * * *` | script |
|
|
148
|
+
|
|
149
|
+
**learning**
|
|
150
|
+
|
|
151
|
+
| id | schedule | modes |
|
|
152
|
+
|---|---|---|
|
|
153
|
+
| `daily-flashcard-review` | `0 8 * * *` | script |
|
|
154
|
+
| `reading-list-nudge` | `0 9 * * 6` | script |
|
|
155
|
+
| `course-progress-checkin` | `0 9 * * 1` | script |
|
|
156
|
+
|
|
157
|
+
**team**
|
|
158
|
+
|
|
159
|
+
| id | schedule | modes |
|
|
160
|
+
|---|---|---|
|
|
161
|
+
| `1on1-prep-reminder` | `0 9 * * 3` | script |
|
|
162
|
+
| `pto-balance-check` | `0 9 1 * *` | script |
|
|
123
163
|
|
|
124
164
|
## How a job works
|
|
125
165
|
|
package/catalog.json
CHANGED
|
@@ -1,8 +1,56 @@
|
|
|
1
1
|
{
|
|
2
2
|
"generated_by": "scripts/build-catalog.js",
|
|
3
3
|
"schema": "schema/job.schema.json",
|
|
4
|
-
"count":
|
|
4
|
+
"count": 46,
|
|
5
5
|
"jobs": [
|
|
6
|
+
{
|
|
7
|
+
"id": "1on1-prep-reminder",
|
|
8
|
+
"version": 1,
|
|
9
|
+
"name": "1:1 Prep Reminder",
|
|
10
|
+
"description": "Nudges you to prep talking points before a recurring 1:1 and shows your last notes. Use this if you've ever walked into a 1:1 with nothing prepared and just winged it.",
|
|
11
|
+
"category": "team",
|
|
12
|
+
"tags": [
|
|
13
|
+
"1on1",
|
|
14
|
+
"meetings",
|
|
15
|
+
"team"
|
|
16
|
+
],
|
|
17
|
+
"schedule": "0 9 * * 3",
|
|
18
|
+
"timezone": "America/Los_Angeles",
|
|
19
|
+
"runner": "shell",
|
|
20
|
+
"modes": [
|
|
21
|
+
"script"
|
|
22
|
+
],
|
|
23
|
+
"compatible_agents": [
|
|
24
|
+
"generic",
|
|
25
|
+
"claude",
|
|
26
|
+
"codex"
|
|
27
|
+
],
|
|
28
|
+
"path": "jobs/team/1on1-prep-reminder.yaml"
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
"id": "api-rate-limit-check",
|
|
32
|
+
"version": 1,
|
|
33
|
+
"name": "API Rate Limit Check",
|
|
34
|
+
"description": "Checks how many API requests you have left before hitting a rate limit. Use this if you've ever gotten a 429 in production because nobody was watching the remaining quota.",
|
|
35
|
+
"category": "devops",
|
|
36
|
+
"tags": [
|
|
37
|
+
"api",
|
|
38
|
+
"rate-limit",
|
|
39
|
+
"monitoring"
|
|
40
|
+
],
|
|
41
|
+
"schedule": "*/15 * * * *",
|
|
42
|
+
"timezone": "UTC",
|
|
43
|
+
"runner": "shell",
|
|
44
|
+
"modes": [
|
|
45
|
+
"script"
|
|
46
|
+
],
|
|
47
|
+
"compatible_agents": [
|
|
48
|
+
"generic",
|
|
49
|
+
"claude",
|
|
50
|
+
"codex"
|
|
51
|
+
],
|
|
52
|
+
"path": "jobs/devops/api-rate-limit-check.yaml"
|
|
53
|
+
},
|
|
6
54
|
{
|
|
7
55
|
"id": "backup-reminder",
|
|
8
56
|
"version": 1,
|
|
@@ -129,6 +177,54 @@
|
|
|
129
177
|
],
|
|
130
178
|
"path": "jobs/devops/cost-alert.yaml"
|
|
131
179
|
},
|
|
180
|
+
{
|
|
181
|
+
"id": "course-progress-checkin",
|
|
182
|
+
"version": 1,
|
|
183
|
+
"name": "Course Progress Check-in",
|
|
184
|
+
"description": "Compares your current chapter/lesson against a target date and tells you if you're on track or falling behind. Use this if you've ever signed up for a course and quietly stopped halfway through.",
|
|
185
|
+
"category": "learning",
|
|
186
|
+
"tags": [
|
|
187
|
+
"learning",
|
|
188
|
+
"goals",
|
|
189
|
+
"progress"
|
|
190
|
+
],
|
|
191
|
+
"schedule": "0 9 * * 1",
|
|
192
|
+
"timezone": "America/Los_Angeles",
|
|
193
|
+
"runner": "shell",
|
|
194
|
+
"modes": [
|
|
195
|
+
"script"
|
|
196
|
+
],
|
|
197
|
+
"compatible_agents": [
|
|
198
|
+
"generic",
|
|
199
|
+
"claude",
|
|
200
|
+
"codex"
|
|
201
|
+
],
|
|
202
|
+
"path": "jobs/learning/course-progress-checkin.yaml"
|
|
203
|
+
},
|
|
204
|
+
{
|
|
205
|
+
"id": "daily-flashcard-review",
|
|
206
|
+
"version": 1,
|
|
207
|
+
"name": "Daily Flashcard Review",
|
|
208
|
+
"description": "Lists which flashcards are due for review today from a simple deck file. Use this if you're learning something with spaced repetition but don't want a whole separate app for it.",
|
|
209
|
+
"category": "learning",
|
|
210
|
+
"tags": [
|
|
211
|
+
"learning",
|
|
212
|
+
"flashcards",
|
|
213
|
+
"spaced-repetition"
|
|
214
|
+
],
|
|
215
|
+
"schedule": "0 8 * * *",
|
|
216
|
+
"timezone": "America/Los_Angeles",
|
|
217
|
+
"runner": "shell",
|
|
218
|
+
"modes": [
|
|
219
|
+
"script"
|
|
220
|
+
],
|
|
221
|
+
"compatible_agents": [
|
|
222
|
+
"generic",
|
|
223
|
+
"claude",
|
|
224
|
+
"codex"
|
|
225
|
+
],
|
|
226
|
+
"path": "jobs/learning/daily-flashcard-review.yaml"
|
|
227
|
+
},
|
|
132
228
|
{
|
|
133
229
|
"id": "daily-standup-summary",
|
|
134
230
|
"version": 1,
|
|
@@ -156,6 +252,30 @@
|
|
|
156
252
|
],
|
|
157
253
|
"path": "jobs/productivity/daily-standup-summary.yaml"
|
|
158
254
|
},
|
|
255
|
+
{
|
|
256
|
+
"id": "db-backup-verify",
|
|
257
|
+
"version": 1,
|
|
258
|
+
"name": "Database Backup Restore Verification",
|
|
259
|
+
"description": "Actually restores your latest database backup to a throwaway database and checks it's queryable. Use this if `backup-reminder` isn't enough — a backup file existing doesn't mean it's actually restorable.",
|
|
260
|
+
"category": "devops",
|
|
261
|
+
"tags": [
|
|
262
|
+
"database",
|
|
263
|
+
"backup",
|
|
264
|
+
"postgres"
|
|
265
|
+
],
|
|
266
|
+
"schedule": "0 5 * * *",
|
|
267
|
+
"timezone": "UTC",
|
|
268
|
+
"runner": "shell",
|
|
269
|
+
"modes": [
|
|
270
|
+
"script"
|
|
271
|
+
],
|
|
272
|
+
"compatible_agents": [
|
|
273
|
+
"generic",
|
|
274
|
+
"claude",
|
|
275
|
+
"codex"
|
|
276
|
+
],
|
|
277
|
+
"path": "jobs/devops/db-backup-verify.yaml"
|
|
278
|
+
},
|
|
159
279
|
{
|
|
160
280
|
"id": "dependency-audit",
|
|
161
281
|
"version": 1,
|
|
@@ -207,6 +327,30 @@
|
|
|
207
327
|
],
|
|
208
328
|
"path": "jobs/devops/disk-space-check.yaml"
|
|
209
329
|
},
|
|
330
|
+
{
|
|
331
|
+
"id": "dns-record-check",
|
|
332
|
+
"version": 1,
|
|
333
|
+
"name": "DNS Record Drift Check",
|
|
334
|
+
"description": "Checks that a DNS record still resolves to the value you expect, and flags drift. Use this if you've ever had DNS quietly change (an expired record, a misconfigured provider) and only found out when something broke.",
|
|
335
|
+
"category": "devops",
|
|
336
|
+
"tags": [
|
|
337
|
+
"dns",
|
|
338
|
+
"monitoring",
|
|
339
|
+
"drift"
|
|
340
|
+
],
|
|
341
|
+
"schedule": "0 */6 * * *",
|
|
342
|
+
"timezone": "UTC",
|
|
343
|
+
"runner": "shell",
|
|
344
|
+
"modes": [
|
|
345
|
+
"script"
|
|
346
|
+
],
|
|
347
|
+
"compatible_agents": [
|
|
348
|
+
"generic",
|
|
349
|
+
"claude",
|
|
350
|
+
"codex"
|
|
351
|
+
],
|
|
352
|
+
"path": "jobs/devops/dns-record-check.yaml"
|
|
353
|
+
},
|
|
210
354
|
{
|
|
211
355
|
"id": "docker-image-prune",
|
|
212
356
|
"version": 1,
|
|
@@ -255,6 +399,78 @@
|
|
|
255
399
|
],
|
|
256
400
|
"path": "jobs/devops/env-drift-check.yaml"
|
|
257
401
|
},
|
|
402
|
+
{
|
|
403
|
+
"id": "failed-login-watch",
|
|
404
|
+
"version": 1,
|
|
405
|
+
"name": "Failed Login Watch",
|
|
406
|
+
"description": "Watches an auth log for a burst of failed login attempts and alerts if it crosses a threshold. Use this if you run a server exposed to SSH and want an early warning for brute-force attempts.",
|
|
407
|
+
"category": "security",
|
|
408
|
+
"tags": [
|
|
409
|
+
"security",
|
|
410
|
+
"auth",
|
|
411
|
+
"monitoring"
|
|
412
|
+
],
|
|
413
|
+
"schedule": "*/15 * * * *",
|
|
414
|
+
"timezone": "UTC",
|
|
415
|
+
"runner": "shell",
|
|
416
|
+
"modes": [
|
|
417
|
+
"script"
|
|
418
|
+
],
|
|
419
|
+
"compatible_agents": [
|
|
420
|
+
"generic",
|
|
421
|
+
"claude",
|
|
422
|
+
"codex"
|
|
423
|
+
],
|
|
424
|
+
"path": "jobs/security/failed-login-watch.yaml"
|
|
425
|
+
},
|
|
426
|
+
{
|
|
427
|
+
"id": "firewall-rule-diff",
|
|
428
|
+
"version": 1,
|
|
429
|
+
"name": "Firewall Rule Diff",
|
|
430
|
+
"description": "Diffs your current firewall rules against a saved baseline and flags any drift. Use this if a firewall rule has ever changed without anyone remembering who did it or why.",
|
|
431
|
+
"category": "security",
|
|
432
|
+
"tags": [
|
|
433
|
+
"security",
|
|
434
|
+
"firewall",
|
|
435
|
+
"drift"
|
|
436
|
+
],
|
|
437
|
+
"schedule": "0 6 * * *",
|
|
438
|
+
"timezone": "UTC",
|
|
439
|
+
"runner": "shell",
|
|
440
|
+
"modes": [
|
|
441
|
+
"script"
|
|
442
|
+
],
|
|
443
|
+
"compatible_agents": [
|
|
444
|
+
"generic",
|
|
445
|
+
"claude",
|
|
446
|
+
"codex"
|
|
447
|
+
],
|
|
448
|
+
"path": "jobs/security/firewall-rule-diff.yaml"
|
|
449
|
+
},
|
|
450
|
+
{
|
|
451
|
+
"id": "focus-block-reminder",
|
|
452
|
+
"version": 1,
|
|
453
|
+
"name": "Focus Block Reminder",
|
|
454
|
+
"description": "Nudges you to start a deep-work block at set times. Use this if your day fills up with reactive work and real focus time only happens by accident.",
|
|
455
|
+
"category": "productivity",
|
|
456
|
+
"tags": [
|
|
457
|
+
"focus",
|
|
458
|
+
"productivity",
|
|
459
|
+
"deep-work"
|
|
460
|
+
],
|
|
461
|
+
"schedule": "0 9,14 * * 1-5",
|
|
462
|
+
"timezone": "America/Los_Angeles",
|
|
463
|
+
"runner": "shell",
|
|
464
|
+
"modes": [
|
|
465
|
+
"script"
|
|
466
|
+
],
|
|
467
|
+
"compatible_agents": [
|
|
468
|
+
"generic",
|
|
469
|
+
"claude",
|
|
470
|
+
"codex"
|
|
471
|
+
],
|
|
472
|
+
"path": "jobs/productivity/focus-block-reminder.yaml"
|
|
473
|
+
},
|
|
258
474
|
{
|
|
259
475
|
"id": "habit-checkin",
|
|
260
476
|
"version": 1,
|
|
@@ -305,6 +521,54 @@
|
|
|
305
521
|
],
|
|
306
522
|
"path": "jobs/productivity/inbox-triage.yaml"
|
|
307
523
|
},
|
|
524
|
+
{
|
|
525
|
+
"id": "invoice-overdue-check",
|
|
526
|
+
"version": 1,
|
|
527
|
+
"name": "Invoice Overdue Check",
|
|
528
|
+
"description": "Flags invoices that are past due and still unpaid. Use this if you freelance or run a small business and invoices have ever slipped through the cracks.",
|
|
529
|
+
"category": "finance",
|
|
530
|
+
"tags": [
|
|
531
|
+
"invoices",
|
|
532
|
+
"accounts-receivable",
|
|
533
|
+
"finance"
|
|
534
|
+
],
|
|
535
|
+
"schedule": "0 9 * * *",
|
|
536
|
+
"timezone": "UTC",
|
|
537
|
+
"runner": "shell",
|
|
538
|
+
"modes": [
|
|
539
|
+
"script"
|
|
540
|
+
],
|
|
541
|
+
"compatible_agents": [
|
|
542
|
+
"generic",
|
|
543
|
+
"claude",
|
|
544
|
+
"codex"
|
|
545
|
+
],
|
|
546
|
+
"path": "jobs/finance/invoice-overdue-check.yaml"
|
|
547
|
+
},
|
|
548
|
+
{
|
|
549
|
+
"id": "license-compliance-check",
|
|
550
|
+
"version": 1,
|
|
551
|
+
"name": "Dependency License Compliance Check",
|
|
552
|
+
"description": "Scans your dependencies for licenses you've flagged as risky (like GPL or AGPL). Use this if you've ever shipped something and only later found out a dependency's license doesn't play well with your product.",
|
|
553
|
+
"category": "devops",
|
|
554
|
+
"tags": [
|
|
555
|
+
"license",
|
|
556
|
+
"compliance",
|
|
557
|
+
"dependencies"
|
|
558
|
+
],
|
|
559
|
+
"schedule": "0 8 * * 1",
|
|
560
|
+
"timezone": "UTC",
|
|
561
|
+
"runner": "shell",
|
|
562
|
+
"modes": [
|
|
563
|
+
"script"
|
|
564
|
+
],
|
|
565
|
+
"compatible_agents": [
|
|
566
|
+
"generic",
|
|
567
|
+
"claude",
|
|
568
|
+
"codex"
|
|
569
|
+
],
|
|
570
|
+
"path": "jobs/devops/license-compliance-check.yaml"
|
|
571
|
+
},
|
|
308
572
|
{
|
|
309
573
|
"id": "log-cleanup",
|
|
310
574
|
"version": 1,
|
|
@@ -379,6 +643,126 @@
|
|
|
379
643
|
],
|
|
380
644
|
"path": "jobs/finance/net-worth-snapshot.yaml"
|
|
381
645
|
},
|
|
646
|
+
{
|
|
647
|
+
"id": "open-port-check",
|
|
648
|
+
"version": 1,
|
|
649
|
+
"name": "Expected Open Ports Check",
|
|
650
|
+
"description": "Checks that the ports you expect to be open on a host actually are, and flags any that aren't. Use this if a service has ever silently stopped listening and you found out from a user instead of a monitor.",
|
|
651
|
+
"category": "security",
|
|
652
|
+
"tags": [
|
|
653
|
+
"security",
|
|
654
|
+
"network",
|
|
655
|
+
"ports"
|
|
656
|
+
],
|
|
657
|
+
"schedule": "0 */4 * * *",
|
|
658
|
+
"timezone": "UTC",
|
|
659
|
+
"runner": "shell",
|
|
660
|
+
"modes": [
|
|
661
|
+
"script"
|
|
662
|
+
],
|
|
663
|
+
"compatible_agents": [
|
|
664
|
+
"generic",
|
|
665
|
+
"claude",
|
|
666
|
+
"codex"
|
|
667
|
+
],
|
|
668
|
+
"path": "jobs/security/open-port-check.yaml"
|
|
669
|
+
},
|
|
670
|
+
{
|
|
671
|
+
"id": "orphaned-branch-cleanup",
|
|
672
|
+
"version": 1,
|
|
673
|
+
"name": "Orphaned Branch Cleanup",
|
|
674
|
+
"description": "Lists remote branches already merged into main that nobody's deleted yet. Use this if your branch list has become a graveyard nobody wants to clean up.",
|
|
675
|
+
"category": "devops",
|
|
676
|
+
"tags": [
|
|
677
|
+
"git",
|
|
678
|
+
"cleanup",
|
|
679
|
+
"branches"
|
|
680
|
+
],
|
|
681
|
+
"schedule": "0 9 * * 1",
|
|
682
|
+
"timezone": "UTC",
|
|
683
|
+
"runner": "shell",
|
|
684
|
+
"modes": [
|
|
685
|
+
"script"
|
|
686
|
+
],
|
|
687
|
+
"compatible_agents": [
|
|
688
|
+
"generic",
|
|
689
|
+
"claude",
|
|
690
|
+
"codex"
|
|
691
|
+
],
|
|
692
|
+
"path": "jobs/devops/orphaned-branch-cleanup.yaml"
|
|
693
|
+
},
|
|
694
|
+
{
|
|
695
|
+
"id": "pto-balance-check",
|
|
696
|
+
"version": 1,
|
|
697
|
+
"name": "PTO Balance Check",
|
|
698
|
+
"description": "Warns you before unused PTO expires or resets. Use this if you've ever lost vacation days because you forgot they don't roll over.",
|
|
699
|
+
"category": "team",
|
|
700
|
+
"tags": [
|
|
701
|
+
"pto",
|
|
702
|
+
"vacation",
|
|
703
|
+
"team"
|
|
704
|
+
],
|
|
705
|
+
"schedule": "0 9 1 * *",
|
|
706
|
+
"timezone": "America/Los_Angeles",
|
|
707
|
+
"runner": "shell",
|
|
708
|
+
"modes": [
|
|
709
|
+
"script"
|
|
710
|
+
],
|
|
711
|
+
"compatible_agents": [
|
|
712
|
+
"generic",
|
|
713
|
+
"claude",
|
|
714
|
+
"codex"
|
|
715
|
+
],
|
|
716
|
+
"path": "jobs/team/pto-balance-check.yaml"
|
|
717
|
+
},
|
|
718
|
+
{
|
|
719
|
+
"id": "queue-depth-check",
|
|
720
|
+
"version": 1,
|
|
721
|
+
"name": "Queue Depth Check",
|
|
722
|
+
"description": "Checks how backed up a job queue is and warns if it crosses a threshold. Use this if a stuck worker has ever let a queue silently balloon until someone noticed customers weren't getting emails.",
|
|
723
|
+
"category": "devops",
|
|
724
|
+
"tags": [
|
|
725
|
+
"queue",
|
|
726
|
+
"redis",
|
|
727
|
+
"monitoring"
|
|
728
|
+
],
|
|
729
|
+
"schedule": "*/10 * * * *",
|
|
730
|
+
"timezone": "UTC",
|
|
731
|
+
"runner": "shell",
|
|
732
|
+
"modes": [
|
|
733
|
+
"script"
|
|
734
|
+
],
|
|
735
|
+
"compatible_agents": [
|
|
736
|
+
"generic",
|
|
737
|
+
"claude",
|
|
738
|
+
"codex"
|
|
739
|
+
],
|
|
740
|
+
"path": "jobs/devops/queue-depth-check.yaml"
|
|
741
|
+
},
|
|
742
|
+
{
|
|
743
|
+
"id": "reading-list-nudge",
|
|
744
|
+
"version": 1,
|
|
745
|
+
"name": "Reading List Nudge",
|
|
746
|
+
"description": "Reminds you what's next on your reading list. Use this if you save articles/books to \"read later\" and later never comes.",
|
|
747
|
+
"category": "learning",
|
|
748
|
+
"tags": [
|
|
749
|
+
"learning",
|
|
750
|
+
"reading",
|
|
751
|
+
"reminder"
|
|
752
|
+
],
|
|
753
|
+
"schedule": "0 9 * * 6",
|
|
754
|
+
"timezone": "America/Los_Angeles",
|
|
755
|
+
"runner": "shell",
|
|
756
|
+
"modes": [
|
|
757
|
+
"script"
|
|
758
|
+
],
|
|
759
|
+
"compatible_agents": [
|
|
760
|
+
"generic",
|
|
761
|
+
"claude",
|
|
762
|
+
"codex"
|
|
763
|
+
],
|
|
764
|
+
"path": "jobs/learning/reading-list-nudge.yaml"
|
|
765
|
+
},
|
|
382
766
|
{
|
|
383
767
|
"id": "repo-health-check",
|
|
384
768
|
"version": 1,
|
|
@@ -406,6 +790,55 @@
|
|
|
406
790
|
],
|
|
407
791
|
"path": "jobs/devops/repo-health-check.yaml"
|
|
408
792
|
},
|
|
793
|
+
{
|
|
794
|
+
"id": "rss-feed-validate",
|
|
795
|
+
"version": 1,
|
|
796
|
+
"name": "RSS Feed Validation",
|
|
797
|
+
"description": "Checks your RSS/Atom feed is valid XML and shows the most recent item's publish date. Use this if you've ever shipped a broken feed and only found out when a reader's app stopped updating.",
|
|
798
|
+
"category": "content",
|
|
799
|
+
"tags": [
|
|
800
|
+
"rss",
|
|
801
|
+
"feed",
|
|
802
|
+
"content"
|
|
803
|
+
],
|
|
804
|
+
"schedule": "0 8 * * *",
|
|
805
|
+
"timezone": "UTC",
|
|
806
|
+
"runner": "shell",
|
|
807
|
+
"modes": [
|
|
808
|
+
"script"
|
|
809
|
+
],
|
|
810
|
+
"compatible_agents": [
|
|
811
|
+
"generic",
|
|
812
|
+
"claude",
|
|
813
|
+
"codex"
|
|
814
|
+
],
|
|
815
|
+
"path": "jobs/content/rss-feed-validate.yaml"
|
|
816
|
+
},
|
|
817
|
+
{
|
|
818
|
+
"id": "saas-seat-audit",
|
|
819
|
+
"version": 1,
|
|
820
|
+
"name": "Team SaaS Seat Audit",
|
|
821
|
+
"description": "Flags team SaaS seats (Slack, Notion, GitHub, etc.) nobody's actually used in a while. Use this if you suspect you're paying for seats of people who left or tools nobody opens anymore.",
|
|
822
|
+
"category": "finance",
|
|
823
|
+
"tags": [
|
|
824
|
+
"saas",
|
|
825
|
+
"seats",
|
|
826
|
+
"team",
|
|
827
|
+
"budget"
|
|
828
|
+
],
|
|
829
|
+
"schedule": "0 9 1 * *",
|
|
830
|
+
"timezone": "UTC",
|
|
831
|
+
"runner": "shell",
|
|
832
|
+
"modes": [
|
|
833
|
+
"script"
|
|
834
|
+
],
|
|
835
|
+
"compatible_agents": [
|
|
836
|
+
"generic",
|
|
837
|
+
"claude",
|
|
838
|
+
"codex"
|
|
839
|
+
],
|
|
840
|
+
"path": "jobs/finance/saas-seat-audit.yaml"
|
|
841
|
+
},
|
|
409
842
|
{
|
|
410
843
|
"id": "screen-time-check",
|
|
411
844
|
"version": 1,
|
|
@@ -432,6 +865,54 @@
|
|
|
432
865
|
],
|
|
433
866
|
"path": "jobs/personal/screen-time-check.yaml"
|
|
434
867
|
},
|
|
868
|
+
{
|
|
869
|
+
"id": "secrets-scan",
|
|
870
|
+
"version": 1,
|
|
871
|
+
"name": "Committed Secrets Scan",
|
|
872
|
+
"description": "Scans a repo for accidentally committed API keys, tokens, and private keys. Use this if you want a safety net for the \"oops, committed a key\" mistake everyone makes eventually.",
|
|
873
|
+
"category": "security",
|
|
874
|
+
"tags": [
|
|
875
|
+
"security",
|
|
876
|
+
"secrets",
|
|
877
|
+
"scanning"
|
|
878
|
+
],
|
|
879
|
+
"schedule": "0 3 * * *",
|
|
880
|
+
"timezone": "UTC",
|
|
881
|
+
"runner": "shell",
|
|
882
|
+
"modes": [
|
|
883
|
+
"script"
|
|
884
|
+
],
|
|
885
|
+
"compatible_agents": [
|
|
886
|
+
"generic",
|
|
887
|
+
"claude",
|
|
888
|
+
"codex"
|
|
889
|
+
],
|
|
890
|
+
"path": "jobs/security/secrets-scan.yaml"
|
|
891
|
+
},
|
|
892
|
+
{
|
|
893
|
+
"id": "seo-meta-check",
|
|
894
|
+
"version": 1,
|
|
895
|
+
"name": "SEO Meta Tag Check",
|
|
896
|
+
"description": "Checks a list of pages for missing title, meta description, and Open Graph tags. Use this if pages have ever shipped without basic SEO/social-preview tags because nobody double-checked.",
|
|
897
|
+
"category": "content",
|
|
898
|
+
"tags": [
|
|
899
|
+
"seo",
|
|
900
|
+
"content",
|
|
901
|
+
"meta-tags"
|
|
902
|
+
],
|
|
903
|
+
"schedule": "0 7 * * 1",
|
|
904
|
+
"timezone": "UTC",
|
|
905
|
+
"runner": "shell",
|
|
906
|
+
"modes": [
|
|
907
|
+
"script"
|
|
908
|
+
],
|
|
909
|
+
"compatible_agents": [
|
|
910
|
+
"generic",
|
|
911
|
+
"claude",
|
|
912
|
+
"codex"
|
|
913
|
+
],
|
|
914
|
+
"path": "jobs/content/seo-meta-check.yaml"
|
|
915
|
+
},
|
|
435
916
|
{
|
|
436
917
|
"id": "social-mentions-watch",
|
|
437
918
|
"version": 1,
|
|
@@ -531,6 +1012,54 @@
|
|
|
531
1012
|
],
|
|
532
1013
|
"path": "jobs/finance/subscription-audit.yaml"
|
|
533
1014
|
},
|
|
1015
|
+
{
|
|
1016
|
+
"id": "sudo-usage-audit",
|
|
1017
|
+
"version": 1,
|
|
1018
|
+
"name": "Sudo Usage Audit",
|
|
1019
|
+
"description": "Reports new sudo commands run since the last check. Use this if you want to notice unexpected privilege escalation on a shared or internet-facing server.",
|
|
1020
|
+
"category": "security",
|
|
1021
|
+
"tags": [
|
|
1022
|
+
"security",
|
|
1023
|
+
"sudo",
|
|
1024
|
+
"audit"
|
|
1025
|
+
],
|
|
1026
|
+
"schedule": "0 * * * *",
|
|
1027
|
+
"timezone": "UTC",
|
|
1028
|
+
"runner": "shell",
|
|
1029
|
+
"modes": [
|
|
1030
|
+
"script"
|
|
1031
|
+
],
|
|
1032
|
+
"compatible_agents": [
|
|
1033
|
+
"generic",
|
|
1034
|
+
"claude",
|
|
1035
|
+
"codex"
|
|
1036
|
+
],
|
|
1037
|
+
"path": "jobs/security/sudo-usage-audit.yaml"
|
|
1038
|
+
},
|
|
1039
|
+
{
|
|
1040
|
+
"id": "tax-deadline-reminder",
|
|
1041
|
+
"version": 1,
|
|
1042
|
+
"name": "Tax Deadline Reminder",
|
|
1043
|
+
"description": "Warns you ahead of upcoming tax deadlines you've listed. Use this if quarterly estimated payments or annual filing dates have ever snuck up on you.",
|
|
1044
|
+
"category": "finance",
|
|
1045
|
+
"tags": [
|
|
1046
|
+
"tax",
|
|
1047
|
+
"deadlines",
|
|
1048
|
+
"finance"
|
|
1049
|
+
],
|
|
1050
|
+
"schedule": "0 9 * * *",
|
|
1051
|
+
"timezone": "UTC",
|
|
1052
|
+
"runner": "shell",
|
|
1053
|
+
"modes": [
|
|
1054
|
+
"script"
|
|
1055
|
+
],
|
|
1056
|
+
"compatible_agents": [
|
|
1057
|
+
"generic",
|
|
1058
|
+
"claude",
|
|
1059
|
+
"codex"
|
|
1060
|
+
],
|
|
1061
|
+
"path": "jobs/finance/tax-deadline-reminder.yaml"
|
|
1062
|
+
},
|
|
534
1063
|
{
|
|
535
1064
|
"id": "uptime-ping-check",
|
|
536
1065
|
"version": 1,
|