jhste-skills 0.3.0 → 0.3.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/CHANGELOG.md CHANGED
@@ -1,5 +1,16 @@
1
1
  # Changelog
2
2
 
3
+
4
+ ## 0.3.1 - 2026-06-26
5
+
6
+ ### Changed
7
+ - Strengthened completion review around current proof, consumer-path and fresh-client verification, skipped checks, checks not run, and residual risk.
8
+ - Added final behavior predicates to pre-change engineering groundwork.
9
+ - Clarified cleanup/search-replace safety by separating editable product paths from protected evidence/history-like surfaces.
10
+ - Kept SOLID-informed coding discipline while emphasizing concrete failure modes over automatic abstraction.
11
+ - Clarified that `grilling` and `grill-me` are read-only by default.
12
+ - Made architecture improvement Markdown-first, with HTML visual reports optional when requested or materially useful.
13
+
3
14
  ## 0.3.0 - 2026-06-24
4
15
 
5
16
  ### Added
package/README.ko.md CHANGED
@@ -4,11 +4,11 @@ Languages: [English](README.md) · [한국어](README.ko.md) · [中文](README.
4
4
 
5
5
  AI 코딩 에이전트가 설정한 코딩 기준을 일관되게 따르도록 만드는 설치형 작업 규칙 세트입니다.
6
6
 
7
- `jhste-skills`는 Codex, Claude Code 같은 AI 코딩 에이전트에게 공통된 엔지니어링 작업 루프를 제공합니다. 코드를 바꾸기 전에 전제를 확인하고, 레포의 기존 지침을 우선시하고, API/database/automation 경계를 지키고, SOLID-informed coding discipline과 design review lens를 적용하고, 변경 파일 guard를 실행하고, 완료를 선언하기 전에 red-team code review를 거치도록 돕습니다. guard finding은 자동 SOLID 증명이 아니라 review candidate입니다.
7
+ `jhste-skills`는 Codex, Claude Code 같은 AI 코딩 에이전트에게 공통된 엔지니어링 작업 루프를 제공합니다. 코드를 바꾸기 전에 전제를 확인하고, 레포의 기존 지침을 우선시하고, API/database/automation 경계를 지키고, SOLID-informed coding discipline과 design review lens를 적용하고, 변경 파일 guard를 실행하고, 완료를 선언하기 전에 red-team code review를 거치도록 돕습니다. guard finding은 자동 SOLID 증명이 아니라 review candidate이며, 완료 보고는 current proof, 실행하지 않은 check, residual risk를 분리해야 합니다.
8
8
 
9
9
  ## 여기서 SOLID가 의미하는 것
10
10
 
11
- 여기서 SOLID는 자동 준수 체크리스트가 아니라 설계 리뷰 렌즈입니다.
11
+ 여기서 SOLID는 concrete maintenance/failure risk를 찾는 설계 리뷰 렌즈이며, 자동 준수 체크리스트나 추상화 트리거가 아닙니다.
12
12
 
13
13
  - **S — Single Responsibility:** 변경된 함수, 모듈, 클래스는 하나의 주 역할과 하나의 주 변경 이유를 가져야 합니다.
14
14
  - **O — Open/Closed:** 새 variant, provider, policy를 추가할 때 핵심 분기문을 계속 고쳐야 한다면 실제 extension boundary가 필요한지 검토합니다.
@@ -27,6 +27,7 @@ AI 코딩 에이전트는 빠르지만, 반복적으로 비슷한 방식으로
27
27
  - 불명확한 요구사항이나 틀린 전제를 조용히 받아들입니다.
28
28
  - 도와주려다가 작업 범위를 과하게 넓힙니다.
29
29
  - UI, route/controller, service, database, side effect 책임을 한곳에 섞거나, 실제 boundary 없는 추상화를 SOLID 명목으로 추가합니다.
30
+ - raw search result를 그대로 edit set으로 보고 broad cleanup/search-replace를 수행합니다.
30
31
  - 실패를 숨기거나 위험한 로그를 남깁니다.
31
32
  - 변경된 코드를 충분히 확인하기 전에 “완료”라고 말합니다.
32
33
  - 머신이나 레포를 바꿀 때마다 레포별 규칙을 잊어버립니다.
@@ -35,7 +36,7 @@ AI 코딩 에이전트는 빠르지만, 반복적으로 비슷한 방식으로
35
36
 
36
37
  ```text
37
38
  non-trivial code change 전:
38
- 목표, 전제, ownership boundary, data contract, failure path, SOLID-informed review lens 확인
39
+ 목표, 전제, ownership boundary, data contract, failure path, final behavior predicate, SOLID-informed review lens 확인
39
40
 
40
41
  수정 중:
41
42
  repo-local instructions를 권위로 취급
@@ -44,13 +45,13 @@ non-trivial code change 전:
44
45
  가능한 경우 빠른 changed-file guard 실행
45
46
 
46
47
  “완료”라고 말하기 전:
47
- read-only red-team code review 실행
48
+ read-only red-team code review 실행하고 가능한 경우 actual consumer-path proof 확인
48
49
 
49
50
  warning이 나오면:
50
51
  bounded fix를 시도하고, 다시 확인한 뒤, 무한 루프에 빠지지 않고 멈춤
51
52
  ```
52
53
 
53
- 기대하는 결과는 더 작은 diff, 더 명확한 SOLID-informed boundary, 더 안전한 API/database 코드, 더 적은 silent assumption, 더 솔직한 완료 보고입니다.
54
+ 기대하는 결과는 더 작은 diff, 더 명확한 SOLID-informed boundary, 더 안전한 API/database 코드, 더 적은 silent assumption, 더 안전한 cleanup/search-replace 동작, 그리고 변경된 public behavior의 현재 증거에 기반한 더 솔직한 완료 보고입니다.
54
55
 
55
56
  ## 누가 설치하면 좋나요?
56
57
 
@@ -60,7 +61,7 @@ warning이 나오면:
60
61
  - non-trivial code change 전에 에이전트가 전제를 확인하길 원합니다.
61
62
  - 기존 repo docs가 계속 권위로 남길 원합니다.
62
63
  - 커밋 전 또는 완료 선언 전에 가벼운 advisory check를 두고 싶습니다.
63
- - SOLID-informed coding discipline, API/database boundary, safe logging, input validation, side effect, automation reliability를 중요하게 봅니다.
64
+ - SOLID-informed coding discipline, API/database boundary, safe logging, input validation, cleanup safety, side effect, automation reliability를 중요하게 봅니다.
64
65
  - 머신과 레포를 옮겨도 같은 AI 작업 습관을 빠르게 복원하고 싶습니다.
65
66
 
66
67
  반대로, prompt 파일 하나만 원하거나, 설치 즉시 strict CI enforcement를 원하거나, `.jhste/` 파일과 bridge block 생성을 원하지 않거나, 이 도구가 자동으로 코드를 refactor하길 기대한다면 맞지 않을 수 있습니다.
@@ -145,6 +146,8 @@ Custom - 효과 중심 질문을 통해 설치 범위를 직접 선택
145
146
  - strict mode는 명시적 opt-in이 필요합니다.
146
147
  - bridge block은 `<!-- jhste-skills:start -->` / `<!-- jhste-skills:end -->` marker를 사용합니다.
147
148
  - guard output은 review evidence이지 그 자체로 proof가 아닙니다.
149
+ - 완료 전 리뷰는 가능한 경우 actual consumer-path proof를 선호하고 current proof, skipped check, not-run check, residual risk를 분리해야 합니다.
150
+ - cleanup/search-replace 작업은 쓰기 전에 editable path와 protected evidence/history-like path를 분리해야 합니다.
148
151
  - guard runtime/config failure는 rule violation과 별도로 보고해야 합니다.
149
152
  - install/update/uninstall flow는 non-managed hook, bridge text, skill directory를 건드리지 않습니다.
150
153
 
@@ -155,12 +158,12 @@ Custom - 효과 중심 질문을 통해 설치 범위를 직접 선택
155
158
  | Skill | 언제 쓰나 | 무엇을 줄여주나 |
156
159
  |---|---|---|
157
160
  | [`setup`](skills/setup/SKILL.md)<br>설치, 연결, 업데이트가 기존 프로젝트 지침을 덮어쓰지 않도록 하는 안전 설치 스킬 | kit를 설치하거나 레포에 연결할 때 | unsafe overwrite, unmanaged hook conflict, repo instruction replacement |
158
- | [`jhste-engineering-groundwork`](skills/jhste-engineering-groundwork/SKILL.md)<br>코드 변경 전 목표, 전제, scope, boundary, failure path를 검증하는 pre-change groundwork 스킬 | non-trivial code change 전 | blind agreement, scope creep, unverified assumption, unclear boundary |
159
- | [`jhste-code-quality`](skills/jhste-code-quality/SKILL.md)<br>입력 검증, 관측 가능한 실패 처리, secret-safe logging, oversized-file review 스킬 | external input, failure handling, logging, env/config, code-quality review path를 만질 때 | unvalidated input, silent failure, secret logging, oversized file |
161
+ | [`jhste-engineering-groundwork`](skills/jhste-engineering-groundwork/SKILL.md)<br>코드 변경 전 목표, 전제, scope, boundary, failure path, final behavior predicate를 검증하는 pre-change groundwork 스킬 | non-trivial code change 전 | blind agreement, scope creep, unverified assumption, unclear boundary |
162
+ | [`jhste-code-quality`](skills/jhste-code-quality/SKILL.md)<br>입력 검증, 관측 가능한 실패 처리, secret-safe logging, oversized-file review 스킬 | external input, failure handling, logging, env/config, cleanup/search-replace, code-quality review path를 만질 때 | unvalidated input, silent failure, secret logging, unsafe broad cleanup, oversized file |
160
163
  | [`jhste-architecture-review`](skills/jhste-architecture-review/SKILL.md)<br>모듈 경계, side effect 위치, SOLID-informed design risk를 검토하는 아키텍처 리뷰 스킬 | module boundary, app structure, side-effect placement, responsibility split 변경 시 | pass-through abstraction, mixed responsibility, side-effect leakage |
161
164
  | [`jhste-db-api-boundary`](skills/jhste-db-api-boundary/SKILL.md)<br>API route, service, repository, SQL 사이의 책임 경계와 데이터 계약을 점검하는 boundary 스킬 | API, controller, service, repository, SQL, persistence code를 만질 때 | fat route, unsafe SQL, missing auth/data scoping, leaky DTO |
162
165
  | [`jhste-crawler-automation`](skills/jhste-crawler-automation/SKILL.md)<br>crawler, scraper, worker, scheduler의 producer/consumer boundary와 side effect를 점검하는 자동화 스킬 | crawler, scraper, worker, scheduler, browser automation을 만질 때 | fragile automation, unclear producer/consumer boundary, hidden side effect |
163
- | [`jhste-red-team-review`](skills/jhste-red-team-review/SKILL.md)<br>완료 선언 전 변경 코드를 공격적으로 재검토하는 read-only red-team code review 스킬 | non-trivial code work 완료 선언 전 | premature “done”, 놓치기 쉬운 null/auth/env/write/API/performance risk |
166
+ | [`jhste-red-team-review`](skills/jhste-red-team-review/SKILL.md)<br>완료 선언 전 변경 코드를 공격적으로 재검토하는 read-only red-team code review 스킬 | non-trivial code work 완료 선언 전 | premature “done”, missing consumer-path proof, 놓치기 쉬운 null/auth/env/write/API/performance risk |
164
167
 
165
168
  ## Bundled workflow skills
166
169
 
@@ -255,7 +258,7 @@ Release acceptance notes는 [`docs/ACCEPTANCE_CHECK.md`](docs/ACCEPTANCE_CHECK.m
255
258
  - 무조건 동의하지 않습니다.
256
259
  - local project authority를 덮어쓰지 않습니다.
257
260
  - 변경 범위를 작게 유지합니다.
258
- - SOLID-informed coding discipline을 사용해 responsibility를 이름 붙이고, extension boundary, caller contract, interface 크기, concrete dependency 방향을 검토합니다.
261
+ - SOLID-informed coding discipline을 clean-code review lens로 사용해 responsibility를 이름 붙이고, maintenance/failure risk가 있는 extension boundary, caller contract, interface 크기, concrete dependency 방향을 검토합니다.
259
262
  - failure를 observable하게 만듭니다.
260
263
  - automated guard output을 proof가 아니라 evidence로 취급합니다.
261
264
  - non-trivial work를 완료라고 말하기 전에 red-team code review를 수행합니다.
package/README.md CHANGED
@@ -4,11 +4,11 @@ Languages: [English](README.md) · [한국어](README.ko.md) · [中文](README.
4
4
 
5
5
  An installable working-rules kit that helps AI coding agents consistently follow your engineering standards.
6
6
 
7
- `jhste-skills` gives Codex, Claude Code, and other AI coding agents a shared engineering workflow. It helps agents verify assumptions before editing, respect repo-local instructions, keep API/database/automation boundaries clear, apply SOLID-informed coding discipline and design review, run changed-file guards, and perform a red-team code review before claiming work is complete. Guard findings are review candidates, not automatic SOLID proof.
7
+ `jhste-skills` gives Codex, Claude Code, and other AI coding agents a shared engineering workflow. It helps agents verify assumptions before editing, respect repo-local instructions, keep API/database/automation boundaries clear, apply SOLID-informed coding discipline and design review, run changed-file guards, and perform a red-team code review before claiming work is complete. Guard findings are review candidates, not automatic SOLID proof, and completion reports should separate current proof, checks not run, and residual risk.
8
8
 
9
9
  ## What SOLID means here
10
10
 
11
- SOLID is used here as a design review lens, not as an automatic compliance checklist.
11
+ SOLID is used here as a design review lens for concrete maintenance and failure risks, not as an automatic compliance checklist or abstraction trigger.
12
12
 
13
13
  - **S — Single Responsibility:** each changed function, module, or class should have one main job and one main reason to change.
14
14
  - **O — Open/Closed:** adding a new variant, provider, or policy should not force repeated edits to core branching when a real extension boundary would be safer.
@@ -27,6 +27,7 @@ AI coding agents are fast, but they fail in predictable ways:
27
27
  - They silently accept unclear requirements or incorrect premises.
28
28
  - They expand the scope while trying to be helpful.
29
29
  - They mix UI, route/controller, service, database, and side-effect responsibilities in one place, or add abstractions without a real SOLID-informed boundary.
30
+ - They apply broad cleanup or search/replace edits directly from raw search results.
30
31
  - They hide failures or produce unsafe logs.
31
32
  - They say “done” before the changed code has been checked.
32
33
  - They forget repo-specific rules when you switch machines or repositories.
@@ -35,7 +36,7 @@ AI coding agents are fast, but they fail in predictable ways:
35
36
 
36
37
  ```text
37
38
  Before a non-trivial code change:
38
- check the goal, premise, ownership boundary, data contract, failure path, and SOLID-informed review lens
39
+ check the goal, premise, ownership boundary, data contract, failure path, final behavior predicates, and SOLID-informed review lens
39
40
 
40
41
  While editing:
41
42
  treat repo-local instructions as the authority
@@ -44,13 +45,13 @@ After changing code:
44
45
  run a fast changed-file guard when available
45
46
 
46
47
  Before saying “done”:
47
- run a read-only red-team code review
48
+ run a read-only red-team code review and prefer actual consumer-path proof when feasible
48
49
 
49
50
  If warnings appear:
50
51
  attempt a bounded fix, re-check, and stop instead of looping forever
51
52
  ```
52
53
 
53
- The expected result is smaller diffs, clearer SOLID-informed boundaries, safer API/database code, fewer silent assumptions, and more honest completion reports.
54
+ The expected result is smaller diffs, clearer SOLID-informed boundaries, safer API/database code, fewer silent assumptions, safer cleanup/search-replace behavior, and more honest completion reports grounded in current proof of the changed public behavior.
54
55
 
55
56
  ## Who should install this?
56
57
 
@@ -60,7 +61,7 @@ Install `jhste-skills` if you:
60
61
  - want agents to verify assumptions before non-trivial code changes;
61
62
  - want existing repo docs to remain the source of authority;
62
63
  - want lightweight advisory checks before commit or before declaring work complete;
63
- - care about SOLID-informed coding discipline, API/database boundaries, safe logging, input validation, side effects, and automation reliability;
64
+ - care about SOLID-informed coding discipline, API/database boundaries, safe logging, input validation, cleanup safety, side effects, and automation reliability;
64
65
  - want to restore the same AI coding workflow across machines and repositories.
65
66
 
66
67
  You may not need this if you only want a single prompt file, want strict CI enforcement immediately after installation, do not want generated `.jhste/` files or bridge blocks, or expect this tool to automatically refactor code.
@@ -145,6 +146,8 @@ Custom - asks effect-oriented questions so you can choose the setup
145
146
  - strict mode requires explicit opt-in;
146
147
  - bridge blocks use `<!-- jhste-skills:start -->` / `<!-- jhste-skills:end -->` markers;
147
148
  - guard output is review evidence, not proof by itself;
149
+ - completion review should prefer actual consumer-path proof when feasible and separate current proof, skipped checks, checks not run, and residual risk;
150
+ - cleanup/search-replace work should classify editable paths separately from protected evidence/history-like paths before writing;
148
151
  - guard runtime/config failures must be reported separately from rule violations;
149
152
  - install/update/uninstall flows leave non-managed hooks, bridge text, and skill directories untouched.
150
153
 
@@ -155,12 +158,12 @@ These are the jhste-authored guardrail skills. They are installed by default as
155
158
  | Skill | Use it when | What it helps reduce |
156
159
  |---|---|---|
157
160
  | [`setup`](skills/setup/SKILL.md)<br>A safe setup skill that prevents install/connect/update flows from overwriting existing project instructions | Installing or connecting the kit to a repository | Unsafe overwrite, unmanaged hook conflict, repo instruction replacement |
158
- | [`jhste-engineering-groundwork`](skills/jhste-engineering-groundwork/SKILL.md)<br>A pre-change groundwork skill that verifies goal, premise, scope, boundary, and failure path before code edits | Before non-trivial code changes | Blind agreement, scope creep, unverified assumptions, unclear boundaries |
159
- | [`jhste-code-quality`](skills/jhste-code-quality/SKILL.md)<br>A code-quality skill for input validation, observable failure handling, secret-safe logging, and oversized-file review | Touching external input, failure handling, logging, env/config, or code-quality review paths | Unvalidated input, silent failure, secret logging, oversized files |
161
+ | [`jhste-engineering-groundwork`](skills/jhste-engineering-groundwork/SKILL.md)<br>A pre-change groundwork skill that verifies goal, premise, scope, boundary, failure path, and final behavior predicates before code edits | Before non-trivial code changes | Blind agreement, scope creep, unverified assumptions, unclear boundaries |
162
+ | [`jhste-code-quality`](skills/jhste-code-quality/SKILL.md)<br>A code-quality skill for input validation, observable failure handling, secret-safe logging, and oversized-file review | Touching external input, failure handling, logging, env/config, cleanup/search-replace, or code-quality review paths | Unvalidated input, silent failure, secret logging, unsafe broad cleanup, oversized files |
160
163
  | [`jhste-architecture-review`](skills/jhste-architecture-review/SKILL.md)<br>An architecture review skill for module boundaries, side-effect placement, and SOLID-informed design risks | Changing module boundaries, app structure, side-effect placement, or responsibility splits | Pass-through abstraction, mixed responsibility, side-effect leakage |
161
164
  | [`jhste-db-api-boundary`](skills/jhste-db-api-boundary/SKILL.md)<br>A boundary skill that checks responsibility and data contracts across API routes, services, repositories, and SQL | Touching API, controller, service, repository, SQL, or persistence code | Fat routes, unsafe SQL, missing auth/data scoping, leaky DTOs |
162
165
  | [`jhste-crawler-automation`](skills/jhste-crawler-automation/SKILL.md)<br>An automation skill for crawler/scraper/worker/scheduler producer-consumer boundaries and side effects | Touching crawlers, scrapers, workers, schedulers, or browser automation | Fragile automation, unclear producer/consumer boundaries, hidden side effects |
163
- | [`jhste-red-team-review`](skills/jhste-red-team-review/SKILL.md)<br>A read-only red-team code review skill that aggressively re-checks changed code before completion | Before declaring non-trivial code work complete | Premature “done”, missed null/auth/env/write/API/performance risks |
166
+ | [`jhste-red-team-review`](skills/jhste-red-team-review/SKILL.md)<br>A read-only red-team code review skill that aggressively re-checks changed code before completion | Before declaring non-trivial code work complete | Premature “done”, missing consumer-path proof, missed null/auth/env/write/API/performance risks |
164
167
 
165
168
  ## Bundled workflow skills
166
169
 
@@ -255,7 +258,7 @@ See [`docs/ACCEPTANCE_CHECK.md`](docs/ACCEPTANCE_CHECK.md) for release acceptanc
255
258
  - Do not agree blindly.
256
259
  - Do not overwrite local project authority.
257
260
  - Keep changes scoped.
258
- - Use SOLID-informed coding discipline: name responsibilities, review extension boundaries, preserve caller contracts, keep interfaces right-sized, and make concrete dependencies visible.
261
+ - Use SOLID-informed coding discipline as a clean-code review lens: name responsibilities, review extension boundaries, preserve caller contracts, keep interfaces right-sized, and make concrete dependencies visible when they create maintenance or failure risk.
259
262
  - Make failures observable.
260
263
  - Treat automated guard output as evidence, not proof.
261
264
  - Run a red-team code review before calling non-trivial work complete.
@@ -12,12 +12,12 @@ File, repo, command, issue, PR, or other external side effects are allowed when
12
12
  Ask for destructive, irreversible, ambiguous, production, secret, cost-bearing, broad existing-item, or out-of-scope changes.
13
13
  For reversible in-scope choices, make a reasonable assumption, proceed, and report it in the final summary.
14
14
  See `.jhste/profile.yaml` for local skill preferences.
15
- Before non-trivial code changes, use the `jhste-engineering-groundwork` skill to check scope, boundaries, failure paths, and assumptions.
15
+ Before non-trivial code changes, use the `jhste-engineering-groundwork` skill to check scope, boundaries, failure paths, final behavior predicates, and assumptions.
16
16
  For changed code, name the one main responsibility of each changed class, module, and function, and reject adjacent responsibilities unless they are on the changed execution path and prevent a concrete failure.
17
- Use SOLID-informed coding discipline as a review lens, not a compliance claim; guard findings are review candidates, not proof.
17
+ Use SOLID-informed coding discipline as a clean-code review lens for concrete failure modes, not a compliance claim or automatic abstraction trigger; guard findings are review candidates, not proof.
18
18
  After code changes, run `jhste-skills guard --scope changed --format text --fail-on error` when available.
19
19
  Report guard warnings/errors; do not treat guard runtime/config failures as validation success.
20
- Treat guard output as review evidence, not proof by itself.
20
+ Treat guard output as review evidence, not proof by itself; completion review should separate current proof, skipped/not-run checks, consumer-path proof when feasible, and residual risk.
21
21
  If guard or red-team review reports new warnings on changed files, attempt a bounded fix before declaring completion, then rerun guard. Do not commit automatically.
22
22
  Before declaring non-trivial code work complete, use the `jhste-red-team-review` skill.
23
23
  Skip red-team review for docs-only, comment-only, formatting-only, or trivial rename-only changes.
@@ -13,12 +13,12 @@ File, repo, command, issue, PR, or other external side effects are allowed when
13
13
  Ask for destructive, irreversible, ambiguous, production, secret, cost-bearing, broad existing-item, or out-of-scope changes.
14
14
  For reversible in-scope choices, make a reasonable assumption, proceed, and report it in the final summary.
15
15
  See \`.jhste/profile.yaml\` for local skill preferences.
16
- Before non-trivial code changes, use the \`jhste-engineering-groundwork\` skill to check scope, boundaries, failure paths, and assumptions.
16
+ Before non-trivial code changes, use the \`jhste-engineering-groundwork\` skill to check scope, boundaries, failure paths, final behavior predicates, and assumptions.
17
17
  For changed code, name the one main responsibility of each changed class, module, and function, and reject adjacent responsibilities unless they are on the changed execution path and prevent a concrete failure.
18
- Use SOLID-informed coding discipline as a review lens, not a compliance claim; guard findings are review candidates, not proof.
18
+ Use SOLID-informed coding discipline as a clean-code review lens for concrete failure modes, not a compliance claim or automatic abstraction trigger; guard findings are review candidates, not proof.
19
19
  After code changes, run \`jhste-skills guard --scope changed --format text --fail-on error\` when available.
20
20
  Report guard warnings/errors; do not treat guard runtime/config failures as validation success.
21
- Treat guard output as review evidence, not proof by itself.
21
+ Treat guard output as review evidence, not proof by itself; completion review should separate current proof, skipped/not-run checks, consumer-path proof when feasible, and residual risk.
22
22
  If guard or red-team review reports new warnings on changed files, attempt a bounded fix before declaring completion, then rerun guard. Do not commit automatically.
23
23
  Before declaring non-trivial code work complete, use the \`jhste-red-team-review\` skill.
24
24
  Skip red-team review for docs-only, comment-only, formatting-only, or trivial rename-only changes.
@@ -36,6 +36,17 @@ Rule modes are documented in `docs/RULES.md`, example profile defaults to adviso
36
36
 
37
37
  `docs/CONFLICT_RESOLUTION.md` and installer behavior preserve existing repo instructions, skip existing differing profiles/skills by default, make bridge insertion marker-managed and idempotent, refuse to overwrite non-managed hooks even in Full mode or with `--force`, refuse unmanaged skill-directory overwrites without `--allow-unmanaged-skill-overwrite`, and let `sync`/`update` adopt additional known jhste skills into an already managed skills directory.
38
38
 
39
+ ## Guardrail behavior updates
40
+
41
+ Skill guidance now requires these completion and safety properties:
42
+
43
+ - Red-team review requires current proof and separates checks run, consumer-path proof when feasible, checks not run, checks intentionally skipped, and residual risk.
44
+ - Engineering groundwork records final behavior predicates for non-trivial code changes.
45
+ - Cleanup/search-replace guidance requires editable `EDIT_PATHS` vs protected `PROTECTED_PATHS` classification before writes.
46
+ - Grilling remains read-only by default; docs or tracker writes route to explicit writing workflows such as `grill-with-docs`, `domain-modeling`, `to-issues`, or `triage`.
47
+ - Architecture improvement defaults to Markdown reporting, with HTML visual reports only when requested or materially useful.
48
+ - SOLID-informed coding discipline remains a clean-code review lens for concrete failure modes, not automatic abstraction pressure.
49
+
39
50
  ## Verification commands
40
51
 
41
52
  ```bash
package/docs/CLI.md CHANGED
@@ -44,8 +44,8 @@ Safety and compatibility:
44
44
  - existing profile is created when missing; generated/managed profiles can be refreshed with `--force`; modified profiles are preserved unless `--force --allow-profile-overwrite` is explicit; user source, CI, package files, lockfiles, non-managed hooks, and unmanaged differing skill directories are not overwritten; unmanaged skill overwrite requires `--allow-unmanaged-skill-overwrite` after review;
45
45
  - `AGENTS.md` and `CLAUDE.md` bridge blocks use `<!-- jhste-skills:start -->` / `<!-- jhste-skills:end -->` markers; only that managed block is updated on later runs;
46
46
  - CI, target `package.json`, and lockfiles are not changed. A local advisory pre-commit hook is installed by default in Normal, unless `--skip-hooks` is passed or an existing non-managed hook prevents safe install;
47
- - installed bridge/profile guidance tells agents to run `jhste-red-team-review` before declaring non-trivial code work complete, while skipping docs-only, comment-only, formatting-only, and trivial rename-only changes.
48
- - guard text output includes short `Meaning` and `Next` guidance for warning/info findings so users can understand and address candidates from hook output.
47
+ - installed bridge/profile guidance tells agents to record final behavior predicates during groundwork and run `jhste-red-team-review` before declaring non-trivial code work complete, while skipping docs-only, comment-only, formatting-only, and trivial rename-only changes.
48
+ - guard text output includes short `Meaning` and `Next` guidance for warning/info findings so users can understand and address candidates from hook output. Guard output remains review evidence, not completion proof; completion reports should separate current proof, consumer-path proof when feasible, skipped or not-run checks, and residual risk.
49
49
 
50
50
  Repo detection:
51
51
 
@@ -42,12 +42,12 @@ File, repo, command, issue, PR, or other external side effects are allowed when
42
42
  Ask for destructive, irreversible, ambiguous, production, secret, cost-bearing, broad existing-item, or out-of-scope changes.
43
43
  For reversible in-scope choices, make a reasonable assumption, proceed, and report it in the final summary.
44
44
  See `.jhste/profile.yaml` for local skill preferences.
45
- Before non-trivial code changes, use the `jhste-engineering-groundwork` skill to check scope, boundaries, failure paths, and assumptions.
45
+ Before non-trivial code changes, use the `jhste-engineering-groundwork` skill to check scope, boundaries, failure paths, final behavior predicates, and assumptions.
46
46
  For changed code, name the one main responsibility of each changed class, module, and function, and reject adjacent responsibilities unless they are on the changed execution path and prevent a concrete failure.
47
- Use SOLID-informed coding discipline as a review lens, not a compliance claim; guard findings are review candidates, not proof.
47
+ Use SOLID-informed coding discipline as a clean-code review lens for concrete failure modes, not a compliance claim or automatic abstraction trigger; guard findings are review candidates, not proof.
48
48
  After code changes, run `jhste-skills guard --scope changed --format text --fail-on error` when available.
49
49
  Report guard warnings/errors; do not treat guard runtime/config failures as validation success.
50
- Treat guard output as review evidence, not proof by itself.
50
+ Treat guard output as review evidence, not proof by itself; completion review should separate current proof, skipped/not-run checks, consumer-path proof when feasible, and residual risk.
51
51
  If guard or red-team review reports new warnings on changed files, attempt a bounded fix before declaring completion, then rerun guard. Do not commit automatically.
52
52
  Before declaring non-trivial code work complete, use the `jhste-red-team-review` skill.
53
53
  Skip red-team review for docs-only, comment-only, formatting-only, or trivial rename-only changes.
@@ -12,7 +12,9 @@ Before release, confirm:
12
12
  - deep scan is optional and does not modify source code;
13
13
  - recommended profile is not applied without user approval;
14
14
  - strict mode requires explicit opt-in;
15
- - Matt skills have allowlist, source lock, and license attribution.
15
+ - Matt skills have allowlist, source lock, and license attribution;
16
+ - cleanup/search-replace guidance does not encourage broad writes from raw search results;
17
+ - protected docs/examples/tests/fixtures/snapshots/generated outputs/reports/diffs/patches/history-like surfaces remain report-only unless explicitly targeted.
16
18
 
17
19
  Optional local private patterns can be placed in `.jhste/private-safety-patterns.txt` (one literal fragment per line, `#` comments allowed). The file is ignored and skipped by the checker; matches are reported without echoing the private fragment. If the file is absent, generic secret-like filename, token, credential, and local-path checks still run.
18
20
 
package/docs/RULES.md CHANGED
@@ -59,9 +59,9 @@ Repo-specific policy should stay in repo-local guards or `.jhste/profile.yaml` d
59
59
  Shared guidance now distinguishes two review stages:
60
60
 
61
61
  - commit-time guard: fast, read-only, and safe for hooks;
62
- - completion-time red-team review: a read-only red-team pass before declaring non-trivial code work complete.
62
+ - completion-time red-team review: a read-only red-team pass before declaring non-trivial code work complete, with current proof, actual consumer-path proof when feasible, skipped/not-run checks, and residual risk separated.
63
63
 
64
- Red-team review should run for non-trivial code changes and may be skipped for docs-only, comment-only, formatting-only, and trivial rename-only changes. Agents should stop after at most two fix + re-review cycles and report residual risks instead of looping indefinitely.
64
+ Red-team review should run for non-trivial code changes and may be skipped for docs-only, comment-only, formatting-only, and trivial rename-only changes. Agents should prefer the actual public entrypoint, CLI, UI route, worker path, service entrypoint, fresh-client flow, or documented acceptance path when feasible. They should stop after at most two fix + re-review cycles and report residual risks instead of looping indefinitely.
65
65
 
66
66
  The first shared finding families behind red-team review are:
67
67
 
@@ -93,7 +93,7 @@ SRP is not a "one function per file" or "smallest possible file" rule. A split i
93
93
 
94
94
  ## SOLID-informed design advisory
95
95
 
96
- SOLID is a coding discipline and review lens in this kit, not an automated compliance standard. `single_responsibility_advisory` remains the existing built-in SRP rule and is the S in the SOLID review model; do not rename it to a broader rule id just for branding.
96
+ SOLID is a coding discipline and clean-code review lens for concrete maintenance and failure risks in this kit, not an automated compliance standard or abstraction trigger. `single_responsibility_advisory` remains the existing built-in SRP rule and is the S in the SOLID review model; do not rename it to a broader rule id just for branding.
97
97
 
98
98
  The added SOLID advisory families are intentionally split by principle so messages stay actionable:
99
99
 
@@ -102,7 +102,7 @@ The added SOLID advisory families are intentionally split by principle so messag
102
102
  - `interface_segregation_advisory` (ISP-informed) is metadata-only and human-review required. Review broad config/interface/props bags, but keep cohesive public contracts together when they are read and changed together.
103
103
  - `dependency_boundary_advisory` (DIP-informed) has a low-confidence guard candidate, `solid.dip.concrete_side_effect_dependency`, for concrete DB/API/filesystem/payment/notification/queue/browser dependencies in policy-like paths. Treat it as a prompt to inspect the boundary; an intentionally local dependency can be acceptable when visible and tested.
104
104
 
105
- Do not describe these rules as `SOLID compliance`, `SOLID rule enforcement`, or a `SOLID violation` detector. Guard findings are review candidates, not proof, and metadata-only SOLID rules provide no automated guard coverage.
105
+ Do not describe these rules as `SOLID compliance`, `SOLID rule enforcement`, or a `SOLID violation` detector. Guard findings are review candidates, not proof, metadata-only SOLID rules provide no automated guard coverage, and abstractions should require a concrete caller, variant, side-effect boundary, testability problem, or maintenance failure mode.
106
106
 
107
107
  ## Restricted profile format
108
108
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "jhste-skills",
3
- "version": "0.3.0",
3
+ "version": "0.3.1",
4
4
  "description": "Installable engineering guardrails and workflow skills for AI coding agents.",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -67,11 +67,14 @@ export const required = [
67
67
  ];
68
68
 
69
69
  export const recipeRequirements = {
70
- 'skills/jhste-code-quality/references/code-quality.md': ['React client loader/hook/adapter/view', 'Mutation write safety', 'Import/ops script'],
70
+ 'skills/jhste-code-quality/references/code-quality.md': ['React client loader/hook/adapter/view', 'Mutation write safety', 'Import/ops script', 'EDIT_PATHS', 'PROTECTED_PATHS'],
71
71
  'skills/jhste-architecture-review/references/architecture-review.md': ['Next.js or API route split', 'React client path split', 'Generic module or function split', 'Function responsibility split', 'Adjacent-code scope limit'],
72
72
  'skills/jhste-db-api-boundary/references/db-api-boundary.md': ['DB row to domain/public DTO', 'Scoped mutation'],
73
73
  'skills/jhste-crawler-automation/references/crawler-automation.md': ['Producer / consumer recipe'],
74
- 'skills/jhste-engineering-groundwork/SKILL.md': ['Senior-quality pre-edit gate', 'partial-failure or rollback path', 'Adjacent-code scope creep', 'Changed responsibility', 'bounded fix'],
75
- 'skills/jhste-red-team-review/SKILL.md': ['Severity rubric and path tracing', 'changed execution path', 'changes required'],
76
- 'skills/jhste-red-team-review/references/red-team-review.md': ['Severity rubric', 'Trace at least one changed execution path', 'one main reason to change'],
74
+ 'skills/grilling/SKILL.md': ['read-only by default'],
75
+ 'skills/grill-me/SKILL.md': ['read-only by default'],
76
+ 'skills/improve-codebase-architecture/SKILL.md': ['Default to a concise Markdown architecture review', 'HTML/Tailwind/Mermaid report only when requested'],
77
+ 'skills/jhste-engineering-groundwork/SKILL.md': ['Senior-quality pre-edit gate', 'partial-failure or rollback path', 'Adjacent-code scope creep', 'Changed responsibility', 'bounded fix', 'Final behavior predicates'],
78
+ 'skills/jhste-red-team-review/SKILL.md': ['Severity rubric and path tracing', 'changed execution path', 'changes required', 'actual consumer', 'residual risk'],
79
+ 'skills/jhste-red-team-review/references/red-team-review.md': ['Severity rubric', 'Trace at least one changed execution path', 'one main reason to change', 'Current proof'],
77
80
  };
@@ -8,7 +8,8 @@ description: Direct personal grilling mode for stress-testing the user's own pla
8
8
  - Repo-local instructions remain authoritative.
9
9
  - Use `jhste-engineering-groundwork` for scope, boundaries, assumptions, and failure paths when it applies.
10
10
  - Vocabulary in this vendored skill is advisory unless adopted by repo-local docs; do not rename established repo concepts only to match this skill.
11
- - File, repo, command, issue, PR, or other external side effects are allowed when the user directly requested that workflow or repo-local standing approval covers it. Ask for destructive, irreversible, ambiguous, production, secret, cost-bearing, broad existing-item, or out-of-scope changes.
11
+ - This skill is read-only by default. Do not create or modify files, issues, PRs, commands, or repo state during grilling.
12
+ - If the user wants documentation updates, ADRs, glossary changes, issue creation, or other side effects, switch to the appropriate writing workflow such as `grill-with-docs`, `domain-modeling`, `to-issues`, or `triage`.
12
13
 
13
14
 
14
15
  Interview me relentlessly about every aspect of this plan until we reach a shared understanding. Walk down each branch of the design tree, resolving dependencies between decisions one-by-one. For each question, provide your recommended answer.
@@ -8,7 +8,8 @@ description: General plan/design stress-test interview. Use when the user asks t
8
8
  - Repo-local instructions remain authoritative.
9
9
  - Use `jhste-engineering-groundwork` for scope, boundaries, assumptions, and failure paths when it applies.
10
10
  - Vocabulary in this vendored skill is advisory unless adopted by repo-local docs; do not rename established repo concepts only to match this skill.
11
- - File, repo, command, issue, PR, or other external side effects are allowed when the user directly requested that workflow or repo-local standing approval covers it. Ask for destructive, irreversible, ambiguous, production, secret, cost-bearing, broad existing-item, or out-of-scope changes.
11
+ - This skill is read-only by default. Do not create or modify files, issues, PRs, commands, or repo state during grilling.
12
+ - If the user wants documentation updates, ADRs, glossary changes, issue creation, or other side effects, switch to the appropriate writing workflow such as `grill-with-docs`, `domain-modeling`, `to-issues`, or `triage`.
12
13
 
13
14
 
14
15
  Interview me relentlessly about every aspect of this plan until we reach a shared understanding. Walk down each branch of the design tree, resolving dependencies between decisions one-by-one. For each question, provide your recommended answer.
@@ -60,30 +60,29 @@ Then use the Agent tool with `subagent_type=Explore` to walk the codebase. Don't
60
60
 
61
61
  Apply the **deletion test** to anything you suspect is shallow: would deleting it concentrate complexity, or just move it? A "yes, concentrates" is the signal you want.
62
62
 
63
- ### 2. Present candidates as an HTML report
63
+ ### 2. Present candidates
64
64
 
65
- Write a self-contained HTML file to the OS temp directory so nothing lands in the repo. Resolve the temp dir from `$TMPDIR`, falling back to `/tmp` (or `%TEMP%` on Windows), and write to `<tmpdir>/architecture-review-<timestamp>.html` so each run gets a fresh file. Open it for the user `xdg-open <path>` on Linux, `open <path>` on macOS, `start <path>` on Windows — and tell them the absolute path.
65
+ Default to a concise Markdown architecture review unless the user asks for a visual report or the candidate set is complex enough that diagrams would materially improve decision quality. Do not make an HTML file merely because this skill is running.
66
66
 
67
- The report uses **Tailwind via CDN** for layout and styling, and **Mermaid via CDN** for diagrams where a graph/flow/sequence reliably communicates the structure. Mix Mermaid with hand-crafted CSS/SVG visuals — use Mermaid when relationships are graph-shaped (call graphs, dependencies, sequences), and hand-built divs/SVG when you want something more editorial (mass diagrams, cross-sections, collapse animations). Each candidate gets a **before/after visualisation**. Be visual.
67
+ For the Markdown report, include for each candidate:
68
68
 
69
- For each candidate, the same template as before, but rendered as a card:
70
-
71
- - **Files** — which files/modules are involved
69
+ - **Files/modules involved** which files, modules, or boundaries are involved
72
70
  - **Problem** — why the current architecture is causing friction
73
- - **Solution** — plain English description of what would change
74
- - **Benefits** — explained in terms of locality and leverage, and how tests would improve
75
- - **Before / After diagram** — side-by-side, custom-drawn, illustrating the shallowness and the deepening
76
- - **Recommendation strength** — one of `Strong`, `Worth exploring`, `Speculative`, rendered as a badge
71
+ - **Concrete failure or maintenance risk** — what can break, mislead, slow review, or force repeated edits
72
+ - **Proposed direction** — plain English description of what would change
73
+ - **SOLID-informed lens involved** — responsibility, extension boundary, substitutability, interface size, or dependency direction when relevant
74
+ - **Benefits** — explained in terms of locality, leverage, testability, or caller clarity
75
+ - **Recommendation strength** — one of `Strong`, `Worth exploring`, or `Speculative`
77
76
 
78
77
  End the report with a **Top recommendation** section: which candidate you'd tackle first and why.
79
78
 
80
- **Use CONTEXT.md vocabulary for the domain, and [LANGUAGE.md](LANGUAGE.md) vocabulary for the architecture.** If `CONTEXT.md` defines "Order," talk about "the Order intake module" not "the FooBarHandler," and not "the Order service."
79
+ Use the HTML/Tailwind/Mermaid report only when requested or when visual comparison would materially improve decision quality. If using HTML, write a self-contained file outside the repo unless the user asks otherwise. Resolve the temp dir from `$TMPDIR`, falling back to `/tmp` (or `%TEMP%` on Windows), and write to `<tmpdir>/architecture-review-<timestamp>.html` so each run gets a fresh file. Open it for the user when the environment supports that, and tell them the absolute path. See [HTML-REPORT.md](HTML-REPORT.md) for the optional HTML scaffold, diagram patterns, and styling guidance.
81
80
 
82
- **ADR conflicts**: if a candidate contradicts an existing ADR, only surface it when the friction is real enough to warrant revisiting the ADR. Mark it clearly in the card (e.g. a warning callout: _"contradicts ADR-0007 but worth reopening because…"_). Don't list every theoretical refactor an ADR forbids.
81
+ **Use CONTEXT.md vocabulary for the domain, and [LANGUAGE.md](LANGUAGE.md) vocabulary for the architecture.** If `CONTEXT.md` defines "Order," talk about "the Order intake module" — not "the FooBarHandler," and not "the Order service."
83
82
 
84
- See [HTML-REPORT.md](HTML-REPORT.md) for the full HTML scaffold, diagram patterns, and styling guidance.
83
+ **ADR conflicts**: if a candidate contradicts an existing ADR, only surface it when the friction is real enough to warrant revisiting the ADR. Mark it clearly (e.g. a warning callout: _"contradicts ADR-0007 but worth reopening because…"_). Don't list every theoretical refactor an ADR forbids.
85
84
 
86
- Do NOT propose interfaces yet. After the file is written, ask the user: "Which of these would you like to explore?"
85
+ Do NOT propose interfaces yet. After the report, ask the user: "Which of these would you like to explore?"
87
86
 
88
87
  ### 3. Grilling loop
89
88
 
@@ -12,6 +12,7 @@ Repo-local architecture docs remain authoritative. Use this skill to keep common
12
12
  - For non-trivial changes, apply `jhste-engineering-groundwork` before proposing or editing architecture.
13
13
  - Keep routing, UI composition, service logic, persistence, and side effects in clear boundaries.
14
14
  - Avoid pass-through abstraction that adds names without protecting an invariant or simplifying a caller.
15
+ - Do not introduce an abstraction only to satisfy a SOLID label. Require a concrete caller, variant, side-effect boundary, testability problem, or maintenance failure mode.
15
16
  - Make side effects visible in names, directories, or injected dependencies.
16
17
  - For changed classes, modules, and functions, name one main responsibility and one main reason to change before adding behavior.
17
18
  - For large or mixed modules, identify the responsibility that can move behind a tested boundary without creating shallow pass-through wrappers.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: jhste-code-quality
3
- description: Public-safe code-quality guidance for input validation, observable failures, secret-safe logging, and oversized-file review. Use when touching external input, failure handling, logging, env/config, or code-quality review paths.
3
+ description: Public-safe code-quality guidance for input validation, observable failures, secret-safe logging, cleanup/search-replace safety, and oversized-file review. Use when touching external input, failure handling, logging, env/config, cleanup or secret-removal work, broad search/replace, or code-quality review paths.
4
4
  ---
5
5
 
6
6
  # jhste-code-quality
@@ -18,11 +18,23 @@ Use repo-local instructions first. Treat this skill as shared advisory guidance
18
18
  - Do not stop at happy-path-only coverage for changed behavior; include the most relevant edge, failure, side-effect, idempotency, or regression case.
19
19
  - Mock external boundaries, not internal collaborators you control.
20
20
  - Before adding a new helper, type, or shape, check for the existing source of truth.
21
- - Use SOLID-informed coding discipline as advisory guidance: one responsibility, extension boundaries only when variants force repeated edits, stable caller contracts, right-sized interfaces, and visible side-effect dependencies.
21
+ - Use SOLID-informed coding discipline as advisory guidance for concrete maintenance and failure risks: one responsibility, extension boundaries only when variants force repeated edits, stable caller contracts, right-sized interfaces, and visible side-effect dependencies. Do not add abstraction only to satisfy a SOLID label.
22
22
  - If a hand-written source file grows beyond the profile threshold, consider splitting responsibilities before adding more code.
23
23
  - If a page, client module, route/controller, import script, or Python orchestrator crosses a responsibility budget, treat it as a review signal to find the next clean boundary.
24
24
  - After code changes, prefer `jhste-skills guard --scope changed --format text --fail-on error` when the CLI is available; report warnings and guard runtime/config failures separately.
25
25
 
26
+ ## Cleanup and secret-removal safety
27
+
28
+ For secret cleanup, value removal, broad repository cleanup, or search/replace work:
29
+
30
+ - Do not treat search results as an edit set.
31
+ - First classify `EDIT_PATHS` and `PROTECTED_PATHS`.
32
+ - `EDIT_PATHS` may include only current product files on the changed execution path or paths explicitly named by the user.
33
+ - Treat docs, examples, tests, fixtures, snapshots, generated outputs, reports, diffs, patches, archives, and history-like surfaces as `PROTECTED_PATHS` unless the user explicitly names that exact path as the edit target.
34
+ - Search the broader repo for reporting evidence, but write only inside `EDIT_PATHS`.
35
+ - Report protected residual hits instead of silently editing them.
36
+ - Do not edit history, object stores, reflogs, external copies, or run garbage collection unless the user explicitly scopes destructive purge work and approves the plan.
37
+
26
38
  ## References
27
39
 
28
40
  - `references/code-quality.md`
@@ -15,7 +15,15 @@ Risky fallback patterns include `catch` blocks that return `[]`, `null`, `undefi
15
15
 
16
16
  ## SOLID-informed coding discipline
17
17
 
18
- Use SOLID as a design review lens, not as automatic compliance. Keep each changed function, module, or class focused on one responsibility and one reason to change. Review extension boundaries when new variants repeatedly edit core branching, but avoid premature strategies or registries. Preserve caller-visible return shapes, nullability, error behavior, and side-effect expectations. Prefer right-sized contracts over broad config/interface/props bags, while keeping cohesive public contracts together. Keep concrete DB, API, browser, filesystem, email, payment, and queue effects visible through adapters, repositories, injected dependencies, or intentionally local boundaries.
18
+ Use SOLID as a design review lens for concrete maintenance and failure risks, not as automatic compliance. Keep each changed function, module, or class focused on one responsibility and one reason to change. Review extension boundaries when new variants repeatedly edit core branching, but avoid premature strategies or registries. Preserve caller-visible return shapes, nullability, error behavior, and side-effect expectations. Prefer right-sized contracts over broad config/interface/props bags, while keeping cohesive public contracts together. Keep concrete DB, API, browser, filesystem, email, payment, and queue effects visible through adapters, repositories, injected dependencies, or intentionally local boundaries. Do not introduce abstraction only to satisfy a SOLID label.
19
+
20
+ ## Cleanup and secret-removal safety
21
+
22
+ Broad search results are evidence, not an edit plan. Before removing secrets, values, generated noise, or repeated patterns, classify `EDIT_PATHS` and `PROTECTED_PATHS`.
23
+
24
+ `EDIT_PATHS` should be limited to current product files on the changed execution path or exact paths the user named as editable. Treat docs, examples, tests, fixtures, snapshots, generated outputs, reports, diffs, patches, archives, and history-like surfaces as `PROTECTED_PATHS` unless the user explicitly targets that exact path. Search protected paths for reporting evidence, but report residual hits instead of silently rewriting them.
25
+
26
+ Never edit history, object stores, reflogs, external copies, or run garbage collection as part of ordinary cleanup. Those are destructive purge operations and need explicit user scope and approval.
19
27
 
20
28
  ## Test quality
21
29
 
@@ -14,6 +14,7 @@ Use this skill when adding or reviewing crawler, scraper, worker, scheduler, or
14
14
  - Do not depend on a live scheduled crawler run as the only routine validation path.
15
15
  - Browser, network, filesystem, clock, sleep, and notification effects should be visible and testable behind boundaries.
16
16
  - Store raw sensitive payloads only when the repo has an explicit policy for doing so.
17
+ - Verify artifact handoff through the consumer-facing path when feasible: produced artifact shape, documented handoff location, idempotent retry behavior, and the consumer-side mutation boundary.
17
18
 
18
19
  ## References
19
20
 
@@ -17,6 +17,7 @@ Use this skill for API and persistence boundary changes. Repo-local API contract
17
17
  - Validate database rows or third-party records before treating them as domain objects when shape matters.
18
18
  - Make write safety visible for repeated execution, batch mutation, or idempotent retry paths.
19
19
  - Return public-safe errors; do not leak raw database, stack, or secret-like details.
20
+ - For API or persistence changes, verification should prefer the actual contract surface when feasible: route handler behavior, request/response shape, auth or tenant scoping, SQL binding behavior, migration/application path, or service boundary used by callers.
20
21
 
21
22
  ## References
22
23
 
@@ -5,7 +5,7 @@ description: "Pre-change engineering groundwork for non-trivial code work: verif
5
5
 
6
6
  # jhste-engineering-groundwork
7
7
 
8
- Use before non-trivial code changes. Repo-local instructions and architecture docs remain authoritative.
8
+ Use before non-trivial code changes. Repo-local instructions and architecture docs remain authoritative. For docs-only, comment-only, formatting-only, and trivial rename-only work, skip the full groundwork block unless the change affects user-visible behavior, public API shape, data ownership, safety, or repo architecture. Still keep a short scope and verification note.
9
9
 
10
10
  ## Contract
11
11
 
@@ -15,7 +15,7 @@ Use before non-trivial code changes. Repo-local instructions and architecture do
15
15
  - Use this as a pre-edit groundwork check, not as a reason to interrupt the user. Make reasonable assumptions for reversible in-scope work and report them later. Ask only when the assumption changes scope, safety, data ownership, API contract, or user-visible behavior.
16
16
  - Identify the ownership boundary: UI, route/controller, usecase/service, repository/query, adapter, job, script, or test fixture.
17
17
  - Name the one main responsibility and one main reason to change for each changed class, module, and function.
18
- - Apply SOLID-informed coding discipline as review guidance, not compliance proof: responsibility, extension boundary, substitutability, interface size, and dependency direction.
18
+ - Use SOLID-informed coding discipline as a clean-code review lens for concrete failure modes, not as compliance proof or a reason to add abstraction by default: responsibility, extension boundary, substitutability, interface size, and dependency direction.
19
19
  - Reject adjacent responsibilities unless they are on the changed execution path and leaving them out creates a concrete failure mode.
20
20
  - List the important failure paths before writing code.
21
21
  - State the data contract entering and leaving the changed boundary.
@@ -41,13 +41,15 @@ For non-trivial code changes, check these before editing:
41
41
  8. **Rejected scope** — adjacent refactors or old problems intentionally not touched.
42
42
  9. **Smallest safe change** — why the planned change is minimal.
43
43
  10. **Verification plan** — tests, guards, builds, or manual checks to run, plus any checks likely to be skipped.
44
+ 11. **Final behavior predicates** — concrete public behavior that must change, public/API/DB/UI shape that must not change, expected error behavior, persistence or side-effect expectations, and backward-compatibility constraints.
44
45
 
45
46
  Keep these items available as internal review evidence, but do not make the user read the full evidence block every time. User-facing output should usually be one or two plain sentences covering:
46
47
 
47
48
  - scope checked;
48
49
  - main risks;
49
50
  - smallest-change plan;
50
- - anything important that was **not checked**.
51
+ - anything important that was **not checked**;
52
+ - the key final behavior predicate when it is useful for the user to review.
51
53
 
52
54
 
53
55
  If a premise was not checked, say **not checked**. Do not write "not found" unless you actually inspected the relevant path.
@@ -22,8 +22,11 @@ Perform the changed-code review, inspect guard/test output, and run bounded fix/
22
22
  - New warnings on changed files should be reported as changes required when they can be fixed within the changed execution path; the follow-up fix happens after the review, not inside it.
23
23
  - Inspect the actual changed files or diff before assigning `pass`.
24
24
  - Check that each changed class, module, and function has one clear main job, and call out mixed responsibilities that create concrete review or failure risk.
25
- - Apply SOLID-informed review as a coding-discipline lens: extension boundaries, substitutability, right-sized interfaces, and dependency direction are prompts for concrete failure modes, not automatic violations.
25
+ - Apply SOLID-informed review as a coding-discipline lens: extension boundaries, substitutability, right-sized interfaces, and dependency direction are prompts for concrete failure modes, not automatic violations or automatic abstractions.
26
26
  - Do not assign `pass` from guard/test output alone; guard output is evidence, not a substitute for review.
27
+ - Treat old passes, intent, skipped checks, partial artifacts, internal reasoning, and guard output alone as current proof gaps, not proof of completion.
28
+ - Prefer proof through the actual consumer path when feasible: public API route, CLI command, UI route, worker/scheduler path, service entrypoint, fresh-client flow, or documented acceptance path.
29
+ - Keep current proof, checks not run, checks intentionally skipped, and residual risks separate in the final report.
27
30
  - Report `guard` runtime/config failures separately from rule violations.
28
31
  - Distinguish **not found** from **not checked**. Use **not found** only after inspecting the relevant path.
29
32
  - Avoid recommending unrelated refactors unless they are on the changed execution path and required for safety.
@@ -34,7 +37,7 @@ Perform the changed-code review, inspect guard/test output, and run bounded fix/
34
37
 
35
38
  ## Severity rubric and path tracing
36
39
 
37
- For non-trivial code changes, name the main responsibility of changed classes/modules/functions, apply the SOLID-informed review lens where relevant, trace at least one changed execution path from entrypoint through validation/auth/state to the side effect or result, and state any changed paths not checked. Use `changes required` for new guard or review warnings on changed files that can be fixed within the changed execution path, and for P0/P1 issues that can cause data loss, security/privacy exposure, misleading success, broken runtime behavior, or failed documented acceptance. Use `residual risk` when the bounded review completed but lower-severity, heuristic, environmental, or out-of-scope risks remain. Use `pass` only after inspecting the relevant diff and finding no material follow-up.
40
+ For non-trivial code changes, name the main responsibility of changed classes/modules/functions, apply the SOLID-informed review lens where relevant, trace at least one changed execution path from entrypoint through validation/auth/state to the side effect or result, and state any changed paths not checked. Use `changes required` for new guard or review warnings on changed files that can be fixed within the changed execution path, and for P0/P1 issues that can cause data loss, security/privacy exposure, misleading success, broken runtime behavior, or failed documented acceptance. Use `residual risk` when the bounded review completed but lower-severity, heuristic, environmental, or out-of-scope risks remain. Use `pass` only after inspecting the relevant diff and finding no material follow-up, with current proof for the changed public behavior or a clear explanation of why consumer-path proof was not feasible.
38
41
 
39
42
  ## Issue candidate protocol
40
43
 
@@ -72,8 +75,11 @@ Findings must include:
72
75
  Verification must state:
73
76
 
74
77
  - tests/builds/guards actually run;
78
+ - actual consumer, entrypoint, fresh-client, or documented acceptance path checked when feasible;
75
79
  - checks not run;
76
- - whether any guard failures were runtime/config failures or rule violations.
80
+ - checks intentionally skipped and why;
81
+ - whether any guard failures were runtime/config failures or rule violations;
82
+ - residual risk that remains after bounded review.
77
83
 
78
84
  When reporting warnings or residual risks to the user, keep the write-up to 2-3 short sentences in a natural developer tone:
79
85
 
@@ -4,16 +4,18 @@ Use an objective red-team checklist. Prefer concrete findings over broad praise.
4
4
 
5
5
  ## Checklist
6
6
 
7
- - Inspect the changed files or diff directly. Do not pass from summaries, test output, or guard output alone.
7
+ - Inspect the changed files or diff directly. Do not pass from summaries, old passes, intent, test output, partial artifacts, internal reasoning, or guard output alone.
8
8
  - Responsibility is separated cleanly enough that changed classes, modules, functions, and UI components each have a clear main job and one main reason to change.
9
9
  - SOLID-informed risks are checked as review prompts, not proof: extension boundaries for repeated variants, substitutability contracts, broad interfaces, and concrete dependency direction.
10
10
  - Data flow is predictable and easy to trace through the changed code.
11
+ - Current proof is identified explicitly: tests, builds, guards, direct inspection, actual consumer path, fresh-client flow, or documented acceptance path checked now.
11
12
  - Null, undefined, empty, loading, and error states are handled safely for the affected paths.
12
13
  - Failure handling is observable and does not silently pretend success.
13
14
  - Type expectations, API contracts, and caller assumptions still line up after the change.
14
15
  - Auth, permission, and user-data isolation risks are called out when relevant.
15
16
  - Create/update/delete paths do not appear vulnerable to data loss, duplicate writes, or misleading success states.
16
17
  - Build, import, env, route, and runtime assumptions that could break deployment are called out when relevant.
18
+ - Actual consumer-path proof is preferred when feasible: public API route, CLI command, UI route, worker/scheduler path, service entrypoint, fresh-client flow, or documented acceptance path.
17
19
  - Performance risks such as duplicate requests, avoidable rerenders, or obviously heavy work on hot paths are called out when relevant.
18
20
  - Tests for changed behavior assert observable outcomes through the relevant interface, not implementation details or incidental strings.
19
21
  - Changed behavior is not covered only by a happy path when a meaningful edge, failure, side-effect, idempotency, or regression case is relevant.
@@ -35,7 +37,7 @@ Use **not found** only for risks whose relevant paths were inspected. Use **not
35
37
  - **P2 -> changes required or residual risk**: contract drift, missing edge-case tests, poor failure observability, or maintainability debt on the changed path; require changes when the failure mode is concrete and immediate.
36
38
  - **P3 -> residual risk**: low-confidence heuristic, polish, docs clarity, or follow-up work outside the changed execution path.
37
39
 
38
- Trace at least one changed execution path from entrypoint to side effect/result for non-trivial code changes. Report paths not checked rather than implying broad coverage.
40
+ Trace at least one changed execution path from entrypoint to side effect/result for non-trivial code changes. Report paths not checked rather than implying broad coverage. Keep current proof, skipped checks, not checked areas, and residual risks separate.
39
41
 
40
42
  ## Issue candidate shape
41
43
 
@@ -64,8 +66,9 @@ Summarize the result with:
64
66
  1. `pass`, `changes required`, or `residual risk`
65
67
  2. Short finding bullets with the concrete problem and impact
66
68
  3. Issue candidates only when separate tracked follow-up is warranted
67
- 4. Tests, guard output, builds, or other checks that support the conclusion, plus checks not run
68
- 5. What still might be wrong, if anything
69
+ 4. Current proof: tests, guard output, builds, consumer-path/fresh-client checks, or other checks that support the conclusion
70
+ 5. Checks intentionally skipped, checks not run, and why
71
+ 6. Residual risk: what still might be wrong, if anything
69
72
 
70
73
  Every finding should name:
71
74