don-cheli-sdd 1.24.0 → 1.25.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/CHANGELOG.md +12 -0
- package/README.es.md +1 -1
- package/README.md +1 -1
- package/README.pt.md +1 -1
- package/VERSION +1 -1
- package/package.json +1 -1
- package/scripts/.claude/don-cheli/VERSION +1 -1
- package/scripts/.claude/don-cheli/scripts/instalar.sh +1 -1
- package/scripts/.claude/don-cheli/scripts/skill-updater.sh +44 -10
- package/scripts/generar-config.sh +1 -1
- package/scripts/instalar.sh +1 -1
- package/scripts/skill-updater.sh +44 -10
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,18 @@ Todos los cambios notables en Don Cheli SDD Framework.
|
|
|
4
4
|
|
|
5
5
|
Formato basado en [Conventional Commits](https://www.conventionalcommits.org/).
|
|
6
6
|
|
|
7
|
+
## [1.25.0](https://github.com/doncheli/don-cheli-sdd/compare/v1.24.1...v1.25.0) (2026-04-07)
|
|
8
|
+
|
|
9
|
+
### Nuevas Funcionalidades
|
|
10
|
+
|
|
11
|
+
* throttle semanal en skill-updater — check cada 7 días máximo ([90483ca](https://github.com/doncheli/don-cheli-sdd/commit/90483ca549276bfc86c81d1bc2d2ea0ccd30e96b))
|
|
12
|
+
|
|
13
|
+
## [1.24.1](https://github.com/doncheli/don-cheli-sdd/compare/v1.24.0...v1.24.1) (2026-04-07)
|
|
14
|
+
|
|
15
|
+
### Correcciones
|
|
16
|
+
|
|
17
|
+
* corregir skill-updater.sh — registro, SHA parsing y python heredoc ([736b2f9](https://github.com/doncheli/don-cheli-sdd/commit/736b2f9b21569eac78b95c4e44f633ee8e6b139f))
|
|
18
|
+
|
|
7
19
|
## [1.24.0](https://github.com/doncheli/don-cheli-sdd/compare/v1.23.1...v1.24.0) (2026-04-07)
|
|
8
20
|
|
|
9
21
|
### Nuevas Funcionalidades
|
package/README.es.md
CHANGED
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
</p>
|
|
13
13
|
<p align="center">
|
|
14
14
|
<a href="#-instalación"><img src="https://img.shields.io/badge/instalación-2_minutos-brightgreen" alt="Install"></a>
|
|
15
|
-
<img src="https://img.shields.io/badge/versión-1.
|
|
15
|
+
<img src="https://img.shields.io/badge/versión-1.25.0-blue" alt="Version">
|
|
16
16
|
<img src="https://img.shields.io/badge/licencia-Apache%202.0-green" alt="License">
|
|
17
17
|
<img src="https://img.shields.io/badge/idiomas-ES%20|%20EN%20|%20PT-red" alt="Languages">
|
|
18
18
|
<img src="https://img.shields.io/badge/comandos-85+-purple" alt="Commands">
|
package/README.md
CHANGED
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
</p>
|
|
13
13
|
<p align="center">
|
|
14
14
|
<a href="#-installation"><img src="https://img.shields.io/badge/install-2_minutes-brightgreen" alt="Install"></a>
|
|
15
|
-
<img src="https://img.shields.io/badge/version-1.
|
|
15
|
+
<img src="https://img.shields.io/badge/version-1.25.0-blue" alt="Version">
|
|
16
16
|
<img src="https://img.shields.io/badge/license-Apache%202.0-green" alt="License">
|
|
17
17
|
<img src="https://img.shields.io/badge/languages-ES%20|%20EN%20|%20PT-red" alt="Languages">
|
|
18
18
|
<img src="https://img.shields.io/badge/commands-85+-purple" alt="Commands">
|
package/README.pt.md
CHANGED
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
</p>
|
|
13
13
|
<p align="center">
|
|
14
14
|
<a href="#-instalação"><img src="https://img.shields.io/badge/instalação-2_minutos-brightgreen" alt="Install"></a>
|
|
15
|
-
<img src="https://img.shields.io/badge/versão-1.
|
|
15
|
+
<img src="https://img.shields.io/badge/versão-1.25.0-blue" alt="Version">
|
|
16
16
|
<img src="https://img.shields.io/badge/licença-Apache%202.0-green" alt="License">
|
|
17
17
|
<img src="https://img.shields.io/badge/idiomas-ES%20|%20EN%20|%20PT-red" alt="Languages">
|
|
18
18
|
<img src="https://img.shields.io/badge/comandos-85+-purple" alt="Commands">
|
package/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
1.
|
|
1
|
+
1.25.0
|
package/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
1.
|
|
1
|
+
1.25.0
|
|
@@ -92,14 +92,14 @@ check_anthropic() {
|
|
|
92
92
|
local api_url="https://api.github.com/repos/anthropics/skills/commits?per_page=1"
|
|
93
93
|
local remote_sha
|
|
94
94
|
|
|
95
|
-
remote_sha=$(curl -fsSL "$api_url" 2>/dev/null | grep -o '"sha":"[^"]*"' | head -1 |
|
|
95
|
+
remote_sha=$(curl -fsSL "$api_url" 2>/dev/null | grep -o '"sha": "[^"]*"' | head -1 | sed 's/"sha": "//;s/"//') || return 0
|
|
96
96
|
|
|
97
97
|
if [ -z "$remote_sha" ]; then return 0; fi
|
|
98
98
|
|
|
99
99
|
# Get stored SHA
|
|
100
100
|
local stored_sha=""
|
|
101
|
-
if [ -f "$REGISTRY_FILE" ]; then
|
|
102
|
-
stored_sha=$(
|
|
101
|
+
if [ -f "$REGISTRY_FILE" ] && command -v python3 &>/dev/null; then
|
|
102
|
+
stored_sha=$(python3 -c "import json; print(json.load(open('$REGISTRY_FILE'))['sources']['anthropic']['last_sha'])" 2>/dev/null) || stored_sha=""
|
|
103
103
|
fi
|
|
104
104
|
|
|
105
105
|
if [ "$remote_sha" != "$stored_sha" ] && [ -n "$stored_sha" ]; then
|
|
@@ -114,13 +114,17 @@ check_anthropic() {
|
|
|
114
114
|
# Update SHA in registry
|
|
115
115
|
if [ -f "$REGISTRY_FILE" ]; then
|
|
116
116
|
if command -v python3 &>/dev/null; then
|
|
117
|
-
python3
|
|
118
|
-
import json
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
117
|
+
python3 << PYEOF
|
|
118
|
+
import json, os
|
|
119
|
+
reg = '$REGISTRY_FILE'
|
|
120
|
+
if os.path.exists(reg) and os.path.getsize(reg) > 0:
|
|
121
|
+
with open(reg, 'r') as fh:
|
|
122
|
+
d = json.load(fh)
|
|
123
|
+
d['sources']['anthropic']['last_sha'] = '$remote_sha'
|
|
124
|
+
d['last_check'] = '$(date -u +%Y-%m-%dT%H:%M:%SZ)'
|
|
125
|
+
with open(reg, 'w') as fh:
|
|
126
|
+
json.dump(d, fh, indent=2)
|
|
127
|
+
PYEOF
|
|
124
128
|
fi
|
|
125
129
|
fi
|
|
126
130
|
}
|
|
@@ -197,6 +201,36 @@ apply_anthropic() {
|
|
|
197
201
|
|
|
198
202
|
init_registry
|
|
199
203
|
|
|
204
|
+
# Weekly throttle: skip if last check was less than 7 days ago (unless --apply or --force)
|
|
205
|
+
if [ "$MODE" != "apply" ]; then
|
|
206
|
+
if [ -f "$REGISTRY_FILE" ] && command -v python3 &>/dev/null; then
|
|
207
|
+
SHOULD_SKIP=$(REG="$REGISTRY_FILE" python3 << 'PYCHECK'
|
|
208
|
+
import json, os
|
|
209
|
+
from datetime import datetime, timedelta, timezone
|
|
210
|
+
try:
|
|
211
|
+
with open(os.environ.get("REG", ""), "r") as f:
|
|
212
|
+
d = json.load(f)
|
|
213
|
+
last = d.get("last_check", "")
|
|
214
|
+
if last:
|
|
215
|
+
last_dt = datetime.fromisoformat(last.replace("Z", "+00:00"))
|
|
216
|
+
if datetime.now(timezone.utc) - last_dt < timedelta(days=7):
|
|
217
|
+
print("skip")
|
|
218
|
+
else:
|
|
219
|
+
print("run")
|
|
220
|
+
else:
|
|
221
|
+
print("run")
|
|
222
|
+
except:
|
|
223
|
+
print("run")
|
|
224
|
+
PYCHECK
|
|
225
|
+
) || SHOULD_SKIP="run"
|
|
226
|
+
|
|
227
|
+
if [ "$SHOULD_SKIP" = "skip" ]; then
|
|
228
|
+
[ "$QUIET" = false ] && echo -e " ${DIM}Último check hace menos de 7 días. Usa --apply para forzar.${NC}"
|
|
229
|
+
exit 0
|
|
230
|
+
fi
|
|
231
|
+
fi
|
|
232
|
+
fi
|
|
233
|
+
|
|
200
234
|
if [ "$QUIET" = false ] && [ "$MODE" != "check" ]; then
|
|
201
235
|
echo ""
|
|
202
236
|
echo -e "${BOLD} Don Cheli — Skill Updater${NC}"
|
|
@@ -255,7 +255,7 @@ _gen_continue() {
|
|
|
255
255
|
cat > "$project_root/.continue/config/don-cheli.json" 2>/dev/null << 'CONTEOF' || true
|
|
256
256
|
{
|
|
257
257
|
"name": "don-cheli-sdd",
|
|
258
|
-
"version": "1.
|
|
258
|
+
"version": "1.25.0",
|
|
259
259
|
"description": "Don Cheli SDD Framework",
|
|
260
260
|
"rules": [
|
|
261
261
|
"All production code requires tests (TDD: RED → GREEN → REFACTOR)",
|
package/scripts/instalar.sh
CHANGED
package/scripts/skill-updater.sh
CHANGED
|
@@ -92,14 +92,14 @@ check_anthropic() {
|
|
|
92
92
|
local api_url="https://api.github.com/repos/anthropics/skills/commits?per_page=1"
|
|
93
93
|
local remote_sha
|
|
94
94
|
|
|
95
|
-
remote_sha=$(curl -fsSL "$api_url" 2>/dev/null | grep -o '"sha":"[^"]*"' | head -1 |
|
|
95
|
+
remote_sha=$(curl -fsSL "$api_url" 2>/dev/null | grep -o '"sha": "[^"]*"' | head -1 | sed 's/"sha": "//;s/"//') || return 0
|
|
96
96
|
|
|
97
97
|
if [ -z "$remote_sha" ]; then return 0; fi
|
|
98
98
|
|
|
99
99
|
# Get stored SHA
|
|
100
100
|
local stored_sha=""
|
|
101
|
-
if [ -f "$REGISTRY_FILE" ]; then
|
|
102
|
-
stored_sha=$(
|
|
101
|
+
if [ -f "$REGISTRY_FILE" ] && command -v python3 &>/dev/null; then
|
|
102
|
+
stored_sha=$(python3 -c "import json; print(json.load(open('$REGISTRY_FILE'))['sources']['anthropic']['last_sha'])" 2>/dev/null) || stored_sha=""
|
|
103
103
|
fi
|
|
104
104
|
|
|
105
105
|
if [ "$remote_sha" != "$stored_sha" ] && [ -n "$stored_sha" ]; then
|
|
@@ -114,13 +114,17 @@ check_anthropic() {
|
|
|
114
114
|
# Update SHA in registry
|
|
115
115
|
if [ -f "$REGISTRY_FILE" ]; then
|
|
116
116
|
if command -v python3 &>/dev/null; then
|
|
117
|
-
python3
|
|
118
|
-
import json
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
117
|
+
python3 << PYEOF
|
|
118
|
+
import json, os
|
|
119
|
+
reg = '$REGISTRY_FILE'
|
|
120
|
+
if os.path.exists(reg) and os.path.getsize(reg) > 0:
|
|
121
|
+
with open(reg, 'r') as fh:
|
|
122
|
+
d = json.load(fh)
|
|
123
|
+
d['sources']['anthropic']['last_sha'] = '$remote_sha'
|
|
124
|
+
d['last_check'] = '$(date -u +%Y-%m-%dT%H:%M:%SZ)'
|
|
125
|
+
with open(reg, 'w') as fh:
|
|
126
|
+
json.dump(d, fh, indent=2)
|
|
127
|
+
PYEOF
|
|
124
128
|
fi
|
|
125
129
|
fi
|
|
126
130
|
}
|
|
@@ -197,6 +201,36 @@ apply_anthropic() {
|
|
|
197
201
|
|
|
198
202
|
init_registry
|
|
199
203
|
|
|
204
|
+
# Weekly throttle: skip if last check was less than 7 days ago (unless --apply or --force)
|
|
205
|
+
if [ "$MODE" != "apply" ]; then
|
|
206
|
+
if [ -f "$REGISTRY_FILE" ] && command -v python3 &>/dev/null; then
|
|
207
|
+
SHOULD_SKIP=$(REG="$REGISTRY_FILE" python3 << 'PYCHECK'
|
|
208
|
+
import json, os
|
|
209
|
+
from datetime import datetime, timedelta, timezone
|
|
210
|
+
try:
|
|
211
|
+
with open(os.environ.get("REG", ""), "r") as f:
|
|
212
|
+
d = json.load(f)
|
|
213
|
+
last = d.get("last_check", "")
|
|
214
|
+
if last:
|
|
215
|
+
last_dt = datetime.fromisoformat(last.replace("Z", "+00:00"))
|
|
216
|
+
if datetime.now(timezone.utc) - last_dt < timedelta(days=7):
|
|
217
|
+
print("skip")
|
|
218
|
+
else:
|
|
219
|
+
print("run")
|
|
220
|
+
else:
|
|
221
|
+
print("run")
|
|
222
|
+
except:
|
|
223
|
+
print("run")
|
|
224
|
+
PYCHECK
|
|
225
|
+
) || SHOULD_SKIP="run"
|
|
226
|
+
|
|
227
|
+
if [ "$SHOULD_SKIP" = "skip" ]; then
|
|
228
|
+
[ "$QUIET" = false ] && echo -e " ${DIM}Último check hace menos de 7 días. Usa --apply para forzar.${NC}"
|
|
229
|
+
exit 0
|
|
230
|
+
fi
|
|
231
|
+
fi
|
|
232
|
+
fi
|
|
233
|
+
|
|
200
234
|
if [ "$QUIET" = false ] && [ "$MODE" != "check" ]; then
|
|
201
235
|
echo ""
|
|
202
236
|
echo -e "${BOLD} Don Cheli — Skill Updater${NC}"
|