Loading...
Loading...
Modify shared code without breaking existing callers
npx skill4agent add rheinmir/setup safe-changeimpact-checksymbol dùng chung → impact-check (callers + dependents) → hành vi quan sát được hiện tại → thay đổi tối thiểu → từng caller: tương thích ngược hoặc cập nhật tường minh → test (nếu có) → "Changed X. Verified Y" → verify-before-commit| Field | Required? | Ý nghĩa | |
|---|---|---|---|
| In | symbol/module cần sửa + yêu cầu thay đổi | có | thứ có hơn một caller |
| In | test của module | không | có thì chạy; không có thì ghi rõ trong commit message |
| Out | thay đổi tối thiểu + caller đã xác minh/cập nhật | có | mọi caller từ bước 1 đều được xét |
| Out | câu xác nhận "Changed X. Verified Y still works." | có | rồi gọi |
| Out | | có (trừ khi 0 artifact) | output report |
verify-before-commit| Step | Type | Inputs | Action | Outputs/exit | Failure/next |
|---|---|---|---|---|---|
| W01 | deterministic | symbol | Chạy skill | danh sách callers + dependents | — |
| W02 | judgment | code hiện tại | Ghi lại hành vi quan sát được (return value, side effect) | baseline hành vi | — |
| W03 | effect | yêu cầu | Thay đổi tối thiểu, không đụng code kề bên | diff | không giữ được tương thích → B01 |
| W04 | judgment | callers W01 | Từng caller: xác minh tương thích ngược hoặc cập nhật tường minh | mọi caller đã xét | — |
| W05 | deterministic | test dir | Tìm test, có thì chạy | rc 0 hoặc ghi chú "no tests" | test đỏ → blocked; không test → B02 |
| W06 | effect | kết quả | Xác nhận + gọi | câu xác nhận + draft | — |
impact-checkCHECK: ls <test-dir>/*<module>* 2>/dev/null | head -3RUN: <test-cmd>verify-before-commit| ID | Kind | Guard | Hành vi | Skip / failure | Rejoin |
|---|---|---|---|---|---|
| B01 | recovery | không thể giữ backward compatibility | dừng, báo user trước khi làm tiếp | user không duyệt → cancelled | W04 sau khi user duyệt |
| B02 | conditional_required | không có test cho module | ghi rõ "no tests" trong commit message, không viết test mới | — | W06 |
impact-checkverify-before-committimeout=30fetch_page()get_user()user["id"]DDMMYY-<ten>.mdDDMMYY020626<ten>landing-page-cotecconsbrand-kit-fintechingest-auth-specllmwiki/wiki/sources/draft/DDMMYY-<ten>.md---
type: draft
title: "DDMMYY-<ten>"
status: proposed
tags: [<skill-name>, output-report]
timestamp: YYYY-MM-DD
---
# DDMMYY-<ten>
**Type:** draft
**Status:** proposed
**Tags:** <skill-name>, output-report
**Proposed:** YYYY-MM-DD
## What
<One sentence — what this skill invocation produced or decided>
## Output
<Key artefacts, files created/modified, or decisions made>
## Files
| File | Action |
|------|--------|
| `path/to/file` | created / modified |
## Notes
- Invoked via: `/<skill-name>` skill
## Origin
- **Draft:** `wiki/sources/draft/DDMMYY-<ten>.md`
- **Commit:** _(filled by verify-before-commit)_
- **Date promoted:** _(filled by verify-before-commit)_llmwiki/wiki/index.md| [DDMMYY-<ten>](sources/draft/DDMMYY-<ten>.md) | draft | YYYY-MM-DD |llmwiki/wiki/log.md## YYYY-MM-DD — <skill-name> — <ten>Skip only when the skill produces zero artefacts and zero decisions (e.g., a pure display mode like)./caveman-stats