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.
- package/CHANGELOG.md +6 -117
- package/README.en.md +42 -0
- package/README.md +23 -274
- package/package.json +5 -36
- package/skills/jhste-coding/SKILL.md +36 -0
- package/README.ja.md +0 -288
- package/README.ko.md +0 -291
- package/README.zh.md +0 -288
- package/adapters/claude/README.md +0 -7
- package/adapters/codex/README.md +0 -29
- package/adapters/generic/README.md +0 -7
- package/cli/baseline.mjs +0 -81
- package/cli/connect.mjs +0 -84
- package/cli/deep-scan/analyze.mjs +0 -113
- package/cli/deep-scan/collect.mjs +0 -133
- package/cli/deep-scan/report.mjs +0 -205
- package/cli/deep-scan.mjs +0 -67
- package/cli/global.mjs +0 -169
- package/cli/guard/baseline.mjs +0 -64
- package/cli/guard/config.mjs +0 -48
- package/cli/guard/profile-commands.mjs +0 -87
- package/cli/guard/registry.mjs +0 -52
- package/cli/guard/reporting.mjs +0 -156
- package/cli/guard/scanners/code-health.mjs +0 -269
- package/cli/guard/scanners/data-boundary-locality.mjs +0 -125
- package/cli/guard/scanners/data-boundary.mjs +0 -237
- package/cli/guard/scanners/external-input.mjs +0 -74
- package/cli/guard/scanners/index.mjs +0 -139
- package/cli/guard/scanners/single-responsibility.mjs +0 -248
- package/cli/guard/scanners/solid-design.mjs +0 -98
- package/cli/guard/scanners/ui-runtime.mjs +0 -140
- package/cli/guard/scanners/utils.mjs +0 -167
- package/cli/guard/scope.mjs +0 -181
- package/cli/guard.mjs +0 -125
- package/cli/hook-utils.mjs +0 -127
- package/cli/hooks.mjs +0 -127
- package/cli/index.mjs +0 -36
- package/cli/install-actions/apply-plan.mjs +0 -44
- package/cli/install-actions/bridge-writer.mjs +0 -89
- package/cli/install-actions/output.mjs +0 -48
- package/cli/install-actions/preflight.mjs +0 -63
- package/cli/install-actions/profile-writer.mjs +0 -41
- package/cli/install-actions/skills.mjs +0 -294
- package/cli/install-actions.mjs +0 -4
- package/cli/install-flow/options.mjs +0 -240
- package/cli/install-flow/output.mjs +0 -106
- package/cli/install-flow/plan-helpers.mjs +0 -29
- package/cli/install-flow/plan.mjs +0 -192
- package/cli/install-flow/prompts.mjs +0 -210
- package/cli/install-flow.mjs +0 -16
- package/cli/install.mjs +0 -77
- package/cli/json-file.mjs +0 -39
- package/cli/postinstall-global-refresh.mjs +0 -57
- package/cli/profile/loader.mjs +0 -13
- package/cli/profile/parser.mjs +0 -229
- package/cli/profile/schema.mjs +0 -83
- package/cli/profile/settings.mjs +0 -45
- package/cli/profile/validator.mjs +0 -83
- package/cli/profile.mjs +0 -5
- package/cli/shared/args.mjs +0 -32
- package/cli/shared/files.mjs +0 -86
- package/cli/shared/generated-profile.mjs +0 -29
- package/cli/shared/git.mjs +0 -28
- package/cli/shared/paths.mjs +0 -27
- package/cli/shared/prompt.mjs +0 -32
- package/cli/shared/templates.mjs +0 -95
- package/cli/shared/time.mjs +0 -3
- package/cli/shared.mjs +0 -8
- package/cli/sync-core.mjs +0 -246
- package/cli/sync.mjs +0 -7
- package/cli/tune.mjs +0 -101
- package/cli/uninstall.mjs +0 -238
- package/cli/update.mjs +0 -7
- package/docs/ACCEPTANCE_CHECK.md +0 -73
- package/docs/CLI.md +0 -240
- package/docs/CONFLICT_RESOLUTION.md +0 -64
- package/docs/PUBLIC_SAFETY.md +0 -28
- package/docs/RULES.md +0 -109
- package/docs/VENDORING.md +0 -23
- package/examples/profile.yaml +0 -44
- package/packs/api.yaml +0 -13
- package/packs/core.yaml +0 -23
- package/packs/crawler.yaml +0 -8
- package/packs/database.yaml +0 -8
- package/packs/web.yaml +0 -10
- package/rules/core/api_contract_compatibility.yaml +0 -25
- package/rules/core/authz_data_isolation.yaml +0 -27
- package/rules/core/build_runtime_env_safety.yaml +0 -26
- package/rules/core/dependency_boundary_advisory.yaml +0 -27
- package/rules/core/extension_seam_advisory.yaml +0 -27
- package/rules/core/external_input_validation.yaml +0 -27
- package/rules/core/file_size_advisory.yaml +0 -28
- package/rules/core/interface_segregation_advisory.yaml +0 -25
- package/rules/core/no_secret_logging.yaml +0 -24
- package/rules/core/no_silent_failure.yaml +0 -30
- package/rules/core/null_state_safety.yaml +0 -25
- package/rules/core/performance_duplicate_fetch.yaml +0 -25
- package/rules/core/public_safe_error.yaml +0 -24
- package/rules/core/responsibility_budget.yaml +0 -47
- package/rules/core/side_effect_boundary.yaml +0 -24
- package/rules/core/single_responsibility_advisory.yaml +0 -35
- package/rules/core/substitutability_advisory.yaml +0 -25
- package/rules/core/workflow_security.yaml +0 -25
- package/rules/core/write_safety_idempotency.yaml +0 -25
- package/rules/crawler/crawler_producer_boundary.yaml +0 -24
- package/rules/database/db_row_validation.yaml +0 -24
- package/rules/database/sql_parameter_binding.yaml +0 -24
- package/rules/nextjs/thin_api_route.yaml +0 -24
- package/rules/python/broad_exception_advisory.yaml +0 -24
- package/rules/react/component_responsibility.yaml +0 -24
- package/rules/typescript/type_escape_advisory.yaml +0 -24
- package/scripts/docs-check-data.mjs +0 -86
- package/scripts/docs-check.mjs +0 -261
- package/scripts/guard-fixtures/helpers.mjs +0 -58
- package/scripts/guard-fixtures-test.mjs +0 -273
- package/scripts/profile-fixtures-test.mjs +0 -170
- package/scripts/public-safety-check.mjs +0 -88
- package/scripts/public-safety-fixtures-test.mjs +0 -60
- package/scripts/release-gates-test.mjs +0 -58
- package/scripts/responsibility-budget-fixtures-test.mjs +0 -47
- package/scripts/single-responsibility-fixtures-test.mjs +0 -103
- package/scripts/smoke/connect-scenarios.mjs +0 -47
- package/scripts/smoke/fixture.mjs +0 -49
- package/scripts/smoke/global-scenarios.mjs +0 -127
- package/scripts/smoke/guard-and-hook-scenarios.mjs +0 -214
- package/scripts/smoke/helpers.mjs +0 -124
- package/scripts/smoke/install-scenarios.mjs +0 -289
- package/scripts/smoke/mode-scenarios.mjs +0 -76
- package/scripts/smoke/profile-overwrite-scenarios.mjs +0 -136
- package/scripts/smoke-test.mjs +0 -19
- package/scripts/solid-design-fixtures-test.mjs +0 -102
- package/scripts/syntax-check.mjs +0 -37
- package/scripts/vendor-check.mjs +0 -87
- package/skills/_shared/evidence-discipline.md +0 -30
- package/skills/_shared/issue-candidate.md +0 -23
- package/skills/_shared/scope-discipline.md +0 -13
- package/skills/_shared/solid-lens.md +0 -38
- package/skills/ask-jhste/SKILL.md +0 -37
- package/skills/codebase-design/DEEPENING.md +0 -37
- package/skills/codebase-design/DESIGN-IT-TWICE.md +0 -44
- package/skills/codebase-design/SKILL.md +0 -126
- package/skills/diagnosing-bugs/SKILL.md +0 -142
- package/skills/diagnosing-bugs/scripts/hitl-loop.template.sh +0 -41
- package/skills/domain-modeling/ADR-FORMAT.md +0 -47
- package/skills/domain-modeling/CONTEXT-FORMAT.md +0 -60
- package/skills/domain-modeling/SKILL.md +0 -86
- package/skills/grill-me/SKILL.md +0 -17
- package/skills/grill-with-docs/ADR-FORMAT.md +0 -5
- package/skills/grill-with-docs/CONTEXT-FORMAT.md +0 -5
- package/skills/grill-with-docs/SKILL.md +0 -26
- package/skills/grilling/SKILL.md +0 -19
- package/skills/handoff/SKILL.md +0 -25
- package/skills/implement/SKILL.md +0 -30
- package/skills/improve-codebase-architecture/DEEPENING.md +0 -5
- package/skills/improve-codebase-architecture/HTML-REPORT.md +0 -123
- package/skills/improve-codebase-architecture/INTERFACE-DESIGN.md +0 -5
- package/skills/improve-codebase-architecture/LANGUAGE.md +0 -5
- package/skills/improve-codebase-architecture/SKILL.md +0 -60
- package/skills/jhste-architecture-review/SKILL.md +0 -35
- package/skills/jhste-architecture-review/references/architecture-review.md +0 -54
- package/skills/jhste-code-quality/SKILL.md +0 -53
- package/skills/jhste-code-quality/references/code-quality.md +0 -58
- package/skills/jhste-crawler-automation/SKILL.md +0 -24
- package/skills/jhste-crawler-automation/references/crawler-automation.md +0 -11
- package/skills/jhste-db-api-boundary/SKILL.md +0 -31
- package/skills/jhste-db-api-boundary/references/db-api-boundary.md +0 -21
- package/skills/jhste-engineering-groundwork/SKILL.md +0 -42
- package/skills/jhste-engineering-groundwork/references/structure-templates.md +0 -41
- package/skills/jhste-long-running-work-loop/SKILL.md +0 -55
- package/skills/jhste-red-team-review/SKILL.md +0 -51
- package/skills/jhste-red-team-review/references/red-team-review.md +0 -75
- package/skills/prototype/LOGIC.md +0 -79
- package/skills/prototype/SKILL.md +0 -40
- package/skills/prototype/UI.md +0 -112
- package/skills/setup/SKILL.md +0 -21
- package/skills/setup/references/conflict-policy.md +0 -11
- package/skills/setup/references/setup-flow.md +0 -18
- package/skills/to-issues/SKILL.md +0 -88
- package/skills/to-prd/SKILL.md +0 -86
- package/skills/triage/AGENT-BRIEF.md +0 -207
- package/skills/triage/OUT-OF-SCOPE.md +0 -105
- package/skills/triage/SKILL.md +0 -126
- package/skills/writing-great-skills/GLOSSARY.md +0 -195
- package/skills/writing-great-skills/SKILL.md +0 -90
- package/vendor/matt-pocock/LICENSE +0 -21
- package/vendor/matt-pocock/NOTICE.md +0 -10
- package/vendor/matt-pocock/allowlist.json +0 -16
- package/vendor/matt-pocock/source-lock.json +0 -119
package/CHANGELOG.md
CHANGED
|
@@ -1,122 +1,11 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
-
##
|
|
3
|
+
## Unreleased
|
|
4
4
|
|
|
5
|
-
|
|
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
|
-
-
|
|
15
|
-
-
|
|
16
|
-
-
|
|
17
|
-
-
|
|
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
|
-
|
|
3
|
+
한국어 | [ENG](README.en.md)
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
작은 개인용 코딩 규율 스킬입니다.
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
이 저장소는 하나의 스킬만 제공합니다.
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
- `jhste-coding`: 저장소 코드 수정 중 적용하는 가벼운 SOLID-first 코딩 규율
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
이 저장소는 workflow 스킬을 vendoring하지 않습니다. 더 넓은 계획, 이슈, PRD, 디버깅, 아키텍처, 리뷰 workflow에는 `mattpocock/skills`를 별도로 사용하세요.
|
|
12
12
|
|
|
13
|
-
|
|
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
|
-
|
|
15
|
+
이 패키지는 CLI를 제공하지 않습니다. npm 패키지는 스킬 파일을 배포하기 위한 작은 번들입니다.
|
|
20
16
|
|
|
21
|
-
|
|
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
|
-
|
|
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
|
-
|
|
23
|
+
사용하는 에이전트의 skills 디렉터리가 다르다면 `skills/jhste-coding/`을 그 위치로 복사하세요.
|
|
126
24
|
|
|
127
|
-
|
|
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
|
-
```
|
|
140
|
-
|
|
27
|
+
```sh
|
|
28
|
+
mkdir -p ~/.codex/skills
|
|
29
|
+
cp -R skills/jhste-coding ~/.codex/skills/
|
|
141
30
|
```
|
|
142
31
|
|
|
143
|
-
|
|
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
|
-
|
|
34
|
+
`jhste-coding`은 작은 실제 코드 변경에 SOLID를 주된 렌즈로 적용합니다.
|
|
290
35
|
|
|
291
|
-
|
|
36
|
+
- **단일 책임:** 변경한 단위가 하나의 분명한 일을 하도록 유지합니다.
|
|
37
|
+
- **개방/폐쇄:** 실제 변형이 반복해서 같은 핵심 로직을 바꾸게 만들 때만 확장 지점을 둡니다.
|
|
38
|
+
- **리스코프 치환:** 반환 형태, null 가능성, 오류, 부수 효과 같은 호출자 기대를 보존합니다.
|
|
39
|
+
- **인터페이스 분리:** 필요한 만큼의 작은 계약에 의존합니다.
|
|
40
|
+
- **의존성 역전:** 명확해질 때 비즈니스 규칙과 구체적인 부수 효과를 분리합니다.
|
|
292
41
|
|
|
293
|
-
|
|
42
|
+
이 스킬은 코드 작성 중 쓰는 규율이며 더 넓은 프로세스 자동화나 리뷰 파이프라인이 아닙니다.
|
package/package.json
CHANGED
|
@@ -1,53 +1,22 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "jhste-skills",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "
|
|
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
|
-
"
|
|
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.
|
|
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": "
|
|
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.
|