continuous-improvement 3.17.0 → 3.18.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/.claude-plugin/marketplace.json +1 -1
- package/README.md +164 -99
- package/bin/audit-actions.mjs +433 -0
- package/bin/check-command-count.mjs +114 -0
- package/bin/portfolio-health.mjs +298 -0
- package/commands/reconcile.md +34 -7
- package/hooks/gateguard.mjs +137 -3
- package/lib/gateguard-state.mjs +5 -1
- package/package.json +12 -6
- package/plugins/beginner.json +1 -1
- package/plugins/continuous-improvement/.claude-plugin/marketplace.json +1 -1
- package/plugins/continuous-improvement/.claude-plugin/plugin.json +1 -1
- package/plugins/continuous-improvement/commands/reconcile.md +34 -7
- package/plugins/continuous-improvement/hooks/gateguard.mjs +137 -3
- package/plugins/continuous-improvement/lib/gateguard-state.mjs +5 -1
- package/plugins/continuous-improvement/skills/README.md +1 -1
- package/plugins/continuous-improvement/skills/gateguard/SKILL.md +10 -0
- package/plugins/continuous-improvement/skills/reconcile/SKILL.md +52 -4
- package/plugins/expert.json +1 -1
- package/skills/gateguard.md +10 -0
- package/skills/reconcile.md +52 -4
- package/templates/actions_security_checklist.md +39 -0
- package/templates/experiment_template.md +38 -0
- package/templates/portfolio_event.schema.json +69 -0
- package/templates/release_receipt_template.md +37 -0
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://raw.githubusercontent.com/naimkatiman/continuous-improvement/main/templates/portfolio_event.schema.json",
|
|
4
|
+
"title": "PortfolioEvent",
|
|
5
|
+
"description": "Shared event schema for all repos in the portfolio. Every CI run, deploy, incident, experiment, agent action, security finding, release, decision, and metric snapshot is one event.",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"required": ["eventId", "repo", "eventType", "occurredAt", "source"],
|
|
8
|
+
"additionalProperties": false,
|
|
9
|
+
"properties": {
|
|
10
|
+
"eventId": {
|
|
11
|
+
"type": "string",
|
|
12
|
+
"description": "Globally unique id (uuid or <repo>-<timestamp>-<n>)."
|
|
13
|
+
},
|
|
14
|
+
"repo": {
|
|
15
|
+
"type": "string",
|
|
16
|
+
"description": "GitHub repo in owner/name form, e.g. naimkatiman/tradeclaw."
|
|
17
|
+
},
|
|
18
|
+
"eventType": {
|
|
19
|
+
"type": "string",
|
|
20
|
+
"enum": ["ci", "deploy", "incident", "experiment", "agent", "security", "release", "decision", "metric"]
|
|
21
|
+
},
|
|
22
|
+
"occurredAt": {
|
|
23
|
+
"type": "string",
|
|
24
|
+
"format": "date-time",
|
|
25
|
+
"description": "ISO 8601 UTC timestamp."
|
|
26
|
+
},
|
|
27
|
+
"source": {
|
|
28
|
+
"type": "string",
|
|
29
|
+
"description": "What emitted the event: github-actions, wrangler, manual, agent:<name>, cron:<name>."
|
|
30
|
+
},
|
|
31
|
+
"actor": {
|
|
32
|
+
"type": "string",
|
|
33
|
+
"description": "Human or agent responsible, e.g. naimkatiman or agent:portfolio-health."
|
|
34
|
+
},
|
|
35
|
+
"status": {
|
|
36
|
+
"type": "string",
|
|
37
|
+
"enum": ["success", "failure", "in_progress", "cancelled", "n/a"],
|
|
38
|
+
"description": "Outcome where applicable."
|
|
39
|
+
},
|
|
40
|
+
"severity": {
|
|
41
|
+
"type": "string",
|
|
42
|
+
"enum": ["info", "low", "medium", "high", "critical"],
|
|
43
|
+
"description": "Required in practice for incident and security events."
|
|
44
|
+
},
|
|
45
|
+
"title": {
|
|
46
|
+
"type": "string",
|
|
47
|
+
"description": "One-line human-readable summary."
|
|
48
|
+
},
|
|
49
|
+
"evidenceUrl": {
|
|
50
|
+
"type": "string",
|
|
51
|
+
"description": "Link to the receipt: CI run, release receipt file, experiment file, dashboard."
|
|
52
|
+
},
|
|
53
|
+
"commitSha": {
|
|
54
|
+
"type": "string"
|
|
55
|
+
},
|
|
56
|
+
"metricName": {
|
|
57
|
+
"type": "string",
|
|
58
|
+
"description": "For metric events: stable snake_case metric name."
|
|
59
|
+
},
|
|
60
|
+
"metricValue": {
|
|
61
|
+
"type": "number",
|
|
62
|
+
"description": "For metric events: numeric value."
|
|
63
|
+
},
|
|
64
|
+
"metadata": {
|
|
65
|
+
"type": "object",
|
|
66
|
+
"description": "Event-type-specific payload. Keep flat and JSON-serializable."
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# Release Receipt
|
|
2
|
+
|
|
3
|
+
> One receipt per release/deploy. Copy this file to `.releases/<YYYY-MM-DD>-<version-or-slug>.md`, fill every field, commit it with the release. A release without a receipt did not happen.
|
|
4
|
+
|
|
5
|
+
## Identity
|
|
6
|
+
|
|
7
|
+
| Field | Value |
|
|
8
|
+
|---|---|
|
|
9
|
+
| Repo | |
|
|
10
|
+
| Version / tag | |
|
|
11
|
+
| Commit SHA | |
|
|
12
|
+
| Environment | production / staging / preview |
|
|
13
|
+
| Released at (UTC) | |
|
|
14
|
+
| Owner | |
|
|
15
|
+
|
|
16
|
+
## What shipped
|
|
17
|
+
|
|
18
|
+
- User-visible impact (one sentence, outcome not mechanism):
|
|
19
|
+
- Feature flags changed (name, old value, new value):
|
|
20
|
+
- Migrations run (file names, or "none"):
|
|
21
|
+
|
|
22
|
+
## Verification
|
|
23
|
+
|
|
24
|
+
- Tests run (exact commands + result):
|
|
25
|
+
- Security scans run (tool + result, or "none"):
|
|
26
|
+
- Manual verification performed:
|
|
27
|
+
|
|
28
|
+
## Risk
|
|
29
|
+
|
|
30
|
+
- Known risks accepted at release time:
|
|
31
|
+
- Rollback command (exact, copy-pasteable):
|
|
32
|
+
- Monitoring link (dashboard/logs to watch after release):
|
|
33
|
+
|
|
34
|
+
## Sign-off
|
|
35
|
+
|
|
36
|
+
- [ ] All fields above are filled (no blanks — use "none" explicitly)
|
|
37
|
+
- [ ] Rollback command was verified to exist (not just guessed)
|