jhste-skills 0.4.0 → 0.5.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.
Files changed (188) hide show
  1. package/CHANGELOG.md +6 -117
  2. package/README.en.md +42 -0
  3. package/README.md +23 -274
  4. package/package.json +5 -36
  5. package/skills/jhste-coding/SKILL.md +36 -0
  6. package/README.ja.md +0 -288
  7. package/README.ko.md +0 -291
  8. package/README.zh.md +0 -288
  9. package/adapters/claude/README.md +0 -7
  10. package/adapters/codex/README.md +0 -29
  11. package/adapters/generic/README.md +0 -7
  12. package/cli/baseline.mjs +0 -81
  13. package/cli/connect.mjs +0 -84
  14. package/cli/deep-scan/analyze.mjs +0 -113
  15. package/cli/deep-scan/collect.mjs +0 -133
  16. package/cli/deep-scan/report.mjs +0 -205
  17. package/cli/deep-scan.mjs +0 -67
  18. package/cli/global.mjs +0 -169
  19. package/cli/guard/baseline.mjs +0 -64
  20. package/cli/guard/config.mjs +0 -48
  21. package/cli/guard/profile-commands.mjs +0 -87
  22. package/cli/guard/registry.mjs +0 -52
  23. package/cli/guard/reporting.mjs +0 -156
  24. package/cli/guard/scanners/code-health.mjs +0 -269
  25. package/cli/guard/scanners/data-boundary-locality.mjs +0 -125
  26. package/cli/guard/scanners/data-boundary.mjs +0 -237
  27. package/cli/guard/scanners/external-input.mjs +0 -74
  28. package/cli/guard/scanners/index.mjs +0 -139
  29. package/cli/guard/scanners/single-responsibility.mjs +0 -248
  30. package/cli/guard/scanners/solid-design.mjs +0 -98
  31. package/cli/guard/scanners/ui-runtime.mjs +0 -140
  32. package/cli/guard/scanners/utils.mjs +0 -167
  33. package/cli/guard/scope.mjs +0 -181
  34. package/cli/guard.mjs +0 -125
  35. package/cli/hook-utils.mjs +0 -127
  36. package/cli/hooks.mjs +0 -127
  37. package/cli/index.mjs +0 -36
  38. package/cli/install-actions/apply-plan.mjs +0 -44
  39. package/cli/install-actions/bridge-writer.mjs +0 -89
  40. package/cli/install-actions/output.mjs +0 -48
  41. package/cli/install-actions/preflight.mjs +0 -63
  42. package/cli/install-actions/profile-writer.mjs +0 -41
  43. package/cli/install-actions/skills.mjs +0 -294
  44. package/cli/install-actions.mjs +0 -4
  45. package/cli/install-flow/options.mjs +0 -240
  46. package/cli/install-flow/output.mjs +0 -106
  47. package/cli/install-flow/plan-helpers.mjs +0 -29
  48. package/cli/install-flow/plan.mjs +0 -192
  49. package/cli/install-flow/prompts.mjs +0 -210
  50. package/cli/install-flow.mjs +0 -16
  51. package/cli/install.mjs +0 -77
  52. package/cli/json-file.mjs +0 -39
  53. package/cli/postinstall-global-refresh.mjs +0 -57
  54. package/cli/profile/loader.mjs +0 -13
  55. package/cli/profile/parser.mjs +0 -229
  56. package/cli/profile/schema.mjs +0 -83
  57. package/cli/profile/settings.mjs +0 -45
  58. package/cli/profile/validator.mjs +0 -83
  59. package/cli/profile.mjs +0 -5
  60. package/cli/shared/args.mjs +0 -32
  61. package/cli/shared/files.mjs +0 -86
  62. package/cli/shared/generated-profile.mjs +0 -29
  63. package/cli/shared/git.mjs +0 -28
  64. package/cli/shared/paths.mjs +0 -27
  65. package/cli/shared/prompt.mjs +0 -32
  66. package/cli/shared/templates.mjs +0 -95
  67. package/cli/shared/time.mjs +0 -3
  68. package/cli/shared.mjs +0 -8
  69. package/cli/sync-core.mjs +0 -246
  70. package/cli/sync.mjs +0 -7
  71. package/cli/tune.mjs +0 -101
  72. package/cli/uninstall.mjs +0 -238
  73. package/cli/update.mjs +0 -7
  74. package/docs/ACCEPTANCE_CHECK.md +0 -73
  75. package/docs/CLI.md +0 -240
  76. package/docs/CONFLICT_RESOLUTION.md +0 -64
  77. package/docs/PUBLIC_SAFETY.md +0 -28
  78. package/docs/RULES.md +0 -109
  79. package/docs/VENDORING.md +0 -23
  80. package/examples/profile.yaml +0 -44
  81. package/packs/api.yaml +0 -13
  82. package/packs/core.yaml +0 -23
  83. package/packs/crawler.yaml +0 -8
  84. package/packs/database.yaml +0 -8
  85. package/packs/web.yaml +0 -10
  86. package/rules/core/api_contract_compatibility.yaml +0 -25
  87. package/rules/core/authz_data_isolation.yaml +0 -27
  88. package/rules/core/build_runtime_env_safety.yaml +0 -26
  89. package/rules/core/dependency_boundary_advisory.yaml +0 -27
  90. package/rules/core/extension_seam_advisory.yaml +0 -27
  91. package/rules/core/external_input_validation.yaml +0 -27
  92. package/rules/core/file_size_advisory.yaml +0 -28
  93. package/rules/core/interface_segregation_advisory.yaml +0 -25
  94. package/rules/core/no_secret_logging.yaml +0 -24
  95. package/rules/core/no_silent_failure.yaml +0 -30
  96. package/rules/core/null_state_safety.yaml +0 -25
  97. package/rules/core/performance_duplicate_fetch.yaml +0 -25
  98. package/rules/core/public_safe_error.yaml +0 -24
  99. package/rules/core/responsibility_budget.yaml +0 -47
  100. package/rules/core/side_effect_boundary.yaml +0 -24
  101. package/rules/core/single_responsibility_advisory.yaml +0 -35
  102. package/rules/core/substitutability_advisory.yaml +0 -25
  103. package/rules/core/workflow_security.yaml +0 -25
  104. package/rules/core/write_safety_idempotency.yaml +0 -25
  105. package/rules/crawler/crawler_producer_boundary.yaml +0 -24
  106. package/rules/database/db_row_validation.yaml +0 -24
  107. package/rules/database/sql_parameter_binding.yaml +0 -24
  108. package/rules/nextjs/thin_api_route.yaml +0 -24
  109. package/rules/python/broad_exception_advisory.yaml +0 -24
  110. package/rules/react/component_responsibility.yaml +0 -24
  111. package/rules/typescript/type_escape_advisory.yaml +0 -24
  112. package/scripts/docs-check-data.mjs +0 -86
  113. package/scripts/docs-check.mjs +0 -261
  114. package/scripts/guard-fixtures/helpers.mjs +0 -58
  115. package/scripts/guard-fixtures-test.mjs +0 -273
  116. package/scripts/profile-fixtures-test.mjs +0 -170
  117. package/scripts/public-safety-check.mjs +0 -88
  118. package/scripts/public-safety-fixtures-test.mjs +0 -60
  119. package/scripts/release-gates-test.mjs +0 -58
  120. package/scripts/responsibility-budget-fixtures-test.mjs +0 -47
  121. package/scripts/single-responsibility-fixtures-test.mjs +0 -103
  122. package/scripts/smoke/connect-scenarios.mjs +0 -47
  123. package/scripts/smoke/fixture.mjs +0 -49
  124. package/scripts/smoke/global-scenarios.mjs +0 -127
  125. package/scripts/smoke/guard-and-hook-scenarios.mjs +0 -214
  126. package/scripts/smoke/helpers.mjs +0 -124
  127. package/scripts/smoke/install-scenarios.mjs +0 -289
  128. package/scripts/smoke/mode-scenarios.mjs +0 -76
  129. package/scripts/smoke/profile-overwrite-scenarios.mjs +0 -136
  130. package/scripts/smoke-test.mjs +0 -19
  131. package/scripts/solid-design-fixtures-test.mjs +0 -102
  132. package/scripts/syntax-check.mjs +0 -37
  133. package/scripts/vendor-check.mjs +0 -87
  134. package/skills/_shared/evidence-discipline.md +0 -30
  135. package/skills/_shared/issue-candidate.md +0 -23
  136. package/skills/_shared/scope-discipline.md +0 -13
  137. package/skills/_shared/solid-lens.md +0 -38
  138. package/skills/ask-jhste/SKILL.md +0 -37
  139. package/skills/codebase-design/DEEPENING.md +0 -37
  140. package/skills/codebase-design/DESIGN-IT-TWICE.md +0 -44
  141. package/skills/codebase-design/SKILL.md +0 -126
  142. package/skills/diagnosing-bugs/SKILL.md +0 -142
  143. package/skills/diagnosing-bugs/scripts/hitl-loop.template.sh +0 -41
  144. package/skills/domain-modeling/ADR-FORMAT.md +0 -47
  145. package/skills/domain-modeling/CONTEXT-FORMAT.md +0 -60
  146. package/skills/domain-modeling/SKILL.md +0 -86
  147. package/skills/grill-me/SKILL.md +0 -17
  148. package/skills/grill-with-docs/ADR-FORMAT.md +0 -5
  149. package/skills/grill-with-docs/CONTEXT-FORMAT.md +0 -5
  150. package/skills/grill-with-docs/SKILL.md +0 -26
  151. package/skills/grilling/SKILL.md +0 -19
  152. package/skills/handoff/SKILL.md +0 -25
  153. package/skills/implement/SKILL.md +0 -30
  154. package/skills/improve-codebase-architecture/DEEPENING.md +0 -5
  155. package/skills/improve-codebase-architecture/HTML-REPORT.md +0 -123
  156. package/skills/improve-codebase-architecture/INTERFACE-DESIGN.md +0 -5
  157. package/skills/improve-codebase-architecture/LANGUAGE.md +0 -5
  158. package/skills/improve-codebase-architecture/SKILL.md +0 -60
  159. package/skills/jhste-architecture-review/SKILL.md +0 -35
  160. package/skills/jhste-architecture-review/references/architecture-review.md +0 -54
  161. package/skills/jhste-code-quality/SKILL.md +0 -53
  162. package/skills/jhste-code-quality/references/code-quality.md +0 -58
  163. package/skills/jhste-crawler-automation/SKILL.md +0 -24
  164. package/skills/jhste-crawler-automation/references/crawler-automation.md +0 -11
  165. package/skills/jhste-db-api-boundary/SKILL.md +0 -31
  166. package/skills/jhste-db-api-boundary/references/db-api-boundary.md +0 -21
  167. package/skills/jhste-engineering-groundwork/SKILL.md +0 -42
  168. package/skills/jhste-engineering-groundwork/references/structure-templates.md +0 -41
  169. package/skills/jhste-long-running-work-loop/SKILL.md +0 -55
  170. package/skills/jhste-red-team-review/SKILL.md +0 -51
  171. package/skills/jhste-red-team-review/references/red-team-review.md +0 -75
  172. package/skills/prototype/LOGIC.md +0 -79
  173. package/skills/prototype/SKILL.md +0 -40
  174. package/skills/prototype/UI.md +0 -112
  175. package/skills/setup/SKILL.md +0 -21
  176. package/skills/setup/references/conflict-policy.md +0 -11
  177. package/skills/setup/references/setup-flow.md +0 -18
  178. package/skills/to-issues/SKILL.md +0 -88
  179. package/skills/to-prd/SKILL.md +0 -86
  180. package/skills/triage/AGENT-BRIEF.md +0 -207
  181. package/skills/triage/OUT-OF-SCOPE.md +0 -105
  182. package/skills/triage/SKILL.md +0 -126
  183. package/skills/writing-great-skills/GLOSSARY.md +0 -195
  184. package/skills/writing-great-skills/SKILL.md +0 -90
  185. package/vendor/matt-pocock/LICENSE +0 -21
  186. package/vendor/matt-pocock/NOTICE.md +0 -10
  187. package/vendor/matt-pocock/allowlist.json +0 -16
  188. package/vendor/matt-pocock/source-lock.json +0 -119
package/CHANGELOG.md CHANGED
@@ -1,122 +1,11 @@
1
1
  # Changelog
2
2
 
3
- ## 0.4.0 - 2026-07-01
3
+ ## Unreleased
4
4
 
5
- ### Added
6
- - Added `skills/_shared/` shared companion resources (`solid-lens`, `evidence-discipline`, `issue-candidate`, `scope-discipline`) as the single source for cross-cutting doctrine, cited by the jhste skills instead of restating it per skill.
7
- - Added a first-class shared-resource install concept: directories under `skills/` starting with `_` are not skills (excluded from listing, selection, and missing-skill checks) but are copied alongside skills so installed `../_shared/...` references never dangle.
8
- - Added `jhste-skills global` — advisory-only, user-level setup for Codex, Claude Code, and OpenCode that installs skills to `~/.jhste/skills` and writes marker-managed bridges into `~/.claude/CLAUDE.md`, `~/.codex/AGENTS.md`, and `~/.config/opencode/AGENTS.md`, with no git hooks or per-repo files; `--uninstall` reverses it.
9
- - Added `ask-jhste`, a user-invoked router for choosing the right jhste skill/workflow without adding always-on model context.
10
- - Added OpenCode support to global setup via `~/.config/opencode/AGENTS.md`.
11
- - Added a safe global-only npm postinstall refresh: after a user has opted into `jhste-skills global`, later `npm update -g jhste-skills` refreshes managed global skill copies and existing managed global bridges without creating a new setup.
5
+ ## 0.5.0 - 2026-07-02
12
6
 
13
7
  ### Changed
14
- - Trimmed jhste skill descriptions and SKILL bodies for lower operating-context cost while preserving behavior; SKILL files now own the decision procedure and cite `_shared` doctrine, and reference files are examples/lookup only.
15
- - Reduced `docs-check` to load-bearing behavior anchors (pinned once at their source) instead of exact prose/section titles; de-duplicated the triplicated issue-candidate pin to the shared doctrine.
16
- - Deduplicated the `## Workflow` section in `AGENTS.md` against the managed bridge block.
17
- - Extracted shared `removeManagedSkills`/manifest loading into `install-actions/skills.mjs` for reuse by `uninstall` and `global`.
18
- - Made `grill-me` a user-invoked alias for `grilling` to reduce duplicate invocation surface while preserving the personal pressure-test entrypoint.
19
- - Made `global` skip bridge writes when skill installation is blocked, and preflight `_shared` unmanaged conflicts before copying selected skills.
20
- - Synced README translations (ko/zh/ja) with global setup, `ask-jhste`, and `_shared` companion-resource docs.
21
- - Hardened `global` option validation, refused vendor-only global installs, reported invalid-manifest uninstall failures, and rejected unsafe manifest entry names before managed skill removal.
22
-
23
- ### Validation
24
- - `npm test` passed (12 stages, including new `_shared` install integrity and `global` command smoke coverage).
25
-
26
- ## 0.3.7 - 2026-06-30
27
-
28
- ### Added
29
- - Added `implement`, a jhste-compatible implementation workflow skill for scoped PRD/issue/spec work.
30
- - Added `writing-great-skills`, replacing the legacy `write-a-skill` skill with upstream skill-writing guidance.
31
-
32
- ### Changed
33
- - Refreshed Matt Pocock vendored workflow skills against upstream `43ea088`, excluding `tdd` and `resolving-merge-conflicts`.
34
- - Updated `triage` to cover external PRs as a triage surface, including PR diff verification and PR-specific agent briefs.
35
- - Slimmed duplicated architecture/grilling docs by routing shared vocabulary through `codebase-design`, `grilling`, and `domain-modeling`.
36
- - Updated issue slicing to prefer prefactoring slices where they make later implementation easier and to represent human decisions as blockers rather than a separate HITL/AFK field.
37
- - Removed managed legacy `write-a-skill` installs during sync/update; `writing-great-skills` is the replacement skill going forward.
38
-
39
- ### Validation
40
- - `npm test` passed.
41
- - `jhste-skills guard --scope changed --format text --fail-on error` passed with 0 warnings/errors.
42
- - `git diff --check` passed.
43
- ## 0.3.6 - 2026-06-28
44
-
45
- ### Changed
46
- - Clarified that `jhste-long-running-work-loop` is triggered by state-loss risk rather than elapsed time alone, including same-day external wait states.
47
- - Updated README skill summaries to describe durable state preservation instead of implying only long-duration work.
48
-
49
- ### Validation
50
- - `npm test` passed.
51
- - `jhste-skills guard --scope changed --format text --fail-on error` passed with 0 warnings/errors.
52
- - `git diff --check` passed.
53
- - `npm pack --dry-run` completed for `jhste-skills@0.3.6`.
54
-
55
- ## 0.3.5 - 2026-06-28
56
-
57
- ### Added
58
- - Added `jhste-long-running-work-loop`, a narrow orchestration skill for multi-session and long-running work that preserves goals, phases, approval boundaries, resume points, and durable-state routing without replacing code-quality, PRD, issue, triage, or handoff workflows.
59
-
60
- ### Changed
61
- - Updated smoke-test expected skill counts now that the bundled/core skill set includes the new long-running work loop skill.
62
-
63
- ### Validation
64
- - `npm test` passed.
65
- - `jhste-skills guard --scope changed --format text --fail-on error` passed with 0 warnings/errors.
66
-
67
- ## 0.3.4 - 2026-06-26
68
-
69
- ### Changed
70
- - Shifted groundwork and red-team review guidance away from fixed checklist axes and toward context-based failure-mode review of the changed execution path.
71
- - Tightened DB/API and code-quality skill guidance around caller-appropriate response shapes, storage-backed invariants, authorization/data-isolation paths, and understandable failure behavior without turning those examples into a mandatory checklist.
72
- - Clarified red-team review versus red-team questioning/interrogation triggers while preserving the red-team wording and intent.
73
- - Clarified architecture, PRD, issue-slicing, and triage skill trigger boundaries to reduce accidental over-triggering.
74
-
75
- ### Added
76
- - Added `sync`/`update --skills-only` to refresh installed skill files without touching repository profiles, bridge blocks, hooks, or deep-scan outputs.
77
-
78
- ## 0.3.3 - 2026-06-26
79
-
80
- ### Removed
81
- - Removed the global npm `postinstall` auto-sync. Updating the npm package no longer requires install-script approval or a persistent user-level `allow-scripts` npm config; run `jhste-skills update --yes --skip-hooks` explicitly when you want to refresh managed local skill copies.
82
-
83
- ## 0.3.2 - 2026-06-26
84
-
85
- ### Added
86
- - Added a safe global postinstall sync for existing manifest-managed `~/.jhste/skills` so `npm update -g jhste-skills` refreshes local agent skill copies without touching repositories, hooks, or bridge files.
87
-
88
- ## 0.3.1 - 2026-06-26
89
-
90
- ### Changed
91
- - Strengthened completion review around current proof, consumer-path and fresh-client verification, skipped checks, checks not run, and residual risk.
92
- - Added final behavior predicates to pre-change engineering groundwork.
93
- - Clarified cleanup/search-replace safety by separating editable product paths from protected evidence/history-like surfaces.
94
- - Kept SOLID-informed coding discipline while emphasizing concrete failure modes over automatic abstraction.
95
- - Clarified that `grilling` and `grill-me` are read-only by default.
96
- - Made architecture improvement Markdown-first, with HTML visual reports optional when requested or materially useful.
97
-
98
- ## 0.3.0 - 2026-06-24
99
-
100
- ### Added
101
- - Added repo-local agent autonomy and standing approval guidance for routine reversible work, tracker/doc workflows, prototypes, handoffs, and bounded review follow-up.
102
- - Added shared generated-profile detection with legacy generated profile support, including legacy profiles that still contain `guard.exit_codes`.
103
- - Added `--allow-profile-overwrite` for explicit modified profile replacement when used with `--force`.
104
- - Added smoke and fixture coverage for profile overwrite safety, legacy generated profiles, deep-scan validation, baseline path handling, legacy guard exit-code no-op handling, and managed skill rename migration.
105
-
106
- ### Changed
107
- - Renamed `jhste-engineering-judgment` to `jhste-engineering-groundwork`; managed `sync`/`update` migrate the old managed skill name automatically.
108
- - Replaced general user-facing “seam” language with “boundary” while preserving stable rule/profile ids such as `extension_seam_advisory` for compatibility.
109
- - Updated skill descriptions and bodies for grilling, PRD/issues, prototype, handoff, triage, domain modeling, codebase design, architecture review, code quality, groundwork, and red-team review triggers/side-effect policy.
110
- - Refactored install/connect preset planning to table-driven plan factories so the previous OCP advisory warning is no longer emitted.
111
-
112
- ### Fixed
113
- - `install --force` no longer overwrites modified/custom `.jhste/profile.yaml` unless `--allow-profile-overwrite` is also supplied.
114
- - `connect`, `sync`, and `update` now share the same profile overwrite safety policy.
115
- - New generated/example profiles no longer advertise unsupported `guard.exit_codes`; existing profile `guard.exit_codes` blocks are accepted as legacy no-op configuration.
116
- - `deep-scan` now validates `.jhste/profile.yaml` and exits with config failure before writing reports when the profile is invalid.
117
- - `baseline` now validates profile configuration and shows/uses the effective baseline path from CLI args, profile, or the default consistently.
118
-
119
- ### Validation
120
- - `npm test` passed.
121
- - `jhste-skills guard --scope changed --format text --fail-on error` passed with 0 warnings/errors.
122
- - `git diff --check` passed.
8
+ - Reworked the package into a single personal `jhste-coding` skill.
9
+ - Removed bundled Matt Pocock workflow skills; users can install `mattpocock/skills` separately.
10
+ - Removed jhste workflow/review/guard/setup skills and shared review doctrine from the model-facing package.
11
+ - Simplified docs, package files, and validation around the one-skill structure.
package/README.en.md ADDED
@@ -0,0 +1,42 @@
1
+ # jhste-skills
2
+
3
+ [한국어](README.md) | ENG
4
+
5
+ A tiny personal coding-discipline skill.
6
+
7
+ This repository provides one skill:
8
+
9
+ - `jhste-coding`: a lightweight SOLID-first coding discipline for repository code edits.
10
+
11
+ It does not vendor workflow skills. Use `mattpocock/skills` separately for broader planning, issue, PRD, debugging, architecture, or review workflows.
12
+
13
+ ## Install from npm
14
+
15
+ This package does not provide a CLI. The npm package is a small distribution bundle for the skill file.
16
+
17
+ ```sh
18
+ npm install -g jhste-skills
19
+ mkdir -p ~/.codex/skills
20
+ cp -R "$(npm root -g)/jhste-skills/skills/jhste-coding" ~/.codex/skills/
21
+ ```
22
+
23
+ If your agent uses a different skills directory, copy `skills/jhste-coding/` there instead.
24
+
25
+ ## Install from the repository
26
+
27
+ ```sh
28
+ mkdir -p ~/.codex/skills
29
+ cp -R skills/jhste-coding ~/.codex/skills/
30
+ ```
31
+
32
+ ## SOLID-first discipline
33
+
34
+ `jhste-coding` keeps code changes small and practical, with SOLID as the main lens:
35
+
36
+ - **Single Responsibility:** keep each changed unit centered on one clear job.
37
+ - **Open/Closed:** add extension seams only when real variation would otherwise keep changing the same core logic.
38
+ - **Liskov Substitution:** preserve caller-facing expectations such as return shape, nullability, errors, and side effects.
39
+ - **Interface Segregation:** depend on the smallest useful contract.
40
+ - **Dependency Inversion:** keep business rules separate from concrete side effects when it improves clarity.
41
+
42
+ The skill is for active coding discipline, not broader process automation or review pipelines.
package/README.md CHANGED
@@ -1,293 +1,42 @@
1
1
  # jhste-skills
2
2
 
3
- Languages: [English](README.md) · [한국어](README.ko.md) · [中文](README.zh.md) · [日本語](README.ja.md)
3
+ 한국어 | [ENG](README.en.md)
4
4
 
5
- An installable working-rules kit that helps AI coding agents consistently follow your engineering standards.
5
+ 작은 개인용 코딩 규율 스킬입니다.
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, and completion reports should separate current proof, checks not run, and residual risk.
7
+ 이 저장소는 하나의 스킬만 제공합니다.
8
8
 
9
- ## What SOLID means here
9
+ - `jhste-coding`: 저장소 코드 수정 중 적용하는 가벼운 SOLID-first 코딩 규율
10
10
 
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.
11
+ 이 저장소는 workflow 스킬을 vendoring하지 않습니다. 더 넓은 계획, 이슈, PRD, 디버깅, 아키텍처, 리뷰 workflow에는 `mattpocock/skills`를 별도로 사용하세요.
12
12
 
13
- - **S — Single Responsibility:** each changed function, module, or class should have one main job and one main reason to change.
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.
15
- - **L — Liskov Substitution:** implementations should not weaken caller expectations for return shape, nullability, errors, side effects, or documented behavior.
16
- - **I — Interface Segregation:** callers should not depend on broad config, interface, or props objects when they only need a small, stable slice.
17
- - **D — Dependency Inversion:** high-level policy should not be tightly coupled to concrete DB, API, browser, filesystem, email, payment, or queue effects unless that boundary is intentional and visible.
13
+ ## npm으로 설치
18
14
 
19
- This tool does **not** take over your project. Repo-local `AGENTS.md`, `CLAUDE.md`, and docs remain authoritative. The default setup is advisory, marker-managed, and designed to be low-risk to try.
15
+ 이 패키지는 CLI를 제공하지 않습니다. npm 패키지는 스킬 파일을 배포하기 위한 작은 번들입니다.
20
16
 
21
- Skills are designed to be used automatically when the situation calls for them. For example, when an agent edits API code, it is guided to use the API/database boundary skill; before completion, it is guided to use the red-team review skill. You can also call a skill directly, for example: `use jhste-engineering-groundwork to review this change premise`, or `run jhste-red-team-review on this diff`.
22
-
23
- ## Why install this?
24
-
25
- AI coding agents are fast, but they fail in predictable ways:
26
-
27
- - They silently accept unclear requirements or incorrect premises.
28
- - They expand the scope while trying to be helpful.
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.
31
- - They hide failures or produce unsafe logs.
32
- - They say “done” before the changed code has been checked.
33
- - They forget repo-specific rules when you switch machines or repositories.
34
-
35
- `jhste-skills` gives agents a repeatable loop for reducing those failures:
36
-
37
- ```text
38
- Before a non-trivial code change:
39
- check the goal, premise, ownership boundary, data contract, failure path, final behavior predicates, and SOLID-informed review lens
40
- identify the failure modes that matter for the changed execution path instead of filling out a fixed checklist
41
-
42
- While editing:
43
- treat repo-local instructions as the authority
44
-
45
- After changing code:
46
- run a fast changed-file guard when available
47
-
48
- Before saying “done”:
49
- run a read-only red-team code review and prefer actual consumer-path proof when feasible
50
-
51
- If warnings appear:
52
- attempt a bounded fix, re-check, and stop instead of looping forever
53
- ```
54
-
55
- 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.
56
-
57
- ## Who should install this?
58
-
59
- Install `jhste-skills` if you:
60
-
61
- - use Codex, Claude Code, or another coding agent across multiple repositories;
62
- - want agents to verify assumptions before non-trivial code changes;
63
- - want existing repo docs to remain the source of authority;
64
- - want lightweight advisory checks before commit or before declaring work complete;
65
- - care about SOLID-informed coding discipline, API/database boundaries, safe logging, input validation, cleanup safety, side effects, and automation reliability;
66
- - want to restore the same AI coding workflow across machines and repositories.
67
-
68
- 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.
69
-
70
- ## Quick start
71
-
72
- ```bash
73
- npx jhste-skills install
74
- ```
75
-
76
- Or install the CLI globally with npm and use it from any repository:
77
-
78
- ```bash
17
+ ```sh
79
18
  npm install -g jhste-skills
80
- jhste-skills install
81
- ```
82
-
83
- Use `npx` when you want a one-off run without a global install. Use `npm install -g` when you want `jhste-skills` available as a normal shell command.
84
-
85
- ### Global setup (Codex + Claude Code + OpenCode, advisory-only)
86
-
87
- If you want the skills available in every repository without per-repo files or git hooks, set up once at the user level:
88
-
89
- ```bash
90
- npm install -g jhste-skills
91
- jhste-skills global
92
- ```
93
-
94
- This copies the skills (and shared companion resources) to `~/.jhste/skills` and writes a marker-managed bridge block into each agent's global instruction file (`~/.claude/CLAUDE.md`, `~/.codex/AGENTS.md`, `~/.config/opencode/AGENTS.md`), creating them if needed. No git hooks and no per-repo files are written; guard stays advisory (`jhste-skills guard --scope changed`). Choose agents with `--agents codex,claude,opencode`, and remove everything with `jhste-skills global --uninstall`.
95
-
96
- After this one-time global setup, later `npm update -g jhste-skills` runs a safe global-only refresh of the managed skill copies and existing managed global bridge blocks. Re-run `jhste-skills global` when you want to change agents or options.
97
-
98
- The default (per-repo) install uses Normal mode.
99
-
100
- - Installs all bundled skills: jhste core skills + vendored workflow skills.
101
- - Creates `.jhste/profile.yaml` when missing; `--force` refreshes generated/managed profiles, while modified profiles require `--force --allow-profile-overwrite`.
102
- - Adds or refreshes a marker-managed bridge block in `AGENTS.md` or `CLAUDE.md` when project guidance is enabled.
103
- - Installs an advisory pre-commit hook when safe.
104
- - Does not modify CI, target `package.json`, lockfiles, or source code.
105
-
106
- To connect another repository:
107
-
108
- ```bash
109
- cd /path/to/another-repo
110
- jhste-skills connect
111
- ```
112
-
113
- To install only the jhste core guardrail skills:
114
-
115
- ```bash
116
- npx jhste-skills install --skill-set core
117
- ```
118
-
119
- To run the changed-file guard manually:
120
-
121
- ```bash
122
- jhste-skills guard --scope changed --format text --fail-on error
19
+ mkdir -p ~/.codex/skills
20
+ cp -R "$(npm root -g)/jhste-skills/skills/jhste-coding" ~/.codex/skills/
123
21
  ```
124
22
 
125
- To refresh only the installed skill files after pulling this repository, without touching a project bridge, profile, hook, or scan output:
23
+ 사용하는 에이전트의 skills 디렉터리가 다르다면 `skills/jhste-coding/`을 그 위치로 복사하세요.
126
24
 
127
- ```bash
128
- jhste-skills update --yes --skills-only
129
- ```
130
-
131
- To run an optional repo-wide advisory scan:
132
-
133
- ```bash
134
- jhste-skills deep-scan
135
- ```
136
-
137
- To remove managed outputs:
25
+ ## 저장소에서 설치
138
26
 
139
- ```bash
140
- jhste-skills uninstall --yes --repo /path/to/repo
27
+ ```sh
28
+ mkdir -p ~/.codex/skills
29
+ cp -R skills/jhste-coding ~/.codex/skills/
141
30
  ```
142
31
 
143
- `uninstall` removes managed hooks, marker-managed bridge blocks, and manifest-managed skill directories. It does not touch non-managed files. `.jhste/profile.yaml` is removed only when it still matches the current or legacy generated shape; use `--force-profile` only after reviewing a modified profile.
144
-
145
- ## Install modes
146
-
147
- ```text
148
- Minimal - installs only jhste core skills; no project files or hooks
149
- Normal - recommended default; all bundled skills + project profile/bridge + advisory pre-commit hook
150
- Full - all bundled skills + profile/bridge + advisory pre-commit/pre-push hooks + deep scan
151
- Custom - asks effect-oriented questions so you can choose the setup
152
- ```
153
-
154
- `Full` still follows the safety contract. It does not overwrite non-managed hooks, source files, CI, `package.json`, or lockfiles, and it does not enable strict mode. Interactive Full mode only asks how automatic checks should behave: warning-only, block at commit time, or block at commit and push time. `--yes` uses warning-only unless `--hooks blocking` is explicit.
155
-
156
- ## Safety contract
157
-
158
- `jhste-skills` is safe-by-default:
159
-
160
- - repo-local `AGENTS.md`, `CLAUDE.md`, and docs remain authoritative;
161
- - explicit user instructions set task scope, but do not silently override verified safety, privacy, data-loss, or repo-architecture constraints;
162
- - default install does not modify CI;
163
- - default install does not modify target `package.json` or lockfiles;
164
- - default install does not automatically refactor source code;
165
- - managed hooks are advisory by default;
166
- - strict mode requires explicit opt-in;
167
- - bridge blocks use `<!-- jhste-skills:start -->` / `<!-- jhste-skills:end -->` markers;
168
- - guard output is review evidence, not proof by itself;
169
- - completion review should prefer actual consumer-path proof when feasible and separate current proof, skipped checks, checks not run, and residual risk;
170
- - cleanup/search-replace work should classify editable paths separately from protected evidence/history-like paths before writing;
171
- - guard runtime/config failures must be reported separately from rule violations;
172
- - install/update/uninstall flows leave non-managed hooks, bridge text, and skill directories untouched.
173
-
174
- ## Core jhste skills
175
-
176
- These are the jhste-authored guardrail skills. They are installed by default as part of the bundled skill set. Use `--skill-set core` to install only these core skills.
177
-
178
- | Skill | Use it when | What it helps reduce |
179
- |---|---|---|
180
- | [`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 |
181
- | [`ask-jhste`](skills/ask-jhste/SKILL.md)<br>A user-invoked router for choosing the right jhste skill or workflow | You are not sure which jhste skill or workflow to use next | Wrong workflow selection, unnecessary always-on context, accidental side effects from routing |
182
- | [`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 |
183
- | [`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 |
184
- | [`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 |
185
- | [`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 |
186
- | [`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 |
187
- | [`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 |
188
- | [`jhste-long-running-work-loop`](skills/jhste-long-running-work-loop/SKILL.md)<br>A narrow orchestration skill for preserving work state across sessions, wait states, and durable decisions | Losing state could make work wrong, duplicated, unsafe, or hard to resume: multi-session work, recurring reviews, same-day or multi-day external wait states, multiple repos, PRD→issue→implementation→review flows, or durable decisions | Lost context, stale scratchpads, unclear approval boundaries, unsafe resume points |
189
-
190
- ## Bundled workflow skills
191
-
192
- Normal install also includes 14 workflow skills vendored from Matt Pocock's [`mattpocock/skills`](https://github.com/mattpocock/skills). These are useful for implementation, debugging, planning, architecture, issue workflows, prototyping, handoffs, and skill-writing guidance. Use `--skill-set core` if you do not want them installed.
193
-
194
- | Skill | Use it when |
195
- |---|---|
196
- | [`diagnosing-bugs`](skills/diagnosing-bugs/SKILL.md)<br>A debugging skill that narrows root cause around a fast pass/fail feedback loop | You need a reproduce → minimise → hypothesise → instrument → fix loop |
197
- | [`grill-me`](skills/grill-me/SKILL.md)<br>A direct personal grilling skill for aggressively questioning your own plan or reasoning | You ask to be grilled, challenged, pressure-tested, or questioned aggressively |
198
- | [`grill-with-docs`](skills/grill-with-docs/SKILL.md)<br>A grilling skill that records resulting domain terms and decisions in CONTEXT.md or ADRs | You want stress-testing plus documentation, ADR, glossary, or CONTEXT updates |
199
- | [`grilling`](skills/grilling/SKILL.md)<br>A general read-only grilling skill for pressure-testing plans and designs before implementation | You ask to challenge, pressure-test, red-team, grill, or find gaps without docs updates |
200
- | [`domain-modeling`](skills/domain-modeling/SKILL.md)<br>A skill for sharpening project terminology, domain models, and architectural decisions | Refining domain terms, ubiquitous language, or architectural decisions |
201
- | [`codebase-design`](skills/codebase-design/SKILL.md)<br>A codebase design skill for deep modules, small interfaces, and clear boundaries | You need better module interface, boundary, and testability vocabulary |
202
- | [`improve-codebase-architecture`](skills/improve-codebase-architecture/SKILL.md)<br>An architecture skill that finds shallow modules and coupling that can be improved into deeper modules | You want to find deepening opportunities and reduce architectural friction |
203
- | [`prototype`](skills/prototype/SKILL.md)<br>A prototyping skill for validating logic/state models or UI directions with throwaway local code | You ask to prototype, mock up, try designs, sanity-check behavior, or “let me play with it” |
204
- | [`to-prd`](skills/to-prd/SKILL.md)<br>A PRD-writing skill that drafts requirements and makes them ready for the normal project workflow | You want a PRD; tracker publication happens only when directly requested or repo-approved |
205
- | [`to-issues`](skills/to-issues/SKILL.md)<br>A skill that breaks a plan into issue-ready vertical slices | You want implementation tickets or work breakdown; tracker creation follows direct request or repo approval |
206
- | [`triage`](skills/triage/SKILL.md)<br>An issue triage skill that classifies issues and plans next actions through a structured workflow | You want issue classification, next-action planning, or repo-approved triage writes |
207
- | [`handoff`](skills/handoff/SKILL.md)<br>A handoff skill that compresses context so the next agent or session can continue | You ask for a handoff, session summary, continuation brief, or next-agent context |
208
- | [`implement`](skills/implement/SKILL.md)<br>An implementation workflow skill for scoped PRD/issue/spec work using jhste groundwork, verification, guard, and review | You want an agent to implement focused work from a PRD, issue, spec, or handoff |
209
- | [`writing-great-skills`](skills/writing-great-skills/SKILL.md)<br>A skill-writing reference for predictable invocation, progressive disclosure, context load control, and pruning | You want to create, replace, or refine an agent skill |
210
-
211
- ## Attribution: Matt Pocock skills
212
-
213
- This repository vendors the 14 skills listed above from Matt Pocock's [`mattpocock/skills`](https://github.com/mattpocock/skills).
214
-
215
- Those skills are vendored under the upstream MIT License. This repository preserves the required copyright/license notice and records the imported sources.
216
-
217
- - Upstream: [`mattpocock/skills`](https://github.com/mattpocock/skills)
218
- - License: MIT
219
- - Attribution: [`vendor/matt-pocock/NOTICE.md`](vendor/matt-pocock/NOTICE.md)
220
- - Upstream license copy: [`vendor/matt-pocock/LICENSE`](vendor/matt-pocock/LICENSE)
221
- - Allowlist: [`vendor/matt-pocock/allowlist.json`](vendor/matt-pocock/allowlist.json)
222
- - Source lock: [`vendor/matt-pocock/source-lock.json`](vendor/matt-pocock/source-lock.json)
223
-
224
- Do not add vendored skills outside the allowlist without separate review. When updating vendored copies, refresh the source lock and review the diff.
225
-
226
- ## CLI commands
227
-
228
- ```bash
229
- jhste-skills install
230
- jhste-skills connect
231
- jhste-skills guard
232
- jhste-skills deep-scan
233
- jhste-skills tune
234
- jhste-skills baseline
235
- jhste-skills sync
236
- jhste-skills update
237
- jhste-skills hooks
238
- jhste-skills uninstall
239
- ```
240
-
241
- See [`docs/CLI.md`](docs/CLI.md) for detailed command behavior.
242
-
243
- ## Recommended rollout
244
-
245
- 1. Run the default install and dogfood the advisory workflow first.
246
- 2. Keep advisory hooks at first. Use `--skip-hooks` if you do not want commit-time checks, and enable blocking mode only after reviewing noise and false positives.
247
- 3. Start with the default 300-line advisory limit. Use `--line-limit-mode blocking` only when the team is ready for warning-level hook enforcement.
248
- 4. During code changes, run `guard --scope changed --format text --fail-on error` manually.
249
- 5. Before non-trivial code changes, use `jhste-engineering-groundwork` to check scope, boundary, failure path, data contract, assumptions, and the SOLID-informed review lens for changed classes/modules/functions.
250
- 6. Before declaring non-trivial code work complete, use `jhste-red-team-review`. Skip docs-only, comment-only, formatting-only, and trivial rename-only changes.
251
- 7. Limit fix + re-review loops to two cycles, then report remaining risks instead of looping indefinitely.
252
- 8. Create a baseline only after reviewing existing debt. Treat the baseline as a known-issues ledger and use ratchet behavior to stop new debt, not to hide scanner failures.
253
-
254
- ## Repository layout
255
-
256
- ```text
257
- skills/ AI-readable skill guidance
258
- rules/ Stable rule metadata used by skills and scans
259
- packs/ Core, web, API, database, and crawler rule bundles
260
- adapters/ Codex, Claude, and generic adapter notes
261
- cli/ install, uninstall, deep-scan, guard, hooks, tune, and baseline commands
262
- vendor/matt-pocock/ Matt Pocock allowlist, source lock, license, and attribution
263
- examples/profile.yaml Default advisory profile example
264
- ```
265
-
266
- ## Verification
267
-
268
- ```bash
269
- npm test
270
- npm run public-safety:check
271
- npm run vendor:check
272
- npm run docs:check
273
- ```
274
-
275
- See [`docs/ACCEPTANCE_CHECK.md`](docs/ACCEPTANCE_CHECK.md) for release acceptance notes.
276
-
277
- ## Philosophy
278
-
279
- `jhste-skills` is not a tool for giving agents more authority. It is a tool for making fast agents more reliable.
280
-
281
- - Do not agree blindly.
282
- - Do not overwrite local project authority.
283
- - Keep changes scoped.
284
- - 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.
285
- - Make failures observable.
286
- - Treat automated guard output as evidence, not proof.
287
- - Run a red-team code review before calling non-trivial work complete.
32
+ ## SOLID-first 규율
288
33
 
289
- Fast agents need guardrails. `jhste-skills` gives them a repo-respecting engineering workflow.
34
+ `jhste-coding`은 작은 실제 코드 변경에 SOLID를 주된 렌즈로 적용합니다.
290
35
 
291
- Skills share cross-cutting doctrine (SOLID lens, evidence discipline, issue-candidate protocol, scope discipline) from `skills/_shared/`. Directories under `skills/` whose name starts with `_` are shared companion resources, not skills: they are excluded from skill listing, selection, and missing-skill checks, but are copied alongside the skills whenever any skill is installed so cross-skill `../_shared/...` references never dangle in the installed artifact.
36
+ - **단일 책임:** 변경한 단위가 하나의 분명한 일을 하도록 유지합니다.
37
+ - **개방/폐쇄:** 실제 변형이 반복해서 같은 핵심 로직을 바꾸게 만들 때만 확장 지점을 둡니다.
38
+ - **리스코프 치환:** 반환 형태, null 가능성, 오류, 부수 효과 같은 호출자 기대를 보존합니다.
39
+ - **인터페이스 분리:** 필요한 만큼의 작은 계약에 의존합니다.
40
+ - **의존성 역전:** 명확해질 때 비즈니스 규칙과 구체적인 부수 효과를 분리합니다.
292
41
 
293
- Installed skill directories are tracked with `.jhste-skills-manifest.json`. `--force` refreshes manifest-managed skill copies and generated/managed profiles; modified profiles need `--force --allow-profile-overwrite`; overwriting unmanaged differing skill directories still requires the separate `--allow-unmanaged-skill-overwrite` flag after review. `sync` and `update` can also adopt additional known jhste skills into an already managed skills directory so older mixed installs can be reconciled without a manual overwrite flag. Legacy managed renames are also reconciled during `sync` and `update`, so older managed installs that still have `diagnose` or `jhste-engineering-judgment` are migrated to `diagnosing-bugs` or `jhste-engineering-groundwork`. Managed copies of retired `write-a-skill` are removed rather than kept as a compatibility fallback.
42
+ 이 스킬은 코드 작성 중 쓰는 규율이며 더 넓은 프로세스 자동화나 리뷰 파이프라인이 아닙니다.
package/package.json CHANGED
@@ -1,53 +1,22 @@
1
1
  {
2
2
  "name": "jhste-skills",
3
- "version": "0.4.0",
4
- "description": "Installable engineering guardrails and workflow skills for AI coding agents.",
3
+ "version": "0.5.0",
4
+ "description": "A single lightweight SOLID-first coding discipline skill.",
5
5
  "type": "module",
6
6
  "license": "MIT",
7
7
  "repository": {
8
8
  "type": "git",
9
9
  "url": "git+https://github.com/jhste102lab/jhste-skills.git"
10
10
  },
11
- "bin": {
12
- "jhste-skills": "cli/index.mjs"
13
- },
14
11
  "files": [
15
- "adapters/",
16
- "cli/",
17
- "docs/ACCEPTANCE_CHECK.md",
18
- "docs/CLI.md",
19
- "docs/CONFLICT_RESOLUTION.md",
20
- "docs/PUBLIC_SAFETY.md",
21
- "docs/RULES.md",
22
- "docs/VENDORING.md",
23
- "examples/",
24
- "packs/",
25
- "rules/",
26
- "scripts/",
27
- "skills/",
28
- "vendor/",
12
+ "skills/jhste-coding/SKILL.md",
29
13
  "README.md",
30
- "README.ko.md",
31
- "README.zh.md",
32
- "README.ja.md",
14
+ "README.en.md",
33
15
  "CHANGELOG.md",
34
16
  "LICENSE"
35
17
  ],
36
18
  "scripts": {
37
- "test": "npm run syntax:check && npm run docs:check && npm run vendor:check && npm run public-safety:check && npm run public-safety-fixtures:test && npm run profile-fixtures:test && npm run guard-fixtures:test && npm run responsibility-budget-fixtures:test && npm run single-responsibility-fixtures:test && npm run solid-design-fixtures:test && npm run smoke:test && npm run release:gates",
38
- "postinstall": "node cli/postinstall-global-refresh.mjs",
39
- "syntax:check": "node scripts/syntax-check.mjs",
40
- "docs:check": "node scripts/docs-check.mjs",
41
- "vendor:check": "node scripts/vendor-check.mjs",
42
- "public-safety:check": "node scripts/public-safety-check.mjs",
43
- "public-safety-fixtures:test": "node scripts/public-safety-fixtures-test.mjs",
44
- "profile-fixtures:test": "node scripts/profile-fixtures-test.mjs",
45
- "guard-fixtures:test": "node scripts/guard-fixtures-test.mjs",
46
- "responsibility-budget-fixtures:test": "node scripts/responsibility-budget-fixtures-test.mjs",
47
- "single-responsibility-fixtures:test": "node scripts/single-responsibility-fixtures-test.mjs",
48
- "smoke:test": "node scripts/smoke-test.mjs",
49
- "release:gates": "node scripts/release-gates-test.mjs",
50
- "solid-design-fixtures:test": "node scripts/solid-design-fixtures-test.mjs"
19
+ "test": "node --input-type=module -e \"import fs from 'node:fs'; const exists = (p) => fs.existsSync(p); const pkg = JSON.parse(fs.readFileSync('package.json', 'utf8')); const skill = 'skills/jhste-coding/SKILL.md'; if (!exists(skill)) throw new Error('missing skill'); const text = fs.readFileSync(skill, 'utf8'); if (!/^---\\nname: jhste-coding\\ndescription: .+\\n---/m.test(text)) throw new Error('invalid skill frontmatter'); const dirs = fs.readdirSync('skills', { withFileTypes: true }).filter((d) => d.isDirectory()).map((d) => d.name); if (dirs.length !== 1 || dirs[0] !== 'jhste-coding') throw new Error('expected only jhste-coding skill'); for (const file of pkg.files) if (!exists(file)) throw new Error('package file does not exist: ' + file); for (const file of ['README.md', 'README.en.md']) { const body = fs.readFileSync(file, 'utf8'); if (!body.includes('jhste-coding')) throw new Error(file + ' does not describe jhste-coding'); for (const match of body.matchAll(/\\[[^\\]]+\\]\\(([^)]+)\\)/g)) { const href = match[1]; if (!/^(https?:|mailto:|#)/.test(href) && !exists(href.split('#')[0])) throw new Error(file + ' has broken link: ' + href); } }\""
51
20
  },
52
21
  "engines": {
53
22
  "node": ">=18"
@@ -0,0 +1,36 @@
1
+ ---
2
+ name: jhste-coding
3
+ description: Apply lightweight SOLID-first coding discipline while actively writing or editing repository code.
4
+ ---
5
+
6
+ # jhste-coding
7
+
8
+ Use this skill to write small, direct, readable code guided primarily by SOLID.
9
+
10
+ SOLID is the main discipline. The guardrails below keep the code practical.
11
+
12
+ ## Core rule
13
+
14
+ Prefer the smallest clear change that fits the requested problem and keeps the code SOLID-aligned.
15
+
16
+ Use SOLID for the current change; speculative architecture, broad refactors, and abstraction layers are outside this skill's purpose.
17
+
18
+ ## SOLID discipline
19
+
20
+ - **S — Single Responsibility:** keep each changed function, module, or class centered on one clear job. Choose names that make the job easy to see.
21
+ - **O — Open/Closed:** add an extension seam when real variation or repeated branching would otherwise keep changing the same core logic. Keep simple branches when they read better.
22
+ - **L — Liskov Substitution:** preserve caller-facing expectations: return shape, nullability, errors, side effects, timing assumptions, and documented behavior.
23
+ - **I — Interface Segregation:** depend on the smallest useful contract. Prefer narrow parameters over broad objects, global context, or large config bags when only a small slice is needed.
24
+ - **D — Dependency Inversion:** keep business rules separate from concrete side effects when that separation makes the code clearer. Make database, network, filesystem, browser, queue, email, payment, clock, environment, and secret boundaries easy to see.
25
+
26
+ ## Practical guardrails
27
+
28
+ - Interfaces, factories, base classes, dependency containers, and strategy layers fit best when they clarify a real boundary, remove real repeated change, or protect a caller contract.
29
+ - Validate external input where it enters the code path.
30
+ - Make uncertain, partial, and failed states visible rather than silently treating them as success.
31
+ - Keep secrets, tokens, credentials, cookies, authorization headers, sessions, and raw sensitive payloads out of logs and responses.
32
+ - When adding or changing tests, focus on observable behavior related to the change.
33
+
34
+ ## Final response
35
+
36
+ Briefly say what changed.