@decocms/start 0.19.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/.cursor/skills/deco-api-call-dedup/SKILL.md +443 -0
- package/.cursor/skills/deco-apps-architecture/SKILL.md +255 -0
- package/.cursor/skills/deco-apps-architecture/app-pattern.md +288 -0
- package/.cursor/skills/deco-apps-architecture/commerce-types.md +239 -0
- package/.cursor/skills/deco-apps-architecture/new-app-guide.md +268 -0
- package/.cursor/skills/deco-apps-architecture/scripts-codegen.md +148 -0
- package/.cursor/skills/deco-apps-architecture/shared-utils.md +181 -0
- package/.cursor/skills/deco-apps-architecture/vtex-deep-structure.md +253 -0
- package/.cursor/skills/deco-apps-architecture/website-app.md +169 -0
- package/.cursor/skills/deco-apps-vtex-porting/SKILL.md +189 -0
- package/.cursor/skills/deco-apps-vtex-porting/adaptation-patterns.md +335 -0
- package/.cursor/skills/deco-apps-vtex-porting/commerce-porting.md +155 -0
- package/.cursor/skills/deco-apps-vtex-porting/cookie-auth-patterns.md +148 -0
- package/.cursor/skills/deco-apps-vtex-porting/structure-map.md +234 -0
- package/.cursor/skills/deco-apps-vtex-porting/transform-mapping.md +99 -0
- package/.cursor/skills/deco-apps-vtex-porting/website-porting.md +194 -0
- package/.cursor/skills/deco-apps-vtex-review/SKILL.md +234 -0
- package/.cursor/skills/deco-async-rendering-architecture/SKILL.md +270 -0
- package/.cursor/skills/deco-async-rendering-site-guide/SKILL.md +417 -0
- package/.cursor/skills/deco-cms-layout-caching/SKILL.md +293 -0
- package/.cursor/skills/deco-cms-route-config/SKILL.md +388 -0
- package/.cursor/skills/deco-core-architecture/SKILL.md +185 -0
- package/.cursor/skills/deco-core-architecture/blocks.md +196 -0
- package/.cursor/skills/deco-core-architecture/deco-vs-deco-start.md +191 -0
- package/.cursor/skills/deco-core-architecture/engine.md +220 -0
- package/.cursor/skills/deco-core-architecture/hooks-components.md +157 -0
- package/.cursor/skills/deco-core-architecture/plugins-clients.md +136 -0
- package/.cursor/skills/deco-core-architecture/runtime.md +116 -0
- package/.cursor/skills/deco-core-architecture/site-usage.md +165 -0
- package/.cursor/skills/deco-e2e-testing/SKILL.md +372 -0
- package/.cursor/skills/deco-e2e-testing/discovery.md +337 -0
- package/.cursor/skills/deco-e2e-testing/scripts/scaffold.sh +81 -0
- package/.cursor/skills/deco-e2e-testing/selectors.md +175 -0
- package/.cursor/skills/deco-e2e-testing/templates/package.json +18 -0
- package/.cursor/skills/deco-e2e-testing/templates/playwright.config.ts +65 -0
- package/.cursor/skills/deco-e2e-testing/templates/scripts/baseline.ts +279 -0
- package/.cursor/skills/deco-e2e-testing/templates/scripts/run-e2e.ts +194 -0
- package/.cursor/skills/deco-e2e-testing/templates/specs/ecommerce-flow.spec.ts +612 -0
- package/.cursor/skills/deco-e2e-testing/templates/tsconfig.json +12 -0
- package/.cursor/skills/deco-e2e-testing/templates/utils/metrics-collector.ts +918 -0
- package/.cursor/skills/deco-e2e-testing/troubleshooting.md +602 -0
- package/.cursor/skills/deco-edge-caching/SKILL.md +316 -0
- package/.cursor/skills/deco-full-analysis/SKILL.md +898 -0
- package/.cursor/skills/deco-full-analysis/checklists/asset-optimization.md +251 -0
- package/.cursor/skills/deco-full-analysis/checklists/bug-fix.md +189 -0
- package/.cursor/skills/deco-full-analysis/checklists/cache-strategy.md +144 -0
- package/.cursor/skills/deco-full-analysis/checklists/dependency-update.md +150 -0
- package/.cursor/skills/deco-full-analysis/checklists/hydration-fix.md +191 -0
- package/.cursor/skills/deco-full-analysis/checklists/image-optimization.md +180 -0
- package/.cursor/skills/deco-full-analysis/checklists/loader-optimization.md +165 -0
- package/.cursor/skills/deco-full-analysis/checklists/seo-fix.md +183 -0
- package/.cursor/skills/deco-full-analysis/checklists/site-cleanup.md +281 -0
- package/.cursor/skills/deco-full-analysis/discovery.md +548 -0
- package/.cursor/skills/deco-incident-debugging/SKILL.md +378 -0
- package/.cursor/skills/deco-incident-debugging/headless-mode.md +510 -0
- package/.cursor/skills/deco-incident-debugging/learnings-index.md +227 -0
- package/.cursor/skills/deco-incident-debugging/triage-workflow.md +312 -0
- package/.cursor/skills/deco-islands-migration/SKILL.md +251 -0
- package/.cursor/skills/deco-loader-n-plus-1-detector/SKILL.md +275 -0
- package/.cursor/skills/deco-performance-audit/SKILL.md +530 -0
- package/.cursor/skills/deco-performance-audit/tools-reference.md +428 -0
- package/.cursor/skills/deco-performance-audit/workflow.md +457 -0
- package/.cursor/skills/deco-server-functions-invoke/SKILL.md +92 -0
- package/.cursor/skills/deco-server-functions-invoke/architecture.md +166 -0
- package/.cursor/skills/deco-server-functions-invoke/generator.md +122 -0
- package/.cursor/skills/deco-server-functions-invoke/problem.md +98 -0
- package/.cursor/skills/deco-server-functions-invoke/troubleshooting.md +110 -0
- package/.cursor/skills/deco-site-deployment/SKILL.md +396 -0
- package/.cursor/skills/deco-site-memory-debugging/SKILL.md +121 -0
- package/.cursor/skills/deco-site-memory-debugging/cdp-connection.md +222 -0
- package/.cursor/skills/deco-site-memory-debugging/memory-analysis.md +362 -0
- package/.cursor/skills/deco-site-patterns/SKILL.md +124 -0
- package/.cursor/skills/deco-site-patterns/app-composition.md +337 -0
- package/.cursor/skills/deco-site-patterns/client-patterns.md +341 -0
- package/.cursor/skills/deco-site-patterns/cms-wiring.md +230 -0
- package/.cursor/skills/deco-site-patterns/section-patterns.md +340 -0
- package/.cursor/skills/deco-site-scaling-tuning/SKILL.md +240 -0
- package/.cursor/skills/deco-site-scaling-tuning/analysis-scripts.md +267 -0
- package/.cursor/skills/deco-start-architecture/SKILL.md +218 -0
- package/.cursor/skills/deco-start-architecture/admin-protocol.md +156 -0
- package/.cursor/skills/deco-start-architecture/cms-resolution.md +201 -0
- package/.cursor/skills/deco-start-architecture/code-quality.md +158 -0
- package/.cursor/skills/deco-start-architecture/gap-analysis.md +129 -0
- package/.cursor/skills/deco-start-architecture/sdk-utilities.md +197 -0
- package/.cursor/skills/deco-start-architecture/worker-entry-caching.md +154 -0
- package/.cursor/skills/deco-startup-analysis/SKILL.md +248 -0
- package/.cursor/skills/deco-storefront-test-checklist/SKILL.md +369 -0
- package/.cursor/skills/deco-tanstack-hydration-fixes/SKILL.md +468 -0
- package/.cursor/skills/deco-tanstack-navigation/SKILL.md +681 -0
- package/.cursor/skills/deco-tanstack-search/SKILL.md +411 -0
- package/.cursor/skills/deco-tanstack-storefront-patterns/SKILL.md +1013 -0
- package/.cursor/skills/deco-to-tanstack-migration/SKILL.md +518 -0
- package/.cursor/skills/deco-to-tanstack-migration/references/codemod-commands.md +174 -0
- package/.cursor/skills/deco-to-tanstack-migration/references/commerce/README.md +78 -0
- package/.cursor/skills/deco-to-tanstack-migration/references/deco-framework/README.md +128 -0
- package/.cursor/skills/deco-to-tanstack-migration/references/gotchas.md +719 -0
- package/.cursor/skills/deco-to-tanstack-migration/references/imports/README.md +70 -0
- package/.cursor/skills/deco-to-tanstack-migration/references/platform-hooks/README.md +154 -0
- package/.cursor/skills/deco-to-tanstack-migration/references/signals/README.md +220 -0
- package/.cursor/skills/deco-to-tanstack-migration/references/vite-config/README.md +78 -0
- package/.cursor/skills/deco-to-tanstack-migration/templates/package-json.md +55 -0
- package/.cursor/skills/deco-to-tanstack-migration/templates/root-route.md +110 -0
- package/.cursor/skills/deco-to-tanstack-migration/templates/router.md +96 -0
- package/.cursor/skills/deco-to-tanstack-migration/templates/setup-ts.md +167 -0
- package/.cursor/skills/deco-to-tanstack-migration/templates/vite-config.md +122 -0
- package/.cursor/skills/deco-to-tanstack-migration/templates/worker-entry.md +67 -0
- package/.cursor/skills/deco-typescript-fixes/SKILL.md +178 -0
- package/.cursor/skills/deco-typescript-fixes/common-fixes.md +330 -0
- package/.cursor/skills/deco-typescript-fixes/strategy.md +148 -0
- package/.cursor/skills/deco-variant-selection-perf/SKILL.md +272 -0
- package/.cursor/skills/deco-vtex-fetch-cache/SKILL.md +225 -0
- package/.cursor/skills/find-skills/SKILL.md +133 -0
- package/.cursor/skills/incident-report/SKILL.md +179 -0
- package/.cursor/skills/incident-report/references/5-whys.md +75 -0
- package/.cursor/skills/incident-report/templates/client-report.md +187 -0
- package/.cursor/skills/incident-report/templates/internal-report.md +206 -0
- package/.cursor/skills/template-skill/SKILL.md +38 -0
- package/.github/workflows/release.yml +32 -0
- package/.releaserc.json +25 -0
- package/CLAUDE.md +135 -0
- package/GAP_ANALYSIS.md +224 -0
- package/GAP_ANALYSIS_V2.md +1013 -0
- package/biome.json +39 -0
- package/knip.json +5 -0
- package/package.json +87 -0
- package/scripts/generate-blocks.ts +69 -0
- package/scripts/generate-invoke.ts +378 -0
- package/scripts/generate-schema.ts +657 -0
- package/src/admin/cors.ts +29 -0
- package/src/admin/decofile.ts +72 -0
- package/src/admin/index.ts +24 -0
- package/src/admin/invoke.ts +163 -0
- package/src/admin/liveControls.ts +29 -0
- package/src/admin/meta.ts +70 -0
- package/src/admin/render.ts +205 -0
- package/src/admin/schema.ts +686 -0
- package/src/admin/setup.ts +44 -0
- package/src/cms/index.ts +59 -0
- package/src/cms/loader.ts +180 -0
- package/src/cms/registry.ts +162 -0
- package/src/cms/resolve.ts +1005 -0
- package/src/cms/sectionLoaders.ts +294 -0
- package/src/hooks/DecoPageRenderer.tsx +444 -0
- package/src/hooks/LazySection.tsx +109 -0
- package/src/hooks/LiveControls.tsx +108 -0
- package/src/hooks/SectionErrorFallback.tsx +85 -0
- package/src/hooks/index.ts +8 -0
- package/src/index.ts +5 -0
- package/src/matchers/builtins.ts +184 -0
- package/src/matchers/posthog.ts +154 -0
- package/src/middleware/decoState.ts +55 -0
- package/src/middleware/healthMetrics.ts +131 -0
- package/src/middleware/index.ts +80 -0
- package/src/middleware/liveness.ts +21 -0
- package/src/middleware/observability.ts +205 -0
- package/src/routes/adminRoutes.ts +83 -0
- package/src/routes/cmsRoute.ts +302 -0
- package/src/routes/components.tsx +34 -0
- package/src/routes/index.ts +15 -0
- package/src/sdk/analytics.ts +72 -0
- package/src/sdk/cacheHeaders.ts +268 -0
- package/src/sdk/cachedLoader.ts +206 -0
- package/src/sdk/clx.ts +3 -0
- package/src/sdk/cookie.ts +39 -0
- package/src/sdk/createInvoke.ts +57 -0
- package/src/sdk/csp.ts +59 -0
- package/src/sdk/env.ts +27 -0
- package/src/sdk/index.ts +63 -0
- package/src/sdk/instrumentedFetch.ts +137 -0
- package/src/sdk/invoke.ts +133 -0
- package/src/sdk/mergeCacheControl.ts +150 -0
- package/src/sdk/redirects.ts +217 -0
- package/src/sdk/requestContext.ts +184 -0
- package/src/sdk/serverTimings.ts +68 -0
- package/src/sdk/signal.ts +41 -0
- package/src/sdk/sitemap.ts +143 -0
- package/src/sdk/urlUtils.ts +117 -0
- package/src/sdk/useDevice.ts +82 -0
- package/src/sdk/useId.ts +7 -0
- package/src/sdk/useScript.ts +101 -0
- package/src/sdk/workerEntry.ts +703 -0
- package/src/sdk/wrapCaughtErrors.ts +107 -0
- package/src/types/index.ts +39 -0
- package/src/types/widgets.ts +13 -0
- package/tsconfig.json +13 -0
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: incident-report
|
|
3
|
+
description: Create incident reports and post-mortems for platform issues. Supports both internal technical reports and client-facing communications. Use when documenting outages, security vulnerabilities, data leaks, performance degradation, or any production incident.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Incident Report Skill
|
|
7
|
+
|
|
8
|
+
Generate comprehensive incident reports and post-mortems following team standards. Supports two report types: internal technical analysis and client-facing communications.
|
|
9
|
+
|
|
10
|
+
## Quick Start
|
|
11
|
+
|
|
12
|
+
1. **Classify** the incident (severity, type, audience)
|
|
13
|
+
2. **Gather** information using the discovery prompts
|
|
14
|
+
3. **Generate** the appropriate report using templates
|
|
15
|
+
4. **Review** using the checklist
|
|
16
|
+
|
|
17
|
+
## Phase 1: Classification
|
|
18
|
+
|
|
19
|
+
### Severity Levels
|
|
20
|
+
|
|
21
|
+
| Level | Criteria | Response Time |
|
|
22
|
+
|-------|----------|---------------|
|
|
23
|
+
| **P0 Critical** | Data breach, cross-tenant exposure, complete outage | Immediate |
|
|
24
|
+
| **P1 High** | Partial outage, significant performance degradation, security vulnerability | < 1 hour |
|
|
25
|
+
| **P2 Medium** | Degraded service, non-critical feature down | < 4 hours |
|
|
26
|
+
| **P3 Low** | Minor issue, cosmetic, workaround available | Next business day |
|
|
27
|
+
|
|
28
|
+
### Incident Types
|
|
29
|
+
|
|
30
|
+
- **Outage**: Service unavailable or severely degraded
|
|
31
|
+
- **Security**: Vulnerability, unauthorized access, data exposure
|
|
32
|
+
- **Data Leak**: Customer data exposed to wrong party
|
|
33
|
+
- **Performance**: Latency spikes, memory issues, 5xx errors
|
|
34
|
+
- **Configuration**: Misconfig causing issues, deployment failures
|
|
35
|
+
|
|
36
|
+
### Report Audience
|
|
37
|
+
|
|
38
|
+
| Audience | Report Type | Focus |
|
|
39
|
+
|----------|-------------|-------|
|
|
40
|
+
| **Internal** | Technical post-mortem | Root cause, technical details, action items |
|
|
41
|
+
| **Client** | Customer communication | Impact, resolution, prevention, reassurance |
|
|
42
|
+
|
|
43
|
+
## Phase 2: Information Gathering
|
|
44
|
+
|
|
45
|
+
Before writing, gather these details. Ask the user if any are missing:
|
|
46
|
+
|
|
47
|
+
### Core Facts (Required)
|
|
48
|
+
|
|
49
|
+
```
|
|
50
|
+
- Incident date and time (with timezone)
|
|
51
|
+
- Duration of impact
|
|
52
|
+
- Affected systems/services
|
|
53
|
+
- Affected customers/sites
|
|
54
|
+
- Who detected it (monitoring, customer report, internal)
|
|
55
|
+
- Current status (ongoing, resolved, monitoring)
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
### Technical Details (Internal Reports)
|
|
59
|
+
|
|
60
|
+
```
|
|
61
|
+
- What was the root cause?
|
|
62
|
+
- What was the timeline? (detection → investigation → fix → verification)
|
|
63
|
+
- What commands/logs showed the issue?
|
|
64
|
+
- What was the fix applied?
|
|
65
|
+
- Were there any secondary effects?
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
### Impact Assessment
|
|
69
|
+
|
|
70
|
+
```
|
|
71
|
+
- Number of affected requests/users
|
|
72
|
+
- Error rates (percentage)
|
|
73
|
+
- Revenue impact (if applicable)
|
|
74
|
+
- Data exposure scope (if security/data leak)
|
|
75
|
+
- Customer complaints received
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
### Resolution Details
|
|
79
|
+
|
|
80
|
+
```
|
|
81
|
+
- What immediate fix was applied?
|
|
82
|
+
- Who was involved in resolution?
|
|
83
|
+
- How was the fix verified?
|
|
84
|
+
- Are there follow-up actions needed?
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
## Phase 3: Generate Report
|
|
88
|
+
|
|
89
|
+
### Internal Technical Report
|
|
90
|
+
|
|
91
|
+
Use template: [templates/internal-report.md](templates/internal-report.md)
|
|
92
|
+
|
|
93
|
+
Structure:
|
|
94
|
+
1. **TL;DR** - 3-5 bullet summary for busy readers
|
|
95
|
+
2. **Executive Summary** - One paragraph overview
|
|
96
|
+
3. **Timeline** - Chronological events
|
|
97
|
+
4. **Root Cause Analysis** - Technical deep-dive
|
|
98
|
+
5. **Impact** - Quantified effects
|
|
99
|
+
6. **Resolution** - What was done
|
|
100
|
+
7. **Action Items** - TODO list with owners
|
|
101
|
+
8. **Lessons Learned** - Blameless retrospective
|
|
102
|
+
9. **References** - Links, logs, PRs
|
|
103
|
+
|
|
104
|
+
### Client-Facing Report
|
|
105
|
+
|
|
106
|
+
Use template: [templates/client-report.md](templates/client-report.md)
|
|
107
|
+
|
|
108
|
+
Structure:
|
|
109
|
+
1. **Subject Line** - Clear, professional
|
|
110
|
+
2. **Acknowledgment** - We take this seriously
|
|
111
|
+
3. **What Happened** - Non-technical explanation
|
|
112
|
+
4. **Impact on You** - Specific to this client
|
|
113
|
+
5. **Resolution** - What we did
|
|
114
|
+
6. **Prevention** - What we're doing to prevent recurrence
|
|
115
|
+
7. **Contact** - Who to reach for questions
|
|
116
|
+
|
|
117
|
+
## Phase 4: Review Checklist
|
|
118
|
+
|
|
119
|
+
Before finalizing, verify:
|
|
120
|
+
|
|
121
|
+
### Content Quality
|
|
122
|
+
- [ ] Timeline is accurate and complete
|
|
123
|
+
- [ ] Root cause is clearly identified (not symptoms)
|
|
124
|
+
- [ ] Impact is quantified with real numbers
|
|
125
|
+
- [ ] Action items have owners and priorities
|
|
126
|
+
- [ ] No blame assigned to individuals
|
|
127
|
+
|
|
128
|
+
### Client Reports Additional
|
|
129
|
+
- [ ] Technical jargon removed or explained
|
|
130
|
+
- [ ] Tone is professional and empathetic
|
|
131
|
+
- [ ] Next steps are clear
|
|
132
|
+
- [ ] Contact information included
|
|
133
|
+
- [ ] Client-specific impact addressed
|
|
134
|
+
|
|
135
|
+
### Security Incidents Additional
|
|
136
|
+
- [ ] Scope of exposure documented
|
|
137
|
+
- [ ] Affected data types listed
|
|
138
|
+
- [ ] Customer notification requirements checked
|
|
139
|
+
- [ ] Compliance implications noted (LGPD, GDPR)
|
|
140
|
+
|
|
141
|
+
## Blameless Post-Mortem Principles
|
|
142
|
+
|
|
143
|
+
1. **Focus on systems, not people** - "The monitoring gap allowed..." not "John failed to..."
|
|
144
|
+
2. **Assume good intent** - Everyone was trying to do the right thing
|
|
145
|
+
3. **Learn, don't punish** - Goal is improvement, not blame
|
|
146
|
+
4. **Be specific** - "Deploy at 14:32 caused..." not "Recent changes caused..."
|
|
147
|
+
5. **Quantify impact** - "2% of 30k requests = 600 errors" not "some errors"
|
|
148
|
+
|
|
149
|
+
## Writing Tips
|
|
150
|
+
|
|
151
|
+
### For Internal Reports
|
|
152
|
+
- Be technically precise
|
|
153
|
+
- Include actual commands, logs, configs
|
|
154
|
+
- Link to related PRs, issues, dashboards
|
|
155
|
+
- Use diagrams for complex flows
|
|
156
|
+
|
|
157
|
+
### For Client Reports
|
|
158
|
+
- Lead with resolution/status
|
|
159
|
+
- Avoid defensive language
|
|
160
|
+
- Be specific about prevention measures
|
|
161
|
+
- Keep under 500 words unless complex
|
|
162
|
+
- Translate technical terms
|
|
163
|
+
|
|
164
|
+
## File Naming Convention
|
|
165
|
+
|
|
166
|
+
```
|
|
167
|
+
{slug}-{YYYY-MM-DD}.md
|
|
168
|
+
|
|
169
|
+
Examples:
|
|
170
|
+
- istio-xds-message-overflow-2026-02-03.md
|
|
171
|
+
- openbox2-traffic-spike-502-2026-02-05.md
|
|
172
|
+
- aviator-cross-tenant-routing-2026-02-03.md
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
## Additional Resources
|
|
176
|
+
|
|
177
|
+
- [templates/internal-report.md](templates/internal-report.md) - Full internal template
|
|
178
|
+
- [templates/client-report.md](templates/client-report.md) - Client communication template
|
|
179
|
+
- [references/5-whys.md](references/5-whys.md) - Root cause analysis technique
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
# 5-Whys Root Cause Analysis
|
|
2
|
+
|
|
3
|
+
A simple technique to find the true root cause of an incident by asking "Why?" repeatedly.
|
|
4
|
+
|
|
5
|
+
## How to Use
|
|
6
|
+
|
|
7
|
+
1. Start with the problem statement
|
|
8
|
+
2. Ask "Why did this happen?"
|
|
9
|
+
3. For each answer, ask "Why?" again
|
|
10
|
+
4. Continue until you reach a root cause (usually 5 iterations)
|
|
11
|
+
5. Stop when you reach something actionable
|
|
12
|
+
|
|
13
|
+
## Example: Cross-Tenant Routing
|
|
14
|
+
|
|
15
|
+
```
|
|
16
|
+
Problem: Customer A's site showed Customer B's content
|
|
17
|
+
|
|
18
|
+
Why 1: Why did Customer A see Customer B's content?
|
|
19
|
+
→ Because the routing rules sent traffic to the wrong backend
|
|
20
|
+
|
|
21
|
+
Why 2: Why were routing rules pointing to wrong backend?
|
|
22
|
+
→ Because the Envoy proxy was using stale/outdated configuration
|
|
23
|
+
|
|
24
|
+
Why 3: Why was Envoy using stale configuration?
|
|
25
|
+
→ Because it couldn't receive new config updates from istiod
|
|
26
|
+
|
|
27
|
+
Why 4: Why couldn't it receive config updates?
|
|
28
|
+
→ Because the gRPC message exceeded the 4MB size limit
|
|
29
|
+
|
|
30
|
+
Why 5: Why was the message over 4MB?
|
|
31
|
+
→ Because we have 14,000 services and the default limit was never adjusted for our scale
|
|
32
|
+
|
|
33
|
+
ROOT CAUSE: Infrastructure configuration not updated to match platform scale
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## Example: Memory-Related 502 Errors
|
|
37
|
+
|
|
38
|
+
```
|
|
39
|
+
Problem: 2% of requests returned 502 during traffic spike
|
|
40
|
+
|
|
41
|
+
Why 1: Why did requests return 502?
|
|
42
|
+
→ Because the application pods were killed/restarted
|
|
43
|
+
|
|
44
|
+
Why 2: Why were pods killed?
|
|
45
|
+
→ Because they exceeded memory limits (OOMKilled)
|
|
46
|
+
|
|
47
|
+
Why 3: Why did they exceed memory limits?
|
|
48
|
+
→ Because traffic increased 150x (200 → 30k req/min) and memory usage scaled with connections
|
|
49
|
+
|
|
50
|
+
Why 4: Why didn't we scale before hitting limits?
|
|
51
|
+
→ Because HPA was based on CPU, not memory, and CPU didn't spike proportionally
|
|
52
|
+
|
|
53
|
+
Why 5: Why wasn't memory included in scaling metrics?
|
|
54
|
+
→ Because we hadn't profiled memory behavior under high-concurrency scenarios
|
|
55
|
+
|
|
56
|
+
ROOT CAUSE: Autoscaling configuration not calibrated for memory-intensive traffic patterns
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
## Tips
|
|
60
|
+
|
|
61
|
+
- **Don't stop at symptoms** - "The server crashed" is a symptom, not a cause
|
|
62
|
+
- **Don't blame people** - "John didn't check" → "The checklist didn't include this verification"
|
|
63
|
+
- **Multiple branches are OK** - Complex incidents often have multiple contributing root causes
|
|
64
|
+
- **Actionable = root cause** - If you can write a TODO to fix it, you've found the root cause
|
|
65
|
+
|
|
66
|
+
## Common Root Cause Categories
|
|
67
|
+
|
|
68
|
+
| Category | Example Root Causes |
|
|
69
|
+
|----------|-------------------|
|
|
70
|
+
| **Configuration** | Defaults not adjusted for scale, missing limits |
|
|
71
|
+
| **Monitoring** | No alert for this failure mode, wrong thresholds |
|
|
72
|
+
| **Process** | No runbook, unclear ownership, missing checklist |
|
|
73
|
+
| **Architecture** | Single point of failure, no circuit breaker |
|
|
74
|
+
| **Testing** | Edge case not covered, no load testing |
|
|
75
|
+
| **Documentation** | Outdated docs, tribal knowledge not written down |
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
# Client-Facing Incident Report Template
|
|
2
|
+
|
|
3
|
+
Use this template for customer communications. Adapt tone and detail level based on relationship and incident severity.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Email Template (Standard)
|
|
8
|
+
|
|
9
|
+
```markdown
|
|
10
|
+
**Assunto:** [Status] Incidente de [Tipo] - [Nome do Site/Cliente]
|
|
11
|
+
|
|
12
|
+
Prezado(a) [Nome],
|
|
13
|
+
|
|
14
|
+
[Agradecemos por nos comunicar | Entramos em contato proativamente] sobre o incidente ocorrido em [data].
|
|
15
|
+
|
|
16
|
+
**Resumo do que aconteceu:**
|
|
17
|
+
|
|
18
|
+
[Explicação em 2-3 frases, sem jargão técnico. Foque no que o cliente experimentou, não nos detalhes internos.]
|
|
19
|
+
|
|
20
|
+
**Impacto no seu site:**
|
|
21
|
+
|
|
22
|
+
- [Impacto específico 1 - ex: "Aproximadamente X% das requisições retornaram erro"]
|
|
23
|
+
- [Impacto específico 2 - ex: "O problema durou X minutos"]
|
|
24
|
+
- [Se houve exposição de dados: detalhar exatamente o que foi exposto]
|
|
25
|
+
|
|
26
|
+
**O que fizemos para resolver:**
|
|
27
|
+
|
|
28
|
+
1. [Ação imediata tomada]
|
|
29
|
+
2. [Verificação realizada]
|
|
30
|
+
3. [Resultado: "Após essas ações, o problema foi resolvido e verificamos que..."]
|
|
31
|
+
|
|
32
|
+
**O que estamos fazendo para evitar que isso aconteça novamente:**
|
|
33
|
+
|
|
34
|
+
- [Medida preventiva 1 - seja específico]
|
|
35
|
+
- [Medida preventiva 2]
|
|
36
|
+
- [Medida preventiva 3 se aplicável]
|
|
37
|
+
|
|
38
|
+
**Próximos passos:**
|
|
39
|
+
|
|
40
|
+
[Se houver ações pendentes do lado deco ou do cliente]
|
|
41
|
+
|
|
42
|
+
Permanecemos à disposição para quaisquer esclarecimentos adicionais.
|
|
43
|
+
|
|
44
|
+
Atenciosamente,
|
|
45
|
+
|
|
46
|
+
**[Nome]**
|
|
47
|
+
[Cargo], Deco.cx
|
|
48
|
+
[Email] | [WhatsApp se apropriado]
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
---
|
|
52
|
+
|
|
53
|
+
## Email Template (Security/Data Exposure - Formal)
|
|
54
|
+
|
|
55
|
+
```markdown
|
|
56
|
+
**Assunto:** Comunicado de Segurança - Incidente em [Data]
|
|
57
|
+
|
|
58
|
+
Prezado(a) [Nome],
|
|
59
|
+
|
|
60
|
+
Entramos em contato para informá-lo(a) sobre um incidente de segurança que afetou [escopo].
|
|
61
|
+
|
|
62
|
+
**O que aconteceu:**
|
|
63
|
+
|
|
64
|
+
Em [data], identificamos [descrição não-técnica do problema]. [Duração do problema].
|
|
65
|
+
|
|
66
|
+
**Quais dados foram potencialmente afetados:**
|
|
67
|
+
|
|
68
|
+
- [Tipo de dado 1 - ex: "Conteúdo HTML das páginas"]
|
|
69
|
+
- [Tipo de dado 2 - ex: "Dados de carrinho de compras"]
|
|
70
|
+
- [Esclarecer o que NÃO foi afetado se relevante]
|
|
71
|
+
|
|
72
|
+
**Impacto no seu ambiente:**
|
|
73
|
+
|
|
74
|
+
[Descrição específica para este cliente]
|
|
75
|
+
|
|
76
|
+
**Ações tomadas:**
|
|
77
|
+
|
|
78
|
+
1. [Correção aplicada]
|
|
79
|
+
2. [Verificação de segurança]
|
|
80
|
+
3. [Limpeza de cache/dados se aplicável]
|
|
81
|
+
|
|
82
|
+
**Medidas preventivas implementadas:**
|
|
83
|
+
|
|
84
|
+
1. [Medida técnica 1]
|
|
85
|
+
2. [Medida técnica 2]
|
|
86
|
+
3. [Medida de monitoramento]
|
|
87
|
+
|
|
88
|
+
**Recomendações para sua equipe:**
|
|
89
|
+
|
|
90
|
+
- [Se houver ações recomendadas do lado do cliente]
|
|
91
|
+
|
|
92
|
+
**Contatos para o comitê de investigação (se aplicável):**
|
|
93
|
+
|
|
94
|
+
| Nome | Função | E-mail | WhatsApp |
|
|
95
|
+
|------|--------|--------|----------|
|
|
96
|
+
| [Nome] | [Cargo] | [email] | [telefone] |
|
|
97
|
+
|
|
98
|
+
Lamentamos profundamente qualquer inconveniente causado e reafirmamos nosso compromisso com a segurança dos dados de nossos clientes.
|
|
99
|
+
|
|
100
|
+
Atenciosamente,
|
|
101
|
+
|
|
102
|
+
**[Nome do Executivo/Co-fundador]**
|
|
103
|
+
[Cargo], Deco.cx
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
---
|
|
107
|
+
|
|
108
|
+
## Email Template (Performance Degradation)
|
|
109
|
+
|
|
110
|
+
```markdown
|
|
111
|
+
**Assunto:** Relatório de Incidente - Degradação de Performance em [Data]
|
|
112
|
+
|
|
113
|
+
Prezado(a) [Nome],
|
|
114
|
+
|
|
115
|
+
Gostaríamos de compartilhar detalhes sobre o incidente de performance que afetou [site/serviço] em [data].
|
|
116
|
+
|
|
117
|
+
**O que aconteceu:**
|
|
118
|
+
|
|
119
|
+
Durante [período], observamos [descrição do problema - ex: "um aumento significativo no tempo de resposta" ou "erros intermitentes 502"].
|
|
120
|
+
|
|
121
|
+
**Números do impacto:**
|
|
122
|
+
|
|
123
|
+
- Período afetado: [horário início] às [horário fim]
|
|
124
|
+
- Taxa de erro: [X% das requisições]
|
|
125
|
+
- Tempo médio de resposta: [se aplicável]
|
|
126
|
+
|
|
127
|
+
**Causa identificada:**
|
|
128
|
+
|
|
129
|
+
[Explicação simplificada - ex: "Um aumento inesperado de tráfego excedeu a capacidade de memória alocada para o serviço"]
|
|
130
|
+
|
|
131
|
+
**Ações tomadas:**
|
|
132
|
+
|
|
133
|
+
1. [Ação de mitigação]
|
|
134
|
+
2. [Ajuste de capacidade]
|
|
135
|
+
3. [Monitoramento intensificado]
|
|
136
|
+
|
|
137
|
+
**Melhorias implementadas:**
|
|
138
|
+
|
|
139
|
+
- [Ajuste de infraestrutura]
|
|
140
|
+
- [Novo alerta configurado]
|
|
141
|
+
- [Processo atualizado]
|
|
142
|
+
|
|
143
|
+
Continuamos monitorando ativamente e estamos à disposição para qualquer esclarecimento.
|
|
144
|
+
|
|
145
|
+
Atenciosamente,
|
|
146
|
+
|
|
147
|
+
**[Nome]**
|
|
148
|
+
[Cargo], Deco.cx
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
---
|
|
152
|
+
|
|
153
|
+
## Writing Guidelines for Client Reports
|
|
154
|
+
|
|
155
|
+
### DO
|
|
156
|
+
|
|
157
|
+
- Start with the current status (resolved/ongoing)
|
|
158
|
+
- Acknowledge the impact on their business
|
|
159
|
+
- Be specific about what happened and what was done
|
|
160
|
+
- Provide concrete prevention measures
|
|
161
|
+
- Include contact information for follow-up
|
|
162
|
+
- Use "we" language (we identified, we fixed)
|
|
163
|
+
|
|
164
|
+
### DON'T
|
|
165
|
+
|
|
166
|
+
- Use technical jargon without explanation
|
|
167
|
+
- Be defensive or make excuses
|
|
168
|
+
- Blame third parties (even if true)
|
|
169
|
+
- Minimize the impact
|
|
170
|
+
- Make promises you can't keep
|
|
171
|
+
- Share internal details that don't help the customer
|
|
172
|
+
|
|
173
|
+
### Tone Calibration
|
|
174
|
+
|
|
175
|
+
| Severity | Tone | Signer |
|
|
176
|
+
|----------|------|--------|
|
|
177
|
+
| P0 Critical | Formal, executive-level | Co-founder/CEO |
|
|
178
|
+
| P1 High | Professional, detailed | Engineering Lead |
|
|
179
|
+
| P2 Medium | Professional, concise | Support/Account Manager |
|
|
180
|
+
| P3 Low | Friendly, informative | Support Team |
|
|
181
|
+
|
|
182
|
+
### Translation Notes (PT-BR)
|
|
183
|
+
|
|
184
|
+
- "Incidente" not "problema" or "bug"
|
|
185
|
+
- "Identificamos" not "descobrimos"
|
|
186
|
+
- "Implementamos medidas" not "consertamos"
|
|
187
|
+
- "Lamentamos o inconveniente" (use sparingly, once per email)
|
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
# Internal Incident Report Template
|
|
2
|
+
|
|
3
|
+
Copy and fill in this template for technical post-mortems.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
```markdown
|
|
8
|
+
# Incident: [Brief Descriptive Title]
|
|
9
|
+
|
|
10
|
+
**Date of incident:** YYYY-MM-DD
|
|
11
|
+
**Severity:** [P0 Critical | P1 High | P2 Medium | P3 Low]
|
|
12
|
+
**Type:** [Outage | Security | Data Leak | Performance | Configuration]
|
|
13
|
+
**Affected systems:** [List systems, clusters, services]
|
|
14
|
+
**Root cause:** [One-line summary]
|
|
15
|
+
**Impact:** [One-line impact summary]
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## TL;DR - Critical Information
|
|
20
|
+
|
|
21
|
+
### What Happened
|
|
22
|
+
1. [First key point]
|
|
23
|
+
2. [Second key point]
|
|
24
|
+
3. [Third key point]
|
|
25
|
+
|
|
26
|
+
### Immediate Fix Applied
|
|
27
|
+
```code
|
|
28
|
+
[The fix that resolved the issue]
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
### Why This Matters
|
|
32
|
+
- [Business/security implication 1]
|
|
33
|
+
- [Business/security implication 2]
|
|
34
|
+
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
## Executive Summary
|
|
38
|
+
|
|
39
|
+
[One paragraph (3-5 sentences) explaining what happened, what caused it, what was the impact, and how it was resolved. Written for someone who will only read this section.]
|
|
40
|
+
|
|
41
|
+
---
|
|
42
|
+
|
|
43
|
+
## Timeline
|
|
44
|
+
|
|
45
|
+
All times in UTC-3 (São Paulo).
|
|
46
|
+
|
|
47
|
+
| Time | Event |
|
|
48
|
+
|------|-------|
|
|
49
|
+
| HH:MM | [Detection: How was the issue detected?] |
|
|
50
|
+
| HH:MM | [Investigation: First investigative action] |
|
|
51
|
+
| HH:MM | [Escalation: Who was brought in?] |
|
|
52
|
+
| HH:MM | [Identification: Root cause identified] |
|
|
53
|
+
| HH:MM | [Mitigation: Temporary fix applied] |
|
|
54
|
+
| HH:MM | [Resolution: Permanent fix deployed] |
|
|
55
|
+
| HH:MM | [Verification: Confirmed resolution] |
|
|
56
|
+
|
|
57
|
+
**Total duration:** X hours Y minutes
|
|
58
|
+
**Time to detection:** X minutes
|
|
59
|
+
**Time to resolution:** X hours Y minutes
|
|
60
|
+
|
|
61
|
+
---
|
|
62
|
+
|
|
63
|
+
## Root Cause Analysis
|
|
64
|
+
|
|
65
|
+
### The Problem
|
|
66
|
+
|
|
67
|
+
[Detailed technical explanation of what went wrong. Include architecture context if needed.]
|
|
68
|
+
|
|
69
|
+
### Why It Happened
|
|
70
|
+
|
|
71
|
+
[Use 5-Whys or similar technique]
|
|
72
|
+
|
|
73
|
+
1. **Why** did [symptom]? → Because [cause 1]
|
|
74
|
+
2. **Why** did [cause 1]? → Because [cause 2]
|
|
75
|
+
3. **Why** did [cause 2]? → Because [cause 3]
|
|
76
|
+
4. **Why** did [cause 3]? → Because [root cause]
|
|
77
|
+
|
|
78
|
+
### Contributing Factors
|
|
79
|
+
|
|
80
|
+
- [Factor 1 - e.g., missing monitoring]
|
|
81
|
+
- [Factor 2 - e.g., configuration drift]
|
|
82
|
+
- [Factor 3 - e.g., insufficient testing]
|
|
83
|
+
|
|
84
|
+
---
|
|
85
|
+
|
|
86
|
+
## Impact Assessment
|
|
87
|
+
|
|
88
|
+
### Quantified Impact
|
|
89
|
+
|
|
90
|
+
| Metric | Value |
|
|
91
|
+
|--------|-------|
|
|
92
|
+
| Duration | X hours |
|
|
93
|
+
| Affected requests | X / Y total (Z%) |
|
|
94
|
+
| Error rate | X% |
|
|
95
|
+
| Affected customers | X sites |
|
|
96
|
+
| Revenue impact | [If applicable] |
|
|
97
|
+
|
|
98
|
+
### Affected Customers
|
|
99
|
+
|
|
100
|
+
[List specific customers if known, or describe the affected segment]
|
|
101
|
+
|
|
102
|
+
### Data Exposure (if applicable)
|
|
103
|
+
|
|
104
|
+
- **Data types exposed:** [List specific data types]
|
|
105
|
+
- **Exposure scope:** [Who could see what]
|
|
106
|
+
- **Duration of exposure:** [Time window]
|
|
107
|
+
|
|
108
|
+
---
|
|
109
|
+
|
|
110
|
+
## Resolution
|
|
111
|
+
|
|
112
|
+
### Immediate Fix
|
|
113
|
+
|
|
114
|
+
[What was done to stop the bleeding]
|
|
115
|
+
|
|
116
|
+
```yaml
|
|
117
|
+
# Configuration change, command, or code
|
|
118
|
+
[Actual fix applied]
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
### Verification Steps
|
|
122
|
+
|
|
123
|
+
```bash
|
|
124
|
+
# Commands used to verify the fix
|
|
125
|
+
[Verification commands]
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
### Rollback Plan (if applicable)
|
|
129
|
+
|
|
130
|
+
[How to undo the fix if it causes issues]
|
|
131
|
+
|
|
132
|
+
---
|
|
133
|
+
|
|
134
|
+
## Action Items
|
|
135
|
+
|
|
136
|
+
### Priority 1: Critical (This Week)
|
|
137
|
+
|
|
138
|
+
| Action | Owner | Status | Due |
|
|
139
|
+
|--------|-------|--------|-----|
|
|
140
|
+
| [Action 1] | @name | TODO | YYYY-MM-DD |
|
|
141
|
+
| [Action 2] | @name | TODO | YYYY-MM-DD |
|
|
142
|
+
|
|
143
|
+
### Priority 2: High (This Sprint)
|
|
144
|
+
|
|
145
|
+
| Action | Owner | Status | Due |
|
|
146
|
+
|--------|-------|--------|-----|
|
|
147
|
+
| [Action 3] | @name | TODO | YYYY-MM-DD |
|
|
148
|
+
|
|
149
|
+
### Priority 3: Medium (This Quarter)
|
|
150
|
+
|
|
151
|
+
| Action | Owner | Status | Due |
|
|
152
|
+
|--------|-------|--------|-----|
|
|
153
|
+
| [Action 4] | @name | TODO | YYYY-MM-DD |
|
|
154
|
+
|
|
155
|
+
---
|
|
156
|
+
|
|
157
|
+
## Lessons Learned
|
|
158
|
+
|
|
159
|
+
### What Went Well
|
|
160
|
+
- [Positive 1 - e.g., quick detection]
|
|
161
|
+
- [Positive 2 - e.g., effective communication]
|
|
162
|
+
|
|
163
|
+
### What Could Be Improved
|
|
164
|
+
- [Improvement 1]
|
|
165
|
+
- [Improvement 2]
|
|
166
|
+
|
|
167
|
+
### Process Gaps Identified
|
|
168
|
+
- [Gap 1 - e.g., no runbook existed]
|
|
169
|
+
- [Gap 2 - e.g., monitoring blind spot]
|
|
170
|
+
|
|
171
|
+
---
|
|
172
|
+
|
|
173
|
+
## Monitoring & Alerting
|
|
174
|
+
|
|
175
|
+
### Existing Alerts (that fired or should have)
|
|
176
|
+
|
|
177
|
+
| Alert | Status | Notes |
|
|
178
|
+
|-------|--------|-------|
|
|
179
|
+
| [Alert name] | [Fired/Did not fire] | [Why] |
|
|
180
|
+
|
|
181
|
+
### New Alerts Needed
|
|
182
|
+
|
|
183
|
+
```yaml
|
|
184
|
+
# Prometheus/Grafana alert definition
|
|
185
|
+
[Alert configuration]
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
---
|
|
189
|
+
|
|
190
|
+
## References
|
|
191
|
+
|
|
192
|
+
- **Slack thread:** [link]
|
|
193
|
+
- **Related PRs:** [links]
|
|
194
|
+
- **Logs:** [link to log explorer query]
|
|
195
|
+
- **Dashboard:** [link to relevant dashboard]
|
|
196
|
+
- **Related incidents:** [links to similar past incidents]
|
|
197
|
+
|
|
198
|
+
---
|
|
199
|
+
|
|
200
|
+
## Document History
|
|
201
|
+
|
|
202
|
+
| Date | Author | Changes |
|
|
203
|
+
|------|--------|---------|
|
|
204
|
+
| YYYY-MM-DD | [Name] | Initial draft |
|
|
205
|
+
| YYYY-MM-DD | [Name] | Added [section] |
|
|
206
|
+
```
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: template-skill
|
|
3
|
+
description: A template skill to use as a starting point for new skills. Copy this folder and customize.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Template Skill
|
|
7
|
+
|
|
8
|
+
This is a template for creating new Agent Skills.
|
|
9
|
+
|
|
10
|
+
## When to Use This Skill
|
|
11
|
+
|
|
12
|
+
Describe when Claude should activate this skill.
|
|
13
|
+
|
|
14
|
+
## Quick Start
|
|
15
|
+
|
|
16
|
+
1. Step one
|
|
17
|
+
2. Step two
|
|
18
|
+
3. Step three
|
|
19
|
+
|
|
20
|
+
## Files in This Skill
|
|
21
|
+
|
|
22
|
+
| File | Purpose |
|
|
23
|
+
|------|---------|
|
|
24
|
+
| `SKILL.md` | This overview |
|
|
25
|
+
| Add more files as needed... |
|
|
26
|
+
|
|
27
|
+
## Examples
|
|
28
|
+
|
|
29
|
+
Add examples of how to use this skill.
|
|
30
|
+
|
|
31
|
+
## Guidelines
|
|
32
|
+
|
|
33
|
+
- Guideline 1
|
|
34
|
+
- Guideline 2
|
|
35
|
+
|
|
36
|
+
## Related Resources
|
|
37
|
+
|
|
38
|
+
- Link to related docs or resources
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
name: Release
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [main]
|
|
6
|
+
|
|
7
|
+
permissions:
|
|
8
|
+
contents: write
|
|
9
|
+
packages: write
|
|
10
|
+
issues: write
|
|
11
|
+
pull-requests: write
|
|
12
|
+
|
|
13
|
+
jobs:
|
|
14
|
+
release:
|
|
15
|
+
runs-on: ubuntu-latest
|
|
16
|
+
steps:
|
|
17
|
+
- uses: actions/checkout@v4
|
|
18
|
+
with:
|
|
19
|
+
fetch-depth: 0
|
|
20
|
+
|
|
21
|
+
- uses: actions/setup-node@v4
|
|
22
|
+
with:
|
|
23
|
+
node-version: 22
|
|
24
|
+
registry-url: https://registry.npmjs.org
|
|
25
|
+
|
|
26
|
+
- run: npm install
|
|
27
|
+
|
|
28
|
+
- name: Release
|
|
29
|
+
run: npx semantic-release
|
|
30
|
+
env:
|
|
31
|
+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
32
|
+
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
|