Music Caption Rewriter
T8mars/T8-penguin-canvas
Turn a brief music description and optional tagged lyrics into a professional MiniMax Music 3 structured caption with Global Metadata, Vocal Details, and a section-aware Arrangement.
把剧本转成表演、场面调度、镜头覆盖、景别、机位、运镜与剪辑意图,产出可校验导演镜头包。用于导演方案、拍法、镜头诊断和分镜重构;只要求大纲、剧本或资产设定时不触发。
$ npx skills add suihe1/short-drama-production --skill short-drama-director -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install suihe1/short-drama-production short-drama-director --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/suihe1/short-drama-production.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/short-drama-director .claude/skills/short-drama-director && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "short-drama-director" agent skill from https://github.com/suihe1/short-drama-production/tree/main/skills/short-drama-director into .claude/skills/short-drama-director/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "short-drama-director", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/suihe1/short-drama-production/tree/main/skills/short-drama-directorType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add suihe1/short-drama-production --skill short-drama-director -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install suihe1/short-drama-production short-drama-director --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/suihe1/short-drama-production.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/short-drama-director .agents/skills/short-drama-director && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "short-drama-director" agent skill from https://github.com/suihe1/short-drama-production/tree/main/skills/short-drama-director into .agents/skills/short-drama-director/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "short-drama-director", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add suihe1/short-drama-production --skill short-drama-director -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install suihe1/short-drama-production short-drama-director --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/suihe1/short-drama-production.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/short-drama-director .cursor/skills/short-drama-director && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "short-drama-director" agent skill from https://github.com/suihe1/short-drama-production/tree/main/skills/short-drama-director into .cursor/skills/short-drama-director/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "short-drama-director", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/suihe1/short-drama-production.git --path skills/short-drama-director--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add suihe1/short-drama-production --skill short-drama-director -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install suihe1/short-drama-production short-drama-director --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/suihe1/short-drama-production.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/short-drama-director .gemini/skills/short-drama-director && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "short-drama-director" agent skill from https://github.com/suihe1/short-drama-production/tree/main/skills/short-drama-director into .gemini/skills/short-drama-director/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "short-drama-director", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install suihe1/short-drama-production short-drama-directorInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add suihe1/short-drama-production --skill short-drama-director -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/suihe1/short-drama-production.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/short-drama-director .github/skills/short-drama-director && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "short-drama-director" agent skill from https://github.com/suihe1/short-drama-production/tree/main/skills/short-drama-director into .github/skills/short-drama-director/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "short-drama-director", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add suihe1/short-drama-production --skill short-drama-director -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install suihe1/short-drama-production short-drama-director --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/suihe1/short-drama-production.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/short-drama-director .opencode/skills/short-drama-director && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "short-drama-director" agent skill from https://github.com/suihe1/short-drama-production/tree/main/skills/short-drama-director into .opencode/skills/short-drama-director/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "short-drama-director", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
short-drama-director把剧本转成表演、场面调度、镜头覆盖、景别、机位、运镜与剪辑意图,产出可校验导演镜头包。用于导演方案、拍法、镜头诊断和分镜重构;只要求大纲、剧本或资产设定时不触发。
Short Drama Director is an agent skill from suihe1/short-drama-production. 把剧本转成表演、场面调度、镜头覆盖、景别、机位、运镜与剪辑意图,产出可校验导演镜头包。用于导演方案、拍法、镜头诊断和分镜重构;只要求大纲、剧本或资产设定时不触发。
Its SKILL.md is about 1.2k tokens, which your agent loads only when the skill is triggered. The skill folder holds 11 other files, including scripts and reference files (for example `agents/openai.yaml`, `references/ai-video-production.md` and `references/directing-workflow.md`).
It sits in Media & Creative. It works with MiniMax. The repository describes itself as: AI 短剧生产总控 / 短剧skill:专业导演与分镜、MiniMax H3、CompShare、声音资产、粗剪与 QC,默认 16:9。 The licence is Apache-2.0.
7 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit dbd3310. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Ships 3 files in scripts/ (JavaScript), which the agent can run.
Shell commands in SKILL.md call:
nodeFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Short Drama Director loads about 1.2k tokens when it runs, and up to ~9.5k if it reads all its reference files. Until then it costs about 26 tokens; SKILL.md has 187 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.
The full file from suihe1/short-drama-production at commit dbd3310, republished under its Apache-2.0 licence (© suihe1). 187 words, ~1,162 tokens.
.claude/skills/short-drama-director/SKILL.md (or your agent's skills folder). This skill also uses 8 other files; get the full folder from GitHub.先读用户实际材料与目标,复用已确定的事实和规格;已有剧本、资产或分镜直接进入相关工作,不为流程完整重写上游。未授权的删线、合人、改变人物身份、主题、结局或重要表演意图,先展示原位置、具体方案与得失,再由用户选择;已授权的局部修正直接完成。
下面的类型经验、批次和创作预算是适配起点,不是用户接受过的创作要求。旧校验器可能仍将部分经验规则报为失败:区分实际数据/引用/模型接口错误与创作建议,说明不适用项,保留原稿;不伪造字段、不静默改戏或降低技术投产要求。总控可用时参考其 references/creative-agreement.md;独立任务按本段处理,不强制依赖总控。
把剧本中的戏剧行动,翻译成能拍、能剪、能生成的视听方案。先做导演判断,再做镜头;不要把景别词和运镜词随机贴在台词上。
本文件中的 references/... 与 scripts/... 均相对本 skill 目录。执行脚本时把工作目录设为本 skill 目录,输入与输出文件使用绝对路径;不要假设用户项目根目录恰好包含 scripts/。
开始导演设计前,完整阅读:
references/directing-workflow.md:拆戏、调度、镜头组织和导演复盘。references/visual-grammar.md:景别、机位、镜头运动、轴线、构图、镜头衔接。references/schema.md:director-package.json 的字段与质量门。现实主义题材涉及交通、医疗、办公、公安司法、政务或工业流程时,同时完整阅读 ../short-drama-production/references/reality-grounding.md。先固定真实设备、空间拓扑和人流,再设计调度;不得用“电影感”填补不懂的现实流程。
只有需要 AI 视频生成提示词、模型适配或投产批次时,再读 references/ai-video-production.md。目标为 MiniMax H3 时必须同时使用官方 h3-prompt-writing skill:导演包提供调度、构图、机位、运镜、声音和参考职责,官方 skill 负责最终模式格式。指定模型与参考文档冲突时,以用户给定模型的官方文档为准,并记录采用的模式与假设。
按以下优先级读取输入:
script.json:最佳输入。保留原有集、场、节拍、台词与动作,不改写剧情事实。outline.json 或梗概:可以制作“导演预案”,但要把未落成的台词、动作和连续性标为假设;不要伪装成可直接拍摄的定稿。若缺少画幅、单集时长或生成模型,采用以下默认值并写进 assumptions:优先继承 production.json 和已批准输入;独立任务未指定时采用 16:9、24 fps、按输入目标时长、模型无关。模型无关方案默认后期 TTS;用户明确采用 H3 时,默认 h3-ref2va + h3-native-reference,主要说话角色缺少声音母版就列为缺失资产,不静默改成随机音色。缺失信息不阻断导演设计,除非不同选择会彻底改变叙事或交付形式。
使用脚本将上游 script.json 转成导演骨架:
node scripts/director-kit.mjs seed path/to/script.json > director-package.json每个源动作或台词生成稳定的 beatId。镜头中的 beatRefs 表示该镜头主要承载的节拍;跨镜继续的台词或声音只放入 audioCarryRefs。不漏拍、不凭空添拍,新增内容放入 inventedBeats 并说明必要性。
逐集明确:本集问题、冷开场承诺、关键转折、高潮、结尾悬念、情绪曲线。
逐场明确:谁想要什么、谁/什么阻碍、场内转折、价值变化、权力变化、可利用的空间关系。把抽象情绪改写成可见行为,例如“忍耐”变成“先把证据扣在掌心,再把手摊开”。
先定义人物位置、视线、行动路径、道具交接、进出方向、轴线和空间层次,再选择机位。调度必须制造或改变关系;人物没有行动,摄影机通常也不该无理由游动。
每场至少记录:
geography:观众需要理解的空间关系。axis:主轴及越轴策略。blocking:动作触发点与落位。continuityIn / continuityOut:姿势、视线、道具、屏幕方向和情绪状态。现实敏感场景还必须从 reality-audit.json 继承 mustHave、topology、flow 与 peoplePolicy。导演可以选择观看角度,不能把安检、就诊、办事或生产流程改造成另一行业的通用空间;背景人物也必须服从入口—操作—出口方向。
每个镜头先填 dramaticPurpose,只能为了揭示、隐藏、强调、反应、对比、转移权力、建立空间或完成转场而存在。随后决定:
镜头覆盖要围绕冲突设计。不要机械套“全景—中景—近景—特写”,也不要让每条台词自动获得一个正反打。
严格区分:
scene:一段连续的戏剧行动。clip:一次 AI 视频调用或一个可独立生产的连续片段。shot:剪辑中的一次连续观看。先按戏剧信息与剪辑需要设计 shot 和覆盖关系,再按动作连续性、参考需求和提供方限制打包为 clip。代码使用 clip 容纳 shot 不代表导演先被 API 秒数决定拍法;打包需要改拍法时记录偏差。
先固定 audioRoute:
h3-native-reference:H3 用固定人物声音母版生成新对白;固定角色的默认路线。tts-guided-h3:先用 TTS 生成准确台词音频,再由 H3 复用/参考并生成表演。h3-native-free:H3 自行生成声音,只用于临时样片或无固定身份的声音。tts-post:模型只生成表演与可控环境声,台词交给后期;避免在视频模型提示中重复生成对白。silent:无对白,仅画面或后期音乐设计。再分别确定环境、拟音和音乐来源;多片段短剧默认后期统一配乐。模型提示词必须从结构化镜头字段派生;不要让提示词反过来成为唯一事实源。使用 H3 时严格遵守 references/ai-video-production.md 的模式合同。
每次交付前运行:
node scripts/director-kit.mjs validate director-package.json
node scripts/director-kit.mjs render director-package.json > director-shotlist.md先清零结构错误,再处理警告。验证通过不等于导演成立;还需人工回答:
若答案是否定的,优先修改调度和镜头目的,不要只加形容词。
默认交付:
director-package.json:唯一结构化事实源。director-shotlist.md:便于导演、分镜师、剪辑和生成操作员评审。用户要求诊断时,不擅自覆盖原文件;输出问题、证据、影响和建议修法。用户要求生产时,才生成或更新上述文件。
独立使用时,自检后主动打开当前报告并给绝对路径链接,说明本轮范围、检查重点和下一步;需要锁定内容时在对话中收取通过或修改结论。已有确认覆盖当前版本就不重复询问,打开页面或下载 JSON 不算批准。总控已接管时,由总控统一收取这次结论,不另开重复审批。当前内容、依赖或源图改变后,不因旧文件仍存在就跳过复核;输出新版本并保留原审阅笔记。
本项目的阶段职责、变更记录和交付顺序由 short-drama-production 的 references/company-workflow.md 统一维护;未安装总控时按本 skill 的输入和交付范围独立完成,不将总控变成硬依赖。
每次内容交付运行 validate;只有修改工具代码或遇到疑似工具回归时运行 scripts/selftest.mjs,不要求每次创作重跑开发测试。
涉及尚未授权的创作取舍时,给用户 2–3 个有具体差异的选项,说明收益、损失与推荐,允许保留原稿或自定义。模型先完成阅读、诊断和短样段,不把准备工作推给用户;已经明确授权的范围直接执行。未经用户选择,不把暂定片长预算升级成删词、删情绪段落的理由。
© suihe1, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 8 other files (scripts, references) in skills/short-drama-director of suihe1/short-drama-production.
Open the folder on GitHubat commit dbd3310
Short Drama Director next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Short Drama Director this skillsuihe1/short-drama-production | 181 | — | ~1.2k | Automated safety check: Pass | Apache-2.0 | |
| Music Caption RewriterT8mars/T8-penguin-canvas | 615 | — | ~2.2k | Automated safety check: Pass | MIT | |
| Movie Voice Ttsstraighttttt/movie-commentary-workflow | 135 | — | ~1.1k | Automated safety check: Notes | Apache-2.0 | |
| Podcast Generatorhuangserva/servasyy_skills | 168 | — | ~941 | Automated safety check: Pass | None | |
| Minimax Voice DirectorbozhouDev/video-skills-toolkit | 150 | — | ~667 | Automated safety check: Notes | MIT | |
| Dark Rescue H3karuvanan/MiniMax-H3-Director-Cut-Studio | 131 | — | ~6.1k | Automated safety check: Pass | Custom licence |
T8mars/T8-penguin-canvas
Turn a brief music description and optional tagged lyrics into a professional MiniMax Music 3 structured caption with Global Metadata, Vocal Details, and a section-aware Arrangement.
straighttttt/movie-commentary-workflow
使用千问 Audio 3.0 TTS Plus、MiniMax Speech 2.8 HD 和 Fish Audio S2.1 Pro 生成或克隆电影角色旁白,包括直接复用用户选定的 Fish 公共音色编号并保存原生时间戳;供应商没有原生时间戳时,使用火山引擎语音识别恢复中文字幕或字级时间戳。制作中英文第一人称电影旁白、三模型克隆试音、供应商对比、整篇配音、字幕定时或音文对齐时使用。
huangserva/servasyy_skills
生成自然真实的双人访谈播客,使用共享TTS模块支持3种引擎(Edge TTS / IndexTTS2 / MiniMax)和情感控制
bozhouDev/video-skills-toolkit
用 MiniMax 云端为视频制作可审批的声音导演稿,再生成、挑选和验收人声,最后以定稿音频产生字幕。用于用户明确选择 MiniMax 配音、继续已有 MiniMax 视频配音项目,或明确请求 MiniMax Voice ID/克隆/设计。泛指本地 TTS 或 IndexTTS 不使用本 skill;音乐、BGM、歌曲使用同级 music Skill。
karuvanan/MiniMax-H3-Director-Cut-Studio
Design production-ready MiniMax H3 first-person police or firefighter rescue stories from a short place-based request, using the user's proven dark rain-soaked industrial lighting, physical-damage…
karuvanan/MiniMax-H3-Director-Cut-Studio
Direct a three-phase MiniMax H3 first-person FPV flight: take off near the ground inside P1, complete one 360-degree orbit around P1's primary scene subject, then follow the verified P2 red route…
suihe1/short-drama-production
为 AI 短剧设计场景和叙事道具母本、光照与状态变体,产出 art.json、Markdown、评审报告和可选设定图。用于美术设定、场景与道具一致性;不代替导演调度或成片人流设计。
suihe1/short-drama-production
从故事中整理人物身份、关系、外观和声线设计,产出角色卡、图像提示词与评审报告,可按需生成设定图。用于角色分析、人物画像和角色母本;短剧制作中按已批准大纲与当前批次选角。
suihe1/short-drama-production
把小说或故事改编为短剧大纲,确定人物去留、分集因果、剧情重点与资产预算,产出可校验 JSON、Markdown 和评审报告。用于短剧大纲、改编方案和现有大纲诊断;不写完整剧本或镜头方案。
suihe1/short-drama-production
将分集大纲写成结构化场次、动作节拍和逐句台词,核对人物与美术引用、估算时长并交付剧本评审报告。用于写剧本、对白和场次修订;不分镜、不直接执行配音或视频生成。
suihe1/short-drama-production
将剧本与导演意图转成生成段、逐镜时间、参考素材计划和可校验分镜报告;使用官方 h3-prompt-writing 编写 H3 提示词,可导出投产包。用于技术分镜、镜头表和分镜修订;生成视频须另有明确任务与成本授权,不负责最终选片或剪辑。
suihe1/short-drama-production
统筹 AI 短剧的阶段、依赖、审批、H3 任务、声音资产、粗剪和 QC,并用 production.json 追踪返工;默认支持 16:9。用于整部短剧生产、继续项目、状态检查或上游变更影响分析;单独创作大纲、角色、美术、剧本或分镜时使用对应专业 skill。
Works with
Categories
把剧本转成表演、场面调度、镜头覆盖、景别、机位、运镜与剪辑意图,产出可校验导演镜头包。用于导演方案、拍法、镜头诊断和分镜重构;只要求大纲、剧本或资产设定时不触发。. Short Drama Director is an agent skill from suihe1/short-drama-production.
Short Drama Director fits situations like: media & Creative work in your project.
Run `npx skills add suihe1/short-drama-production --skill short-drama-director -a claude-code`. Or copy the skill folder (skills/short-drama-director in suihe1/short-drama-production) into .claude/skills/short-drama-director in your project. Claude Code loads it when a task matches its description.
Run `npx skills add suihe1/short-drama-production --skill short-drama-director -a codex`. Or copy the skill folder (skills/short-drama-director in suihe1/short-drama-production) into .agents/skills/short-drama-director in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add suihe1/short-drama-production --skill short-drama-director -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/short-drama-director, .gemini/skills/short-drama-director, .github/skills/short-drama-director and .opencode/skills/short-drama-director in your project.
Going by SKILL.md and its folder, Short Drama Director needs JavaScript for the scripts in its folder and the command-line tools its instructions call (node). Our summary lists: Node.js.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Short Drama Director is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 1.2k tokens (SKILL.md is roughly 4.6k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 8.3k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Short Drama Director: Music Caption Rewriter (T8mars/T8-penguin-canvas, 615 stars), Movie Voice Tts (straighttttt/movie-commentary-workflow, 135 stars), Podcast Generator (huangserva/servasyy_skills, 168 stars) and Minimax Voice Director (bozhouDev/video-skills-toolkit, 150 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
suihe1 (a GitHub user) maintains it in suihe1/short-drama-production, which has 181 GitHub stars. The repository holds 7 skills in this directory. The repository was last updated on September 16, 2026.
Source: suihe1/short-drama-production on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.