@laitszkin/apollo-toolkit 2.12.1 → 2.12.3
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 +1 -0
- package/CHANGELOG.md +16 -0
- package/README.md +1 -0
- package/commit-and-push/README.md +13 -6
- package/commit-and-push/SKILL.md +21 -29
- package/commit-and-push/agents/openai.yaml +1 -1
- package/lib/installer.js +27 -4
- package/novel-to-short-video/SKILL.md +3 -3
- package/open-github-issue/SKILL.md +14 -6
- package/openai-text-to-image-storyboard/README.md +2 -2
- package/openai-text-to-image-storyboard/SKILL.md +4 -4
- package/openai-text-to-image-storyboard/agents/openai.yaml +1 -1
- package/package.json +1 -1
- package/production-sim-debug/SKILL.md +5 -1
- package/scheduled-runtime-health-check/SKILL.md +5 -1
- package/scripts/install_skills.ps1 +25 -5
- package/scripts/install_skills.sh +22 -5
- package/submission-readiness-check/SKILL.md +79 -0
- package/submission-readiness-check/agents/openai.yaml +4 -0
- package/text-to-short-video/README.md +4 -4
- package/text-to-short-video/SKILL.md +4 -4
- package/text-to-short-video/agents/openai.yaml +1 -1
- package/version-release/README.md +17 -8
- package/version-release/SKILL.md +27 -25
- package/version-release/agents/openai.yaml +1 -1
package/AGENTS.md
CHANGED
|
@@ -31,6 +31,7 @@ This repository enables users to install and run a curated set of reusable agent
|
|
|
31
31
|
- Users can read, filter, and inspect remote GitHub issues before planning follow-up work.
|
|
32
32
|
- Users can resolve a GitHub issue end-to-end and push the fix directly to a requested branch without opening a PR.
|
|
33
33
|
- Users can run evidence-first application security audits focused on confirmed vulnerabilities.
|
|
34
|
+
- Users can run a shared submission-readiness pass that synchronizes changelog, project docs, `AGENTS.md`, and completed plan archives before commit, push, PR creation, or release.
|
|
34
35
|
- Users can learn new or improved skills from recent Codex conversation history.
|
|
35
36
|
- Users can audit and maintain the skill catalog itself, including dependency classification and shared-skill extraction decisions.
|
|
36
37
|
- Users can summarize mistakes into separate multiple-choice and long-answer error books backed by structured reference files and rendered PDFs.
|
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,22 @@ All notable changes to this repository are documented in this file.
|
|
|
4
4
|
|
|
5
5
|
## [Unreleased]
|
|
6
6
|
|
|
7
|
+
## [v2.12.3] - 2026-03-30
|
|
8
|
+
|
|
9
|
+
### Changed
|
|
10
|
+
- Strengthen `commit-and-push`, `submission-readiness-check`, and `version-release` so submit flows must actually update root `CHANGELOG.md` `Unreleased` before continuing when the pending code-affecting or user-visible change is missing there.
|
|
11
|
+
- Strengthen `commit-and-push` and `version-release` so `review-change-set` remains conditional, but becomes a blocking requirement whenever the change set includes code changes.
|
|
12
|
+
- Strengthen `version-release` prompts and workflow docs to require reading the current version and existing tag/release state first, and to treat the release as incomplete until the matching commit, tag, and GitHub release all exist.
|
|
13
|
+
- Clarify across submit and release workflows that every conditional gate becomes blocking as soon as its triggering scenario is present, including spec archival and other readiness work.
|
|
14
|
+
- Clarify that `discover-edge-cases` and `harden-app-security` are important risk-driven code review gates that also become blocking whenever the change or release surface says they apply.
|
|
15
|
+
|
|
16
|
+
## [v2.12.2] - 2026-03-29
|
|
17
|
+
|
|
18
|
+
### Changed
|
|
19
|
+
- Update the npm installer and local install scripts to expand `~/` path overrides consistently for managed toolkit homes and target skill directories.
|
|
20
|
+
- Refresh skill docs and agent prompts to replace user-specific absolute home paths with portable `~/`-based examples.
|
|
21
|
+
- Strengthen `production-sim-debug` and `scheduled-runtime-health-check` so bounded runs must verify the actual stop mechanism and treat overruns as contract/tooling bugs to diagnose.
|
|
22
|
+
|
|
7
23
|
## [v2.12.1] - 2026-03-28
|
|
8
24
|
|
|
9
25
|
### Changed
|
package/README.md
CHANGED
|
@@ -43,6 +43,7 @@ A curated skill catalog for Codex, OpenClaw, and Trae with a managed installer t
|
|
|
43
43
|
- scheduled-runtime-health-check
|
|
44
44
|
- shadow-api-model-research
|
|
45
45
|
- solana-development
|
|
46
|
+
- submission-readiness-check
|
|
46
47
|
- systematic-debug
|
|
47
48
|
- text-to-short-video
|
|
48
49
|
- version-release
|
|
@@ -7,12 +7,13 @@ A Codex skill for commit-and-push workflows without release/version operations.
|
|
|
7
7
|
`commit-and-push` helps agents safely submit local changes by:
|
|
8
8
|
|
|
9
9
|
1. Inspecting git status and staged state.
|
|
10
|
-
2. Running `
|
|
11
|
-
3.
|
|
12
|
-
4.
|
|
13
|
-
5. Running
|
|
14
|
-
6.
|
|
15
|
-
7.
|
|
10
|
+
2. Running `review-change-set` as a blocking gate whenever the change set includes code changes.
|
|
11
|
+
3. Running `archive-specs` during submission to convert completed spec sets and archive them, or when existing project docs need normalization.
|
|
12
|
+
4. Keeping root `CHANGELOG.md` `Unreleased` aligned with the actual pending change set, including removing stale conflicting bullets when needed.
|
|
13
|
+
5. Running `align-project-documents` and `maintain-project-constraints` before commit.
|
|
14
|
+
6. Running additional dependency skills for code-affecting diffs when their coverage is needed.
|
|
15
|
+
7. Committing with a concise Conventional Commit message.
|
|
16
|
+
8. Pushing to the current branch.
|
|
16
17
|
|
|
17
18
|
## Scope
|
|
18
19
|
|
|
@@ -26,4 +27,10 @@ If the repository contains a completed spec set, convert it into the categorized
|
|
|
26
27
|
|
|
27
28
|
Treat root `CHANGELOG.md` `Unreleased` as the source of pending release notes: add or refresh only the bullets that match the current change, keep unrelated pending bullets, and remove older conflicting bullets when the new implementation supersedes them.
|
|
28
29
|
|
|
30
|
+
When the diff includes code changes, `review-change-set` is still a conditional dependency, but that condition is considered met and becomes blocking for the submit flow.
|
|
31
|
+
|
|
32
|
+
Apply the same rule to every other conditional gate: if its scenario is met during classification, it becomes blocking before commit rather than a best-effort follow-up.
|
|
33
|
+
|
|
34
|
+
That includes risk-driven review gates such as `discover-edge-cases` and `harden-app-security` whenever the change surface makes them applicable.
|
|
35
|
+
|
|
29
36
|
For release workflows, use `version-release`.
|
package/commit-and-push/SKILL.md
CHANGED
|
@@ -7,16 +7,16 @@ description: "Guide the agent to submit local changes with commit and push only
|
|
|
7
7
|
|
|
8
8
|
## Dependencies
|
|
9
9
|
|
|
10
|
-
- Required: `
|
|
11
|
-
- Conditional: `review-change-set
|
|
10
|
+
- Required: `submission-readiness-check` before the final commit.
|
|
11
|
+
- Conditional: `review-change-set` is required for code-affecting changes; `discover-edge-cases` and `harden-app-security` are important review gates that remain conditional, but become required whenever the reviewed scope or risk profile warrants them.
|
|
12
12
|
- Optional: none.
|
|
13
|
-
- Fallback: If any required dependency is unavailable,
|
|
13
|
+
- Fallback: If any required dependency is unavailable, stop and report the missing dependency.
|
|
14
14
|
|
|
15
15
|
## Standards
|
|
16
16
|
|
|
17
|
-
- Evidence: Inspect git state and classify the change set before deciding which quality gates apply.
|
|
18
|
-
- Execution: Run the required quality-gate skills when applicable,
|
|
19
|
-
- Quality: Re-run relevant validation for runtime changes,
|
|
17
|
+
- Evidence: Inspect git state and classify the change set before deciding which quality gates apply, then compare the actual pending diff against root `CHANGELOG.md` `Unreleased` before committing.
|
|
18
|
+
- Execution: Run the required quality-gate skills when applicable, and treat every conditional gate whose scenario is met as blocking before submission; hand the repository to `submission-readiness-check` for changelog/docs/plan finalization, preserve staging intent, honor any explicit user-specified target branch, then commit and push without release steps; run dependent git mutations sequentially and verify the remote branch actually contains the new local `HEAD` before reporting success.
|
|
19
|
+
- Quality: Re-run relevant validation for runtime changes, preserve unrelated local work safely when branch switching or post-push local sync is required, and do not bypass blocking readiness findings such as missing/stale `Unreleased` bullets or unsynchronized project docs.
|
|
20
20
|
- Output: Produce a concise Conventional Commit, push it to the intended branch, and report any temporary stash/restore or local branch sync that was required.
|
|
21
21
|
|
|
22
22
|
## Overview
|
|
@@ -43,6 +43,7 @@ Load only when needed:
|
|
|
43
43
|
- `repo-specs-ready-for-conversion`: the relevant `spec.md`, `tasks.md`, and `checklist.md` have been updated to reflect the actual outcome of the work, and any unchecked task/decision checkbox that is clearly not selected, replaced, deferred, or `N/A` (for example, E2E intentionally not created) does not by itself mean the spec set is unfinished.
|
|
44
44
|
- `project-doc-structure-mismatch`: existing `README.md` and project docs do not match the categorized structure required by `archive-specs`.
|
|
45
45
|
- Treat a spec set as still active when it documents remaining implementation gaps, follow-up integration work, undecided design work, or deferred tasks that still belong to the same in-flight change.
|
|
46
|
+
- Any conditional gate whose trigger is confirmed by this classification becomes mandatory before commit, including review, spec archival, docs synchronization, and changelog updates.
|
|
46
47
|
3. Resolve branch target before mutating history
|
|
47
48
|
- Treat an explicit user-specified destination such as `main`, `origin/main`, or another named branch as authoritative over the current branch.
|
|
48
49
|
- If the current branch does not match the requested destination, inspect `git status --short` for unrelated local changes before switching branches.
|
|
@@ -50,33 +51,20 @@ Load only when needed:
|
|
|
50
51
|
- If the fix was committed on the wrong branch, move it to the requested branch with safe history-preserving operations such as `cherry-pick`, `merge --ff-only`, or a clean replay; do not force-push unless the user explicitly asks for it.
|
|
51
52
|
- If the user asks to sync the local target branch after pushing, fast-forward or pull that branch locally and then restore any preserved worktree changes.
|
|
52
53
|
4. Run code-affecting dependency skills (when applicable)
|
|
53
|
-
- Run `review-change-set
|
|
54
|
+
- Run `review-change-set` for every code-affecting change before continuing; treat unresolved review findings as blocking.
|
|
55
|
+
- Run `discover-edge-cases` and `harden-app-security` for the same code-affecting scope when the reviewed risk profile or repository context says their coverage is needed; treat them as blocking review gates, not optional polish, whenever that condition is met.
|
|
54
56
|
- Consolidate and resolve all confirmed findings before continuing.
|
|
55
57
|
- Re-run relevant tests when runtime logic changes.
|
|
56
|
-
5.
|
|
57
|
-
-
|
|
58
|
-
- Let
|
|
59
|
-
-
|
|
60
|
-
-
|
|
61
|
-
-
|
|
62
|
-
|
|
63
|
-
6. Run pre-commit sync dependencies
|
|
64
|
-
- Execute `align-project-documents` after spec conversion and code/doc scans are complete.
|
|
65
|
-
- Execute `maintain-project-constraints` immediately before the commit.
|
|
66
|
-
7. Keep changelog synchronized before commit
|
|
67
|
-
- Treat root `CHANGELOG.md` `Unreleased` as the canonical pending release-notes source.
|
|
68
|
-
- Add or update only the bullets that correspond to the actual current change set.
|
|
69
|
-
- Preserve unaffected `Unreleased` bullets from other pending work.
|
|
70
|
-
- If an older `Unreleased` bullet conflicts with, duplicates, or is superseded by the current implementation, rewrite or remove the stale entry instead of leaving both versions behind.
|
|
71
|
-
- Keep section grouping consistent with the repository changelog format.
|
|
72
|
-
8. Keep docs synchronized when needed
|
|
73
|
-
- Apply the output from `archive-specs` when repository specs were converted or existing project docs were normalized into categorized project docs.
|
|
74
|
-
- Apply the output from `align-project-documents` when behavior or usage changed.
|
|
75
|
-
- Apply the output from `maintain-project-constraints` when agent workflow/rules changed.
|
|
76
|
-
9. Commit
|
|
58
|
+
5. Run shared submission readiness
|
|
59
|
+
- Execute `$submission-readiness-check` after code/doc scans are complete and before the final commit.
|
|
60
|
+
- Let it decide whether completed plan sets should be converted, whether project docs or `AGENTS.md` need synchronization, and whether `CHANGELOG.md` is blocking submission.
|
|
61
|
+
- Do not continue to commit while `submission-readiness-check` reports unresolved readiness blockers.
|
|
62
|
+
- Treat root `CHANGELOG.md` `Unreleased` coverage as mandatory for code-affecting or user-visible changes: if the current work is not reflected there yet, update it before committing instead of merely noting the gap.
|
|
63
|
+
- Re-open the final `CHANGELOG.md` diff after readiness updates and confirm the `Unreleased` bullets describe the same scope as the commit you are about to create.
|
|
64
|
+
6. Commit
|
|
77
65
|
- Preserve user staging intent where possible.
|
|
78
66
|
- Write a concise Conventional Commit message using `references/commit-messages.md`.
|
|
79
|
-
|
|
67
|
+
7. Push
|
|
80
68
|
- Push commit(s) to the intended branch.
|
|
81
69
|
- Do not overlap `git commit`, `git push`, branch switching, or post-push sync operations; wait for each mutation to finish before starting the next one.
|
|
82
70
|
- After pushing, verify the remote branch tip matches the local `HEAD`, for example by comparing `git rev-parse HEAD` with the target branch hash from `git rev-parse @{u}` or `git ls-remote --heads <remote> <branch>`.
|
|
@@ -86,6 +74,10 @@ Load only when needed:
|
|
|
86
74
|
## Notes
|
|
87
75
|
|
|
88
76
|
- Never run version bump, tag creation, or changelog release steps in this skill.
|
|
77
|
+
- Treat every scenario-matched gate as blocking before commit, not as an optional reminder to maybe do later.
|
|
78
|
+
- Never skip `review-change-set` for code-affecting changes, and do not continue past review while confirmed findings remain unresolved.
|
|
79
|
+
- Never downgrade `discover-edge-cases` or `harden-app-security` to optional follow-up when the change risk says they apply.
|
|
80
|
+
- Never claim the repository is ready to commit while root `CHANGELOG.md` `Unreleased` is missing the current change or still describes superseded work.
|
|
89
81
|
- If release/version/tag work is requested, use `version-release` instead.
|
|
90
82
|
- If a new branch is required, follow `references/branch-naming.md`.
|
|
91
83
|
- A pushed implementation can still leave an active spec set behind; commit completion and spec archival are separate decisions.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
interface:
|
|
2
2
|
display_name: "Commit and Push"
|
|
3
3
|
short_description: "Submit local changes with commit and push only"
|
|
4
|
-
default_prompt: "Use $commit-and-push to inspect the current git state
|
|
4
|
+
default_prompt: "Use $commit-and-push to inspect the current git state and classify the diff. Treat every conditional gate whose scenario is met as blocking before any commit: if the change set includes code changes, run $review-change-set; if the reviewed risk profile says edge-case or security review is needed, run $discover-edge-cases and $harden-app-security as blocking gates too; if completed specs should be converted or docs need normalization, ensure $archive-specs runs through $submission-readiness-check; if changelog synchronization is needed, complete it before continuing. Then run any additional required code-quality skills, hand the repository to $submission-readiness-check so it can synchronize completed plan archives, project docs, AGENTS.md, and CHANGELOG.md before any commit, confirm root CHANGELOG.md Unreleased reflects the actual pending change set, preserve user staging intent, create a concise Conventional Commit, and push to the intended branch without any versioning or release steps."
|
package/lib/installer.js
CHANGED
|
@@ -11,9 +11,25 @@ function resolveHomeDirectory(env = process.env) {
|
|
|
11
11
|
return env.HOME || env.USERPROFILE || os.homedir();
|
|
12
12
|
}
|
|
13
13
|
|
|
14
|
+
function expandUserPath(inputPath, env = process.env) {
|
|
15
|
+
if (!inputPath) {
|
|
16
|
+
return inputPath;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
if (inputPath === '~') {
|
|
20
|
+
return resolveHomeDirectory(env);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
if (inputPath.startsWith('~/') || inputPath.startsWith('~\\')) {
|
|
24
|
+
return path.join(resolveHomeDirectory(env), inputPath.slice(2));
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
return inputPath;
|
|
28
|
+
}
|
|
29
|
+
|
|
14
30
|
function resolveToolkitHome(env = process.env) {
|
|
15
31
|
if (env.APOLLO_TOOLKIT_HOME) {
|
|
16
|
-
return path.resolve(env.APOLLO_TOOLKIT_HOME);
|
|
32
|
+
return path.resolve(expandUserPath(env.APOLLO_TOOLKIT_HOME, env));
|
|
17
33
|
}
|
|
18
34
|
|
|
19
35
|
return path.join(resolveHomeDirectory(env), '.apollo-toolkit');
|
|
@@ -142,7 +158,9 @@ async function getTargetRoots(modes, env = process.env) {
|
|
|
142
158
|
targets.push({
|
|
143
159
|
mode,
|
|
144
160
|
label: 'Codex',
|
|
145
|
-
root: env.CODEX_SKILLS_DIR
|
|
161
|
+
root: env.CODEX_SKILLS_DIR
|
|
162
|
+
? path.resolve(expandUserPath(env.CODEX_SKILLS_DIR, env))
|
|
163
|
+
: path.join(homeDir, '.codex', 'skills'),
|
|
146
164
|
});
|
|
147
165
|
continue;
|
|
148
166
|
}
|
|
@@ -151,13 +169,17 @@ async function getTargetRoots(modes, env = process.env) {
|
|
|
151
169
|
targets.push({
|
|
152
170
|
mode,
|
|
153
171
|
label: 'Trae',
|
|
154
|
-
root: env.TRAE_SKILLS_DIR
|
|
172
|
+
root: env.TRAE_SKILLS_DIR
|
|
173
|
+
? path.resolve(expandUserPath(env.TRAE_SKILLS_DIR, env))
|
|
174
|
+
: path.join(homeDir, '.trae', 'skills'),
|
|
155
175
|
});
|
|
156
176
|
continue;
|
|
157
177
|
}
|
|
158
178
|
|
|
159
179
|
if (mode === 'openclaw') {
|
|
160
|
-
const openclawHome = env.OPENCLAW_HOME
|
|
180
|
+
const openclawHome = env.OPENCLAW_HOME
|
|
181
|
+
? path.resolve(expandUserPath(env.OPENCLAW_HOME, env))
|
|
182
|
+
: path.join(homeDir, '.openclaw');
|
|
161
183
|
const entries = await fsp.readdir(openclawHome, { withFileTypes: true }).catch(() => []);
|
|
162
184
|
const workspaceNames = entries
|
|
163
185
|
.filter((entry) => entry.isDirectory() && entry.name.startsWith('workspace'))
|
|
@@ -218,6 +240,7 @@ async function installLinks({ toolkitHome, modes, env = process.env, previousSki
|
|
|
218
240
|
}
|
|
219
241
|
|
|
220
242
|
module.exports = {
|
|
243
|
+
expandUserPath,
|
|
221
244
|
VALID_MODES,
|
|
222
245
|
getTargetRoots,
|
|
223
246
|
installLinks,
|
|
@@ -120,9 +120,9 @@ If producing multiple short videos in one request, enforce the same 50-60 second
|
|
|
120
120
|
- Generate images with:
|
|
121
121
|
|
|
122
122
|
```bash
|
|
123
|
-
python
|
|
123
|
+
python ~/.codex/skills/openai-text-to-image-storyboard/scripts/generate_storyboard_images.py \
|
|
124
124
|
--project-dir "<project_dir>" \
|
|
125
|
-
--env-file
|
|
125
|
+
--env-file ~/.codex/skills/openai-text-to-image-storyboard/.env \
|
|
126
126
|
--content-name "<content_name>" \
|
|
127
127
|
--prompts-file "<project_dir>/pictures/<content_name>/prompts.json"
|
|
128
128
|
```
|
|
@@ -133,7 +133,7 @@ python /Users/tszkinlai/.codex/skills/openai-text-to-image-storyboard/scripts/ge
|
|
|
133
133
|
- Generate audio + timeline + SRT:
|
|
134
134
|
|
|
135
135
|
```bash
|
|
136
|
-
python
|
|
136
|
+
python ~/.codex/skills/docs-to-voice/scripts/docs_to_voice.py \
|
|
137
137
|
--project-dir "<project_dir>" \
|
|
138
138
|
--project-name "<content_name>" \
|
|
139
139
|
--text "<loop_narration_script>"
|
|
@@ -38,6 +38,7 @@ It is designed to be reusable by other skills that already know the issue title
|
|
|
38
38
|
- Preserve upstream evidence content; only localize section headers and default fallback text.
|
|
39
39
|
- Make the issue type explicit: `problem`, `feature`, `performance`, `security`, `docs`, or `observability`.
|
|
40
40
|
- For `problem` issues, describe the expected behavior and current behavior with BDD-style `Given / When / Then`, then state the behavioral difference explicitly.
|
|
41
|
+
- Prefer `python3` plus an absolute helper path when invoking bundled scripts; do not assume `python`, relative paths, or the caller's cwd are wired correctly.
|
|
41
42
|
|
|
42
43
|
## Workflow
|
|
43
44
|
|
|
@@ -95,10 +96,16 @@ It is designed to be reusable by other skills that already know the issue title
|
|
|
95
96
|
|
|
96
97
|
Use the bundled script.
|
|
97
98
|
|
|
99
|
+
First resolve:
|
|
100
|
+
|
|
101
|
+
```bash
|
|
102
|
+
SKILL_ROOT=~/.codex/skills/open-github-issue
|
|
103
|
+
```
|
|
104
|
+
|
|
98
105
|
Problem issue:
|
|
99
106
|
|
|
100
107
|
```bash
|
|
101
|
-
|
|
108
|
+
python3 "$SKILL_ROOT/scripts/open_github_issue.py" \
|
|
102
109
|
--issue-type problem \
|
|
103
110
|
--title "[Log] <short symptom>" \
|
|
104
111
|
--problem-description $'Expected Behavior (BDD)\nGiven ...\nWhen ...\nThen ...\n\nCurrent Behavior (BDD)\nGiven ...\nWhen ...\nThen ...\n\nBehavior Gap\n- Expected: ...\n- Actual: ...\n- Difference/Impact: ...\n\nEvidence\n- symptom: ...\n- impact: ...\n- key evidence: ...' \
|
|
@@ -110,7 +117,7 @@ python scripts/open_github_issue.py \
|
|
|
110
117
|
Feature proposal issue:
|
|
111
118
|
|
|
112
119
|
```bash
|
|
113
|
-
|
|
120
|
+
python3 "$SKILL_ROOT/scripts/open_github_issue.py" \
|
|
114
121
|
--issue-type feature \
|
|
115
122
|
--title "[Feature] <short proposal>" \
|
|
116
123
|
--proposal "<what should be added or changed>" \
|
|
@@ -122,7 +129,7 @@ python scripts/open_github_issue.py \
|
|
|
122
129
|
Performance issue:
|
|
123
130
|
|
|
124
131
|
```bash
|
|
125
|
-
|
|
132
|
+
python3 "$SKILL_ROOT/scripts/open_github_issue.py" \
|
|
126
133
|
--issue-type performance \
|
|
127
134
|
--title "[Performance] Slow dashboard query under large tenants" \
|
|
128
135
|
--problem-description "Dashboard loading time degrades sharply once tenant data exceeds current pagination assumptions." \
|
|
@@ -135,7 +142,7 @@ python scripts/open_github_issue.py \
|
|
|
135
142
|
Security issue:
|
|
136
143
|
|
|
137
144
|
```bash
|
|
138
|
-
|
|
145
|
+
python3 "$SKILL_ROOT/scripts/open_github_issue.py" \
|
|
139
146
|
--issue-type security \
|
|
140
147
|
--title "[Security] Missing authorization check on admin export" \
|
|
141
148
|
--problem-description "The admin export endpoint can be reached without verifying the caller's admin role." \
|
|
@@ -150,7 +157,7 @@ python scripts/open_github_issue.py \
|
|
|
150
157
|
Docs issue:
|
|
151
158
|
|
|
152
159
|
```bash
|
|
153
|
-
|
|
160
|
+
python3 "$SKILL_ROOT/scripts/open_github_issue.py" \
|
|
154
161
|
--issue-type docs \
|
|
155
162
|
--title "[Docs] Deployment guide omits required Redis configuration" \
|
|
156
163
|
--problem-description "The deployment guide does not mention the required Redis URL and worker startup order." \
|
|
@@ -162,7 +169,7 @@ python scripts/open_github_issue.py \
|
|
|
162
169
|
Observability issue:
|
|
163
170
|
|
|
164
171
|
```bash
|
|
165
|
-
|
|
172
|
+
python3 "$SKILL_ROOT/scripts/open_github_issue.py" \
|
|
166
173
|
--issue-type observability \
|
|
167
174
|
--title "[Observability] Missing request identifiers in payment retry logs" \
|
|
168
175
|
--problem-description "Retry logs do not include stable request or trace identifiers, so multi-line failures cannot be correlated quickly." \
|
|
@@ -199,3 +206,4 @@ When another skill depends on `open-github-issue`:
|
|
|
199
206
|
## Resources
|
|
200
207
|
|
|
201
208
|
- `scripts/open_github_issue.py`: Deterministic issue publishing helper with auth fallback and README language detection.
|
|
209
|
+
- If the helper path is unavailable or still fails for environment reasons, fall back to direct `gh issue create` or GitHub REST API publishing instead of retrying the same broken relative-path invocation.
|
|
@@ -50,14 +50,14 @@ OPENAI_IMAGE_MODEL=gpt-image-1
|
|
|
50
50
|
> Both `OPENAI_IMAGE_RATIO` and `OPENAI_IMAGE_ASPECT_RATIO` are supported; `OPENAI_IMAGE_RATIO` is preferred.
|
|
51
51
|
> If a ratio is provided, the script performs center-crop post-processing to match it.
|
|
52
52
|
> If provider ignores `aspect_ratio`, use `OPENAI_IMAGE_SIZE` (for example `1024x768`).
|
|
53
|
-
> By default, the script reads
|
|
53
|
+
> By default, the script reads `~/.codex/skills/openai-text-to-image-storyboard/.env`.
|
|
54
54
|
|
|
55
55
|
3. Run with JSON prompt file
|
|
56
56
|
|
|
57
57
|
```bash
|
|
58
58
|
python scripts/generate_storyboard_images.py \
|
|
59
59
|
--project-dir /path/to/project \
|
|
60
|
-
--env-file
|
|
60
|
+
--env-file ~/.codex/skills/openai-text-to-image-storyboard/.env \
|
|
61
61
|
--content-name "1_chapter_title" \
|
|
62
62
|
--prompts-file /path/to/prompts.json
|
|
63
63
|
```
|
|
@@ -44,7 +44,7 @@ Always save outputs in `pictures/<content_name>/` (example: `pictures/1_chapter_
|
|
|
44
44
|
|
|
45
45
|
Create `.env` in this skill folder (default path used by script):
|
|
46
46
|
|
|
47
|
-
-
|
|
47
|
+
- `~/.codex/skills/openai-text-to-image-storyboard/.env`
|
|
48
48
|
|
|
49
49
|
You can still override via `--env-file` when needed.
|
|
50
50
|
All CLI parameters take priority over environment variables.
|
|
@@ -59,16 +59,16 @@ All CLI parameters take priority over environment variables.
|
|
|
59
59
|
- `OPENAI_IMAGE_STYLE` (optional)
|
|
60
60
|
|
|
61
61
|
A template is provided at:
|
|
62
|
-
-
|
|
62
|
+
- `~/.codex/skills/openai-text-to-image-storyboard/.env.example`
|
|
63
63
|
|
|
64
64
|
## Command
|
|
65
65
|
|
|
66
66
|
Use JSON prompt file:
|
|
67
67
|
|
|
68
68
|
```bash
|
|
69
|
-
python
|
|
69
|
+
python ~/.codex/skills/openai-text-to-image-storyboard/scripts/generate_storyboard_images.py \
|
|
70
70
|
--project-dir /path/to/project \
|
|
71
|
-
--env-file
|
|
71
|
+
--env-file ~/.codex/skills/openai-text-to-image-storyboard/.env \
|
|
72
72
|
--content-name "1_chapter_title" \
|
|
73
73
|
--prompts-file /path/to/prompts.json
|
|
74
74
|
```
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
interface:
|
|
2
2
|
display_name: "OpenAI Text to Image Storyboard"
|
|
3
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
|
|
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 ~/.codex/skills/openai-text-to-image-storyboard/.env by default."
|
package/package.json
CHANGED
|
@@ -15,7 +15,7 @@ description: Investigate production or local simulation runs for runtime-toolcha
|
|
|
15
15
|
## Standards
|
|
16
16
|
|
|
17
17
|
- Evidence: Base conclusions on the actual preset, runtime command, logs, SQLite event store, local stub responses, and the code paths that generated them.
|
|
18
|
-
- Execution: Reproduce with the exact scenario first, separate product logic failures from simulation-toolchain failures, make the smallest realistic toolchain fix, and rerun the same bounded scenario to validate.
|
|
18
|
+
- Execution: Reproduce with the exact scenario first, verify the bounded-run contract against the actual script/env implementation before launch, separate product logic failures from simulation-toolchain failures, make the smallest realistic toolchain fix, and rerun the same bounded scenario to validate.
|
|
19
19
|
- Quality: Prefer harness or stub fixes that improve realism over one-off scenario hacks, avoid duplicating existing workflow skills, and record reusable presets when a scenario becomes part of the regular test suite.
|
|
20
20
|
- Output: Return the scenario contract, observed outcomes, root-cause chain, fixes applied, validation evidence, and any remaining realism gaps.
|
|
21
21
|
|
|
@@ -41,6 +41,8 @@ Use this skill to debug simulation workflows where the repository exposes a prod
|
|
|
41
41
|
|
|
42
42
|
- Use the same production/local simulation script the repository already treats as canonical.
|
|
43
43
|
- Prefer a bounded run window with a stable run name and output directory.
|
|
44
|
+
- Before launch, read the script or wrapper that enforces the run duration and confirm the real control surface, such as the exact env var name, CLI flag, shutdown helper, and artifact path conventions.
|
|
45
|
+
- Do not assume a generic `RUNTIME_SECS`-style variable is wired correctly; verify the actual variable names and stop path from code or scripts first.
|
|
44
46
|
- Save and inspect the exact artifacts produced by that run:
|
|
45
47
|
- main runtime log
|
|
46
48
|
- actor or stub logs
|
|
@@ -48,6 +50,7 @@ Use this skill to debug simulation workflows where the repository exposes a prod
|
|
|
48
50
|
- SQLite or other persistence outputs
|
|
49
51
|
- scenario manifest or preset-resolved settings
|
|
50
52
|
- Do not trust older run directories when the user asks about a new execution.
|
|
53
|
+
- If the run exceeds the agreed bounded window, stop it promptly, preserve the partial artifacts, and treat the overrun itself as a toolchain bug or contract mismatch to diagnose.
|
|
51
54
|
|
|
52
55
|
### 3) Audit the artifact chain before diagnosing product logic
|
|
53
56
|
|
|
@@ -143,6 +146,7 @@ Use this skill to debug simulation workflows where the repository exposes a prod
|
|
|
143
146
|
|
|
144
147
|
## Common failure patterns
|
|
145
148
|
|
|
149
|
+
- **Bounded-run contract drift**: the analyst assumes the wrong duration env var, CLI flag, or shutdown path, so the run exceeds the promised window and the captured evidence no longer matches the requested contract.
|
|
146
150
|
- **Wrong artifact source**: the analyst inspects an older SQLite file or the wrong event database and concludes that runtime behavior is missing.
|
|
147
151
|
- **Preset says one thing, harness does another**: scenario names sound right, but the actual matrix or oracle mode does not match the user’s intent.
|
|
148
152
|
- **Stub realism drift**: local quote, swap, or oracle stubs distort pricing, accounts, or program IDs enough to create false failures or false profits.
|
|
@@ -15,7 +15,7 @@ description: Use a background terminal to run a user-specified command immediate
|
|
|
15
15
|
## Standards
|
|
16
16
|
|
|
17
17
|
- Evidence: Anchor every conclusion to the requested command, execution window, startup/shutdown timestamps, captured logs, and concrete runtime signals.
|
|
18
|
-
- Execution: Collect the run contract, use a background terminal, optionally update the code only when the user asks, execute the requested command immediately or in the requested window, capture logs, stop cleanly when bounded, then delegate log review to `analyse-app-logs` only when findings are requested or needed.
|
|
18
|
+
- Execution: Collect the run contract, verify the real stop mechanism before launch, use a background terminal, optionally update the code only when the user asks, execute the requested command immediately or in the requested window, capture logs, stop cleanly when bounded, then delegate log review to `analyse-app-logs` only when findings are requested or needed.
|
|
19
19
|
- Quality: Keep scheduling, execution, and shutdown deterministic; separate confirmed findings from hypotheses; and mark each assessed module healthy/degraded/failed/unknown with reasons.
|
|
20
20
|
- Output: Return the run configuration, execution status, log locations, optional code-update result, optional module health by area, confirmed issues, potential issues, observability gaps, and scheduler status when applicable.
|
|
21
21
|
|
|
@@ -61,6 +61,7 @@ This skill is an orchestration layer. It owns the background terminal session, o
|
|
|
61
61
|
- Use a dedicated background terminal session for the whole workflow.
|
|
62
62
|
- Create a dedicated run folder and record timezone, cwd, requested command, terminal session identifier, and any requested start/end boundaries.
|
|
63
63
|
- Capture stdout and stderr from the beginning of the session so the full run stays auditable.
|
|
64
|
+
- Identify and record the exact bounded-stop mechanism before launch: signal path, wrapper script, env var names, CLI flags, PID capture, and any project-specific shutdown helper.
|
|
64
65
|
3. Optionally update to the latest safe code state
|
|
65
66
|
- Only do this step when the user explicitly asked to update the project before execution.
|
|
66
67
|
- Prefer the repository's normal safe update path, such as `git pull --ff-only`, or the project's documented sync command if one exists.
|
|
@@ -76,8 +77,10 @@ This skill is an orchestration layer. It owns the background terminal session, o
|
|
|
76
77
|
- If readiness never arrives, stop the run, preserve logs, and treat it as a failed startup window.
|
|
77
78
|
6. Observe and stop when bounded
|
|
78
79
|
- If a bounded window or explicit stop time was requested, keep the process running only for that agreed window and then stop it cleanly.
|
|
80
|
+
- Do not rely only on the child command to self-terminate on time; track the wall-clock deadline yourself and enforce the stop sequence when the deadline is reached.
|
|
79
81
|
- Track crashes, restarts, retry storms, timeout bursts, stuck jobs, resource pressure, and repeated warnings during the run.
|
|
80
82
|
- Use the project's normal shutdown path first; if graceful stop fails, escalate deterministically and record the exact stop sequence and timestamps.
|
|
83
|
+
- If the process overruns the agreed window, stop it immediately, mark the run as an overrun, and report whether the cause was a bad wrapper contract, a missing stop hook, or a failed shutdown.
|
|
81
84
|
7. Explain findings from logs when requested
|
|
82
85
|
- If the user asked for findings after completion, wait for the run to finish before analyzing the captured logs.
|
|
83
86
|
- Invoke `analyse-app-logs` on only the captured runtime window.
|
|
@@ -130,6 +133,7 @@ Use this structure in responses:
|
|
|
130
133
|
## Guardrails
|
|
131
134
|
|
|
132
135
|
- Do not let the project continue running past the agreed window unless the user explicitly asks.
|
|
136
|
+
- Do not assume the documented bound is real until the wrapper or script implementation confirms it.
|
|
133
137
|
- Do not perform a code-update step unless the user explicitly asked for it.
|
|
134
138
|
- Do not claim steady-state health from startup-only evidence.
|
|
135
139
|
- Keep the run folder and scheduler metadata so the investigation can be reproduced.
|
|
@@ -29,7 +29,27 @@ Optional environment overrides:
|
|
|
29
29
|
}
|
|
30
30
|
|
|
31
31
|
$ToolkitRepoUrl = if ($env:APOLLO_TOOLKIT_REPO_URL) { $env:APOLLO_TOOLKIT_REPO_URL } else { "https://github.com/LaiTszKin/apollo-toolkit.git" }
|
|
32
|
-
|
|
32
|
+
|
|
33
|
+
function Expand-UserPath {
|
|
34
|
+
param([string]$Path)
|
|
35
|
+
|
|
36
|
+
if ([string]::IsNullOrWhiteSpace($Path)) {
|
|
37
|
+
return $Path
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
if ($Path -eq "~") {
|
|
41
|
+
return $HOME
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
if ($Path.StartsWith("~/") -or $Path.StartsWith('~\')) {
|
|
45
|
+
$trimmed = $Path.Substring(2)
|
|
46
|
+
return Join-Path $HOME $trimmed
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
return $Path
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
$ToolkitHome = if ($env:APOLLO_TOOLKIT_HOME) { Expand-UserPath $env:APOLLO_TOOLKIT_HOME } else { Join-Path $HOME ".apollo-toolkit" }
|
|
33
53
|
|
|
34
54
|
function Show-Banner {
|
|
35
55
|
@"
|
|
@@ -207,7 +227,7 @@ function Install-Codex {
|
|
|
207
227
|
param([string[]]$SkillPaths)
|
|
208
228
|
|
|
209
229
|
$target = if ($env:CODEX_SKILLS_DIR) {
|
|
210
|
-
$env:CODEX_SKILLS_DIR
|
|
230
|
+
Expand-UserPath $env:CODEX_SKILLS_DIR
|
|
211
231
|
}
|
|
212
232
|
else {
|
|
213
233
|
Join-Path $HOME ".codex/skills"
|
|
@@ -223,7 +243,7 @@ function Install-OpenClaw {
|
|
|
223
243
|
param([string[]]$SkillPaths)
|
|
224
244
|
|
|
225
245
|
$openclawHome = if ($env:OPENCLAW_HOME) {
|
|
226
|
-
$env:OPENCLAW_HOME
|
|
246
|
+
Expand-UserPath $env:OPENCLAW_HOME
|
|
227
247
|
}
|
|
228
248
|
else {
|
|
229
249
|
Join-Path $HOME ".openclaw"
|
|
@@ -251,7 +271,7 @@ function Install-Trae {
|
|
|
251
271
|
param([string[]]$SkillPaths)
|
|
252
272
|
|
|
253
273
|
$target = if ($env:TRAE_SKILLS_DIR) {
|
|
254
|
-
$env:TRAE_SKILLS_DIR
|
|
274
|
+
Expand-UserPath $env:TRAE_SKILLS_DIR
|
|
255
275
|
}
|
|
256
276
|
else {
|
|
257
277
|
Join-Path $HOME ".trae/skills"
|
|
@@ -267,7 +287,7 @@ function Install-Agents {
|
|
|
267
287
|
param([string[]]$SkillPaths)
|
|
268
288
|
|
|
269
289
|
$target = if ($env:AGENTS_SKILLS_DIR) {
|
|
270
|
-
$env:AGENTS_SKILLS_DIR
|
|
290
|
+
Expand-UserPath $env:AGENTS_SKILLS_DIR
|
|
271
291
|
}
|
|
272
292
|
else {
|
|
273
293
|
Join-Path $HOME ".agents/skills"
|
|
@@ -25,7 +25,24 @@ USAGE
|
|
|
25
25
|
|
|
26
26
|
SCRIPT_SOURCE="${BASH_SOURCE[0]-}"
|
|
27
27
|
TOOLKIT_REPO_URL="${APOLLO_TOOLKIT_REPO_URL:-https://github.com/LaiTszKin/apollo-toolkit.git}"
|
|
28
|
-
|
|
28
|
+
|
|
29
|
+
expand_user_path() {
|
|
30
|
+
local raw_path="${1-}"
|
|
31
|
+
|
|
32
|
+
case "$raw_path" in
|
|
33
|
+
"~")
|
|
34
|
+
printf '%s\n' "$HOME"
|
|
35
|
+
;;
|
|
36
|
+
"~/"*)
|
|
37
|
+
printf '%s\n' "$HOME/${raw_path#~/}"
|
|
38
|
+
;;
|
|
39
|
+
*)
|
|
40
|
+
printf '%s\n' "$raw_path"
|
|
41
|
+
;;
|
|
42
|
+
esac
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
TOOLKIT_HOME="$(expand_user_path "${APOLLO_TOOLKIT_HOME:-$HOME/.apollo-toolkit}")"
|
|
29
46
|
|
|
30
47
|
show_banner() {
|
|
31
48
|
cat <<'BANNER'
|
|
@@ -94,7 +111,7 @@ replace_with_copy() {
|
|
|
94
111
|
|
|
95
112
|
install_codex() {
|
|
96
113
|
local codex_skills_dir
|
|
97
|
-
codex_skills_dir="${CODEX_SKILLS_DIR:-$HOME/.codex/skills}"
|
|
114
|
+
codex_skills_dir="$(expand_user_path "${CODEX_SKILLS_DIR:-$HOME/.codex/skills}")"
|
|
98
115
|
|
|
99
116
|
echo "Installing to codex: $codex_skills_dir"
|
|
100
117
|
for src in "${SKILL_PATHS[@]}"; do
|
|
@@ -106,7 +123,7 @@ install_openclaw() {
|
|
|
106
123
|
local openclaw_home workspace skills_dir
|
|
107
124
|
local -a workspaces
|
|
108
125
|
|
|
109
|
-
openclaw_home="${OPENCLAW_HOME:-$HOME/.openclaw}"
|
|
126
|
+
openclaw_home="$(expand_user_path "${OPENCLAW_HOME:-$HOME/.openclaw}")"
|
|
110
127
|
|
|
111
128
|
workspaces=()
|
|
112
129
|
while IFS= read -r workspace; do
|
|
@@ -129,7 +146,7 @@ install_openclaw() {
|
|
|
129
146
|
|
|
130
147
|
install_trae() {
|
|
131
148
|
local trae_skills_dir
|
|
132
|
-
trae_skills_dir="${TRAE_SKILLS_DIR:-$HOME/.trae/skills}"
|
|
149
|
+
trae_skills_dir="$(expand_user_path "${TRAE_SKILLS_DIR:-$HOME/.trae/skills}")"
|
|
133
150
|
|
|
134
151
|
echo "Installing to trae: $trae_skills_dir"
|
|
135
152
|
for src in "${SKILL_PATHS[@]}"; do
|
|
@@ -139,7 +156,7 @@ install_trae() {
|
|
|
139
156
|
|
|
140
157
|
install_agents() {
|
|
141
158
|
local agents_skills_dir
|
|
142
|
-
agents_skills_dir="${AGENTS_SKILLS_DIR:-$HOME/.agents/skills}"
|
|
159
|
+
agents_skills_dir="$(expand_user_path "${AGENTS_SKILLS_DIR:-$HOME/.agents/skills}")"
|
|
143
160
|
|
|
144
161
|
echo "Installing to agents: $agents_skills_dir"
|
|
145
162
|
for src in "${SKILL_PATHS[@]}"; do
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: submission-readiness-check
|
|
3
|
+
description: Prepare a repository for safe submission by synchronizing `CHANGELOG.md`, project docs, `AGENTS.md`, and completed planning artifacts before commit, push, PR creation, or release. Use when a workflow is about to submit changes and must avoid missing finalization steps such as stale `Unreleased` notes, unarchived completed spec sets, or unsynchronized agent constraints.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Submission Readiness Check
|
|
7
|
+
|
|
8
|
+
## Dependencies
|
|
9
|
+
|
|
10
|
+
- Required: `align-project-documents` and `maintain-project-constraints` before any git submission step.
|
|
11
|
+
- Conditional: `archive-specs` when completed `spec.md` / `tasks.md` / `checklist.md` sets should be converted into categorized project docs and archived, or when existing project docs need normalization into the standard structure.
|
|
12
|
+
- Optional: none.
|
|
13
|
+
- Fallback: If a required dependency is unavailable, or if spec conversion is required but `archive-specs` is unavailable, stop and report the missing dependency instead of submitting partially synchronized changes.
|
|
14
|
+
|
|
15
|
+
## Standards
|
|
16
|
+
|
|
17
|
+
- Evidence: Inspect the actual git diff, staged set, planning artifacts, `CHANGELOG.md`, and current project docs before declaring the repository ready to submit.
|
|
18
|
+
- Execution: Decide whether the target flow is commit/push, PR, or release; normalize completed spec sets when appropriate; synchronize project docs plus `AGENTS.md`; then enforce changelog readiness before any commit, tag, push, PR creation, or release publishing step.
|
|
19
|
+
- Quality: Treat missing or stale changelog entries as blocking issues for submit workflows, preserve unrelated pending `Unreleased` bullets, do not archive active plan sets that still track unfinished scope, and do not hand back a ready verdict until every conditional gate whose scenario is met has actually been completed.
|
|
20
|
+
- Output: Return a ready-to-submit verdict with the synchronized files and any blocking items that must be fixed before the owning submit workflow continues.
|
|
21
|
+
|
|
22
|
+
## Overview
|
|
23
|
+
|
|
24
|
+
Use this skill as the shared finalization pass before repository submission workflows. It exists to prevent repeated omissions such as forgetting `CHANGELOG.md`, shipping stale project docs, or leaving completed plan sets unarchived.
|
|
25
|
+
|
|
26
|
+
## Workflow
|
|
27
|
+
|
|
28
|
+
### 1) Inventory the real submission surface
|
|
29
|
+
|
|
30
|
+
- Read `git status -sb`, `git diff --stat`, and `git diff --cached --stat`.
|
|
31
|
+
- Check whether the repository has root `CHANGELOG.md`, top-level `AGENTS.md`, and categorized project docs already in use.
|
|
32
|
+
- Inventory planning artifacts across the repository, not only staged files, so completed plan sets are not missed.
|
|
33
|
+
- Classify the intended downstream flow:
|
|
34
|
+
- `commit-push`
|
|
35
|
+
- `pull-request`
|
|
36
|
+
- `release`
|
|
37
|
+
|
|
38
|
+
### 2) Decide whether planning artifacts should be converted
|
|
39
|
+
|
|
40
|
+
- Treat live `spec.md`, `tasks.md`, and `checklist.md` sets semantically instead of mechanically.
|
|
41
|
+
- Run `$archive-specs` when the relevant plan set reflects the delivered outcome, or when project docs still need normalization into the standard categorized structure.
|
|
42
|
+
- Keep a plan set live when it still documents unfinished implementation, unresolved design work, or same-scope follow-up that is intentionally not shipping yet.
|
|
43
|
+
- If the archive scenario is met, treat `$archive-specs` as blocking before returning a ready-to-submit verdict.
|
|
44
|
+
|
|
45
|
+
### 3) Synchronize project docs and constraints
|
|
46
|
+
|
|
47
|
+
- Run `$align-project-documents` after spec conversion or doc inspection is complete.
|
|
48
|
+
- Run `$maintain-project-constraints` immediately before the owning submission workflow mutates git history.
|
|
49
|
+
- Apply the resulting doc and `AGENTS.md` updates when behavior, operator workflow, or standing project rules changed.
|
|
50
|
+
|
|
51
|
+
### 4) Enforce changelog readiness
|
|
52
|
+
|
|
53
|
+
- Treat root `CHANGELOG.md` as the canonical user-facing submission summary when it exists.
|
|
54
|
+
- For `commit-push` and `pull-request` flows:
|
|
55
|
+
- Keep `Unreleased` aligned with the actual pending change set.
|
|
56
|
+
- Add or update only the bullets that correspond to the current work.
|
|
57
|
+
- Preserve unrelated pending bullets from other unshipped work.
|
|
58
|
+
- Remove or rewrite stale bullets when the current implementation supersedes them.
|
|
59
|
+
- If `Unreleased` is missing the current code-affecting or user-visible change, edit `CHANGELOG.md` now instead of returning a warning for another workflow to maybe fix later.
|
|
60
|
+
- For `release` flows:
|
|
61
|
+
- Require a non-empty `Unreleased` section before the release continues.
|
|
62
|
+
- Ensure the release workflow will cut notes directly from curated changelog content instead of reconstructing them from `git diff`.
|
|
63
|
+
- Confirm the `Unreleased` bullets are release-ready before handing control back: they must describe the exact release scope that will be versioned and tagged next.
|
|
64
|
+
- If code-affecting or user-visible changes are about to ship and `CHANGELOG.md` does not reflect them, stop and fix the changelog before continuing.
|
|
65
|
+
|
|
66
|
+
### 5) Hand back a submission verdict
|
|
67
|
+
|
|
68
|
+
- Confirm which files were synchronized:
|
|
69
|
+
- project docs
|
|
70
|
+
- `AGENTS.md`
|
|
71
|
+
- `CHANGELOG.md`
|
|
72
|
+
- archived plan sets
|
|
73
|
+
- If anything remains unsynchronized, report it as a blocking item rather than letting the submit workflow continue optimistically.
|
|
74
|
+
|
|
75
|
+
## Notes
|
|
76
|
+
|
|
77
|
+
- Do not create commits, tags, pushes, PRs, or releases inside this skill.
|
|
78
|
+
- Treat scenario-matched conditional gates such as spec archival, docs synchronization, and changelog updates as blocking readiness work, not optional follow-up.
|
|
79
|
+
- Use this skill as a shared preflight for submit workflows rather than duplicating the same finalization checklist in multiple skills.
|
|
@@ -32,8 +32,8 @@ No mandatory dependencies.
|
|
|
32
32
|
1. Copy env template:
|
|
33
33
|
|
|
34
34
|
```bash
|
|
35
|
-
cp
|
|
36
|
-
|
|
35
|
+
cp ~/.codex/skills/text-to-short-video/.env.example \
|
|
36
|
+
~/.codex/skills/text-to-short-video/.env
|
|
37
37
|
```
|
|
38
38
|
|
|
39
39
|
2. Required values:
|
|
@@ -56,10 +56,10 @@ cp /Users/tszkinlai/.codex/skills/text-to-short-video/.env.example \
|
|
|
56
56
|
If API-generated video ratio/size does not match the target, run:
|
|
57
57
|
|
|
58
58
|
```bash
|
|
59
|
-
python
|
|
59
|
+
python ~/.codex/skills/text-to-short-video/scripts/enforce_video_aspect_ratio.py \
|
|
60
60
|
--input-video "<downloaded_video_path>" \
|
|
61
61
|
--output-video "<final_output_video_path>" \
|
|
62
|
-
--env-file
|
|
62
|
+
--env-file ~/.codex/skills/text-to-short-video/.env \
|
|
63
63
|
--force
|
|
64
64
|
```
|
|
65
65
|
|
|
@@ -82,11 +82,11 @@ Consistency rules:
|
|
|
82
82
|
|
|
83
83
|
Use this template:
|
|
84
84
|
|
|
85
|
-
-
|
|
85
|
+
- `~/.codex/skills/text-to-short-video/.env.example`
|
|
86
86
|
|
|
87
87
|
Copy to:
|
|
88
88
|
|
|
89
|
-
-
|
|
89
|
+
- `~/.codex/skills/text-to-short-video/.env`
|
|
90
90
|
|
|
91
91
|
Required keys:
|
|
92
92
|
|
|
@@ -173,10 +173,10 @@ If provider returns multiple outputs, keep the best one that matches requested s
|
|
|
173
173
|
When output ratio or resolution differs from target, run:
|
|
174
174
|
|
|
175
175
|
```bash
|
|
176
|
-
python
|
|
176
|
+
python ~/.codex/skills/text-to-short-video/scripts/enforce_video_aspect_ratio.py \
|
|
177
177
|
--input-video "<downloaded_video_path>" \
|
|
178
178
|
--output-video "<final_output_video_path>" \
|
|
179
|
-
--env-file
|
|
179
|
+
--env-file ~/.codex/skills/text-to-short-video/.env \
|
|
180
180
|
--force
|
|
181
181
|
```
|
|
182
182
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
interface:
|
|
2
2
|
display_name: "Text to Short Video"
|
|
3
3
|
short_description: "Turn text into 30-60s short videos via API"
|
|
4
|
-
default_prompt: "Use $text-to-short-video to convert my text into one 30-60 second short video using an API-only workflow. Before building the final prompt, load <project_dir>/pictures/<content_name>/roles.json as the role source and keep role consistency: do not modify existing role id/name/appearance/outfit, only update role descriptions for clip-specific actions. Then call an OpenAI-compatible /videos/generations endpoint with settings from
|
|
4
|
+
default_prompt: "Use $text-to-short-video to convert my text into one 30-60 second short video using an API-only workflow. Before building the final prompt, load <project_dir>/pictures/<content_name>/roles.json as the role source and keep role consistency: do not modify existing role id/name/appearance/outfit, only update role descriptions for clip-specific actions. Then call an OpenAI-compatible /videos/generations endpoint with settings from ~/.codex/skills/text-to-short-video/.env, poll until completion, download the MP4, and run post-process crop/resize only when output aspect ratio or size mismatches."
|
|
@@ -7,14 +7,15 @@ A Codex skill for explicit release workflows: code/documentation alignment, vers
|
|
|
7
7
|
`version-release` helps agents perform release work in a repeatable flow:
|
|
8
8
|
|
|
9
9
|
1. Inspect the current repository state and the curated `CHANGELOG.md` `Unreleased` content.
|
|
10
|
-
2. Run
|
|
11
|
-
3. Run
|
|
12
|
-
4.
|
|
13
|
-
5.
|
|
14
|
-
6.
|
|
15
|
-
7.
|
|
16
|
-
8.
|
|
17
|
-
9.
|
|
10
|
+
2. Run `review-change-set` as a blocking gate whenever the release includes code changes.
|
|
11
|
+
3. Run additional quality gates for code-affecting changes when their coverage is needed.
|
|
12
|
+
4. Run `archive-specs` before finalizing the release to convert completed spec sets and archive them, or when existing project docs need normalization.
|
|
13
|
+
5. Align project code and categorized project docs.
|
|
14
|
+
6. Resolve version and tag details by reading the current version and existing tag/release state first.
|
|
15
|
+
7. Update version files and cut the release directly from `CHANGELOG.md` `Unreleased`.
|
|
16
|
+
8. Commit release metadata.
|
|
17
|
+
9. Create and push the release tag.
|
|
18
|
+
10. Publish the matching GitHub release and verify any release-triggered automation.
|
|
18
19
|
|
|
19
20
|
## Scope
|
|
20
21
|
|
|
@@ -29,4 +30,12 @@ If the repository contains a completed spec set, convert it into the categorized
|
|
|
29
30
|
|
|
30
31
|
Do not rebuild release notes from `git diff`. Publish from the already curated root `CHANGELOG.md` `Unreleased` content by moving it into the target version entry and clearing `Unreleased` afterward.
|
|
31
32
|
|
|
33
|
+
When the release includes code changes, `review-change-set` is still a conditional dependency, but that condition is considered met and becomes blocking before any version bump, tag, or release publication.
|
|
34
|
+
|
|
35
|
+
Apply the same rule to every other conditional gate: if its scenario is met during release classification, it becomes blocking before version bumping, tagging, or release publication.
|
|
36
|
+
|
|
37
|
+
That includes risk-driven review gates such as `discover-edge-cases` and `harden-app-security` whenever the release surface makes them applicable.
|
|
38
|
+
|
|
39
|
+
Do not report release completion after only bumping versions or pushing a commit: the matching tag and GitHub release are part of done criteria unless the user explicitly says to skip publication.
|
|
40
|
+
|
|
32
41
|
If the user only wants commit + push, use `commit-and-push`.
|
package/version-release/SKILL.md
CHANGED
|
@@ -7,16 +7,16 @@ description: "Guide the agent to prepare and publish a versioned release (versio
|
|
|
7
7
|
|
|
8
8
|
## Dependencies
|
|
9
9
|
|
|
10
|
-
- Required:
|
|
11
|
-
- Conditional: `review-change-set
|
|
10
|
+
- Required: `submission-readiness-check` before version metadata edits, tagging, or release publication.
|
|
11
|
+
- Conditional: `review-change-set` is required for code-affecting releases before metadata edits and the final commit; `discover-edge-cases` and `harden-app-security` are important review gates that remain conditional, but become required whenever the reviewed scope or risk profile warrants them.
|
|
12
12
|
- Optional: none.
|
|
13
|
-
- Fallback: If a required release dependency is unavailable
|
|
13
|
+
- Fallback: If a required release dependency is unavailable, stop and report the missing dependency.
|
|
14
14
|
|
|
15
15
|
## Standards
|
|
16
16
|
|
|
17
|
-
- Evidence: Inspect the active change set, current version files, and root `CHANGELOG.md` `Unreleased` content before touching version files, tags, or release metadata.
|
|
18
|
-
- Execution: Use this workflow only for explicit release intent, run the required quality gates when applicable,
|
|
19
|
-
- Quality: Never guess versions, align user-facing docs with actual code,
|
|
17
|
+
- Evidence: Inspect the active change set, current version files, existing tag format, existing remote tags/releases, and root `CHANGELOG.md` `Unreleased` content before touching version files, tags, or release metadata.
|
|
18
|
+
- Execution: Use this workflow only for explicit release intent, run the required quality gates when applicable, and treat every conditional gate whose scenario is met as blocking before versioning or publication; hand the repository to `submission-readiness-check` before versioning work, then cut the release directly from `CHANGELOG.md` `Unreleased`, update versions and docs, commit, tag, push, and publish the GitHub release; run git mutations sequentially and verify both the branch tip and release tag exist remotely before publishing the GitHub release.
|
|
19
|
+
- Quality: Never guess versions, align user-facing docs with actual code, do not bypass readiness blockers from `submission-readiness-check`, do not reconstruct release notes from `git diff` when curated changelog content already exists, and do not report release success until the commit, tag, and GitHub release all exist for the same version.
|
|
20
20
|
- Output: Produce a versioned release commit and tag, publish a matching GitHub release, and keep changelog plus relevant repository documentation synchronized.
|
|
21
21
|
|
|
22
22
|
## Overview
|
|
@@ -54,31 +54,27 @@ Load only when needed:
|
|
|
54
54
|
- `repo-specs-present`: the repository contains live project planning artifacts such as `spec.md`, `tasks.md`, `checklist.md`, or plan directories; exclude reference examples, templates, and archived samples.
|
|
55
55
|
- `repo-specs-ready-for-conversion`: the relevant `spec.md`, `tasks.md`, and `checklist.md` reflect the actual delivered outcome, and any unchecked task/decision checkbox that is clearly not selected, replaced, deferred, or `N/A` (for example, E2E intentionally not created) does not by itself mean the spec set is unfinished.
|
|
56
56
|
- `project-doc-structure-mismatch`: existing `README.md` and project docs do not match the categorized structure required by `archive-specs`.
|
|
57
|
-
- For code-affecting changes, run `review-change-set
|
|
57
|
+
- For code-affecting changes, run `review-change-set` for the same release scope before continuing; treat unresolved review findings as blocking.
|
|
58
|
+
- Run `discover-edge-cases` and `harden-app-security` for the same release scope when the reviewed risk profile or repository context says their coverage is needed; treat them as blocking review gates, not optional polish, whenever that condition is met.
|
|
59
|
+
- Any conditional gate whose trigger is confirmed by this classification becomes mandatory before version bumping, tagging, or release publication, including review, spec archival, docs synchronization, and changelog readiness.
|
|
58
60
|
- Consolidate all confirmed findings before continuing.
|
|
59
61
|
- Resolve all confirmed findings before changing version files, tags, or release metadata.
|
|
60
|
-
4.
|
|
61
|
-
-
|
|
62
|
-
- Let
|
|
63
|
-
-
|
|
64
|
-
|
|
65
|
-
- If the docs still show unresolved implementation scope that is neither completed, intentionally deferred, nor explicitly `N/A`, do not convert them yet; report that the spec files remain active and should not be deleted.
|
|
66
|
-
5. Align code and project docs
|
|
67
|
-
- Compare the pending release intent plus current repository behavior with user-facing docs and operational docs to ensure they match actual code behavior.
|
|
68
|
-
- Required alignment targets include project docs such as `README.md`, usage/setup docs, API docs, deployment/runbook docs, and release notes sources when present.
|
|
69
|
-
- After `archive-specs` runs, treat the categorized outputs as the canonical project-doc structure.
|
|
70
|
-
- If existing project docs are present but still use a mixed or non-standard layout, normalize them into the same categorized structure before version bumping or tagging.
|
|
71
|
-
- If mismatches are found, update the relevant project docs before version bumping/tagging.
|
|
72
|
-
6. Decide version and tag format
|
|
62
|
+
4. Run shared submission readiness
|
|
63
|
+
- Execute `$submission-readiness-check` before version file edits, tags, or release publication.
|
|
64
|
+
- Let it decide whether completed plan sets should be archived, whether project docs or `AGENTS.md` need synchronization, and whether `CHANGELOG.md` `Unreleased` is ready to be cut into a versioned release entry.
|
|
65
|
+
- Do not continue while `submission-readiness-check` reports unresolved blockers.
|
|
66
|
+
5. Decide version and tag format
|
|
73
67
|
- Read existing version files (for example `project.toml`, `package.json`, or repo-specific version files).
|
|
74
68
|
- Infer existing tag format (`vX.Y.Z` or `X.Y.Z`) from repository tags.
|
|
69
|
+
- Inspect existing local and remote tags plus any existing GitHub Release for the target version before creating new release metadata, so duplicate or conflicting releases are caught early.
|
|
75
70
|
- If the user provides the target version, use it directly.
|
|
76
71
|
- If it is missing, ask the user for the target version or semver bump type.
|
|
77
72
|
- Provide recommendations only when explicitly requested.
|
|
78
|
-
|
|
73
|
+
- Do not continue until you can state the current version, the intended next version, and the exact tag name that will be created.
|
|
74
|
+
6. Update version files
|
|
79
75
|
- Update every detected version file consistently.
|
|
80
76
|
- Preserve file formatting; change only version values.
|
|
81
|
-
|
|
77
|
+
7. Update release docs
|
|
82
78
|
- Treat root `CHANGELOG.md` `Unreleased` as the canonical pending release content.
|
|
83
79
|
- If `Unreleased` is empty, stop and report that there are no curated release notes to publish yet.
|
|
84
80
|
- Create the new version entry by moving the current `Unreleased` sections under the selected version heading and release date.
|
|
@@ -86,23 +82,29 @@ Load only when needed:
|
|
|
86
82
|
- Remove duplicate section headers or bullets only when the move would otherwise create repeated content.
|
|
87
83
|
- Update `README.md` only when behavior or usage changed.
|
|
88
84
|
- Update `AGENTS.md` only when agent workflow/rules changed.
|
|
89
|
-
|
|
85
|
+
8. Commit and tag
|
|
90
86
|
- Create a release-oriented commit message (for example `chore(release): publish 2.12.1`) when applicable.
|
|
91
87
|
- Create the version tag locally after commit.
|
|
92
|
-
|
|
88
|
+
- Re-read the version files after editing and before tagging to confirm they all match the intended release version.
|
|
89
|
+
9. Push
|
|
93
90
|
- Push commit(s) and the release tag to the current branch before publishing the GitHub release when the hosting platform requires the tag to exist remotely.
|
|
94
91
|
- Do not overlap `git commit`, `git tag`, `git push`, or release-publish steps; wait for each mutation to finish before starting the next one.
|
|
95
92
|
- After pushing, verify the remote branch tip matches local `HEAD`, and verify the release tag exists remotely via `git ls-remote --tags <remote> <tag>`.
|
|
96
93
|
- If any git step finishes ambiguously or the remote hashes do not match local state, rerun the missing step sequentially and re-check before publishing the GitHub release.
|
|
97
|
-
|
|
94
|
+
10. Publish the GitHub release
|
|
98
95
|
- Create a non-draft GitHub release that matches the pushed version tag.
|
|
99
96
|
- Use the release notes from the new `CHANGELOG.md` entry unless the repository has a stronger established release-note source.
|
|
100
97
|
- If the repository has publish automation triggered by `release.published`, ensure the GitHub release is actually published rather than left as a draft.
|
|
101
98
|
- Prefer `gh release create <tag>` or the repository's existing release tool when available.
|
|
102
99
|
- Confirm the GitHub release URL and any triggered publish workflow status in the final report.
|
|
100
|
+
- Never stop after the release commit or tag alone; creating the matching GitHub release is part of done criteria unless the user explicitly says to skip release publication.
|
|
103
101
|
|
|
104
102
|
## Notes
|
|
105
103
|
|
|
106
104
|
- Never guess versions; always read from files and user intent.
|
|
105
|
+
- Treat every scenario-matched gate as blocking before versioning or release publication, not as an optional reminder to maybe do later.
|
|
106
|
+
- Never skip `review-change-set` for code-affecting releases, and do not continue to versioning work while confirmed review findings remain unresolved.
|
|
107
|
+
- Never downgrade `discover-edge-cases` or `harden-app-security` to optional follow-up when the release risk says they apply.
|
|
108
|
+
- Never claim a release is complete without checking the actual release version, creating the matching tag, and publishing the matching GitHub release.
|
|
107
109
|
- If tests are required by repository conventions, run them before commit.
|
|
108
110
|
- If a new branch is required, follow `references/branch-naming.md`.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
interface:
|
|
2
2
|
display_name: "Version Release"
|
|
3
3
|
short_description: "Prepare a versioned release with bump, changelog, tag, GitHub release, and push"
|
|
4
|
-
default_prompt: "Use $version-release only for explicit release/version/tag requests: inspect the current repository state and root CHANGELOG.md Unreleased content,
|
|
4
|
+
default_prompt: "Use $version-release only for explicit release/version/tag requests: inspect the current repository state, read the current version plus existing tag/release state, and inspect root CHANGELOG.md Unreleased content. Treat every conditional gate whose scenario is met as blocking before any version bump, tag, or release step: if the release includes code changes, run $review-change-set; if the reviewed risk profile says edge-case or security review is needed, run $discover-edge-cases and $harden-app-security as blocking gates too; if completed specs should be converted or docs need normalization, ensure $archive-specs runs through $submission-readiness-check; if changelog synchronization is needed, complete it before continuing. Then run any additional required code-quality skills, hand the repository to $submission-readiness-check so completed plan archives, project docs, AGENTS.md, and changelog readiness are settled before any version bump or tag, confirm CHANGELOG.md Unreleased is release-ready, update version files, cut the release directly from CHANGELOG.md Unreleased, create the release commit and matching tag, push commits and tags, and publish the matching GitHub release before reporting success."
|