jinhak-ai-standard 2.7.0 → 2.7.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/scripts/readme-guard.cjs +99 -0
- package/.claude/settings.json +9 -0
- package/.claude/skills/apply-standard/SKILL.md +1 -1
- package/CHANGELOG.md +17 -0
- package/CLAUDE.md +11 -12
- package/QUICK_START_PROMPT.md +1 -1
- package/README.md +8 -5
- package/package.json +1 -1
- package/templates/project-claude.md +1 -1
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* README Guard Hook
|
|
4
|
+
*
|
|
5
|
+
* git commit 시점에 README.md 업데이트 누락을 감지합니다.
|
|
6
|
+
* PreToolUse (Bash - git commit) 에서 실행됩니다.
|
|
7
|
+
*
|
|
8
|
+
* 동작:
|
|
9
|
+
* 1. staged 파일 목록을 확인
|
|
10
|
+
* 2. "중요 파일"이 변경되었는데 README.md가 staged에 없으면 경고
|
|
11
|
+
* 3. additionalContext로 Claude에게 README 업데이트를 요청
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
const { execSync } = require('child_process');
|
|
15
|
+
|
|
16
|
+
// 커밋 명령이 아니면 무시
|
|
17
|
+
const command = process.env.command || '';
|
|
18
|
+
if (!command.includes('commit')) {
|
|
19
|
+
process.exit(0);
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
try {
|
|
23
|
+
// staged 파일 목록
|
|
24
|
+
const staged = execSync('git diff --cached --name-only', { encoding: 'utf-8' })
|
|
25
|
+
.trim()
|
|
26
|
+
.split('\n')
|
|
27
|
+
.filter(Boolean);
|
|
28
|
+
|
|
29
|
+
if (staged.length === 0) {
|
|
30
|
+
process.exit(0);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
// README.md가 이미 staged에 포함되어 있으면 OK
|
|
34
|
+
const readmeIncluded = staged.some(f =>
|
|
35
|
+
f.toLowerCase() === 'readme.md'
|
|
36
|
+
);
|
|
37
|
+
|
|
38
|
+
if (readmeIncluded) {
|
|
39
|
+
process.exit(0);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
// README 업데이트가 필요할 수 있는 "중요 변경" 패턴
|
|
43
|
+
const significantPatterns = [
|
|
44
|
+
// 구조/설정 변경
|
|
45
|
+
/^CLAUDE\.md$/,
|
|
46
|
+
/^CHANGELOG\.md$/,
|
|
47
|
+
/^RELEASE_NOTES\.md$/,
|
|
48
|
+
/^QUICK_START_PROMPT\.md$/,
|
|
49
|
+
/^package\.json$/,
|
|
50
|
+
/^bin\//,
|
|
51
|
+
// 새 기능/스킬 추가
|
|
52
|
+
/^\.claude\/skills\//,
|
|
53
|
+
/^\.claude\/settings\.json$/,
|
|
54
|
+
/^\.claude\/scripts\//,
|
|
55
|
+
// 문서 구조 변경
|
|
56
|
+
/^templates\//,
|
|
57
|
+
/^security\//,
|
|
58
|
+
/^prompts\//,
|
|
59
|
+
// 주요 가이드 문서
|
|
60
|
+
/^VIBE_CODING_GUIDE\.md$/,
|
|
61
|
+
/^CODING_CONVENTIONS\.md$/,
|
|
62
|
+
/^ARCHITECTURE\.md$/,
|
|
63
|
+
/^PROJECT_STRUCTURE\.md$/,
|
|
64
|
+
/^SECURITY_ISMS\.md$/,
|
|
65
|
+
/^PROMPT-LIBRARY\.md$/,
|
|
66
|
+
/^PROMPT_LIBRARY_USAGE\.md$/,
|
|
67
|
+
// 스크립트/자동화
|
|
68
|
+
/^scripts\//,
|
|
69
|
+
];
|
|
70
|
+
|
|
71
|
+
const significantChanges = staged.filter(file =>
|
|
72
|
+
significantPatterns.some(pattern => pattern.test(file))
|
|
73
|
+
);
|
|
74
|
+
|
|
75
|
+
if (significantChanges.length === 0) {
|
|
76
|
+
// 중요 변경이 아니면 무시
|
|
77
|
+
process.exit(0);
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
// 경고 출력 (additionalContext로 Claude에게 전달)
|
|
81
|
+
const fileList = significantChanges.map(f => ` - ${f}`).join('\n');
|
|
82
|
+
|
|
83
|
+
console.log(`[README Guard] ⚠️ README.md 업데이트 필요 가능성 감지
|
|
84
|
+
|
|
85
|
+
다음 중요 파일이 변경되었지만 README.md가 커밋에 포함되지 않았습니다:
|
|
86
|
+
${fileList}
|
|
87
|
+
|
|
88
|
+
README.md에 반영이 필요한 변경인지 확인하세요.
|
|
89
|
+
- 새 기능/스킬 추가 → README에 설명 추가
|
|
90
|
+
- 버전 변경 → README 버전 번호 갱신
|
|
91
|
+
- 구조 변경 → README 구조 설명 업데이트
|
|
92
|
+
- 적용 방법 변경 → README 설치/적용 가이드 업데이트
|
|
93
|
+
|
|
94
|
+
커밋을 진행하기 전에 사용자에게 README.md 업데이트 여부를 확인하세요.`);
|
|
95
|
+
|
|
96
|
+
} catch (e) {
|
|
97
|
+
// git 명령 실패 시 조용히 무시 (hook이 커밋을 막지 않도록)
|
|
98
|
+
process.exit(0);
|
|
99
|
+
}
|
package/.claude/settings.json
CHANGED
|
@@ -141,7 +141,7 @@ Auto Memory가 활성화되어 있습니다.
|
|
|
141
141
|
|
|
142
142
|
> **중요**: `deny` 규칙은 프로젝트 전체에 **강제 적용**됩니다. `settings.local.json`이나 `~/.claude/settings.json`으로 우회할 수 없으므로, 위험 명령 차단에 가장 확실한 방법입니다. `deny`가 `allow`보다 우선합니다.
|
|
143
143
|
|
|
144
|
-
> Hook은
|
|
144
|
+
> Hook은 bash 셸에서 실행됩니다. Unix 문법을 사용할 수 있으며, Windows 전용 문법(`> nul`, `powershell`)만 피하면 OS 무관하게 동작합니다.
|
|
145
145
|
|
|
146
146
|
**Scripts 복사** - 표준 저장소의 세션 브리핑 스크립트를 복사:
|
|
147
147
|
- `/tmp/jinhak-standards/.claude/scripts/session-briefing.cjs` → `.claude/scripts/session-briefing.cjs`
|
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,23 @@ Claude Code의 `/session-start` 스킬이 이 파일을 참조하여 표준 업
|
|
|
5
5
|
|
|
6
6
|
---
|
|
7
7
|
|
|
8
|
+
## [2.7.1] - 2026-03-12
|
|
9
|
+
|
|
10
|
+
### README Guard Hook — 커밋 시 README.md 업데이트 누락 자동 감지
|
|
11
|
+
|
|
12
|
+
커밋 시점에 중요 파일이 변경되었지만 README.md가 staged에 포함되지 않은 경우 Claude에게 경고를 전달하여 자동으로 README 업데이트를 유도합니다.
|
|
13
|
+
|
|
14
|
+
### 추가
|
|
15
|
+
- `.claude/scripts/readme-guard.cjs` — PreToolUse Hook 스크립트 (git commit 시 README.md 누락 감지)
|
|
16
|
+
- `.claude/settings.json` — PreToolUse Hook에 readme-guard.cjs 등록
|
|
17
|
+
|
|
18
|
+
### 동작 방식
|
|
19
|
+
- `git commit` 실행 전 staged 파일 분석
|
|
20
|
+
- CLAUDE.md, skills, templates, scripts, security 등 중요 파일 변경 감지
|
|
21
|
+
- README.md 미포함 시 additionalContext로 경고 → Claude가 사용자에게 확인 요청
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
8
25
|
## [2.7] - 2026-03-04
|
|
9
26
|
|
|
10
27
|
### CLI 기술 스택 자동 감지 + CLAUDE.md 완전 자동 생성
|
package/CLAUDE.md
CHANGED
|
@@ -62,8 +62,8 @@
|
|
|
62
62
|
|
|
63
63
|
```
|
|
64
64
|
프로젝트루트/
|
|
65
|
-
├── package.json # npm 패키지 설정 — npx jinhak-ai-standard (v2.
|
|
66
|
-
├── bin/cli.cjs # CLI 진입점 (apply/info/link/help) (v2.
|
|
65
|
+
├── package.json # npm 패키지 설정 — npx jinhak-ai-standard (v2.7)
|
|
66
|
+
├── bin/cli.cjs # CLI 진입점 (apply/info/link/help + 기술 스택 자동 감지) (v2.7)
|
|
67
67
|
├── .github/workflows/ # GitHub Actions (release.yml → 태그 push 시 Release + npm publish) (v2.6)
|
|
68
68
|
├── CLAUDE.md # Claude Code 메인 설정 파일 (필수)
|
|
69
69
|
├── CLAUDE.local.md # 로컬 개발자 설정 (git 제외, 선택사항)
|
|
@@ -204,19 +204,18 @@ Claude는 다음 안티패턴을 감지하면 **즉시 경고하고 대안을
|
|
|
204
204
|
> 상세 내용: [security/AI_SECURITY_GUARDRAILS.md](./security/AI_SECURITY_GUARDRAILS.md)
|
|
205
205
|
> 상세 안티패턴 목록과 대화 예시는 [VIBE_CODING_GUIDE.md](./VIBE_CODING_GUIDE.md) 섹션 6.4~6.5를 참조하세요.
|
|
206
206
|
|
|
207
|
-
### 2.5 Hook
|
|
207
|
+
### 2.5 Hook 실행 환경 및 규칙
|
|
208
208
|
|
|
209
|
-
|
|
209
|
+
**Claude Code의 Hook은 bash 셸에서 실행**됩니다. 따라서 Unix 문법(`2>/dev/null`, `||`, `&&` 등)을 사용할 수 있으며, `node`, `npx`, `git` 등 bash PATH에 있는 모든 명령을 사용할 수 있습니다.
|
|
210
210
|
|
|
211
211
|
**필수 규칙:**
|
|
212
|
-
-
|
|
213
|
-
-
|
|
214
|
-
-
|
|
215
|
-
- 파일 경로는 `path.join()`으로 생성하고 슬래시(`/`)로 통일할 것
|
|
212
|
+
- Windows 전용 문법 사용 금지: `> nul`, `2>nul`, `powershell -Command` 등
|
|
213
|
+
- 파일 경로는 슬래시(`/`)로 통일할 것 (백슬래시 `\` 금지)
|
|
214
|
+
- 복잡한 로직은 `.cjs` 스크립트로 분리하여 `node script.cjs`로 실행 권장
|
|
216
215
|
|
|
217
216
|
**Windows `nul` 파일 방지:**
|
|
218
|
-
- `> nul`, `2>nul` 사용 금지 (예약 디바이스 이름 충돌로 `nul` 파일 생성)
|
|
219
|
-
-
|
|
217
|
+
- `> nul`, `2>nul` 사용 금지 (Windows 예약 디바이스 이름 충돌로 `nul` 파일 생성)
|
|
218
|
+
- bash 환경에서는 `> /dev/null 2>&1` 사용
|
|
220
219
|
|
|
221
220
|
### 2.6 Windows 개발 환경 규칙
|
|
222
221
|
|
|
@@ -507,7 +506,7 @@ body: { action: 'delete', id: '123' }
|
|
|
507
506
|
}
|
|
508
507
|
```
|
|
509
508
|
|
|
510
|
-
> Hook은
|
|
509
|
+
> Hook은 bash 셸에서 실행됩니다. `node`, `npx` 등 bash에서 사용 가능한 명령과 Unix 문법(`2>/dev/null`, `||` 등)을 모두 사용할 수 있습니다. Windows 전용 문법(`> nul`, `powershell`)은 사용하지 마세요.
|
|
511
510
|
|
|
512
511
|
### 6.1.1 글로벌 Hook (자동 표준 감지)
|
|
513
512
|
|
|
@@ -1165,4 +1164,4 @@ AI가 생성해서는 안 되는 12가지 위험 패턴:
|
|
|
1165
1164
|
---
|
|
1166
1165
|
|
|
1167
1166
|
*마지막 업데이트: 2026-03-01*
|
|
1168
|
-
*버전: 2.
|
|
1167
|
+
*버전: 2.7*
|
package/QUICK_START_PROMPT.md
CHANGED
|
@@ -99,7 +99,7 @@ CLAUDE.local.md
|
|
|
99
99
|
|
|
100
100
|
```bash
|
|
101
101
|
mkdir -p /tmp/jinhak-standards
|
|
102
|
-
curl -sL https://github.com/JinhakStandard/ai-vibecoding/archive/refs/tags/v2.
|
|
102
|
+
curl -sL https://github.com/JinhakStandard/ai-vibecoding/archive/refs/tags/v2.7.tar.gz \
|
|
103
103
|
| tar -xz -C /tmp/jinhak-standards --strip-components=1
|
|
104
104
|
```
|
|
105
105
|
|
package/README.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# JINHAK AI 개발 표준 v2.
|
|
1
|
+
# JINHAK AI 개발 표준 v2.7 (AI Vibe Coding Standards)
|
|
2
2
|
|
|
3
3
|
JINHAK 전사에서 AI(Claude Code / Claude.ai)와 협업할 때 따라야 하는 개발 표준 문서입니다.
|
|
4
4
|
|
|
@@ -105,9 +105,9 @@ claude
|
|
|
105
105
|
|
|
106
106
|
> 각 프로젝트의 CLAUDE.md에 다음 메타 정보가 기록되어 추적됩니다:
|
|
107
107
|
> ```html
|
|
108
|
-
> <!-- jinhak_standard_version: 2.
|
|
108
|
+
> <!-- jinhak_standard_version: 2.7 -->
|
|
109
109
|
> <!-- jinhak_standard_repo: https://github.com/JinhakStandard/ai-vibecoding -->
|
|
110
|
-
> <!-- applied_date: 2026-03-
|
|
110
|
+
> <!-- applied_date: 2026-03-04 -->
|
|
111
111
|
> ```
|
|
112
112
|
|
|
113
113
|
---
|
|
@@ -166,7 +166,8 @@ JinhakStandard/
|
|
|
166
166
|
├── .claude/ # Claude Code 설정 (표준 템플릿)
|
|
167
167
|
│ ├── settings.json # 권한, hooks 설정
|
|
168
168
|
│ ├── scripts/
|
|
169
|
-
│ │
|
|
169
|
+
│ │ ├── session-briefing.cjs # 세션 자동 브리핑 Hook 스크립트
|
|
170
|
+
│ │ └── readme-guard.cjs # 커밋 시 README.md 누락 감지 (v2.7.1)
|
|
170
171
|
│ └── skills/ # 슬래시 명령어 (14개)
|
|
171
172
|
│ ├── apply-standard/ # /apply-standard - 표준 적용/업데이트
|
|
172
173
|
│ ├── commit/ # /commit - 커밋 생성
|
|
@@ -303,7 +304,9 @@ claude
|
|
|
303
304
|
|
|
304
305
|
| 버전 | 날짜 | 변경 내용 |
|
|
305
306
|
|------|------|----------|
|
|
306
|
-
| **2.
|
|
307
|
+
| **2.7.1** | **2026-03-12** | **README Guard Hook: 커밋 시 중요 파일 변경 시 README.md 업데이트 누락 자동 감지** |
|
|
308
|
+
| 2.7 | 2026-03-04 | CLI 기술 스택 자동 감지 + CLAUDE.md 완전 자동 생성: `npx jinhak-ai-standard` 실행 시 package.json 분석하여 기술 스택 자동 반영 |
|
|
309
|
+
| 2.6 | 2026-03-02 | npm 패키지 + GitHub Releases 배포: `npx jinhak-ai-standard` CLI (CLAUDE.md 자동 생성/업데이트, prompts/ 복사 포함) |
|
|
307
310
|
| 2.5 | 2026-03-01 | 프롬프트 라이브러리 Phase 2: JABIS API 연동, `/prompt-report` 스킬, 사용량 추적 |
|
|
308
311
|
| 2.4 | 2026-02-28 | 프롬프트 라이브러리 Phase 1: 등록/검색/품질검증 시스템, 예시 프롬프트 3개, `/prompt-register` `/prompt-search` `/prompt-quality-check` 스킬 |
|
|
309
312
|
| 2.3 | 2026-02-28 | 적응적 추천 + skills.sh 모범사례 + 멀티 에이전트 패턴: 가중치 비평, C6 Hard Gate, State Contract, 스킬 조합 가이드, 2단계 검증, `/debug` 스킬, AI 합리화 방지 |
|
package/package.json
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
---
|
|
6
6
|
|
|
7
7
|
<!-- JINHAK Standard Metadata - 이 메타 정보는 자동 버전 관리에 사용됩니다. 삭제하지 마세요. -->
|
|
8
|
-
<!-- jinhak_standard_version: 2.
|
|
8
|
+
<!-- jinhak_standard_version: 2.7 -->
|
|
9
9
|
<!-- jinhak_standard_repo: [표준 저장소 URL - https://github.com/JinhakStandard/ai-vibecoding 로 교체] -->
|
|
10
10
|
<!-- applied_date: [YYYY-MM-DD] -->
|
|
11
11
|
|