@olegkoval/agent-skills 1.69.4 → 1.71.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/copilot-instructions.md +1 -0
- package/.github/prompts/team-retrospective.prompt.md +31 -0
- package/.github/prompts/wrap-up.prompt.md +2 -0
- package/.kiro/steering/team-retrospective.md +30 -0
- package/.kiro/steering/wrap-up.md +2 -0
- package/.windsurf/rules/team-retrospective.md +29 -0
- package/.windsurf/rules/wrap-up.md +2 -0
- package/README.md +1 -0
- package/adapters/claude/olko-github-pr/skills/lekker-review/SKILL.md +11 -2
- package/adapters/claude/olko-github-pr/skills/lekker-review/references/agents/conventions.md +3 -0
- package/adapters/claude/olko-github-pr/skills/lekker-review/references/agents/implementation.md +3 -0
- package/adapters/claude/olko-github-pr/skills/lekker-review/references/agents/quality.md +3 -0
- package/adapters/claude/olko-github-pr/skills/lekker-review/references/agents/simplification.md +3 -0
- package/adapters/claude/olko-github-pr/skills/lekker-review/references/agents/test-quality.md +3 -0
- package/adapters/claude/olko-github-pr/skills/lekker-review/references/agents/verifier.md +28 -3
- package/adapters/claude/olko-github-pr/skills/lekker-review/scripts/fixtures/project-rules/CLAUDE.md +4 -0
- package/adapters/claude/olko-github-pr/skills/lekker-review/scripts/fixtures/project-rules/planted.diff +9 -0
- package/adapters/claude/olko-github-pr/skills/lekker-review/scripts/project-rule-findings.mjs +122 -0
- package/adapters/claude/olko-github-pr/skills/lekker-review/scripts/selftest.mjs +160 -0
- package/adapters/claude/olko-github-pr/skills/lekker-review/scripts/setup-worktree.sh +63 -5
- package/adapters/claude/olko-reflection/skills/team-retrospective/SKILL.md +38 -0
- package/adapters/claude/olko-reflection/skills/wrap-up/SKILL.md +2 -0
- package/adapters/codex/olko-reflection/README.md +1 -0
- package/adapters/cursor/olko-reflection/skills/team-retrospective/SKILL.md +38 -0
- package/adapters/cursor/olko-reflection/skills/wrap-up/SKILL.md +2 -0
- package/adapters/grok/olko-reflection/skills/team-retrospective/SKILL.md +38 -0
- package/adapters/grok/olko-reflection/skills/wrap-up/SKILL.md +2 -0
- package/adapters/hermes/olko-reflection/README.md +1 -0
- package/catalog/skills.json +38 -2
- 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/lekker-review/SKILL.md +11 -2
- package/plugins/olko-github-pr/skills/lekker-review/references/agents/conventions.md +3 -0
- package/plugins/olko-github-pr/skills/lekker-review/references/agents/implementation.md +3 -0
- package/plugins/olko-github-pr/skills/lekker-review/references/agents/quality.md +3 -0
- package/plugins/olko-github-pr/skills/lekker-review/references/agents/simplification.md +3 -0
- package/plugins/olko-github-pr/skills/lekker-review/references/agents/test-quality.md +3 -0
- package/plugins/olko-github-pr/skills/lekker-review/references/agents/verifier.md +28 -3
- package/plugins/olko-github-pr/skills/lekker-review/scripts/fixtures/project-rules/CLAUDE.md +4 -0
- package/plugins/olko-github-pr/skills/lekker-review/scripts/fixtures/project-rules/planted.diff +9 -0
- package/plugins/olko-github-pr/skills/lekker-review/scripts/project-rule-findings.mjs +122 -0
- package/plugins/olko-github-pr/skills/lekker-review/scripts/selftest.mjs +160 -0
- package/plugins/olko-github-pr/skills/lekker-review/scripts/setup-worktree.sh +63 -5
- package/plugins/olko-github-pr/skills/lekker-review/workflow.js +62 -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-reflection/skills/team-retrospective/SKILL.md +37 -0
- package/plugins/olko-reflection/skills/wrap-up/SKILL.md +2 -0
- 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
- package/scripts/lib/catalog.mjs +1 -1
|
@@ -134,6 +134,20 @@ collect_project_rules() {
|
|
|
134
134
|
-not -path '*/node_modules/*' 2>/dev/null | sort)
|
|
135
135
|
}
|
|
136
136
|
|
|
137
|
+
# Hard rules must come from a tree the PR author does not control: a PR that
|
|
138
|
+
# deletes a rule and then breaks it would otherwise leave nothing to enforce.
|
|
139
|
+
collect_project_rules_at_ref() {
|
|
140
|
+
local repo="$1" ref="$2" dir status=0
|
|
141
|
+
dir="$(mktemp -d "/tmp/lekker-base-rules-XXXXXX")"
|
|
142
|
+
if git -C "$repo" archive "$ref" 2>/dev/null | tar -x -C "$dir" 2>/dev/null; then
|
|
143
|
+
collect_project_rules "$dir"
|
|
144
|
+
else
|
|
145
|
+
status=1
|
|
146
|
+
fi
|
|
147
|
+
rm -rf "$dir"
|
|
148
|
+
return "$status"
|
|
149
|
+
}
|
|
150
|
+
|
|
137
151
|
# Scan depth needs PR-authored review guidance but skips expensive worktree
|
|
138
152
|
# setup. Read the PR tree from an archive so no Git worktree or checkout is made.
|
|
139
153
|
if [[ "${LEKKER_RULES_ONLY:-}" == "1" ]]; then
|
|
@@ -149,14 +163,40 @@ if [[ "${LEKKER_RULES_ONLY:-}" == "1" ]]; then
|
|
|
149
163
|
exit 1
|
|
150
164
|
fi
|
|
151
165
|
fi
|
|
166
|
+
if [[ -n "${LEKKER_BASE_REF:-}" ]]; then
|
|
167
|
+
if [[ -z "$LOCAL_REPO" && "$LEKKER_BASE_REF" == origin/* ]]; then
|
|
168
|
+
BASE_BRANCH="${LEKKER_BASE_REF#origin/}"
|
|
169
|
+
if ! git -C "$REPO_ROOT" fetch origin \
|
|
170
|
+
"+refs/heads/${BASE_BRANCH}:refs/remotes/origin/${BASE_BRANCH}" 2>/dev/null; then
|
|
171
|
+
printf 'ERROR: could not fetch base ref %s for rules-only scan\n' "$LEKKER_BASE_REF" >&2
|
|
172
|
+
exit 1
|
|
173
|
+
fi
|
|
174
|
+
fi
|
|
175
|
+
if ! git -C "$REPO_ROOT" rev-parse --verify -q "${LEKKER_BASE_REF}^{commit}" >/dev/null; then
|
|
176
|
+
printf 'ERROR: base ref %s does not resolve for rules-only scan\n' "$LEKKER_BASE_REF" >&2
|
|
177
|
+
exit 1
|
|
178
|
+
fi
|
|
179
|
+
fi
|
|
152
180
|
RULES_SOURCE="/tmp/lekker-rules-source-$$"
|
|
153
181
|
mkdir -p "$RULES_SOURCE"
|
|
154
182
|
git -C "$REPO_ROOT" archive "$RULES_REF" | tar -x -C "$RULES_SOURCE"
|
|
155
183
|
PROJECT_RULES="$(collect_project_rules "$RULES_SOURCE")"
|
|
156
|
-
|
|
184
|
+
BASE_PROJECT_RULES=""
|
|
185
|
+
HAVE_BASE_RULES=0
|
|
186
|
+
if [[ -n "${LEKKER_BASE_REF:-}" ]]; then
|
|
187
|
+
if BASE_PROJECT_RULES="$(collect_project_rules_at_ref "$REPO_ROOT" "$LEKKER_BASE_REF")"; then
|
|
188
|
+
HAVE_BASE_RULES=1
|
|
189
|
+
else
|
|
190
|
+
BASE_PROJECT_RULES=""
|
|
191
|
+
NOTES="${NOTES}base-rules-unavailable;"
|
|
192
|
+
fi
|
|
193
|
+
fi
|
|
194
|
+
python3 - "$OUT_JSON" "$PROJECT_RULES" "$BASE_PROJECT_RULES" "$HAVE_BASE_RULES" <<'PYEOF'
|
|
157
195
|
import json, sys
|
|
196
|
+
out = {"projectRules": sys.argv[2]}
|
|
197
|
+
out["baseProjectRules"] = sys.argv[3] if sys.argv[4] == "1" else None
|
|
158
198
|
with open(sys.argv[1], "w") as f:
|
|
159
|
-
json.dump(
|
|
199
|
+
json.dump(out, f, indent=2)
|
|
160
200
|
PYEOF
|
|
161
201
|
rm -rf "$RULES_SOURCE"
|
|
162
202
|
printf 'OK %s\n' "$OUT_JSON"
|
|
@@ -475,6 +515,20 @@ PROJECT_RULES_FILE="/tmp/lekker-rules-$$.txt"
|
|
|
475
515
|
printf '' > "$PROJECT_RULES_FILE"
|
|
476
516
|
collect_project_rules "$WORKTREE_PATH" > "$PROJECT_RULES_FILE"
|
|
477
517
|
|
|
518
|
+
BASE_RULES_FILE="/tmp/lekker-base-rules-$$.txt"
|
|
519
|
+
BASE_RULES_STATE="absent"
|
|
520
|
+
printf '' > "$BASE_RULES_FILE"
|
|
521
|
+
if [[ -n "$MERGE_BASE_NOTE" && "$MERGE_BASE_NOTE" != "unknown" ]] \
|
|
522
|
+
&& git -C "$REPO_ROOT" rev-parse --verify -q "${MERGE_BASE_NOTE}^{commit}" >/dev/null; then
|
|
523
|
+
if collect_project_rules_at_ref "$REPO_ROOT" "$MERGE_BASE_NOTE" > "$BASE_RULES_FILE"; then
|
|
524
|
+
BASE_RULES_STATE="present"
|
|
525
|
+
else
|
|
526
|
+
NOTES="${NOTES}base-rules-unavailable;"
|
|
527
|
+
fi
|
|
528
|
+
else
|
|
529
|
+
NOTES="${NOTES}base-rules-unavailable;"
|
|
530
|
+
fi
|
|
531
|
+
|
|
478
532
|
# ---------------------------------------------------------------------------
|
|
479
533
|
# 6. HEAD SHA
|
|
480
534
|
# ---------------------------------------------------------------------------
|
|
@@ -518,14 +572,17 @@ python3 - \
|
|
|
518
572
|
"$DEPS_INSTALL_FILE" \
|
|
519
573
|
"$ESLINT_JSON_FILE" \
|
|
520
574
|
"$TEST_RUNNER_JSON" \
|
|
521
|
-
"$OUT_JSON"
|
|
575
|
+
"$OUT_JSON" \
|
|
576
|
+
"$BASE_RULES_FILE" \
|
|
577
|
+
"$BASE_RULES_STATE" <<'PYEOF'
|
|
522
578
|
import json, sys, os
|
|
523
579
|
|
|
524
580
|
(worktree_path, repo_root, head_sha, head_sha_short,
|
|
525
581
|
tsc_file, eslint_file, rules_file, delta_file, notes,
|
|
526
582
|
changed_files_file, base_ref_val, eslint_scope_file,
|
|
527
583
|
tsc_changed_file, tsc_count_file, merge_base_val,
|
|
528
|
-
deps_install_file, eslint_json_file, test_runner_json, out_json
|
|
584
|
+
deps_install_file, eslint_json_file, test_runner_json, out_json,
|
|
585
|
+
base_rules_file, base_rules_state) = sys.argv[1:22]
|
|
529
586
|
|
|
530
587
|
def parse_runner(raw):
|
|
531
588
|
try:
|
|
@@ -581,6 +638,7 @@ data = {
|
|
|
581
638
|
"tscTail": read_file(tsc_file),
|
|
582
639
|
"eslintTail": read_file(eslint_file),
|
|
583
640
|
"projectRules": read_file(rules_file),
|
|
641
|
+
"baseProjectRules": read_file(base_rules_file) if base_rules_state == "present" else None,
|
|
584
642
|
"deltaFile": None if delta_file == "null" else delta_file,
|
|
585
643
|
"notes": notes,
|
|
586
644
|
"changedFiles": changed_files,
|
|
@@ -598,7 +656,7 @@ data = {
|
|
|
598
656
|
"eslintJson": eslint_json_file if file_has_content(eslint_json_file) else None,
|
|
599
657
|
}
|
|
600
658
|
|
|
601
|
-
for p in (tsc_file, eslint_file, rules_file, changed_files_file,
|
|
659
|
+
for p in (tsc_file, eslint_file, rules_file, base_rules_file, changed_files_file,
|
|
602
660
|
eslint_scope_file, tsc_changed_file, tsc_count_file,
|
|
603
661
|
deps_install_file):
|
|
604
662
|
try:
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: team-retrospective
|
|
3
|
+
description: Collect a factual retrospective from each task-owned agent and safely dismiss the team after successful work. Use during wrap-up of a completed, green multi-agent task or when explicitly requested.
|
|
4
|
+
license: MIT
|
|
5
|
+
compatibility: Codex, Claude Code, and other agent environments with delegation controls.
|
|
6
|
+
metadata:
|
|
7
|
+
author: Oleg Koval
|
|
8
|
+
tags:
|
|
9
|
+
- agents
|
|
10
|
+
- retrospective
|
|
11
|
+
- delegation
|
|
12
|
+
- cleanup
|
|
13
|
+
---
|
|
14
|
+
<!-- Generated by scripts/build-adapters.sh. Do not edit directly. -->
|
|
15
|
+
|
|
16
|
+
# Team retrospective
|
|
17
|
+
|
|
18
|
+
Run after a multi-agent task is complete and its applicable checks are green,
|
|
19
|
+
before dismissing its agents. Explicit user instructions to retain agents or
|
|
20
|
+
finish early take precedence. Do not spawn agents solely to run this skill.
|
|
21
|
+
|
|
22
|
+
1. Identify agents, tabs, and sessions owned by this task using the environment's
|
|
23
|
+
actual inventory and recorded ownership. Preserve other tasks and sessions.
|
|
24
|
+
2. Ask each reachable agent for a concise factual report: what went wrong, failed
|
|
25
|
+
approaches, tool or coordination problems, resolutions, and unresolved items.
|
|
26
|
+
Ask them to distinguish direct observation from inference. A clean report may
|
|
27
|
+
say no issues. Do not request new implementation or speculative findings.
|
|
28
|
+
3. Collect each response, or label it unavailable with the reason. Preserve useful
|
|
29
|
+
findings and a concise summary in an appropriate task artifact; avoid secrets,
|
|
30
|
+
unnecessary transcripts, and public disclosure. Report recurring issues and
|
|
31
|
+
unresolved items to the user. Claims remain reports until independently verified.
|
|
32
|
+
4. Confirm work and required handoffs are preserved. Dismiss the task-owned agents
|
|
33
|
+
and close only their task-owned tabs or panes when safe; verify the result.
|
|
34
|
+
Follow the environment's skill and safety rules. Never stop a shared server or
|
|
35
|
+
close another task's session. Respect explicit instructions to keep agents.
|
|
36
|
+
5. If work is blocked, unfinished, or still active, preserve the agents and report
|
|
37
|
+
the blocker instead of treating the task as green. If the environment cannot
|
|
38
|
+
contact or dismiss an agent, report the limitation; never claim it was dismissed.
|
|
@@ -43,6 +43,8 @@ Use this as a proportional end-of-task audit. Preserve pre-existing work and do
|
|
|
43
43
|
- Check the diff and untracked files for keys, tokens, passwords, private keys, connection strings, cookies, personal data, and credentials in logs or examples. Report locations without printing values; recommend environment variables or a secret manager where relevant.
|
|
44
44
|
- Decide from the actual change whether README, architecture or API docs, OpenAPI, CHANGELOG, CONTRIBUTING, `.env.example`, ADRs, or runbooks need an update. Name the exact change needed. Skip documentation for trivial internal changes unless it helps future maintenance.
|
|
45
45
|
|
|
46
|
+
Before cleanup, when a completed task used a team and its applicable checks are green, invoke `olko:team-retrospective` to collect each agent’s report and safely dismiss task-owned agents. If unavailable, report the limitation; do not claim closeout ran.
|
|
47
|
+
|
|
46
48
|
## 4. Prepare safe cleanup
|
|
47
49
|
|
|
48
50
|
- Propose cleanup commands only. Do not remove any file, branch, or worktree automatically, including generated or temporary files. Never propose deletion of an unknown untracked file, broad directory, or unresolved glob.
|
|
@@ -10,3 +10,4 @@ Use the canonical skills directly:
|
|
|
10
10
|
- `plugins/olko-reflection/skills/agent-ops-retro/SKILL.md`
|
|
11
11
|
- `plugins/olko-reflection/skills/crash-course/SKILL.md`
|
|
12
12
|
- `plugins/olko-reflection/skills/wrap-up/SKILL.md`
|
|
13
|
+
- `plugins/olko-reflection/skills/team-retrospective/SKILL.md`
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: team-retrospective
|
|
3
|
+
description: Collect a factual retrospective from each task-owned agent and safely dismiss the team after successful work. Use during wrap-up of a completed, green multi-agent task or when explicitly requested.
|
|
4
|
+
license: MIT
|
|
5
|
+
compatibility: Codex, Claude Code, and other agent environments with delegation controls.
|
|
6
|
+
metadata:
|
|
7
|
+
author: Oleg Koval
|
|
8
|
+
tags:
|
|
9
|
+
- agents
|
|
10
|
+
- retrospective
|
|
11
|
+
- delegation
|
|
12
|
+
- cleanup
|
|
13
|
+
---
|
|
14
|
+
<!-- Generated by scripts/build-adapters.sh. Do not edit directly. -->
|
|
15
|
+
|
|
16
|
+
# Team retrospective
|
|
17
|
+
|
|
18
|
+
Run after a multi-agent task is complete and its applicable checks are green,
|
|
19
|
+
before dismissing its agents. Explicit user instructions to retain agents or
|
|
20
|
+
finish early take precedence. Do not spawn agents solely to run this skill.
|
|
21
|
+
|
|
22
|
+
1. Identify agents, tabs, and sessions owned by this task using the environment's
|
|
23
|
+
actual inventory and recorded ownership. Preserve other tasks and sessions.
|
|
24
|
+
2. Ask each reachable agent for a concise factual report: what went wrong, failed
|
|
25
|
+
approaches, tool or coordination problems, resolutions, and unresolved items.
|
|
26
|
+
Ask them to distinguish direct observation from inference. A clean report may
|
|
27
|
+
say no issues. Do not request new implementation or speculative findings.
|
|
28
|
+
3. Collect each response, or label it unavailable with the reason. Preserve useful
|
|
29
|
+
findings and a concise summary in an appropriate task artifact; avoid secrets,
|
|
30
|
+
unnecessary transcripts, and public disclosure. Report recurring issues and
|
|
31
|
+
unresolved items to the user. Claims remain reports until independently verified.
|
|
32
|
+
4. Confirm work and required handoffs are preserved. Dismiss the task-owned agents
|
|
33
|
+
and close only their task-owned tabs or panes when safe; verify the result.
|
|
34
|
+
Follow the environment's skill and safety rules. Never stop a shared server or
|
|
35
|
+
close another task's session. Respect explicit instructions to keep agents.
|
|
36
|
+
5. If work is blocked, unfinished, or still active, preserve the agents and report
|
|
37
|
+
the blocker instead of treating the task as green. If the environment cannot
|
|
38
|
+
contact or dismiss an agent, report the limitation; never claim it was dismissed.
|
|
@@ -43,6 +43,8 @@ Use this as a proportional end-of-task audit. Preserve pre-existing work and do
|
|
|
43
43
|
- Check the diff and untracked files for keys, tokens, passwords, private keys, connection strings, cookies, personal data, and credentials in logs or examples. Report locations without printing values; recommend environment variables or a secret manager where relevant.
|
|
44
44
|
- Decide from the actual change whether README, architecture or API docs, OpenAPI, CHANGELOG, CONTRIBUTING, `.env.example`, ADRs, or runbooks need an update. Name the exact change needed. Skip documentation for trivial internal changes unless it helps future maintenance.
|
|
45
45
|
|
|
46
|
+
Before cleanup, when a completed task used a team and its applicable checks are green, invoke `olko:team-retrospective` to collect each agent’s report and safely dismiss task-owned agents. If unavailable, report the limitation; do not claim closeout ran.
|
|
47
|
+
|
|
46
48
|
## 4. Prepare safe cleanup
|
|
47
49
|
|
|
48
50
|
- Propose cleanup commands only. Do not remove any file, branch, or worktree automatically, including generated or temporary files. Never propose deletion of an unknown untracked file, broad directory, or unresolved glob.
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: team-retrospective
|
|
3
|
+
description: Collect a factual retrospective from each task-owned agent and safely dismiss the team after successful work. Use during wrap-up of a completed, green multi-agent task or when explicitly requested.
|
|
4
|
+
license: MIT
|
|
5
|
+
compatibility: Codex, Claude Code, and other agent environments with delegation controls.
|
|
6
|
+
metadata:
|
|
7
|
+
author: Oleg Koval
|
|
8
|
+
tags:
|
|
9
|
+
- agents
|
|
10
|
+
- retrospective
|
|
11
|
+
- delegation
|
|
12
|
+
- cleanup
|
|
13
|
+
---
|
|
14
|
+
<!-- Generated by scripts/build-adapters.sh. Do not edit directly. -->
|
|
15
|
+
|
|
16
|
+
# Team retrospective
|
|
17
|
+
|
|
18
|
+
Run after a multi-agent task is complete and its applicable checks are green,
|
|
19
|
+
before dismissing its agents. Explicit user instructions to retain agents or
|
|
20
|
+
finish early take precedence. Do not spawn agents solely to run this skill.
|
|
21
|
+
|
|
22
|
+
1. Identify agents, tabs, and sessions owned by this task using the environment's
|
|
23
|
+
actual inventory and recorded ownership. Preserve other tasks and sessions.
|
|
24
|
+
2. Ask each reachable agent for a concise factual report: what went wrong, failed
|
|
25
|
+
approaches, tool or coordination problems, resolutions, and unresolved items.
|
|
26
|
+
Ask them to distinguish direct observation from inference. A clean report may
|
|
27
|
+
say no issues. Do not request new implementation or speculative findings.
|
|
28
|
+
3. Collect each response, or label it unavailable with the reason. Preserve useful
|
|
29
|
+
findings and a concise summary in an appropriate task artifact; avoid secrets,
|
|
30
|
+
unnecessary transcripts, and public disclosure. Report recurring issues and
|
|
31
|
+
unresolved items to the user. Claims remain reports until independently verified.
|
|
32
|
+
4. Confirm work and required handoffs are preserved. Dismiss the task-owned agents
|
|
33
|
+
and close only their task-owned tabs or panes when safe; verify the result.
|
|
34
|
+
Follow the environment's skill and safety rules. Never stop a shared server or
|
|
35
|
+
close another task's session. Respect explicit instructions to keep agents.
|
|
36
|
+
5. If work is blocked, unfinished, or still active, preserve the agents and report
|
|
37
|
+
the blocker instead of treating the task as green. If the environment cannot
|
|
38
|
+
contact or dismiss an agent, report the limitation; never claim it was dismissed.
|
|
@@ -43,6 +43,8 @@ Use this as a proportional end-of-task audit. Preserve pre-existing work and do
|
|
|
43
43
|
- Check the diff and untracked files for keys, tokens, passwords, private keys, connection strings, cookies, personal data, and credentials in logs or examples. Report locations without printing values; recommend environment variables or a secret manager where relevant.
|
|
44
44
|
- Decide from the actual change whether README, architecture or API docs, OpenAPI, CHANGELOG, CONTRIBUTING, `.env.example`, ADRs, or runbooks need an update. Name the exact change needed. Skip documentation for trivial internal changes unless it helps future maintenance.
|
|
45
45
|
|
|
46
|
+
Before cleanup, when a completed task used a team and its applicable checks are green, invoke `olko:team-retrospective` to collect each agent’s report and safely dismiss task-owned agents. If unavailable, report the limitation; do not claim closeout ran.
|
|
47
|
+
|
|
46
48
|
## 4. Prepare safe cleanup
|
|
47
49
|
|
|
48
50
|
- Propose cleanup commands only. Do not remove any file, branch, or worktree automatically, including generated or temporary files. Never propose deletion of an unknown untracked file, broad directory, or unresolved glob.
|
|
@@ -11,3 +11,4 @@ into the active Hermes profile. The canonical packages are:
|
|
|
11
11
|
- `plugins/olko-reflection/skills/agent-ops-retro/SKILL.md`
|
|
12
12
|
- `plugins/olko-reflection/skills/crash-course/SKILL.md`
|
|
13
13
|
- `plugins/olko-reflection/skills/wrap-up/SKILL.md`
|
|
14
|
+
- `plugins/olko-reflection/skills/team-retrospective/SKILL.md`
|
package/catalog/skills.json
CHANGED
|
@@ -1029,6 +1029,28 @@
|
|
|
1029
1029
|
"grok",
|
|
1030
1030
|
"hermes"
|
|
1031
1031
|
]
|
|
1032
|
+
},
|
|
1033
|
+
{
|
|
1034
|
+
"name": "team-retrospective",
|
|
1035
|
+
"lookupName": "olko:team-retrospective",
|
|
1036
|
+
"path": "plugins/olko-reflection/skills/team-retrospective",
|
|
1037
|
+
"description": "Collect each task agent\u2019s factual retrospective and safely dismiss the team after successful work.",
|
|
1038
|
+
"tags": [
|
|
1039
|
+
"agents",
|
|
1040
|
+
"retrospective",
|
|
1041
|
+
"delegation",
|
|
1042
|
+
"cleanup"
|
|
1043
|
+
],
|
|
1044
|
+
"adapters": [
|
|
1045
|
+
"codex",
|
|
1046
|
+
"claude",
|
|
1047
|
+
"cursor",
|
|
1048
|
+
"copilot",
|
|
1049
|
+
"windsurf",
|
|
1050
|
+
"kiro",
|
|
1051
|
+
"grok",
|
|
1052
|
+
"hermes"
|
|
1053
|
+
]
|
|
1032
1054
|
}
|
|
1033
1055
|
]
|
|
1034
1056
|
},
|
|
@@ -1125,8 +1147,22 @@
|
|
|
1125
1147
|
"lookupName": "olko:app-store-regional-pricing",
|
|
1126
1148
|
"path": "plugins/olko-apple-kit/skills/app-store-regional-pricing",
|
|
1127
1149
|
"description": "Research, propose, and verify App Store and in-app purchase prices by storefront using affordability evidence and Apple price points.",
|
|
1128
|
-
"tags": [
|
|
1129
|
-
|
|
1150
|
+
"tags": [
|
|
1151
|
+
"apple",
|
|
1152
|
+
"app-store",
|
|
1153
|
+
"pricing",
|
|
1154
|
+
"localization"
|
|
1155
|
+
],
|
|
1156
|
+
"adapters": [
|
|
1157
|
+
"codex",
|
|
1158
|
+
"claude",
|
|
1159
|
+
"cursor",
|
|
1160
|
+
"copilot",
|
|
1161
|
+
"windsurf",
|
|
1162
|
+
"kiro",
|
|
1163
|
+
"grok",
|
|
1164
|
+
"hermes"
|
|
1165
|
+
]
|
|
1130
1166
|
},
|
|
1131
1167
|
{
|
|
1132
1168
|
"name": "apple-store-submit",
|
package/package.json
CHANGED
|
@@ -469,12 +469,13 @@ Fire both tracks in the same turn.
|
|
|
469
469
|
At scan depth, collect review guidance without creating a worktree:
|
|
470
470
|
|
|
471
471
|
```bash
|
|
472
|
-
LEKKER_RULES_ONLY=1
|
|
472
|
+
LEKKER_RULES_ONLY=1 LEKKER_BASE_REF=origin/<BASE_BRANCH> \
|
|
473
|
+
${SKILL_ROOT}/scripts/setup-worktree.sh \
|
|
473
474
|
<REPO_SLUG> <PR_BRANCH> <scratchpad>/rules.json
|
|
474
475
|
```
|
|
475
476
|
|
|
476
477
|
Read `projectRules` from `rules.json` into `context.json`. This archive-only
|
|
477
|
-
mode
|
|
478
|
+
mode fetches the PR base for `baseProjectRules` and does not run static checks.
|
|
478
479
|
|
|
479
480
|
Run via Bash with `run_in_background`:
|
|
480
481
|
|
|
@@ -686,6 +687,7 @@ Write `<scratchpad>/context.json` with keys:
|
|
|
686
687
|
{
|
|
687
688
|
"acList": "<numbered ACs from your issue tracker, or empty>",
|
|
688
689
|
"projectRules": "<worktree.json or rules.json projectRules + any recalled review patterns appended under '## Recalled patterns'>",
|
|
690
|
+
"baseProjectRules": "<worktree.json or rules.json baseProjectRules, copied unchanged (no recalled patterns); null when absent>",
|
|
689
691
|
"changedPaths": "<PR files[].path list, or an exact matching worktree.json changedFiles list>",
|
|
690
692
|
"sentrySignals": "<monitoring issue summaries, or null>",
|
|
691
693
|
"ciStatus": "<passing | failing: <names> | pending | N/A>",
|
|
@@ -914,6 +916,13 @@ value first). `REVIEW.md` ignore rules never suppress findings in changed paths.
|
|
|
914
916
|
applies exclusions to agent and lint findings using `changedPaths`; if paths are
|
|
915
917
|
unavailable, keep findings. It never switches off a hard rule from `CLAUDE.md` or the house rules.
|
|
916
918
|
|
|
919
|
+
**Project rules are hard rules.** A prohibition or obligation in `projectRules`
|
|
920
|
+
(NEVER, MUST, ALWAYS, DO NOT or plain-English equivalent) that a changed line
|
|
921
|
+
violates is raised as Critical with `rule: "PROJECT:<slug>"` and a verbatim
|
|
922
|
+
`ruleQuote`. The verifier runs `scripts/project-rule-findings.mjs`, which drops
|
|
923
|
+
a finding whose quote is not found in `projectRules`; otherwise it takes the
|
|
924
|
+
hard-rule path (anchor and applicability, no runtime challenges).
|
|
925
|
+
|
|
917
926
|
**Approval standard.** The verdict answers "does this definitely improve the
|
|
918
927
|
codebase's health", not "is this how I would have written it". Perfect code does
|
|
919
928
|
not exist. `✅ LGTM - ship it` is the right call for a change that improves
|
|
@@ -127,6 +127,9 @@ Use it as a prior, not as a checklist:
|
|
|
127
127
|
EXISTING_REVIEWS: read key "existingReviews" from CONTEXT_FILE (awareness only, skip findings already raised)
|
|
128
128
|
|
|
129
129
|
PROJECT_RULES to verify: read key "projectRules" from CONTEXT_FILE.
|
|
130
|
+
A changed line that violates a prohibition or obligation in PROJECT_RULES is a Critical
|
|
131
|
+
finding tagged `rule: "PROJECT:<slug>"` with `ruleQuote` set to the exact rule sentence
|
|
132
|
+
(see PROJECT RULES AS HARD RULES in the task message).
|
|
130
133
|
|
|
131
134
|
Diff: read the full unified PR diff from the file DIFF_FILE (absolute path given in your task message). Do NOT run gh pr diff.
|
|
132
135
|
Worktree: WORKTREE_PATH is given in your task message (null in scan mode, diff only).
|
|
@@ -105,6 +105,9 @@ SENTRY_SIGNALS: read key "sentrySignals" from CONTEXT_FILE.
|
|
|
105
105
|
EXISTING_REVIEWS: read key "existingReviews" from CONTEXT_FILE (awareness only, skip findings already raised)
|
|
106
106
|
|
|
107
107
|
PROJECT_RULES to verify: read key "projectRules" from CONTEXT_FILE.
|
|
108
|
+
A changed line that violates a prohibition or obligation in PROJECT_RULES is a Critical
|
|
109
|
+
finding tagged `rule: "PROJECT:<slug>"` with `ruleQuote` set to the exact rule sentence
|
|
110
|
+
(see PROJECT RULES AS HARD RULES in the task message).
|
|
108
111
|
|
|
109
112
|
Diff: read the full unified PR diff from the file DIFF_FILE (absolute path given in your task message). Do NOT run gh pr diff.
|
|
110
113
|
Worktree: WORKTREE_PATH is given in your task message (null in scan mode, diff only).
|
|
@@ -72,6 +72,9 @@ Note: awareness only. Do not anchor on prior reviews. Skip findings already
|
|
|
72
72
|
raised at the same file:line by another reviewer.
|
|
73
73
|
|
|
74
74
|
PROJECT_RULES to verify: read key "projectRules" from CONTEXT_FILE.
|
|
75
|
+
A changed line that violates a prohibition or obligation in PROJECT_RULES is a Critical
|
|
76
|
+
finding tagged `rule: "PROJECT:<slug>"` with `ruleQuote` set to the exact rule sentence
|
|
77
|
+
(see PROJECT RULES AS HARD RULES in the task message).
|
|
75
78
|
|
|
76
79
|
Diff: read the full unified PR diff from the file DIFF_FILE (absolute path given in your task message). Do NOT run gh pr diff.
|
|
77
80
|
Worktree: WORKTREE_PATH is given in your task message (null in scan mode, diff only).
|
|
@@ -56,6 +56,9 @@ actionable: name the move or drop the finding.
|
|
|
56
56
|
EXISTING_REVIEWS: read key "existingReviews" from CONTEXT_FILE (awareness only, skip findings already raised)
|
|
57
57
|
|
|
58
58
|
PROJECT_RULES to verify: read key "projectRules" from CONTEXT_FILE.
|
|
59
|
+
A changed line that violates a prohibition or obligation in PROJECT_RULES is a Critical
|
|
60
|
+
finding tagged `rule: "PROJECT:<slug>"` with `ruleQuote` set to the exact rule sentence
|
|
61
|
+
(see PROJECT RULES AS HARD RULES in the task message).
|
|
59
62
|
|
|
60
63
|
Diff: read the full unified PR diff from the file DIFF_FILE (absolute path given in your task message). Do NOT run gh pr diff.
|
|
61
64
|
Worktree: WORKTREE_PATH is given in your task message (null in scan mode, diff only).
|
|
@@ -169,6 +169,9 @@ Return the review summary through these structured fields in addition to
|
|
|
169
169
|
EXISTING_REVIEWS: read key "existingReviews" from CONTEXT_FILE (awareness only, skip findings already raised)
|
|
170
170
|
|
|
171
171
|
PROJECT_RULES to verify: read key "projectRules" from CONTEXT_FILE.
|
|
172
|
+
A changed line that violates a prohibition or obligation in PROJECT_RULES is a Critical
|
|
173
|
+
finding tagged `rule: "PROJECT:<slug>"` with `ruleQuote` set to the exact rule sentence
|
|
174
|
+
(see PROJECT RULES AS HARD RULES in the task message).
|
|
172
175
|
Diff: read DIFF_FILE. List every test file/spec
|
|
173
176
|
Worktree: WORKTREE_PATH is given in your task message (null in scan mode, diff only).
|
|
174
177
|
|
|
@@ -28,14 +28,28 @@ unless Step 0 validates it through the house hard-rule path.
|
|
|
28
28
|
|
|
29
29
|
## Step 0 -- Hard-rule validation (check this FIRST)
|
|
30
30
|
|
|
31
|
-
If the FINDING JSON has any non-empty `rule` field,
|
|
32
|
-
such as `TS-1`, `TS-2`, `GQL-1`, or `PR-1`, do NOT run the five adversarial
|
|
31
|
+
If the FINDING JSON has any non-empty `rule` field, do NOT run the five adversarial
|
|
33
32
|
challenges below. They ask
|
|
34
33
|
runtime-failure questions that a standards violation can never answer, and
|
|
35
34
|
answering them honestly would drop a finding that house-rules policy declares
|
|
36
35
|
Critical on standards grounds rather than on runtime behaviour.
|
|
37
36
|
|
|
38
|
-
|
|
37
|
+
For `rule: "weakens-project-rule"`, use this dedicated path:
|
|
38
|
+
|
|
39
|
+
1. **Removed-line anchor**: confirm the quoted rule appears on a `-` line in
|
|
40
|
+
`DIFF_FILE` for the finding's file. Ignore `---` file headers. This anchor is
|
|
41
|
+
valid for both a deletion and a replacement; do not require a matching `+`
|
|
42
|
+
line or downgrade the finding because it has no production-code `+` line.
|
|
43
|
+
2. **Base-rule validation**: write the FINDING JSON to a unique temp file and run
|
|
44
|
+
`node <this prompt's directory>/../../scripts/project-rule-findings.mjs <finding.json> <CONTEXT_FILE>`.
|
|
45
|
+
The validator requires the exact quote to exist in `baseProjectRules`; a
|
|
46
|
+
missing base copy or rejected quote fails this check. Do not validate against
|
|
47
|
+
`projectRules`, which may already reflect the PR's weakened rules.
|
|
48
|
+
|
|
49
|
+
Both checks pass -> `confirmed` at the finding's Important severity. Either
|
|
50
|
+
check fails -> `dropped`. Do not downgrade a confirmed weakening.
|
|
51
|
+
|
|
52
|
+
For all other non-empty `rule` tags, run exactly two checks:
|
|
39
53
|
|
|
40
54
|
1. **Anchor**: the flagged code genuinely appears on a `+` line of
|
|
41
55
|
`DIFF_FILE` (for PR-1, the PR title genuinely lacks a ticket present in
|
|
@@ -55,6 +69,17 @@ the rule and quoting the violating snippet. Either check fails -> `dropped`,
|
|
|
55
69
|
with `reasoning` naming which check failed. There is no `downgraded` outcome
|
|
56
70
|
for a hard rule: it either violates the rule or it does not.
|
|
57
71
|
|
|
72
|
+
For a `rule` starting with `PROJECT:`, the rule text lives in `baseProjectRules` of
|
|
73
|
+
`CONTEXT_FILE` when that key is a string (the base branch's copy, which the PR cannot
|
|
74
|
+
edit), otherwise in `projectRules`, not in `HOUSE_RULES_FILE`. Write the FINDING JSON to a unique temp file
|
|
75
|
+
(create it with `mktemp`, never a fixed name, because verifiers run in parallel) and run `node <this prompt's directory>/../../scripts/project-rule-findings.mjs <finding.json> <CONTEXT_FILE>`.
|
|
76
|
+
Exit 1 means the quoted rule is not in `projectRules` (or the tag is malformed):
|
|
77
|
+
`dropped`, with that output as `reasoning`. Any other non-zero exit means the validator
|
|
78
|
+
could not run: read that same key yourself and confirm the exact quoted sentence is in it.
|
|
79
|
+
If it is not, `dropped`. If it is, keep the finding at its severity, say in `reasoning` that
|
|
80
|
+
the validator was unavailable, set `validatorUnavailable: true`, and judge applicability as below. On exit 0, judge applicability
|
|
81
|
+
against the quoted rule as the second check.
|
|
82
|
+
|
|
58
83
|
Then **stop** -- do not continue to Step 1 or the five challenges.
|
|
59
84
|
|
|
60
85
|
---
|