IntentForge Release (Vercel)
Role
Produce deterministic release artifacts to deploy a Vite/React project to Vercel and generate a PR-ready summary that links IntentForge artifacts. This skill MUST NOT change application source code. It may write release artifacts only.
Always read (suite-local rules)
- •.claude/skills/intent-forge/shared/IF_GLOBAL_RULES.md
- •.claude/skills/intent-forge/shared/IF_ARTIFACT_SCHEMA.md
Assumed artifacts root
All run artifacts MUST live under:
- •.intent-forge/artifacts/
If this directory does not exist, STOP and ask the user to initialize the repo.
Inputs (files)
Required:
- •.intent-forge/artifacts/900_state/run_state.json
Optional if present:
- •.intent-forge/artifacts/000_intake/requirements.yaml
- •.intent-forge/artifacts/010_planning/architecture.yaml
- •.intent-forge/artifacts/030_implementation/implementation_log.yaml
- •.intent-forge/artifacts/040_testing/test_report.yaml
- •.intent-forge/artifacts/900_state/cost_report.md
- •.intent-forge/artifacts/900_state/cost_report.yaml
User-provided inputs (pasted text)
This skill supports best-effort parsing from pasted text for:
- •
vercelCLI output (to capture Preview URL and deployment id) - •
git remote -voutput (to capture repo origin URL) - •
gh pr createoutput (optional) to capture PR URL
If no CLI output is provided, URL fields MUST be null and instructions MUST be included.
Raw pasted text MUST be saved verbatim to:
- •.intent-forge/artifacts/050_release/release_raw.txt
Outputs (files to write)
You MUST write all of the following files:
- •.intent-forge/artifacts/050_release/deploy_plan.md
- •.intent-forge/artifacts/050_release/deploy_manifest.yaml
- •.intent-forge/artifacts/050_release/pr_body.md
- •.intent-forge/artifacts/050_release/release_raw.txt
You MUST NOT modify any other files.
Release scope
This skill produces:
- •A step-by-step Vercel deploy plan (preview + prod)
- •A structured deploy manifest capturing:
- •project name
- •framework
- •build commands
- •preview url (if available)
- •prod readiness checklist
- •A PR body template that auto-links IntentForge artifacts and (if available) Vercel preview URL
It does NOT:
- •push git branches
- •create PRs automatically
- •configure DNS
- •deploy on behalf of the user
Required YAML structure (deploy_manifest.yaml)
The YAML MUST follow this schema exactly (unknown values must be null or empty string):
release: project: name: "" repo_name: "" repo_remote_url: "" branch: "" vercel: framework: "vite-react" build_command: "npm run build" output_dir: "dist" preview_url: null production_url: null deployment_id: null org_scope: null readiness: tests_present: false tests_passed: null build_passed: null confidence_score: null release_recommendation: "" checklist: - item: "App runs locally (npm run dev)" status: "unknown|pass|fail" - item: "Build passes (npm run build)" status: "unknown|pass|fail" - item: "Screen share permission granted in browser" status: "unknown|pass|fail" - item: "OCR produces text on at least one sample screen" status: "unknown|pass|fail" - item: "Summary generated on stop" status: "unknown|pass|fail" intentforge_links: artifacts_root: ".intent-forge/artifacts" key_artifacts: - path: ".intent-forge/artifacts/000_intake/requirements.yaml" purpose: "Requirements captured from intent" - path: ".intent-forge/artifacts/010_planning/architecture.yaml" purpose: "Architecture + decisions" - path: ".intent-forge/artifacts/020_jira/jira_payload.json" purpose: "Jira import payload" - path: ".intent-forge/artifacts/030_implementation/implementation_log.yaml" purpose: "Implementation log" - path: ".intent-forge/artifacts/900_state/cost_report.md" purpose: "Closeout cost/time report"
How to populate fields
- •repo_name: best-effort from git top-level folder name
- •repo_remote_url: best-effort from pasted
git remote -vtext; else empty string - •branch: best-effort from
git rev-parse --abbrev-ref HEADif available in pasted output; else empty string - •build_passed: infer from implementation_log.yaml if it includes build status; else null
- •tests_present/tests_passed/confidence_score/release_recommendation: from test_report.yaml if present; else null/false
- •vercel.preview_url and deployment_id: best-effort parse from pasted
verceloutput; else null
deploy_plan.md requirements
deploy_plan.md MUST be concise and include:
- •Quick start:
npm i -g vercel+vercel login - •Preview deploy steps (vercel)
- •Production deploy steps (vercel --prod)
- •How to set output dir and build command if Vercel prompts
- •How to add custom domain (dashboard steps)
- •How to rollback (redeploy previous deployment or revert commit)
- •Where to paste CLI outputs so this skill can capture URLs next run
pr_body.md requirements
pr_body.md MUST include:
- •Summary of feature
- •Test/build status (best-effort)
- •Links section:
- •Vercel Preview URL (if present)
- •IntentForge artifacts list (relative paths)
- •Closeout report path
- •“Demo steps” section (start sharing, OCR, summary)
- •“Known issues / follow-ups” section (if any)
Chat output (MANDATORY)
Output ONLY this YAML and nothing else:
release: status: "ok|needs_input|error" wrote: - ".intent-forge/artifacts/050_release/deploy_plan.md" - ".intent-forge/artifacts/050_release/deploy_manifest.yaml" - ".intent-forge/artifacts/050_release/pr_body.md" - ".intent-forge/artifacts/050_release/release_raw.txt" missing_inputs: [] next_step: "" notes: []