@simplysm/sd-claude 13.0.57 → 13.0.59

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/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # @simplysm/sd-claude
2
2
 
3
- Simplysm Claude Code CLI — asset installer and cross-platform npx wrapper. Automatically installs Claude Code assets (skills, agents, rules) via `postinstall` when added as a dev dependency. Provides opinionated development workflows including TDD, systematic debugging, code review, planning, brainstorming, and git worktree management.
3
+ Simplysm Claude Code CLI — asset installer and cross-platform npx wrapper. Automatically installs Claude Code assets (skills, agents, rules, refs, hooks) via `postinstall` when added as a dev dependency. Provides opinionated development workflows including TDD, systematic debugging, code review, planning, brainstorming, and git worktree management.
4
4
 
5
5
  ## Installation
6
6
 
@@ -10,13 +10,13 @@ pnpm add -D @simplysm/sd-claude
10
10
  npm install --save-dev @simplysm/sd-claude
11
11
  ```
12
12
 
13
- Skills, agents, and rules are automatically installed to `.claude/` on `pnpm install` / `npm install`.
13
+ Skills, agents, rules, refs, and hooks are automatically installed to `.claude/` on `pnpm install` / `npm install`.
14
14
 
15
15
  ## How It Works
16
16
 
17
17
  When installed as a dependency, the `postinstall` script (`scripts/postinstall.mjs`) invokes the `sd-claude install` CLI command, which:
18
18
 
19
- 1. Copies all `sd-*` assets (skills, agents, rules, statusline) to the project's `.claude/` directory
19
+ 1. Copies all `sd-*` assets (skills, agents, rules, refs, hooks, statusline) to the project's `.claude/` directory
20
20
  2. Configures `statusLine` in `.claude/settings.json` to use `sd-statusline.js`
21
21
  3. Configures MCP servers in `.mcp.json` (context7 and playwright) using the cross-platform npx wrapper
22
22
  4. Existing `sd-*` entries are replaced with the latest version on each install
@@ -40,15 +40,23 @@ Updates also trigger reinstallation (`pnpm up @simplysm/sd-claude`).
40
40
  claude/
41
41
  sd-statusline.js # Status line script
42
42
  rules/
43
- sd-simplysm-docs.md # Local README documentation rule
43
+ sd-refs-linker.md # Reference guide rule (reads .claude/refs/ before work)
44
44
  sd-language.md # Language response rule
45
- sd-naming-conventions.md # Function naming rule
46
- sd-workflow-rules.md # Workflow behavior rule
45
+ refs/
46
+ sd-code-conventions.md # Code style and naming conventions reference
47
+ sd-directories.md # Directory layout reference (.cache/, .tmp/playwright/)
48
+ sd-simplysm-docs.md # @simplysm/* package documentation lookup reference
49
+ sd-workflow.md # Workflow behavior and problem-solving principles
50
+ sd-solid.md # SolidJS / @simplysm/solid / Tailwind guidelines
51
+ sd-orm.md # ORM query patterns and SQL injection prevention
52
+ sd-service.md # Service layer guidelines
47
53
  agents/
48
54
  sd-code-reviewer.md # Code review agent
49
55
  sd-code-simplifier.md # Code simplification agent
50
56
  sd-api-reviewer.md # API/DX review agent
51
57
  sd-security-reviewer.md # ORM SQL injection and input validation agent
58
+ hooks/
59
+ sd-notify.py # Windows toast notification hook (Stop event)
52
60
  skills/
53
61
  sd-brainstorm/ # Brainstorming skill
54
62
  sd-plan/ # Plan writing skill
@@ -64,6 +72,8 @@ Updates also trigger reinstallation (`pnpm up @simplysm/sd-claude`).
64
72
  sd-use/ # Auto skill/agent router
65
73
  sd-skill/ # Skill authoring skill
66
74
  sd-api-name-review/ # API naming review skill
75
+ sd-discuss/ # Standards-based technical discussion skill
76
+ sd-eml-analyze/ # EML email file analysis skill
67
77
  ```
68
78
 
69
79
  ## CLI Commands
@@ -126,29 +136,7 @@ Collaborative design exploration before implementation. Helps turn ideas into fu
126
136
  - Presents design in 200-300 word sections with validation
127
137
  - Saves validated design to `docs/plans/YYYY-MM-DD-<topic>-design.md`
128
138
  - Commits the design document to git
129
-
130
- **Next Steps Guide:**
131
-
132
- After design is complete, presents two workflow paths and recommends one based on scope:
133
-
134
- ```
135
- --- Path A: With branch isolation (recommended for features/large changes) ---
136
- 1. /sd-worktree add <name>
137
- 2. /sd-plan
138
- 3. /sd-plan-dev
139
- 4. /sd-check
140
- 5. /sd-commit
141
- 6. /sd-worktree merge
142
- 7. /sd-worktree clean
143
-
144
- --- Path B: Direct on current branch (quick fixes/small changes) ---
145
- 1. /sd-plan
146
- 2. /sd-plan-dev
147
- 3. /sd-check
148
- 4. /sd-commit
149
- ```
150
-
151
- **Yolo mode**: Respond with "Path A: yolo" or "Path B: yolo" to auto-execute all steps sequentially.
139
+ - Stops after saving the design — does not auto-proceed to `/sd-plan`
152
140
 
153
141
  ### sd-plan
154
142
 
@@ -185,30 +173,22 @@ Creates comprehensive implementation plans with TDD, assuming the implementer ha
185
173
 
186
174
  ### sd-plan-dev
187
175
 
188
- Executes implementation plans with right-sized process: direct execution for small plans, parallel agents for large plans.
176
+ Executes implementation plans via parallel Task agents with dependency-aware scheduling.
189
177
 
190
178
  ```
191
179
  /sd-plan-dev
192
180
  ```
193
181
 
194
- **Mode selection:**
195
- - **Direct Mode** tasks 3 AND source files ≤ 5: implement directly in main context, no agents
196
- - **Agent Mode** — otherwise: parallel Task agents with dependency-aware scheduling
197
-
198
- **Direct Mode process:**
199
- 1. Read plan, implement tasks in dependency order
200
- 2. For each task: implement, write tests, self-review
201
- 3. After all tasks: `pnpm typecheck` + `pnpm lint` + `pnpm vitest` on affected packages
202
-
203
- **Agent Mode process:**
204
- - Reads plan, extracts full task text, creates TaskCreate
182
+ **Process:**
183
+ - Reads plan, extracts full task text
205
184
  - Analyzes file dependencies to build a task graph
206
185
  - Groups independent tasks into parallel batches
207
186
  - Each task agent: implements, launches parallel spec + quality review sub-Tasks, fixes issues
208
- - Repeats review cycle until both reviewers approve (max 3 cycles)
187
+ - Repeats review cycle until both reviewers approve
188
+ - Runs batch integration check (typecheck + lint) between batches
209
189
  - Final review Task across entire implementation
210
190
 
211
- **Agents used per task (Agent Mode):**
191
+ **Agents used per task:**
212
192
  - **Task agent** (implementer) — implements the task, runs sub-Tasks for review
213
193
  - **Spec reviewer** sub-Task (`model: opus`) — verifies spec compliance
214
194
  - **Quality reviewer** sub-Task (`model: opus`) — reviews code quality
@@ -216,11 +196,9 @@ Executes implementation plans with right-sized process: direct execution for sma
216
196
 
217
197
  **If task agent returns questions:** orchestrator answers and re-launches that agent; other parallel agents continue unaffected.
218
198
 
219
- **After all batches complete:** if working inside a `.worktrees/` directory, guides user to run `/sd-worktree merge`.
220
-
221
199
  ### sd-tdd
222
200
 
223
- Test-driven development workflow. Enforces the Red-Green-Refactor cycle. Internally used by other skills; typically not invoked directly by the user.
201
+ Test-driven development workflow. Enforces the Red-Green-Refactor cycle. Internally used by other skills (`user-invocable: false`); typically not invoked directly by the user.
224
202
 
225
203
  **Iron Law:** No production code without a failing test first.
226
204
 
@@ -245,7 +223,7 @@ Systematic debugging workflow. Enforces root-cause investigation before any fix
245
223
 
246
224
  **Four Phases:**
247
225
 
248
- 1. **Root Cause Investigation** — Read error messages carefully, reproduce consistently, check recent changes, gather evidence by adding diagnostic instrumentation at each component boundary, trace data flow backward through the call stack
226
+ 1. **Root Cause Investigation** — Read error messages carefully, reproduce consistently, read source code directly (not git diff), gather evidence by adding diagnostic instrumentation at each component boundary, trace data flow backward through the call stack
249
227
  2. **Pattern Analysis** — Find working examples in the codebase, compare against references, identify differences, understand dependencies
250
228
  3. **Hypothesis and Testing** — Form a single specific hypothesis, make the smallest possible change to test it, verify before continuing
251
229
  4. **Implementation** — Create a failing test case (use `sd-tdd`), implement single fix addressing the root cause, verify fix
@@ -259,18 +237,22 @@ Systematic debugging workflow. Enforces root-cause investigation before any fix
259
237
 
260
238
  ### sd-check
261
239
 
262
- Verifies code via typecheck, lint, and tests using 3 parallel haiku agents. Fixes errors automatically and re-runs until all checks pass.
240
+ Verifies code via typecheck, lint, and tests. Fixes errors automatically and re-runs until all checks pass.
263
241
 
264
242
  ```
265
243
  /sd-check
266
244
  /sd-check packages/core-common
245
+ /sd-check test
246
+ /sd-check packages/core-common lint
267
247
  ```
268
248
 
269
- **Process (4 steps, fix-and-retry):**
270
- 1. **Environment pre-check** (parallel): verify pnpm workspace, package.json scripts, vitest config, and root package version
271
- 2. **Launch 3 haiku agents in parallel** (single message): typecheck (`pnpm typecheck [path]`), lint (`pnpm lint --fix [path]`), test (`pnpm vitest [path] --run`)
272
- 3. **Collect results, fix errors** in priority order: typecheck → lint → test. After 2-3 failed fix attempts on tests → recommend `/sd-debug`
273
- 4. **Re-verify** go back to step 2 and run all 3 agents again until all pass
249
+ **Process (fix-and-retry):**
250
+ 1. **Run** `pnpm check [path] [--type typecheck|lint|test]` (timeout: 600000ms)
251
+ 2. **All passed?** Report with actual output numbers done
252
+ 3. **Errors?** Fix in priority order: typecheck → lint → test
253
+ - E2E test failures: use Playwright MCP to inspect page state before fixing
254
+ - Stuck after 2-3 attempts → recommend `/sd-debug`
255
+ 4. **Re-run ALL checks** after any fix — never assume other checks still pass
274
256
 
275
257
  **No path argument:** defaults to verifying the entire project.
276
258
 
@@ -386,7 +368,7 @@ Auto skill/agent router. Analyzes the user request and selects the best matching
386
368
  # Selects sd-review and executes it
387
369
  ```
388
370
 
389
- **Catalog includes:** `sd-brainstorm`, `sd-debug`, `sd-tdd`, `sd-plan`, `sd-plan-dev`, `sd-explore`, `sd-review`, `sd-check`, `sd-commit`, `sd-readme`, `sd-api-name-review`, `sd-worktree`, `sd-skill` (skills), and `sd-code-reviewer`, `sd-code-simplifier`, `sd-api-reviewer`, `sd-security-reviewer` (agents).
371
+ **Catalog includes:** `sd-brainstorm`, `sd-debug`, `sd-tdd`, `sd-plan`, `sd-plan-dev`, `sd-explore`, `sd-review`, `sd-check`, `sd-commit`, `sd-readme`, `sd-discuss`, `sd-api-name-review`, `sd-worktree`, `sd-skill` (skills), and `sd-code-reviewer`, `sd-code-simplifier`, `sd-api-reviewer` (agents).
390
372
 
391
373
  ### sd-skill
392
374
 
@@ -423,6 +405,58 @@ Reviews a library's public API naming for consistency and industry standard alig
423
405
  | **P2** | Better industry term exists (optional) |
424
406
  | **Keep** | Already aligned with standards |
425
407
 
408
+ ### sd-discuss
409
+
410
+ Standards-based technical discussion skill. Evaluates code design decisions against industry standards and project conventions before forming opinions.
411
+
412
+ ```
413
+ /sd-discuss class vs functional components for this use case
414
+ ```
415
+
416
+ **When to use:** Evaluating code design decisions — class vs functional, pattern choices, architecture trade-offs, technology selection.
417
+
418
+ **Process:**
419
+ 1. Asks one question to understand the user's motivation and constraints
420
+ 2. Researches BEFORE forming any opinion:
421
+ - Project research (Read/Grep): reads related source code, CLAUDE.md, existing patterns
422
+ - Industry research (WebSearch): community consensus, specifications, benchmarks, comparable libraries
423
+ 3. Presents each option with equal depth, advocating FOR each
424
+ 4. Provides a decision matrix comparing options across criteria
425
+ 5. Asks which criteria matter most to the user — does NOT give a unilateral recommendation
426
+
427
+ **Key rules:** Research first, opinion last. Equal advocacy for each option. Evidence over intuition. No "obvious" answers.
428
+
429
+ ### sd-eml-analyze
430
+
431
+ EML email file analysis skill. Parses `.eml` files and extracts content from all attachments into a structured markdown report.
432
+
433
+ ```
434
+ /sd-eml-analyze path/to/email.eml
435
+ ```
436
+
437
+ **When to use:** When a user provides a `.eml` file to analyze, summarize, or extract attachments from (PDF, XLSX, PPTX).
438
+
439
+ **Internally runs:**
440
+ ```bash
441
+ python .claude/skills/sd-eml-analyze/eml-analyzer.py <eml_file_path>
442
+ ```
443
+
444
+ First run auto-installs required Python packages: `pdfminer.six`, `python-pptx`, `openpyxl`.
445
+
446
+ **Output:** Markdown report with mail info table, body text, and per-attachment extracted content.
447
+
448
+ **Supported attachments:**
449
+
450
+ | Format | Method |
451
+ |--------|--------|
452
+ | PDF | pdfminer.six text extraction |
453
+ | XLSX/XLS | openpyxl cell data as markdown table |
454
+ | PPTX | python-pptx slide text + tables + notes |
455
+ | Text files (.txt, .csv, .json, .xml, .html, .md) | UTF-8/CP949 decode |
456
+ | Images | Filename and size only |
457
+
458
+ Handles Korean encodings (EUC-KR, CP949, ks_c_5601-1987) automatically.
459
+
426
460
  ## Agents
427
461
 
428
462
  Agents are used by skills as subagents via the Task tool, or can be invoked directly.
@@ -475,6 +509,45 @@ Reviews ORM queries and service endpoints for SQL injection and input validation
475
509
 
476
510
  ## Rules
477
511
 
512
+ Rules are loaded automatically by Claude Code for all conversations in the project.
513
+
514
+ ### sd-refs-linker
515
+
516
+ Instructs Claude to read the relevant reference file from `.claude/refs/` before starting work. Maps task types to specific reference files:
517
+
518
+ | When | Reference file |
519
+ |------|----------------|
520
+ | Writing or modifying code | `sd-code-conventions.md` |
521
+ | Working with `.cache/` or Playwright screenshots | `sd-directories.md` |
522
+ | Using `@simplysm/*` package APIs | `sd-simplysm-docs.md` |
523
+ | Debugging, problem-solving, or planning | `sd-workflow.md` |
524
+ | SolidJS / @simplysm/solid / Tailwind work | `sd-solid.md` |
525
+ | Using `@simplysm/orm-*` | `sd-orm.md` |
526
+ | Using `@simplysm/service-*` | `sd-service.md` |
527
+
528
+ ### sd-language
529
+
530
+ Instructs Claude to respond in the system's configured language setting, while keeping technical terms, code identifiers, and library names unchanged. English error messages and logs are preserved in their original form.
531
+
532
+ ## Refs
533
+
534
+ Reference files in `.claude/refs/` are consumed by Claude when the `sd-refs-linker` rule directs it to read them.
535
+
536
+ ### sd-code-conventions
537
+
538
+ Code style and naming conventions for the simplysm monorepo:
539
+ - Generic type parameter naming (`TItem`, `TData`, not plain `T`)
540
+ - Prototype extension methods available from `@simplysm/core-common`
541
+ - Function naming: no `Async` suffix (async is the default); `Sync` suffix for synchronous variants
542
+ - File naming: auxiliary files prefixed with the main file name
543
+ - JSDoc: optional, use Korean when written
544
+
545
+ ### sd-directories
546
+
547
+ Directory layout reference:
548
+ - `.cache/` — build cache (`eslint.cache`, `typecheck-{env}.tsbuildinfo`, `dts.tsbuildinfo`). Reset by deleting `.cache/`
549
+ - `.tmp/playwright/` — Playwright MCP output directory; screenshots must always be saved here
550
+
478
551
  ### sd-simplysm-docs
479
552
 
480
553
  Instructs Claude to read `@simplysm/*` package documentation from local `node_modules/` README.md files. Includes an embedded package list so Claude can immediately identify which package to look up.
@@ -484,17 +557,35 @@ Instructs Claude to read `@simplysm/*` package documentation from local `node_mo
484
557
  node_modules/@simplysm/{package-name}/README.md
485
558
  ```
486
559
 
487
- ### sd-language
560
+ ### sd-workflow
488
561
 
489
- Instructs Claude to respond in the system's configured language setting, while keeping technical terms, code identifiers, and library names unchanged. English error messages and logs are preserved in their original form.
562
+ Workflow behavior and problem-solving principles:
563
+ - No auto-proceeding after skill completion (report and stop; exception: yolo mode)
564
+ - Root cause first — investigate before fixing; no band-aid patches
565
+ - Pre-coding checklist: read similar files before creating new ones
566
+ - Memory policy: do not use auto memory; all persistent knowledge belongs in `.claude/rules/` or project docs
567
+
568
+ ### sd-solid
569
+
570
+ SolidJS / `@simplysm/solid` / Tailwind CSS guidelines covering component model differences from React, props design rules, compound component patterns, Tailwind semantic color/z-index tokens, and application view naming conventions.
571
+
572
+ ### sd-orm
573
+
574
+ ORM query patterns and SQL injection prevention for simplysm ORM, which uses string escaping rather than parameter binding. Covers table definition syntax and mandatory input validation before queries.
575
+
576
+ ### sd-service
577
+
578
+ Service layer guidelines for `ServiceServer`, `ServiceClient`, and `ServiceProtocol`.
579
+
580
+ ## Hooks
490
581
 
491
- ### sd-naming-conventions
582
+ Hooks run automatically at Claude Code lifecycle events.
492
583
 
493
- Enforces function naming conventions including prohibition of `Async` suffix (async is the default) and use of `Sync` suffix for synchronous versions when both exist.
584
+ ### sd-notify.py
494
585
 
495
- ### sd-workflow-rules
586
+ Windows toast notification hook. Fires on the `Stop` event (when Claude Code finishes a task) and displays a Windows balloon tip notification showing the current folder name and a completion message.
496
587
 
497
- Defines workflow behavior including the rule to not auto-proceed after skill completion — report results and stop, waiting for explicit user instructions before the next step.
588
+ Requires Python 3 and PowerShell (Windows only). Uses `System.Windows.Forms.NotifyIcon` via PowerShell.
498
589
 
499
590
  ## Status Line
500
591
 
@@ -525,6 +616,7 @@ Runs before `npm pack` / `npm publish` (via `prepack` script). Syncs `sd-*` asse
525
616
  - If using `onlyBuiltDependencies` in `pnpm-workspace.yaml`, add `@simplysm/sd-claude` to the list
526
617
  - Skills and agents use the `sd-` prefix to distinguish them from user-defined assets
527
618
  - Existing `sd-*` entries are always replaced with the latest version on install
619
+ - `sd-notify.py` hook requires Windows and Python 3
528
620
 
529
621
  ## Dependencies
530
622
 
@@ -29,6 +29,13 @@ Multiple types: `--type typecheck,lint`. No path = full project. No type = all c
29
29
  2. **All passed?** Report with actual output numbers → done
30
30
  3. **Errors?** Fix in priority order: typecheck → lint → test (fixes cascade)
31
31
  - Test failures: run `git diff` to decide — update test or fix source
32
+ - **E2E test failures** (browser/solid/service project): use Playwright MCP to investigate before fixing
33
+ 1. `browser_navigate` to the target URL
34
+ 2. `browser_snapshot` / `browser_take_screenshot` (save to `.tmp/playwright/`) to see page state
35
+ 3. `browser_console_messages` for JS errors
36
+ 4. `browser_network_requests` for failed API calls
37
+ 5. Interact with the page following the test steps to reproduce the failure
38
+ 6. Fix based on observed evidence, not guesswork
32
39
  - Stuck after 2-3 attempts → recommend `/sd-debug`
33
40
  4. **Go to 1** — always re-run ALL checks after any fix
34
41
 
@@ -38,3 +45,4 @@ Multiple types: `--type typecheck,lint`. No path = full project. No type = all c
38
45
  - **Report with evidence** — cite actual numbers (e.g., "0 errors, 47 tests passed"), not "should work"
39
46
  - **No build, no dev server** — typecheck + lint + test only
40
47
  - **Run Bash directly** — no Task/agent/team overhead
48
+ - **Never run in background** — always run Bash in foreground (do NOT set `run_in_background: true`), wait for result before proceeding
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@simplysm/sd-claude",
3
- "version": "13.0.57",
3
+ "version": "13.0.59",
4
4
  "description": "Simplysm Claude Code CLI — asset installer and cross-platform npx wrapper",
5
5
  "author": "김석래",
6
6
  "license": "Apache-2.0",
@@ -1,17 +0,0 @@
1
- #!/usr/bin/env python3
2
- import json, sys, os, subprocess
3
-
4
- data = json.load(sys.stdin)
5
-
6
- dir_name = os.path.basename(data.get("cwd", ""))
7
-
8
- ps_cmd = (
9
- "Add-Type -AssemblyName System.Windows.Forms; "
10
- "$notify = New-Object System.Windows.Forms.NotifyIcon; "
11
- "$notify.Icon = [System.Drawing.SystemIcons]::Information; "
12
- "$notify.Visible = $true; "
13
- f"$notify.ShowBalloonTip(3000, 'Claude Code', '[{dir_name}] 작업 완료', "
14
- "[System.Windows.Forms.ToolTipIcon]::Info); "
15
- "Start-Sleep -Milliseconds 3500"
16
- )
17
- subprocess.run(["powershell.exe", "-Command", ps_cmd])