skills/adynato-vercel/SKILL.md
Vercel deployment and configuration for Adynato projects. Covers environment variables, vercel.json, project linking, common errors like VERCEL_ORG_ID/VERCEL_PROJECT_ID, and CI/CD setup. Use when deploying to Vercel, configuring builds, or troubleshooting deployment issues.
npx skillsauth add adynato/skills adynato-vercelInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Use this skill when deploying Adynato projects to Vercel or troubleshooting deployment issues.
Error: You specified `VERCEL_ORG_ID` but you forgot to specify `VERCEL_PROJECT_ID`.
You need to specify both to deploy to a custom project.
Fix: Both environment variables must be set together:
# Get these from Vercel dashboard or .vercel/project.json
export VERCEL_ORG_ID="team_xxxxxx"
export VERCEL_PROJECT_ID="prj_xxxxxx"
Or in CI (GitHub Actions):
env:
VERCEL_ORG_ID: ${{ secrets.VERCEL_ORG_ID }}
VERCEL_PROJECT_ID: ${{ secrets.VERCEL_PROJECT_ID }}
VERCEL_TOKEN: ${{ secrets.VERCEL_TOKEN }}
Finding your IDs:
# After linking a project, check .vercel/project.json
cat .vercel/project.json
# {"orgId":"team_xxx","projectId":"prj_xxx"}
Error: Your codebase isn't linked to a project on Vercel.
Fix:
# Interactive linking
vercel link
# Or with flags for CI
vercel link --yes --project=my-project --scope=my-team
Error: Command "npm run build" exited with 1
Debug steps:
npm run buildengines in package.json)Error: Environment variable "DATABASE_URL" not found
Fix: Add to Vercel dashboard or via CLI:
# Add single variable
vercel env add DATABASE_URL production
# Pull all env vars locally
vercel env pull .env.local
{
"buildCommand": "npm run build",
"outputDirectory": ".next",
"installCommand": "npm install",
"framework": "nextjs",
"regions": ["iad1"],
"functions": {
"app/api/**/*.ts": {
"memory": 1024,
"maxDuration": 30
}
},
"headers": [
{
"source": "/api/(.*)",
"headers": [
{ "key": "Access-Control-Allow-Origin", "value": "*" }
]
}
],
"redirects": [
{
"source": "/old-page",
"destination": "/new-page",
"permanent": true
}
],
"rewrites": [
{
"source": "/blog/:slug",
"destination": "/posts/:slug"
}
]
}
Vercel auto-detects, but you can override:
| Framework | framework value | Output Directory |
|-----------|-------------------|------------------|
| Next.js | nextjs | .next |
| Remix | remix | build |
| Astro | astro | dist |
| Vite | vite | dist |
| Create React App | create-react-app | build |
| Scope | When Used |
|-------|-----------|
| production | Production deployments (main branch) |
| preview | Preview deployments (PRs, other branches) |
| development | Local development (vercel dev) |
# Add variable to all environments
vercel env add SECRET_KEY
# Add to specific environment
vercel env add SECRET_KEY production
# List all variables
vercel env ls
# Remove variable
vercel env rm SECRET_KEY production
# Pull to local .env file
vercel env pull .env.local
# Add as sensitive (default for secrets)
vercel env add DATABASE_URL --sensitive
# Deploy to preview
vercel
# Deploy to production
vercel --prod
# Deploy without prompts (CI)
vercel --yes --prod
# Deploy with specific env
vercel --env NODE_ENV=production
# Link to existing project
vercel link
# List projects
vercel projects ls
# Remove project
vercel projects rm my-project
# List deployments
vercel ls
# Inspect deployment
vercel inspect <deployment-url>
# View logs
vercel logs <deployment-url>
# Rollback
vercel rollback <deployment-url>
# Add domain
vercel domains add example.com
# List domains
vercel domains ls
# Remove domain
vercel domains rm example.com
# Add domain to project
vercel alias <deployment-url> example.com
# .github/workflows/deploy.yml
name: Deploy to Vercel
on:
push:
branches: [main]
pull_request:
branches: [main]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install Vercel CLI
run: npm install -g vercel
- name: Pull Vercel Environment
run: vercel pull --yes --environment=production --token=${{ secrets.VERCEL_TOKEN }}
env:
VERCEL_ORG_ID: ${{ secrets.VERCEL_ORG_ID }}
VERCEL_PROJECT_ID: ${{ secrets.VERCEL_PROJECT_ID }}
- name: Build
run: vercel build --prod --token=${{ secrets.VERCEL_TOKEN }}
- name: Deploy
run: vercel deploy --prebuilt --prod --token=${{ secrets.VERCEL_TOKEN }}
- name: Deploy Preview
if: github.event_name == 'pull_request'
run: |
url=$(vercel deploy --prebuilt --token=${{ secrets.VERCEL_TOKEN }})
echo "Preview URL: $url"
{
"projects": [
{ "src": "apps/web", "use": "@vercel/next" },
{ "src": "apps/api", "use": "@vercel/node" }
]
}
# Set root directory in project settings or:
vercel --cwd apps/web
# vercel.json at root
{
"buildCommand": "cd ../.. && npx turbo run build --filter=web",
"installCommand": "cd ../.. && npm install"
}
# List recent deployments
vercel ls
# Get deployment details
vercel inspect <url>
# Stream logs
vercel logs <url> --follow
Default is 10s for Hobby, 60s for Pro. Increase in vercel.json:
{
"functions": {
"app/api/slow-endpoint/route.ts": {
"maxDuration": 60
}
}
}
{
"functions": {
"app/api/heavy-compute/route.ts": {
"memory": 3008
}
}
}
# Force rebuild without cache
vercel --force
Or in dashboard: Deployments → Redeploy → "Redeploy with existing Build Cache" unchecked.
tools
Work with Jira, Confluence, and Atlassian Cloud links via Atlassian MCP instead of browser automation. Covers reading `atlassian.net` URLs, preferring MCP over Puppeteer for tickets and pages, summarizing issue state and comments, and falling back only when visual inspection is explicitly needed or MCP is unavailable. Use when a prompt includes Jira tickets, Confluence pages, or Atlassian links.
development
General coding conventions for any repository. Covers writing for the human who owns the code, clear naming, clean structure, comments that explain why, and following existing linting and formatting rules. Use when writing or modifying code in any language, especially for refactors, utilities, tests, and business logic. Prefer this as baseline guidance unless a more specific skill applies.
development
Web development conventions for Adynato projects. Covers image optimization with img4web, asset management, component patterns, styling, and performance best practices. Use when building or modifying web applications, adding images/assets, or creating UI components.
development
Web API development conventions for Adynato projects. Covers API routes, middleware, authentication, error handling, validation, and response formats for Next.js and Node.js backends. Use when building or modifying API endpoints, server actions, or backend logic.