@groupby/ai-dev 0.5.18 → 0.5.19

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@groupby/ai-dev",
3
- "version": "0.5.18",
3
+ "version": "0.5.19",
4
4
  "description": "Interactive installer for Rezolve Ai development content",
5
5
  "type": "module",
6
6
  "bin": {
@@ -0,0 +1,37 @@
1
+ # OOF Release Impact Analysis
2
+
3
+ Generates a structured, human-reviewed **Release Impact Analysis** for a critical OOF
4
+ release by correlating the git diff with the surrounding code, linked Jira tickets, and
5
+ live operational signal (GCP Cloud Logging / BigQuery), then optionally publishes it to
6
+ Confluence. Output is AI-generated decision-support and requires human sign-off.
7
+
8
+ ## What it does
9
+ - Resolves the release range (last prod tag → release candidate, or a supplied `base..head`)
10
+ and gathers signal: diff + changed code and its call sites, linked Jira keys (revert-aware),
11
+ and — for critical releases — live cloud/outage status, GCP Cloud Logging, and BigQuery.
12
+ - Classifies the blast radius (API/contract, DB/migrations, auth/security, infra/terraform,
13
+ per-region config, dependencies, cross-service, client compatibility, observability).
14
+ - Produces a consistent, readable report: Found issues → Overview → Cross-service blast
15
+ radius → Risk assessment + Top risks → Suggested QA focus (non-technical) → Validation
16
+ performed → Unknowns; with optional Operational context, Pre-launch checklist, and an
17
+ Engineer detail appendix (`detail=engineer`).
18
+ - Optionally publishes the report to Confluence.
19
+
20
+ ## Prerequisites
21
+ - Read-only git access to the target repo (local clone or `glab` / `gh`).
22
+ - For `depth=full` cloud signal: `gcloud` / `bq` authenticated to the target GCP project.
23
+ - For `publish=confluence`: the Atlassian MCP connector connected.
24
+ - An approved enterprise assistant (no-training / no-retention) — the skill's security
25
+ guardrails (never ingest secrets, cost-aware cloud access) must be met.
26
+
27
+ ## Inputs
28
+ `repo`, `range`, `critical`, `depth` (`light` | `full`), `detail` (`summary` | `engineer`),
29
+ `publish` (`confluence` | `none`), `gcp_project`.
30
+
31
+ ## Trigger phrases
32
+ - "run impact analysis"
33
+ - "release impact analysis"
34
+ - "analyse this release before we ship"
35
+
36
+ ## Team
37
+ OOF
@@ -0,0 +1,310 @@
1
+ ---
2
+ name: oof-release-impact-analysis
3
+ description: 'Generate a structured Release Impact Analysis for a critical OOF release by correlating git changes with the surrounding code, linked Jira tickets, and live operational signal (cloud/outage status, GCP Cloud Logging, BigQuery), classify the blast radius, and optionally publish to Confluence. Use when the user says "run impact analysis", "release impact analysis", or before a critical release.'
4
+ ---
5
+
6
+ # OOF Release Impact Analysis
7
+
8
+ **Goal:** For a critical release, produce a structured, human-reviewed **Release Impact
9
+ Analysis** that focuses QA, documents blast radius, and serves as SOC2 change-management
10
+ evidence. The git diff is the *starting point*, not the whole picture — the analysis
11
+ correlates the diff with the surrounding code, the linked Jira tickets, and **live
12
+ operational signal** (cloud/outage status, GCP Cloud Logging, BigQuery) to judge real-world
13
+ impact, not just what a static diff shows.
14
+
15
+ **Your Role:** You are a release engineer performing change-impact analysis. You are
16
+ precise and conservative: you never overstate confidence, you flag what you *cannot*
17
+ determine from the available signal, and you treat the output as decision-support for a
18
+ human reviewer — never as an automatic release gate.
19
+
20
+ > ⚠️ AI-generated. This report assists a human decision. It must be reviewed and
21
+ > signed off before it is relied upon. A release is never gated solely on this output.
22
+
23
+ > 💰 **This deep, multi-source analysis is thorough but expensive** — it burns
24
+ > engineer/agent time, LLM tokens, and real query cost (GCP Logging / BigQuery scanned
25
+ > bytes). Run the **full** analysis only for **critical** releases, and **confirm depth up
26
+ > front** (Step 0) rather than defaulting into it. Non-critical releases should use the
27
+ > lightweight, git-only pass (`depth=light`, no cloud queries, no publish) — or skip the
28
+ > analysis entirely.
29
+
30
+ ## Inputs
31
+
32
+ - **repo** — Repository to analyse (defaults to the current workspace repo).
33
+ - **range** (optional) — Git range `<base>..<head>`. If omitted, resolve it (see Step 1).
34
+ - **critical** (optional) — Whether this is a critical release. Critical forces `depth=full`
35
+ **and** `detail=engineer`, and turns on the CDT-parity uplift (deployment/rollback
36
+ second-order analysis, per-risk severities, a mandatory **Required before production** gate
37
+ + go/no-go recommendation, and an exhaustive engineer-detail appendix).
38
+ - **depth** (optional) — `light` (git + code only) or `full` (also pulls Jira, cloud/outage
39
+ status, GCP logs, BigQuery). Defaults to `full` when `critical`, else `light`.
40
+ - **detail** (optional) — output verbosity: `summary` (default) or `engineer`. `engineer`
41
+ appends the **Required before production** gate and an **Engineer detail** appendix for
42
+ high-risk / infra-heavy releases; the readable summary stays on top either way. **Critical
43
+ releases force `engineer`.**
44
+ - **publish** (optional) — `confluence` to publish the report, or `none` (default) to
45
+ only produce Markdown.
46
+ - **gcp_project** (optional) — GCP project(s) to query for logs/BigQuery (e.g.
47
+ `bluedot-prod-ause1`). Required for `depth=full` cloud signal.
48
+
49
+ ## Security guardrails (MANDATORY — read before running)
50
+
51
+ 1. **Approved LLM only.** Run this only via an approved enterprise assistant with
52
+ no-training / no-retention terms. Do not paste diffs into ad-hoc consumer tools.
53
+ 2. **Never ingest secrets.** Exclude and never echo the contents of secret-bearing files.
54
+ Deny-list at minimum: `*.env`, `_config.*.env`, `*.pem`, `*.key`, `*credentials*`,
55
+ `*secret*`, `serviceAccount*.json`, terraform state, `*.tfvars`. If a diff touches one,
56
+ report **only the filename and that it changed** — never the values.
57
+ 3. **Least privilege.** Read-only git access. Do not push, tag, or modify anything.
58
+ 4. **Access-controlled output.** Publish only to an access-controlled Confluence space.
59
+ Do not expose internal implementation detail to a broad audience.
60
+ 5. **Cost-aware cloud access.** GCP Logging / BigQuery queries cost money and scan real
61
+ data. Always bound queries by the release time window + relevant service/resource, cap
62
+ scanned bytes, and prefer summaries/counts over dumping rows. Never run unbounded
63
+ `SELECT *`. Read-only only.
64
+ 6. **HALT** if you cannot confirm guardrails 1–2 for the current environment.
65
+
66
+ ## Signal sources (the diff is the starting point, not the whole picture)
67
+
68
+ Git tells you *what text changed*; these sources tell you *what it actually affects and
69
+ whether it is safe to ship now*. Use them according to `depth`:
70
+
71
+ - **Git diff + history** (always) — changed files, churn, commit messages, linked tickets.
72
+ - **Surrounding code** (always) — read the changed functions *and their call sites /
73
+ dependents* in the repo, not just the `+/-` lines, to judge real blast radius. A one-line
74
+ change to a shared helper can be higher impact than a large isolated feature.
75
+ - **Linked Jira tickets** (`full`) — pull the `BD-xxxx` keys for intent, acceptance
76
+ criteria, and whether the change is a fix for a known incident.
77
+ - **Cloud / outage status** (`full`) — is the platform currently healthy? Check GCP service
78
+ health and any ongoing SRE incidents for the target project/region. Releasing into an
79
+ active outage or degraded dependency raises risk and may warrant a hold.
80
+ - **GCP Cloud Logging (Logs Explorer)** (`full`) — for the services touched, check recent
81
+ error rates / 5xx / notable log signatures so the analysis reflects the *current* prod
82
+ behaviour of the code being changed (bounded to a short window).
83
+ - **BigQuery** (`full`) — where relevant (e.g. event/analytics tables), sample real volumes
84
+ or error patterns for the affected flow (bounded, capped-bytes, aggregate queries only).
85
+
86
+ ## Execution
87
+
88
+ ### Step 0: Confirm scope & depth (ask before spending)
89
+
90
+ The full analysis costs real time and money, so **confirm depth up front** rather than
91
+ silently defaulting into the expensive path. Unless the user has already specified, ask:
92
+
93
+ - **Critical release?** The full multi-source pass is intended for critical releases only.
94
+ - **Depth?** `full` — code + Jira + cloud/outage status + GCP Logging + BigQuery: thorough,
95
+ but burns agent time, LLM tokens, and **real GCP query charges** (Logging + BigQuery
96
+ scanned bytes). `light` — git + code only: fast and free, no cloud queries, no publish.
97
+ - **Publish?** `confluence`, or Markdown-only (`none`).
98
+
99
+ If the user defers, default to `full` + `detail=engineer` + publish when `critical`, else
100
+ `light` + `none` — but **don't assume `full` for an unspecified release; ask first.**
101
+ Non-critical releases use `light` or skip the analysis entirely. State the chosen depth (and
102
+ why) at the top of the report.
103
+
104
+ ### Step 1: Resolve the release range
105
+
106
+ - If `range` is given, use it.
107
+ - Otherwise resolve `<base>` = most recent production tag/release, `<head>` = the release
108
+ candidate (target branch or RC tag). Prefer, in order:
109
+ - `git describe --tags --abbrev=0` on the last prod tag, or the last tag matching the
110
+ project's release pattern (e.g. semantic-release tags), through `HEAD`.
111
+ - State the resolved `base..head`, both short SHAs, and the commit count. If you cannot
112
+ resolve it confidently, ask the user for the range and HALT.
113
+
114
+ ### Step 2: Gather signal (read-only)
115
+
116
+ Gather from the sources above, without ever printing secret values. Scale effort to
117
+ `depth`.
118
+
119
+ **Always (both `light` and `full`):**
120
+ - Changed files with status + churn: `git diff --stat <base>..<head>` and
121
+ `git diff --name-status <base>..<head>`.
122
+ - Commit messages: `git log --no-merges --pretty='%h %s' <base>..<head>`.
123
+ - Linked work items: Jira keys parsed from commit messages / branch names (e.g. `BD-\d+`).
124
+ **Revert-aware (critical):** a ticket only counts as *in the release* if its changes survive
125
+ in the **net** diff. When commits were reverted within the range (net ≠ history), verify
126
+ whether each ticket's files/content actually survive (e.g. a feature file added then deleted
127
+ is reverted). List reverted tickets **separately** as *reverted in-range (not shipped)* —
128
+ never imply reverted work is part of the release.
129
+ - For non-secret files, inspect the diff **and the surrounding code / call sites** to judge
130
+ real blast radius. For deny-listed files, record filename + "changed (contents not
131
+ inspected)".
132
+
133
+ **Additionally when `depth=full` (critical releases):**
134
+ - **Jira:** read each linked ticket for intent / acceptance criteria / incident linkage.
135
+ - **Cloud / outage status:** confirm the target project/region is healthy (GCP service
136
+ health + any ongoing SRE incidents). Note anything degraded.
137
+ - **GCP Cloud Logging:** for each touched service, sample recent error/5xx signatures in a
138
+ bounded window (e.g. last 1–24h) for `gcp_project` — e.g.
139
+ `gcloud logging read '<filter> severity>=ERROR' --project <p> --freshness=24h --limit=50`.
140
+ - **BigQuery:** where the change touches an event/analytics flow, run a bounded, aggregate
141
+ query (capped bytes, `--maximum_bytes_billed`) to sample real volume / error rate for the
142
+ affected path. Never `SELECT *` unbounded.
143
+ - Record every source actually consulted (feeds the "Data sources consulted" report field).
144
+ - If cloud access is unavailable or `gcp_project` is missing, note it as a gap and continue
145
+ with git+code+Jira signal only (do not fabricate cloud findings).
146
+
147
+ ### Step 3: Classify into impact areas (internal analysis)
148
+
149
+ Bucket every change into the areas below. This classification is **internal** — it drives
150
+ the report's `Found issues`, `Cross-service blast radius`, and the Overview `What changed`
151
+ summary. Do **not** emit a standalone per-area "What changed" section (the report no longer
152
+ uses one). For each touched area capture the concrete files/commits and a one-line "so what";
153
+ note clean areas so their absence can be reflected in the risk assessment.
154
+
155
+ - **API / contract changes** — swagger/openapi specs, route handlers, request/response
156
+ shapes. Flag anything **breaking** for consumers.
157
+ - **Database / migrations** — schema changes, migration scripts, index changes,
158
+ destructive operations.
159
+ - **Auth & security-sensitive** — `auth/`, `security/`, token/session logic, permissions,
160
+ crypto, dependency CVE-relevant bumps. Any change here raises the risk rating.
161
+ - **Infrastructure** — terraform, Dockerfiles, CI/CD pipelines, service definitions.
162
+ - **Config / environment** — per-region config (**AU / EU / US incl. DR**), feature flags,
163
+ env keys added/removed. Note if a change lands in some regions but not others.
164
+ - **Dependencies** — `package.json` / lockfiles and other manifests; separate security
165
+ bumps from feature bumps; note major-version jumps.
166
+ - **Cross-service blast radius** — shared patterns/libraries or contracts that other OOF
167
+ services depend on (a change here can affect repos outside this diff).
168
+ - **Client backwards-compatibility** — impact on Android / native / web clients consuming
169
+ the changed contracts.
170
+ - **Observability / operational** — logging, metrics, alerts, rollback affordances.
171
+ - **Deployment & rollback effects (second-order)** — reason beyond *what code changed* to
172
+ *what the deploy does*: artifact/checksum changes that force a **new revision** even with no
173
+ logic change; provider/toolchain upgrades (e.g. Terraform / `google` provider pins) that can
174
+ cause **state or computed-field drift** → require a `terraform plan` review **per environment
175
+ incl. DR**; CI rules that don't match the release config (e.g. `hotfix/*` allowed in CI but not
176
+ in `.releaserc`) that can tag a build semantic-release later refuses to release; and whether
177
+ the change also gates the **rollback path** (e.g. an auth / Workload Identity migration that
178
+ affects deploy *and* rollback). These are the subtle, high-impact issues a raw diff misses —
179
+ always assess them on `full` / critical runs.
180
+
181
+ ### Step 4: Risk rating
182
+
183
+ Assign an overall risk rating with a one-paragraph justification:
184
+
185
+ - **Low** — isolated, non-breaking, well-tested, easy rollback.
186
+ - **Medium** — touches a shared/contract surface OR config across regions OR notable deps.
187
+ - **High** — breaking API, auth/security, DB migration (esp. destructive), or infra with
188
+ no clean rollback.
189
+
190
+ Bias upward when auth/security, migrations, or cross-service contracts are involved, when
191
+ you had to inspect deny-listed files by name only, or when **live signal is adverse** —
192
+ e.g. an active outage / degraded dependency in the target region, or an elevated error rate
193
+ in Cloud Logging for a service this release touches.
194
+
195
+ **Critical releases (CDT-parity uplift):** tag **each Top risk with its own severity**
196
+ (High / Med / Low), consolidate the concrete pre-production validations into a **Required
197
+ before production** gate, and finish with an explicit **go/no-go recommendation** ("promote
198
+ only after X, Y, Z pass"). Populate the **Engineer detail** appendix in full — exact
199
+ versions/pins, **every** affected environment (incl. DR), and per-item failure mode +
200
+ required validation. This mirrors the manual CDT analysis's audit-grade evidence trail and
201
+ clear release gate.
202
+
203
+ ### Step 4b: Synthesise the findings
204
+
205
+ From the classification + risk, distil a short **Found issues** list for the top of the
206
+ report — **only realistic, critical items**; omit perfect-world / low-tier concerns (e.g.
207
+ dev-only paths with no production impact, pre-existing standing gaps, or future / in-flight
208
+ fixes). Favour: risky or changed semantics, real deploy/rollout hazards, security-relevant
209
+ changes, and cross-service latent bugs. Each issue = a **bold one-line title** + a 1–3
210
+ sentence description. If there are genuinely none, say so explicitly rather than padding.
211
+
212
+ ### Step 4c: Record what you verified
213
+
214
+ Keep a running list of what you **actually checked** while analysing (e.g. "confirmed
215
+ app/API/test paths identical via `git diff --name-status`", "confirmed dependency pin",
216
+ "ran `git diff --check` (clean)", "verified WAF rules are `preview=true`"). This feeds the
217
+ **Validation performed** section and, together with **Unknowns**, gives an auditable
218
+ evidence trail — what was, and was not, confirmed.
219
+
220
+ ### Step 5: Produce the report
221
+
222
+ Output this structure in Markdown, in this order (the layout must match the published
223
+ report). Every section is required **except** the ones marked *[OPTIONAL]*: *Operational
224
+ context* (include only if significant), and *Required before production* + *Engineer detail*
225
+ (**required for critical releases**; otherwise include only when `detail=engineer`, or the
226
+ release is high-risk / infra-heavy).
227
+
228
+ ```
229
+ # Impact Analysis of Release — <repo> `<base>` → `<head>` (<short change summary>)
230
+
231
+ ## Found issues
232
+
233
+ 1. **<issue title>.** <1–3 sentence description of the issue and why it matters.>
234
+ 2. **<issue title>.** <...>
235
+ <If genuinely none: "No notable issues found — see Overview.">
236
+
237
+ ## Overview
238
+ - **What changed:** <concise 1–2 sentence summary of the change and its intent>
239
+ - **Repo / range:** `<repo>` `<base>` (`<sha>`) → `<head>` (`<sha>`) — <N> commits
240
+ - **Changed:** <N> files, +<X> / -<Y> — `<file>` (+n), `<file>` (+m)
241
+ - **Linked tickets (in this release):** <tickets whose changes survive in the net diff | none referenced>
242
+ - **Reverted in-range (not shipped):** <tickets whose commits were reverted within the range — omit this line entirely if none>
243
+ - **Depth:** <light|full> · **Data sources consulted:** <git, code, jira, outage-status, gcp-logs, bigquery> · **Not consulted:** <sources skipped / unavailable>
244
+ - **Overall risk:** **<LOW|MEDIUM|HIGH>** — <one-line reason>
245
+
246
+ ## Cross-service blast radius
247
+ <shared patterns/contracts other OOF services depend on that this change (or the bug it
248
+ fixes) also affects; "None identified" if isolated>
249
+
250
+ ## Operational context [OPTIONAL — include ONLY if there is something significant to report]
251
+ <Include this section only when live signal is material — e.g. an active outage, a degraded
252
+ dependency, or a notable error/volume pattern in Cloud Logging / BigQuery for a touched
253
+ service. If nothing significant (or live queries were not run), OMIT this section entirely
254
+ and record the "not queried" fact under Unknowns instead.>
255
+
256
+ ## Risk assessment
257
+ **<LOW|MEDIUM|HIGH>.** <justification paragraph; note if live signal changed the rating.>
258
+
259
+ ### Top risks
260
+ <only material, realistic risks — omit perfect-world / low-tier concerns; for critical
261
+ releases tag each with a severity — **High / Med / Low**>
262
+ 1. **<High|Med|Low>** — <...>
263
+ 2. **<High|Med|Low>** — <...>
264
+
265
+ ## Suggested QA focus
266
+ <solely the QA / functional areas a non-coder QA reviewer should confirm — assume engineers
267
+ have already completed their technical and infrastructure checks. Concise, plain-language, no
268
+ code or jargon. For a purely infra change with no user-facing effect, state what to confirm
269
+ still works after go-live.>
270
+
271
+ ## Validation performed
272
+ <short bullet list of what this analysis ACTUALLY checked / verified — the evidence behind the
273
+ conclusions above. E.g. "confirmed app/API/test paths identical", "confirmed dependency pin",
274
+ "ran git diff --check (clean)", "verified WAF rules are preview=true". Pairs with Unknowns.>
275
+
276
+ ## Unknowns / could not determine from available signal
277
+ <explicit list — never leave this empty by guessing; include any source that was
278
+ unavailable, e.g. "no GCP access — live cloud rates not checked">
279
+
280
+ ## Required before production [REQUIRED for critical releases; else OPTIONAL — include when detail=engineer or high-risk / infra-heavy]
281
+ <concrete boxes the release owner must tick before go-live — each naming the *validation*, not
282
+ just the risk; cover auth/deploy, `terraform plan` per env incl. DR, artifact/revision
283
+ expectations, CI vs `.releaserc` alignment, and that the **rollback path** still works under any
284
+ changed auth>
285
+ - [ ] <check 1 — e.g. production Workload Identity auth validated for all prod + DR projects>
286
+ - [ ] <check 2 — e.g. `terraform plan` reviewed per env; no unexpected replace / delete / IAM change>
287
+
288
+ **Recommendation:** **<GO | NO-GO / HOLD>** — <promote only after the named validations pass; one-line rationale.>
289
+
290
+ ## Engineer detail [REQUIRED for critical releases; else OPTIONAL — include only when detail=engineer]
291
+ <the exhaustive, engineer-grade specifics the summary above intentionally omits — **exact
292
+ versions / pins**, **every** affected environment (incl. DR), per-item failure mode + required
293
+ validation, and the deployment/rollback second-order effects (artifact/revision changes,
294
+ provider state drift, CI-vs-`.releaserc` mismatch, rollback-path auth). Kept at the bottom so
295
+ the summary stays readable for non-technical readers.>
296
+
297
+ ---
298
+ *AI-generated by the `oof-release-impact-analysis` skill (BD-8139) · reviewer: TBD · <date> · decision-support only. Range `<base>..<head>`. Rerun with valid GCP credentials to populate live Operational context.*
299
+ ```
300
+
301
+ ### Step 6: Publish (only if `publish=confluence`)
302
+
303
+ - Publish the report as a **child page** of the **Impact Analysis** folder page in the
304
+ **OOF Skills** folder: Confluence space **`BNM1`**, parent page id **`5915476067`**
305
+ (`https://rezolvetech.atlassian.net/wiki/spaces/BNM1/folder/5912657922/OOF+Skills` →
306
+ *Impact Analysis*). Use markdown format, page emoji 🚦. Page **title**:
307
+ `Release Impact Analysis — <repo> <base> → <head> (<summary>)`. The page **body** begins
308
+ with the `# Impact Analysis of Release — …` heading from the template above.
309
+ - Add the Confluence page link back to the release Jira ticket.
310
+ - Never publish if any guardrail check failed.