@sogni-ai/sogni-creative-agent-skill 3.3.5 → 3.5.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/CHANGELOG.md +248 -0
- package/README.md +89 -26
- package/SKILL.md +142 -1107
- package/generated/creative-agent-runtime.mjs +50 -18
- package/llm.txt +49 -52
- package/node-version-check.mjs +37 -0
- package/openclaw.plugin.json +3 -3
- package/package.json +14 -7
- package/references/hosted-api.md +204 -0
- package/references/models.md +116 -0
- package/references/openclaw-config.md +80 -0
- package/references/personas-memory.md +124 -0
- package/references/video-editing.md +169 -0
- package/references/video-prompting.md +92 -0
- package/scripts/check-creative-agent-runtime.mjs +21 -3
- package/scripts/sync-creative-agent-runtime.mjs +98 -0
- package/scripts/sync-openclaw-plugin.mjs +12 -2
- package/skill-package.json +1 -1
- package/skills/README.md +42 -0
- package/skills/app_settings.md +19 -0
- package/skills/asset_reference_management.md +37 -0
- package/skills/composition_planning.md +33 -0
- package/skills/image_editing.md +30 -0
- package/skills/image_generation.md +19 -0
- package/skills/media_analysis.md +19 -0
- package/skills/music_generation.md +15 -0
- package/skills/persona_management.md +21 -0
- package/skills/quality_audit.md +17 -0
- package/skills/session_control.md +22 -0
- package/skills/video_editing.md +40 -0
- package/skills/video_generation.md +20 -0
- package/sogni-agent.mjs +1004 -116
- package/ssrf-guard.mjs +61 -3
- package/update-check.mjs +114 -0
- package/version.mjs +1 -1
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,248 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to this project are documented in this file.
|
|
4
|
+
|
|
5
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
6
|
+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
|
+
|
|
8
|
+
## [3.5.0] - 2026-06-11
|
|
9
|
+
|
|
10
|
+
### Added
|
|
11
|
+
|
|
12
|
+
- **`sogni-agent doctor` (also `--doctor`).** One deterministic install health check: Node floor, credentials
|
|
13
|
+
presence and file permissions, config-dir writability, ffmpeg discovery, a live auth + balance probe with a
|
|
14
|
+
timeout, and version freshness. `--json` emits a structured `checks` array; exit 1 when a required check fails.
|
|
15
|
+
Every install path in the docs now ends with `sogni-agent doctor` as the verification gate.
|
|
16
|
+
- **Upgrade UX.** `--whats-new [since-version]` prints the bundled CHANGELOG entries (CHANGELOG.md now ships in
|
|
17
|
+
the npm tarball and `self-update` points at it after upgrading), and `--snooze-update` pauses the update
|
|
18
|
+
reminder with escalating backoff (1 day → 2 days → 1 week, reset by a newer release) instead of re-nagging
|
|
19
|
+
every 24 hours.
|
|
20
|
+
- **SSRF-guarded downloads.** New `fetchSafeUrl` in `ssrf-guard.mjs` fetches with manual redirects and re-validates
|
|
21
|
+
every hop, so a vetted public media URL can no longer redirect a download to a private/metadata address. Remote
|
|
22
|
+
`--ref`/`--ref-audio`/`--ref-video` fetches use it.
|
|
23
|
+
- **CI.** GitHub Actions workflow running the unit suite on Node 22.11.0 and 24, verifying npm tarball contents,
|
|
24
|
+
and validating the plugin manifests. `npm run sync:version` stamps the package.json version into every manifest
|
|
25
|
+
(`version.mjs`, `SKILL.md`, `.claude-plugin/plugin.json`, `openclaw.plugin.json`), enforced by a new
|
|
26
|
+
docs-consistency test suite that also fails on any documented flag missing from the CLI parser.
|
|
27
|
+
|
|
28
|
+
### Changed
|
|
29
|
+
|
|
30
|
+
- **SKILL.md restructured for progressive disclosure.** The always-loaded core shrank from 1,338 lines (~10k
|
|
31
|
+
words) to ~300 lines (~2.6k words) — every routing rule (photobooth-vs-context-edit, LTX prompt rewrite,
|
|
32
|
+
high-res routing, PWD output convention, insufficient-funds script, media/shell security rules) stays inline,
|
|
33
|
+
while deep guides moved to `references/` (video-prompting, video-editing, hosted-api, models, personas-memory,
|
|
34
|
+
openclaw-config) read on demand. `references/` and `skills/` now ship in the npm tarball, the Claude plugin,
|
|
35
|
+
and the OpenClaw link surface. Verified with a 7-scenario agent battery against the new layout.
|
|
36
|
+
- **Install docs are now accurate per platform.** Added the missing OpenAI Codex CLI section
|
|
37
|
+
(`~/.codex/skills/`), a real Hermes Agent section (`~/.hermes/skills/media/` + `/reset`), the ChatGPT
|
|
38
|
+
Custom-GPT path the installer prints, an explicit note that the npx installer does not configure OpenClaw, and
|
|
39
|
+
"pick one registration" guidance for Claude Code (plugin or personal skill, not both). The OpenClaw install
|
|
40
|
+
command is now `openclaw plugins install npm:@sogni-ai/sogni-creative-agent-skill` — the bare unscoped name
|
|
41
|
+
never resolved the scoped npm package.
|
|
42
|
+
- **OpenClaw branding modernized.** Frontmatter metadata key `clawdbot:` → `openclaw:`; `--list-media` now
|
|
43
|
+
defaults to `~/.openclaw/media/inbound` with automatic fallback to the legacy `~/.clawdbot/media/inbound`;
|
|
44
|
+
the ClawHub install hook no longer overwrites `package.json` in a git checkout (guarded copy).
|
|
45
|
+
- **`--json` stdout is now strictly machine-parseable.** Durable-workflow SSE progress frames stream to stderr in
|
|
46
|
+
JSON mode; `--last --json` wraps the record in a `{ "success": true, ... }` envelope and exits 1 with
|
|
47
|
+
`errorCode: "NO_LAST_RENDER"` when nothing has been rendered (previously raw record / exit 0). Human-mode
|
|
48
|
+
errors now print the same classified, friendly message JSON consumers get.
|
|
49
|
+
- **Paid-batch safety cap.** `-n/--count` is capped at 16 outputs per invocation (a typo like `-n 1000` no longer
|
|
50
|
+
launches a thousand paid renders); raise deliberately with `SOGNI_MAX_COUNT`. OpenClaw `defaultCount` is
|
|
51
|
+
clamped the same way.
|
|
52
|
+
- `npm test` now runs the offline unit suites only and works without the private `sogni-creative-agent` sibling
|
|
53
|
+
(the runtime freshness check skips with a warning; publishing still hard-requires it via `prepack`).
|
|
54
|
+
Integration tests are strictly opt-in: `SOGNI_INTEGRATION=1` / `npm run test:integration` — a `SOGNI_API_KEY`
|
|
55
|
+
in the environment no longer causes plain `npm test` to submit real paid GPU jobs.
|
|
56
|
+
- `engines.node` raised to `>=22.11.0` to match the runtime guard (Node 22.0–22.10 previously passed `npm
|
|
57
|
+
install` and then hard-exited at first run).
|
|
58
|
+
|
|
59
|
+
### Fixed
|
|
60
|
+
|
|
61
|
+
- **Ctrl-C and temp-file hygiene.** The CLI now handles SIGINT/SIGTERM/SIGHUP (conventional exit codes) and
|
|
62
|
+
removes every temporary directory it created on exit — interrupting a long video job no longer orphans
|
|
63
|
+
directories under the OS temp dir, and the multi-angle / loop flows no longer leak a temp dir on every run.
|
|
64
|
+
- Credentials file values containing an inline ` #` comment now trigger a clear warning instead of silently
|
|
65
|
+
corrupting the API key into a confusing 401; prompts that begin with `-` get a hint about the standalone `--`
|
|
66
|
+
separator.
|
|
67
|
+
|
|
68
|
+
## [3.4.0] - 2026-05-30
|
|
69
|
+
|
|
70
|
+
### Added
|
|
71
|
+
|
|
72
|
+
- **Video finishing without raw ffmpeg.** `--concat-videos` now uses the concat *filter* (not the demuxer): it
|
|
73
|
+
probes each clip and normalizes fps/size/SAR/pixel-format and synthesizes silent audio for clips with no audio
|
|
74
|
+
track, fixing frozen video with continuing audio when clips differ in frame rate or stream layout. Adds
|
|
75
|
+
`--concat-fps`, `--extract-first-frame` (mirror of `--extract-last-frame`), and `--remix-audio` for looping a
|
|
76
|
+
bed (`--audio-loop`), fades (`--audio-fade-in/out`), and mixing one extra track (`--mix-audio/--mix-at/--mix-gain`)
|
|
77
|
+
without re-encoding video. External `--concat-audio` is now padded/trimmed to the video length.
|
|
78
|
+
|
|
79
|
+
### Changed
|
|
80
|
+
|
|
81
|
+
- Bumped `@sogni-ai/sogni-intelligence-client` to `^3.0.13` (pins `sogni-client 5.0.0-alpha.17`), keeping the
|
|
82
|
+
bundled creative-agent runtime in sync with the current shared prompt contracts and repair recipes.
|
|
83
|
+
|
|
84
|
+
### Fixed
|
|
85
|
+
|
|
86
|
+
- **Idiotproof first run.** Added a zero-dependency Node.js version guard that prints a clear "requires Node >= 22"
|
|
87
|
+
message before native modules load, `fetchWithTimeout` on every REST/download call (a black-holing proxy now
|
|
88
|
+
fails with `NETWORK_TIMEOUT` instead of hanging; override via `SOGNI_HTTP_TIMEOUT_MS`), `OUTPUT_WRITE_FAILED`
|
|
89
|
+
mapping for filesystem errors so a paid render isn't lost to a raw `EACCES`/`ENOSPC`, a friendly
|
|
90
|
+
`MEDIA_REFERENCE_NOT_FOUND` for missing `--ref`/`-c` files, and leading `~` expansion in file arguments.
|
|
91
|
+
- **Invalid/rejected API key no longer crashes.** A bad or expired `SOGNI_API_KEY` previously threw from a
|
|
92
|
+
detached promise during connect and dumped a raw stack trace. Added invalid-key detection plus global
|
|
93
|
+
`uncaughtException`/`unhandledRejection` handlers that route fatals through the clean `Error:`/`Hint:` path
|
|
94
|
+
(JSON-aware, exit 1) with a dashboard.sogni.ai hint.
|
|
95
|
+
- Routed source-preserving image edits away from photobooth and preserved structured project-result errors so
|
|
96
|
+
insufficient-funds responses consistently surface the Spark Packs guidance.
|
|
97
|
+
|
|
98
|
+
## [3.3.5] - 2026-05-29
|
|
99
|
+
|
|
100
|
+
### Changed
|
|
101
|
+
|
|
102
|
+
- Added an explicit **Output Path Convention** section to `SKILL.md` instructing agents to save generated images,
|
|
103
|
+
videos, and music to the user's current working directory (PWD) rather than `/tmp`. The directive includes a
|
|
104
|
+
short ✓/✗ example block so agents prefer `./cat.png` or a bare filename over an absolute `/tmp/…` path. Final
|
|
105
|
+
user-visible renders belong in the user's working directory; `/tmp` is reserved for transient intermediate
|
|
106
|
+
files (audio re-encodes, frame extraction, concat staging) the CLI cleans up itself.
|
|
107
|
+
- Updated all 26 inline `-o /tmp/…` examples in `SKILL.md` and 2 in `README.md` to use relative paths so
|
|
108
|
+
agent transcripts model the recommended behavior.
|
|
109
|
+
|
|
110
|
+
## [3.3.4] - 2026-05-26
|
|
111
|
+
|
|
112
|
+
### Added
|
|
113
|
+
|
|
114
|
+
- Added a Sogni-aware default hosted-chat system prompt for `--api-chat` and `--durable-chat`, so hosted
|
|
115
|
+
chat describes and uses Sogni's real image, video, music, GPT Image 2, Seedance, workflow, and media-reference
|
|
116
|
+
capabilities instead of behaving like a generic text-only assistant.
|
|
117
|
+
- Added public guidance for batching prompt-only video variations with Dynamic Prompt syntax and `-n` when each
|
|
118
|
+
output shares the same source/end assets, duration, dimensions, and references.
|
|
119
|
+
- Added LTX-2.3 dialogue-duration guidance that budgets roughly three spoken words per second plus acting beats,
|
|
120
|
+
helping agents choose workable clip durations before submitting paid video jobs.
|
|
121
|
+
|
|
122
|
+
### Changed
|
|
123
|
+
|
|
124
|
+
- Bumped `@sogni-ai/sogni-intelligence-client` to `^3.0.8` so the skill consumes the current published Sogni Intelligence client stack, including `@sogni-ai/sogni-client@5.0.0-alpha.15` and `@sogni-ai/sogni-protocol@1.0.0-alpha.6`.
|
|
125
|
+
- Synced the bundled creative-agent runtime with the current shared prompt contracts and storyboard helpers, including
|
|
126
|
+
provider-neutral storyboard reference wording, field-tag sanitizer compatibility, and updated video Dynamic Prompt
|
|
127
|
+
instructions from the shared runtime.
|
|
128
|
+
- Tightened persona resolution to explicit saved persona names, ids, and tags/aliases. Relationship phrases such as
|
|
129
|
+
"my wife" or "my son" are no longer treated as persona identifiers by themselves.
|
|
130
|
+
- Refreshed README, root skill, Claude Code plugin skill, `llm.txt`, and per-skill docs to reflect the current image, video, music, hosted chat, durable workflow, replay, and Seedance/LTX/WAN feature surface.
|
|
131
|
+
|
|
132
|
+
### Fixed
|
|
133
|
+
|
|
134
|
+
- `--durable-chat` now recognizes v2 chat-run SSE event names such as `assistant_message_delta`, `run_completed`, `run_failed`, and `run_waiting_for_user` while preserving the legacy aliases.
|
|
135
|
+
- Vendor models such as Seedance and GPT Image 2 no longer fall back to SOGNI tokens under `--token-type auto`; they
|
|
136
|
+
require Premium Spark eligibility and fail clearly when that billing path is unavailable.
|
|
137
|
+
- Hosted API chat now keeps saved persona, memory, and personality injection while using the richer Sogni-specific
|
|
138
|
+
prompt, avoiding regressions where media requests could be framed as plain text-only chat.
|
|
139
|
+
- Replaced stale agent-facing quick examples that referenced removed `--image`, `--context-image`, and `--i2v --image` flags with current `sogni-agent`, `-c`, and `--video --ref` usage.
|
|
140
|
+
|
|
141
|
+
## [3.3.3] - 2026-05-22
|
|
142
|
+
|
|
143
|
+
### Changed
|
|
144
|
+
|
|
145
|
+
- Aligned skill, OpenClaw, and Claude Code plugin version metadata with the npm package version for the release.
|
|
146
|
+
|
|
147
|
+
## [3.3.2] - 2026-05-21
|
|
148
|
+
|
|
149
|
+
### Changed
|
|
150
|
+
|
|
151
|
+
- Synced the bundled creative-agent runtime with the same source SHA now deployed by `sogni-chat`, picking up the latest prompt contracts for exact Seedance prompts, Seedance V2V remaster routing, relative video segment windows, persona video gating, and non-empty text-only `finalize_response` answers.
|
|
152
|
+
- Bumped `@sogni-ai/sogni-intelligence-client` to `^2.4.1` so npm installs use the current shared Sogni runtime dependency set.
|
|
153
|
+
- Aligned skill, OpenClaw, and Claude Code plugin version metadata with the npm package version for the release.
|
|
154
|
+
|
|
155
|
+
### Fixed
|
|
156
|
+
|
|
157
|
+
- Active persona state now gates only explicit persona-video requests that lack a persona image, instead of broad video-generation requests.
|
|
158
|
+
- Text-only / no-action `finalize_response` guidance now requires a substantive final answer instead of an empty or placeholder summary.
|
|
159
|
+
|
|
160
|
+
## [3.3.1] - 2026-05-21
|
|
161
|
+
|
|
162
|
+
### Added
|
|
163
|
+
|
|
164
|
+
- **Seedance direct-gen media upload support.** Local Seedance `--ref-audio` and `--ref-video` references now upload through the Sogni Intelligence `/v2/media/*Url` presigned POST flow and are forwarded as Sogni-hosted URL references, matching the documented backend media-reference contract.
|
|
165
|
+
- Regression coverage for Seedance direct-gen local MP3 audio uploads, local V2V source uploads, and vendor policy-failure JSON shaping.
|
|
166
|
+
|
|
167
|
+
### Changed
|
|
168
|
+
|
|
169
|
+
- Seedance audio references are now treated as MP3-only. Local audio is trimmed to the requested Seedance clip window and converted to `audio/mpeg` before upload; HTTPS non-MP3 audio references are re-uploaded as prepared MP3 media instead of being forwarded directly.
|
|
170
|
+
- Seedance V2V local source clips are trimmed to the requested clip duration before upload so long local source videos are not submitted raw to the vendor.
|
|
171
|
+
|
|
172
|
+
### Fixed
|
|
173
|
+
|
|
174
|
+
- Seedance vendor content-policy cancellations now surface friendly, structured CLI errors (`SAFETY_REJECTED` / `content_refused`) without leaking raw vendor task IDs or terminal status payloads.
|
|
175
|
+
- Seedance invalid audio-format failures now classify as non-retryable parameter errors with actionable MP3 guidance instead of opaque vendor failures.
|
|
176
|
+
|
|
177
|
+
## [3.3.0] - 2026-05-20
|
|
178
|
+
|
|
179
|
+
### Added
|
|
180
|
+
|
|
181
|
+
- **Background npm update check.** `sogni-agent` now checks the npm registry at most once every 24 hours and surfaces a trailing "update available" notice when a newer version is published. The check times out at 1.5s, never blocks the foreground command, detects the package manager that installed the CLI (npm, pnpm, or yarn) so the suggested install command matches the user's environment, and persists throttle state at `~/.config/sogni/update-check.json`.
|
|
182
|
+
- **`--no-update-check`** flag to opt out of the update check for a single run.
|
|
183
|
+
- **Claude Code plugin install instructions** in README and `llm.txt`. Both now show the `npm install -g` prerequisite, the marketplace registration command, and the new `/plugin install sogni-creative-agent@sogni` step, with a brief explanation of what each command does.
|
|
184
|
+
|
|
185
|
+
## [3.2.0] - 2026-05-20
|
|
186
|
+
|
|
187
|
+
### Added
|
|
188
|
+
|
|
189
|
+
- **Seedance multi-modal references.** `--ref-audio` and `--ref-video` are now repeatable on Seedance models, and `-c`/`--context` image refs flow through to Seedance `referenceImageUrls` as loose `@ImageN` refs — matching the "up to 9 image / 3 video / 3 audio / 12 total" caps published by `@sogni-ai/sogni-intelligence-client@2.4.0` (sourced from `@sogni-ai/sogni-protocol`'s `SEEDANCE_REFERENCE_LIMITS` catalog).
|
|
190
|
+
- **Dedicated first-frame / last-frame mode parity** with sogni-socket's two-mode contract. Dedicated frame mode (`--ref` / `--ref-end`) and loose reference mode (`-c`/`--context`) are mutually exclusive on Seedance; the skill rejects mixed mode client-side with a message pointing to the right mode.
|
|
191
|
+
- **Per-job progress and ETA logging during durable chat runs.** `--durable-chat` now emits de-duplicated per-job progress, ETA, and result lines from hosted run events.
|
|
192
|
+
- **Hosted-intelligence guidance refresh** in `SKILL.md`, covering the recommended routing through `/v1/chat/completions`, `/v1/creative-agent/workflows`, and `/v1/chat/runs`.
|
|
193
|
+
|
|
194
|
+
### Changed
|
|
195
|
+
|
|
196
|
+
- Bumped `@sogni-ai/sogni-intelligence-client` to `^2.4.0` for the `SEEDANCE_REFERENCE_LIMITS` export and refreshed the rest of the Sogni runtime dependency surface.
|
|
197
|
+
- New `enforceSeedanceReferenceCaps()` helper translates `SeedanceReferenceLimitError` into a fatal CLI error with the canonical message. Non-Seedance video models reject repeated `--ref-audio` / `--ref-video` flags with a clear error.
|
|
198
|
+
|
|
199
|
+
### Tests
|
|
200
|
+
|
|
201
|
+
- 10 new `node:test` cases covering multi-ref forwarding (HTTPS extras → URL arrays), per-modality cap errors, the combined 12-asset cap, dedicated-vs-loose mutex, local-file extra rejection in CLI direct-gen, `seedance2-fast` parity, and non-seedance multi-ref rejection.
|
|
202
|
+
|
|
203
|
+
## [3.1.1] - 2026-05-20
|
|
204
|
+
|
|
205
|
+
### Changed
|
|
206
|
+
|
|
207
|
+
- Bumped `@sogni-ai/sogni-intelligence-client` to `^2.2.8` and refreshed the intelligence-client runtime bundle.
|
|
208
|
+
|
|
209
|
+
### Fixed
|
|
210
|
+
|
|
211
|
+
- The skill now invokes the globally installed `sogni-agent` command directly instead of assuming a specific install path, so agents that resolve the binary via `PATH` work in both global-install and `npm link` setups.
|
|
212
|
+
- Republished alongside the renamed `@sogni-ai/sogni-client` package so consumers pulling the latest skill no longer hit the unscoped/legacy client name.
|
|
213
|
+
|
|
214
|
+
## [3.1.0] - 2026-05-20
|
|
215
|
+
|
|
216
|
+
### Added
|
|
217
|
+
|
|
218
|
+
- **Claude Code plugin marketplace manifest.** Scaffolds the `sogni` marketplace and `sogni-creative-agent` plugin entry that ships a lean Claude-Code-focused `SKILL.md` from `plugin-skills/` while keeping the full skill spec at the repository root.
|
|
219
|
+
- **`setup-sogni-agent-skill` installer.** Adds the design spec and implementation plan for the upcoming bootstrap installer; the runtime work lands in a later release.
|
|
220
|
+
|
|
221
|
+
### Changed
|
|
222
|
+
|
|
223
|
+
- Bumped `@sogni-ai/sogni-intelligence-client` through `^2.2.4` to `^2.2.6` as the client stabilized.
|
|
224
|
+
|
|
225
|
+
### Fixed
|
|
226
|
+
|
|
227
|
+
- Root SDK is now loaded through a compatible module path so installs on Node module resolvers that disallow deep imports continue to work.
|
|
228
|
+
|
|
229
|
+
## [3.1.0-alpha.1] - 2026-05-20
|
|
230
|
+
|
|
231
|
+
### Changed
|
|
232
|
+
|
|
233
|
+
- Bumped `@sogni-ai/sogni-intelligence-client` to `^2.2.1`.
|
|
234
|
+
|
|
235
|
+
### Fixed
|
|
236
|
+
|
|
237
|
+
- Synced `version.mjs` with `package.json` so the runtime `--version` output matches the published npm version.
|
|
238
|
+
|
|
239
|
+
## [3.1.0-alpha.0] - 2026-05-18
|
|
240
|
+
|
|
241
|
+
### Added
|
|
242
|
+
|
|
243
|
+
- **Managed Agent parity with sogni-chat.** `buildSkillDynamicSystemPrompt()` injects the same persona / memory / personality framing as `buildChatDynamicSystemPrompt` (`User's people` / `PERSONA RULES` / `User preferences` / `USER PERSONALITY PREFERENCE`) so saved `--persona-*`, `--memory-set`, and `--personality-*` stores travel into `/v1/chat/completions`. Empty when no stores are populated, so fresh installs are unaffected.
|
|
244
|
+
- **`--no-filter` now propagates to `safeContentFilter: false`** on the hosted chat body, in addition to the existing per-tool `disableNSFWFilter` plumbing.
|
|
245
|
+
- **`--durable-chat` CLI flag** for `/v1/chat/runs` with SSE assistant deltas — the foundation for the per-job progress / ETA / result events added in 3.2.0.
|
|
246
|
+
- **`composition_planning` per-skill manifest** groups `enhance_prompt`, `compose_lyrics`, `compose_instrumental`, `compose_script`, `compose_workflow`, and `compose_workflow_template` into a single capability surface, matching the canonical `@sogni/creative-agent` manifest layout. SKILL.md and `skills/README.md` are updated to list it in the per-skill index, and the cross-surface parity test asserts `ALL_BUILT_IN_SKILLS` exposes it.
|
|
247
|
+
- **Conventional commits tooling.** Adopted commitlint + husky for the strict commit-message rules used across the Sogni ecosystem.
|
|
248
|
+
- **Semantic-release configuration** added; publish remains manual-gated for now (the CI auto-publish workflow was added and then removed in the same release pending an automation token).
|
package/README.md
CHANGED
|
@@ -43,9 +43,13 @@ With this skill, an agent can:
|
|
|
43
43
|
- [Installation](#installation)
|
|
44
44
|
- [Node CLI (default)](#node-cli-default)
|
|
45
45
|
- [Claude Code plugin](#claude-code-plugin)
|
|
46
|
+
- [OpenAI Codex CLI](#openai-codex-cli)
|
|
47
|
+
- [Hermes Agent](#hermes-agent)
|
|
46
48
|
- [OpenClaw plugin](#openclaw-plugin)
|
|
47
|
-
- [
|
|
49
|
+
- [ChatGPT (Custom GPT)](#chatgpt-custom-gpt)
|
|
50
|
+
- [Manus / other SKILL.md frameworks](#manus--other-skillmd-frameworks)
|
|
48
51
|
- [Manual install from source](#manual-install-from-source)
|
|
52
|
+
- [Verify your install](#verify-your-install)
|
|
49
53
|
- [Upgrading safely from inside an agent](#upgrading-safely-from-inside-an-agent)
|
|
50
54
|
- [Setup (Sogni API key)](#setup-sogni-api-key)
|
|
51
55
|
- [Usage](#usage)
|
|
@@ -70,14 +74,31 @@ With this skill, an agent can:
|
|
|
70
74
|
## Quick Start
|
|
71
75
|
|
|
72
76
|
1. Get a Sogni API key from [dashboard.sogni.ai](https://dashboard.sogni.ai) (open the account menu) and save it — see [Setup](#setup-sogni-api-key).
|
|
73
|
-
2. Install
|
|
77
|
+
2. Install (one command):
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
npx setup-sogni-agent-skill
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
This auto-detects Claude Code, OpenAI Codex CLI, and Hermes Agent; installs the
|
|
84
|
+
CLI globally; registers the skill into each detected runtime; prompts for your
|
|
85
|
+
API key; and prints ChatGPT Custom-GPT setup instructions. (It does **not**
|
|
86
|
+
configure OpenClaw — see the [OpenClaw plugin](#openclaw-plugin) section.)
|
|
87
|
+
|
|
88
|
+
Prefer to do it manually? Install the CLI directly:
|
|
74
89
|
|
|
75
90
|
```bash
|
|
76
91
|
npm install -g @sogni-ai/sogni-creative-agent-skill@latest
|
|
77
92
|
sogni-agent --version
|
|
78
93
|
```
|
|
79
94
|
|
|
80
|
-
|
|
95
|
+
Then point your agent runtime at this repository's [`SKILL.md`](./SKILL.md).
|
|
96
|
+
|
|
97
|
+
3. Verify the install:
|
|
98
|
+
|
|
99
|
+
```bash
|
|
100
|
+
sogni-agent doctor
|
|
101
|
+
```
|
|
81
102
|
|
|
82
103
|
Then ask your agent to do something:
|
|
83
104
|
|
|
@@ -123,15 +144,41 @@ The Claude Code plugin shells out to the `sogni-agent` CLI installed above, so b
|
|
|
123
144
|
|
|
124
145
|
The first command registers a `sogni` marketplace with one plugin entry (`sogni-creative-agent`) backed by a lean Claude-Code-focused [`plugin-skills/sogni-creative-agent/SKILL.md`](./plugin-skills/sogni-creative-agent/SKILL.md); the second installs the plugin into Claude Code. The full skill spec still lives at the repository root [`SKILL.md`](./SKILL.md).
|
|
125
146
|
|
|
147
|
+
> **Pick one registration per machine.** Install either this plugin **or** the personal skill that `npx setup-sogni-agent-skill` writes to `~/.claude/skills/` — not both. With both installed, Claude Code lists two near-identical skills, which wastes context and makes skill selection ambiguous.
|
|
148
|
+
|
|
149
|
+
### OpenAI Codex CLI
|
|
150
|
+
|
|
151
|
+
The `npx` installer writes the skill to `~/.codex/skills/sogni-creative-agent-skill/`, which the Codex CLI discovers automatically:
|
|
152
|
+
|
|
153
|
+
```bash
|
|
154
|
+
npm install -g @sogni-ai/sogni-creative-agent-skill@latest
|
|
155
|
+
npx setup-sogni-agent-skill --only=codex
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
Restart Codex (or start a new session) and ask it to "generate an image of a sunset" — the skill shells out to the globally installed `sogni-agent`. To remove it later: `npx setup-sogni-agent-skill --uninstall --only=codex`.
|
|
159
|
+
|
|
160
|
+
### Hermes Agent
|
|
161
|
+
|
|
162
|
+
[Hermes Agent](https://hermes-agent.nousresearch.com/) loads skills from `~/.hermes/skills/<category>/<name>/SKILL.md`. The `npx` installer places this skill at `~/.hermes/skills/media/sogni-creative-agent-skill/`:
|
|
163
|
+
|
|
164
|
+
```bash
|
|
165
|
+
npm install -g @sogni-ai/sogni-creative-agent-skill@latest
|
|
166
|
+
npx setup-sogni-agent-skill --only=hermes
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
Then `/reset` your Hermes session so it picks up the new skill. (You can also install manually: copy [`SKILL.md`](./SKILL.md) into `~/.hermes/skills/media/sogni-creative-agent-skill/SKILL.md`, or use `hermes skills install` if your build supports it.)
|
|
170
|
+
|
|
126
171
|
### OpenClaw plugin
|
|
127
172
|
|
|
128
|
-
|
|
173
|
+
The npm package is scoped, so install it through OpenClaw's `npm:` source prefix (a bare `openclaw plugins install sogni-creative-agent-skill` will not resolve the scoped package):
|
|
129
174
|
|
|
130
175
|
```bash
|
|
131
|
-
openclaw plugins install sogni-creative-agent-skill
|
|
176
|
+
openclaw plugins install npm:@sogni-ai/sogni-creative-agent-skill
|
|
132
177
|
```
|
|
133
178
|
|
|
134
|
-
The installed plugin loads its behavior from [`SKILL.md`](./SKILL.md) via [`openclaw.plugin.json`](./openclaw.plugin.json).
|
|
179
|
+
The installed plugin loads its behavior from [`SKILL.md`](./SKILL.md) via [`openclaw.plugin.json`](./openclaw.plugin.json). The `npx setup-sogni-agent-skill` installer does **not** configure OpenClaw — use the command above (or the local-link flow below) instead.
|
|
180
|
+
|
|
181
|
+
> **API key under OpenClaw:** the plugin config holds non-secret defaults only (models, timeouts, paths) — it does **not** carry your API key. Provide `SOGNI_API_KEY` via the environment the OpenClaw gateway passes to the CLI, or save it to `~/.config/sogni/credentials` (`SOGNI_API_KEY=<your-key>`). This keeps your key out of plugin config files.
|
|
135
182
|
|
|
136
183
|
For a local checkout that you want to update continuously, link the minimal OpenClaw surface (`.openclaw-link/`) — not the repository root, which contains development tests that OpenClaw correctly blocks during plugin safety scanning:
|
|
137
184
|
|
|
@@ -161,7 +208,11 @@ The generated `.openclaw-link/` directory is only for OpenClaw; Hermes, Manus, a
|
|
|
161
208
|
|
|
162
209
|
When loaded through OpenClaw, this skill reads plugin defaults from OpenClaw config; CLI flags always override them. The supported config schema is defined in [`openclaw.plugin.json`](./openclaw.plugin.json) and includes default models, video workflow models, hosted API defaults (`apiBaseUrl`, `defaultLlmModel`, `defaultTaskProfile`, `defaultApiMaxTokens`, `defaultApiThinking`, `defaultApiToolMode`, workflow cost defaults), token type, seed strategy, timeouts, and media paths. If your OpenClaw config lives elsewhere, set `OPENCLAW_CONFIG_PATH`.
|
|
163
210
|
|
|
164
|
-
###
|
|
211
|
+
### ChatGPT (Custom GPT)
|
|
212
|
+
|
|
213
|
+
Running `npx setup-sogni-agent-skill` also prints step-by-step instructions for creating a ChatGPT Custom GPT whose Instructions embed this skill. Note that ChatGPT cannot run the local CLI; the Custom GPT path covers prompt-side behavior only.
|
|
214
|
+
|
|
215
|
+
### Manus / other SKILL.md frameworks
|
|
165
216
|
|
|
166
217
|
Point the agent at this repository's [`SKILL.md`](./SKILL.md) for behavior guidance and [`llm.txt`](https://raw.githubusercontent.com/Sogni-AI/sogni-creative-agent-skill/main/llm.txt) for install/setup help. The agent should invoke the globally installed `sogni-agent` CLI by default.
|
|
167
218
|
|
|
@@ -173,6 +224,16 @@ cd sogni-creative-agent-skill
|
|
|
173
224
|
npm install
|
|
174
225
|
```
|
|
175
226
|
|
|
227
|
+
### Verify your install
|
|
228
|
+
|
|
229
|
+
Every install path above ends the same way — run the built-in health check:
|
|
230
|
+
|
|
231
|
+
```bash
|
|
232
|
+
sogni-agent doctor
|
|
233
|
+
```
|
|
234
|
+
|
|
235
|
+
It verifies the Node version, API credentials (and their file permissions), config-dir writability, `ffmpeg` availability, live authentication, and whether a newer version is available. `sogni-agent doctor --json` emits the same checks for agents. If anything is marked `✗`, the detail line says exactly how to fix it.
|
|
236
|
+
|
|
176
237
|
### Upgrading safely from inside an agent
|
|
177
238
|
|
|
178
239
|
When upgrading from inside an agent runtime, prefer direct package-manager or existing-checkout commands. Avoid asking the agent to build a clone-or-pull shell bootstrap script with `set -e`, `bash -c`, `sh -c`, or an inline repository URL — some sandboxes correctly route those through approval and the install will stall.
|
|
@@ -370,6 +431,14 @@ Run `sogni-agent --help` for the full CLI. Below are the options and tables most
|
|
|
370
431
|
| `--last`, `--last-image` | Inspect last render / reuse last image as context or video reference |
|
|
371
432
|
| `--strict-size` | Fail instead of auto-adjusting video size |
|
|
372
433
|
| `--json` | Emit structured output for agents |
|
|
434
|
+
| `-n <count>` | Multiple outputs per call (safety-capped at 16; raise deliberately with `SOGNI_MAX_COUNT`) |
|
|
435
|
+
| `doctor` / `--doctor` | Install health check: Node, credentials, ffmpeg, auth, version (`--json` for agents) |
|
|
436
|
+
| `self-update` | Upgrade the CLI via the detected package manager |
|
|
437
|
+
| `--whats-new [version]` | Show bundled CHANGELOG entries (everything after `<version>` if given) |
|
|
438
|
+
| `--snooze-update` | Snooze the pending-update reminder (1 day → 2 days → 1 week) |
|
|
439
|
+
| `--no-update-check` | Disable the background update check for this run (`SOGNI_NO_UPDATE_CHECK=1` to disable always) |
|
|
440
|
+
| `--video-model <id>` | Override the i2v model used by `--angles-360-video` |
|
|
441
|
+
| `--memory-category <c>` | Category for `--memory-set`: `preference` (default), `fact`, or `context` |
|
|
373
442
|
|
|
374
443
|
### Quality presets
|
|
375
444
|
|
|
@@ -451,7 +520,7 @@ LTX-2.3 prompt: "A medium cinematic shot frames a woman in her 30s standing in a
|
|
|
451
520
|
|
|
452
521
|
## Photobooth (Face Transfer)
|
|
453
522
|
|
|
454
|
-
Generate stylized portraits from a face photo using InstantID ControlNet:
|
|
523
|
+
Generate new stylized portraits from a face photo using InstantID ControlNet:
|
|
455
524
|
|
|
456
525
|
```bash
|
|
457
526
|
sogni-agent --photobooth --ref face.jpg "80s fashion portrait"
|
|
@@ -460,6 +529,8 @@ sogni-agent --photobooth --ref face.jpg -n 4 "LinkedIn professional headshot"
|
|
|
460
529
|
|
|
461
530
|
Uses SDXL Turbo (`coreml-sogniXLturbo_alpha1_ad`) at 1024×1024 by default. The face image is passed via `--ref` and styled by the prompt. Cannot be combined with `--video` or `-c` / `--context`.
|
|
462
531
|
|
|
532
|
+
`--photobooth` is face-reference generation, not full-image editing. If the request is "same image, different style" — for example an anime version that must keep the same face, pose, clothing, background, framing, and composition — use Qwen image editing with `-c/--context` instead.
|
|
533
|
+
|
|
463
534
|
Multi-angle mode (`--multi-angle` / `--angles-360`) auto-builds the `<sks>` prompt and applies the `multiple_angles` LoRA. `--angles-360-video` generates i2v clips between consecutive angles (including last → first) and concatenates them with `ffmpeg` into a seamless loop.
|
|
464
535
|
|
|
465
536
|
`--balance` / `--balances` does not require a prompt and prints current `SPARK` and `SOGNI` balances before exiting.
|
|
@@ -539,8 +610,6 @@ Hosted API credentials are only sent to `https://api.sogni.ai` by default. Add t
|
|
|
539
610
|
hosts with `SOGNI_API_ALLOWED_HOSTS`; loopback or non-HTTPS local testing requires
|
|
540
611
|
`SOGNI_ALLOW_UNSAFE_API_BASE_URL=1`.
|
|
541
612
|
|
|
542
|
-
> The public skill consumes generated storyboard adapters from `../sogni-creative-agent`: `compileForModel()` now works in the bundled runtime for Seedance, GPT Image 2, LTX-2.3, and WAN storyboard stages.
|
|
543
|
-
|
|
544
613
|
---
|
|
545
614
|
|
|
546
615
|
## Dynamic Prompt Variations
|
|
@@ -577,7 +646,7 @@ Use `--token-type auto` to retry native Sogni models with SOGNI tokens when SPAR
|
|
|
577
646
|
sogni-agent --token-type auto "a dragon eating tacos"
|
|
578
647
|
```
|
|
579
648
|
|
|
580
|
-
Tries SPARK first
|
|
649
|
+
Tries SPARK first, then falls back to SOGNI if the balance is too low. Vendor models such as Seedance and GPT Image 2 require Premium Spark eligibility and never use SOGNI fallback. If usable balance is still insufficient, buy Spark Packs at https://docs.sogni.ai/pricing/#spark-packs.
|
|
581
650
|
|
|
582
651
|
---
|
|
583
652
|
|
|
@@ -585,8 +654,10 @@ Tries SPARK first (free daily tokens), then falls back to SOGNI if the balance i
|
|
|
585
654
|
|
|
586
655
|
- **Exit codes:** failures use a non-zero exit code with human-readable stderr.
|
|
587
656
|
- **Structured output:** add `--json` when an agent needs machine-parseable success/error data, or `--last` to inspect the last render. JSON failures include canonical `errorType`, `errorCategory`, and `retryable` fields where the shared runtime can classify the error.
|
|
657
|
+
- **stdout stays parseable in `--json` mode:** progress lines, SSE workflow frames, and warnings go to stderr; stdout carries exactly one JSON object. `--last --json` wraps the record in a `{ "success": true, ... }` envelope and exits 1 with `errorCode: "NO_LAST_RENDER"` when nothing has been rendered yet.
|
|
588
658
|
- **Output files:** use `-o <path>` to save locally; otherwise the CLI prints a result URL.
|
|
589
659
|
- **Quiet mode:** `-q` / `--quiet` suppresses progress output without changing exit semantics.
|
|
660
|
+
- **Interrupts:** Ctrl-C exits with the conventional signal code and cleans up the CLI's temporary files.
|
|
590
661
|
|
|
591
662
|
---
|
|
592
663
|
|
|
@@ -605,32 +676,24 @@ This skill is designed to be loaded into agent runtimes as a first-class capabil
|
|
|
605
676
|
Use `--json` for machine-readable success/error payloads. Use `--last` to read the previous render's metadata.
|
|
606
677
|
5. **Agent-safe install/upgrade**
|
|
607
678
|
Prefer the `npm install -g` and `git -C "$DEST" pull --ff-only` paths above. Avoid generating clone-or-pull bootstrap scripts with `set -e`, `bash -c`, `sh -c`, or inline repository URLs — agent sandboxes correctly route those through approval and the install will stall.
|
|
608
|
-
6. **
|
|
609
|
-
|
|
679
|
+
6. **Verify with `doctor`**
|
|
680
|
+
After any install or upgrade, run `sogni-agent doctor --json` and confirm `"success": true` before reporting the install as working. Each failed check carries a `detail` string with the fix.
|
|
681
|
+
7. **SSRF / URL safety**
|
|
682
|
+
The CLI validates every HTTP(S) media reference with an SSRF guard ([`ssrf-guard.mjs`](./ssrf-guard.mjs)) and re-validates each redirect hop on download. Localhost and private-network URLs are rejected; only public HTTPS references are forwarded as Seedance multimodal context.
|
|
610
683
|
|
|
611
684
|
---
|
|
612
685
|
|
|
613
686
|
## Development
|
|
614
687
|
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
Run the test suite:
|
|
688
|
+
Run the unit test suite (works without any Sogni credentials or private repos):
|
|
618
689
|
|
|
619
690
|
```bash
|
|
620
691
|
npm test
|
|
621
692
|
```
|
|
622
693
|
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
With both repos checked out as siblings, refresh the generated runtime before publishing:
|
|
626
|
-
|
|
627
|
-
```bash
|
|
628
|
-
npm run sync:creative-agent-runtime
|
|
629
|
-
```
|
|
630
|
-
|
|
631
|
-
Reusable workflow rules should come from the shared Sogni runtime before they are synced into this public package. Keep storyboard planning, tool argument validation, prompt linting, media-routing decisions, chat-run progress extraction, and repair/control behavior aligned with the hosted `/v1/chat/completions` and `/v1/creative-agent/workflows` APIs. Prefer typed helpers exported by `@sogni-ai/sogni-intelligence-client` or the generated runtime over new skill-local regex guards.
|
|
694
|
+
Paid integration tests are opt-in: `npm run test:integration` (requires a Sogni API key and submits real GPU jobs).
|
|
632
695
|
|
|
633
|
-
|
|
696
|
+
Architecture notes, the private-runtime sync workflow, code-placement policy, and the release process live in [`CONTRIBUTING.md`](./CONTRIBUTING.md).
|
|
634
697
|
|
|
635
698
|
Issues and feature requests: [github.com/Sogni-AI/sogni-creative-agent-skill/issues](https://github.com/Sogni-AI/sogni-creative-agent-skill/issues).
|
|
636
699
|
|