# Test Report: First-Batch skills.sh Release

Date: 2026-06-15

## Scope

Validated the first 8 demand-led and scene-led skills:

- `image-edit`
- `product-image-generation`
- `image-to-video`
- `product-to-ad`
- `ad-video-generation`
- `product-demo-video`
- `ad-creative-images`
- `ugc-video-ads`

## Tests Run

### Real API Cost Guard

Live API tests are intentionally constrained to the cheapest useful parameters.

Default image test:

```json
{
  "model": "gpt-image-2",
  "size": "1:1",
  "resolution": "1K",
  "quality": "low",
  "n": 1
}
```

Explicit video test:

```json
{
  "model": "seedance-2.0-text-to-video",
  "duration": 4,
  "quality": "480p",
  "aspect_ratio": "16:9",
  "generate_audio": false
}
```

Video tests are not run by default. They require:

```bash
node scripts/real-api-smoke-test.mjs --video
```

### Static Validation

Command:

```bash
node scripts/validate-skills.mjs
```

Result:

```text
Validated 8 skills successfully.
```

Coverage:

- Skill directory list matches the first-batch plan.
- Every directory has `SKILL.md`.
- Frontmatter `name` matches directory slug.
- Required frontmatter fields exist: `name`, `displayName`, `description`, `homepage`, `license`.
- `skills.sh.json` uses the official schema URL and groups all 8 skills.
- Every skill includes required sections: use case, prerequisites, route table, default workflow, prompting tips, next token loop, safety, and see also.
- UTM format is canonical: `utm_source=skillssh&utm_medium=skill&utm_campaign=<skill-name>`.
- No first-batch file contains `utm_content`.
- No first-batch file uses model-word install slugs: `seedance-2` or `gpt-image-2`.
- Image skills include GPT Image 2 plus video handoff.
- Video skills include Seedance 2 plus variant/iteration loop.
- Full-funnel skill includes `GPT Image 2 -> Seedance 2`.

### skills CLI Smoke Install

Command:

```bash
node scripts/smoke-install-skills.mjs
```

Result:

```text
Smoke-installed 8 skills successfully.
```

Coverage:

- Runs the real `skills` CLI through `npx`.
- Uses a temporary project directory.
- Uses a temporary HOME and XDG config directory.
- Installs all 8 skills from the local repo with `--copy`.
- Confirms each installed skill has an installed `SKILL.md`.
- Confirms installed frontmatter contains the matching slug.
- Confirms `skills-lock.json` is created.
- Confirms every lockfile entry has `sourceType: local` and a `computedHash`.

## Remaining Upload-Time Check

After uploading to GitHub, run the remote install test once:

```bash
npx skills add EvoLinkAI/evolink-agent-skills --skill image-edit -g
```

Then repeat for the other 7 skills or install all by explicit slug list.

## Remote GitHub Validation

Status: completed after repository creation.

Repository:

```text
https://github.com/EvoLinkAI/evolink-agent-skills
```

Remote list command:

```bash
npx -y skills add EvoLinkAI/evolink-agent-skills --list --full-depth
```

Result:

```text
Found 8 skills
```

Remote install command:

```bash
npx -y skills add EvoLinkAI/evolink-agent-skills --skill image-edit product-image-generation image-to-video product-to-ad ad-video-generation product-demo-video ad-creative-images ugc-video-ads -y --copy
```

Result:

```text
Installed count: 8
```

Lockfile source validation:

```text
sourceType: github
source: EvoLinkAI/evolink-agent-skills
```

## Real API Validation

Status: passed.

Before the passing run, two test harness issues were found and fixed:

- The initial default image prompt was too product/marketing-specific for a smoke test and produced a misleading generation error. It was replaced with a simple geometric prompt.
- The script originally preserved an existing shell `EVOLINK_API_KEY` over `.env`. This caused an old invalid shell key to override the valid `.env` key. `.env` now overrides shell values by default, matching the repository's local test workflow.

### GPT Image 2 Minimal Smoke Test

Command:

```bash
node scripts/real-api-smoke-test.mjs --image
```

Payload:

```json
{
  "model": "gpt-image-2",
  "prompt": "A plain red square centered on a white background, simple geometric test image, no text",
  "size": "1:1",
  "resolution": "1K",
  "quality": "low",
  "n": 1
}
```

Result:

```text
Status: completed
Task: task-unified-1781525538-qbracls9
Credits reserved: 0.3436
Credits used: 0.3454
Output URL: https://files.evolink.ai/000BG2E93TVWN41W8S/images/2026/06/15/2451047b9af44e2489690ec81cfae03b.png
```

Local full report:

```text
test-results/real-api-image-2026-06-15T12-11-44-223Z.md
```

### Seedance 2 Minimal Smoke Test

Command:

```bash
node scripts/real-api-smoke-test.mjs --video
```

Payload:

```json
{
  "model": "seedance-2.0-text-to-video",
  "prompt": "A plain red ball slowly rolling from left to right on a white background, simple geometric test video, no text",
  "duration": 4,
  "quality": "480p",
  "aspect_ratio": "16:9",
  "generate_audio": false
}
```

Result:

```text
Status: completed
Task: task-unified-1781525566-3uesdxty
Credits reserved: 20.46
Credits used: 20.46
Output URL: https://files.evolink.ai/000BG2E93TVWN41W8S/videos/2026/06/15/851bcca3706a42e992a7e7a2ba048050.mp4
```

Local full report:

```text
test-results/real-api-video-2026-06-15T12-12-12-092Z.md
```
