From lucidchart-pack
Deploy Integration for Lucidchart. Trigger: "lucidchart deploy integration".
npx claudepluginhub flight505/skill-forge --plugin lucidchart-packThis skill is limited to using the following tools:
Deploy a containerized Lucidchart integration service that manages diagram documents, manipulates shapes and connectors programmatically, and synchronizes visual collaboration data through the Lucid API. This skill covers Docker multi-stage builds for the Lucid SDK, OAuth2 token configuration, health checks that validate document API access, and rolling deployments with safe diagram state prese...
Provides UI/UX resources: 50+ styles, color palettes, font pairings, guidelines, charts for web/mobile across React, Next.js, Vue, Svelte, Tailwind, React Native, Flutter. Aids planning, building, reviewing interfaces.
Fetches up-to-date documentation from Context7 for libraries and frameworks like React, Next.js, Prisma. Use for setup questions, API references, and code examples.
Analyzes multiple pages for keyword overlap, SEO cannibalization risks, and content duplication. Suggests differentiation, consolidation, and resolution strategies when reviewing similar content.
Share bugs, ideas, or general feedback.
Deploy a containerized Lucidchart integration service that manages diagram documents, manipulates shapes and connectors programmatically, and synchronizes visual collaboration data through the Lucid API. This skill covers Docker multi-stage builds for the Lucid SDK, OAuth2 token configuration, health checks that validate document API access, and rolling deployments with safe diagram state preservation during updates.
LUCID_API_KEY (OAuth2 client credentials) from the Lucid developer portalapi.lucid.co on port 443FROM node:20-slim AS builder
WORKDIR /build
COPY package*.json tsconfig.json ./
RUN npm ci
COPY src/ ./src/
RUN npm run build
FROM node:20-slim
RUN groupadd -r lucid && useradd -r -g lucid -m appuser
WORKDIR /app
COPY --from=builder /build/dist ./dist/
COPY --from=builder /build/node_modules ./node_modules/
COPY package*.json ./
RUN npm prune --production
USER appuser
EXPOSE 3000
HEALTHCHECK --interval=30s --timeout=10s --retries=3 \
CMD curl -f http://localhost:3000/health || exit 1
CMD ["node", "dist/index.js"]
LUCID_API_KEY="lucid_xxxxxxxxxxxxxxxx" # OAuth2 API key from developer portal
LUCID_CLIENT_SECRET="" # OAuth2 client secret
LUCID_BASE_URL="https://api.lucid.co" # API base URL
LUCID_ACCOUNT_ID="" # Target Lucid account identifier
LOG_LEVEL="info" # debug | info | warn | error
NODE_ENV="production"
PORT="3000"
import express from "express";
const app = express();
app.get("/health", async (_req, res) => {
try {
const response = await fetch(`${process.env.LUCID_BASE_URL}/v1/documents`, {
method: "GET",
headers: {
Authorization: `Bearer ${process.env.LUCID_API_KEY}`,
"Lucid-Api-Version": "1",
},
});
if (!response.ok) throw new Error(`Lucid API returned ${response.status}`);
const data = await response.json();
res.json({ status: "healthy", documentCount: data.documents?.length ?? 0 });
} catch (err) {
res.status(503).json({ status: "unhealthy", error: (err as Error).message });
}
});
docker build -t lucidchart-integration:$(git rev-parse --short HEAD) .
docker run -d --name lucidchart-svc \
--env-file .env.production \
-p 3000:3000 \
--memory=512m \
--restart unless-stopped \
lucidchart-integration:$(git rev-parse --short HEAD)
curl -s http://localhost:3000/health | jq .
# Expect: { "status": "healthy", "documentCount": 47 }
docker pull lucidchart-integration:latest
docker stop lucidchart-svc && docker rm lucidchart-svc
docker run -d --name lucidchart-svc --env-file .env.production -p 3000:3000 --memory=512m lucidchart-integration:latest
# List recent images
docker images lucidchart-integration --format "{{.Tag}} {{.CreatedAt}}" | head -5
# Roll back to previous tag
docker stop lucidchart-svc && docker rm lucidchart-svc
docker run -d --name lucidchart-svc --env-file .env.production -p 3000:3000 --memory=512m lucidchart-integration:<previous-tag>
| Issue | Cause | Fix |
|---|---|---|
| 403 on document access | OAuth2 scopes missing lucidchart.document.content | Re-authorize with required scopes in Lucid developer portal |
| Container OOM killed | Large diagram rendering exceeds memory | Increase memory limit to 1GB with --memory=1g for complex documents |
| Token refresh failures | Expired LUCID_CLIENT_SECRET or clock skew | Regenerate client credentials and verify server time sync (NTP) |
| Health check timeout | Rate limiting on /v1/documents endpoint | Increase HEALTHCHECK --timeout to 15s; cache document count locally |
| Shape API 422 errors | Invalid page or layer ID in diagram mutations | Validate document structure with GET /v1/documents/{id}/pages before writes |
See lucidchart-webhooks-events.