documenso-debug-bundle
Comprehensive debugging toolkit for Documenso integrations. Use when troubleshooting complex issues, gathering diagnostic information, or creating support tickets for Documenso problems. Trigger with phrases like "debug documenso", "documenso diagnostics", "troubleshoot documenso", "documenso support ticket".
What this skill does
# Documenso Debug Bundle
## Current State
!`node --version 2>/dev/null || echo 'N/A'`
!`python3 --version 2>/dev/null || echo 'N/A'`
!`uname -a`
## Overview
Comprehensive debugging tools for Documenso integration issues. Includes diagnostic scripts, curl debug commands, environment verification, and support ticket templates.
## Prerequisites
- Documenso SDK installed
- Access to logs and configuration
- `curl` and `jq` available
## Instructions
### Step 1: Quick Connectivity Test
```bash
#!/bin/bash
set -euo pipefail
echo "=== Documenso Connectivity Test ==="
# 1. Check API key is set
if [ -z "${DOCUMENSO_API_KEY:-}" ]; then
echo "FAIL: DOCUMENSO_API_KEY not set"
exit 1
fi
echo "OK: API key set (${#DOCUMENSO_API_KEY} chars)"
# 2. Test authentication
BASE="${DOCUMENSO_BASE_URL:-https://app.documenso.com/api/v1}"
STATUS=$(curl -s -o /dev/null -w "%{http_code}" \
-H "Authorization: Bearer $DOCUMENSO_API_KEY" \
"$BASE/documents?page=1&perPage=1")
if [ "$STATUS" = "200" ]; then
echo "OK: API authentication successful"
elif [ "$STATUS" = "401" ]; then
echo "FAIL: Invalid API key (401)"
exit 1
elif [ "$STATUS" = "403" ]; then
echo "FAIL: Insufficient permissions (403) — try a team API key"
exit 1
else
echo "WARN: Unexpected status $STATUS"
fi
# 3. Check latency
LATENCY=$(curl -s -o /dev/null -w "%{time_total}" \
-H "Authorization: Bearer $DOCUMENSO_API_KEY" \
"$BASE/documents?page=1&perPage=1")
echo "Latency: ${LATENCY}s"
# 4. List recent documents
echo "=== Recent Documents ==="
curl -s -H "Authorization: Bearer $DOCUMENSO_API_KEY" \
"$BASE/documents?page=1&perPage=5" | jq '.documents[] | {id, title, status, createdAt}'
```
### Step 2: TypeScript Diagnostic Script
```typescript
// scripts/documenso-diagnose.ts
import { Documenso } from "@documenso/sdk-typescript";
async function diagnose() {
const results: Array<{ test: string; status: "PASS" | "FAIL"; detail: string }> = [];
// Test 1: API key
const apiKey = process.env.DOCUMENSO_API_KEY;
if (!apiKey) {
results.push({ test: "API Key", status: "FAIL", detail: "DOCUMENSO_API_KEY not set" });
return results;
}
results.push({ test: "API Key", status: "PASS", detail: `Set (${apiKey.length} chars)` });
// Test 2: Connection
const client = new Documenso({
apiKey,
...(process.env.DOCUMENSO_BASE_URL && { serverURL: process.env.DOCUMENSO_BASE_URL }),
});
try {
const start = Date.now();
const { documents } = await client.documents.findV0({ page: 1, perPage: 1 });
const latency = Date.now() - start;
results.push({
test: "Connection",
status: "PASS",
detail: `${latency}ms, ${documents.length} documents returned`,
});
} catch (err: any) {
results.push({
test: "Connection",
status: "FAIL",
detail: `${err.statusCode ?? "unknown"}: ${err.message}`,
});
}
// Test 3: Create + Delete (write access)
try {
const doc = await client.documents.createV0({ title: "[DIAG] Test Document" });
await client.documents.deleteV0(doc.documentId);
results.push({ test: "Write Access", status: "PASS", detail: "Create+delete OK" });
} catch (err: any) {
results.push({
test: "Write Access",
status: "FAIL",
detail: err.message,
});
}
// Print report
console.log("\n=== Documenso Diagnostic Report ===");
for (const r of results) {
console.log(` [${r.status}] ${r.test}: ${r.detail}`);
}
const failures = results.filter((r) => r.status === "FAIL").length;
console.log(`\n${results.length} tests, ${failures} failures\n`);
return results;
}
diagnose();
```
Run: `npx tsx scripts/documenso-diagnose.ts`
### Step 3: Debug Logging Wrapper
```typescript
// src/documenso/debug-client.ts
import { Documenso } from "@documenso/sdk-typescript";
export function createDebugClient(): Documenso {
const client = new Documenso({ apiKey: process.env.DOCUMENSO_API_KEY! });
// Proxy to log all method calls
return new Proxy(client, {
get(target, prop) {
const value = (target as any)[prop];
if (typeof value === "object" && value !== null) {
return new Proxy(value, {
get(innerTarget, innerProp) {
const method = (innerTarget as any)[innerProp];
if (typeof method === "function") {
return async (...args: any[]) => {
const start = Date.now();
console.log(`[DOCUMENSO] ${String(prop)}.${String(innerProp)}(`, JSON.stringify(args).slice(0, 200), ")");
try {
const result = await method.apply(innerTarget, args);
console.log(`[DOCUMENSO] OK in ${Date.now() - start}ms`);
return result;
} catch (err: any) {
console.error(`[DOCUMENSO] FAIL in ${Date.now() - start}ms: ${err.statusCode} ${err.message}`);
throw err;
}
};
}
return method;
},
});
}
return value;
},
});
}
```
### Step 4: Support Ticket Template
When filing an issue on [GitHub](https://github.com/documenso/documenso/issues) or Discord:
```markdown
## Environment
- Documenso: Cloud / Self-hosted v[version]
- SDK: @documenso/sdk-typescript v[version]
- Node.js: [version]
- OS: [os]
## Issue Description
[What you expected vs what happened]
## Steps to Reproduce
1. [Step 1]
2. [Step 2]
## API Request (sanitized)
- Method: POST /api/v2/documents
- Status: [HTTP status]
- Response: [error body, no secrets]
## Diagnostic Output
[Paste output from documenso-diagnose.ts]
## Logs
[Relevant log lines, sanitized]
```
## Error Handling
| Issue | Cause | Solution |
|-------|-------|----------|
| Diagnostic timeout | Slow API or network | Check connectivity, increase timeout |
| Write test fails | Read-only key or no team access | Use team API key with write permissions |
| Self-hosted unreachable | Docker container down | `docker ps`, check container logs |
| Latency > 5s | Network or infrastructure issue | Check if self-hosted DB is overloaded |
## Resources
- [Documenso GitHub Issues](https://github.com/documenso/documenso/issues)
- Documenso Discord
- [Status Page](https://status.documenso.com)
- [API Reference](https://openapi.documenso.com/)
## Next Steps
For rate limit handling, see `documenso-rate-limits`.
Related in Code Review
gstack
IncludedFast headless browser for QA testing and site dogfooding. Navigate pages, interact with elements, verify state, diff before/after, take annotated screenshots, test responsive layouts, forms, uploads, dialogs, and capture bug evidence. Use when asked to open or test a site, verify a deployment, dogfood a user flow, or file a bug with screenshots. (gstack)
startup-due-diligence
IncludedLegal due diligence review for seed-stage and Series A startups (US, Delaware C-Corp focus). Supports both investor and founder perspectives. Capabilities include: (1) Interactive document review and issue spotting; (2) Document request list generation; (3) Cap table and SAFE/convertible note analysis; (4) Red flag identification with severity ratings; (5) Diligence report generation. TRIGGERS: due diligence, DD, startup investment, cap table review, Series A, seed round, investor diligence, legal review startup, SAFE analysis, convertible note, 409A, founder vesting.
interview-master
IncludedThis skill should be used when the user asks to "generate interview questions", "prepare for interview", "optimize resume", "conduct mock interview", "analyze git commits for resume", "generate resume from code", "review my resume", or mentions interview preparation, career assistance, or extracting project experience from git history. Provides comprehensive interview and career development guidance for both job seekers and interviewers.
fix-issue
IncludedFixes GitHub issues using parallel analysis agents for root cause investigation, code exploration, and regression detection. Reads issue context from gh CLI, searches codebase and memory for related patterns, generates a fix with tests, and links the resolution back to the issue via PR. Includes prevention analysis to avoid recurrence. Use when debugging errors, resolving regressions, fixing bugs, or triaging issues.
sf-apex
IncludedGenerates and reviews Salesforce Apex code with 150-point scoring. TRIGGER when: user writes, reviews, or fixes Apex classes, triggers, test classes, batch/queueable/schedulable jobs, or touches .cls/.trigger files. DO NOT TRIGGER when: LWC JavaScript (use sf-lwc), Flow XML (use sf-flow), SOQL-only queries (use sf-soql), or non-Salesforce code.
swift-development
IncludedComprehensive Swift development for building, testing, and deploying iOS/macOS applications. Use when Claude needs to: (1) Build Swift packages or Xcode projects from command line, (2) Run tests with XCTest or Swift Testing framework, (3) Manage iOS simulators with simctl, (4) Handle code signing, provisioning profiles, and app distribution, (5) Format or lint Swift code with SwiftFormat/SwiftLint, (6) Work with Swift Package Manager (SPM), (7) Implement Swift 6 concurrency patterns (async/await, actors, Sendable), (8) Create SwiftUI views with MVVM architecture, (9) Set up Core Data or SwiftData persistence, or any other Swift/iOS/macOS development tasks.