@laitszkin/apollo-toolkit 3.8.4 → 3.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (26) hide show
  1. package/CHANGELOG.md +5 -0
  2. package/align-project-documents/SKILL.md +49 -121
  3. package/analyse-app-logs/scripts/__pycache__/filter_logs_by_time.cpython-312.pyc +0 -0
  4. package/analyse-app-logs/scripts/__pycache__/log_cli_utils.cpython-312.pyc +0 -0
  5. package/analyse-app-logs/scripts/__pycache__/search_logs.cpython-312.pyc +0 -0
  6. package/commit-and-push/SKILL.md +52 -75
  7. package/develop-new-features/SKILL.md +53 -113
  8. package/docs-to-voice/scripts/__pycache__/docs_to_voice.cpython-312.pyc +0 -0
  9. package/enhance-existing-features/SKILL.md +59 -125
  10. package/generate-spec/SKILL.md +86 -195
  11. package/generate-spec/scripts/__pycache__/create-specscpython-312.pyc +0 -0
  12. package/implement-specs/SKILL.md +47 -43
  13. package/implement-specs-with-subagents/SKILL.md +69 -165
  14. package/implement-specs-with-worktree/SKILL.md +53 -102
  15. package/katex/scripts/__pycache__/render_katex.cpython-312.pyc +0 -0
  16. package/maintain-project-constraints/SKILL.md +53 -105
  17. package/maintain-skill-catalog/SKILL.md +46 -42
  18. package/open-github-issue/scripts/__pycache__/open_github_issue.cpython-312.pyc +0 -0
  19. package/package.json +1 -1
  20. package/read-github-issue/scripts/__pycache__/find_issues.cpython-312.pyc +0 -0
  21. package/read-github-issue/scripts/__pycache__/read_issue.cpython-312.pyc +0 -0
  22. package/resolve-review-comments/scripts/__pycache__/review_threads.cpython-312.pyc +0 -0
  23. package/review-spec-related-changes/SKILL.md +49 -82
  24. package/solve-issues-found-during-review/SKILL.md +46 -106
  25. package/text-to-short-video/scripts/__pycache__/enforce_video_aspect_ratio.cpython-312.pyc +0 -0
  26. package/version-release/SKILL.md +52 -88
@@ -1,110 +1,77 @@
1
1
  ---
2
2
  name: review-spec-related-changes
3
- description: Review recent or user-specified spec-related changes against the governing `docs/plans/...` spec documents, treat unmet business goals as the most severe findings, and then run code-practice cross-checks through `review-change-set`, `discover-edge-cases`, and `harden-app-security`. Use when users ask whether implemented work actually satisfies a spec, wants a spec compliance review, or asks to review changes related to recent or named planning documents.
3
+ description: >-
4
+ Read-only spec compliance versus governing docs/plans: score each business-oriented requirement Met/Partial/Not-met using code/tests/commands—checked `tasks.md` boxes are never sufficient proof; ambiguity between two plausible plan roots halts execution; when runtime code exists, sequentially run **`review-change-set`**, **`discover-edge-cases`**, and **`harden-app-security`** on the same scoped diff afterward.
5
+ Use for questions like “does this PR satisfy coordination.md + spec.md R2?” or user pins a `{change}` folder.
6
+ Do not mutate repositories, reorder reports to bury missing goals, skip the tertiary review bundle on code-bearing diffs, or rely on intent without file evidence **BAD**, lead with refactor comments while R1 failing **FORBIDDEN**… GOOD pair every Not-met cite with `spec.md` ref + concrete path:test gap…
4
7
  ---
5
8
 
6
9
  # Review Spec Related Changes
7
10
 
8
11
  ## Dependencies
9
12
 
10
- - Required: `review-change-set`, `discover-edge-cases`, and `harden-app-security` for code-affecting spec-related changes.
13
+ - Required: `review-change-set`, `discover-edge-cases`, and `harden-app-security` whenever the scope includes **code-affecting** implementation to assess.
11
14
  - Conditional: none.
12
15
  - Optional: none.
13
- - Fallback: If any required review dependency is unavailable for a code-affecting scope, stop and report the missing dependency instead of returning a partial pass.
16
+ - Fallback: If any required dependency is unavailable for a **code-affecting** review, **MUST** stop and report the gap. **MUST NOT** emit a “full pass” verdict without those three passes when code is in scope.
14
17
 
15
- ## Standards
18
+ ## Non-negotiables
16
19
 
17
- - Evidence: Read the governing spec documents, the related git changes, and the minimum implementation context before deciding whether the business goal was met.
18
- - Execution: Resolve the spec scope first, review business-goal completion before any secondary code-practice review, then run the required review skills on the same implementation scope.
19
- - Quality: Treat unmet or partially met business goals as the highest-severity findings, keep secondary edge-case/security/code-review findings outside the business-goal verdict, and avoid speculative issues that are not backed by code or spec evidence.
20
- - Output: Return a prioritized issue list with business-goal gaps first, followed by edge-case, security, and code-review findings, each tied to specific spec and code evidence.
20
+ - **MUST NOT** edit implementation code, tests, or planning docs during this skill (read-only review).
21
+ - **MUST NOT** archive specs, commit, push, tag, or release from this skill.
22
+ - **MUST** resolve which spec set governs the change **before** concluding; if multiple candidates fit equally and cannot be disambiguated from repo evidence, **MUST** stop and report ambiguity—**MUST NOT** guess.
23
+ - **MUST** classify each business goal / acceptance item as `Met`, `Partially met`, `Not met`, or `Deferred/N/A` **only** using verifiable evidence (code, tests, commands, traces)—checked boxes in `tasks.md` are **not** proof by themselves.
24
+ - **MUST** treat **unmet or partially met required business goals** as **highest severity**. **MUST NOT** let edge-case, security, or style findings **outrank** those gaps in the reported order or implied priority.
25
+ - **MUST** finish the business-goal verdict **before** invoking secondary skills; **MUST** still run `review-change-set`, `discover-edge-cases`, and `harden-app-security` on the **same** implementation scope when code is involved (after step 1 verdict is written).
26
+ - **MUST NOT** rest conclusions on author intent, branch names, or chat memory unless **repository evidence** agrees.
27
+ - Prefer **fewer confirmed findings** over broad speculation; unproven items belong under **Residual uncertainty**, not as faux defects.
21
28
 
22
- ## Goal
29
+ ## Standards (summary)
23
30
 
24
- Determine whether the implementation actually satisfies the relevant planning documents, then separately assess whether the related code is safe, robust, and maintainable.
31
+ - **Evidence**: Full read of governing docs + minimal code/diff context + spec-named verification commands when safe to run.
32
+ - **Execution**: Scope resolution → business compliance → required secondary reviews → ordered report.
33
+ - **Quality**: Business-first severity; secondary findings separated unless they also block an acceptance criterion.
34
+ - **Output**: Ordered list: business gaps → edge cases → security → code review → passing summary → residual uncertainty.
25
35
 
26
- ## Scope Resolution
36
+ ## Scope resolution
27
37
 
28
- ### User-specified spec documents
38
+ **Chain-of-thought:** Before **`Workflow`**, answer **`Pause →`** for the governing spec you will use; equally plausible paths without disambiguation ⇒ **stop**.
29
39
 
30
- - If the user names a spec directory or file, read every governing document in that spec set, including `spec.md`, `tasks.md`, `checklist.md`, `contract.md`, `design.md`, and batch-level `coordination.md` when present.
31
- - Treat the named spec documents as the authoritative business goal unless the repository contains a newer superseding plan that the user explicitly referenced.
32
- - Map the spec to implementation changes using task entries, owned files, git diff paths, branch names, commit messages, and code references from the spec.
40
+ **User-named path** Read `spec.md`, `tasks.md`, `checklist.md`, `contract.md`, `design.md`, and batch `coordination.md` when present unless the user narrowed the list. Treat as authoritative unless the user pointed at a **newer** superseding plan. Map implementation via tasks, owned paths, diff, branch, commits.
41
+ - **Pause →** Did the user give a **filesystem path** or only a nickname that could map to multiple `docs/plans/...` trees?
42
+ - **Pause →** For each major business verdict later, what **exact** spec heading or requirement ID will I cite?
33
43
 
34
- ### Recent spec-related changes
35
-
36
- - If the user asks for recent spec-related review without naming a spec, inspect the current git state first:
37
- ```bash
38
- git status -sb
39
- git diff --name-only
40
- git diff --cached --name-only
41
- ```
42
- - Look for changed or recently touched planning documents under `docs/plans/`, `docs/archive/plans/`, or the repository's documented planning location.
43
- - If no planning document changed, inspect recent commits and active plan directories to identify the most recent spec set that plausibly governs the current implementation.
44
- - If multiple candidate spec sets remain plausible and cannot be separated by changed files or branch names, stop and report the ambiguity instead of guessing.
44
+ **User did not name a spec** — Inspect `git status -sb`, `git diff --name-only`, `git diff --cached --name-only`; search `docs/plans/`, `docs/archive/plans/`, or repo-documented plan dirs. If no plan file moved, infer from recent commits and plausible plan dirs; **if still ambiguous, stop** (see Non-negotiables).
45
+ - **Pause →** What **three** independent clues tie this implementation to **one** plan—not chat memory alone?
46
+ - **Pause →** If I withheld the conversation transcript, could another reviewer replicate my chosen spec folder from repo evidence?
45
47
 
46
48
  ## Workflow
47
49
 
48
- ### 1) Build the spec baseline
49
-
50
- - Read the governing spec documents end-to-end.
51
- - Extract the concrete business goals, acceptance criteria, non-goals, deferred work, and explicit verification requirements.
52
- - Build a compact checklist of claims that can be proven or disproven from code, tests, docs, or command output.
53
- - Keep business goals separate from implementation-quality expectations. A clean implementation does not compensate for an unmet business requirement.
54
-
55
- ### 2) Map implementation evidence
56
-
57
- - Read the related diff, staged changes, commits, or changed files that correspond to the spec scope.
58
- - Follow the minimum dependency chain needed to understand whether the behavior is actually implemented.
59
- - Run or inspect the verification commands named by the spec when they are available and safe to run.
60
- - Mark each business goal as:
61
- - `Met`: direct implementation and verification evidence exists.
62
- - `Partially met`: some required behavior exists, but an acceptance criterion, integration path, or verification proof is missing.
63
- - `Not met`: implementation evidence is absent or contradicts the spec.
64
- - `Deferred/N/A`: the spec explicitly excludes or defers the item.
65
-
66
- ### 3) Review business-goal completion first
67
-
68
- - Report every `Not met` and `Partially met` business goal before secondary review findings.
69
- - Assign the highest severity to business-goal failures because they mean the delivered change does not satisfy the requested work.
70
- - Include exact spec evidence and code evidence for each gap.
71
- - Do not continue into archival, submission, or release recommendations while business-goal failures remain unresolved.
72
-
73
- ### 4) Run secondary code-practice reviews
74
-
75
- After the business-goal pass is complete, invoke the required review skills on the same code-affecting scope:
76
-
77
- - Use `review-change-set` to identify architecture, abstraction, and simplification findings in the related diff.
78
- - Use `discover-edge-cases` to identify reproducible boundary, failure-path, state, and observability risks.
79
- - Use `harden-app-security` to identify reproducible vulnerabilities and adversarial trust-boundary failures.
50
+ **Chain-of-thought:** Answer **`Pause →`** after **each** step before moving down the list or calling dependent skills.
80
51
 
81
- Keep these findings separate from the business-goal verdict unless the issue also prevents a required acceptance criterion from being satisfied.
52
+ 1. **Spec baseline** Read governing docs end-to-end. Extract goals, acceptance criteria, non-goals, deferrals, required verifications. Build a compact claim list provable from repo evidence. Keep “what the product must do” separate from “how clean the code is.”
53
+ - **Pause →** Which items are **mandatory** acceptance vs explicitly **out of scope** or deferred?
54
+ - **Pause →** What observable failure would make me change a `Met` to `Not met` for the top risk requirement?
82
55
 
83
- ### 5) Produce the final review
56
+ 2. **Implementation evidence** — Read the relevant diff/staged/commits/files. Trace the minimum code path to validate claims. Run spec-named checks when available and safe.
57
+ - **Pause →** What is the **smallest** code path I have not yet read that could still falsify a `Met`?
58
+ - **Pause →** Am I about to score `Met` from **intent** or from **tests/commands** I actually ran or inspected?
84
59
 
85
- Return findings in this order:
60
+ 3. **Business-goal verdict first** — Emit every `Not met` / `Partially met` **before** secondary findings, with **exact** spec cites and code/test evidence. While required goals stay failed, **MUST NOT** frame archival, release, or “done” narratives that imply compliance.
61
+ - **Pause →** If I sorted findings by “interesting” instead of business impact, which line would unfairly rise above a missing goal?
62
+ - **Pause →** For each `Partially met`, what single **missing proof** (test, wire-up, error path) am I naming explicitly?
86
63
 
87
- 1. Business-goal failures
88
- - Severity: always highest for unmet or partially met required goals.
89
- - Include spec evidence, implementation evidence, and the missing acceptance criterion.
90
- 2. Edge-case findings
91
- - Include reproduction or concrete trigger evidence.
92
- 3. Security findings
93
- - Include exploit path, protected asset, and reproducibility evidence.
94
- 4. Code-review findings
95
- - Include architecture, abstraction, simplification, or maintainability evidence.
96
- 5. Passing evidence
97
- - Summarize the business goals that were confirmed met.
98
- 6. Residual uncertainty
99
- - List unverified checks, commands not run, ambiguous spec mappings, or external dependencies that could not be proven.
64
+ 4. **Secondary reviews (code-affecting)** — On the same scope: `review-change-set` (architecture/simplification), `discover-edge-cases` (reproducible edge/observability risks), `harden-app-security` (reproducible security). Keep outputs labeled so they do not read as business-goal substitutions.
65
+ - **Pause →** Does this secondary finding **force** a business re-score—if yes, did I revise step 3 before publishing?
66
+ - **Pause →** Is the diff scope identical to what I used for business mapping (no silent file creep)?
100
67
 
101
- If no actionable issue is found, state that no business-goal, edge-case, security, or code-review findings were identified, and still list the spec documents and verification evidence reviewed.
68
+ 5. **Final report (fixed order)** (1) Business-goal failures (always top severity for required gaps). (2) Edge-case. (3) Security. (4) Code-review / maintainability. (5) Passing evidence for goals confirmed `Met`. (6) Residual uncertainty (skipped commands, unmapped spec text, unverifiable externals). If nothing actionable: state that explicitly **and** still cite docs and evidence reviewed.
69
+ - **Pause →** What commands or spec paragraphs remain **unverified**—are they all listed under residual uncertainty?
102
70
 
103
- ## Working Rules
71
+ ## Sample hints
104
72
 
105
- - Do not edit code, tests, or specs during this review.
106
- - Do not archive specs, commit, push, tag, or release from this skill.
107
- - Do not let secondary code quality findings bury business-goal failures.
108
- - Do not treat checked tasks as proof by themselves; verify the implementation.
109
- - Do not infer success from author intent, branch names, or prior conversation context unless the repository evidence supports it.
110
- - Prefer fewer confirmed findings over broad speculative feedback.
73
+ - **Business claim record**:
74
+ - `R3.2 refresh token rotation` `Not met` spec `spec.md` §3.2 requires one-time use; `src/auth/refresh.rs:40` still accepts same jti on replay; test `refresh_replay` not present.
75
+ - **Wrong ordering** starting with “nice simplification in `foo.ts`” while `R1.0` is unmet: **wrong**; lead with the `R1.0` gap.
76
+ - **Tasks checked but behavior missing** — `tasks.md` shows `[x] implement rate limit` but no call site in `src/api/*` and no test: verdict stays **`Not met` / `Partially met`**, not `Met`.
77
+ - **Ambiguous scope** two directories `docs/plans/2026-05-01/foo/` and `…/batch-a/foo/` both plausible; **stop** with “need user to name path” instead of picking one.
@@ -1,134 +1,74 @@
1
1
  ---
2
2
  name: solve-issues-found-during-review
3
- description: Fix issues discovered during a review pass (review-change-set, review-spec-related-changes, review-codebases, discover-edge-cases, harden-app-security, or any structured review), proceeding from the highest-severity finding down to the lowest, until all confirmed issues are resolved. Use when users ask to fix review findings, resolve review issues, implement review feedback on code, or address audit/security review findings.
3
+ description: >-
4
+ Operate strictly from a structured review/issue list containing confirmed findings: close items in descending severity order (Critical before High/Medium/Low), land the smallest corrective diff per finding, run targeted validation after each fix before continuing, forbid speculative polish or unsolicited doc edits unless a finding explicitly requires them, and document Deferred or Could-not-reproduce outcomes with reproducible rationale.
5
+ Use when prompts reference concrete review outputs (“fix Bugbot findings”, “resolve security audit bullets”) accompanied by reproducible excerpts—STOP if only vague “there were issues yesterday” survives.
6
+ Bad pattern: refactoring modules while unresolved Critical SSRF persists… Good pattern: `HIGH SSRF src/net/client.rs…` patched, `cargo test net::fetch` green, hashes recorded…
4
7
  ---
5
8
 
6
9
  # Solve Issues Found During Review
7
10
 
8
11
  ## Dependencies
9
12
 
10
- - Required: none. This skill reads issues from a review report that must already exist or be supplied by the caller.
11
- - Conditional: `review-change-set` for re-validation after fixes when the fix set is code-affecting; `systematic-debug` when a fix attempt encounters unexpected test or runtime failures.
12
- - Conditional: When parallel sub-agents are available, the capability to merge changes from independent workspaces and resolve inter-workspace conflicts after parallel fix work.
13
- - Optional: `discover-edge-cases` to confirm edge-case coverage after fixing; `harden-app-security` to confirm security fixes are effective.
14
- - Fallback: If a required re-validation dependency is unavailable after a code-affecting fix, run `git diff --stat` and relevant tests manually and report what was verified.
13
+ - Required: none (caller **MUST** supply an existing review report or reconstructable finding list).
14
+ - Conditional: `review-change-set` for optional re-validation after **code-affecting** fixes; `systematic-debug` when a fix causes unexpected test or runtime failures.
15
+ - Optional: `discover-edge-cases` / `harden-app-security` when the user or report demands post-fix confirmation on those dimensions.
16
+ - Fallback: If `review-change-set` is unavailable after code fixes, **MUST** still verify via targeted tests and `git diff` (or equivalent) and **MUST** document exactly what was run.
15
17
 
16
- ## Standards
18
+ ## Non-negotiables
17
19
 
18
- - Evidence: Read the full review report and the affected code before implementing any fix. Every fix must be grounded in a confirmed finding from the review.
19
- - Execution: Fix issues in strict severity order (Critical High Medium Low). After each fix, validate the change preserves correctness before moving to the next issue. Re-run the original review scope when all fixes are complete to confirm no regression and no remaining finding.
20
- - Quality: Fix only issues confirmed by the review report. Do not expand scope with speculative improvements, unrelated refactors, or style-only changes. Each fix must be minimal and targeted.
21
- - Output: Report which findings were fixed, how each was validated, any findings that could not be reproduced or fixed (with reasons), and the final re-validation result.
20
+ - **MUST** read the **full** report and the affected code **before** editing. **MUST** tie every code change to a **confirmed** finding (explicit severity/title/evidence). **MUST NOT** fix speculative, hypothetical, or “nice-to-have” items unless the report elevated them to confirmed findings.
21
+ - **MUST** process findings in strict severity order: complete **all** Critical before **any** High, then Medium, then Low—**MUST NOT** skip ahead for convenience. Within a tier, follow the reviewer’s stated ordering when present; if severities are missing, treat business-goal / correctness breaks as **High–Critical class** and cosmetic simplification as **Low**.
22
+ - **MUST** validate after each finding’s fix (tests, repro steps, or agreed oracle) **before** starting the next finding at the same or lower priority. **MUST NOT** mark a finding fixed without passing validation.
23
+ - **MUST** keep each fix **minimal** and scoped to the finding: **MUST NOT** bundle unrelated refactors, style sweeps, or scope expansion.
24
+ - This skill **defaults to product code**; **MUST NOT** edit specs, docs, or `AGENTS.md`/`CLAUDE.md` unless the **finding text** explicitly requires it.
25
+ - If a finding cannot be reproduced after investigation, **MUST** record `Could not reproduce` with evidence and **MUST** continue the queue without silently dropping the item.
22
26
 
23
- ## Workflow
24
-
25
- ### 1) Read the review report
26
-
27
- - Read the review report or finding list that the user provides.
28
- - If the user did not provide a review report but says "fix the review findings", inspect current git state and recent review outputs to reconstruct the finding list.
29
- - If no review report can be found, stop and report that no review findings are available to act on.
30
- - Extract every confirmed finding with its severity, title, evidence (`path:line`), and reproduction evidence.
31
-
32
- ### 2) Prioritize findings by severity
33
-
34
- Group findings into ordered buckets:
35
-
36
- 1. Critical
37
- 2. High
38
- 3. Medium
39
- 4. Low
40
-
41
- Within each bucket, order by the reviewer's stated priority. If the review does not assign severity, treat architecture/business-goal gaps as High and simplification/style suggestions as Low.
42
-
43
- ### 3) Classify findings by module and business logic chain
44
-
45
- Before fixing, group findings by:
46
-
47
- - **Module**: which subsystem, component, or layer each finding belongs to.
48
- - **Business logic chain**: findings along the same data flow, request path, or feature pipeline.
49
-
50
- This classification determines which findings can be fixed independently in parallel and which share dependencies that require coordinated treatment.
51
-
52
- ### 4) Deploy parallel fix work (when sub-agent capability is available)
53
-
54
- If the runtime supports spawning sub-agents with isolated workspaces:
55
-
56
- **a. Assign each module group to a sub-agent**
27
+ ## Standards (summary)
57
28
 
58
- - Group findings by the classification above. Each independent module or business chain becomes a work package.
59
- - Assign each work package to a sub-agent, giving it the relevant findings, the affected file paths, and the original review context.
60
- - Each sub-agent works in its own isolated workspace with no risk of interfering with others.
29
+ - **Evidence**: Confirmed finding code path minimal patch validation artifact.
30
+ - **Execution**: Order by severity; optional parallel module groups only when isolation is real; merge without losing fix intent.
31
+ - **Quality**: No speculative hardening; conflicts resolved conservatively unless the finding demands an aggressive change.
32
+ - **Output**: Per-finding status, validation proof, final re-validation summary, residual/deferred items with reasons.
61
33
 
62
- **b. Sub-agents fix and validate their assigned findings**
63
-
64
- Each sub-agent independently:
65
-
66
- - Reads its assigned findings and the affected code.
67
- - Applies the minimal fix for each finding in severity order within its scope.
68
- - Validates correctness (tests, reproduction steps, linting) before marking findings as resolved.
69
- - Reports back which findings were fixed, deferred, or could not be reproduced, along with a summary of changes.
70
-
71
- **c. Consolidate and resolve conflicts**
72
-
73
- After all sub-agents complete:
74
-
75
- - Merge changes from each isolated workspace back into the main workspace, one at a time.
76
- - If conflicts arise, resolve them by keeping both sides of the fix intent — do not discard either party's changes unless they are truly contradictory.
77
- - When two fixes touch the same code, prefer the more conservative change (less behavioral deviation) unless the review finding explicitly demands the more aggressive one.
78
- - If a conflict cannot be resolved without deviating from the original fix intent, flag it for manual review and move on.
79
-
80
- **d. Re-validate after consolidation**
81
-
82
- Run all relevant tests across the consolidated changes to confirm the merged result is correct.
83
-
84
- If the runtime does **not** support sub-agents with isolated workspaces, fall back to fixing findings sequentially in severity order as described in the next step.
85
-
86
- ### 5) Fix findings sequentially (fallback when sub-agents are unavailable)
87
-
88
- For each finding in priority order, when parallel sub-agent capability is not available:
89
-
90
- **a. Understand the finding and the fix target**
34
+ ## Workflow
91
35
 
92
- - Read the affected code paths end-to-end.
93
- - Read the reviewer's reproduction evidence and hardening guidance.
94
- - Determine the minimal fix that resolves the finding without changing unrelated behavior.
36
+ **Chain-of-thought:** After **each** phase, **`Pause →`** guards against speculative fixes and order violations—answer them before edits or merges.
95
37
 
96
- **b. Apply the fix**
38
+ ### 1) Ingest findings
97
39
 
98
- - Make the targeted code change.
99
- - Keep the fix scoped to the finding. Do not expand scope.
40
+ Read the supplied report. If the user says “fix review findings” but attached nothing, reconstruct from git/recent outputs; if **no** reconstructable list exists, **MUST** stop and report. Extract each finding: severity, title, evidence (`path:line` or equivalent), reproduction notes.
41
+ - **Pause →** Can I attach **severity + excerpt + repro** per row—is anything still vague “looks bad”?
42
+ - **Pause →** Is this finding **explicitly confirmed** by the reviewer, or only a hypothesis I must shelve?
100
43
 
101
- **c. Validate the fix**
44
+ ### 2) Order and (optional) parallelize
102
45
 
103
- - Run the most specific tests covering the changed code.
104
- - If tests fail, invoke `$systematic-debug` to resolve the failure before proceeding.
105
- - If the finding includes reproduction steps, verify the reproduction no longer triggers.
106
- - Only mark the finding as fixed when validation passes.
46
+ Sort into Critical → High → Medium → Low. Optionally group by **module** or **business chain** for parallel work **only** if sub-agents with **isolated workspaces** exist and groups do not share half-applied state.
107
47
 
108
- **d. Track progress**
48
+ **Parallel path** — One package per independent group; each worker fixes its findings **in severity order locally**, validates, returns branch/diff + status. Merge packages one at a time; on conflict, preserve both fix intents; prefer the **more conservative** behavior unless the finding required aggressiveness; **MUST** flag unresolvable conflicts instead of silently dropping a fix. After merge, run consolidated tests.
109
49
 
110
- Proceed to the next finding. Do not skip severity levels: finish all Critical findings before starting High, etc.
50
+ **Serial path (default)** For each finding in global severity order: read code and repro apply minimal fix → validate (`systematic-debug` if failures are unclear) → record status → next finding.
51
+ - **Pause →** Am I respecting **tier closure**—no High work started until every Critical has a settled status (`Fixed`, `Deferred`, `Could not reproduce`)?
52
+ - **Pause →** If parallelizing: could two workers touch **overlapping** symbols or files midway through—if unsure, serialize.
111
53
 
112
- ### 6) Re-validate the full scope
54
+ ### 3) Full-scope re-validation
113
55
 
114
- When all findings have been processed:
56
+ After all findings are processed: run relevant tests over touched areas; if code changed and `review-change-set` is available, run it on the post-fix diff; capture `git diff --stat` (or equivalent). **MUST** confirm no confirmed finding remains open without a recorded reason (`Deferred`, `Could not reproduce`, etc.).
57
+ - **Pause →** Would the **same** reviewer still see **actionable proof** closed for each `Fixed`, or did I rationalize failures away?
58
+ - **Pause →** Did my consolidated diff sneak in **bonus** unrelated changes—if yes, peel them back?
115
59
 
116
- - If the fix set is code-affecting, optionally run `$review-change-set` on the updated diff to confirm no new issues were introduced.
117
- - Run all relevant tests across the changed files.
118
- - Run `git diff --stat` to produce a summary of what changed.
60
+ ### 4) Report
119
61
 
120
- ### 7) Report the result
62
+ Deliver: (1) Summary by severity. (2) Per finding: `Fixed` / `Could not reproduce` / `Deferred` + location + validation evidence. (3) Final re-validation (review tool result if any, tests, diff stat). (4) Residual/deferred with reasons. (5) User-facing next checks before merge (manual QA, integration, etc.).
63
+ - **Pause →** Could the user rerun **exactly one** cited command per `Fixed` to trust me—is that cited?
121
64
 
122
- Return:
65
+ ## Notes
123
66
 
124
- 1. Summary of all findings processed, grouped by severity.
125
- 2. For each finding: status (`Fixed`, `Could not reproduce`, `Deferred`), path:line, and validation evidence.
126
- 3. Final re-validation: new review result (if run), test results, and git change summary.
127
- 4. Any residual findings that were deferred or could not be fixed, with reasons.
128
- 5. Next steps: what the user should verify before merging (e.g., manual QA, integration tests, deployment review).
67
+ - Hypotheses or “might be risky” lines in a report that were **not** confirmed as findings stay **out of scope** for fixes.
129
68
 
130
- ## Notes
69
+ ## Sample hints
131
70
 
132
- - This skill fixes code only. It does not update specs, documentation, or project constraints unless the review finding explicitly requires it.
133
- - If the original review report contained hypotheses or unconfirmed risks, leave those untouched only confirmed findings are actionable.
134
- - When a finding cannot be reproduced after inspecting the code, report `Could not reproduce` and move to the next finding.
71
+ - **Inbound finding slice** `HIGH | SSRF via webhook URL | src/net/fetch.rs:112 | curl user-controlled URL without allowlist`.
72
+ - **Serial flow** fix `HIGH #1`, run `cargo test net_fetch` (or the project’s narrowest test), mark `Fixed` **only after green** then proceed to `HIGH #2`; do **not** batch three HIGH fixes then test once unless a single coherent patch is unavoidable and validation still proves each finding closed.
73
+ - **Status line**: `HIGH SSRF fetch · Fixed · fetch.rs:105-128 · Verified: cargo test net::fetch + manual blocklisted host`.
74
+ - **`Could not reproduce`**: reviewer cited `middleware.ts:77` leak; current tree shows no such path/commit — note commit inspected and bail with evidence, do **not** invent a finding to satisfy the report.
@@ -1,27 +1,41 @@
1
1
  ---
2
2
  name: version-release
3
- description: "Guide the agent to prepare and publish a versioned release (version bump, changelog, tag, GitHub release, and push). Use only when users explicitly request version/tag/release work, including direct semver wording such as patch/minor/major updates. Depend directly on `archive-specs` when completed plan sets should become durable docs or when project docs need alignment, and let that skill own the downstream documentation synchronization work."
3
+ description: >-
4
+ End-to-end semver delivery: prerequisites mirror **`commit-and-push`** gates (**`submission-readiness-check`**, reviews, changelog hygiene, optional `archive-specs`), derive next version/tag from tracked files plus explicit user semver words, relocate `CHANGELOG.md` Unreleased into dated release bump package/project metadata evenly commit tag push **`gh release create`** honoring prerelease/retarget rules verify remote refs **NEVER STOP at tag omitting GitHub release unless user waived publication**.
5
+ Keywords patch minor major release tag GH publish semver… misroute plain “push” absent release vocabulary **use commit-and-push**… BAD guessing version… GOOD inspect package.json+Cargo.toml… retarget prerelease relocate tag `--force-with-lease`… Unreleased emptiness ⇒ halt curated notes…
4
6
  ---
5
7
 
6
8
  # Version Release
7
9
 
8
10
  ## Dependencies
9
11
 
10
- - Required: `commit-and-push`, `submission-readiness-check` before version metadata edits, tagging, or release publication.
11
- - Conditional: `archive-specs` when completed plan sets should be converted or repository docs need alignment; `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
+ - Required: **`commit-and-push`** (shared inspect/classify/readiness/commit/push mechanics); **`submission-readiness-check`** **before** version files, tags, or publication mutate.
13
+ - Conditional: **`archive-specs`** when specs/docs need alignment; **`review-change-set`** (+ **`discover-edge-cases`** / **`harden-app-security`** when risk triggers) on **code-affecting** release scope **before** version churn—blocking while findings open.
12
14
  - Optional: none.
13
- - Fallback: If a required release dependency is unavailable, stop and report the missing dependency.
15
+ - Fallback: Missing required skill stop and report.
14
16
 
15
- ## Standards
17
+ ## Non-negotiables
16
18
 
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, invoke `archive-specs` directly whenever completed plan sets should be converted or project docs need alignment, and if the worktree is already clean inspect the current version, local/remote tag state, and existing GitHub release state before deciding whether the request is already satisfied; decide whether the GitHub release is a prerelease only from explicit user instruction or explicit repository convention already documented in the request context, never from tag naming alone; when the user explicitly wants the same prerelease version to point at newer fixes, retarget the existing prerelease tag and GitHub release instead of inventing an extra version bump; when editing an existing GitHub prerelease during that retarget flow, use a GitHub-accepted release target such as the intended branch name if the tool or API rejects a raw commit SHA for `target_commitish`; otherwise cut the release directly from `CHANGELOG.md` `Unreleased`, update versions and docs, commit, tag, push, and publish the GitHub release with actual release tooling rather than PR-surrogate directives; run git mutations sequentially and verify both the branch tip and release tag exist remotely before publishing the GitHub release, and never treat UI git directives such as `::git-stage`, `::git-commit`, or `::git-push` as evidence that the release commit or tag already exists.
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
- - Output: Produce a versioned release commit and tag, publish a matching GitHub release, and keep changelog plus relevant repository documentation synchronized.
19
+ - **ONLY** enter this workflow when release intent is **explicit** (semver bump wording, tag/release request, CI “publish release”—not a bare “push”). Else **`commit-and-push`** only.
20
+ - **MUST NOT** guess versions—read workspace version files + user-stated bump; state **current next** + exact **tag string** before editing.
21
+ - **MUST NOT** publish if root **`CHANGELOG.md` `Unreleased`** is empty/has nothing to ship—stop or curate notes first.
22
+ - **MUST** align all version-bearing files consistently; formatting-only deltas elsewhere.
23
+ - **Tag format** (`v1.2.3` vs `1.2.3`) inferred from repo history—not invented per release ad hoc unless user dictates.
24
+ - **GitHub Release**: prefer `gh release create` / repo tooling; **MUST NOT** substitute “opened PR URL” as release completion. Draft vs prerelease vs **latest** follows **explicit** user/repo convention—not tag shape alone.
25
+ - **Prerelease retarget**: same version, **move** tag/release to new SHA when user asks; use force-with-lease **for tag only** as needed; if API rejects SHA for `target_commitish`, use branch identifier per GitHub rules.
26
+ - **MUST** verify **remote** has commit + tag before calling release **done**; **MUST NOT** trust UI git shortcuts.
27
+ - **Done** = version files + changelog section + **pushed** commit + **remote** tag + **published** GitHub release (unless user explicitly skips publication—then say so).
21
28
 
22
- ## References
29
+ **Repository regression checks:** Before creating release metadata, inspect existing local and remote tags plus any existing GitHub Release for the target version so duplicates are caught early. Do not continue until you can state the current version, the intended next version, and the exact tag name that will be created. **`review-change-set` is required for code-affecting releases**—run `review-change-set` for the same release scope before continuing; treat unresolved review findings as blocking. Any conditional gate whose trigger is confirmed by this classification becomes mandatory before version bumping, tagging, or release publication. Treat every scenario-matched gate as blocking before versioning or release publication. **`discover-edge-cases` and `harden-app-security` are important review gates**—when their scenario is met, treat them as blocking review gates, not optional polish. 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.
30
+
31
+ ## Standards (summary)
23
32
 
24
- Load only when needed:
33
+ - **Evidence**: Version files, tags local/remote, `Unreleased`, existing GH releases.
34
+ - **Execution**: Intent → gates (`commit-and-push` pattern) → semver → files → changelog move → commit/tag → push → GH release.
35
+ - **Quality**: No duplicate releases; notes from curated changelog, not raw diff guesswork.
36
+ - **Output**: Announced version, tag URL, release URL, automation status if any.
37
+
38
+ ## References
25
39
 
26
40
  - `references/semantic-versioning.md`
27
41
  - `references/commit-messages.md`
@@ -31,100 +45,50 @@ Load only when needed:
31
45
 
32
46
  ## Workflow
33
47
 
34
- ### 1. Inspect Current Changes
35
-
36
- Use $commit-and-push for the standard git state inspection workflow.
37
-
38
- ### 2. Confirm Release Intent
39
-
40
- - Use this skill only when the user explicitly requests version/tag/release work.
41
- - Treat explicit semver-delivery wording such as `patch update`, `minor update`, `major update`, `patch release`, `bump the version`, or requests to trigger release-published automation as release intent even when the user does not separately say `make a release`.
42
- - If no release intent is present, use `commit-and-push` instead.
43
-
44
- ### 3. Classify Changes and Run Dependencies
48
+ **Chain-of-thought:** Reuse **`commit-and-push`** for git inspection, classification, conditional reviews, **`submission-readiness-check`**, commit discipline, push verification—**do not duplicate** those rules here; **`Pause →`** applies to release-only decisions.
45
49
 
46
- Use $commit-and-push for the standard change classification and code-affecting dependency skills workflow.
50
+ ### 1) Inspect git state
47
51
 
48
- Release-specific requirements:
49
- - For code-affecting changes, run `review-change-set` for the same release scope before continuing; treat unresolved review findings as blocking.
50
- - 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.
51
- - 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.
52
- - Consolidate all confirmed findings before continuing.
53
- - Resolve all confirmed findings before changing version files, tags, or release metadata.
52
+ - Follow **`commit-and-push`** step 1 (status/diff/clean semantics).
54
53
 
55
- ### 4. Run Shared Submission Readiness
54
+ ### 2) Confirm release intent
56
55
 
57
- Use $commit-and-push for the standard submission readiness workflow.
56
+ - Explicit semver/release language—or stop and use **`commit-and-push`**.
57
+ - **Pause →** Did the user only ask “commit”? If yes, **exit** this skill.
58
58
 
59
- ### 5. Decide Version and Tag Format
59
+ ### 3) Gates before version churn
60
60
 
61
- - Read existing version files (for example `project.toml`, `package.json`, or repo-specific version files).
62
- - Infer existing tag format (`vX.Y.Z` or `X.Y.Z`) from repository tags.
63
- - 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.
64
- - Determine release channel explicitly before publishing: if the user did not say `prerelease`, `draft`, `latest`, or an equivalent repository-specific release state, default to asking or to the repository's already-documented convention instead of inferring from the tag text.
65
- - If the user explicitly asks to keep the same prerelease version or to `repoint`, `retarget`, or `move` an existing prerelease after follow-up fixes, treat that as a retarget flow: keep the version unchanged, confirm the existing prerelease tag/release name, and plan to move that tag/release to the new commit instead of bumping semver.
66
- - If the requested version tag and matching published GitHub release already exist and point at the intended commit, report that the release is already complete instead of creating duplicate metadata.
67
- - If the user provides the target version, use it directly.
68
- - If it is missing, ask the user for the target version or semver bump type.
69
- - Provide recommendations only when explicitly requested.
70
- - Do not continue until you can state the current version, the intended next version, and the exact tag name that will be created.
71
- - For retarget flows, explicitly state that the intended next version stays unchanged and that the existing tag name will be moved to the new commit.
61
+ - Classify scope; code-affecting `review-change-set` (+ conditional edge/security same as **`commit-and-push`**); **`submission-readiness-check`** (+ **`archive-specs`** when indicated). All blocking items closed.
62
+ - **Pause →** Am I versioning while `Unreleased`/readiness still wrong?
72
63
 
73
- ### 6. Update Version Files
64
+ ### 4) Decide version & tag
74
65
 
75
- - Update every detected version file consistently.
76
- - Preserve file formatting; change only version values.
66
+ - Read files; inspect local/remote tags + existing GH release for collision; prerelease vs stable per user/doc; retarget flow leaves version unchanged.
67
+ - **Pause →** If tag+release already correct on intended SHA—report satisfied, duplicate nothing.
77
68
 
78
- ### 7. Update Release Docs
69
+ ### 5) Bump files
79
70
 
80
- - Treat root `CHANGELOG.md` `Unreleased` as the canonical pending release content.
81
- - If `Unreleased` is empty, stop and report that there are no curated release notes to publish yet.
82
- - Create the new version entry by moving the current `Unreleased` sections under the selected version heading and release date.
83
- - Reset `Unreleased` to an empty placeholder after the version entry is created.
84
- - Remove duplicate section headers or bullets only when the move would otherwise create repeated content.
85
- - Update `README.md` only when behavior or usage changed.
86
- - Update `AGENTS.md/CLAUDE.md` only when agent workflow/rules changed.
71
+ - Every locator of version bumped consistently.
87
72
 
88
- ### 8. Commit and Tag
73
+ ### 6) Release docs
89
74
 
90
- Use $commit-and-push for the standard commit mechanics workflow.
75
+ - Move **`Unreleased`** new dated heading; reset `Unreleased` scaffold; **`README`** / **`AGENTS.md`**/`CLAUDE.md` only if behavior/agent workflow changed materially.
91
76
 
92
- Release-specific commit and tag operations:
93
- - Create a release-oriented commit message (for example `chore(release): publish 2.12.1`) when applicable.
94
- - For new-version flows, create the version tag locally after commit.
95
- - For prerelease retarget flows, move the existing tag locally only after the new fix commit exists, and verify the target commit hash before rewriting the tag.
96
- - Re-read the version files after editing and before tagging to confirm they all match the intended release version.
77
+ ### 7) Commit & tag
97
78
 
98
- ### 9. Push
79
+ - Message e.g. `chore(release): publish X.Y.Z` per repo habit; tag after commit; retarget ⇒ move existing tag deliberately with hash discipline.
99
80
 
100
- Use $commit-and-push for the standard push mechanics workflow.
81
+ ### 8) Push
101
82
 
102
- Release-specific push operations:
103
- - 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.
104
- - For prerelease retarget flows, push the rewritten tag explicitly (for example `--force-with-lease` for the single tag only), then verify the remote tag hash matches local `HEAD` before touching the GitHub release.
105
- - After pushing, verify the release tag exists remotely via `git ls-remote --tags <remote> <tag>`.
83
+ - Push branch **and** tag; verify remote refs; retarget ⇒ `--force-with-lease` for tag only where appropriate, then verify.
106
84
 
107
- ### 10. Publish the GitHub Release
85
+ ### 9) Publish GitHub Release
108
86
 
109
- - Create a non-draft GitHub release that matches the pushed version tag.
110
- - Set the GitHub release's prerelease flag only when the user explicitly asked for a prerelease or an already-verified repository convention for this exact release channel requires it.
111
- - For prerelease retarget flows, update the existing GitHub prerelease so it points at the rewritten tag/commit and refresh its notes when the new fix changes the shipped behavior.
112
- - If the release tool rejects a raw commit SHA while updating `target_commitish`, retry with the authoritative branch name or another GitHub-accepted target identifier, then verify the published release now resolves to the rewritten tag.
113
- - Use the release notes from the new `CHANGELOG.md` entry unless the repository has a stronger established release-note source.
114
- - If the repository has publish automation triggered by `release.published`, ensure the GitHub release is actually published rather than left as a draft.
115
- - Prefer `gh release create <tag>` or the repository's existing release tool when available.
116
- - Do not use PR-opening tools, PR directives, or placeholder URLs as a substitute for actual release publication.
117
- - Confirm the GitHub release URL and any triggered publish workflow status in the final report.
118
- - 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.
87
+ - Create/update matching release body from changelog section; prerelease flag per explicit instruction; confirm non-draft unless automation needs draft—but user asked “publish” ⇒ actually publish.
88
+ - **Pause →** Can I paste **release URL** + prove tag points at **`HEAD`**?
119
89
 
120
- ## Notes
90
+ ## Sample hints
121
91
 
122
- - Never guess versions; always read from files and user intent.
123
- - Treat every scenario-matched gate as blocking before versioning or release publication, not as an optional reminder to maybe do later.
124
- - Never skip `review-change-set` for code-affecting releases, and do not continue to versioning work while confirmed review findings remain unresolved.
125
- - Never downgrade `discover-edge-cases` or `harden-app-security` to optional follow-up when the release risk says they apply.
126
- - Never claim a release is complete without checking the actual release version, creating the matching tag, and publishing the matching GitHub release.
127
- - Never treat a PR creation step, release-page URL guess, or tag-only push as evidence that the GitHub release exists.
128
- - Never treat `::git-stage`, `::git-commit`, `::git-push`, or similar UI helpers as proof that the release commit, pushed tag, or remote branch update actually happened.
129
- - If tests are required by repository conventions, run them before commit.
130
- - If a new branch is required, follow `references/branch-naming.md`.
92
+ - **`Unreleased` empty** cannot ship “2.5.0” with honest notes—curate first.
93
+ - **Duplicate**: Tag `v2.5.0` exists on GH **inspect SHA** before re-creating.
94
+ - **Retarget**: User “move prerelease to latest fix”—**no** semver bump; rewrite tag carefully.