@sogni-ai/sogni-creative-agent-skill 3.4.0 → 3.5.1
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 +260 -0
- package/README.md +80 -33
- package/SKILL.md +141 -1184
- package/llm.txt +49 -52
- package/openclaw.plugin.json +3 -3
- package/package.json +11 -6
- 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 +20 -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 +310 -29
- package/ssrf-guard.mjs +61 -3
- package/update-check.mjs +114 -0
- package/version.mjs +1 -1
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,260 @@
|
|
|
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.1] - 2026-06-12
|
|
9
|
+
|
|
10
|
+
### Fixed
|
|
11
|
+
|
|
12
|
+
- **OpenClaw no longer marks the skill "missing".** The SKILL.md frontmatter listed every optional override
|
|
13
|
+
variable (`SOGNI_CREDENTIALS_PATH`, `OPENCLAW_CONFIG_PATH`, `FFMPEG_PATH`, …) and optional config path
|
|
14
|
+
(including `~/Downloads/sogni`) under `metadata.openclaw.requires`, so OpenClaw treated them all as hard
|
|
15
|
+
requirements that could never be satisfied and flagged the skill `✗ missing` on every install. Requirements
|
|
16
|
+
are now just `bins: node` + `anyBins: ffmpeg`; the API key still comes from the credentials file or
|
|
17
|
+
`primaryEnv`, and the override variables remain documented in "Filesystem Paths and Overrides". Verified
|
|
18
|
+
live: `openclaw skills check` flips from missing to `✓ ready`.
|
|
19
|
+
|
|
20
|
+
## [3.5.0] - 2026-06-11
|
|
21
|
+
|
|
22
|
+
### Added
|
|
23
|
+
|
|
24
|
+
- **`sogni-agent doctor` (also `--doctor`).** One deterministic install health check: Node floor, credentials
|
|
25
|
+
presence and file permissions, config-dir writability, ffmpeg discovery, a live auth + balance probe with a
|
|
26
|
+
timeout, and version freshness. `--json` emits a structured `checks` array; exit 1 when a required check fails.
|
|
27
|
+
Every install path in the docs now ends with `sogni-agent doctor` as the verification gate.
|
|
28
|
+
- **Upgrade UX.** `--whats-new [since-version]` prints the bundled CHANGELOG entries (CHANGELOG.md now ships in
|
|
29
|
+
the npm tarball and `self-update` points at it after upgrading), and `--snooze-update` pauses the update
|
|
30
|
+
reminder with escalating backoff (1 day → 2 days → 1 week, reset by a newer release) instead of re-nagging
|
|
31
|
+
every 24 hours.
|
|
32
|
+
- **SSRF-guarded downloads.** New `fetchSafeUrl` in `ssrf-guard.mjs` fetches with manual redirects and re-validates
|
|
33
|
+
every hop, so a vetted public media URL can no longer redirect a download to a private/metadata address. Remote
|
|
34
|
+
`--ref`/`--ref-audio`/`--ref-video` fetches use it.
|
|
35
|
+
- **CI.** GitHub Actions workflow running the unit suite on Node 22.11.0 and 24, verifying npm tarball contents,
|
|
36
|
+
and validating the plugin manifests. `npm run sync:version` stamps the package.json version into every manifest
|
|
37
|
+
(`version.mjs`, `SKILL.md`, `.claude-plugin/plugin.json`, `openclaw.plugin.json`), enforced by a new
|
|
38
|
+
docs-consistency test suite that also fails on any documented flag missing from the CLI parser.
|
|
39
|
+
|
|
40
|
+
### Changed
|
|
41
|
+
|
|
42
|
+
- **SKILL.md restructured for progressive disclosure.** The always-loaded core shrank from 1,338 lines (~10k
|
|
43
|
+
words) to ~300 lines (~2.6k words) — every routing rule (photobooth-vs-context-edit, LTX prompt rewrite,
|
|
44
|
+
high-res routing, PWD output convention, insufficient-funds script, media/shell security rules) stays inline,
|
|
45
|
+
while deep guides moved to `references/` (video-prompting, video-editing, hosted-api, models, personas-memory,
|
|
46
|
+
openclaw-config) read on demand. `references/` and `skills/` now ship in the npm tarball, the Claude plugin,
|
|
47
|
+
and the OpenClaw link surface. Verified with a 7-scenario agent battery against the new layout.
|
|
48
|
+
- **Install docs are now accurate per platform.** Added the missing OpenAI Codex CLI section
|
|
49
|
+
(`~/.codex/skills/`), a real Hermes Agent section (`~/.hermes/skills/media/` + `/reset`), the ChatGPT
|
|
50
|
+
Custom-GPT path the installer prints, an explicit note that the npx installer does not configure OpenClaw, and
|
|
51
|
+
"pick one registration" guidance for Claude Code (plugin or personal skill, not both). The OpenClaw install
|
|
52
|
+
command is now `openclaw plugins install npm:@sogni-ai/sogni-creative-agent-skill` — the bare unscoped name
|
|
53
|
+
never resolved the scoped npm package.
|
|
54
|
+
- **OpenClaw branding modernized.** Frontmatter metadata key `clawdbot:` → `openclaw:`; `--list-media` now
|
|
55
|
+
defaults to `~/.openclaw/media/inbound` with automatic fallback to the legacy `~/.clawdbot/media/inbound`;
|
|
56
|
+
the ClawHub install hook no longer overwrites `package.json` in a git checkout (guarded copy).
|
|
57
|
+
- **`--json` stdout is now strictly machine-parseable.** Durable-workflow SSE progress frames stream to stderr in
|
|
58
|
+
JSON mode; `--last --json` wraps the record in a `{ "success": true, ... }` envelope and exits 1 with
|
|
59
|
+
`errorCode: "NO_LAST_RENDER"` when nothing has been rendered (previously raw record / exit 0). Human-mode
|
|
60
|
+
errors now print the same classified, friendly message JSON consumers get.
|
|
61
|
+
- **Paid-batch safety cap.** `-n/--count` is capped at 16 outputs per invocation (a typo like `-n 1000` no longer
|
|
62
|
+
launches a thousand paid renders); raise deliberately with `SOGNI_MAX_COUNT`. OpenClaw `defaultCount` is
|
|
63
|
+
clamped the same way.
|
|
64
|
+
- `npm test` now runs the offline unit suites only and works without the private `sogni-creative-agent` sibling
|
|
65
|
+
(the runtime freshness check skips with a warning; publishing still hard-requires it via `prepack`).
|
|
66
|
+
Integration tests are strictly opt-in: `SOGNI_INTEGRATION=1` / `npm run test:integration` — a `SOGNI_API_KEY`
|
|
67
|
+
in the environment no longer causes plain `npm test` to submit real paid GPU jobs.
|
|
68
|
+
- `engines.node` raised to `>=22.11.0` to match the runtime guard (Node 22.0–22.10 previously passed `npm
|
|
69
|
+
install` and then hard-exited at first run).
|
|
70
|
+
|
|
71
|
+
### Fixed
|
|
72
|
+
|
|
73
|
+
- **Ctrl-C and temp-file hygiene.** The CLI now handles SIGINT/SIGTERM/SIGHUP (conventional exit codes) and
|
|
74
|
+
removes every temporary directory it created on exit — interrupting a long video job no longer orphans
|
|
75
|
+
directories under the OS temp dir, and the multi-angle / loop flows no longer leak a temp dir on every run.
|
|
76
|
+
- Credentials file values containing an inline ` #` comment now trigger a clear warning instead of silently
|
|
77
|
+
corrupting the API key into a confusing 401; prompts that begin with `-` get a hint about the standalone `--`
|
|
78
|
+
separator.
|
|
79
|
+
|
|
80
|
+
## [3.4.0] - 2026-05-30
|
|
81
|
+
|
|
82
|
+
### Added
|
|
83
|
+
|
|
84
|
+
- **Video finishing without raw ffmpeg.** `--concat-videos` now uses the concat *filter* (not the demuxer): it
|
|
85
|
+
probes each clip and normalizes fps/size/SAR/pixel-format and synthesizes silent audio for clips with no audio
|
|
86
|
+
track, fixing frozen video with continuing audio when clips differ in frame rate or stream layout. Adds
|
|
87
|
+
`--concat-fps`, `--extract-first-frame` (mirror of `--extract-last-frame`), and `--remix-audio` for looping a
|
|
88
|
+
bed (`--audio-loop`), fades (`--audio-fade-in/out`), and mixing one extra track (`--mix-audio/--mix-at/--mix-gain`)
|
|
89
|
+
without re-encoding video. External `--concat-audio` is now padded/trimmed to the video length.
|
|
90
|
+
|
|
91
|
+
### Changed
|
|
92
|
+
|
|
93
|
+
- Bumped `@sogni-ai/sogni-intelligence-client` to `^3.0.13` (pins `sogni-client 5.0.0-alpha.17`), keeping the
|
|
94
|
+
bundled creative-agent runtime in sync with the current shared prompt contracts and repair recipes.
|
|
95
|
+
|
|
96
|
+
### Fixed
|
|
97
|
+
|
|
98
|
+
- **Idiotproof first run.** Added a zero-dependency Node.js version guard that prints a clear "requires Node >= 22"
|
|
99
|
+
message before native modules load, `fetchWithTimeout` on every REST/download call (a black-holing proxy now
|
|
100
|
+
fails with `NETWORK_TIMEOUT` instead of hanging; override via `SOGNI_HTTP_TIMEOUT_MS`), `OUTPUT_WRITE_FAILED`
|
|
101
|
+
mapping for filesystem errors so a paid render isn't lost to a raw `EACCES`/`ENOSPC`, a friendly
|
|
102
|
+
`MEDIA_REFERENCE_NOT_FOUND` for missing `--ref`/`-c` files, and leading `~` expansion in file arguments.
|
|
103
|
+
- **Invalid/rejected API key no longer crashes.** A bad or expired `SOGNI_API_KEY` previously threw from a
|
|
104
|
+
detached promise during connect and dumped a raw stack trace. Added invalid-key detection plus global
|
|
105
|
+
`uncaughtException`/`unhandledRejection` handlers that route fatals through the clean `Error:`/`Hint:` path
|
|
106
|
+
(JSON-aware, exit 1) with a dashboard.sogni.ai hint.
|
|
107
|
+
- Routed source-preserving image edits away from photobooth and preserved structured project-result errors so
|
|
108
|
+
insufficient-funds responses consistently surface the Spark Packs guidance.
|
|
109
|
+
|
|
110
|
+
## [3.3.5] - 2026-05-29
|
|
111
|
+
|
|
112
|
+
### Changed
|
|
113
|
+
|
|
114
|
+
- Added an explicit **Output Path Convention** section to `SKILL.md` instructing agents to save generated images,
|
|
115
|
+
videos, and music to the user's current working directory (PWD) rather than `/tmp`. The directive includes a
|
|
116
|
+
short ✓/✗ example block so agents prefer `./cat.png` or a bare filename over an absolute `/tmp/…` path. Final
|
|
117
|
+
user-visible renders belong in the user's working directory; `/tmp` is reserved for transient intermediate
|
|
118
|
+
files (audio re-encodes, frame extraction, concat staging) the CLI cleans up itself.
|
|
119
|
+
- Updated all 26 inline `-o /tmp/…` examples in `SKILL.md` and 2 in `README.md` to use relative paths so
|
|
120
|
+
agent transcripts model the recommended behavior.
|
|
121
|
+
|
|
122
|
+
## [3.3.4] - 2026-05-26
|
|
123
|
+
|
|
124
|
+
### Added
|
|
125
|
+
|
|
126
|
+
- Added a Sogni-aware default hosted-chat system prompt for `--api-chat` and `--durable-chat`, so hosted
|
|
127
|
+
chat describes and uses Sogni's real image, video, music, GPT Image 2, Seedance, workflow, and media-reference
|
|
128
|
+
capabilities instead of behaving like a generic text-only assistant.
|
|
129
|
+
- Added public guidance for batching prompt-only video variations with Dynamic Prompt syntax and `-n` when each
|
|
130
|
+
output shares the same source/end assets, duration, dimensions, and references.
|
|
131
|
+
- Added LTX-2.3 dialogue-duration guidance that budgets roughly three spoken words per second plus acting beats,
|
|
132
|
+
helping agents choose workable clip durations before submitting paid video jobs.
|
|
133
|
+
|
|
134
|
+
### Changed
|
|
135
|
+
|
|
136
|
+
- 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`.
|
|
137
|
+
- Synced the bundled creative-agent runtime with the current shared prompt contracts and storyboard helpers, including
|
|
138
|
+
provider-neutral storyboard reference wording, field-tag sanitizer compatibility, and updated video Dynamic Prompt
|
|
139
|
+
instructions from the shared runtime.
|
|
140
|
+
- Tightened persona resolution to explicit saved persona names, ids, and tags/aliases. Relationship phrases such as
|
|
141
|
+
"my wife" or "my son" are no longer treated as persona identifiers by themselves.
|
|
142
|
+
- 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.
|
|
143
|
+
|
|
144
|
+
### Fixed
|
|
145
|
+
|
|
146
|
+
- `--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.
|
|
147
|
+
- Vendor models such as Seedance and GPT Image 2 no longer fall back to SOGNI tokens under `--token-type auto`; they
|
|
148
|
+
require Premium Spark eligibility and fail clearly when that billing path is unavailable.
|
|
149
|
+
- Hosted API chat now keeps saved persona, memory, and personality injection while using the richer Sogni-specific
|
|
150
|
+
prompt, avoiding regressions where media requests could be framed as plain text-only chat.
|
|
151
|
+
- 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.
|
|
152
|
+
|
|
153
|
+
## [3.3.3] - 2026-05-22
|
|
154
|
+
|
|
155
|
+
### Changed
|
|
156
|
+
|
|
157
|
+
- Aligned skill, OpenClaw, and Claude Code plugin version metadata with the npm package version for the release.
|
|
158
|
+
|
|
159
|
+
## [3.3.2] - 2026-05-21
|
|
160
|
+
|
|
161
|
+
### Changed
|
|
162
|
+
|
|
163
|
+
- 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.
|
|
164
|
+
- Bumped `@sogni-ai/sogni-intelligence-client` to `^2.4.1` so npm installs use the current shared Sogni runtime dependency set.
|
|
165
|
+
- Aligned skill, OpenClaw, and Claude Code plugin version metadata with the npm package version for the release.
|
|
166
|
+
|
|
167
|
+
### Fixed
|
|
168
|
+
|
|
169
|
+
- Active persona state now gates only explicit persona-video requests that lack a persona image, instead of broad video-generation requests.
|
|
170
|
+
- Text-only / no-action `finalize_response` guidance now requires a substantive final answer instead of an empty or placeholder summary.
|
|
171
|
+
|
|
172
|
+
## [3.3.1] - 2026-05-21
|
|
173
|
+
|
|
174
|
+
### Added
|
|
175
|
+
|
|
176
|
+
- **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.
|
|
177
|
+
- Regression coverage for Seedance direct-gen local MP3 audio uploads, local V2V source uploads, and vendor policy-failure JSON shaping.
|
|
178
|
+
|
|
179
|
+
### Changed
|
|
180
|
+
|
|
181
|
+
- 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.
|
|
182
|
+
- 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.
|
|
183
|
+
|
|
184
|
+
### Fixed
|
|
185
|
+
|
|
186
|
+
- 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.
|
|
187
|
+
- Seedance invalid audio-format failures now classify as non-retryable parameter errors with actionable MP3 guidance instead of opaque vendor failures.
|
|
188
|
+
|
|
189
|
+
## [3.3.0] - 2026-05-20
|
|
190
|
+
|
|
191
|
+
### Added
|
|
192
|
+
|
|
193
|
+
- **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`.
|
|
194
|
+
- **`--no-update-check`** flag to opt out of the update check for a single run.
|
|
195
|
+
- **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.
|
|
196
|
+
|
|
197
|
+
## [3.2.0] - 2026-05-20
|
|
198
|
+
|
|
199
|
+
### Added
|
|
200
|
+
|
|
201
|
+
- **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).
|
|
202
|
+
- **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.
|
|
203
|
+
- **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.
|
|
204
|
+
- **Hosted-intelligence guidance refresh** in `SKILL.md`, covering the recommended routing through `/v1/chat/completions`, `/v1/creative-agent/workflows`, and `/v1/chat/runs`.
|
|
205
|
+
|
|
206
|
+
### Changed
|
|
207
|
+
|
|
208
|
+
- 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.
|
|
209
|
+
- 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.
|
|
210
|
+
|
|
211
|
+
### Tests
|
|
212
|
+
|
|
213
|
+
- 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.
|
|
214
|
+
|
|
215
|
+
## [3.1.1] - 2026-05-20
|
|
216
|
+
|
|
217
|
+
### Changed
|
|
218
|
+
|
|
219
|
+
- Bumped `@sogni-ai/sogni-intelligence-client` to `^2.2.8` and refreshed the intelligence-client runtime bundle.
|
|
220
|
+
|
|
221
|
+
### Fixed
|
|
222
|
+
|
|
223
|
+
- 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.
|
|
224
|
+
- Republished alongside the renamed `@sogni-ai/sogni-client` package so consumers pulling the latest skill no longer hit the unscoped/legacy client name.
|
|
225
|
+
|
|
226
|
+
## [3.1.0] - 2026-05-20
|
|
227
|
+
|
|
228
|
+
### Added
|
|
229
|
+
|
|
230
|
+
- **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.
|
|
231
|
+
- **`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.
|
|
232
|
+
|
|
233
|
+
### Changed
|
|
234
|
+
|
|
235
|
+
- Bumped `@sogni-ai/sogni-intelligence-client` through `^2.2.4` to `^2.2.6` as the client stabilized.
|
|
236
|
+
|
|
237
|
+
### Fixed
|
|
238
|
+
|
|
239
|
+
- Root SDK is now loaded through a compatible module path so installs on Node module resolvers that disallow deep imports continue to work.
|
|
240
|
+
|
|
241
|
+
## [3.1.0-alpha.1] - 2026-05-20
|
|
242
|
+
|
|
243
|
+
### Changed
|
|
244
|
+
|
|
245
|
+
- Bumped `@sogni-ai/sogni-intelligence-client` to `^2.2.1`.
|
|
246
|
+
|
|
247
|
+
### Fixed
|
|
248
|
+
|
|
249
|
+
- Synced `version.mjs` with `package.json` so the runtime `--version` output matches the published npm version.
|
|
250
|
+
|
|
251
|
+
## [3.1.0-alpha.0] - 2026-05-18
|
|
252
|
+
|
|
253
|
+
### Added
|
|
254
|
+
|
|
255
|
+
- **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.
|
|
256
|
+
- **`--no-filter` now propagates to `safeContentFilter: false`** on the hosted chat body, in addition to the existing per-tool `disableNSFWFilter` plumbing.
|
|
257
|
+
- **`--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.
|
|
258
|
+
- **`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.
|
|
259
|
+
- **Conventional commits tooling.** Adopted commitlint + husky for the strict commit-message rules used across the Sogni ecosystem.
|
|
260
|
+
- **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)
|
|
@@ -76,8 +80,10 @@ With this skill, an agent can:
|
|
|
76
80
|
npx setup-sogni-agent-skill
|
|
77
81
|
```
|
|
78
82
|
|
|
79
|
-
This auto-detects Claude Code, Codex CLI, and Hermes; installs the
|
|
80
|
-
registers the skill into each detected runtime;
|
|
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.)
|
|
81
87
|
|
|
82
88
|
Prefer to do it manually? Install the CLI directly:
|
|
83
89
|
|
|
@@ -88,6 +94,12 @@ With this skill, an agent can:
|
|
|
88
94
|
|
|
89
95
|
Then point your agent runtime at this repository's [`SKILL.md`](./SKILL.md).
|
|
90
96
|
|
|
97
|
+
3. Verify the install:
|
|
98
|
+
|
|
99
|
+
```bash
|
|
100
|
+
sogni-agent doctor
|
|
101
|
+
```
|
|
102
|
+
|
|
91
103
|
Then ask your agent to do something:
|
|
92
104
|
|
|
93
105
|
- "Generate an image of a sunset over mountains"
|
|
@@ -132,15 +144,45 @@ The Claude Code plugin shells out to the `sogni-agent` CLI installed above, so b
|
|
|
132
144
|
|
|
133
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).
|
|
134
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
|
+
|
|
135
171
|
### OpenClaw plugin
|
|
136
172
|
|
|
137
|
-
|
|
173
|
+
The skill is published on ClawHub, so the simplest install is:
|
|
174
|
+
|
|
175
|
+
```bash
|
|
176
|
+
openclaw skills install sogni-creative-agent-skill
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
To install as a code plugin instead, use OpenClaw's `npm:` source prefix (the npm package is scoped, so a bare `openclaw plugins install sogni-creative-agent-skill` will not resolve it):
|
|
138
180
|
|
|
139
181
|
```bash
|
|
140
|
-
openclaw plugins install sogni-creative-agent-skill
|
|
182
|
+
openclaw plugins install npm:@sogni-ai/sogni-creative-agent-skill
|
|
141
183
|
```
|
|
142
184
|
|
|
143
|
-
The installed plugin loads its behavior from [`SKILL.md`](./SKILL.md) via [`openclaw.plugin.json`](./openclaw.plugin.json).
|
|
185
|
+
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.
|
|
144
186
|
|
|
145
187
|
> **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.
|
|
146
188
|
|
|
@@ -172,7 +214,11 @@ The generated `.openclaw-link/` directory is only for OpenClaw; Hermes, Manus, a
|
|
|
172
214
|
|
|
173
215
|
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`.
|
|
174
216
|
|
|
175
|
-
###
|
|
217
|
+
### ChatGPT (Custom GPT)
|
|
218
|
+
|
|
219
|
+
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.
|
|
220
|
+
|
|
221
|
+
### Manus / other SKILL.md frameworks
|
|
176
222
|
|
|
177
223
|
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.
|
|
178
224
|
|
|
@@ -184,6 +230,16 @@ cd sogni-creative-agent-skill
|
|
|
184
230
|
npm install
|
|
185
231
|
```
|
|
186
232
|
|
|
233
|
+
### Verify your install
|
|
234
|
+
|
|
235
|
+
Every install path above ends the same way — run the built-in health check:
|
|
236
|
+
|
|
237
|
+
```bash
|
|
238
|
+
sogni-agent doctor
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
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.
|
|
242
|
+
|
|
187
243
|
### Upgrading safely from inside an agent
|
|
188
244
|
|
|
189
245
|
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.
|
|
@@ -381,6 +437,14 @@ Run `sogni-agent --help` for the full CLI. Below are the options and tables most
|
|
|
381
437
|
| `--last`, `--last-image` | Inspect last render / reuse last image as context or video reference |
|
|
382
438
|
| `--strict-size` | Fail instead of auto-adjusting video size |
|
|
383
439
|
| `--json` | Emit structured output for agents |
|
|
440
|
+
| `-n <count>` | Multiple outputs per call (safety-capped at 16; raise deliberately with `SOGNI_MAX_COUNT`) |
|
|
441
|
+
| `doctor` / `--doctor` | Install health check: Node, credentials, ffmpeg, auth, version (`--json` for agents) |
|
|
442
|
+
| `self-update` | Upgrade the CLI via the detected package manager |
|
|
443
|
+
| `--whats-new [version]` | Show bundled CHANGELOG entries (everything after `<version>` if given) |
|
|
444
|
+
| `--snooze-update` | Snooze the pending-update reminder (1 day → 2 days → 1 week) |
|
|
445
|
+
| `--no-update-check` | Disable the background update check for this run (`SOGNI_NO_UPDATE_CHECK=1` to disable always) |
|
|
446
|
+
| `--video-model <id>` | Override the i2v model used by `--angles-360-video` |
|
|
447
|
+
| `--memory-category <c>` | Category for `--memory-set`: `preference` (default), `fact`, or `context` |
|
|
384
448
|
|
|
385
449
|
### Quality presets
|
|
386
450
|
|
|
@@ -552,8 +616,6 @@ Hosted API credentials are only sent to `https://api.sogni.ai` by default. Add t
|
|
|
552
616
|
hosts with `SOGNI_API_ALLOWED_HOSTS`; loopback or non-HTTPS local testing requires
|
|
553
617
|
`SOGNI_ALLOW_UNSAFE_API_BASE_URL=1`.
|
|
554
618
|
|
|
555
|
-
> 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.
|
|
556
|
-
|
|
557
619
|
---
|
|
558
620
|
|
|
559
621
|
## Dynamic Prompt Variations
|
|
@@ -598,8 +660,10 @@ Tries SPARK first, then falls back to SOGNI if the balance is too low. Vendor mo
|
|
|
598
660
|
|
|
599
661
|
- **Exit codes:** failures use a non-zero exit code with human-readable stderr.
|
|
600
662
|
- **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.
|
|
663
|
+
- **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.
|
|
601
664
|
- **Output files:** use `-o <path>` to save locally; otherwise the CLI prints a result URL.
|
|
602
665
|
- **Quiet mode:** `-q` / `--quiet` suppresses progress output without changing exit semantics.
|
|
666
|
+
- **Interrupts:** Ctrl-C exits with the conventional signal code and cleans up the CLI's temporary files.
|
|
603
667
|
|
|
604
668
|
---
|
|
605
669
|
|
|
@@ -618,41 +682,24 @@ This skill is designed to be loaded into agent runtimes as a first-class capabil
|
|
|
618
682
|
Use `--json` for machine-readable success/error payloads. Use `--last` to read the previous render's metadata.
|
|
619
683
|
5. **Agent-safe install/upgrade**
|
|
620
684
|
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.
|
|
621
|
-
6. **
|
|
622
|
-
|
|
685
|
+
6. **Verify with `doctor`**
|
|
686
|
+
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.
|
|
687
|
+
7. **SSRF / URL safety**
|
|
688
|
+
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.
|
|
623
689
|
|
|
624
690
|
---
|
|
625
691
|
|
|
626
692
|
## Development
|
|
627
693
|
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
Run the test suite:
|
|
694
|
+
Run the unit test suite (works without any Sogni credentials or private repos):
|
|
631
695
|
|
|
632
696
|
```bash
|
|
633
697
|
npm test
|
|
634
698
|
```
|
|
635
699
|
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
With both repos checked out as siblings, refresh the generated runtime before publishing:
|
|
639
|
-
|
|
640
|
-
```bash
|
|
641
|
-
npm run sync:creative-agent-runtime
|
|
642
|
-
```
|
|
643
|
-
|
|
644
|
-
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.
|
|
645
|
-
|
|
646
|
-
Public-skill regex should stay limited to CLI argument/fact extraction such as file paths, URLs, extensions, dimensions, durations, and explicit positions. Hosted-style decisions such as latest-video continuation, uploaded-video modification, image-selection waits, stitch-after-batch state, and repair/control routing belong upstream in typed planner/runtime fields before they are synced here.
|
|
647
|
-
|
|
648
|
-
### Execution boundaries: local CLI vs. hosted surfaces
|
|
649
|
-
|
|
650
|
-
`sogni-agent.mjs` is a **local command-line tool** (`#!/usr/bin/env node`, the package `bin`). It is the only place that may assume a local filesystem and a local `ffmpeg`/`ffprobe` binary. Flags like `--concat-videos`, `--remix-audio`, `--extract-first-frame`, `--extract-last-frame`, and `--angles-360-video` shell out to ffmpeg behind `ensureFfmpegAvailable()` and run only when those flags are passed.
|
|
651
|
-
|
|
652
|
-
Hosted surfaces — including the chat.sogni.ai web app — do **not** run `sogni-agent.mjs`. They consume `@sogni-ai/sogni-intelligence-client` and the hosted `/v1/chat/completions` and `/v1/creative-agent/workflows` APIs, where there is no local ffmpeg and no local filesystem. Therefore:
|
|
700
|
+
Paid integration tests are opt-in: `npm run test:integration` (requires a Sogni API key and submits real GPU jobs).
|
|
653
701
|
|
|
654
|
-
|
|
655
|
-
- Server-side equivalents of these capabilities (e.g. `stitch_video`, `overlay_video`, `extend_video`) live in the hosted creative-agent tool surface and belong upstream, not in the CLI.
|
|
702
|
+
Architecture notes, the private-runtime sync workflow, code-placement policy, and the release process live in [`CONTRIBUTING.md`](./CONTRIBUTING.md).
|
|
656
703
|
|
|
657
704
|
Issues and feature requests: [github.com/Sogni-AI/sogni-creative-agent-skill/issues](https://github.com/Sogni-AI/sogni-creative-agent-skill/issues).
|
|
658
705
|
|