opencode-skills-collection 4.0.54 → 4.0.55

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.
Files changed (71) hide show
  1. package/bundled-skills/.antigravity-install-manifest.json +1 -1
  2. package/bundled-skills/antigravity-maintainer-batch-release/SKILL.md +10 -1
  3. package/bundled-skills/backend-security-coder/resources/implementation-playbook.md +23 -0
  4. package/bundled-skills/business-analyst/resources/implementation-playbook.md +23 -0
  5. package/bundled-skills/devops-troubleshooter/resources/implementation-playbook.md +23 -0
  6. package/bundled-skills/distributed-tracing/SKILL.md +22 -435
  7. package/bundled-skills/distributed-tracing/references/instrumentation.md +13 -0
  8. package/bundled-skills/distributed-tracing/references/jaeger-setup.md +13 -0
  9. package/bundled-skills/distributed-tracing/resources/implementation-playbook.md +23 -0
  10. package/bundled-skills/django-pro/resources/implementation-playbook.md +23 -0
  11. package/bundled-skills/embedding-strategies/SKILL.md +40 -64
  12. package/bundled-skills/embedding-strategies/resources/implementation-playbook.md +23 -0
  13. package/bundled-skills/fastapi-pro/resources/implementation-playbook.md +23 -0
  14. package/bundled-skills/find-complementary-founders/scripts/assess_profile.py +7 -1
  15. package/bundled-skills/frontend-security-coder/SKILL.md +5 -5
  16. package/bundled-skills/frontend-security-coder/resources/implementation-playbook.md +23 -0
  17. package/bundled-skills/github-actions-templates/SKILL.md +34 -314
  18. package/bundled-skills/github-actions-templates/references/common-workflows.md +13 -0
  19. package/bundled-skills/github-actions-templates/resources/implementation-playbook.md +23 -0
  20. package/bundled-skills/google-docs-automation/SKILL.md +19 -69
  21. package/bundled-skills/google-sheets-automation/SKILL.md +20 -128
  22. package/bundled-skills/google-slides-automation/SKILL.md +19 -128
  23. package/bundled-skills/grafana-dashboards/SKILL.md +6 -6
  24. package/bundled-skills/grafana-dashboards/references/dashboard-design.md +13 -0
  25. package/bundled-skills/grafana-dashboards/resources/implementation-playbook.md +23 -0
  26. package/bundled-skills/incident-responder/resources/implementation-playbook.md +23 -0
  27. package/bundled-skills/instagram/scripts/config.py +33 -8
  28. package/bundled-skills/ios-developer/resources/implementation-playbook.md +23 -0
  29. package/bundled-skills/junta-leiloeiros/scripts/.snyk +5 -0
  30. package/bundled-skills/junta-leiloeiros/scripts/requirements.txt +2 -0
  31. package/bundled-skills/kpi-dashboard-design/SKILL.md +7 -67
  32. package/bundled-skills/kpi-dashboard-design/resources/implementation-playbook.md +23 -0
  33. package/bundled-skills/kpi-dashboard-design/resources/metric-queries.sql +30 -0
  34. package/bundled-skills/lint-and-validate/SKILL.md +17 -45
  35. package/bundled-skills/lint-and-validate/scripts/lint_runner.py +17 -8
  36. package/bundled-skills/lint-and-validate/scripts/type_coverage.py +77 -167
  37. package/bundled-skills/mobile-developer/resources/implementation-playbook.md +23 -0
  38. package/bundled-skills/multi-platform-apps-multi-platform/resources/implementation-playbook.md +23 -0
  39. package/bundled-skills/notebooklm/scripts/config.py +33 -11
  40. package/bundled-skills/observability-and-instrumentation/SKILL.md +4 -1
  41. package/bundled-skills/observability-and-instrumentation/references/observability-checklist.md +13 -0
  42. package/bundled-skills/pci-compliance/SKILL.md +23 -469
  43. package/bundled-skills/pci-compliance/resources/implementation-playbook.md +23 -0
  44. package/bundled-skills/postmortem-writing/SKILL.md +1 -1
  45. package/bundled-skills/postmortem-writing/resources/implementation-playbook.md +23 -0
  46. package/bundled-skills/pydantic-models-py/SKILL.md +1 -3
  47. package/bundled-skills/secrets-management/SKILL.md +24 -349
  48. package/bundled-skills/secrets-management/references/github-secrets.md +13 -0
  49. package/bundled-skills/secrets-management/references/vault-setup.md +13 -0
  50. package/bundled-skills/security-and-hardening/SKILL.md +8 -6
  51. package/bundled-skills/security-and-hardening/references/security-checklist.md +13 -0
  52. package/bundled-skills/seo-content-planner/resources/implementation-playbook.md +23 -0
  53. package/bundled-skills/seo-content-writer/SKILL.md +2 -2
  54. package/bundled-skills/seo-content-writer/resources/implementation-playbook.md +23 -0
  55. package/bundled-skills/shopify-development/scripts/.snyk +3 -0
  56. package/bundled-skills/slack-gif-creator/.snyk +5 -0
  57. package/bundled-skills/slack-gif-creator/requirements.txt +2 -2
  58. package/bundled-skills/slo-implementation/SKILL.md +24 -9
  59. package/bundled-skills/slo-implementation/references/error-budget.md +13 -0
  60. package/bundled-skills/slo-implementation/references/slo-definitions.md +13 -0
  61. package/bundled-skills/slo-implementation/resources/implementation-playbook.md +23 -0
  62. package/bundled-skills/sql-optimization-patterns/SKILL.md +10 -6
  63. package/bundled-skills/sql-optimization-patterns/resources/implementation-playbook.md +52 -56
  64. package/bundled-skills/telegram/assets/boilerplate/nodejs/package-lock.json +1888 -0
  65. package/bundled-skills/telegram/assets/boilerplate/nodejs/package.json +3 -0
  66. package/bundled-skills/vector-database-engineer/resources/implementation-playbook.md +23 -0
  67. package/bundled-skills/videodb/scripts/ws_listener.py +8 -1
  68. package/bundled-skills/whatsapp-cloud-api/assets/boilerplate/nodejs/package-lock.json +1881 -0
  69. package/bundled-skills/whatsapp-cloud-api/assets/boilerplate/nodejs/package.json +3 -0
  70. package/bundled-skills/whatsapp-cloud-api/assets/boilerplate/python/.snyk +3 -0
  71. package/package.json +1 -1
@@ -8,365 +8,40 @@ date_added: "2026-02-27"
8
8
 
9
9
  # Secrets Management
10
10
 
11
- Secure secrets management practices for CI/CD pipelines using Vault, AWS Secrets Manager, and other tools.
11
+ ## When to Use
12
12
 
13
- ## Purpose
13
+ Design or repair secret retrieval, CI credentials, workload identity, access policies and rotation for an authorized system.
14
14
 
15
- Implement secure secrets management in CI/CD pipelines without hardcoding sensitive information.
15
+ ## Inputs
16
16
 
17
- ## Use this skill when
17
+ Identify secret names and owners, consumers, environments, authentication mechanism and the rotation/recovery policy. Inspect configuration without displaying values.
18
18
 
19
- - Store API keys and credentials
20
- - Manage database passwords
21
- - Handle TLS certificates
22
- - Rotate secrets automatically
23
- - Implement least-privilege access
19
+ ## Procedure
24
20
 
25
- ## Do not use this skill when
21
+ 1. Choose the existing supported backend: Vault, a cloud secret manager or the host's protected secret store. Keep environment boundaries and minimum privileges explicit.
22
+ 2. For Vault, read `references/vault-setup.md`. Development mode and root tokens are not production configuration.
23
+ 3. For GitHub Actions, read `references/github-secrets.md`. Keep pull-request validation separate from privileged jobs. Supply values to the consuming process, never interpolate them into generated shell source or print them for debugging.
24
+ 4. Prefer short-lived workload identity when the backend supports it. Check issuer, audience, workload/environment restrictions and denied access before enabling retrieval.
25
+ 5. Rotate through prepare, consumer switch, verification and old-credential revocation. Use the backend's supported rotation protocol; retries must not leave the database and secret store on different credentials.
26
+ 6. Inspect logs, error paths, artifacts and crash reports with synthetic secret markers. Record metadata such as operation, principal and outcome rather than values.
26
27
 
27
- - You plan to hardcode secrets in source control
28
- - You cannot secure access to the secrets backend
29
- - You only need local development values without sharing
28
+ ## Example
30
29
 
31
- ## Instructions
30
+ A deployment needs a database credential. The trusted job retrieves it through the configured identity and passes it only to the migration process. Test missing access and an expired identity in staging. Verify no credential appears in output, and that a failed rotation leaves a recoverable working state.
32
31
 
33
- 1. Identify secret types, owners, and rotation requirements.
34
- 2. Choose a secrets backend and access model.
35
- 3. Integrate CI/CD or runtime retrieval with least privilege.
36
- 4. Validate rotation and audit logging.
32
+ ## Verification
37
33
 
38
- ## Safety
34
+ - Authorized retrieval succeeds; a different workload or environment is denied.
35
+ - Missing credentials fail closed without exposing values.
36
+ - Rotation and rollback are exercised with synthetic data.
37
+ - Logs and artifacts contain no secret markers, including on failure.
38
+ - Exposed credentials are revoked or rotated; merely deleting their log entry is insufficient.
39
39
 
40
- - Never commit secrets to source control.
41
- - Limit access and log secret usage for auditing.
42
-
43
- ## Secrets Management Tools
44
-
45
- ### HashiCorp Vault
46
- - Centralized secrets management
47
- - Dynamic secrets generation
48
- - Secret rotation
49
- - Audit logging
50
- - Fine-grained access control
51
-
52
- ### AWS Secrets Manager
53
- - AWS-native solution
54
- - Automatic rotation
55
- - Integration with RDS
56
- - CloudFormation support
57
-
58
- ### Azure Key Vault
59
- - Azure-native solution
60
- - HSM-backed keys
61
- - Certificate management
62
- - RBAC integration
63
-
64
- ### Google Secret Manager
65
- - GCP-native solution
66
- - Versioning
67
- - IAM integration
68
-
69
- ## HashiCorp Vault Integration
70
-
71
- ### Setup Vault
72
-
73
- ```bash
74
- # Start Vault dev server
75
- vault server -dev
76
-
77
- # Set environment
78
- export VAULT_ADDR='http://127.0.0.1:8200'
79
- export VAULT_TOKEN='root'
80
-
81
- # Enable secrets engine
82
- vault secrets enable -path=secret kv-v2
83
-
84
- # Store secret
85
- vault kv put secret/database/config username=admin password=secret
86
- ```
87
-
88
- ### GitHub Actions with Vault
89
-
90
- ```yaml
91
- name: Deploy with Vault Secrets
92
-
93
- on: [push]
94
-
95
- jobs:
96
- deploy:
97
- runs-on: ubuntu-latest
98
- steps:
99
- - uses: actions/checkout@v4
100
-
101
- - name: Import Secrets from Vault
102
- uses: hashicorp/vault-action@v2
103
- with:
104
- url: https://vault.example.com:8200
105
- token: ${{ secrets.VAULT_TOKEN }}
106
- secrets: |
107
- secret/data/database username | DB_USERNAME ;
108
- secret/data/database password | DB_PASSWORD ;
109
- secret/data/api key | API_KEY
110
-
111
- - name: Use secrets
112
- run: |
113
- echo "Connecting to database as $DB_USERNAME"
114
- # Use $DB_PASSWORD, $API_KEY
115
- ```
116
-
117
- ### GitLab CI with Vault
118
-
119
- ```yaml
120
- deploy:
121
- image: vault:latest
122
- before_script:
123
- - export VAULT_ADDR=https://vault.example.com:8200
124
- - export VAULT_TOKEN=$VAULT_TOKEN
125
- - apk add curl jq
126
- script:
127
- - |
128
- DB_PASSWORD=$(vault kv get -field=password secret/database/config)
129
- API_KEY=$(vault kv get -field=key secret/api/credentials)
130
- echo "Deploying with secrets..."
131
- # Use $DB_PASSWORD, $API_KEY
132
- ```
133
-
134
- **Reference:** See `references/vault-setup.md`
135
-
136
- ## AWS Secrets Manager
137
-
138
- ### Store Secret
139
-
140
- ```bash
141
- aws secretsmanager create-secret \
142
- --name production/database/password \
143
- --secret-string "super-secret-password"
144
- ```
145
-
146
- ### Retrieve in GitHub Actions
147
-
148
- ```yaml
149
- - name: Configure AWS credentials
150
- uses: aws-actions/configure-aws-credentials@v4
151
- with:
152
- aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
153
- aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
154
- aws-region: us-west-2
155
-
156
- - name: Get secret from AWS
157
- run: |
158
- SECRET=$(aws secretsmanager get-secret-value \
159
- --secret-id production/database/password \
160
- --query SecretString \
161
- --output text)
162
- echo "::add-mask::$SECRET"
163
- echo "DB_PASSWORD=$SECRET" >> $GITHUB_ENV
164
-
165
- - name: Use secret
166
- run: |
167
- # Use $DB_PASSWORD
168
- ./deploy.sh
169
- ```
170
-
171
- ### Terraform with AWS Secrets Manager
172
-
173
- ```hcl
174
- data "aws_secretsmanager_secret_version" "db_password" {
175
- secret_id = "production/database/password"
176
- }
177
-
178
- resource "aws_db_instance" "main" {
179
- allocated_storage = 100
180
- engine = "postgres"
181
- instance_class = "db.t3.large"
182
- username = "admin"
183
- password = jsondecode(data.aws_secretsmanager_secret_version.db_password.secret_string)["password"]
184
- }
185
- ```
186
-
187
- ## GitHub Secrets
188
-
189
- ### Organization/Repository Secrets
190
-
191
- ```yaml
192
- - name: Use GitHub secret
193
- run: |
194
- echo "API Key: ${{ secrets.API_KEY }}"
195
- echo "Database URL: ${{ secrets.DATABASE_URL }}"
196
- ```
197
-
198
- ### Environment Secrets
199
-
200
- ```yaml
201
- deploy:
202
- runs-on: ubuntu-latest
203
- environment: production
204
- steps:
205
- - name: Deploy
206
- run: |
207
- echo "Deploying with ${{ secrets.PROD_API_KEY }}"
208
- ```
209
-
210
- **Reference:** See `references/github-secrets.md`
211
-
212
- ## GitLab CI/CD Variables
213
-
214
- ### Project Variables
215
-
216
- ```yaml
217
- deploy:
218
- script:
219
- - echo "Deploying with $API_KEY"
220
- - echo "Database: $DATABASE_URL"
221
- ```
222
-
223
- ### Protected and Masked Variables
224
- - Protected: Only available in protected branches
225
- - Masked: Hidden in job logs
226
- - File type: Stored as file
227
-
228
- ## Best Practices
229
-
230
- 1. **Never commit secrets** to Git
231
- 2. **Use different secrets** per environment
232
- 3. **Rotate secrets regularly**
233
- 4. **Implement least-privilege access**
234
- 5. **Enable audit logging**
235
- 6. **Use secret scanning** (GitGuardian, TruffleHog)
236
- 7. **Mask secrets in logs**
237
- 8. **Encrypt secrets at rest**
238
- 9. **Use short-lived tokens** when possible
239
- 10. **Document secret requirements**
240
-
241
- ## Secret Rotation
242
-
243
- ### Automated Rotation with AWS
244
-
245
- ```python
246
- import boto3
247
- import json
248
-
249
- def lambda_handler(event, context):
250
- client = boto3.client('secretsmanager')
251
-
252
- # Get current secret
253
- response = client.get_secret_value(SecretId='my-secret')
254
- current_secret = json.loads(response['SecretString'])
255
-
256
- # Generate new password
257
- new_password = generate_strong_password()
258
-
259
- # Update database password
260
- update_database_password(new_password)
261
-
262
- # Update secret
263
- client.put_secret_value(
264
- SecretId='my-secret',
265
- SecretString=json.dumps({
266
- 'username': current_secret['username'],
267
- 'password': new_password
268
- })
269
- )
270
-
271
- return {'statusCode': 200}
272
- ```
273
-
274
- ### Manual Rotation Process
275
-
276
- 1. Generate new secret
277
- 2. Update secret in secret store
278
- 3. Update applications to use new secret
279
- 4. Verify functionality
280
- 5. Revoke old secret
281
-
282
- ## External Secrets Operator
283
-
284
- ### Kubernetes Integration
285
-
286
- ```yaml
287
- apiVersion: external-secrets.io/v1beta1
288
- kind: SecretStore
289
- metadata:
290
- name: vault-backend
291
- namespace: production
292
- spec:
293
- provider:
294
- vault:
295
- server: "https://vault.example.com:8200"
296
- path: "secret"
297
- version: "v2"
298
- auth:
299
- kubernetes:
300
- mountPath: "kubernetes"
301
- role: "production"
302
-
303
- ---
304
- apiVersion: external-secrets.io/v1beta1
305
- kind: ExternalSecret
306
- metadata:
307
- name: database-credentials
308
- namespace: production
309
- spec:
310
- refreshInterval: 1h
311
- secretStoreRef:
312
- name: vault-backend
313
- kind: SecretStore
314
- target:
315
- name: database-credentials
316
- creationPolicy: Owner
317
- data:
318
- - secretKey: username
319
- remoteRef:
320
- key: database/config
321
- property: username
322
- - secretKey: password
323
- remoteRef:
324
- key: database/config
325
- property: password
326
- ```
327
-
328
- ## Secret Scanning
329
-
330
- ### Pre-commit Hook
331
-
332
- ```bash
333
- #!/bin/bash
334
- # .git/hooks/pre-commit
335
-
336
- # Check for secrets with TruffleHog
337
- docker run --rm -v "$(pwd):/repo" \
338
- trufflesecurity/trufflehog:latest \
339
- filesystem --directory=/repo
340
-
341
- if [ $? -ne 0 ]; then
342
- echo "❌ Secret detected! Commit blocked."
343
- exit 1
344
- fi
345
- ```
346
-
347
- ### CI/CD Secret Scanning
348
-
349
- ```yaml
350
- secret-scan:
351
- stage: security
352
- image: trufflesecurity/trufflehog:latest
353
- script:
354
- - trufflehog filesystem .
355
- allow_failure: false
356
- ```
357
-
358
- ## Reference Files
359
-
360
- - `references/vault-setup.md` - HashiCorp Vault configuration
361
- - `references/github-secrets.md` - GitHub Secrets best practices
40
+ ## Limitations
362
41
 
363
- ## Related Skills
42
+ Masking cannot make logging secrets safe. Secret data can persist in infrastructure state, subprocess environments or backups; review those boundaries explicitly. Do not alter real credentials or deploy secret infrastructure without authorization.
364
43
 
365
- - `github-actions-templates` - For GitHub Actions integration
366
- - `gitlab-ci-patterns` - For GitLab CI integration
367
- - `deployment-pipeline-design` - For pipeline architecture
44
+ ## Sources
368
45
 
369
- ## Limitations
370
- - Use this skill only when the task clearly matches the scope described above.
371
- - Do not treat the output as a substitute for environment-specific validation, testing, or expert review.
372
- - Stop and ask for clarification if required inputs, permissions, safety boundaries, or success criteria are missing.
46
+ - [GitHub secure workflow guidance](https://docs.github.com/en/actions/reference/security/secure-use)
47
+ - [Vault production hardening](https://developer.hashicorp.com/vault/docs/concepts/production-hardening)
@@ -0,0 +1,13 @@
1
+ # GitHub secret handling checklist
2
+
3
+ ## Inputs
4
+
5
+ Identify the trusted job, required secret names, environment, permitted branches and actual consuming process.
6
+
7
+ ## Procedure and verification
8
+
9
+ Supply secrets through process environment or an approved credential action, not expression interpolation into shell source. Avoid printing, tracing, encoding or uploading secret values. Limit scope and lifetime; isolate untrusted pull-request jobs. Verify missing-secret failure and inspect test logs using synthetic markers. Review access and rotation ownership.
10
+
11
+ ## Limitations
12
+
13
+ Masking is a fallback, not authorization to log secrets. An environment name does not by itself establish reviewer rules; inspect the configured protection before relying on it.
@@ -0,0 +1,13 @@
1
+ # Vault access and rotation checklist
2
+
3
+ ## Inputs
4
+
5
+ Identify the deployment, secrets engine mount/version, workload identity, secret owner and rotation consumer.
6
+
7
+ ## Procedure and verification
8
+
9
+ Separate disposable development mode from production. For production, verify authenticated TLS, storage, recovery procedures, audit access and least-privilege policies using the installed version's documentation. Prefer workload identity with short-lived credentials. Test allowed and denied paths with synthetic values; rotate in staging, verify consumers switch, then revoke the old credential only after successful validation.
10
+
11
+ ## Limitations
12
+
13
+ Never use a development root token for deployment or print values to test retrieval. Rotation is a coordinated state transition with rollback, not just overwriting a secret field.
@@ -81,7 +81,7 @@ If you can't name the trust boundaries for a feature, you're not ready to secure
81
81
 
82
82
  ## OWASP Top 10 Prevention Patterns
83
83
 
84
- These are prevention patterns, not a ranking. For the 2021 ordering, see the quick-reference table in `references/security-checklist.md`.
84
+ These are prevention patterns, not a ranking. For a task-focused review checklist, see `references/security-checklist.md`.
85
85
 
86
86
  ### Injection (SQL, NoSQL, OS Command)
87
87
 
@@ -114,7 +114,7 @@ app.use(session({
114
114
  cookie: {
115
115
  httpOnly: true, // Not accessible via JavaScript
116
116
  secure: true, // HTTPS only
117
- sameSite: 'lax', // CSRF protection
117
+ sameSite: 'lax', // Defense in depth; add CSRF protection for cookie-authenticated writes
118
118
  maxAge: 24 * 60 * 60 * 1000, // 24 hours
119
119
  },
120
120
  }));
@@ -142,14 +142,17 @@ app.patch('/api/tasks/:id', authenticate, async (req, res) => {
142
142
  const task = await taskService.findById(req.params.id);
143
143
 
144
144
  // Check that the authenticated user owns this resource
145
- if (task.ownerId !== req.user.id) {
145
+ if (!task || task.ownerId !== req.user.id) {
146
146
  return res.status(403).json({
147
147
  error: { code: 'FORBIDDEN', message: 'Not authorized to modify this task' }
148
148
  });
149
149
  }
150
150
 
151
151
  // Proceed with update
152
- const updated = await taskService.update(req.params.id, req.body);
152
+ const input = UpdateTaskSchema.safeParse(req.body); // Schema allowlists mutable fields only.
153
+ if (!input.success) return res.status(422).json({ error: 'Invalid input' });
154
+ // The service must atomically enforce ownerId in its update predicate.
155
+ const updated = await taskService.updateOwned(req.params.id, req.user.id, input.data);
153
156
  return res.json(updated);
154
157
  });
155
158
  ```
@@ -184,8 +187,7 @@ app.use(cors({
184
187
  ```typescript
185
188
  // Never return sensitive fields in API responses
186
189
  function sanitizeUser(user: UserRecord): PublicUser {
187
- const { passwordHash, resetToken, ...publicFields } = user;
188
- return publicFields;
190
+ return { id: user.id, displayName: user.displayName }; // Explicit public-field allowlist.
189
191
  }
190
192
 
191
193
  // Use environment variables for secrets
@@ -0,0 +1,13 @@
1
+ # Application security review checklist
2
+
3
+ ## Inputs
4
+
5
+ Identify the feature, trust boundaries, stored data, external effects and authorization scope.
6
+
7
+ ## Procedure and verification
8
+
9
+ Trace inputs to persistence and outputs. Enforce resource ownership independently from login; test another tenant and a denied role. Allowlist writable fields and response fields. Use parameterized queries and contextual output handling. For outbound URLs, consider resolution, redirects and network egress together. Inspect actual logs and errors for secrets. Test rejected requests for absence of side effects and record reproducible findings.
10
+
11
+ ## Limitations
12
+
13
+ Use staging or local tests within authorization. A checklist does not prove every vulnerability absent. Keep server-side controls, rollback and any untested integration explicit.
@@ -0,0 +1,23 @@
1
+ # Content planning playbook
2
+
3
+ ## Inputs
4
+
5
+ Product/audience brief, existing pages, target market and supplied or authorized search evidence.
6
+
7
+ ## Procedure
8
+
9
+ 1. Group questions by user intent and identify existing pages that already answer them. Separate observed search evidence from topic hypotheses.
10
+ 2. Create an outline with the reader's question, useful answer, required sources and next action. Assign one primary role per page and explicit internal links.
11
+ 3. Prioritize by audience relevance, evidence and editorial capacity. Deliver a calendar with owners and dependencies rather than invented traffic estimates.
12
+
13
+ ## Worked example
14
+
15
+ A small software site needs onboarding articles. Map installation, first task and troubleshooting into distinct pages, reusing existing documentation and flagging missing product evidence.
16
+
17
+ ## Verification and handoff
18
+
19
+ Report the actual files or configuration changed, checks performed, observed results and any untested environment. Keep the original inputs and evidence sufficient to reproduce the conclusion.
20
+
21
+ ## Limitations
22
+
23
+ Do not invent search volume, rankings or customer research. Word count is an editorial constraint, not a ranking target.
@@ -79,14 +79,14 @@ You are an SEO content writer creating comprehensive, engaging content optimized
79
79
 
80
80
  **Quality Standards:**
81
81
  - Original, valuable content
82
- - 0.5-1.5% keyword density
82
+ - Natural keyword use without a fixed density target
83
83
  - Grade 8-10 reading level
84
84
  - Short paragraphs (2-3 sentences)
85
85
  - Bullet points for scannability
86
86
  - Examples and data support
87
87
 
88
88
  **E-E-A-T Elements:**
89
- - First-hand experience mentions
89
+ - First-hand experience only when supplied and verifiable
90
90
  - Specific examples and cases
91
91
  - Data and statistics citations
92
92
  - Expert perspective inclusion
@@ -0,0 +1,23 @@
1
+ # Evidence-grounded content drafting
2
+
3
+ ## Inputs
4
+
5
+ Approved brief, reader intent, factual sources, product claims and editorial voice.
6
+
7
+ ## Procedure
8
+
9
+ 1. Outline the answer before adding search terms. Keep sourced facts, supplied experience and illustrative examples distinguishable.
10
+ 2. Write clear sections that answer the reader's question. Use keywords naturally; do not force density targets or fabricate first-hand experience, quotations or statistics.
11
+ 3. Check every factual claim and proposed internal link. Provide title and metadata suggestions, noting unresolved facts and any language requiring specialist review.
12
+
13
+ ## Worked example
14
+
15
+ Draft a setup guide from verified product documentation. Include steps, expected outcome and troubleshooting; label an untested step instead of claiming it worked.
16
+
17
+ ## Verification and handoff
18
+
19
+ Report the actual files or configuration changed, checks performed, observed results and any untested environment. Keep the original inputs and evidence sufficient to reproduce the conclusion.
20
+
21
+ ## Limitations
22
+
23
+ A polished draft does not imply ranking gains or publication. Do not manufacture expertise signals or publish without authorization.
@@ -0,0 +1,3 @@
1
+ version: v1.25.1
2
+ language-settings:
3
+ python: '3.14'
@@ -0,0 +1,5 @@
1
+ # Match the supported interpreter used to verify these requirements.
2
+ # Scoped to this manifest; does not change organization-wide settings.
3
+ version: v1.25.1
4
+ language-settings:
5
+ python: '3.14'
@@ -1,5 +1,5 @@
1
- pillow>=12.2.0
1
+ pillow>=12.3.0
2
2
  imageio>=2.31.0
3
3
  imageio-ffmpeg>=0.4.9
4
4
  numpy>=1.24.0
5
- setuptools>=78.1.1
5
+ setuptools>=83.0.0
@@ -65,7 +65,7 @@ sum(rate(http_request_duration_seconds_bucket{le="0.5"}[28d]))
65
65
  sum(rate(http_request_duration_seconds_count[28d]))
66
66
  ```
67
67
 
68
- #### 3. Durability SLI
68
+ #### 3. Write Success SLI
69
69
  ```
70
70
  # Successful writes / Total writes
71
71
  sum(storage_writes_successful_total)
@@ -79,6 +79,8 @@ sum(storage_writes_total)
79
79
 
80
80
  ### Availability SLO Examples
81
81
 
82
+ The downtime equivalents below assume a time-based SLI, a 30-day month and a 365-day year; do not convert request-based budgets to downtime without a traffic model.
83
+
82
84
  | SLO % | Downtime/Month | Downtime/Year |
83
85
  |-------|----------------|---------------|
84
86
  | 99% | 7.2 hours | 3.65 days |
@@ -106,7 +108,7 @@ slos:
106
108
  /
107
109
  sum(rate(http_requests_total[28d]))
108
110
 
109
- - name: api_latency_p95
111
+ - name: api_latency_under_500ms
110
112
  target: 99
111
113
  window: 28d
112
114
  sli: |
@@ -194,6 +196,21 @@ groups:
194
196
  )) / (1 - 0.999)
195
197
  ```
196
198
 
199
+ The exhaustion projection below assumes a constant recent burn rate. Zero burn has no finite exhaustion time; an exhausted budget must display as already exhausted. Missing telemetry is not healthy traffic.
200
+
201
+ ### Additional Burn-Rate Recording Rules
202
+
203
+ Include these rules in the same recording-rule group before using the alert examples:
204
+
205
+ ```yaml
206
+ - record: slo:http_availability:burn_rate_1h
207
+ expr: (sum(rate(http_requests_total{status=~"5.."}[1h])) / sum(rate(http_requests_total[1h]))) / (1 - 0.999)
208
+ - record: slo:http_availability:burn_rate_6h
209
+ expr: (sum(rate(http_requests_total{status=~"5.."}[6h])) / sum(rate(http_requests_total[6h]))) / (1 - 0.999)
210
+ - record: slo:http_availability:burn_rate_30m
211
+ expr: (sum(rate(http_requests_total{status=~"5.."}[30m])) / sum(rate(http_requests_total[30m]))) / (1 - 0.999)
212
+ ```
213
+
197
214
  ### SLO Alerting Rules
198
215
 
199
216
  ```yaml
@@ -202,7 +219,7 @@ groups:
202
219
  interval: 1m
203
220
  rules:
204
221
  # Fast burn: 14.4x rate, 1 hour window
205
- # Consumes 2% error budget in 1 hour
222
+ # Approximately 2.14% of a 28-day budget in 1 hour at constant traffic
206
223
  - alert: SLOErrorBudgetBurnFast
207
224
  expr: |
208
225
  slo:http_availability:burn_rate_1h > 14.4
@@ -216,7 +233,7 @@ groups:
216
233
  description: "Error budget burning at {{ $value }}x rate"
217
234
 
218
235
  # Slow burn: 6x rate, 6 hour window
219
- # Consumes 5% error budget in 6 hours
236
+ # Approximately 5.36% of a 28-day budget in 6 hours at constant traffic
220
237
  - alert: SLOErrorBudgetBurnSlow
221
238
  expr: |
222
239
  slo:http_availability:burn_rate_6h > 6
@@ -270,11 +287,9 @@ sli:http_availability:ratio * 100
270
287
  slo:http_availability:error_budget_remaining
271
288
 
272
289
  # Days until error budget exhausted (at current burn rate)
273
- (slo:http_availability:error_budget_remaining / 100)
274
- *
275
- 28
290
+ (slo:http_availability:error_budget_remaining / 100) * 28
276
291
  /
277
- (1 - sli:http_availability:ratio) * (1 - 0.999)
292
+ slo:http_availability:burn_rate_5m
278
293
  ```
279
294
 
280
295
  ## Multi-Window Burn Rate Alerts
@@ -334,7 +349,7 @@ rules:
334
349
 
335
350
  ## Reference Files
336
351
 
337
- - `assets/slo-template.md` - SLO definition template
352
+ - [inline example](#setting-slo-targets) - SLO definition template
338
353
  - `references/slo-definitions.md` - SLO definition patterns
339
354
  - `references/error-budget.md` - Error budget calculations
340
355
 
@@ -0,0 +1,13 @@
1
+ # Error budget arithmetic
2
+
3
+ ## Inputs
4
+
5
+ Let target be a fraction strictly between zero and one, total be eligible events, and bad be failed eligible events in the same window.
6
+
7
+ ## Procedure and verification
8
+
9
+ Budget events = total × (1 − target). Consumed fraction = bad / budget events. Remaining fraction = 1 − consumed fraction. Burn rate = (bad / total) / (1 − target). Example: total 100000, target 0.999 and bad 50 gives budget 100, remaining 50% and burn 0.5. No traffic has no measured burn; do not divide by zero.
10
+
11
+ ## Limitations
12
+
13
+ For a fixed-rate projection, days remaining = remaining fraction × window days / burn rate. Mark zero burn as no finite exhaustion estimate and negative remaining budget as already exhausted. This projection is not a forecast when traffic or failures change.
@@ -0,0 +1,13 @@
1
+ # Defining an SLI and SLO
2
+
3
+ ## Inputs
4
+
5
+ Record the journey, eligible event population, good-event definition, target fraction, reporting window and owner.
6
+
7
+ ## Procedure and verification
8
+
9
+ Use good events divided by total eligible events for a request-based SLI. Define how client errors, retries and dependency timeouts count. Distinguish no traffic from missing telemetry. Keep service and tenant scopes consistent. Validate against a known request sample and capture the query with its data source.
10
+
11
+ ## Limitations
12
+
13
+ A percentile and a fraction of requests under a threshold are different measures. Avoid silently substituting one. A request success fraction does not establish durability or a contractual SLA.