google-agents-cli-scaffold
Project scaffolding, deployment configuration, and CI/CD setup for Google ADK agents.
documenso-prod-checklist
Execute Documenso production deployment checklist and rollback procedures. Use when deploying Documenso integrations to production, preparing for launch, or implementing go-live procedures. Trigger with phrases like "documenso production", "deploy documenso", "documenso go-live", "documenso launc...
Full skill instructions
Complete checklist for deploying Documenso document signing integrations to production.
npm test)# Verify staging health
curl -f https://staging.yourapp.com/health
# Verify Documenso API status
curl -s https://status.documenso.com/api/v2/status.json | jq '.status'
# Run final test suite
npm run test:integration
# Deploy to production (canary - 10%)
kubectl apply -f k8s/production.yaml
kubectl set image deployment/signing-service app=image:new --record
kubectl rollout pause deployment/signing-service
# Monitor canary for 10 minutes
echo "Monitoring canary deployment..."
sleep 600
# Check error rates
kubectl logs -l app=signing-service --since=10m | grep -c "ERROR"
# If healthy, continue to 50%
kubectl rollout resume deployment/signing-service
kubectl rollout pause deployment/signing-service
sleep 300
# Complete rollout to 100%
kubectl rollout resume deployment/signing-service
kubectl rollout status deployment/signing-service
// src/health.ts
import { getDocumensoClient } from "./documenso/client";
interface HealthStatus {
status: "healthy" | "degraded" | "unhealthy";
checks: {
documenso: {
connected: boolean;
latencyMs: number;
error?: string;
};
database?: {
connected: boolean;
latencyMs: number;
};
};
version: string;
}
export async function healthCheck(): Promise<HealthStatus> {
const checks: HealthStatus["checks"] = {
documenso: { connected: false, latencyMs: 0 },
};
// Test Documenso connectivity
const docStart = Date.now();
try {
const client = getDocumensoClient();
await client.documents.findV0({ perPage: 1 });
checks.documenso = {
connected: true,
latencyMs: Date.now() - docStart,
};
} catch (error: any) {
checks.documenso = {
connected: false,
latencyMs: Date.now() - docStart,
error: error.message,
};
}
// Determine overall status
const allHealthy = checks.documenso.connected;
const anyFailed = !checks.documenso.connected;
return {
status: allHealthy ? "healthy" : anyFailed ? "unhealthy" : "degraded",
checks,
version: process.env.APP_VERSION ?? "unknown",
};
}
// Express endpoint
app.get("/health", async (req, res) => {
const health = await healthCheck();
const statusCode = health.status === "unhealthy" ? 503 : 200;
res.status(statusCode).json(health);
});
// Monitor key metrics
interface DocumensoMetrics {
requestsTotal: number;
errorsTotal: number;
latencyP50Ms: number;
latencyP99Ms: number;
rateLimitHits: number;
}
class MetricsCollector {
private latencies: number[] = [];
private errors = 0;
private requests = 0;
private rateLimits = 0;
recordRequest(latencyMs: number, success: boolean): void {
this.requests++;
this.latencies.push(latencyMs);
if (!success) this.errors++;
// Keep last 1000 latencies
if (this.latencies.length > 1000) {
this.latencies = this.latencies.slice(-1000);
}
}
recordRateLimit(): void {
this.rateLimits++;
}
getMetrics(): DocumensoMetrics {
const sorted = [...this.latencies].sort((a, b) => a - b);
return {
requestsTotal: this.requests,
errorsTotal: this.errors,
latencyP50Ms: sorted[Math.floor(sorted.length * 0.5)] ?? 0,
latencyP99Ms: sorted[Math.floor(sorted.length * 0.99)] ?? 0,
rateLimitHits: this.rateLimits,
};
}
}
// Export to Prometheus/Datadog/etc
app.get("/metrics", (req, res) => {
const metrics = metricsCollector.getMetrics();
res.json(metrics);
});
| Alert | Condition | Severity | Action |
|---|---|---|---|
| API Down | 5xx errors > 10/min | P1 | Page on-call |
| High Latency | p99 > 5000ms | P2 | Investigate |
| Rate Limited | 429 errors > 5/min | P2 | Reduce throughput |
| Auth Failures | 401/403 errors > 0 | P1 | Check API key |
| Webhook Failures | 4xx/5xx on webhook | P2 | Check endpoint |
# Example Datadog alert config
alerts:
- name: documenso_api_errors
query: sum(last_5m):sum:documenso.errors{env:production} > 10
message: "High Documenso API error rate"
priority: P1
- name: documenso_high_latency
query: avg(last_5m):avg:documenso.latency.p99{env:production} > 5000
message: "Documenso API latency elevated"
priority: P2
- name: documenso_rate_limits
query: sum(last_5m):sum:documenso.rate_limits{env:production} > 5
message: "Hitting Documenso rate limits"
priority: P2
# Kubernetes rollback
kubectl rollout undo deployment/signing-service
kubectl rollout status deployment/signing-service
# Verify rollback
kubectl get pods -l app=signing-service
curl -f https://yourapp.com/health
// Use feature flags to disable Documenso features
const documensoEnabled = await featureFlags.isEnabled("documenso_signing");
if (!documensoEnabled) {
throw new Error("Document signing temporarily unavailable");
}
# Run smoke tests
npm run test:smoke
# Verify document creation
curl -X POST https://yourapp.com/api/documents \
-H "Authorization: Bearer $USER_TOKEN" \
-H "Content-Type: application/json" \
-d '{"title":"Test Document"}'
# Verify webhook delivery
# Check webhook logs in Documenso dashboard
# Monitor for 30 minutes
watch -n 30 'curl -s https://yourapp.com/health | jq'
| Alert | Condition | Response |
|---|---|---|
| Deploy failed | CI/CD error | Check logs, retry |
| Health check failed | Documenso down | Implement degraded mode |
| Rollback needed | Error spike | Execute rollback |
| Rate limits hit | Too many requests | Reduce throughput |
For version upgrades, see documenso-upgrade-migration.
Project scaffolding, deployment configuration, and CI/CD setup for Google ADK agents.
Set up tracing, logging, and monitoring for deployed ADK agents across Cloud Trace, BigQuery, and third-party platforms.
Enterprise Azure infrastructure architect generating Bicep or Terraform from workload descriptions.
Plan and configure production-ready Azure Kubernetes Service clusters with Day-0 and Day-1 best practices.
Raw mechanical interfaces fusing Swiss typographic print with military terminal aesthetics. Rigid grids, extreme type scale contrast, utilitarian color, analog degradation effects. For data-heavy dashboards, portfolios, or editorial sites that need to feel like declassified blueprints.
Web search, scraping, extraction, crawling, and monitoring via ScrapeGraph AI CLI.
Skill for working with Firebase Hosting (Classic). Use this when you want to deploy static web apps, Single Page Apps (SPAs), or simple microservices. Do NOT use for Firebase App Hosting.
Deploy and manage web apps with Firebase App Hosting. Use this skill when deploying Next.js/Angular apps with backends.
Deploy applications and websites to Vercel. Use when the user requests deployment actions like "deploy my app", "deploy and give me the link", "push this live", or "create a preview deployment".
Build SEO-optimized pages at scale using templates, data, and proven playbook patterns.
Design and build isolated, reusable Convex backend components with clear boundaries and app-facing wrappers.
Deploy and manage projects on Vercel using token-based authentication. Use when working with Vercel CLI using access tokens rather than interactive login — e.g. "deploy to vercel", "set up vercel", "add environment variables to vercel".
Opus.ai: Revolutionize Your Web Experience
Build a no-code AI app in minutes.
An IDE for code migration from legacy to modern frameworks through coding agents.
Automate CGI animation in live-action scenes
Branded artistic QR-code concepts
Launch a website in seconds with AI.
Streamline Your Coding Experience with AI Code Helper
Convert any screenshot or design to clean code.