@laitszkin/apollo-toolkit 2.11.4 → 2.12.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +14 -0
- package/commit-and-push/README.md +7 -4
- package/commit-and-push/SKILL.md +11 -5
- package/commit-and-push/agents/openai.yaml +1 -1
- package/package.json +1 -1
- package/production-sim-debug/SKILL.md +38 -1
- package/scripts/install_skills.ps1 +28 -4
- package/scripts/install_skills.sh +21 -5
- package/version-release/README.md +4 -2
- package/version-release/SKILL.md +19 -19
- package/version-release/agents/openai.yaml +1 -1
- package/version-release/references/changelog-writing.md +4 -0
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,20 @@ All notable changes to this repository are documented in this file.
|
|
|
4
4
|
|
|
5
5
|
## [Unreleased]
|
|
6
6
|
|
|
7
|
+
## [v2.12.1] - 2026-03-28
|
|
8
|
+
|
|
9
|
+
### Changed
|
|
10
|
+
- Update `commit-and-push` so it must keep root `CHANGELOG.md` `Unreleased` aligned with the actual pending change set, preserving unrelated bullets while removing stale conflicting entries.
|
|
11
|
+
- Update `version-release` so releases publish directly from curated root `CHANGELOG.md` `Unreleased` content instead of reconstructing release notes from `git diff`.
|
|
12
|
+
|
|
13
|
+
## [v2.12.0] - 2026-03-28
|
|
14
|
+
|
|
15
|
+
### Added
|
|
16
|
+
- Add `agents` mode to install scripts for copying skills into `~/.agents/skills` directory, supporting agent-skill-compatible software.
|
|
17
|
+
|
|
18
|
+
### Changed
|
|
19
|
+
- Strengthen `production-sim-debug` so simulation investigations must verify protocol-sensitive blame against official docs or upstream source, distinguish liquidation pipeline stages precisely, and explain quote-budget counts as attempts versus unique opportunities.
|
|
20
|
+
|
|
7
21
|
## [v2.11.4] - 2026-03-27
|
|
8
22
|
|
|
9
23
|
### Added
|
|
@@ -8,10 +8,11 @@ A Codex skill for commit-and-push workflows without release/version operations.
|
|
|
8
8
|
|
|
9
9
|
1. Inspecting git status and staged state.
|
|
10
10
|
2. Running `archive-specs` during submission to convert completed spec sets and archive them, or when existing project docs need normalization.
|
|
11
|
-
3.
|
|
12
|
-
4. Running
|
|
13
|
-
5.
|
|
14
|
-
6.
|
|
11
|
+
3. Keeping root `CHANGELOG.md` `Unreleased` aligned with the actual pending change set, including removing stale conflicting bullets when needed.
|
|
12
|
+
4. Running `align-project-documents` and `maintain-project-constraints` before commit.
|
|
13
|
+
5. Running additional dependency skills for code-affecting diffs when their coverage is needed.
|
|
14
|
+
6. Committing with a concise Conventional Commit message.
|
|
15
|
+
7. Pushing to the current branch.
|
|
15
16
|
|
|
16
17
|
## Scope
|
|
17
18
|
|
|
@@ -23,4 +24,6 @@ Use this skill when the user asks to commit/push/submit changes and does **not**
|
|
|
23
24
|
|
|
24
25
|
If the repository contains a completed spec set, convert it into the categorized `archive-specs` project-doc structure during submission and archive the consumed plan files. Treat `spec.md`, `tasks.md`, and `checklist.md` semantically: unchecked task or decision checkboxes do not automatically mean the work is unfinished when the docs clearly show they were not selected, replaced, deferred, or marked `N/A`.
|
|
25
26
|
|
|
27
|
+
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
|
+
|
|
26
29
|
For release workflows, use `version-release`.
|
package/commit-and-push/SKILL.md
CHANGED
|
@@ -15,8 +15,8 @@ description: "Guide the agent to submit local changes with commit and push only
|
|
|
15
15
|
## Standards
|
|
16
16
|
|
|
17
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, convert completed spec sets into categorized project docs during submission, normalize non-standard project docs when needed, 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, keep project docs plus agent constraints synchronized before committing,
|
|
18
|
+
- Execution: Run the required quality-gate skills when applicable, convert completed spec sets into categorized project docs during submission, normalize non-standard project docs when needed, keep `CHANGELOG.md` `Unreleased` aligned with the actual pending change set, 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, keep project docs plus agent constraints synchronized before committing, preserve unrelated local work safely when branch switching or post-push local sync is required, and remove stale or conflicting `Unreleased` bullets when the current change supersedes them; treat `archive-specs` outputs as the canonical project-doc structure when normalization is required.
|
|
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
|
|
@@ -63,14 +63,20 @@ Load only when needed:
|
|
|
63
63
|
6. Run pre-commit sync dependencies
|
|
64
64
|
- Execute `align-project-documents` after spec conversion and code/doc scans are complete.
|
|
65
65
|
- Execute `maintain-project-constraints` immediately before the commit.
|
|
66
|
-
7. Keep
|
|
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
|
|
67
73
|
- Apply the output from `archive-specs` when repository specs were converted or existing project docs were normalized into categorized project docs.
|
|
68
74
|
- Apply the output from `align-project-documents` when behavior or usage changed.
|
|
69
75
|
- Apply the output from `maintain-project-constraints` when agent workflow/rules changed.
|
|
70
|
-
|
|
76
|
+
9. Commit
|
|
71
77
|
- Preserve user staging intent where possible.
|
|
72
78
|
- Write a concise Conventional Commit message using `references/commit-messages.md`.
|
|
73
|
-
|
|
79
|
+
10. Push
|
|
74
80
|
- Push commit(s) to the intended branch.
|
|
75
81
|
- 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.
|
|
76
82
|
- 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>`.
|
|
@@ -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, classify the diff, run required dependency skills ($align-project-documents and $maintain-project-constraints, plus $review-change-set, $discover-edge-cases, and $harden-app-security for code-affecting changes when their coverage is needed), then during submission run $archive-specs to convert any completed spec set into categorized project docs, archive the consumed plans, and normalize existing project docs when needed. Treat spec.md, tasks.md, and checklist.md semantically: unchecked task or decision checkboxes alone do not block conversion when the docs show they were not selected, replaced, deferred, or marked N/A. Then create a concise Conventional Commit and push to the current branch without any versioning or release steps."
|
|
4
|
+
default_prompt: "Use $commit-and-push to inspect the current git state, classify the diff, run required dependency skills ($align-project-documents and $maintain-project-constraints, plus $review-change-set, $discover-edge-cases, and $harden-app-security for code-affecting changes when their coverage is needed), then during submission run $archive-specs to convert any completed spec set into categorized project docs, archive the consumed plans, and normalize existing project docs when needed. Treat spec.md, tasks.md, and checklist.md semantically: unchecked task or decision checkboxes alone do not block conversion when the docs show they were not selected, replaced, deferred, or marked N/A. Keep root CHANGELOG.md Unreleased aligned with the actual pending change set by adding or updating the relevant bullets, preserving unrelated pending bullets, and removing stale conflicting entries when the current change supersedes them. Then create a concise Conventional Commit and push to the current branch without any versioning or release steps."
|
package/package.json
CHANGED
|
@@ -8,7 +8,7 @@ description: Investigate production or local simulation runs for runtime-toolcha
|
|
|
8
8
|
## Dependencies
|
|
9
9
|
|
|
10
10
|
- Required: `systematic-debug` for evidence-first root-cause analysis when a simulation shows failing or missing expected behavior.
|
|
11
|
-
- Conditional: `scheduled-runtime-health-check` when the user wants a bounded production/local simulation run executed and observed; `read-github-issue` when the requested simulation work is driven by a remote issue; `open-github-issue` when confirmed toolchain gaps should be published.
|
|
11
|
+
- Conditional: `scheduled-runtime-health-check` when the user wants a bounded production/local simulation run executed and observed; `read-github-issue` when the requested simulation work is driven by a remote issue; `marginfi-development` when liquidation, health, receivership, or instruction-order conclusions depend on official marginfi docs/source; `jupiter-development` when swap, quote, routing, or rate-limit conclusions depend on official Jupiter docs; `open-github-issue` when confirmed toolchain gaps should be published.
|
|
12
12
|
- Optional: none.
|
|
13
13
|
- Fallback: If the relevant simulation entrypoint, preset, logs, or run artifacts cannot be found, stop and report the missing evidence instead of inferring behavior from stale docs or memory.
|
|
14
14
|
|
|
@@ -63,6 +63,13 @@ Use this skill to debug simulation workflows where the repository exposes a prod
|
|
|
63
63
|
|
|
64
64
|
### 4) Separate product failures from toolchain realism failures
|
|
65
65
|
|
|
66
|
+
- When the suspected blocker touches protocol rules, instruction legality, quote semantics, or liquidation invariants, verify the claim against the relevant official docs or upstream source before assigning blame.
|
|
67
|
+
- For every major blocker, explicitly classify the result as one of:
|
|
68
|
+
- production bot problem
|
|
69
|
+
- simulation environment problem
|
|
70
|
+
- both
|
|
71
|
+
- Treat "both" as a first-class result when a bot bug and a local-harness realism gap are stacked in the same flow.
|
|
72
|
+
|
|
66
73
|
- Classify each blocker into one of these buckets:
|
|
67
74
|
- preset design mismatch
|
|
68
75
|
- runtime scheduling or budget behavior
|
|
@@ -75,6 +82,31 @@ Use this skill to debug simulation workflows where the repository exposes a prod
|
|
|
75
82
|
- If a local stub inflates or distorts profitability, preserve the runtime behavior and calibrate the stub.
|
|
76
83
|
- If a scenario intentionally stresses one dimension, make sure the harness is not accidentally stressing unrelated dimensions.
|
|
77
84
|
|
|
85
|
+
### 4.1) Map the observed failure to the real pipeline stage
|
|
86
|
+
|
|
87
|
+
- Do not treat every `liquidation_event` row as evidence that the run reached verification or execution.
|
|
88
|
+
- Reconstruct the stage explicitly, such as:
|
|
89
|
+
- candidate discovery
|
|
90
|
+
- local estimate
|
|
91
|
+
- solver candidate quote
|
|
92
|
+
- verification or pre-submit re-quote
|
|
93
|
+
- simulation
|
|
94
|
+
- execution
|
|
95
|
+
- When logs or event rows expose `stage`, `bucket`, `reason`, or similar structured fields, use them to explain exactly where the attempt stopped.
|
|
96
|
+
- When the user is confused by counts, distinguish:
|
|
97
|
+
- unique positions
|
|
98
|
+
- candidate attempts
|
|
99
|
+
- quote attempts
|
|
100
|
+
- verification attempts
|
|
101
|
+
- executed liquidations
|
|
102
|
+
|
|
103
|
+
### 4.2) Audit quote-budget behavior before calling the strategy broken
|
|
104
|
+
|
|
105
|
+
- Check whether a high quote count reflects many unique positions or repeated coarse/refinement exploration on the same few positions.
|
|
106
|
+
- Trace how the runtime reserves verification capacity versus non-verification capacity, and explain which bucket was exhausted.
|
|
107
|
+
- If the strategy relies on local oracle estimates before quoting, verify whether the admission threshold is merely "positive estimate" or something stricter before assuming those candidates were all strong.
|
|
108
|
+
- When quote pressure appears unreasonable, tie the explanation back to the actual solver-step count, coarse/refinement selection logic, and the number of cross-mint candidates in the run.
|
|
109
|
+
|
|
78
110
|
### 5) Trace the full decision tree for missed liquidations or remediations
|
|
79
111
|
|
|
80
112
|
- Follow the candidate from discovery through:
|
|
@@ -117,12 +149,17 @@ Use this skill to debug simulation workflows where the repository exposes a prod
|
|
|
117
149
|
- **Overloaded “unknown” failures**: logs contain structured reasons, but the first-pass analysis never decomposes them.
|
|
118
150
|
- **Continuous-mode self-sabotage**: a stress regime intended to stale pull oracles instead makes the runtime’s own primary feeds unusable.
|
|
119
151
|
- **Quote budget starvation**: local filtering improves behavior but still lets low-value cross-mint candidates consume scarce quote capacity before higher-value paths can finish.
|
|
152
|
+
- **Blame assigned too early**: the first visible error gets labeled as either bot or tooling before official docs, upstream source, and run artifacts confirm that attribution.
|
|
153
|
+
- **Phase confusion**: event counts are interpreted as verification or execution attempts even though the run stopped much earlier in candidate quote or pre-submit simulation.
|
|
154
|
+
- **Quote-count misread**: a large total quote count is mistaken for many distinct opportunities when the runtime actually spent repeated exploration quotes on a smaller set of positions.
|
|
120
155
|
|
|
121
156
|
## Output checklist
|
|
122
157
|
|
|
123
158
|
- Name the exact scenario, preset, duration, and run directory.
|
|
124
159
|
- State whether the root cause was product logic, toolchain realism, or both.
|
|
160
|
+
- For protocol-sensitive issues, name the official docs or upstream source used to justify that attribution.
|
|
125
161
|
- Cite the artifact types used: preset, logs, SQLite tables, and code paths.
|
|
162
|
+
- Explain the failing stage in the liquidation pipeline and whether the key counts represent positions, attempts, quotes, or executed outcomes.
|
|
126
163
|
- Summarize the narrow fix and the regression test or rerun evidence.
|
|
127
164
|
- If the final scenario should be reused, state where the preset or docs were added.
|
|
128
165
|
|
|
@@ -9,18 +9,20 @@ $ErrorActionPreference = "Stop"
|
|
|
9
9
|
function Show-Usage {
|
|
10
10
|
@"
|
|
11
11
|
Usage:
|
|
12
|
-
./scripts/install_skills.ps1 [codex|openclaw|trae|all]...
|
|
12
|
+
./scripts/install_skills.ps1 [codex|openclaw|trae|agents|all]...
|
|
13
13
|
|
|
14
14
|
Modes:
|
|
15
15
|
codex Copy skills into ~/.codex/skills
|
|
16
16
|
openclaw Copy skills into ~/.openclaw/workspace*/skills
|
|
17
17
|
trae Copy skills into ~/.trae/skills
|
|
18
|
+
agents Copy skills into ~/.agents/skills (for agent-skill-compatible software)
|
|
18
19
|
all Install all supported targets
|
|
19
20
|
|
|
20
21
|
Optional environment overrides:
|
|
21
22
|
CODEX_SKILLS_DIR Override codex skills destination path
|
|
22
23
|
OPENCLAW_HOME Override openclaw home path
|
|
23
24
|
TRAE_SKILLS_DIR Override trae skills destination path
|
|
25
|
+
AGENTS_SKILLS_DIR Override agents skills destination path
|
|
24
26
|
APOLLO_TOOLKIT_HOME Override local install path used when repo root is unavailable
|
|
25
27
|
APOLLO_TOOLKIT_REPO_URL Override git repository URL used when repo root is unavailable
|
|
26
28
|
"@
|
|
@@ -126,8 +128,9 @@ function Resolve-Modes {
|
|
|
126
128
|
Write-Host "1) codex (~/.codex/skills)"
|
|
127
129
|
Write-Host "2) openclaw (~/.openclaw/workspace*/skills)"
|
|
128
130
|
Write-Host "3) trae (~/.trae/skills)"
|
|
129
|
-
Write-Host "4)
|
|
130
|
-
|
|
131
|
+
Write-Host "4) agents (~/.agents/skills)"
|
|
132
|
+
Write-Host "5) all"
|
|
133
|
+
$inputValue = Read-Host "Enter choice(s) [1-5]"
|
|
131
134
|
|
|
132
135
|
foreach ($rawChoice in ($inputValue -split ",")) {
|
|
133
136
|
$choice = $rawChoice.Trim()
|
|
@@ -135,10 +138,12 @@ function Resolve-Modes {
|
|
|
135
138
|
"1" { Add-ModeOnce -Selected $selected -Mode "codex" }
|
|
136
139
|
"2" { Add-ModeOnce -Selected $selected -Mode "openclaw" }
|
|
137
140
|
"3" { Add-ModeOnce -Selected $selected -Mode "trae" }
|
|
138
|
-
"4" {
|
|
141
|
+
"4" { Add-ModeOnce -Selected $selected -Mode "agents" }
|
|
142
|
+
"5" {
|
|
139
143
|
Add-ModeOnce -Selected $selected -Mode "codex"
|
|
140
144
|
Add-ModeOnce -Selected $selected -Mode "openclaw"
|
|
141
145
|
Add-ModeOnce -Selected $selected -Mode "trae"
|
|
146
|
+
Add-ModeOnce -Selected $selected -Mode "agents"
|
|
142
147
|
}
|
|
143
148
|
default {
|
|
144
149
|
throw "Invalid choice: $choice"
|
|
@@ -152,10 +157,12 @@ function Resolve-Modes {
|
|
|
152
157
|
"codex" { Add-ModeOnce -Selected $selected -Mode "codex" }
|
|
153
158
|
"openclaw" { Add-ModeOnce -Selected $selected -Mode "openclaw" }
|
|
154
159
|
"trae" { Add-ModeOnce -Selected $selected -Mode "trae" }
|
|
160
|
+
"agents" { Add-ModeOnce -Selected $selected -Mode "agents" }
|
|
155
161
|
"all" {
|
|
156
162
|
Add-ModeOnce -Selected $selected -Mode "codex"
|
|
157
163
|
Add-ModeOnce -Selected $selected -Mode "openclaw"
|
|
158
164
|
Add-ModeOnce -Selected $selected -Mode "trae"
|
|
165
|
+
Add-ModeOnce -Selected $selected -Mode "agents"
|
|
159
166
|
}
|
|
160
167
|
default {
|
|
161
168
|
Show-Usage
|
|
@@ -256,6 +263,22 @@ function Install-Trae {
|
|
|
256
263
|
}
|
|
257
264
|
}
|
|
258
265
|
|
|
266
|
+
function Install-Agents {
|
|
267
|
+
param([string[]]$SkillPaths)
|
|
268
|
+
|
|
269
|
+
$target = if ($env:AGENTS_SKILLS_DIR) {
|
|
270
|
+
$env:AGENTS_SKILLS_DIR
|
|
271
|
+
}
|
|
272
|
+
else {
|
|
273
|
+
Join-Path $HOME ".agents/skills"
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
Write-Host "Installing to agents: $target"
|
|
277
|
+
foreach ($src in $SkillPaths) {
|
|
278
|
+
Copy-Skill -Source $src -TargetRoot $target
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
|
|
259
282
|
if ($Modes.Count -gt 0 -and ($Modes[0] -eq "-h" -or $Modes[0] -eq "--help")) {
|
|
260
283
|
Show-Usage
|
|
261
284
|
exit 0
|
|
@@ -269,6 +292,7 @@ foreach ($mode in $selectedModes) {
|
|
|
269
292
|
"codex" { Install-Codex -SkillPaths $skillPaths }
|
|
270
293
|
"openclaw" { Install-OpenClaw -SkillPaths $skillPaths }
|
|
271
294
|
"trae" { Install-Trae -SkillPaths $skillPaths }
|
|
295
|
+
"agents" { Install-Agents -SkillPaths $skillPaths }
|
|
272
296
|
default { throw "Unknown mode: $mode" }
|
|
273
297
|
}
|
|
274
298
|
}
|
|
@@ -4,18 +4,20 @@ set -euo pipefail
|
|
|
4
4
|
usage() {
|
|
5
5
|
cat <<"USAGE"
|
|
6
6
|
Usage:
|
|
7
|
-
./scripts/install_skills.sh [codex|openclaw|trae|all]...
|
|
7
|
+
./scripts/install_skills.sh [codex|openclaw|trae|agents|all]...
|
|
8
8
|
|
|
9
9
|
Modes:
|
|
10
10
|
codex Copy skills into ~/.codex/skills
|
|
11
11
|
openclaw Copy skills into ~/.openclaw/workspace*/skills
|
|
12
12
|
trae Copy skills into ~/.trae/skills
|
|
13
|
+
agents Copy skills into ~/.agents/skills (for agent-skill-compatible software)
|
|
13
14
|
all Install all supported targets
|
|
14
15
|
|
|
15
16
|
Optional environment overrides:
|
|
16
17
|
CODEX_SKILLS_DIR Override codex skills destination path
|
|
17
18
|
OPENCLAW_HOME Override openclaw home path
|
|
18
19
|
TRAE_SKILLS_DIR Override trae skills destination path
|
|
20
|
+
AGENTS_SKILLS_DIR Override agents skills destination path
|
|
19
21
|
APOLLO_TOOLKIT_HOME Override local install path used in curl/pipe mode
|
|
20
22
|
APOLLO_TOOLKIT_REPO_URL Override git repository URL used in curl/pipe mode
|
|
21
23
|
USAGE
|
|
@@ -135,6 +137,16 @@ install_trae() {
|
|
|
135
137
|
done
|
|
136
138
|
}
|
|
137
139
|
|
|
140
|
+
install_agents() {
|
|
141
|
+
local agents_skills_dir
|
|
142
|
+
agents_skills_dir="${AGENTS_SKILLS_DIR:-$HOME/.agents/skills}"
|
|
143
|
+
|
|
144
|
+
echo "Installing to agents: $agents_skills_dir"
|
|
145
|
+
for src in "${SKILL_PATHS[@]}"; do
|
|
146
|
+
replace_with_copy "$src" "$agents_skills_dir"
|
|
147
|
+
done
|
|
148
|
+
}
|
|
149
|
+
|
|
138
150
|
add_mode_once() {
|
|
139
151
|
local mode="$1"
|
|
140
152
|
local existing
|
|
@@ -153,13 +165,14 @@ parse_mode() {
|
|
|
153
165
|
local mode="$1"
|
|
154
166
|
|
|
155
167
|
case "$mode" in
|
|
156
|
-
codex|openclaw|trae)
|
|
168
|
+
codex|openclaw|trae|agents)
|
|
157
169
|
add_mode_once "$mode"
|
|
158
170
|
;;
|
|
159
171
|
all)
|
|
160
172
|
add_mode_once "codex"
|
|
161
173
|
add_mode_once "openclaw"
|
|
162
174
|
add_mode_once "trae"
|
|
175
|
+
add_mode_once "agents"
|
|
163
176
|
;;
|
|
164
177
|
*)
|
|
165
178
|
echo "Invalid mode: $mode" >&2
|
|
@@ -195,8 +208,9 @@ choose_modes_interactive() {
|
|
|
195
208
|
echo "1) codex (~/.codex/skills)"
|
|
196
209
|
echo "2) openclaw (~/.openclaw/workspace*/skills)"
|
|
197
210
|
echo "3) trae (~/.trae/skills)"
|
|
198
|
-
echo "4)
|
|
199
|
-
|
|
211
|
+
echo "4) agents (~/.agents/skills)"
|
|
212
|
+
echo "5) all"
|
|
213
|
+
choice="$(read_choice_from_user 'Enter choice(s) [1-5]: ')"
|
|
200
214
|
|
|
201
215
|
IFS=',' read -r -a choices <<< "$choice"
|
|
202
216
|
for raw_choice in "${choices[@]}"; do
|
|
@@ -205,7 +219,8 @@ choose_modes_interactive() {
|
|
|
205
219
|
1) add_mode_once "codex" ;;
|
|
206
220
|
2) add_mode_once "openclaw" ;;
|
|
207
221
|
3) add_mode_once "trae" ;;
|
|
208
|
-
4) add_mode_once "
|
|
222
|
+
4) add_mode_once "agents" ;;
|
|
223
|
+
5) add_mode_once "codex"; add_mode_once "openclaw"; add_mode_once "trae"; add_mode_once "agents" ;;
|
|
209
224
|
*)
|
|
210
225
|
echo "Invalid choice: $raw_choice" >&2
|
|
211
226
|
exit 1
|
|
@@ -249,6 +264,7 @@ main() {
|
|
|
249
264
|
codex) install_codex ;;
|
|
250
265
|
openclaw) install_openclaw ;;
|
|
251
266
|
trae) install_trae ;;
|
|
267
|
+
agents) install_agents ;;
|
|
252
268
|
*)
|
|
253
269
|
usage
|
|
254
270
|
exit 1
|
|
@@ -6,12 +6,12 @@ A Codex skill for explicit release workflows: code/documentation alignment, vers
|
|
|
6
6
|
|
|
7
7
|
`version-release` helps agents perform release work in a repeatable flow:
|
|
8
8
|
|
|
9
|
-
1. Inspect the
|
|
9
|
+
1. Inspect the current repository state and the curated `CHANGELOG.md` `Unreleased` content.
|
|
10
10
|
2. Run quality gates for code-affecting changes when their coverage is needed.
|
|
11
11
|
3. Run `archive-specs` before finalizing the release to convert completed spec sets and archive them, or when existing project docs need normalization.
|
|
12
12
|
4. Align project code and categorized project docs.
|
|
13
13
|
5. Resolve version and tag details.
|
|
14
|
-
6. Update version files and
|
|
14
|
+
6. Update version files and cut the release directly from `CHANGELOG.md` `Unreleased`.
|
|
15
15
|
7. Commit release metadata.
|
|
16
16
|
8. Create and push the release tag.
|
|
17
17
|
9. Publish the matching GitHub release and verify any release-triggered automation.
|
|
@@ -27,4 +27,6 @@ Use this skill only when the user explicitly asks for:
|
|
|
27
27
|
|
|
28
28
|
If the repository contains a completed spec set, convert it into the categorized `archive-specs` project-doc structure before finalizing the release and archive the consumed plan files. Treat `spec.md`, `tasks.md`, and `checklist.md` semantically: unchecked task or decision checkboxes do not automatically mean the work is unfinished when the docs clearly show they were not selected, replaced, deferred, or marked `N/A`.
|
|
29
29
|
|
|
30
|
+
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
|
+
|
|
30
32
|
If the user only wants commit + push, use `commit-and-push`.
|
package/version-release/SKILL.md
CHANGED
|
@@ -14,9 +14,9 @@ description: "Guide the agent to prepare and publish a versioned release (versio
|
|
|
14
14
|
|
|
15
15
|
## Standards
|
|
16
16
|
|
|
17
|
-
- Evidence: Inspect the active change set and
|
|
18
|
-
- Execution: Use this workflow only for explicit release intent, run the required quality gates when applicable, convert completed spec sets into categorized project docs before release finalization, normalize non-standard project docs when needed, then update versions
|
|
19
|
-
- Quality: Never guess versions, align user-facing docs with actual code, convert completed planning docs into standardized categorized project docs before the release is published,
|
|
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, convert completed spec sets into categorized project docs before release finalization, normalize non-standard project docs when needed, 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, convert completed planning docs into standardized categorized project docs before the release is published, treat the `archive-specs` structure as the release-ready documentation format, and do not reconstruct release notes from `git diff` when curated changelog content already exists.
|
|
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
|
|
@@ -26,7 +26,7 @@ Run a standardized release workflow for versioned delivery:
|
|
|
26
26
|
- resolve release scope
|
|
27
27
|
- align project code and standardized categorized project documentation
|
|
28
28
|
- bump version files
|
|
29
|
-
-
|
|
29
|
+
- cut the release from `CHANGELOG.md` `Unreleased` and update relevant docs
|
|
30
30
|
- commit, tag, push, and publish the GitHub release
|
|
31
31
|
|
|
32
32
|
## References
|
|
@@ -57,44 +57,44 @@ Load only when needed:
|
|
|
57
57
|
- For code-affecting changes, run `review-change-set`, `discover-edge-cases`, and `harden-app-security` for the same release scope when their coverage is needed.
|
|
58
58
|
- Consolidate all confirmed findings before continuing.
|
|
59
59
|
- Resolve all confirmed findings before changing version files, tags, or release metadata.
|
|
60
|
-
4.
|
|
61
|
-
- Find latest version tag with `git describe --tags --abbrev=0` (fallback to `git tag --list`).
|
|
62
|
-
- If no tags exist, use initial commit from `git rev-list --max-parents=0 HEAD`.
|
|
63
|
-
- Review `git log --oneline <range>` and `git diff --stat <range>`.
|
|
64
|
-
5. Standardize project docs when specs or doc normalization is needed
|
|
60
|
+
4. Standardize project docs when specs or doc normalization is needed
|
|
65
61
|
- Before finalizing the release, execute `archive-specs` when `repo-specs-ready-for-conversion` is true or when `project-doc-structure-mismatch` is true.
|
|
66
62
|
- Let `archive-specs` convert the relevant specs into categorized project docs such as `docs/README.md`, `docs/getting-started.md`, `docs/configuration.md`, `docs/architecture.md`, `docs/features.md`, and `docs/developer-guide.md`.
|
|
67
63
|
- Let the skill normalize any existing project docs to the same structure and archive superseded source spec files.
|
|
68
64
|
- Do not treat unchecked task or decision checkboxes alone as blocking unfinished work; read the surrounding notes and requirement status semantically.
|
|
69
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.
|
|
70
|
-
|
|
71
|
-
- Compare release
|
|
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.
|
|
72
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.
|
|
73
69
|
- After `archive-specs` runs, treat the categorized outputs as the canonical project-doc structure.
|
|
74
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.
|
|
75
71
|
- If mismatches are found, update the relevant project docs before version bumping/tagging.
|
|
76
|
-
|
|
72
|
+
6. Decide version and tag format
|
|
77
73
|
- Read existing version files (for example `project.toml`, `package.json`, or repo-specific version files).
|
|
78
74
|
- Infer existing tag format (`vX.Y.Z` or `X.Y.Z`) from repository tags.
|
|
79
75
|
- If the user provides the target version, use it directly.
|
|
80
76
|
- If it is missing, ask the user for the target version or semver bump type.
|
|
81
77
|
- Provide recommendations only when explicitly requested.
|
|
82
|
-
|
|
78
|
+
7. Update version files
|
|
83
79
|
- Update every detected version file consistently.
|
|
84
80
|
- Preserve file formatting; change only version values.
|
|
85
|
-
|
|
86
|
-
-
|
|
81
|
+
8. Update release docs
|
|
82
|
+
- Treat root `CHANGELOG.md` `Unreleased` as the canonical pending release content.
|
|
83
|
+
- If `Unreleased` is empty, stop and report that there are no curated release notes to publish yet.
|
|
84
|
+
- Create the new version entry by moving the current `Unreleased` sections under the selected version heading and release date.
|
|
85
|
+
- Reset `Unreleased` to an empty placeholder after the version entry is created.
|
|
86
|
+
- Remove duplicate section headers or bullets only when the move would otherwise create repeated content.
|
|
87
87
|
- Update `README.md` only when behavior or usage changed.
|
|
88
88
|
- Update `AGENTS.md` only when agent workflow/rules changed.
|
|
89
|
-
|
|
90
|
-
- Create a release-oriented commit message (for example `chore(release):
|
|
89
|
+
9. Commit and tag
|
|
90
|
+
- Create a release-oriented commit message (for example `chore(release): publish 2.12.1`) when applicable.
|
|
91
91
|
- Create the version tag locally after commit.
|
|
92
|
-
|
|
92
|
+
10. Push
|
|
93
93
|
- 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
94
|
- 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
95
|
- 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
96
|
- 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
|
-
|
|
97
|
+
11. Publish the GitHub release
|
|
98
98
|
- Create a non-draft GitHub release that matches the pushed version tag.
|
|
99
99
|
- Use the release notes from the new `CHANGELOG.md` entry unless the repository has a stronger established release-note source.
|
|
100
100
|
- If the repository has publish automation triggered by `release.published`, ensure the GitHub release is actually published rather than left as a draft.
|
|
@@ -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
|
|
4
|
+
default_prompt: "Use $version-release only for explicit release/version/tag requests: inspect the current repository state and root CHANGELOG.md Unreleased content, and for code-affecting changes run $review-change-set, $discover-edge-cases, and $harden-app-security when their coverage is needed. Before finalizing the release, run $archive-specs to convert any completed spec set into categorized project docs, archive the consumed plans, and normalize existing project docs when needed. Treat spec.md, tasks.md, and checklist.md semantically: unchecked task or decision checkboxes alone do not block conversion when the docs show they were not selected, replaced, deferred, or marked N/A. Then align user-facing docs with real behavior, update version files, cut the release directly from CHANGELOG.md Unreleased, create the release commit and tag, push commits and tags, then publish the matching GitHub release and confirm any triggered publish workflow."
|
|
@@ -2,6 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
Follow the existing changelog format. If none is defined, use Keep a Changelog style.
|
|
4
4
|
|
|
5
|
+
- Treat `## [Unreleased]` as the canonical source for pending release notes.
|
|
6
|
+
- During normal commit/push work, update only the `Unreleased` bullets that correspond to the current actual change set.
|
|
7
|
+
- Preserve unrelated pending bullets from other unfinished work, and remove stale or conflicting bullets when the current implementation supersedes them.
|
|
8
|
+
- During a version release, do not rebuild notes from `git diff`; move the curated `Unreleased` sections into the new version heading and then clear `Unreleased`.
|
|
5
9
|
- Add a new version heading with the release date (YYYY-MM-DD).
|
|
6
10
|
- Group entries under clear sections: Added, Changed, Fixed, Removed, Deprecated, Security.
|
|
7
11
|
- Write user-facing bullets; avoid commit hashes or internal-only details.
|