@olegkoval/agent-skills 1.51.0 → 1.51.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/.github/prompts/codexloop.prompt.md +7 -0
- package/.kiro/steering/codexloop.md +7 -0
- package/.windsurf/rules/codexloop.md +7 -0
- package/adapters/claude/olko-github-pr/skills/codexloop/SKILL.md +7 -0
- package/adapters/claude/olko-github-pr/skills/lekker-review/references/output-format.md +5 -1
- package/adapters/claude/olko-github-pr/skills/lekker-review/references/pricing.json +5 -1
- package/adapters/claude/olko-github-pr/skills/lekker-review/references/revmux/profiles/lekker-deep-codex.md +2 -2
- package/adapters/claude/olko-github-pr/skills/lekker-review/references/revmux/profiles/lekker-medium-codex.md +2 -2
- package/adapters/cursor/olko-github-pr/skills/codexloop/SKILL.md +7 -0
- package/adapters/grok/olko-github-pr/skills/codexloop/SKILL.md +7 -0
- package/package.json +1 -1
- package/plugins/olko-apple-kit/.claude-plugin/plugin.json +1 -1
- package/plugins/olko-creative/.claude-plugin/plugin.json +1 -1
- package/plugins/olko-garmin-kit/.claude-plugin/plugin.json +1 -1
- package/plugins/olko-git-tools/.claude-plugin/plugin.json +1 -1
- package/plugins/olko-github-pr/.claude-plugin/plugin.json +1 -1
- package/plugins/olko-github-pr/skills/codexloop/SKILL.md +7 -0
- package/plugins/olko-github-pr/skills/lekker-review/references/output-format.md +5 -1
- package/plugins/olko-github-pr/skills/lekker-review/references/pricing.json +5 -1
- package/plugins/olko-github-pr/skills/lekker-review/references/revmux/profiles/lekker-deep-codex.md +2 -2
- package/plugins/olko-github-pr/skills/lekker-review/references/revmux/profiles/lekker-medium-codex.md +2 -2
- package/plugins/olko-obsidian/.claude-plugin/plugin.json +1 -1
- package/plugins/olko-product/.claude-plugin/plugin.json +1 -1
- package/plugins/olko-reflection/.claude-plugin/plugin.json +1 -1
- package/plugins/olko-release/.claude-plugin/plugin.json +1 -1
- package/plugins/olko-skill-meta/.claude-plugin/plugin.json +1 -1
- package/plugins/olko-web-ops/.claude-plugin/plugin.json +1 -1
|
@@ -228,6 +228,13 @@ while : ; do
|
|
|
228
228
|
}
|
|
229
229
|
}')
|
|
230
230
|
echo "$PAGE" # collect nodes from every page before deciding the PR is clean
|
|
231
|
+
# GitHub GraphQL returns transient 502/504s (no .data). An empty page reads as
|
|
232
|
+
# "no next page", so retry it a bounded number of times instead of treating it as clean.
|
|
233
|
+
if ! echo "$PAGE" | jq -e '.data' >/dev/null 2>&1; then
|
|
234
|
+
RETRIES=$(( ${RETRIES:-0} + 1 ))
|
|
235
|
+
[ "$RETRIES" -le 3 ] || { echo "GraphQL still failing after 3 retries; threads unknown, not clean"; exit 1; }
|
|
236
|
+
sleep 5; continue
|
|
237
|
+
fi
|
|
231
238
|
PI='.data.repository.pullRequest.reviewThreads.pageInfo'
|
|
232
239
|
[ "$(echo "$PAGE" | jq -r "$PI.hasNextPage")" = "true" ] || break
|
|
233
240
|
CURSOR=$(echo "$PAGE" | jq -r "$PI.endCursor")
|
|
@@ -227,6 +227,13 @@ while : ; do
|
|
|
227
227
|
}
|
|
228
228
|
}')
|
|
229
229
|
echo "$PAGE" # collect nodes from every page before deciding the PR is clean
|
|
230
|
+
# GitHub GraphQL returns transient 502/504s (no .data). An empty page reads as
|
|
231
|
+
# "no next page", so retry it a bounded number of times instead of treating it as clean.
|
|
232
|
+
if ! echo "$PAGE" | jq -e '.data' >/dev/null 2>&1; then
|
|
233
|
+
RETRIES=$(( ${RETRIES:-0} + 1 ))
|
|
234
|
+
[ "$RETRIES" -le 3 ] || { echo "GraphQL still failing after 3 retries; threads unknown, not clean"; exit 1; }
|
|
235
|
+
sleep 5; continue
|
|
236
|
+
fi
|
|
230
237
|
PI='.data.repository.pullRequest.reviewThreads.pageInfo'
|
|
231
238
|
[ "$(echo "$PAGE" | jq -r "$PI.hasNextPage")" = "true" ] || break
|
|
232
239
|
CURSOR=$(echo "$PAGE" | jq -r "$PI.endCursor")
|
|
@@ -226,6 +226,13 @@ while : ; do
|
|
|
226
226
|
}
|
|
227
227
|
}')
|
|
228
228
|
echo "$PAGE" # collect nodes from every page before deciding the PR is clean
|
|
229
|
+
# GitHub GraphQL returns transient 502/504s (no .data). An empty page reads as
|
|
230
|
+
# "no next page", so retry it a bounded number of times instead of treating it as clean.
|
|
231
|
+
if ! echo "$PAGE" | jq -e '.data' >/dev/null 2>&1; then
|
|
232
|
+
RETRIES=$(( ${RETRIES:-0} + 1 ))
|
|
233
|
+
[ "$RETRIES" -le 3 ] || { echo "GraphQL still failing after 3 retries; threads unknown, not clean"; exit 1; }
|
|
234
|
+
sleep 5; continue
|
|
235
|
+
fi
|
|
229
236
|
PI='.data.repository.pullRequest.reviewThreads.pageInfo'
|
|
230
237
|
[ "$(echo "$PAGE" | jq -r "$PI.hasNextPage")" = "true" ] || break
|
|
231
238
|
CURSOR=$(echo "$PAGE" | jq -r "$PI.endCursor")
|
|
@@ -235,6 +235,13 @@ while : ; do
|
|
|
235
235
|
}
|
|
236
236
|
}')
|
|
237
237
|
echo "$PAGE" # collect nodes from every page before deciding the PR is clean
|
|
238
|
+
# GitHub GraphQL returns transient 502/504s (no .data). An empty page reads as
|
|
239
|
+
# "no next page", so retry it a bounded number of times instead of treating it as clean.
|
|
240
|
+
if ! echo "$PAGE" | jq -e '.data' >/dev/null 2>&1; then
|
|
241
|
+
RETRIES=$(( ${RETRIES:-0} + 1 ))
|
|
242
|
+
[ "$RETRIES" -le 3 ] || { echo "GraphQL still failing after 3 retries; threads unknown, not clean"; exit 1; }
|
|
243
|
+
sleep 5; continue
|
|
244
|
+
fi
|
|
238
245
|
PI='.data.repository.pullRequest.reviewThreads.pageInfo'
|
|
239
246
|
[ "$(echo "$PAGE" | jq -r "$PI.hasNextPage")" = "true" ] || break
|
|
240
247
|
CURSOR=$(echo "$PAGE" | jq -r "$PI.endCursor")
|
|
@@ -228,7 +228,11 @@ Input tokens: ~<N> ← estimated: diff tokens × agent passes + context fil
|
|
|
228
228
|
Cost: ~$<X.XX> (output actual, input estimated; blended across model tiers below)
|
|
229
229
|
```
|
|
230
230
|
|
|
231
|
-
Per-MTok pricing (input/output), verified 2026-07-07 from the claude-api reference; re-check there if models changed:
|
|
231
|
+
Per-MTok pricing (input/output), verified 2026-07-07 from the claude-api reference; re-check there if models changed. The Claude 5.5 rows and fable-5-1 are not yet on that sheet: they reuse the predecessor-tier rates and must be re-checked:
|
|
232
|
+
- claude-fable-5-1: $10 / $50 (unverified, as claude-fable-5)
|
|
233
|
+
- claude-opus-5-5: $15 / $75 (unverified; copied from the opus-5 rate in pricing.json, not checked)
|
|
234
|
+
- claude-sonnet-5-5: $3 / $15 (unverified)
|
|
235
|
+
- claude-haiku-5-5: $1 / $5 (unverified)
|
|
232
236
|
- claude-fable-5: $10 / $50
|
|
233
237
|
- claude-opus-4-8: $5 / $25
|
|
234
238
|
- claude-sonnet-4-6 / claude-sonnet-5: $3 / $15
|
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
{
|
|
2
|
-
"note": "USD per million tokens, keyed by revmux's actual_model. revmux runs `claude --print` under subscription (Max plan) auth, so nothing here is a real API bill; this is an API-list-price ESTIMATE for the cost block only. Where a model exposes separate input/output prices, usd = tokens/1e6 * output price (output-only, not blended), because revmux reports a single combined `tokens` figure per agent with no input/output split to weight a blend. verified:false entries are not confirmed against a current price sheet (no local claude-api pricing doc found on this machine as of 2026-09-09) and must be checked before this cost block is trusted for a real decision.",
|
|
2
|
+
"note": "USD per million tokens, keyed by revmux's actual_model. revmux runs `claude --print` under subscription (Max plan) auth, so nothing here is a real API bill; this is an API-list-price ESTIMATE for the cost block only. Where a model exposes separate input/output prices, usd = tokens/1e6 * output price (output-only, not blended), because revmux reports a single combined `tokens` figure per agent with no input/output split to weight a blend. verified:false entries are not confirmed against a current price sheet (no local claude-api pricing doc found on this machine as of 2026-09-09) and must be checked before this cost block is trusted for a real decision. The claude-*-5-5 and claude-fable-5-1 rows carry the prices of their predecessor tier (fable: $10/$50 as listed in output-format.md; opus/sonnet/haiku: the 5-family rates above) until a price sheet confirms the new models.",
|
|
3
|
+
"claude-fable-5-1": { "input": 10, "output": 50, "blended": 30, "verified": false },
|
|
4
|
+
"claude-opus-5-5": { "input": 15, "output": 75, "blended": 45, "verified": false },
|
|
5
|
+
"claude-sonnet-5-5": { "input": 3, "output": 15, "blended": 9, "verified": false },
|
|
6
|
+
"claude-haiku-5-5": { "input": 1, "output": 5, "blended": 3, "verified": false },
|
|
3
7
|
"claude-opus-5": { "input": 15, "output": 75, "blended": 45, "verified": false },
|
|
4
8
|
"claude-sonnet-5": { "input": 3, "output": 15, "blended": 9, "verified": false },
|
|
5
9
|
"claude-haiku-4-5-20251001": { "input": 1, "output": 5, "blended": 3, "verified": false },
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
---
|
|
2
2
|
description: Deep lekker review using Codex agents and a second implementation pass
|
|
3
|
-
model: codex/gpt-
|
|
3
|
+
model: codex/gpt-6-astra:high
|
|
4
4
|
agents:
|
|
5
5
|
- {name: quality+impl, lenses: [lekker-quality, lekker-implementation], color: cyan}
|
|
6
6
|
- {name: simpl+conventions, lenses: [lekker-simplification, lekker-conventions], color: magenta}
|
|
7
7
|
- {name: tests, lenses: [lekker-test-quality, tests], color: green}
|
|
8
8
|
- {name: adversarial, lenses: [adversarial], color: yellow}
|
|
9
9
|
- {name: bugs+impl, lenses: [bugs, impl], color: blue}
|
|
10
|
-
stages: {synthesis: codex/gpt-
|
|
10
|
+
stages: {synthesis: codex/gpt-6-astra:high, verify: codex/gpt-6-astra:high}
|
|
11
11
|
---
|
|
12
12
|
You are one read-only reviewer on a panel. Other reviewers apply different
|
|
13
13
|
lenses to the same change. Report only findings supported by your own lenses.
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
---
|
|
2
2
|
description: Medium-depth lekker review using Codex agents
|
|
3
|
-
model: codex/gpt-
|
|
3
|
+
model: codex/gpt-6-astra:high
|
|
4
4
|
agents:
|
|
5
5
|
- {name: quality+impl, lenses: [lekker-quality, lekker-implementation], color: cyan}
|
|
6
6
|
- {name: simpl+conventions, lenses: [lekker-simplification, lekker-conventions], color: magenta}
|
|
7
7
|
- {name: tests, lenses: [lekker-test-quality, tests], color: green}
|
|
8
8
|
- {name: adversarial, lenses: [adversarial], color: yellow}
|
|
9
|
-
stages: {synthesis: codex/gpt-
|
|
9
|
+
stages: {synthesis: codex/gpt-6-astra:high, verify: codex/gpt-6-astra:high}
|
|
10
10
|
---
|
|
11
11
|
You are one read-only reviewer on a panel. Other reviewers apply different
|
|
12
12
|
lenses to the same change. Report only findings supported by your own lenses.
|
|
@@ -235,6 +235,13 @@ while : ; do
|
|
|
235
235
|
}
|
|
236
236
|
}')
|
|
237
237
|
echo "$PAGE" # collect nodes from every page before deciding the PR is clean
|
|
238
|
+
# GitHub GraphQL returns transient 502/504s (no .data). An empty page reads as
|
|
239
|
+
# "no next page", so retry it a bounded number of times instead of treating it as clean.
|
|
240
|
+
if ! echo "$PAGE" | jq -e '.data' >/dev/null 2>&1; then
|
|
241
|
+
RETRIES=$(( ${RETRIES:-0} + 1 ))
|
|
242
|
+
[ "$RETRIES" -le 3 ] || { echo "GraphQL still failing after 3 retries; threads unknown, not clean"; exit 1; }
|
|
243
|
+
sleep 5; continue
|
|
244
|
+
fi
|
|
238
245
|
PI='.data.repository.pullRequest.reviewThreads.pageInfo'
|
|
239
246
|
[ "$(echo "$PAGE" | jq -r "$PI.hasNextPage")" = "true" ] || break
|
|
240
247
|
CURSOR=$(echo "$PAGE" | jq -r "$PI.endCursor")
|
|
@@ -235,6 +235,13 @@ while : ; do
|
|
|
235
235
|
}
|
|
236
236
|
}')
|
|
237
237
|
echo "$PAGE" # collect nodes from every page before deciding the PR is clean
|
|
238
|
+
# GitHub GraphQL returns transient 502/504s (no .data). An empty page reads as
|
|
239
|
+
# "no next page", so retry it a bounded number of times instead of treating it as clean.
|
|
240
|
+
if ! echo "$PAGE" | jq -e '.data' >/dev/null 2>&1; then
|
|
241
|
+
RETRIES=$(( ${RETRIES:-0} + 1 ))
|
|
242
|
+
[ "$RETRIES" -le 3 ] || { echo "GraphQL still failing after 3 retries; threads unknown, not clean"; exit 1; }
|
|
243
|
+
sleep 5; continue
|
|
244
|
+
fi
|
|
238
245
|
PI='.data.repository.pullRequest.reviewThreads.pageInfo'
|
|
239
246
|
[ "$(echo "$PAGE" | jq -r "$PI.hasNextPage")" = "true" ] || break
|
|
240
247
|
CURSOR=$(echo "$PAGE" | jq -r "$PI.endCursor")
|
package/package.json
CHANGED
|
@@ -234,6 +234,13 @@ while : ; do
|
|
|
234
234
|
}
|
|
235
235
|
}')
|
|
236
236
|
echo "$PAGE" # collect nodes from every page before deciding the PR is clean
|
|
237
|
+
# GitHub GraphQL returns transient 502/504s (no .data). An empty page reads as
|
|
238
|
+
# "no next page", so retry it a bounded number of times instead of treating it as clean.
|
|
239
|
+
if ! echo "$PAGE" | jq -e '.data' >/dev/null 2>&1; then
|
|
240
|
+
RETRIES=$(( ${RETRIES:-0} + 1 ))
|
|
241
|
+
[ "$RETRIES" -le 3 ] || { echo "GraphQL still failing after 3 retries; threads unknown, not clean"; exit 1; }
|
|
242
|
+
sleep 5; continue
|
|
243
|
+
fi
|
|
237
244
|
PI='.data.repository.pullRequest.reviewThreads.pageInfo'
|
|
238
245
|
[ "$(echo "$PAGE" | jq -r "$PI.hasNextPage")" = "true" ] || break
|
|
239
246
|
CURSOR=$(echo "$PAGE" | jq -r "$PI.endCursor")
|
|
@@ -228,7 +228,11 @@ Input tokens: ~<N> ← estimated: diff tokens × agent passes + context fil
|
|
|
228
228
|
Cost: ~$<X.XX> (output actual, input estimated; blended across model tiers below)
|
|
229
229
|
```
|
|
230
230
|
|
|
231
|
-
Per-MTok pricing (input/output), verified 2026-07-07 from the claude-api reference; re-check there if models changed:
|
|
231
|
+
Per-MTok pricing (input/output), verified 2026-07-07 from the claude-api reference; re-check there if models changed. The Claude 5.5 rows and fable-5-1 are not yet on that sheet: they reuse the predecessor-tier rates and must be re-checked:
|
|
232
|
+
- claude-fable-5-1: $10 / $50 (unverified, as claude-fable-5)
|
|
233
|
+
- claude-opus-5-5: $15 / $75 (unverified; copied from the opus-5 rate in pricing.json, not checked)
|
|
234
|
+
- claude-sonnet-5-5: $3 / $15 (unverified)
|
|
235
|
+
- claude-haiku-5-5: $1 / $5 (unverified)
|
|
232
236
|
- claude-fable-5: $10 / $50
|
|
233
237
|
- claude-opus-4-8: $5 / $25
|
|
234
238
|
- claude-sonnet-4-6 / claude-sonnet-5: $3 / $15
|
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
{
|
|
2
|
-
"note": "USD per million tokens, keyed by revmux's actual_model. revmux runs `claude --print` under subscription (Max plan) auth, so nothing here is a real API bill; this is an API-list-price ESTIMATE for the cost block only. Where a model exposes separate input/output prices, usd = tokens/1e6 * output price (output-only, not blended), because revmux reports a single combined `tokens` figure per agent with no input/output split to weight a blend. verified:false entries are not confirmed against a current price sheet (no local claude-api pricing doc found on this machine as of 2026-09-09) and must be checked before this cost block is trusted for a real decision.",
|
|
2
|
+
"note": "USD per million tokens, keyed by revmux's actual_model. revmux runs `claude --print` under subscription (Max plan) auth, so nothing here is a real API bill; this is an API-list-price ESTIMATE for the cost block only. Where a model exposes separate input/output prices, usd = tokens/1e6 * output price (output-only, not blended), because revmux reports a single combined `tokens` figure per agent with no input/output split to weight a blend. verified:false entries are not confirmed against a current price sheet (no local claude-api pricing doc found on this machine as of 2026-09-09) and must be checked before this cost block is trusted for a real decision. The claude-*-5-5 and claude-fable-5-1 rows carry the prices of their predecessor tier (fable: $10/$50 as listed in output-format.md; opus/sonnet/haiku: the 5-family rates above) until a price sheet confirms the new models.",
|
|
3
|
+
"claude-fable-5-1": { "input": 10, "output": 50, "blended": 30, "verified": false },
|
|
4
|
+
"claude-opus-5-5": { "input": 15, "output": 75, "blended": 45, "verified": false },
|
|
5
|
+
"claude-sonnet-5-5": { "input": 3, "output": 15, "blended": 9, "verified": false },
|
|
6
|
+
"claude-haiku-5-5": { "input": 1, "output": 5, "blended": 3, "verified": false },
|
|
3
7
|
"claude-opus-5": { "input": 15, "output": 75, "blended": 45, "verified": false },
|
|
4
8
|
"claude-sonnet-5": { "input": 3, "output": 15, "blended": 9, "verified": false },
|
|
5
9
|
"claude-haiku-4-5-20251001": { "input": 1, "output": 5, "blended": 3, "verified": false },
|
package/plugins/olko-github-pr/skills/lekker-review/references/revmux/profiles/lekker-deep-codex.md
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
---
|
|
2
2
|
description: Deep lekker review using Codex agents and a second implementation pass
|
|
3
|
-
model: codex/gpt-
|
|
3
|
+
model: codex/gpt-6-astra:high
|
|
4
4
|
agents:
|
|
5
5
|
- {name: quality+impl, lenses: [lekker-quality, lekker-implementation], color: cyan}
|
|
6
6
|
- {name: simpl+conventions, lenses: [lekker-simplification, lekker-conventions], color: magenta}
|
|
7
7
|
- {name: tests, lenses: [lekker-test-quality, tests], color: green}
|
|
8
8
|
- {name: adversarial, lenses: [adversarial], color: yellow}
|
|
9
9
|
- {name: bugs+impl, lenses: [bugs, impl], color: blue}
|
|
10
|
-
stages: {synthesis: codex/gpt-
|
|
10
|
+
stages: {synthesis: codex/gpt-6-astra:high, verify: codex/gpt-6-astra:high}
|
|
11
11
|
---
|
|
12
12
|
You are one read-only reviewer on a panel. Other reviewers apply different
|
|
13
13
|
lenses to the same change. Report only findings supported by your own lenses.
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
---
|
|
2
2
|
description: Medium-depth lekker review using Codex agents
|
|
3
|
-
model: codex/gpt-
|
|
3
|
+
model: codex/gpt-6-astra:high
|
|
4
4
|
agents:
|
|
5
5
|
- {name: quality+impl, lenses: [lekker-quality, lekker-implementation], color: cyan}
|
|
6
6
|
- {name: simpl+conventions, lenses: [lekker-simplification, lekker-conventions], color: magenta}
|
|
7
7
|
- {name: tests, lenses: [lekker-test-quality, tests], color: green}
|
|
8
8
|
- {name: adversarial, lenses: [adversarial], color: yellow}
|
|
9
|
-
stages: {synthesis: codex/gpt-
|
|
9
|
+
stages: {synthesis: codex/gpt-6-astra:high, verify: codex/gpt-6-astra:high}
|
|
10
10
|
---
|
|
11
11
|
You are one read-only reviewer on a panel. Other reviewers apply different
|
|
12
12
|
lenses to the same change. Report only findings supported by your own lenses.
|