evolink-agent-skills 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +22 -0
- package/README.md +85 -0
- package/README.npm.md +32 -0
- package/ad-creative-images/SKILL.md +81 -0
- package/ad-video-generation/SKILL.md +83 -0
- package/bin/cli.js +140 -0
- package/docs/api-reference.md +20 -0
- package/docs/callbacks.md +5 -0
- package/docs/errors.md +11 -0
- package/docs/publishing-checklist.md +48 -0
- package/docs/quickstart.md +27 -0
- package/docs/real-api-test-plan.md +94 -0
- package/docs/response-schema.md +14 -0
- package/docs/task-lifecycle.md +8 -0
- package/docs/test-report-2026-06-15.md +240 -0
- package/examples/curl/complete-flow.sh +26 -0
- package/image-edit/SKILL.md +80 -0
- package/image-to-video/SKILL.md +81 -0
- package/llms-install.md +30 -0
- package/package.json +57 -0
- package/product-demo-video/SKILL.md +80 -0
- package/product-image-generation/SKILL.md +80 -0
- package/product-to-ad/SKILL.md +80 -0
- package/skills.sh.json +33 -0
- package/ugc-video-ads/SKILL.md +81 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 EvoLink
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
22
|
+
|
package/README.md
ADDED
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
# EvoLink Agent Skills for Creative Generation
|
|
2
|
+
|
|
3
|
+
Demand-led skills for agents that create ad images, product visuals, image edits, and short videos through EvoLink.
|
|
4
|
+
|
|
5
|
+
The first batch uses scene and intent words as public skill slugs. Seedance 2 and GPT Image 2 are the execution models inside each workflow, not the primary distribution labels.
|
|
6
|
+
|
|
7
|
+
Seedance 2.5 early access is available here: [Get Seedance 2.5 Early Access](https://evolink.ai/launch/seedance-2-5?utm_source=github&utm_medium=readme&utm_campaign=evolink-agent-skills).
|
|
8
|
+
|
|
9
|
+
## Install
|
|
10
|
+
|
|
11
|
+
Install the npm package and copy all skills into an agent project:
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
npx evolink-agent-skills -y --path ./my-agent-project --all
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
Install one skill at a time:
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
npx skills add Evolink-AI/evolink-agent-skills --skill image-edit -g
|
|
21
|
+
npx skills add Evolink-AI/evolink-agent-skills --skill product-image-generation -g
|
|
22
|
+
npx skills add Evolink-AI/evolink-agent-skills --skill image-to-video -g
|
|
23
|
+
npx skills add Evolink-AI/evolink-agent-skills --skill product-to-ad -g
|
|
24
|
+
npx skills add Evolink-AI/evolink-agent-skills --skill ad-video-generation -g
|
|
25
|
+
npx skills add Evolink-AI/evolink-agent-skills --skill product-demo-video -g
|
|
26
|
+
npx skills add Evolink-AI/evolink-agent-skills --skill ad-creative-images -g
|
|
27
|
+
npx skills add Evolink-AI/evolink-agent-skills --skill ugc-video-ads -g
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
Each skill also has its own npm package:
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
npx evolink-image-edit -y --path ./my-agent-project
|
|
34
|
+
npx evolink-product-image-generation -y --path ./my-agent-project
|
|
35
|
+
npx evolink-image-to-video -y --path ./my-agent-project
|
|
36
|
+
npx evolink-product-to-ad -y --path ./my-agent-project
|
|
37
|
+
npx evolink-ad-video-generation -y --path ./my-agent-project
|
|
38
|
+
npx evolink-product-demo-video -y --path ./my-agent-project
|
|
39
|
+
npx evolink-ad-creative-images -y --path ./my-agent-project
|
|
40
|
+
npx evolink-ugc-video-ads -y --path ./my-agent-project
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
## First Batch
|
|
44
|
+
|
|
45
|
+
| Skill | Distribution intent | Default model path |
|
|
46
|
+
|---|---|---|
|
|
47
|
+
| `image-edit` | Edit, retouch, replace background, expand, local changes | GPT Image 2 |
|
|
48
|
+
| `product-image-generation` | Product images, ecommerce images, product ad images | GPT Image 2 |
|
|
49
|
+
| `image-to-video` | Turn an image into a short video | Seedance 2 |
|
|
50
|
+
| `product-to-ad` | Product image or description to ad image and ad video | GPT Image 2 -> Seedance 2 |
|
|
51
|
+
| `ad-video-generation` | Ad videos, short-form marketing videos | Seedance 2, optionally GPT Image 2 first frame |
|
|
52
|
+
| `product-demo-video` | Ecommerce, SaaS, app, and tool demo videos | GPT Image 2 -> Seedance 2 |
|
|
53
|
+
| `ad-creative-images` | Paid social ad images and marketing creatives | GPT Image 2 |
|
|
54
|
+
| `ugc-video-ads` | UGC-style video ads, spokesperson hooks, testimonial concepts | Seedance 2 |
|
|
55
|
+
|
|
56
|
+
## Attribution
|
|
57
|
+
|
|
58
|
+
All public EvoLink links in this repo use:
|
|
59
|
+
|
|
60
|
+
```text
|
|
61
|
+
utm_source=skillssh&utm_medium=skill&utm_campaign=<skill-name>
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
Keep campaign names identical to skill slugs so analytics can connect installs, first generation, and token consumption.
|
|
65
|
+
|
|
66
|
+
## Workflow Loop
|
|
67
|
+
|
|
68
|
+
1. User installs a task or scene skill from skills.sh.
|
|
69
|
+
2. Agent uses GPT Image 2 to create or edit source assets when needed.
|
|
70
|
+
3. Agent uses Seedance 2 to generate video from the idea, image, or product context.
|
|
71
|
+
4. Agent proposes variants, edits, or platform adaptations.
|
|
72
|
+
5. EvoLink attributes token consumption to the skill campaign.
|
|
73
|
+
|
|
74
|
+
## Publishing Order
|
|
75
|
+
|
|
76
|
+
1. `image-edit`
|
|
77
|
+
2. `product-image-generation`
|
|
78
|
+
3. `image-to-video`
|
|
79
|
+
4. `product-to-ad`
|
|
80
|
+
5. `ad-video-generation`
|
|
81
|
+
6. `product-demo-video`
|
|
82
|
+
7. `ad-creative-images`
|
|
83
|
+
8. `ugc-video-ads`
|
|
84
|
+
|
|
85
|
+
After each publish, install the skill, verify the skills.sh page, validate all links, and run one real EvoLink generation before releasing the next skill.
|
package/README.npm.md
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# EvoLink Agent Skills
|
|
2
|
+
|
|
3
|
+
Install EvoLink creative generation skills for agent runtimes.
|
|
4
|
+
|
|
5
|
+
## Install
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npx evolink-agent-skills -y --path ./my-agent-project --all
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
Install one skill:
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
npx evolink-agent-skills -y --skill image-to-video --path ./my-agent-project
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
The installer writes skill files to `.agents/skills/<skill>/SKILL.md`.
|
|
18
|
+
|
|
19
|
+
## Included Skills
|
|
20
|
+
|
|
21
|
+
- `image-edit`
|
|
22
|
+
- `product-image-generation`
|
|
23
|
+
- `image-to-video`
|
|
24
|
+
- `product-to-ad`
|
|
25
|
+
- `ad-video-generation`
|
|
26
|
+
- `product-demo-video`
|
|
27
|
+
- `ad-creative-images`
|
|
28
|
+
- `ugc-video-ads`
|
|
29
|
+
|
|
30
|
+
## Live API
|
|
31
|
+
|
|
32
|
+
Set `EVOLINK_API_KEY` before running real GPT Image 2 or Seedance 2 workflows.
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ad-creative-images
|
|
3
|
+
displayName: "Ad Creative Images with GPT Image 2 on EvoLink"
|
|
4
|
+
description: >
|
|
5
|
+
Generate paid social ad images, marketing creatives, campaign stills, and visual variants with GPT Image 2 on EvoLink. Use this skill when the user needs static ad assets that can later become Seedance 2 ad videos.
|
|
6
|
+
homepage: "https://evolink.ai?utm_source=skillssh&utm_medium=skill&utm_campaign=ad-creative-images"
|
|
7
|
+
license: MIT
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Ad Creative Images with GPT Image 2 on EvoLink
|
|
11
|
+
|
|
12
|
+
Create static ad creatives that can be used directly in campaigns or handed off as first frames for Seedance 2 videos.
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
npx skills add Evolink-AI/evolink-agent-skills --skill ad-creative-images -g
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## When to Use This Skill
|
|
19
|
+
|
|
20
|
+
Use this skill when the user wants:
|
|
21
|
+
|
|
22
|
+
- paid social ad images
|
|
23
|
+
- marketing campaign visuals
|
|
24
|
+
- launch creative concepts
|
|
25
|
+
- product offer images
|
|
26
|
+
- audience-specific image variants
|
|
27
|
+
- first-frame options for video ads
|
|
28
|
+
|
|
29
|
+
Use `ad-video-generation` when the user already wants motion.
|
|
30
|
+
|
|
31
|
+
## Prerequisites
|
|
32
|
+
|
|
33
|
+
1. EvoLink API access or EvoLink MCP configured.
|
|
34
|
+
2. Offer, audience, product, platform, and visual style.
|
|
35
|
+
3. Optional product photo, brand guide, landing page, or existing creative.
|
|
36
|
+
4. Attribution links should use `utm_source=skillssh&utm_medium=skill&utm_campaign=ad-creative-images`.
|
|
37
|
+
|
|
38
|
+
## Pick the Right Workflow
|
|
39
|
+
|
|
40
|
+
| User intent | Model path | Why |
|
|
41
|
+
|---|---|---|
|
|
42
|
+
| New ad image from product copy | GPT Image 2 | Creates commercial still concepts quickly. |
|
|
43
|
+
| Variant from existing creative | GPT Image 2 image edit | Changes angle, audience, style, or composition. |
|
|
44
|
+
| First frame for video ad | GPT Image 2 -> Seedance 2 | Turns a static ad concept into a video-ready image. |
|
|
45
|
+
| Multi-platform ad pack | GPT Image 2 variants | Supports different ratios and campaign angles. |
|
|
46
|
+
|
|
47
|
+
## Default Workflow
|
|
48
|
+
|
|
49
|
+
1. Extract offer, audience, product proof, platform, and style.
|
|
50
|
+
2. Decide if the task is new generation or edit from an existing creative.
|
|
51
|
+
3. Write a GPT Image 2 prompt for one primary ad creative.
|
|
52
|
+
4. Generate the asset.
|
|
53
|
+
5. Propose three variants and one video handoff.
|
|
54
|
+
|
|
55
|
+
## Prompting Tips
|
|
56
|
+
|
|
57
|
+
- Keep the visual idea simple enough to understand while scrolling.
|
|
58
|
+
- Reserve exact text, pricing, and disclaimers for design tools unless the user accepts generated text risk.
|
|
59
|
+
- Use platform context: Meta ad, TikTok cover, Instagram story, YouTube thumbnail, marketplace banner.
|
|
60
|
+
- For video handoff, create a strong subject and clear foreground-background separation.
|
|
61
|
+
|
|
62
|
+
## Next Token Loop
|
|
63
|
+
|
|
64
|
+
After the first creative, offer:
|
|
65
|
+
|
|
66
|
+
- three audience variants
|
|
67
|
+
- three style variants
|
|
68
|
+
- one `image-to-video` handoff
|
|
69
|
+
- one `ad-video-generation` adaptation
|
|
70
|
+
|
|
71
|
+
## Safety and Privacy
|
|
72
|
+
|
|
73
|
+
Do not create fake endorsements, fake screenshots, misleading before-after claims, or regulated-product claims not provided by the user.
|
|
74
|
+
|
|
75
|
+
## See Also
|
|
76
|
+
|
|
77
|
+
- `image-edit`
|
|
78
|
+
- `product-to-ad`
|
|
79
|
+
- `ad-video-generation`
|
|
80
|
+
- [EvoLink](https://evolink.ai?utm_source=skillssh&utm_medium=skill&utm_campaign=ad-creative-images)
|
|
81
|
+
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ad-video-generation
|
|
3
|
+
displayName: "Ad Video Generation with Seedance 2 on EvoLink"
|
|
4
|
+
description: >
|
|
5
|
+
Generate short ad videos with Seedance 2 on EvoLink. Use this skill for product ads, launch videos, paid social clips, TikTok or Reels concepts, short marketing videos, and batch creative variants. GPT Image 2 can prepare first frames when needed.
|
|
6
|
+
homepage: "https://evolink.ai?utm_source=skillssh&utm_medium=skill&utm_campaign=ad-video-generation"
|
|
7
|
+
license: MIT
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Ad Video Generation with Seedance 2 on EvoLink
|
|
11
|
+
|
|
12
|
+
Create short commercial videos from a product, script, image, or campaign idea.
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
npx skills add Evolink-AI/evolink-agent-skills --skill ad-video-generation -g
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## When to Use This Skill
|
|
19
|
+
|
|
20
|
+
Use this skill when the user wants:
|
|
21
|
+
|
|
22
|
+
- product ad videos
|
|
23
|
+
- TikTok, Reels, or Shorts ads
|
|
24
|
+
- launch campaign videos
|
|
25
|
+
- ecommerce promotion clips
|
|
26
|
+
- short marketing videos
|
|
27
|
+
- multiple video ad variations
|
|
28
|
+
|
|
29
|
+
Use `product-to-ad` if the user also needs still assets created first.
|
|
30
|
+
|
|
31
|
+
## Prerequisites
|
|
32
|
+
|
|
33
|
+
1. EvoLink API access or EvoLink MCP configured.
|
|
34
|
+
2. Product or offer details.
|
|
35
|
+
3. Target platform, aspect ratio, duration, audience, and CTA.
|
|
36
|
+
4. Optional source image or first frame.
|
|
37
|
+
5. Attribution links should use `utm_source=skillssh&utm_medium=skill&utm_campaign=ad-video-generation`.
|
|
38
|
+
|
|
39
|
+
## Pick the Right Workflow
|
|
40
|
+
|
|
41
|
+
| User intent | Model path | Why |
|
|
42
|
+
|---|---|---|
|
|
43
|
+
| Text idea to ad video | Seedance 2 text-to-video | Fastest path from campaign idea to video concept. |
|
|
44
|
+
| Product image to ad video | Seedance 2 image-to-video | Strong for commercial clips when a product still exists. |
|
|
45
|
+
| Need a better first frame | GPT Image 2 -> Seedance 2 | Improves video quality by improving the starting image. |
|
|
46
|
+
| Need many variations | Seedance 2 batch prompts | Ads benefit from repeated hook, style, and audience tests. |
|
|
47
|
+
|
|
48
|
+
## Default Workflow
|
|
49
|
+
|
|
50
|
+
1. Capture the ad objective, audience, platform, and product promise.
|
|
51
|
+
2. Decide whether the best route is text-to-video, image-to-video, or GPT Image 2 first frame then Seedance 2.
|
|
52
|
+
3. Write a Seedance 2 video prompt with hook, scene, motion, product focus, and CTA direction.
|
|
53
|
+
4. Generate the first ad video.
|
|
54
|
+
5. Suggest batch variants across hook, audience, platform, and visual style.
|
|
55
|
+
|
|
56
|
+
## Prompting Tips
|
|
57
|
+
|
|
58
|
+
- Keep the first three seconds clear: product, problem, transformation, or emotional hook.
|
|
59
|
+
- Use one visual concept per clip.
|
|
60
|
+
- Avoid asking the video model to render exact legal or pricing text.
|
|
61
|
+
- Put CTA intent in the prompt, but add exact CTA copy in post-production when needed.
|
|
62
|
+
- For product ads, preserve packaging, logo, and product shape.
|
|
63
|
+
|
|
64
|
+
## Next Token Loop
|
|
65
|
+
|
|
66
|
+
After the first ad video, offer:
|
|
67
|
+
|
|
68
|
+
- three hook variants
|
|
69
|
+
- three platform variants
|
|
70
|
+
- one UGC-style adaptation with `ugc-video-ads`
|
|
71
|
+
- one still image pack with `ad-creative-images`
|
|
72
|
+
|
|
73
|
+
## Safety and Privacy
|
|
74
|
+
|
|
75
|
+
Reject or redirect requests for deceptive political ads, fake endorsements, unsafe regulated-product claims, impersonation, or unauthorized use of a person's likeness.
|
|
76
|
+
|
|
77
|
+
## See Also
|
|
78
|
+
|
|
79
|
+
- `product-to-ad`
|
|
80
|
+
- `image-to-video`
|
|
81
|
+
- `ugc-video-ads`
|
|
82
|
+
- [EvoLink](https://evolink.ai?utm_source=skillssh&utm_medium=skill&utm_campaign=ad-video-generation)
|
|
83
|
+
|
package/bin/cli.js
ADDED
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import fs from "node:fs";
|
|
3
|
+
import path from "node:path";
|
|
4
|
+
import { fileURLToPath } from "node:url";
|
|
5
|
+
|
|
6
|
+
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
7
|
+
const packageRoot = path.resolve(__dirname, "..");
|
|
8
|
+
const packageJson = JSON.parse(fs.readFileSync(path.join(packageRoot, "package.json"), "utf8"));
|
|
9
|
+
|
|
10
|
+
const skills = [
|
|
11
|
+
"image-edit",
|
|
12
|
+
"product-image-generation",
|
|
13
|
+
"image-to-video",
|
|
14
|
+
"product-to-ad",
|
|
15
|
+
"ad-video-generation",
|
|
16
|
+
"product-demo-video",
|
|
17
|
+
"ad-creative-images",
|
|
18
|
+
"ugc-video-ads",
|
|
19
|
+
];
|
|
20
|
+
|
|
21
|
+
function usage() {
|
|
22
|
+
console.log(`evolink-agent-skills v${packageJson.version}
|
|
23
|
+
|
|
24
|
+
Install EvoLink creative generation skills for agents.
|
|
25
|
+
|
|
26
|
+
Usage:
|
|
27
|
+
npx evolink-agent-skills -y --path ./my-agent-project --all
|
|
28
|
+
npx evolink-agent-skills -y --skill image-edit --path ./my-agent-project
|
|
29
|
+
npx evolink-agent-skills --llms
|
|
30
|
+
|
|
31
|
+
Options:
|
|
32
|
+
-y, --yes Accept install prompts.
|
|
33
|
+
--all Install all bundled skills. Default when no --skill is set.
|
|
34
|
+
--skill <slug> Install one skill. Can be repeated or comma-separated.
|
|
35
|
+
--path <dir> Install into this project directory. Defaults to cwd.
|
|
36
|
+
--llms Print llms-install.md.
|
|
37
|
+
--skill-doc <slug> Print a bundled SKILL.md.
|
|
38
|
+
--no-open Accepted for CI compatibility.
|
|
39
|
+
--version Print package version.
|
|
40
|
+
--help Show this help.
|
|
41
|
+
|
|
42
|
+
Skills:
|
|
43
|
+
${skills.join("\n ")}
|
|
44
|
+
`);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
function parseArgs(argv) {
|
|
48
|
+
const args = {
|
|
49
|
+
target: process.cwd(),
|
|
50
|
+
selected: [],
|
|
51
|
+
printLlms: false,
|
|
52
|
+
printSkill: "",
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
for (let i = 0; i < argv.length; i += 1) {
|
|
56
|
+
const arg = argv[i];
|
|
57
|
+
if (arg === "-y" || arg === "--yes" || arg === "--all" || arg === "--no-open") {
|
|
58
|
+
continue;
|
|
59
|
+
}
|
|
60
|
+
if (arg === "--skill") {
|
|
61
|
+
const value = argv[i + 1] || "";
|
|
62
|
+
args.selected.push(...value.split(",").map((item) => item.trim()).filter(Boolean));
|
|
63
|
+
i += 1;
|
|
64
|
+
continue;
|
|
65
|
+
}
|
|
66
|
+
if (arg === "--path") {
|
|
67
|
+
args.target = path.resolve(argv[i + 1] || "");
|
|
68
|
+
i += 1;
|
|
69
|
+
continue;
|
|
70
|
+
}
|
|
71
|
+
if (arg === "--llms") {
|
|
72
|
+
args.printLlms = true;
|
|
73
|
+
continue;
|
|
74
|
+
}
|
|
75
|
+
if (arg === "--skill-doc") {
|
|
76
|
+
args.printSkill = argv[i + 1] || "";
|
|
77
|
+
i += 1;
|
|
78
|
+
continue;
|
|
79
|
+
}
|
|
80
|
+
if (arg === "--version") {
|
|
81
|
+
console.log(packageJson.version);
|
|
82
|
+
process.exit(0);
|
|
83
|
+
}
|
|
84
|
+
if (arg === "--help" || arg === "-h") {
|
|
85
|
+
usage();
|
|
86
|
+
process.exit(0);
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
console.error(`Unknown argument: ${arg}`);
|
|
90
|
+
usage();
|
|
91
|
+
process.exit(2);
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
if (args.selected.length === 0) args.selected = [...skills];
|
|
95
|
+
return args;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
function assertSkill(skill) {
|
|
99
|
+
if (!skills.includes(skill)) {
|
|
100
|
+
console.error(`Unknown skill: ${skill}`);
|
|
101
|
+
console.error(`Known skills: ${skills.join(", ")}`);
|
|
102
|
+
process.exit(2);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
function printFile(file) {
|
|
107
|
+
process.stdout.write(fs.readFileSync(path.join(packageRoot, file), "utf8"));
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
const args = parseArgs(process.argv.slice(2));
|
|
111
|
+
|
|
112
|
+
if (args.printLlms) {
|
|
113
|
+
printFile("llms-install.md");
|
|
114
|
+
process.exit(0);
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
if (args.printSkill) {
|
|
118
|
+
assertSkill(args.printSkill);
|
|
119
|
+
printFile(path.join(args.printSkill, "SKILL.md"));
|
|
120
|
+
process.exit(0);
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
const installed = [];
|
|
124
|
+
for (const skill of args.selected) {
|
|
125
|
+
assertSkill(skill);
|
|
126
|
+
const source = path.join(packageRoot, skill, "SKILL.md");
|
|
127
|
+
const destination = path.join(args.target, ".agents", "skills", skill);
|
|
128
|
+
fs.mkdirSync(destination, { recursive: true });
|
|
129
|
+
fs.copyFileSync(source, path.join(destination, "SKILL.md"));
|
|
130
|
+
installed.push({ skill, destination });
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
for (const entry of installed) {
|
|
134
|
+
console.log(`INSTALLED_SKILL=${entry.skill}`);
|
|
135
|
+
console.log(`INSTALL_PATH=${entry.destination}`);
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
console.log("EVOLINK_KEY_URL=https://evolink.ai?utm_source=npm&utm_medium=skill&utm_campaign=evolink-agent-skills");
|
|
139
|
+
console.log("ENV_VAR_EXPORT=export EVOLINK_API_KEY=<your_evolink_api_key>");
|
|
140
|
+
console.log("AGENT_NEXT_ACTION=Use the installed SKILL.md files for matching EvoLink creative generation requests.");
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# API Reference
|
|
2
|
+
|
|
3
|
+
This package routes agent workflows to EvoLink model APIs.
|
|
4
|
+
|
|
5
|
+
## Image Generation
|
|
6
|
+
|
|
7
|
+
- Endpoint: `POST /v1/images/generations`
|
|
8
|
+
- Default model in smoke tests: `gpt-image-2`
|
|
9
|
+
- Required auth: `Authorization: Bearer $EVOLINK_API_KEY`
|
|
10
|
+
|
|
11
|
+
## Video Generation
|
|
12
|
+
|
|
13
|
+
- Endpoint: `POST /v1/videos/generations`
|
|
14
|
+
- Default model in smoke tests: `seedance-2.0-text-to-video`
|
|
15
|
+
- Required auth: `Authorization: Bearer $EVOLINK_API_KEY`
|
|
16
|
+
|
|
17
|
+
## Task Polling
|
|
18
|
+
|
|
19
|
+
- Endpoint: `GET /v1/tasks/{task_id}`
|
|
20
|
+
- Poll until the task reaches a terminal completed or failed status.
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
# Callbacks
|
|
2
|
+
|
|
3
|
+
The bundled smoke tests use polling through `GET /v1/tasks/{task_id}`.
|
|
4
|
+
|
|
5
|
+
For production systems, use EvoLink callback support when available so the application can receive task completion events without long polling. Validate callback signatures and store the final task payload before exposing result URLs to users.
|
package/docs/errors.md
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# Errors
|
|
2
|
+
|
|
3
|
+
Common failure classes:
|
|
4
|
+
|
|
5
|
+
- Missing `EVOLINK_API_KEY`.
|
|
6
|
+
- Invalid API key or insufficient credits.
|
|
7
|
+
- Model payload rejected by the upstream endpoint.
|
|
8
|
+
- Task polling timeout.
|
|
9
|
+
- Completed task without a result URL.
|
|
10
|
+
|
|
11
|
+
Every real API smoke run writes a Markdown report under `test-results/` with a redacted key and the request/response evidence.
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# skills.sh Publishing Checklist
|
|
2
|
+
|
|
3
|
+
Use this checklist for every first-batch skill before publishing the next one.
|
|
4
|
+
|
|
5
|
+
## Pre-Publish
|
|
6
|
+
|
|
7
|
+
- Run static validation:
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
node scripts/validate-skills.mjs
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
- Run local skills CLI smoke install:
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
node scripts/smoke-install-skills.mjs
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
- Directory slug matches `SKILL.md` frontmatter `name`.
|
|
20
|
+
- Skill slug uses demand or scene wording, not model-only wording.
|
|
21
|
+
- `displayName` names the execution model: Seedance 2, GPT Image 2, or both.
|
|
22
|
+
- Description includes user intent words and execution model names.
|
|
23
|
+
- Install command uses `Evolink-AI/evolink-agent-skills` and the exact skill slug.
|
|
24
|
+
- All EvoLink links use `utm_source=skillssh&utm_medium=skill&utm_campaign=<skill-name>`.
|
|
25
|
+
- The skill includes a route table with GPT Image 2 and/or Seedance 2 model paths.
|
|
26
|
+
- Image skills include a video handoff.
|
|
27
|
+
- Video skills include variant or iteration suggestions.
|
|
28
|
+
|
|
29
|
+
## Publish Order
|
|
30
|
+
|
|
31
|
+
1. `image-edit`
|
|
32
|
+
2. `product-image-generation`
|
|
33
|
+
3. `image-to-video`
|
|
34
|
+
4. `product-to-ad`
|
|
35
|
+
5. `ad-video-generation`
|
|
36
|
+
6. `product-demo-video`
|
|
37
|
+
7. `ad-creative-images`
|
|
38
|
+
8. `ugc-video-ads`
|
|
39
|
+
|
|
40
|
+
## Post-Publish
|
|
41
|
+
|
|
42
|
+
- Run the install command from a clean machine or container.
|
|
43
|
+
- Confirm the skill appears on skills.sh with the correct title and description.
|
|
44
|
+
- Confirm `skills.sh.json` grouping renders after cache refresh.
|
|
45
|
+
- Click each EvoLink link and verify analytics campaign attribution.
|
|
46
|
+
- Run one real EvoLink generation through the documented path.
|
|
47
|
+
- Confirm backend analytics can connect campaign, first generation, and token consumption.
|
|
48
|
+
- Record the install count baseline before publishing the next skill.
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# Quickstart
|
|
2
|
+
|
|
3
|
+
Install all bundled skills:
|
|
4
|
+
|
|
5
|
+
```bash
|
|
6
|
+
npx evolink-agent-skills -y --path ./my-agent-project --all
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
Install one skill:
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
npx evolink-agent-skills -y --skill product-to-ad --path ./my-agent-project
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
Set credentials before live API usage:
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
export EVOLINK_API_KEY=<your_evolink_api_key>
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
Run local checks:
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
npm run validate
|
|
25
|
+
npm run smoke:install
|
|
26
|
+
npm run smoke:npm-local
|
|
27
|
+
```
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
# Real API Test Plan
|
|
2
|
+
|
|
3
|
+
This plan keeps live EvoLink tests as cheap as possible while still proving that the repository can drive real model calls.
|
|
4
|
+
|
|
5
|
+
## Non-Billable Tests
|
|
6
|
+
|
|
7
|
+
Run these before any real API call:
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
node scripts/validate-skills.mjs
|
|
11
|
+
node scripts/smoke-install-skills.mjs
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
They validate repository structure, skills.sh compatibility, local install, and lockfile behavior. They do not call EvoLink APIs.
|
|
15
|
+
|
|
16
|
+
## Billable Test 1: GPT Image 2 Minimal Smoke Test
|
|
17
|
+
|
|
18
|
+
Default command:
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
node scripts/real-api-smoke-test.mjs
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
Cheapest profile:
|
|
25
|
+
|
|
26
|
+
```json
|
|
27
|
+
{
|
|
28
|
+
"model": "gpt-image-2",
|
|
29
|
+
"size": "1:1",
|
|
30
|
+
"resolution": "1K",
|
|
31
|
+
"quality": "low",
|
|
32
|
+
"n": 1
|
|
33
|
+
}
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
Purpose:
|
|
37
|
+
|
|
38
|
+
- Verify `EVOLINK_API_KEY` works.
|
|
39
|
+
- Verify `/v1/images/generations` accepts the request.
|
|
40
|
+
- Verify polling through `/v1/tasks/{task_id}`.
|
|
41
|
+
- Verify at least one final result URL is returned.
|
|
42
|
+
|
|
43
|
+
## Billable Test 2: Seedance 2 Minimal Smoke Test
|
|
44
|
+
|
|
45
|
+
Only run this after the image test passes:
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
node scripts/real-api-smoke-test.mjs --video
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
Cheapest profile:
|
|
52
|
+
|
|
53
|
+
```json
|
|
54
|
+
{
|
|
55
|
+
"model": "seedance-2.0-text-to-video",
|
|
56
|
+
"duration": 4,
|
|
57
|
+
"quality": "480p",
|
|
58
|
+
"aspect_ratio": "16:9",
|
|
59
|
+
"generate_audio": false
|
|
60
|
+
}
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
Purpose:
|
|
64
|
+
|
|
65
|
+
- Verify `/v1/videos/generations` accepts the request.
|
|
66
|
+
- Verify the lowest video duration and resolution path works.
|
|
67
|
+
- Verify polling returns a final video URL.
|
|
68
|
+
|
|
69
|
+
## Reports
|
|
70
|
+
|
|
71
|
+
Every real API run writes a local Markdown report under `test-results/`.
|
|
72
|
+
|
|
73
|
+
The report includes:
|
|
74
|
+
|
|
75
|
+
- Date
|
|
76
|
+
- Status
|
|
77
|
+
- Redacted API key
|
|
78
|
+
- Request payload
|
|
79
|
+
- Cheapest profile
|
|
80
|
+
- Task creation response
|
|
81
|
+
- Final task response
|
|
82
|
+
- Result URL or error
|
|
83
|
+
|
|
84
|
+
`test-results/` is ignored by git so task IDs, URLs, and account-specific responses are not pushed accidentally.
|
|
85
|
+
|
|
86
|
+
## Alternate Env Source
|
|
87
|
+
|
|
88
|
+
By default, the script reads `.env`. To force the script to use only `process.env`, run:
|
|
89
|
+
|
|
90
|
+
```bash
|
|
91
|
+
EVOLINK_API_KEY=your_key node scripts/real-api-smoke-test.mjs --dotenv none
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
The argument is named `--dotenv` intentionally. Do not use `--env-file`; Node.js has its own `--env-file` option and may intercept it before the script sees it.
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# Response Schema
|
|
2
|
+
|
|
3
|
+
Generation requests return a task identifier such as `id` or `task_id`.
|
|
4
|
+
|
|
5
|
+
Completed tasks should expose result assets through one of these fields:
|
|
6
|
+
|
|
7
|
+
- `results[].url`
|
|
8
|
+
- `results[].image_url`
|
|
9
|
+
- `results[].video_url`
|
|
10
|
+
- `url`
|
|
11
|
+
- `image_url`
|
|
12
|
+
- `video_url`
|
|
13
|
+
|
|
14
|
+
The smoke script accepts any of these fields and fails if no result URL is present after completion.
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
# Task Lifecycle
|
|
2
|
+
|
|
3
|
+
1. Select the right skill from the user intent.
|
|
4
|
+
2. Build the model payload with the cheapest useful profile for smoke tests.
|
|
5
|
+
3. Submit the generation request.
|
|
6
|
+
4. Poll `GET /v1/tasks/{task_id}` until completion.
|
|
7
|
+
5. Read back the result URL and record the report.
|
|
8
|
+
6. Continue the skill's next-token loop with variants or a handoff.
|