yjcli 0.2.2__tar.gz → 0.2.4__tar.gz

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 (63) hide show
  1. {yjcli-0.2.2 → yjcli-0.2.4}/PKG-INFO +1 -1
  2. {yjcli-0.2.2 → yjcli-0.2.4}/pyproject.toml +1 -1
  3. {yjcli-0.2.2 → yjcli-0.2.4}/src/yjcli/data/skills/yj-arch-core/SKILL.md +6 -1
  4. {yjcli-0.2.2 → yjcli-0.2.4}/src/yjcli/data/skills/yj-frontend/SKILL.md +13 -5
  5. {yjcli-0.2.2 → yjcli-0.2.4}/src/yjcli/data/skills/yj-mobile-app/SKILL.md +22 -9
  6. {yjcli-0.2.2 → yjcli-0.2.4}/.gitignore +0 -0
  7. {yjcli-0.2.2 → yjcli-0.2.4}/LICENSE +0 -0
  8. {yjcli-0.2.2 → yjcli-0.2.4}/README.md +0 -0
  9. {yjcli-0.2.2 → yjcli-0.2.4}/src/yjcli/__init__.py +0 -0
  10. {yjcli-0.2.2 → yjcli-0.2.4}/src/yjcli/__main__.py +0 -0
  11. {yjcli-0.2.2 → yjcli-0.2.4}/src/yjcli/cli.py +0 -0
  12. {yjcli-0.2.2 → yjcli-0.2.4}/src/yjcli/commands/__init__.py +0 -0
  13. {yjcli-0.2.2 → yjcli-0.2.4}/src/yjcli/commands/init_cmd.py +0 -0
  14. {yjcli-0.2.2 → yjcli-0.2.4}/src/yjcli/commands/platform.py +0 -0
  15. {yjcli-0.2.2 → yjcli-0.2.4}/src/yjcli/commands/service.py +0 -0
  16. {yjcli-0.2.2 → yjcli-0.2.4}/src/yjcli/commands/sync.py +0 -0
  17. {yjcli-0.2.2 → yjcli-0.2.4}/src/yjcli/data/__init__.py +0 -0
  18. {yjcli-0.2.2 → yjcli-0.2.4}/src/yjcli/data/skills/yj-backend-msa/SKILL.md +0 -0
  19. {yjcli-0.2.2 → yjcli-0.2.4}/src/yjcli/data/skills/yj-backend-service/SKILL.md +0 -0
  20. {yjcli-0.2.2 → yjcli-0.2.4}/src/yjcli/data/skills/yj-browser-extension/SKILL.md +0 -0
  21. {yjcli-0.2.2 → yjcli-0.2.4}/src/yjcli/data/skills/yj-cli/SKILL.md +0 -0
  22. {yjcli-0.2.2 → yjcli-0.2.4}/src/yjcli/data/skills/yj-pc-app/SKILL.md +0 -0
  23. {yjcli-0.2.2 → yjcli-0.2.4}/src/yjcli/data/skills/yj-scheduler/SKILL.md +0 -0
  24. {yjcli-0.2.2 → yjcli-0.2.4}/src/yjcli/data/templates/.gitignore +0 -0
  25. {yjcli-0.2.2 → yjcli-0.2.4}/src/yjcli/data/templates/AGENTS.md +0 -0
  26. {yjcli-0.2.2 → yjcli-0.2.4}/src/yjcli/data/templates/Diff.md +0 -0
  27. {yjcli-0.2.2 → yjcli-0.2.4}/src/yjcli/data/templates/Makefile +0 -0
  28. {yjcli-0.2.2 → yjcli-0.2.4}/src/yjcli/data/templates/TOOLS.md +0 -0
  29. {yjcli-0.2.2 → yjcli-0.2.4}/src/yjcli/data/templates/make.bat +0 -0
  30. {yjcli-0.2.2 → yjcli-0.2.4}/src/yjcli/data/templates/platform/envs/app/.env.development +0 -0
  31. {yjcli-0.2.2 → yjcli-0.2.4}/src/yjcli/data/templates/platform/envs/app/.env.examples +0 -0
  32. {yjcli-0.2.2 → yjcli-0.2.4}/src/yjcli/data/templates/platform/envs/app/.env.local-dev +0 -0
  33. {yjcli-0.2.2 → yjcli-0.2.4}/src/yjcli/data/templates/platform/envs/app/.env.production +0 -0
  34. {yjcli-0.2.2 → yjcli-0.2.4}/src/yjcli/data/templates/platform/envs/listen/.env.development +0 -0
  35. {yjcli-0.2.2 → yjcli-0.2.4}/src/yjcli/data/templates/platform/envs/listen/.env.examples +0 -0
  36. {yjcli-0.2.2 → yjcli-0.2.4}/src/yjcli/data/templates/platform/envs/listen/.env.local-dev +0 -0
  37. {yjcli-0.2.2 → yjcli-0.2.4}/src/yjcli/data/templates/platform/envs/listen/.env.production +0 -0
  38. {yjcli-0.2.2 → yjcli-0.2.4}/src/yjcli/data/templates/platform/envs/worker/.env.development +0 -0
  39. {yjcli-0.2.2 → yjcli-0.2.4}/src/yjcli/data/templates/platform/envs/worker/.env.examples +0 -0
  40. {yjcli-0.2.2 → yjcli-0.2.4}/src/yjcli/data/templates/platform/envs/worker/.env.local-dev +0 -0
  41. {yjcli-0.2.2 → yjcli-0.2.4}/src/yjcli/data/templates/platform/envs/worker/.env.production +0 -0
  42. {yjcli-0.2.2 → yjcli-0.2.4}/src/yjcli/data/templates/platform/frontend/package.json +0 -0
  43. {yjcli-0.2.2 → yjcli-0.2.4}/src/yjcli/data/templates/platform/frontend/vite.config.ts +0 -0
  44. {yjcli-0.2.2 → yjcli-0.2.4}/src/yjcli/data/templates/platform/scripts/deploy-common.bat +0 -0
  45. {yjcli-0.2.2 → yjcli-0.2.4}/src/yjcli/data/templates/platform/scripts/deploy-common.sh +0 -0
  46. {yjcli-0.2.2 → yjcli-0.2.4}/src/yjcli/data/templates/platform/scripts/deploy-development.bat +0 -0
  47. {yjcli-0.2.2 → yjcli-0.2.4}/src/yjcli/data/templates/platform/scripts/deploy-development.sh +0 -0
  48. {yjcli-0.2.2 → yjcli-0.2.4}/src/yjcli/data/templates/platform/scripts/deploy-production.bat +0 -0
  49. {yjcli-0.2.2 → yjcli-0.2.4}/src/yjcli/data/templates/platform/scripts/deploy-production.sh +0 -0
  50. {yjcli-0.2.2 → yjcli-0.2.4}/src/yjcli/data/templates/platform/scripts/run-all.ps1 +0 -0
  51. {yjcli-0.2.2 → yjcli-0.2.4}/src/yjcli/data/templates/platform/scripts/run.bat +0 -0
  52. {yjcli-0.2.2 → yjcli-0.2.4}/src/yjcli/data/templates/platform/scripts/run.sh +0 -0
  53. {yjcli-0.2.2 → yjcli-0.2.4}/src/yjcli/data/templates/settings.json +0 -0
  54. {yjcli-0.2.2 → yjcli-0.2.4}/src/yjcli/modules/__init__.py +0 -0
  55. {yjcli-0.2.2 → yjcli-0.2.4}/src/yjcli/modules/constants.py +0 -0
  56. {yjcli-0.2.2 → yjcli-0.2.4}/src/yjcli/modules/fsutil.py +0 -0
  57. {yjcli-0.2.2 → yjcli-0.2.4}/src/yjcli/modules/paths.py +0 -0
  58. {yjcli-0.2.2 → yjcli-0.2.4}/src/yjcli/modules/prompt.py +0 -0
  59. {yjcli-0.2.2 → yjcli-0.2.4}/src/yjcli/services/__init__.py +0 -0
  60. {yjcli-0.2.2 → yjcli-0.2.4}/src/yjcli/services/scaffold.py +0 -0
  61. {yjcli-0.2.2 → yjcli-0.2.4}/src/yjcli/services/status.py +0 -0
  62. {yjcli-0.2.2 → yjcli-0.2.4}/src/yjcli/services/sync.py +0 -0
  63. {yjcli-0.2.2 → yjcli-0.2.4}/src/yjcli/services/wiring.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: yjcli
3
- Version: 0.2.2
3
+ Version: 0.2.4
4
4
  Summary: Scaffold platforms, services, and AI agent wiring (Cursor/Claude/Codex) for YJ architecture repos.
5
5
  Project-URL: Homepage, https://github.com/yseiren87/yjcli
6
6
  Project-URL: Repository, https://github.com/yseiren87/yjcli
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "yjcli"
3
- version = "0.2.2"
3
+ version = "0.2.4"
4
4
  description = "Scaffold platforms, services, and AI agent wiring (Cursor/Claude/Codex) for YJ architecture repos."
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.12"
@@ -134,7 +134,8 @@ Missing domain does **not** mean collapse into entry. Still use flow + infra.
134
134
  Placement when unsure:
135
135
 
136
136
  1. Owned concept / shared policy across features? → domain
137
- 2. One feature’s IO / mapping / orchestration? → flow (`services/{feature}`)
137
+ 2. One feature’s IO / mapping / orchestration? → the platform-defined flow
138
+ boundary (commonly `services/{feature}`)
138
139
  3. Clients, config, logging, technical helpers? → infra (`modules`)
139
140
  4. Bootstrap / register only? → entry (`apps` or platform entry files)
140
141
  5. Otherwise do not invent a new home — extend an existing flow
@@ -142,6 +143,10 @@ Placement when unsure:
142
143
  UI clients default to **no `domain`**: model = API types; feature rules live in flow.
143
144
  Exception only for heavy client-owned offline DB/engine concepts.
144
145
 
146
+ UI platform skills may map flow and view to separate technical roots. Those
147
+ roots must use the same feature boundary so one feature's flow and view remain
148
+ easy to locate without mixing their roles.
149
+
145
150
  ## Import direction
146
151
 
147
152
  Allowed: `entry -> flow -> domain -> infra`, `entry -> infra`, `flow -> infra`, `view -> flow`, `domain -> infra`.
@@ -24,8 +24,10 @@ frontend/
24
24
  {app_name}/
25
25
  src/
26
26
  main.tsx, App.tsx # entry
27
- stores/, api/ # flow
28
- pages/, components/ # view
27
+ stores/{feature}.ts # flow state/orchestration
28
+ api/{feature}/ # flow API access/mapping
29
+ pages/{feature}/ # container view
30
+ components/{feature}/ # presentational view
29
31
  lib/, hooks/ # infra
30
32
  ```
31
33
 
@@ -35,11 +37,15 @@ One `{app_name}` = one web app. No micro-frontends unless the user requests it.
35
37
 
36
38
  ```text
37
39
  entry = src/main.tsx, src/App.tsx (routes)
38
- flow = stores + api per feature
39
- view = pages + feature components (+ generated ui primitives)
40
+ flow = stores/{feature}.ts + api/{feature}
41
+ view = pages/{feature} + components/{feature} (+ generated ui primitives)
40
42
  infra = lib/*, hooks/*
41
43
  ```
42
44
 
45
+ Flow and view use the same `{feature}` boundary under separate role roots. Do
46
+ not place a feature store or API module beside `pages/` or `components/` as if
47
+ it were a view.
48
+
43
49
  **No `src/domains/` by default.** Model = API types; feature rules live in store/container (flow).
44
50
  Exception: heavy **client-owned** offline DB/engine concepts only (then optional domain slots per core).
45
51
 
@@ -49,7 +55,9 @@ Missing domain ≠ dump DTOs/utils into `main.tsx` / `App.tsx`. Keep feature wor
49
55
 
50
56
  - Follow `yj-arch-core` env names; listen apps need `HOST`/`PORT`. No plain `.env`.
51
57
  - `npm start` / local mode must mean local-dev — do not silently point bare start at development/production deploy envs.
52
- - Store calls `api`; pages/components do not call network directly.
58
+ - Store calls the same feature's `api`; pages/components do not call network directly.
59
+ - Keep one store file per feature directly under `stores/`; do not add a
60
+ redundant `{feature}/` directory for a single store file.
53
61
  - Container route wires store + router; presentational page takes props only.
54
62
  - Routes declared at entry — do not scatter route tables; entry stays registration-thin.
55
63
  - Generated UI primitives: do not hand-edit or duplicate.
@@ -21,10 +21,11 @@ mobile-app/
21
21
  {app_name}/
22
22
  lib/
23
23
  main.dart, router.dart # entry
24
- providers/{feature}_*.dart # flow
25
- api/{feature}_api.dart # flow
26
- screens/... # view
27
- widgets/... # view
24
+ providers/{feature}.dart # flow state/orchestration
25
+ repositories/{feature}.dart # optional flow data-source composition/mapping
26
+ api/{feature}.dart # infra remote client
27
+ screens/{feature}/ # container view
28
+ widgets/{feature}/ # presentational view
28
29
  lib/ or core/ # infra
29
30
  ```
30
31
 
@@ -34,11 +35,19 @@ One `{app_name}` = one mobile service.
34
35
 
35
36
  ```text
36
37
  entry = main + router
37
- flow = providers + api
38
- view = screens (container) + presentational views/widgets
39
- infra = shared clients/formatters/utils
38
+ flow = providers/{feature}.dart + repositories/{feature}.dart
39
+ view = screens/{feature} + widgets/{feature}
40
+ infra = api/{feature}.dart clients + shared clients/formatters/utils
40
41
  ```
41
42
 
43
+ Flow and view use the same `{feature}` boundary under separate role roots. A
44
+ feature repository belongs to flow, not beside `screens/` or `widgets/` as a
45
+ view-level module.
46
+
47
+ Use a repository only when it composes data sources, cache, mapping, or feature
48
+ IO. A thin remote transport client belongs at `api/{feature}.dart` as infra; do
49
+ not add a repository that merely forwards every API call.
50
+
42
51
  **No `lib/domain/` by default.** Feature rules live in providers (flow).
43
52
  Exception: heavy **client-owned** offline DB/engine concepts only.
44
53
 
@@ -46,7 +55,11 @@ Missing domain ≠ put feature logic in `main.dart` / router registration.
46
55
 
47
56
  ## Rules
48
57
 
49
- - Provider/store calls api; widgets do not call network directly.
58
+ - Provider calls its feature repository when composition is needed; otherwise
59
+ it may call the feature `api` directly. Widgets do not call repositories or
60
+ network clients directly.
61
+ - Keep one file per feature directly under `providers/`, `repositories/`, and
62
+ `api/`; do not add a redundant `{feature}/` directory for a single file.
50
63
  - Container screen watches providers and passes plain props to presentational widgets.
51
64
  - Routes declared at entry (thin); feature work stays in providers/api.
52
65
  - Prefer symlink/consume `backend/proto/dist/dart` for MSA contracts when present. Do not copy `.proto` into the app.
@@ -56,7 +69,7 @@ Missing domain ≠ put feature logic in `main.dart` / router registration.
56
69
  ```text
57
70
  entry -> view
58
71
  view (container) -> flow
59
- flow -> api -> infra
72
+ flow -> infra (including api)
60
73
  view (presentational) -> constructor params only
61
74
  ```
62
75
 
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes