-
Notifications
You must be signed in to change notification settings - Fork 0
fix: promote next-fix batch (task plugin split, claudify matcher, pr recheck, omz chezmoi fix) #389
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
5849c58
407ff11
3b772cc
02e6bb2
be9ebbc
43da8b6
e7cedfd
444d9a9
aaee695
8e95a70
e7ae387
373634c
da7e5ff
447161e
b0ba553
0d4521d
1b5ef18
b2c4659
db4dfff
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -17,3 +17,4 @@ docs/generated/ | |
| rules/ | ||
| skills/*/data | ||
| skills/*/LICENSE | ||
| tests/.infra-denylist.local | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -127,7 +127,7 @@ | |
| }, | ||
| { | ||
| "type": "command", | ||
| "command": "bash ${CLAUDE_PLUGIN_ROOT}/skills/hook-kit/resources/block-new-skill-ready-without-ask.sh" | ||
| "command": "bash ${CLAUDE_PLUGIN_ROOT}/skills/skill-kit/resources/block-new-skill-ready-without-ask.sh" | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🗄️ Data Integrity & Integration | 🟡 Minor | ⚡ Quick win 🔎 Supported by static analysis🏁 Script executed: #!/bin/bash
# Verify registry vs hooks.json consistency and leftover old copies for the two moved hooks.
set -uo pipefail
for name in block-new-skill-ready-without-ask block-squash-recommend-multi-commit; do
echo "=== $name ==="
echo "--- tracked files ---"
fd -H -t f "${name}.sh" || true
echo "--- hooks.json registration ---"
rg -n "$name" hooks/hooks.json || true
echo "--- registry entry ---"
rg -n -A 14 "id: ${name}\b" skills/hook-kit/hook-registry.yaml || true
echo "--- other references ---"
rg -n "$name" -g '!hooks/hooks.json' -g '!skills/hook-kit/hook-registry.yaml' || true
doneRepository: es6kr/skills Length of output: 1368 🏁 Script executed: #!/bin/bash
set -eu
echo '--- hooks.json ---'
sed -n '124,134p;254,264p' hooks/hooks.json
echo '--- registry references for both hooks ---'
rg -n -C 3 'block-new-skill-ready-without-ask|block-squash-recommend-multi-commit' skills/hook-kit/hook-registry.yaml || true
echo '--- registry structure near active hook entries ---'
sed -n '460,490p' skills/hook-kit/hook-registry.yamlRepository: es6kr/skills Length of output: 2841 🏁 Script executed: #!/bin/bash
set -eu
echo '--- registry contract references ---'
rg -n -i -C 3 'hook-registry|registry|implementation|registration' README.md skills hooks .github 2>/dev/null | head -n 160 || true
echo '--- integrity-check files and references ---'
fd -H -t f | rg 'hook.*integrity|integrity.*hook|hook.*registry' || true
rg -n -i 'hook_integrity_check|hook-registry.yaml' . --glob '!skills/hook-kit/hook-registry.yaml' --glob '!hooks/hooks.json' 2>/dev/null | head -n 120 || trueRepository: es6kr/skills Length of output: 13018 🏁 Script executed: #!/bin/bash
set -eu
echo '--- checker sizes ---'
wc -l skills/fix-plan/scripts/hook_integrity_check.py skills/hook-kit/scripts/hook_registry_verify.py tests/test_hook_integrity_check.py tests/test_hook_registry.py
echo '--- hook integrity checker ---'
sed -n '1,240p' skills/fix-plan/scripts/hook_integrity_check.py
echo '--- registry verifier contract ---'
sed -n '1,220p' skills/hook-kit/scripts/hook_registry_verify.pyRepository: es6kr/skills Length of output: 15483 🏁 Script executed: #!/bin/bash
set -eu
echo '--- registry parsing and validation rules ---'
rg -n -C 5 'def parse_registrations|def scan_resources|def validate|MISSING|STALE|DORMANT|ORPHAN|implementations|registrations' skills/hook-kit/scripts/hook_registry.pyRepository: es6kr/skills Length of output: 6520 Synchronize Update 🤖 Prompt for AI Agents |
||
| }, | ||
| { | ||
| "type": "command", | ||
|
|
@@ -257,7 +257,7 @@ | |
| }, | ||
| { | ||
| "type": "command", | ||
| "command": "${CLAUDE_PLUGIN_ROOT}/skills/hook-kit/resources/block-squash-recommend-multi-commit.sh", | ||
| "command": "${CLAUDE_PLUGIN_ROOT}/skills/github-flow/resources/block-squash-recommend-multi-commit.sh", | ||
| "timeout": 15 | ||
| } | ||
| ] | ||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -47,21 +47,16 @@ Top-level sections: | |
| | `- [REPEAT]` | Persistent recurring item (Ralph-specific — see ralph/periodic.md) | `## REPEAT` section only (out of scope for this skill) | | ||
| | `[CLAIMED:<sid>:<ts>]` | Multi-session in-progress lease (suffix **annotation**, not a checkbox state) — see [claim.md](./claim.md) | appended after `- [ ]` / `- [BLOCKED:*:selfable]` | | ||
|
|
||
| When an item completes, change `- [ ]` → `- [x]` and preserve discovery metadata while appending Model, Session ID (8 chars), and timestamp to the title line. | ||
| When an item completes, change `- [ ]` → `- [x]` and append session ID + timestamp to the title line. | ||
|
|
||
| Format: `(YYYY-MM-DD, <Model> <SessionID8>)` (e.g., `(2026-08-18, Gemini Flash 934c5d4b)`) or `(YYYY-MM-DD HH:mm completed: <Model> <SessionID8>, commit <hash>)` or for merged PRs: `(YYYY-MM-DD HH:mm completed: <Model> <SessionID8>, [PR #N](https://github.com/<owner>/<repo>/pull/N))`. If the item had existing discovery metadata, preserve it using the model name: `(2026-08-17, Gemini Flash b43980f2; completed 2026-08-18, Gemini Flash 934c5d4b)`. Never use bare `session <id>` without the model name. All PR/Issue references in the tracker must be clickable Markdown links (`[PR #N](URL)` or `[Issue #N](URL)`). | ||
| Format: `(YYYY-MM-DD HH:mm completed: Session xxxxxxxx, commit <hash>)` or for merged PRs: `(YYYY-MM-DD HH:mm completed: Session xxxxxxxx, [PR #N](https://github.com/<owner>/<repo>/pull/N))`. All PR/Issue references in the tracker must be clickable Markdown links (`[PR #N](URL)` or `[Issue #N](URL)`). | ||
|
|
||
| - Model: executor model identifier (e.g. `Gemini Flash`, `Claude Sonnet`, `Claude Opus`) | ||
| - Session ID: first 8 chars from `.ralph/.claude_session_id` (Ralph environment) or current session UUID prefix (e.g. `934c5d4b`) | ||
| - Timestamp: `YYYY-MM-DD` or 24-hour `YYYY-MM-DD HH:mm` of the completion moment | ||
| - Session ID: first 8 chars from `.ralph/.claude_session_id` (Ralph environment) or current session ID | ||
| - Timestamp: 24-hour `YYYY-MM-DD HH:mm` of the completion moment | ||
|
Comment on lines
+50
to
+55
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🗄️ Data Integrity & Integration | 🟡 Minor | ⚡ Quick win 🔎 Supported by static analysis🏁 Script executed: #!/bin/bash
set -euo pipefail
rg -n -C 5 \
'SessionID8|<Model>|Session [[:alnum:]]{8}|completed: Session|PR `#N`|## Completed' \
skills/fix-plan tests --glob '*.{md,py,sh,bats}'Repository: es6kr/skills Length of output: 50370 🏁 Script executed: #!/bin/bash
set -euo pipefail
printf '%s\n' '--- relevant files ---'
git ls-files 'skills/fix-plan' 'tests' | grep -E '(^|/)(format|move|sync|cleanup|.*test.*)\.(md|py|sh|bats)$' | head -200
printf '%s\n' '--- completion-related implementation symbols ---'
rg -n -C 4 \
'completed_entries|node_to_completed_block|## Completed|completion|timestamp|session' \
skills/fix-plan --glob '*.py' --glob '*.sh' --glob '*.md' \
| grep -E '(^|:)(skills/fix-plan/(cleanup|move|sync)|.*test.*|.*format\.md|.*move\.md|.*sync\.md)' \
| head -300Repository: es6kr/skills Length of output: 36147 🏁 Script executed: #!/bin/bash
set -euo pipefail
printf '%s\n' '--- cleanup.py completion parsing and archive flow ---'
rg -n -C 8 \
'def (parse|extract|archive|cleanup)|completed_entries|node_to_completed_block|Completed|timestamp|datetime|re\.compile|completion' \
skills/fix-plan/scripts/cleanup.py
printf '%s\n' '--- cleanup tests involving completed records ---'
rg -n -C 6 \
'Completed|completed|Session|PR #|timestamp|archive|cleanup|parse' \
skills/fix-plan/scripts/test_cleanup.py skills/fix-plan/tests tests \
--glob '*.py' --glob '*.sh' --glob '*.bats'
printf '%s\n' '--- sync contract and implementation references ---'
sed -n '1,90p' skills/fix-plan/sync.md
rg -n -C 8 \
'mergedAt|closedAt|completed: sync|completed: Session|fix_plan|PR|Issue' \
skills/fix-plan --glob '*.py' --glob '*.sh' --glob '*.md' \
| grep -E '(^|:)(skills/fix-plan/(scripts|sync|format|move))' \
| head -240Repository: es6kr/skills Length of output: 50370 🏁 Script executed: #!/bin/bash
set -euo pipefail
printf '%s\n' '--- changed format hunk ---'
git diff --unified=8 -- skills/fix-plan/format.md
printf '%s\n' '--- exact completion-shape references ---'
rg -n \
'completed: Session|completed: sync|PR `#N`, Session|YYYY-MM-DD HH:mm —|Session xxxxxxxx' \
skills/fix-plan/scripts/cleanup.py \
skills/fix-plan/scripts/test_cleanup.py \
skills/fix-plan/format.md \
skills/fix-plan/move.md \
skills/fix-plan/sync.md
printf '%s\n' '--- cleanup contract implementation ---'
sed -n '84,96p;159,190p;261,290p;341,372p' skills/fix-plan/scripts/cleanup.pyRepository: es6kr/skills Length of output: 5960 Replace the stale completion example.
🤖 Prompt for AI Agents |
||
| - Add `**complete**` markers to inner sub-steps where useful | ||
|
|
||
| **Completion Migration Rule (HARD STOP)**: When the user explicitly instructs to "mark this as completed" or its locale equivalent (a completion-marking instruction in the user's language), you must **not** just change `- [ ]` (or `- [BLOCKED]`) to `- [x]` in place. You must change the state **AND** move the item to the `## Completed` section (as a summarized one-line entry with the timestamp and session ID) in the **very same edit/turn**. Do not split completion marking and completed section migration into separate turns. | ||
|
|
||
| **Backlog Execution Log Separation & Plane Comment Storage Rule (HARD STOP)**: When recording sub-step completions, audit triage results, or intermediate execution history (e.g. `✅ classification complete`, `✅ execution complete`, detailed analytical breakdown tables), dumping multi-paragraph raw execution narratives directly into active `fix_plan.md` / `checklist.md` backlog items is strictly forbidden (`HARD STOP`). | ||
| `fix_plan.md` backlog items must remain strictly lean and uncluttered (Scope / Why / How / Status pointer). All detailed execution narratives, triage logs, and audit dumps must be: | ||
| 1. Posted as an issue comment on the corresponding Plane issue using `plane_create_comment.py` (or recorded in RAG / session walkthroughs). | ||
| 2. Referenced in `fix_plan.md` with only a concise 1-line pointer link (e.g. `- **Progress**: Triage complete (details in Plane issue comment / walkthrough-<id>.md)`). | ||
|
|
||
| ## Section-consistency check (HARD STOP) | ||
|
|
||
|
|
||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🗄️ Data Integrity & Integration | 🟠 Major | ⚡ Quick win
🔎 Supported by static analysis
🏁 Script executed:
Repository: es6kr/skills
Length of output: 322
🏁 Script executed:
Repository: es6kr/skills
Length of output: 7887
🌐 Web query:
Claude Code plugin marketplace source manifest version marketplace entry version precedence plugin.json💡 Result:
In the Claude Code plugin system, the versioning precedence and conflict resolution are defined as follows: Precedence: If a version is specified in both the plugin manifest (plugin.json) and the marketplace entry (marketplace.json), the value in plugin.json takes precedence [1][2]. Claude Code uses this value silently, meaning a version defined in the marketplace entry may be ignored if a conflicting version exists in the plugin's manifest [3][4]. Best Practices for Versioning: 1. Avoid setting the version in both locations to prevent conflicts [3][4]. 2. For plugins installed via relative paths, it is recommended to set the version in the marketplace entry [4]. 3. For all other plugin source types, it is recommended to set the version in the plugin.json manifest [4]. Role of Versioning: The version string serves as a cache key and update trigger [3][4]. If the resolved version matches the version already installed on a user's system, Claude Code will skip updates for that plugin [3][4]. If no version is explicitly defined in either location, Claude Code falls back to other sources in its version management system, such as the source's resolved commit SHA for git-based plugins [5][3]. Note that command-based sources are typically not pinned by these version fields, as their versions are derived from the hash of the command's output [5][2][6].
Citations:
🏁 Script executed:
Repository: es6kr/skills
Length of output: 150
Bump the effective
es6krversion for the skill split.The marketplace entry sets
es6krto0.1.1, but its./source contains.claude-plugin/plugin.jsonwith version0.1.0. Claude Code gives the source manifest precedence, so installations may not detect the split as an update. Remove the source-level version or bump it to0.1.1.🤖 Prompt for AI Agents