@laitszkin/apollo-toolkit 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +62 -0
- package/CHANGELOG.md +100 -0
- package/LICENSE +21 -0
- package/README.md +144 -0
- package/align-project-documents/SKILL.md +94 -0
- package/align-project-documents/agents/openai.yaml +4 -0
- package/analyse-app-logs/LICENSE +21 -0
- package/analyse-app-logs/README.md +126 -0
- package/analyse-app-logs/SKILL.md +121 -0
- package/analyse-app-logs/agents/openai.yaml +4 -0
- package/analyse-app-logs/references/investigation-checklist.md +58 -0
- package/analyse-app-logs/references/log-signal-patterns.md +52 -0
- package/answering-questions-with-research/SKILL.md +46 -0
- package/answering-questions-with-research/agents/openai.yaml +4 -0
- package/bin/apollo-toolkit.js +7 -0
- package/commit-and-push/LICENSE +21 -0
- package/commit-and-push/README.md +26 -0
- package/commit-and-push/SKILL.md +70 -0
- package/commit-and-push/agents/openai.yaml +4 -0
- package/commit-and-push/references/branch-naming.md +15 -0
- package/commit-and-push/references/commit-messages.md +19 -0
- package/deep-research-topics/LICENSE +21 -0
- package/deep-research-topics/README.md +43 -0
- package/deep-research-topics/SKILL.md +84 -0
- package/deep-research-topics/agents/openai.yaml +4 -0
- package/develop-new-features/LICENSE +21 -0
- package/develop-new-features/README.md +52 -0
- package/develop-new-features/SKILL.md +105 -0
- package/develop-new-features/agents/openai.yaml +4 -0
- package/develop-new-features/references/testing-e2e.md +35 -0
- package/develop-new-features/references/testing-integration.md +42 -0
- package/develop-new-features/references/testing-property-based.md +44 -0
- package/develop-new-features/references/testing-unit.md +37 -0
- package/discover-edge-cases/CHANGELOG.md +19 -0
- package/discover-edge-cases/LICENSE +21 -0
- package/discover-edge-cases/README.md +87 -0
- package/discover-edge-cases/SKILL.md +124 -0
- package/discover-edge-cases/agents/openai.yaml +4 -0
- package/discover-edge-cases/references/architecture-edge-cases.md +41 -0
- package/discover-edge-cases/references/code-edge-cases.md +46 -0
- package/docs-to-voice/.env.example +106 -0
- package/docs-to-voice/CHANGELOG.md +71 -0
- package/docs-to-voice/LICENSE +21 -0
- package/docs-to-voice/README.md +118 -0
- package/docs-to-voice/SKILL.md +107 -0
- package/docs-to-voice/agents/openai.yaml +4 -0
- package/docs-to-voice/scripts/docs_to_voice.py +1385 -0
- package/docs-to-voice/scripts/docs_to_voice.sh +11 -0
- package/docs-to-voice/tests/test_docs_to_voice_api_max_chars.py +210 -0
- package/docs-to-voice/tests/test_docs_to_voice_sentence_timeline.py +115 -0
- package/docs-to-voice/tests/test_docs_to_voice_settings.py +43 -0
- package/docs-to-voice/tests/test_docs_to_voice_speech_rate.py +57 -0
- package/enhance-existing-features/CHANGELOG.md +35 -0
- package/enhance-existing-features/LICENSE +21 -0
- package/enhance-existing-features/README.md +54 -0
- package/enhance-existing-features/SKILL.md +120 -0
- package/enhance-existing-features/agents/openai.yaml +4 -0
- package/enhance-existing-features/references/e2e-tests.md +25 -0
- package/enhance-existing-features/references/integration-tests.md +30 -0
- package/enhance-existing-features/references/property-based-tests.md +33 -0
- package/enhance-existing-features/references/unit-tests.md +29 -0
- package/feature-propose/LICENSE +21 -0
- package/feature-propose/README.md +23 -0
- package/feature-propose/SKILL.md +107 -0
- package/feature-propose/agents/openai.yaml +4 -0
- package/feature-propose/references/enhancement-features.md +25 -0
- package/feature-propose/references/important-features.md +25 -0
- package/feature-propose/references/mvp-features.md +25 -0
- package/feature-propose/references/performance-features.md +25 -0
- package/financial-research/SKILL.md +208 -0
- package/financial-research/agents/openai.yaml +4 -0
- package/financial-research/assets/weekly_market_report_template.md +45 -0
- package/fix-github-issues/SKILL.md +98 -0
- package/fix-github-issues/agents/openai.yaml +4 -0
- package/fix-github-issues/scripts/list_issues.py +148 -0
- package/fix-github-issues/tests/test_list_issues.py +127 -0
- package/generate-spec/LICENSE +21 -0
- package/generate-spec/README.md +61 -0
- package/generate-spec/SKILL.md +96 -0
- package/generate-spec/agents/openai.yaml +4 -0
- package/generate-spec/references/templates/checklist.md +78 -0
- package/generate-spec/references/templates/spec.md +55 -0
- package/generate-spec/references/templates/tasks.md +35 -0
- package/generate-spec/scripts/create-specs +123 -0
- package/harden-app-security/CHANGELOG.md +27 -0
- package/harden-app-security/LICENSE +21 -0
- package/harden-app-security/README.md +46 -0
- package/harden-app-security/SKILL.md +127 -0
- package/harden-app-security/agents/openai.yaml +4 -0
- package/harden-app-security/references/agent-attack-catalog.md +117 -0
- package/harden-app-security/references/common-software-attack-catalog.md +168 -0
- package/harden-app-security/references/red-team-extreme-scenarios.md +81 -0
- package/harden-app-security/references/risk-checklist.md +78 -0
- package/harden-app-security/references/security-test-patterns-agent.md +101 -0
- package/harden-app-security/references/security-test-patterns-finance.md +88 -0
- package/harden-app-security/references/test-snippets.md +73 -0
- package/improve-observability/SKILL.md +114 -0
- package/improve-observability/agents/openai.yaml +4 -0
- package/learn-skill-from-conversations/CHANGELOG.md +15 -0
- package/learn-skill-from-conversations/LICENSE +22 -0
- package/learn-skill-from-conversations/README.md +47 -0
- package/learn-skill-from-conversations/SKILL.md +85 -0
- package/learn-skill-from-conversations/agents/openai.yaml +4 -0
- package/learn-skill-from-conversations/scripts/extract_recent_conversations.py +369 -0
- package/learn-skill-from-conversations/tests/test_extract_recent_conversations.py +176 -0
- package/learning-error-book/SKILL.md +112 -0
- package/learning-error-book/agents/openai.yaml +4 -0
- package/learning-error-book/assets/error_book_template.md +66 -0
- package/learning-error-book/scripts/render_markdown_to_pdf.py +367 -0
- package/lib/cli.js +338 -0
- package/lib/installer.js +225 -0
- package/maintain-project-constraints/SKILL.md +109 -0
- package/maintain-project-constraints/agents/openai.yaml +4 -0
- package/maintain-skill-catalog/README.md +18 -0
- package/maintain-skill-catalog/SKILL.md +66 -0
- package/maintain-skill-catalog/agents/openai.yaml +4 -0
- package/novel-to-short-video/CHANGELOG.md +53 -0
- package/novel-to-short-video/LICENSE +21 -0
- package/novel-to-short-video/README.md +63 -0
- package/novel-to-short-video/SKILL.md +233 -0
- package/novel-to-short-video/agents/openai.yaml +4 -0
- package/novel-to-short-video/references/plan-template.md +71 -0
- package/novel-to-short-video/references/roles-json.md +41 -0
- package/open-github-issue/LICENSE +21 -0
- package/open-github-issue/README.md +97 -0
- package/open-github-issue/SKILL.md +119 -0
- package/open-github-issue/agents/openai.yaml +4 -0
- package/open-github-issue/scripts/open_github_issue.py +380 -0
- package/open-github-issue/tests/test_open_github_issue.py +159 -0
- package/open-source-pr-workflow/CHANGELOG.md +32 -0
- package/open-source-pr-workflow/LICENSE +21 -0
- package/open-source-pr-workflow/README.md +23 -0
- package/open-source-pr-workflow/SKILL.md +123 -0
- package/open-source-pr-workflow/agents/openai.yaml +4 -0
- package/openai-text-to-image-storyboard/.env.example +10 -0
- package/openai-text-to-image-storyboard/CHANGELOG.md +49 -0
- package/openai-text-to-image-storyboard/LICENSE +21 -0
- package/openai-text-to-image-storyboard/README.md +99 -0
- package/openai-text-to-image-storyboard/SKILL.md +107 -0
- package/openai-text-to-image-storyboard/agents/openai.yaml +4 -0
- package/openai-text-to-image-storyboard/scripts/generate_storyboard_images.py +763 -0
- package/package.json +36 -0
- package/record-spending/SKILL.md +113 -0
- package/record-spending/agents/openai.yaml +4 -0
- package/record-spending/references/account-format.md +33 -0
- package/record-spending/references/workbook-layout.md +84 -0
- package/resolve-review-comments/SKILL.md +122 -0
- package/resolve-review-comments/agents/openai.yaml +4 -0
- package/resolve-review-comments/references/adoption-criteria.md +23 -0
- package/resolve-review-comments/scripts/review_threads.py +425 -0
- package/resolve-review-comments/tests/test_review_threads.py +74 -0
- package/review-change-set/LICENSE +21 -0
- package/review-change-set/README.md +55 -0
- package/review-change-set/SKILL.md +103 -0
- package/review-change-set/agents/openai.yaml +4 -0
- package/review-codebases/LICENSE +21 -0
- package/review-codebases/README.md +67 -0
- package/review-codebases/SKILL.md +109 -0
- package/review-codebases/agents/openai.yaml +4 -0
- package/scripts/install_skills.ps1 +283 -0
- package/scripts/install_skills.sh +262 -0
- package/scripts/validate_openai_agent_config.py +194 -0
- package/scripts/validate_skill_frontmatter.py +110 -0
- package/specs-to-project-docs/LICENSE +21 -0
- package/specs-to-project-docs/README.md +57 -0
- package/specs-to-project-docs/SKILL.md +111 -0
- package/specs-to-project-docs/agents/openai.yaml +4 -0
- package/specs-to-project-docs/references/templates/architecture.md +29 -0
- package/specs-to-project-docs/references/templates/configuration.md +29 -0
- package/specs-to-project-docs/references/templates/developer-guide.md +33 -0
- package/specs-to-project-docs/references/templates/docs-index.md +39 -0
- package/specs-to-project-docs/references/templates/features.md +25 -0
- package/specs-to-project-docs/references/templates/getting-started.md +38 -0
- package/specs-to-project-docs/references/templates/readme.md +49 -0
- package/systematic-debug/LICENSE +21 -0
- package/systematic-debug/README.md +81 -0
- package/systematic-debug/SKILL.md +59 -0
- package/systematic-debug/agents/openai.yaml +4 -0
- package/text-to-short-video/.env.example +36 -0
- package/text-to-short-video/LICENSE +21 -0
- package/text-to-short-video/README.md +82 -0
- package/text-to-short-video/SKILL.md +221 -0
- package/text-to-short-video/agents/openai.yaml +4 -0
- package/text-to-short-video/scripts/enforce_video_aspect_ratio.py +350 -0
- package/version-release/CHANGELOG.md +53 -0
- package/version-release/LICENSE +21 -0
- package/version-release/README.md +28 -0
- package/version-release/SKILL.md +94 -0
- package/version-release/agents/openai.yaml +4 -0
- package/version-release/references/branch-naming.md +15 -0
- package/version-release/references/changelog-writing.md +8 -0
- package/version-release/references/commit-messages.md +19 -0
- package/version-release/references/readme-writing.md +12 -0
- package/version-release/references/semantic-versioning.md +12 -0
- package/video-production/CHANGELOG.md +104 -0
- package/video-production/LICENSE +18 -0
- package/video-production/README.md +68 -0
- package/video-production/SKILL.md +213 -0
- package/video-production/agents/openai.yaml +4 -0
- package/video-production/references/plan-template.md +54 -0
- package/video-production/references/roles-json.md +41 -0
- package/weekly-financial-event-report/SKILL.md +195 -0
- package/weekly-financial-event-report/agents/openai.yaml +4 -0
- package/weekly-financial-event-report/assets/financial_event_report_template.md +53 -0
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: open-source-pr-workflow
|
|
3
|
+
description: PR-focused workflow for open-source repositories. Use when the user asks to prepare a PR branch from existing changes, draft/open/update a PR, or push a ready contribution branch. Do not use this skill for implementing product features or editing business logic; use it after code changes are already prepared. Enforce branch naming as codex/{change_type}/{changes}, open PRs directly by default without waiting for draft confirmation, show drafts only when the user explicitly asks to review them first, default forked repositories to open PRs against the upstream parent repository unless the user explicitly requests the fork, and write PR content in English by default with required sections for related issues or motivation, engineering decisions with rationale, and test results with commands. For code-affecting changes, run discover-edge-cases first, resolve any confirmed findings, and run code-simplifier before opening the PR.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Open Source PR Workflow
|
|
7
|
+
|
|
8
|
+
## Dependencies
|
|
9
|
+
|
|
10
|
+
- Required: none.
|
|
11
|
+
- Conditional: `discover-edge-cases` and `code-simplifier` for code-affecting PRs before opening the PR.
|
|
12
|
+
- Optional: none.
|
|
13
|
+
- Fallback: If a required code-affecting dependency is unavailable, stop and report the missing dependency instead of bypassing the quality gate.
|
|
14
|
+
|
|
15
|
+
## Standards
|
|
16
|
+
|
|
17
|
+
- Evidence: Assume implementation is already prepared, then verify PR scope, repository constraints, and validation commands from the actual change set.
|
|
18
|
+
- Execution: Create a compliant `codex/{change_type}/{changes}` branch, run the required quality gates for code changes, then draft and open the PR.
|
|
19
|
+
- Quality: Target the upstream parent repository by default for forks, keep PR content in English unless requested otherwise, and exclude internal workflow details.
|
|
20
|
+
- Output: Produce a review-ready PR body with motivation, engineering rationale, test commands, and any required issue linkage.
|
|
21
|
+
|
|
22
|
+
## Overview
|
|
23
|
+
|
|
24
|
+
Use this workflow to prepare open-source contributions and open review-ready pull requests with consistent branch naming and PR content quality.
|
|
25
|
+
|
|
26
|
+
## Scope Guardrails
|
|
27
|
+
|
|
28
|
+
- This skill is for PR preparation and PR creation only.
|
|
29
|
+
- Do not use this skill as the primary workflow for implementing features or fixing code.
|
|
30
|
+
- If code changes are still needed, finish implementation in another workflow first, then return to this skill for PR handling.
|
|
31
|
+
|
|
32
|
+
## Workflow
|
|
33
|
+
|
|
34
|
+
### 1) Clarify PR scope
|
|
35
|
+
|
|
36
|
+
- Identify related issue links/IDs and summarize the motivation for the change.
|
|
37
|
+
- Confirm target base branch and contribution constraints from the repository.
|
|
38
|
+
- Detect whether the current repository is a fork (for example with `gh repo view --json isFork,parent,nameWithOwner`).
|
|
39
|
+
- If it is a fork, default the PR destination repository to the upstream parent repository.
|
|
40
|
+
- Only target the fork repository when the user explicitly asks for it.
|
|
41
|
+
|
|
42
|
+
### 2) Create a compliant branch name
|
|
43
|
+
|
|
44
|
+
- Always use this pattern for PR branches: `codex/{change_type}/{changes}`.
|
|
45
|
+
- Convert both `{change_type}` and `{changes}` to lowercase kebab-case (`[a-z0-9-]` only).
|
|
46
|
+
- If the current branch name does not match, create a new compliant branch from current HEAD before opening PR.
|
|
47
|
+
|
|
48
|
+
Example:
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
git checkout -b codex/fix/add-rate-limit-retry
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
### 3) Run dependent skills for code-affecting changes
|
|
55
|
+
|
|
56
|
+
- If the PR includes code changes, run `discover-edge-cases` first to discover unresolved edge-case risks.
|
|
57
|
+
- Resolve any confirmed findings before continuing.
|
|
58
|
+
- Then run `code-simplifier` on the updated changes.
|
|
59
|
+
- Keep both passes minimal and focused on the current PR scope.
|
|
60
|
+
- Use these skills as internal quality gates only; do not include skill/tool names in PR content.
|
|
61
|
+
- If the PR has no code changes, explicitly note that these two skills were not required in internal notes only.
|
|
62
|
+
|
|
63
|
+
### 4) Verify existing changes (no feature implementation in this skill)
|
|
64
|
+
|
|
65
|
+
- Assume code/documentation changes are already prepared before entering this workflow.
|
|
66
|
+
- Do not add new feature implementation in this skill.
|
|
67
|
+
- After the dependent skills step (when required), run relevant checks (lint/test/build) based on repository conventions.
|
|
68
|
+
- Record exact test commands and outcomes for PR content.
|
|
69
|
+
|
|
70
|
+
### 5) Prepare PR content (show draft only on request)
|
|
71
|
+
|
|
72
|
+
- Draft the PR title and full PR body before creating the PR.
|
|
73
|
+
- Keep PR content strictly about the PR itself (motivation, changes, rationale, tests).
|
|
74
|
+
- Do not include internal workflow details such as skill names, tool names, or agent process notes.
|
|
75
|
+
- By default, proceed directly to PR creation after the title/body are ready.
|
|
76
|
+
- Show the draft only when the user explicitly asks to review it before creating the PR.
|
|
77
|
+
- If the user asks for draft edits, revise accordingly and get final confirmation before creating the PR.
|
|
78
|
+
|
|
79
|
+
### 6) Open the PR
|
|
80
|
+
|
|
81
|
+
- Prefer `gh pr create` to open the PR.
|
|
82
|
+
- If the repository is a fork, target the upstream parent repository by default (for example `gh pr create --repo <upstream-owner>/<upstream-repo> --head <fork-owner>:<branch>`).
|
|
83
|
+
- Use the fork as the PR destination only when the user explicitly requests it.
|
|
84
|
+
- Ensure PR title/body are in English by default.
|
|
85
|
+
- Switch language only when the user explicitly requests another language.
|
|
86
|
+
|
|
87
|
+
## Required PR Body Structure
|
|
88
|
+
|
|
89
|
+
Use this structure (or equivalent headings) every time:
|
|
90
|
+
|
|
91
|
+
```markdown
|
|
92
|
+
|
|
93
|
+
## Related Issues / Motivation
|
|
94
|
+
- Related: #<issue-id> (or link)
|
|
95
|
+
- Why this change is needed
|
|
96
|
+
|
|
97
|
+
## Engineering Decisions and Rationale
|
|
98
|
+
- Key implementation choices
|
|
99
|
+
- Why each choice was made
|
|
100
|
+
- Trade-offs considered (if applicable)
|
|
101
|
+
|
|
102
|
+
## Test Results and Commands
|
|
103
|
+
- ✅ `command 1`
|
|
104
|
+
- ✅ `command 2`
|
|
105
|
+
- Summary of outcomes
|
|
106
|
+
|
|
107
|
+
### Test Cases (for complex changes)
|
|
108
|
+
- Case 1: input/scenario -> expected result
|
|
109
|
+
- Case 2: input/scenario -> expected result
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
If tests cannot run locally, state why and provide the closest available validation evidence.
|
|
113
|
+
|
|
114
|
+
## Pre-PR Checklist
|
|
115
|
+
|
|
116
|
+
- Branch name matches `codex/{change_type}/{changes}`.
|
|
117
|
+
- If the user asked to review the draft, they confirmed the final draft before PR creation.
|
|
118
|
+
- If the repository is a fork, PR destination is the upstream parent unless the user explicitly requested the fork.
|
|
119
|
+
- PR body includes all required sections and focuses only on PR-related context.
|
|
120
|
+
- If code changes exist, run `discover-edge-cases`, resolve confirmed findings, and then run `code-simplifier` before opening the PR.
|
|
121
|
+
- PR body does not mention internal skills/tools or agent workflow notes.
|
|
122
|
+
- Test commands and results are explicitly listed.
|
|
123
|
+
- Language defaults to English unless user requests otherwise.
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
interface:
|
|
2
|
+
display_name: "Open Source PR Workflow"
|
|
3
|
+
short_description: "Prepare and open high-quality OSS PRs"
|
|
4
|
+
default_prompt: "Use $open-source-pr-workflow to prepare a pull request for an open-source repository from existing changes, ensure branch names follow codex/{change_type}/{changes}, and default forked repositories to open PRs against the upstream parent repository unless the user explicitly asks for the fork. Open PRs directly by default without waiting for draft confirmation, and only show a draft when the user explicitly asks to review it first. Include related issues or motivation, engineering decisions with rationale, and test results with commands. If code changes are involved, run discover-edge-cases first, resolve any confirmed findings, and run code-simplifier before opening the PR. Keep PR content strictly about the PR itself and do not include internal skill or tool process notes. Do not implement new features in this workflow."
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
OPENAI_API_URL=https://api.openai.com/v1
|
|
2
|
+
OPENAI_API_KEY=
|
|
3
|
+
OPENAI_IMAGE_MODEL=gpt-image-1
|
|
4
|
+
OPENAI_IMAGE_RATIO=4:3
|
|
5
|
+
# Optional
|
|
6
|
+
# OPENAI_IMAGE_RATIO=16:9
|
|
7
|
+
# OPENAI_IMAGE_ASPECT_RATIO=16:9
|
|
8
|
+
# OPENAI_IMAGE_SIZE=1024x768
|
|
9
|
+
# OPENAI_IMAGE_QUALITY=medium
|
|
10
|
+
# OPENAI_IMAGE_STYLE=vivid
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to this project will be documented in this file.
|
|
4
|
+
|
|
5
|
+
## [0.3.0] - 2026-02-15
|
|
6
|
+
|
|
7
|
+
### Added
|
|
8
|
+
- Added structured `--prompts-file` object mode with top-level `characters` and `scenes` for recurring character consistency.
|
|
9
|
+
- Added per-scene character description overrides (`character_descriptions`) that only replace the `description` field while keeping a stable character skeleton.
|
|
10
|
+
- Added support for multi-character scene composition by injecting multiple character skeletons in one generated scene prompt.
|
|
11
|
+
|
|
12
|
+
### Changed
|
|
13
|
+
- Updated skill docs, README, and default agent prompt to require character JSON skeleton workflow for recurring novel characters.
|
|
14
|
+
- CLI values now take precedence over environment variables, including `--api-url` and `--api-key` overrides for API credentials.
|
|
15
|
+
|
|
16
|
+
## [0.2.0] - 2026-02-14
|
|
17
|
+
|
|
18
|
+
### Added
|
|
19
|
+
- Added aspect-ratio center-crop post-processing so outputs match the configured ratio even when providers ignore ratio parameters.
|
|
20
|
+
- Added `source_width` and `source_height` metadata in `storyboard.json` when post-processing changes image dimensions.
|
|
21
|
+
|
|
22
|
+
### Changed
|
|
23
|
+
- Updated docs to clarify ratio-based post-processing behavior and size guidance.
|
|
24
|
+
|
|
25
|
+
## [0.1.1] - 2026-02-14
|
|
26
|
+
|
|
27
|
+
### Added
|
|
28
|
+
- Added `--image-size`/`--size` CLI options and `OPENAI_IMAGE_SIZE` env support for providers that require explicit pixel size.
|
|
29
|
+
- Added generated image dimension metadata (`width`, `height`) and optional `image_size` to `storyboard.json`.
|
|
30
|
+
|
|
31
|
+
### Changed
|
|
32
|
+
- Updated README, SKILL docs, and `.env.example` with size-based guidance when aspect-ratio controls are ignored by a provider.
|
|
33
|
+
|
|
34
|
+
### Fixed
|
|
35
|
+
- Added post-generation aspect-ratio mismatch detection and warning to highlight when providers ignore `aspect_ratio`.
|
|
36
|
+
|
|
37
|
+
## [0.1.0] - 2026-02-14
|
|
38
|
+
|
|
39
|
+
### Added
|
|
40
|
+
- Initial release of the OpenAI text-to-image storyboard skill and generation script.
|
|
41
|
+
- Support for generating ordered storyboard images and `storyboard.json` from direct prompts or a JSON prompts file.
|
|
42
|
+
- OpenAI-compatible image generation support via `/images/generations` with configurable model, ratio, quality, and style.
|
|
43
|
+
|
|
44
|
+
### Changed
|
|
45
|
+
- Clarified skill workflow so the agent starts image generation immediately after receiving article or chapter content.
|
|
46
|
+
- Updated usage docs and agent default prompt to reflect the expected execution flow.
|
|
47
|
+
|
|
48
|
+
### Fixed
|
|
49
|
+
- Default `.env` loading now points to this skill folder instead of the target project directory.
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 tszkinlai
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
# OpenAI Text to Image Storyboard
|
|
2
|
+
|
|
3
|
+
Generate storyboard images in batch via an OpenAI-compatible Image Generation API.
|
|
4
|
+
|
|
5
|
+
Workflow: the agent first decides which prompts are needed, then this tool sends prompts to `/images/generations` and writes outputs to `pictures/<content_name>/`.
|
|
6
|
+
|
|
7
|
+
## Agent execution rules
|
|
8
|
+
|
|
9
|
+
- As soon as article/chapter content is available, split scenes and run the script immediately.
|
|
10
|
+
- Do not stop in suggestion-only mode unless mandatory inputs are missing (for example output project path or content name).
|
|
11
|
+
- Always provide prompts via `--prompts-file` in JSON format.
|
|
12
|
+
- Define `roles.json` schemas in `video-production` or `novel-to-short-video`; do not duplicate role-schema docs in this skill.
|
|
13
|
+
|
|
14
|
+
## Features
|
|
15
|
+
|
|
16
|
+
- Reads `.env` from the skill folder by default (override with `--env-file`)
|
|
17
|
+
- CLI parameters always override environment variables (including `--api-url`, `--api-key`)
|
|
18
|
+
- Loads JSON prompts in one pass via `--prompts-file`
|
|
19
|
+
- Outputs images in order: `01_*.png`, `02_*.png`, ...
|
|
20
|
+
- Generates `storyboard.json` as input/output record
|
|
21
|
+
- Auto-appends `_2`, `_3`, ... when filename collisions exist
|
|
22
|
+
|
|
23
|
+
## Requirements
|
|
24
|
+
|
|
25
|
+
- Python 3.9+
|
|
26
|
+
- Access to an OpenAI-compatible API endpoint
|
|
27
|
+
|
|
28
|
+
## Quick start
|
|
29
|
+
|
|
30
|
+
1. Copy env template in the skill folder
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
cp .env.example .env
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
2. Edit `.env`
|
|
37
|
+
|
|
38
|
+
```dotenv
|
|
39
|
+
OPENAI_API_URL=https://api.openai.com/v1
|
|
40
|
+
OPENAI_API_KEY=your_api_key_here
|
|
41
|
+
OPENAI_IMAGE_MODEL=gpt-image-1
|
|
42
|
+
# Optional
|
|
43
|
+
# OPENAI_IMAGE_RATIO=16:9
|
|
44
|
+
# OPENAI_IMAGE_ASPECT_RATIO=16:9
|
|
45
|
+
# OPENAI_IMAGE_SIZE=1024x768
|
|
46
|
+
# OPENAI_IMAGE_QUALITY=medium
|
|
47
|
+
# OPENAI_IMAGE_STYLE=vivid
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
> Both `OPENAI_IMAGE_RATIO` and `OPENAI_IMAGE_ASPECT_RATIO` are supported; `OPENAI_IMAGE_RATIO` is preferred.
|
|
51
|
+
> If a ratio is provided, the script performs center-crop post-processing to match it.
|
|
52
|
+
> If provider ignores `aspect_ratio`, use `OPENAI_IMAGE_SIZE` (for example `1024x768`).
|
|
53
|
+
> By default, the script reads `/Users/tszkinlai/.codex/skills/openai-text-to-image-storyboard/.env`.
|
|
54
|
+
|
|
55
|
+
3. Run with JSON prompt file
|
|
56
|
+
|
|
57
|
+
```bash
|
|
58
|
+
python scripts/generate_storyboard_images.py \
|
|
59
|
+
--project-dir /path/to/project \
|
|
60
|
+
--env-file /Users/tszkinlai/.codex/skills/openai-text-to-image-storyboard/.env \
|
|
61
|
+
--content-name "1_chapter_title" \
|
|
62
|
+
--prompts-file /path/to/prompts.json
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
Example `prompts.json`:
|
|
66
|
+
|
|
67
|
+
```json
|
|
68
|
+
[
|
|
69
|
+
{
|
|
70
|
+
"title": "Rain Chase",
|
|
71
|
+
"prompt": "cinematic rain-soaked alley, tense running pose, blue neon reflections, dramatic rim light"
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
"title": "Underground Archive",
|
|
75
|
+
"prompt": "ancient underground library, floating dust in warm volumetric light, mysterious atmosphere"
|
|
76
|
+
}
|
|
77
|
+
]
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
If you need multi-character continuity with `roles.json` and structured JSON role specs, refer to `video-production` or `novel-to-short-video`.
|
|
81
|
+
|
|
82
|
+
## Important parameters
|
|
83
|
+
|
|
84
|
+
- `--aspect-ratio`: overrides ratio in `.env` (for example `16:9`, `4:3`) and applies center-crop before output
|
|
85
|
+
- `--image-size` / `--size`: explicit pixel size (for example `1024x768`); useful for providers that only support `size`
|
|
86
|
+
- `--api-url` / `--api-key`: directly override `OPENAI_API_URL` / `OPENAI_API_KEY`
|
|
87
|
+
- If no ratio is provided, model/provider default size is used
|
|
88
|
+
|
|
89
|
+
## Output
|
|
90
|
+
|
|
91
|
+
Output paths:
|
|
92
|
+
|
|
93
|
+
- `pictures/<content_name>/01_<title>.png`
|
|
94
|
+
- `pictures/<content_name>/02_<title>.png`
|
|
95
|
+
- `pictures/<content_name>/storyboard.json`
|
|
96
|
+
|
|
97
|
+
## License
|
|
98
|
+
|
|
99
|
+
MIT, see [LICENSE](LICENSE).
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: openai-text-to-image-storyboard
|
|
3
|
+
description: Generate storyboard images by using agent-decided prompts and calling an OpenAI-compatible image generation API. Use when users want chapters, novels, articles, or scripts converted into image sets under pictures/{content_name}, with API URL and API key loaded from this skill folder's .env by default.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# OpenAI Text to Image Storyboard
|
|
7
|
+
|
|
8
|
+
## Dependencies
|
|
9
|
+
|
|
10
|
+
- Required: none.
|
|
11
|
+
- Conditional: none.
|
|
12
|
+
- Optional: none.
|
|
13
|
+
- Fallback: not applicable.
|
|
14
|
+
|
|
15
|
+
## Standards
|
|
16
|
+
|
|
17
|
+
- Evidence: Generate prompts from the supplied content and require only the minimal mandatory inputs such as project path and content name.
|
|
18
|
+
- Execution: Convert scenes into valid JSON prompts, load the skill-local `.env`, and call the storyboard generator in the same turn whenever possible.
|
|
19
|
+
- Quality: Keep prompts and outputs in narrative order, use only `/images/generations`, and leave role-schema management to the video orchestration skills.
|
|
20
|
+
- Output: Write images plus `storyboard.json` under `pictures/<content_name>/` without overwriting existing filenames.
|
|
21
|
+
|
|
22
|
+
## Overview
|
|
23
|
+
|
|
24
|
+
Let the agent decide which images are needed from the text, then call only `/images/generations` to render them.
|
|
25
|
+
Always save outputs in `pictures/<content_name>/` (example: `pictures/1_chapter_title/`).
|
|
26
|
+
|
|
27
|
+
## Workflow
|
|
28
|
+
|
|
29
|
+
1. Read user text and decide the target scenes in the agent.
|
|
30
|
+
2. Convert scene prompts into a JSON prompt file (`prompts.json`).
|
|
31
|
+
3. As soon as article/chapter content is available, directly run the script (do not stop at suggestion-only mode).
|
|
32
|
+
4. Use this skill folder's `.env` first, then call `/images/generations` to render images.
|
|
33
|
+
5. Save files in narrative order and write `storyboard.json`.
|
|
34
|
+
|
|
35
|
+
## Agent Execution Requirement
|
|
36
|
+
|
|
37
|
+
- After receiving article/chapter/script content, immediately enter generation flow.
|
|
38
|
+
- Convert content into scene prompts and execute the Python script in the same turn whenever possible.
|
|
39
|
+
- Only ask follow-up questions when mandatory inputs are missing (for example: no output project path or no content name).
|
|
40
|
+
- Always provide prompts through `--prompts-file` with valid JSON.
|
|
41
|
+
- Do not define `roles.json` schema in this skill; role schema details belong to `video-production` or `novel-to-short-video`.
|
|
42
|
+
|
|
43
|
+
## Environment Configuration
|
|
44
|
+
|
|
45
|
+
Create `.env` in this skill folder (default path used by script):
|
|
46
|
+
|
|
47
|
+
- `/Users/tszkinlai/.codex/skills/openai-text-to-image-storyboard/.env`
|
|
48
|
+
|
|
49
|
+
You can still override via `--env-file` when needed.
|
|
50
|
+
All CLI parameters take priority over environment variables.
|
|
51
|
+
|
|
52
|
+
- `OPENAI_API_URL` (required)
|
|
53
|
+
- `OPENAI_API_KEY` (required)
|
|
54
|
+
- `OPENAI_IMAGE_MODEL` (optional, default `gpt-image-1`)
|
|
55
|
+
- `OPENAI_IMAGE_RATIO` (optional, e.g. `16:9` / `4:3`; recommended)
|
|
56
|
+
- `OPENAI_IMAGE_ASPECT_RATIO` (optional fallback alias)
|
|
57
|
+
- `OPENAI_IMAGE_SIZE` (optional, e.g. `1024x768`, for providers that expect `size`)
|
|
58
|
+
- `OPENAI_IMAGE_QUALITY` (optional)
|
|
59
|
+
- `OPENAI_IMAGE_STYLE` (optional)
|
|
60
|
+
|
|
61
|
+
A template is provided at:
|
|
62
|
+
- `/Users/tszkinlai/.codex/skills/openai-text-to-image-storyboard/.env.example`
|
|
63
|
+
|
|
64
|
+
## Command
|
|
65
|
+
|
|
66
|
+
Use JSON prompt file:
|
|
67
|
+
|
|
68
|
+
```bash
|
|
69
|
+
python /Users/tszkinlai/.codex/skills/openai-text-to-image-storyboard/scripts/generate_storyboard_images.py \
|
|
70
|
+
--project-dir /path/to/project \
|
|
71
|
+
--env-file /Users/tszkinlai/.codex/skills/openai-text-to-image-storyboard/.env \
|
|
72
|
+
--content-name "1_chapter_title" \
|
|
73
|
+
--prompts-file /path/to/prompts.json
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
`prompts.json` format:
|
|
77
|
+
|
|
78
|
+
```json
|
|
79
|
+
[
|
|
80
|
+
{
|
|
81
|
+
"title": "Rain Chase",
|
|
82
|
+
"prompt": "cinematic rain-soaked alley, tense running pose, blue neon reflections, dramatic rim light"
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
"title": "Underground Archive",
|
|
86
|
+
"prompt": "ancient underground library, floating dust in warm volumetric light, mysterious atmosphere"
|
|
87
|
+
}
|
|
88
|
+
]
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
Notes:
|
|
92
|
+
|
|
93
|
+
- `prompts.json` must be valid JSON.
|
|
94
|
+
- For role-related schema (`roles.json` and recurring-role definitions), follow `video-production` or `novel-to-short-video`.
|
|
95
|
+
- If the provider ignores `aspect_ratio`, pass `--image-size 1024x768` or set `OPENAI_IMAGE_SIZE=1024x768`.
|
|
96
|
+
- You can pass `--api-url` and `--api-key` to override `OPENAI_API_URL` and `OPENAI_API_KEY`.
|
|
97
|
+
- When an aspect ratio is set, the script applies center-crop post-processing so outputs still match the target ratio.
|
|
98
|
+
|
|
99
|
+
## Output Convention
|
|
100
|
+
|
|
101
|
+
Generated files:
|
|
102
|
+
|
|
103
|
+
- `pictures/1_chapter_title/01_rain_chase.png`
|
|
104
|
+
- `pictures/1_chapter_title/02_underground_archive.png`
|
|
105
|
+
- `pictures/1_chapter_title/storyboard.json`
|
|
106
|
+
|
|
107
|
+
If a filename already exists, the script appends `_2`, `_3`, etc. to avoid overwriting.
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
interface:
|
|
2
|
+
display_name: "OpenAI Text to Image Storyboard"
|
|
3
|
+
short_description: "Generate image sets from agent-decided prompts"
|
|
4
|
+
default_prompt: "Use $openai-text-to-image-storyboard to decide scene prompts from text and generate images into pictures/{content_name}/ as soon as content is available. Always provide prompts through a JSON prompts file and run image generation directly when required inputs are present. Load API settings from /Users/tszkinlai/.codex/skills/openai-text-to-image-storyboard/.env by default."
|