moicle 2.3.1 → 3.0.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 (32) hide show
  1. package/README.md +36 -49
  2. package/assets/commands/marketing.md +6 -6
  3. package/assets/skills/docs/sync/SKILL.md +195 -157
  4. package/assets/skills/feature/build/SKILL.md +891 -0
  5. package/assets/skills/feature/track/SKILL.md +8 -8
  6. package/assets/skills/fix/bug/SKILL.md +449 -0
  7. package/assets/skills/fix/incident/SKILL.md +6 -6
  8. package/assets/skills/marketing/brand/SKILL.md +304 -0
  9. package/assets/skills/marketing/content/SKILL.md +199 -141
  10. package/assets/skills/research/explore/SKILL.md +392 -0
  11. package/assets/skills/review/code/SKILL.md +622 -0
  12. package/dist/commands/install/usage.js +2 -2
  13. package/dist/commands/install/usage.js.map +1 -1
  14. package/package.json +1 -1
  15. package/assets/skills/docs/write/SKILL.md +0 -274
  16. package/assets/skills/feature/api/SKILL.md +0 -277
  17. package/assets/skills/feature/deprecate/SKILL.md +0 -276
  18. package/assets/skills/feature/new/SKILL.md +0 -273
  19. package/assets/skills/feature/refactor/SKILL.md +0 -269
  20. package/assets/skills/fix/hotfix/SKILL.md +0 -233
  21. package/assets/skills/fix/pr-comment/SKILL.md +0 -186
  22. package/assets/skills/fix/root-cause/SKILL.md +0 -276
  23. package/assets/skills/marketing/logo/SKILL.md +0 -252
  24. package/assets/skills/marketing/seo-blog/SKILL.md +0 -367
  25. package/assets/skills/marketing/video/SKILL.md +0 -258
  26. package/assets/skills/research/onboarding/SKILL.md +0 -225
  27. package/assets/skills/research/spike/SKILL.md +0 -228
  28. package/assets/skills/research/web/SKILL.md +0 -204
  29. package/assets/skills/review/architect/SKILL.md +0 -274
  30. package/assets/skills/review/branch/SKILL.md +0 -277
  31. package/assets/skills/review/pr/SKILL.md +0 -231
  32. package/assets/skills/review/tdd/SKILL.md +0 -245
@@ -0,0 +1,622 @@
1
+ ---
2
+ name: review-code
3
+ description: Code review workflow with five modes — SELF (self-review local branch before push), PR (review someone's pull request + post to GitHub), ARCHITECT (deep DDD architecture audit with scoring), TDD (red-green-refactor test-first), ADDRESS (fix PR review comments). Stack-aware. Use when user says "review changes", "review branch", "check branch", "review my code", "review before pr", "review pr", "check pr", "review code", "pr review", "architect-review", "architecture review", "review ddd", "check architecture", "tdd", "test first", "test driven", "red green refactor", "fix pr comment", "fix review comment", "address pr feedback".
4
+ args: "[MODE] [ARG]"
5
+ ---
6
+
7
+ # Code Review Workflow
8
+
9
+ One skill covering the full review surface. Pick the mode that matches your situation.
10
+
11
+ ## Pick your mode
12
+
13
+ | Situation | Mode | Jump to |
14
+ |-----------|------|---------|
15
+ | Self-review your branch before pushing / opening a PR | **SELF** | [Mode SELF](#mode-self) |
16
+ | Reviewing someone else's PR + posting feedback to GitHub | **PR** | [Mode PR](#mode-pr) |
17
+ | Deep DDD architecture audit of a domain (with scoring) | **ARCHITECT** | [Mode ARCHITECT](#mode-architect) |
18
+ | Writing code test-first (red → green → refactor) | **TDD** | [Mode TDD](#mode-tdd) |
19
+ | Addressing review comments on your own PR | **ADDRESS** | [Mode ADDRESS](#mode-address) |
20
+
21
+ - ❌ Security-only sweep → use `@security-audit` agent
22
+ - ❌ Bug surfaced by review → use `/fix-bug`
23
+
24
+ ## Read Architecture First (all modes)
25
+
26
+ Detect stack via `~/.claude/architecture/_shared/stack-detection.md`. Load `ddd-architecture.md` + the stack doc — extract forbidden imports + conventions before reviewing. Severity definitions: `~/.claude/architecture/_shared/severity-levels.md` (code severity table).
27
+
28
+ ---
29
+ ---
30
+
31
+ # Mode SELF
32
+
33
+ Self-review your branch vs a base branch before pushing or opening a PR. Checks architecture compliance, stack conventions, and code quality — on **changed files only**, not the whole codebase.
34
+
35
+ **ARGUMENTS:** (optional) base branch. Default: `main` (fallback to `master`).
36
+
37
+ ## Workflow
38
+
39
+ ```
40
+ 0 DETECT → 1 COLLECT → 2 BUILD+LINT → 3 ARCH → 4 CONVENTIONS → 5 QUALITY → 6 TESTS → 7 REPORT → 8 FIX
41
+ ```
42
+
43
+ ## Phase 0: DETECT
44
+ - [ ] Stack detected (ask user if ambiguous, e.g., monorepo)
45
+ - [ ] Architecture doc loaded
46
+ - [ ] Forbidden-imports list extracted
47
+
48
+ ## Phase 1: COLLECT
49
+
50
+ ```bash
51
+ BASE=${1:-main}
52
+ git rev-parse --verify "$BASE" >/dev/null 2>&1 || BASE=master
53
+
54
+ git log "$BASE"..HEAD --oneline
55
+ git diff "$BASE"...HEAD --stat
56
+ git diff "$BASE"...HEAD --name-only --diff-filter=ACMR
57
+ ```
58
+
59
+ Categorize changed files by layer:
60
+
61
+ | Layer | Typical paths |
62
+ |-------|---------------|
63
+ | Domain | `domain/`, `internal/domain/`, `src/domain/`, `lib/domain/` |
64
+ | Application | `application/`, `internal/application/`, `src/application/` |
65
+ | Infrastructure | `infrastructure/`, `internal/infrastructure/`, `src/infrastructure/` |
66
+ | Presentation / UI | `controllers/`, `pages/`, `components/`, `views/`, `ports/http/` |
67
+ | Persistence | `models/`, `entities/` (ORM), `prisma/`, `migrations/` |
68
+ | Config / Bootstrap | `config/`, `bootstrap/`, `cmd/`, `main.*` |
69
+
70
+ Read **all** changed files before reviewing — never skim.
71
+
72
+ ## Phase 2: BUILD + LINT
73
+
74
+ Run the stack's build + typecheck + lint commands. If any fail → mark **CRITICAL** and stop further review until they pass.
75
+
76
+ ```bash
77
+ # Go: go build ./... && go vet ./...
78
+ # NestJS: pnpm typecheck && pnpm lint
79
+ # Laravel: composer dump-autoload && ./vendor/bin/phpstan analyse
80
+ # Flutter: dart analyze
81
+ # React/Remix: pnpm typecheck && pnpm lint
82
+ ```
83
+
84
+ ## Phase 3: ARCHITECTURE (changed files only)
85
+
86
+ ### 3.1 Domain (if changed)
87
+ | # | Rule |
88
+ |---|------|
89
+ | D1 | Domain purity — no forbidden imports (ORM, HTTP, cache, queue, auth SDK) |
90
+ | D2 | No cross-domain imports (only shared kernel allowed) |
91
+ | D3 | No persistence-model imports in domain |
92
+ | D4 | Entities have behavior (not anemic data bags) |
93
+ | D5 | Entities raise events on state change (if architecture uses events) |
94
+ | D6 | Ports in `ports/` dir (not inline in usecases) |
95
+ | D7 | One port per file |
96
+ | D8 | Ports return domain types, not primitives |
97
+ | D9 | Value objects stdlib-only |
98
+ | D10 | Usecases have no infra imports |
99
+
100
+ ```bash
101
+ CHANGED_DOMAIN=$(git diff "$BASE"...HEAD --name-only --diff-filter=ACMR \
102
+ | grep -E '^(src|internal|lib)/domain/')
103
+ [ -n "$CHANGED_DOMAIN" ] && echo "$CHANGED_DOMAIN" \
104
+ | xargs grep -lEn '<STACK_FORBIDDEN_REGEX>' 2>/dev/null \
105
+ && echo FAIL || echo PASS
106
+ ```
107
+
108
+ ### 3.2 Application (if changed)
109
+ | # | Rule |
110
+ |---|------|
111
+ | A1 | Handler is thin (parse → service → respond, no business logic) |
112
+ | A2 | Service justified only when ≥2 usecases orchestrated |
113
+ | A3 | Listener is side-effect only (no business logic) |
114
+ | A4 | Listener registered in event bus |
115
+ | A5 | Event name string matches registry |
116
+ | A6 | DTOs validated at boundary |
117
+ | A7 | Composition root only — no inline wiring in handlers |
118
+
119
+ ### 3.3 Infrastructure (if changed)
120
+ | # | Rule |
121
+ |---|------|
122
+ | I1 | Repository has no business logic |
123
+ | I2 | Mappers exist (domain ↔ ORM model) |
124
+ | I3 | Implements port interface (returns domain types) |
125
+ | I4 | Context / transaction propagation correct |
126
+
127
+ ### 3.4 Persistence models (if changed)
128
+ | # | Rule |
129
+ |---|------|
130
+ | M1 | ORM models in infrastructure, NOT domain |
131
+ | M2 | Schema change → matching migration |
132
+ | M3 | Nullable columns use nullable types |
133
+
134
+ ## Phase 4: CONVENTIONS (cross-stack)
135
+
136
+ | # | Rule |
137
+ |---|------|
138
+ | G1 | No swallowed errors (no empty catch / `if err != nil {}`) |
139
+ | G2 | Async work uses background context, NOT request context |
140
+ | G3 | API-facing types have serialization tags (`json:`, decorators, etc.) |
141
+ | G4 | No hardcoded secrets / tokens / keys |
142
+ | G5 | Parameterized queries only — no string-interpolated SQL |
143
+ | G6 | Input validation at boundary before reaching domain |
144
+
145
+ Plus any stack-specific Hard Rules from the architecture doc.
146
+
147
+ ## Phase 5: QUALITY (manual)
148
+
149
+ Read the diff. Look for:
150
+
151
+ | # | Area | What to look for |
152
+ |---|------|------------------|
153
+ | Q1 | Logic correctness | Off-by-one, nil deref, wrong condition, missed edge case |
154
+ | Q2 | Error handling | Errors propagated/wrapped, not silently ignored |
155
+ | Q3 | Concurrency | Race conditions, shared mutable state, async leaks |
156
+ | Q4 | Resource leaks | Unclosed connections, HTTP bodies, file handles |
157
+ | Q5 | Naming | Reveals intent (no `data`, `info`, `manager`, `helper`) |
158
+ | Q6 | Dead code | Unreachable, unused, commented-out |
159
+ | Q7 | Duplication | Real duplication across changed files (not coincidental) |
160
+ | Q8 | Breaking change | API contract change, removed field, behavior change |
161
+ | Q9 | Over-engineering | Abstraction not justified by the change |
162
+ | Q10 | Test coverage | New logic has tests; bug fixes have regression tests |
163
+
164
+ ## Phase 6: TESTS
165
+
166
+ ```bash
167
+ CHANGED_DOMAINS=$(git diff "$BASE"...HEAD --name-only --diff-filter=ACMR \
168
+ | grep -E '/(domain|modules|features)/' \
169
+ | sed -E 's|.*(domain\|modules\|features)/([^/]+)/.*|\2|' | sort -u)
170
+
171
+ for d in $CHANGED_DOMAINS; do
172
+ # Go: go test ./internal/domain/$d/... · NestJS: npx jest src/domain/$d
173
+ # Laravel: ./vendor/bin/phpunit --filter $d · Flutter: flutter test test/domain/$d
174
+ echo "Test $d"
175
+ done
176
+
177
+ {full_test_command}
178
+ ```
179
+
180
+ ## Phase 7: REPORT
181
+
182
+ ```markdown
183
+ ## Code Review: {branch} → {base}
184
+ **Stack:** {stack} · **Commits:** {N} · **Files:** {N} (+{add} / -{del})
185
+
186
+ ### Build / Lint / Types
187
+ | Check | Status | → Build / Lint / Types: PASS/FAIL
188
+
189
+ ### Issues (sorted by severity)
190
+ | # | Severity | File:line | Issue | Suggested fix |
191
+ |---|----------|-----------|-------|---------------|
192
+ | 1 | CRITICAL | config/db.ts:42 | hardcoded token | move to env |
193
+ | 2 | HIGH | handlers/user.ts:88 | business logic in handler | extract to usecase |
194
+
195
+ ### Verdict: {APPROVED / CHANGES REQUESTED}
196
+ ```
197
+
198
+ ### Verdict rules
199
+ - **CRITICAL or HIGH found** → CHANGES REQUESTED
200
+ - **MEDIUM only** → CHANGES REQUESTED (should fix)
201
+ - **LOW only or nothing** → APPROVED (with suggestions if any)
202
+
203
+ ## Phase 8: FIX (if user confirms)
204
+ 1. Fix in order: CRITICAL → HIGH → MEDIUM → LOW
205
+ 2. Re-run build + lint + tests after each batch
206
+ 3. Re-run full review when all fixed
207
+ 4. Report final status
208
+
209
+ ---
210
+ ---
211
+
212
+ # Mode PR
213
+
214
+ Review someone else's PR across 5 dimensions and post structured feedback to GitHub.
215
+
216
+ ## When to use
217
+ - ✅ Reviewing someone else's open PR (`gh pr view <number>` accessible)
218
+ - ✅ Need to post structured feedback (APPROVE / REQUEST CHANGES / COMMENT)
219
+ - ❌ Self-review of own branch before push → **Mode SELF**
220
+ - ❌ Addressing comments on your own PR → **Mode ADDRESS**
221
+
222
+ ## Workflow
223
+
224
+ ```
225
+ FETCH → ANALYZE → REVIEW (5 dims) → FEEDBACK → POST
226
+ ```
227
+
228
+ ## Phase 1: FETCH
229
+
230
+ ```bash
231
+ PR={number}
232
+ gh pr view $PR --json number,title,body,author,state,headRefName,baseRefName,commits,files
233
+ gh pr diff $PR
234
+ gh pr checks $PR
235
+ gh pr view $PR --comments
236
+ ```
237
+
238
+ ### Gate
239
+ - [ ] PR metadata + diff + CI status loaded
240
+ - [ ] PR description explains "what / why" — if missing, ask author before deep review
241
+ - [ ] CI status known (don't review red builds — ask author to fix first)
242
+
243
+ ## Phase 2: ANALYZE
244
+ 1. **Scope check**: does the diff match the PR title / description? Mixed-scope PRs → ask author to split.
245
+ 2. **Risk profile**: domain logic, infra config, migrations, auth → high risk; UI tweak → low risk.
246
+ 3. **Test delta**: are new tests in the diff? coverage % up or down?
247
+ 4. **Reference module**: open 1 existing similar module to compare conventions.
248
+
249
+ ### Gate
250
+ - [ ] PR scope is single-purpose (or split requested)
251
+ - [ ] Risk level identified · Test delta noted
252
+
253
+ ## Phase 3: REVIEW — 5 dimensions
254
+
255
+ ### 3.1 Architecture (CRITICAL / HIGH)
256
+ - Domain has zero framework imports; no cross-domain imports
257
+ - Business logic in usecases, not handlers / stores
258
+ - Ports in `ports/` dir; entities raise events on state changes
259
+ - Listeners use background context, not request context
260
+ - **For deep DDD audit:** switch to **Mode ARCHITECT** and link result.
261
+
262
+ ### 3.2 Security (CRITICAL / HIGH)
263
+ - Input validation at trust boundary (handler / DTO)
264
+ - AuthN + AuthZ checked before sensitive ops
265
+ - No secrets / tokens in code or logs
266
+ - SQL via parameterized queries / ORM — no string concatenation
267
+ - File paths / shell commands sanitized
268
+ - Rate limiting + idempotency on state-mutating endpoints
269
+ - Crypto: standard library, no roll-your-own
270
+
271
+ ### 3.3 Performance (HIGH / MEDIUM)
272
+ - No N+1 queries (eager-load relations the handler uses)
273
+ - Indexes match new query patterns (check `EXPLAIN`)
274
+ - Pagination on list endpoints (cursor preferred)
275
+ - Background work for slow operations (don't block request)
276
+ - Caching where appropriate, invalidation thought through
277
+ - Synchronous external API calls have timeouts
278
+
279
+ ### 3.4 Testing (HIGH / MEDIUM)
280
+ - New business logic has unit tests (usecases, entities, value objects)
281
+ - New endpoints have at least 1 integration test (happy + error)
282
+ - Tests assert on behavior, not implementation
283
+ - Tests don't depend on order, time, or env
284
+ - Coverage didn't drop for touched files
285
+
286
+ ### 3.5 Code quality (MEDIUM / LOW)
287
+ - Names reveal intent (no `data`, `info`, `manager`, `helper`)
288
+ - Functions do one thing; no dead branches or commented-out code
289
+ - DRY only where the duplication is real (not coincidental)
290
+ - Errors handled at boundary, not swallowed mid-flow
291
+
292
+ ## Phase 4: FEEDBACK
293
+
294
+ | Decision | When |
295
+ |----------|------|
296
+ | **APPROVE** | 0 CRITICAL / HIGH; LOW only |
297
+ | **REQUEST CHANGES** | Any CRITICAL or HIGH; or multiple MEDIUM in same area |
298
+ | **COMMENT** | Only style / nit comments; or asking questions before final review |
299
+
300
+ ### Inline comment format
301
+ Be specific. File + line + rationale + suggested fix:
302
+
303
+ ```
304
+ file: internal/wallet/usecases/withdraw.go:42
305
+ severity: HIGH
306
+ issue: Business logic in handler — `if wallet.Balance < amount` should live in
307
+ the Withdraw usecase, not here.
308
+ suggest:
309
+ result, err := s.WithdrawUsecase.Execute(ctx, req) // handler
310
+ // usecase: if !wallet.HasSufficientBalance(amount) { return ErrInsufficient }
311
+ ```
312
+
313
+ ### Summary comment (top of PR)
314
+
315
+ ```markdown
316
+ ## Review Summary
317
+ **Decision:** REQUEST CHANGES
318
+
319
+ **Must fix (HIGH):**
320
+ - [ ] `withdraw.go:42` — business logic moved out of handler
321
+
322
+ **Should fix (MEDIUM):**
323
+ - [ ] `withdraw_test.go` — only happy path tested, add insufficient-balance case
324
+
325
+ **Nits (LOW):**
326
+ - [ ] `helper.go:5` — rename `helper` to something specific
327
+
328
+ **What looked great:** Clean port interface, good test naming, clear PR description.
329
+ ```
330
+
331
+ ### Gate
332
+ - [ ] Decision matches severity rules
333
+ - [ ] Every HIGH+ has file:line + suggested fix
334
+ - [ ] Summary lists must-fix vs should-fix vs nits
335
+ - [ ] Acknowledged what's good (not just criticism)
336
+
337
+ ## Phase 5: POST
338
+
339
+ ```bash
340
+ gh pr review $PR --request-changes --body "$(cat summary.md)"
341
+ # or gh pr review $PR --approve --body "LGTM, see one nit"
342
+ # or gh pr review $PR --comment --body "Questions before final review"
343
+ gh pr edit $PR --add-label "needs-changes" # optional
344
+ ```
345
+
346
+ ### Gate
347
+ - [ ] Review posted to GitHub
348
+ - [ ] Author has clear next-step list
349
+
350
+ ---
351
+ ---
352
+
353
+ # Mode ARCHITECT
354
+
355
+ Audit a codebase (or a single domain) against DDD rules with automated checks, manual review, and a fix loop until score ≥ B.
356
+
357
+ **ARGUMENTS:** `<architecture> [domain]` — e.g. `go-backend wallet`, `react-frontend`. No arg → auto-detect stack. Aliases: `ddd → ddd-architecture`, `go → go-backend`, `react → react-frontend`, `flutter → flutter-mobile`, `laravel → laravel-backend`, `remix → remix-fullstack`, `nestjs → nodejs-nestjs`, `mono → monorepo`.
358
+
359
+ ## Workflow
360
+
361
+ ```
362
+ RESOLVE → LOAD RULES → AUTOMATED CHECKS → MANUAL REVIEW → REPORT → FIX LOOP
363
+ ```
364
+
365
+ ## Phase 0: RESOLVE ARCHITECTURE
366
+ - **Arg provided:** normalize via alias table → search project (`.claude/architecture/{name}.md`) then global (`~/.claude/architecture/{name}.md`). Not found → reject with available list, STOP.
367
+ - **No arg:** detect stack → confirm with user. Not detected → list options, ask.
368
+
369
+ ### Gate
370
+ - [ ] Architecture file loaded · Domain identified (if scoped)
371
+
372
+ ## Phase 1: LOAD RULES
373
+
374
+ Read `ddd-architecture.md` (core) + the stack doc. Extract: DDD directory layout, layer import rules + forbidden imports, hard rules (HR1-HR15), stack-specific check scripts, wiring + test patterns.
375
+
376
+ ## Phase 2: AUTOMATED CHECKS
377
+
378
+ ```bash
379
+ echo "R1: Build" ; {build} && echo PASS || echo FAIL
380
+ echo "R2: Lint/Vet" ; {lint} && echo PASS || echo FAIL
381
+ echo "R3: Domain pure" ; {grep_forbidden in domain/} && echo FAIL || echo PASS
382
+ echo "R4: No cross-dom" ; {grep_domain_A in domain_B} && echo FAIL || echo PASS
383
+ echo "R5: No cycles" ; {cycle_check} && echo FAIL || echo PASS
384
+ echo "R6: Tests exist" ; {find_tests_in_domain} | wc -l
385
+ echo "R7: Tests pass" ; {test} && echo PASS || echo FAIL
386
+ echo "R8: Wiring reg" ; {check_routes_registered}
387
+ echo "R9: Event names" ; {check_event_consistency}
388
+ echo "R10: Async ctx" ; {check_no_request_context_in_goroutines}
389
+ ```
390
+
391
+ Record PASS/FAIL per check. Continue to Phase 3 either way — manual review catches what automated misses.
392
+
393
+ ## Phase 3: MANUAL REVIEW
394
+
395
+ Focus on **architecture structure**, not business correctness. 10 areas:
396
+
397
+ - **D — Directory:** D1 `domain/{domain}/` proper subdirs · D2 has `entities/`,`ports/`,`usecases/` · D3 `valueobjects/` separate · D4 `events/` separate, 1/file · D5 app layer `ports/{transport}/`,`services/`,`listeners/` · D6 infra implements ports · D7 no legacy dirs
398
+ - **E — Entities:** E1 constructor · E2 behavior (not anemic) · E3 raises events · E4 no framework imports · E5 has mappers
399
+ - **VO — Value Objects:** VO1 in `valueobjects/` · VO2 stdlib only · VO3 immutable+behavior · VO4 used by entities+ports
400
+ - **P — Ports:** P1 `ports/` dir (no inline) · P2 one/file · P3 interface+DTOs · P4 domain types in sigs · P5 platform-agnostic naming · P6 no infra imports
401
+ - **EV — Events:** EV1 one/file · EV2 extends base · EV3 carries data · EV4 name matches registry
402
+ - **U — UseCases:** U1 uses ports · U2 split ≤200 lines · U3 business logic here · U4 no infra imports · U5 dispatches events after persistence · U6 no inline interfaces
403
+ - **SVC — Services:** SVC1 thin delegates · SVC2 no infra imports
404
+ - **H — Handlers:** H1 registration fn · H2 thin · H3 no business logic · H4 DTOs separate
405
+ - **L — Listeners:** L1 one/event · L2 side-effects only · L3 registered · L4 background context
406
+ - **I — Infrastructure:** I1 implements port · I2 mappers · I3 no business logic · I4 compile-time interface check
407
+
408
+ ### Gate
409
+ - [ ] All 10 areas reviewed · Findings categorized by severity
410
+
411
+ ## Phase 4: REPORT + SCORE
412
+
413
+ ```markdown
414
+ ## Architecture Review: {architecture} / {domain}
415
+ ### Automated (R1-R10) | ### Manual review (D/E/VO/P/EV/U/SVC/H/L/I)
416
+ ### Violations: [SEVERITY] code:file:line — description
417
+ ### Overall Score: {A/B/C/D/F}
418
+ ```
419
+
420
+ | Score | Criteria |
421
+ |-------|----------|
422
+ | **A** | 0 violations, all R1-R10 PASS |
423
+ | **B** | 0 CRITICAL/HIGH, max 3 MEDIUM |
424
+ | **C** | 0 CRITICAL, max 2 HIGH |
425
+ | **D** | Has CRITICAL or 3+ HIGH |
426
+ | **F** | Multiple CRITICAL — architecture broken |
427
+
428
+ ## Phase 5: FIX LOOP (if user confirms)
429
+
430
+ ```
431
+ LOOP: 1. Fix all violations → 2. Re-run automated (Phase 2) → 3. Re-run manual (Phase 3)
432
+ 4. IF violations ≥ MEDIUM → GOTO 1 · 5. IF only LOW/none → BREAK, final report
433
+ ```
434
+
435
+ **Called from `/feature-build`:** skip Phase 0 (architecture known), skip user confirmation for fixes (auto-fix in loop), report final score back to caller.
436
+
437
+ ---
438
+ ---
439
+
440
+ # Mode TDD
441
+
442
+ Red-Green-Refactor cycle: write failing test → write minimal code to pass → refactor while green.
443
+
444
+ ## When to use
445
+ - ✅ Logic with clear input → output behavior (parsers, validators, business rules, usecases)
446
+ - ✅ Fixing a bug — failing test first, then fix (regression guard)
447
+ - ✅ Refactoring critical code where you need a safety net
448
+ - ❌ UI prototyping / visual tweaks → manual is faster
449
+ - ❌ Exploratory spike → use `/research-explore` (SPIKE — throwaway, no tests)
450
+
451
+ ## The TDD Cycle
452
+
453
+ ```
454
+ ┌──▶ RED (fail) ──▶ GREEN (minimal) ──▶ REFACTOR (cleanup) ──┐
455
+ └──────────────────── next requirement ────────────────────┘
456
+ ```
457
+
458
+ ## Phase 1: RED — failing test
459
+ 1. Pick ONE small requirement (smallest verifiable behavior)
460
+ 2. Name the test as a sentence describing behavior
461
+ 3. Arrange (inputs + mocks) → Act (call method) → Assert (output / state / interaction)
462
+ 4. Run — it MUST fail. If it passes, the test is wrong.
463
+
464
+ **Naming:** `should_<behavior>_when_<condition>` (Go/Python) · `it("returns X when Y")` (Jest) · `test_<behavior>_<condition>` (PHPUnit/Pest)
465
+
466
+ ### Gate
467
+ - [ ] Test fails for the RIGHT reason (not a typo / missing import)
468
+ - [ ] Name describes behavior, not implementation · One behavior per test
469
+
470
+ ## Phase 2: GREEN — minimal code to pass
471
+ - **Minimal** means: hardcode return values if the test allows; triangulate with more tests
472
+ - Don't add code not required by a test; don't add error handling unless a test requires it
473
+ - Don't generalize until 3+ tests force it
474
+ - If previous tests broke, you're not minimal — revert + try smaller
475
+
476
+ ### Gate
477
+ - [ ] New test passes · All previous tests still pass · No untested behavior added
478
+
479
+ ## Phase 3: REFACTOR — clean up while green
480
+ - Refactor: duplication, long methods, bad names, dead branches, coupling
481
+ - **Run tests after every change** — green is your safety net; one refactor at a time
482
+ - **No new behavior** — if a refactor needs a new test, go back to RED
483
+ - Don't refactor: flaky tests (fix flakiness first), under time pressure, code about to be deleted
484
+
485
+ ### Gate
486
+ - [ ] All tests still green · No new public API added · Code easier to read
487
+
488
+ ## Test patterns per layer (DDD)
489
+
490
+ | Layer | Test type | Dependencies |
491
+ |-------|-----------|--------------|
492
+ | Value Object / Entity | Unit (pure) | None |
493
+ | UseCase | Unit | Mock ports |
494
+ | Service | Unit | Mock usecase |
495
+ | Handler / Controller | Integration | Real router, mock service |
496
+ | Infrastructure | Integration | Real DB / testcontainers |
497
+ | Listener | Unit | Mock infra |
498
+ | API contract (cross-service) | Contract test | Real / sandboxed external |
499
+
500
+ **Stub vs fake vs mock:** stub returns canned values · fake = working in-memory impl · mock records+verifies calls. Prefer **fake** for repository tests; use **mock** only when call args are the assertion.
501
+
502
+ **Property-based testing** for pure logic with many edge cases (parsers, math, encoders): Go `gopter`, TS `fast-check`, Python `hypothesis`, Dart `glados`. Pattern: "for all valid input X, property P holds."
503
+
504
+ ## Common Mistakes
505
+ | Mistake | Fix |
506
+ |---------|-----|
507
+ | Writing tests AFTER code | Always RED first |
508
+ | Testing implementation, not behavior | Assert outputs / observable state |
509
+ | One test, many behaviors | One behavior per test |
510
+ | Mocking value objects | Use real — they're pure |
511
+ | Skipping REFACTOR | It's a phase, not optional |
512
+ | Test depends on order | Each test sets up its own state |
513
+ | Slow tests (>1s each) | Move to integration tier; keep unit <100ms |
514
+
515
+ ---
516
+ ---
517
+
518
+ # Mode ADDRESS
519
+
520
+ Fetch all review comments on an open PR you authored, address each, push, and respond back to GitHub.
521
+
522
+ **ARGUMENTS:** `PR_NUMBER` — the PR you authored.
523
+
524
+ ## Workflow
525
+
526
+ ```
527
+ FETCH → ANALYZE → FIX → RESPOND
528
+ ```
529
+
530
+ ## Phase 1: FETCH
531
+
532
+ ```bash
533
+ PR={number}
534
+ gh pr view $PR --json number,title,state,headRefName,baseRefName,author
535
+ gh pr diff $PR
536
+ gh api repos/{owner}/{repo}/pulls/$PR/comments \
537
+ --jq '.[] | {id, path, line, body, user: .user.login, created_at}'
538
+ gh api repos/{owner}/{repo}/pulls/$PR/reviews \
539
+ --jq '.[] | {id, user: .user.login, state, body}'
540
+ ```
541
+
542
+ ### Gate
543
+ - [ ] All comments fetched (line-level + review-level) · Current diff loaded
544
+ - [ ] PR is open (closed/merged → ask if user really wants to revisit)
545
+
546
+ ## Phase 2: ANALYZE — classify each comment
547
+
548
+ | Category | Action |
549
+ |----------|--------|
550
+ | **Must-fix** (bug, security, broken test, arch violation) | Fix in this round |
551
+ | **Should-fix** (style, naming, missing test for new code) | Fix unless explicit reason not to |
552
+ | **Discussion** (asking a question, proposing alternative) | Reply with reasoning before fixing |
553
+ | **Nit / preference** (subjective) | Acknowledge + decide; OK to push back politely |
554
+ | **Outdated** (code already changed) | Reply "resolved by {commit}" and resolve thread |
555
+
556
+ Ambiguous comment ("this feels off")? Ask the reviewer for specifics before guessing. Build a triage table (`# | File:line | Author | Category | Plan`).
557
+
558
+ ### Gate
559
+ - [ ] Every comment classified · Plan written per comment · Ambiguous → questions queued
560
+
561
+ ## Phase 3: FIX
562
+ - Fix in order: must-fix → should-fix → discussion outcomes
563
+ - One concern per commit (`fix(handler): validate input in DTO per #pr-comment-1`)
564
+ - After each batch: run build + lint + tests locally
565
+ - Re-run **Mode SELF** before pushing
566
+ - **Structural change requested** (move logic between layers, add a port) → use `/feature-build` (REFACTOR mode) for that subtree, then come back to respond
567
+
568
+ ### Gate
569
+ - [ ] All must-fix items addressed · Build + lint + tests green · Self-review clean
570
+
571
+ ## Phase 4: RESPOND
572
+
573
+ ```bash
574
+ git push
575
+ gh api repos/{owner}/{repo}/pulls/$PR/comments/{comment_id}/replies -f body="..."
576
+ # or single summary: gh pr review $PR --comment --body "$(cat reply.md)"
577
+ gh pr edit $PR --add-reviewer {original_reviewer} # re-request review
578
+ ```
579
+
580
+ **Reply patterns:** Fixed → "Fixed in {sha}. {what changed}." · Push back → "Keeping current approach because {reason}. Happy to revisit." · Ask back → "Could you clarify what you mean by …?" · Resolved → "Resolved by {sha} earlier in the chain."
581
+
582
+ After replying, mark threads resolved. Don't leave dangling threads.
583
+
584
+ ### Gate
585
+ - [ ] Every comment has a reply · Threads resolved · Commits pushed · Reviewer re-requested
586
+
587
+ ---
588
+ ---
589
+
590
+ ## Hard Rules (all modes)
591
+
592
+ - **Changed files / PR scope only** — don't expand to drive-by reviews.
593
+ - **Stop on CRITICAL** — fix build / lint / type errors before everything else; don't review red CI.
594
+ - **File:line for every issue / HIGH+** — no vague "somewhere in handlers".
595
+ - **Match severity honestly** — don't grade-inflate to push for a fix; one severity per finding.
596
+ - **Always include "what went well"** in PR reviews — pure-criticism reviews demoralize.
597
+ - **Don't bikeshed style** when the team has a linter — let the tool flag it.
598
+ - **ARCHITECT:** all CRITICAL/HIGH fixed before merge; MEDIUM allowed with explicit waiver; don't skip manual review.
599
+ - **TDD:** RED first always; minimal GREEN; REFACTOR is a phase, not optional; test behavior not implementation; unit tests <100ms.
600
+ - **ADDRESS:** reply to every comment; push back politely with a real reason; one concern per commit.
601
+
602
+ ## Related Skills
603
+
604
+ | When | Use |
605
+ |------|-----|
606
+ | Refactor to fix violations | `/feature-build` (REFACTOR mode) |
607
+ | Bug surfaced by review | `/fix-bug` |
608
+ | Research how others solved it | `/research-explore` (WEB mode) |
609
+ | Document the reviewed API | `/docs-sync` |
610
+
611
+ ## Recommended Agents
612
+
613
+ | Mode / Phase | Agent | Purpose |
614
+ |--------------|-------|---------|
615
+ | SELF/PR Architecture | `@clean-architect` | DDD compliance |
616
+ | SELF/PR Security | `@security-audit` | Vulnerability sweep |
617
+ | PR Performance | `@perf-optimizer` | N+1, indexes, slow paths |
618
+ | Quality | `@code-reviewer` | Code smells |
619
+ | Tests / TDD RED | `@test-writer` | Coverage + failing tests first |
620
+ | ARCHITECT automated | `@devops` | Build / lint / test scripts |
621
+ | TDD REFACTOR | `@refactor` | Patterns + cleanup |
622
+ | Fix | Stack-specific dev agent | Apply fixes |
@@ -36,7 +36,7 @@ const printSkillEditorUsage = (target) => {
36
36
  const home = target === 'codex' ? '~/.codex' : '~/.gemini';
37
37
  const local = target === 'codex' ? './.codex' : './.gemini';
38
38
  console.log(chalk.bold(` ${name}:`));
39
- console.log(chalk.gray(` MoiCle's 16 agents, 4 commands & 22 skills installed as SKILL.md files`));
39
+ console.log(chalk.gray(` MoiCle's 16 agents, 4 commands & 9 skills installed as SKILL.md files`));
40
40
  console.log(chalk.gray(` Skills under ${home}/skills or ${local}/skills`));
41
41
  console.log(chalk.gray(` Architecture docs under ${home}/architecture or ${local}/architecture`));
42
42
  if (target === 'codex') {
@@ -48,7 +48,7 @@ const printCursorUsage = () => {
48
48
  console.log(chalk.bold(' Cursor:'));
49
49
  console.log(chalk.gray(' Rules (16 agents) ~/.cursor/rules/ or ./.cursor/rules/'));
50
50
  console.log(chalk.gray(' Commands (4) ~/.cursor/commands/ or ./.cursor/commands/'));
51
- console.log(chalk.gray(' Skills (22) ~/.cursor/skills/ or ./.cursor/skills/'));
51
+ console.log(chalk.gray(' Skills (9) ~/.cursor/skills/ or ./.cursor/skills/'));
52
52
  console.log(chalk.gray(' Architecture (11) ~/.cursor/architecture/ or ./.cursor/architecture/'));
53
53
  console.log(chalk.gray(' Use @agent-name in chat or slash commands from the command palette'));
54
54
  console.log('');
@@ -1 +1 @@
1
- {"version":3,"file":"usage.js","sourceRoot":"","sources":["../../../src/commands/install/usage.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"usage.js","sourceRoot":"","sources":["../../../src/commands/install/usage.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "moicle",
3
- "version": "2.3.1",
3
+ "version": "3.0.0",
4
4
  "description": "Reusable AI agents, commands, skills, and architecture references for Claude Code",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",