@clawplays/ospec-cli 0.3.3 → 0.3.4
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 +5 -1
- package/assets/for-ai/ar/ai-guide.md +55 -0
- package/assets/for-ai/ar/execution-protocol.md +44 -0
- package/assets/for-ai/ja-JP/ai-guide.md +55 -0
- package/assets/for-ai/ja-JP/execution-protocol.md +44 -0
- package/assets/project-conventions/ar/development-guide.md +31 -0
- package/assets/project-conventions/ar/naming-conventions.md +37 -0
- package/assets/project-conventions/ar/skill-conventions.md +33 -0
- package/assets/project-conventions/ar/workflow-conventions.md +40 -0
- package/assets/project-conventions/ja-JP/development-guide.md +31 -0
- package/assets/project-conventions/ja-JP/naming-conventions.md +45 -0
- package/assets/project-conventions/ja-JP/skill-conventions.md +33 -0
- package/assets/project-conventions/ja-JP/workflow-conventions.md +40 -0
- package/dist/cli.js +2 -2
- package/dist/commands/NewCommand.js +39 -8
- package/dist/core/types.d.ts +1 -0
- package/dist/presets/ProjectPresets.d.ts +2 -2
- package/dist/presets/ProjectPresets.js +195 -69
- package/dist/services/ConfigManager.js +6 -0
- package/dist/services/ProjectAssetRegistry.d.ts +2 -2
- package/dist/services/ProjectAssetRegistry.js +12 -0
- package/dist/services/ProjectAssetService.js +7 -1
- package/dist/services/ProjectScaffoldCommandService.js +55 -21
- package/dist/services/ProjectScaffoldService.js +108 -12
- package/dist/services/ProjectService.js +229 -558
- package/dist/services/templates/ExecutionTemplateBuilder.js +235 -9
- package/dist/services/templates/ProjectTemplateBuilder.js +878 -276
- package/dist/services/templates/TemplateBuilderBase.d.ts +2 -2
- package/dist/services/templates/TemplateBuilderBase.js +12 -3
- package/dist/services/templates/TemplateInputFactory.js +102 -47
- package/dist/services/templates/templateTypes.d.ts +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -74,7 +74,10 @@ CLI notes:
|
|
|
74
74
|
- `--summary`: project overview text written into the generated docs
|
|
75
75
|
- `--tech-stack`: comma-separated stack list such as `node,react,postgres`
|
|
76
76
|
- `--architecture`: short architecture description
|
|
77
|
-
- `--document-language`: generated doc language,
|
|
77
|
+
- `--document-language`: generated doc language, choose from `en-US`, `zh-CN`, `ja-JP`, or `ar`
|
|
78
|
+
- AI-first language resolution order: explicit language request in the conversation -> current conversation language -> persisted project language in `.skillrc`
|
|
79
|
+
- CLI language resolution order: explicit `--document-language` -> persisted project language in `.skillrc` -> existing project docs / `for-ai/*` / asset manifest -> fallback `en-US`
|
|
80
|
+
- OSpec persists the chosen project document language in `.skillrc` and reuses it for `for-ai` guidance, `ospec new`, and `ospec update`
|
|
78
81
|
- if you pass these values, OSpec uses them directly when generating project docs
|
|
79
82
|
- if you do not pass them, OSpec reuses existing docs when possible and otherwise creates placeholder docs first
|
|
80
83
|
|
|
@@ -195,6 +198,7 @@ Archive notes:
|
|
|
195
198
|
|
|
196
199
|
- **Change-ready initialization**: `ospec init` creates the protocol shell and baseline project knowledge docs in one pass.
|
|
197
200
|
- **Guided initialization**: AI-assisted init can ask once for missing summary or tech stack; direct CLI init falls back to placeholder docs when context is missing.
|
|
201
|
+
- **Stable project language**: the chosen document language is stored in `.skillrc` so later guidance and generated change docs stay consistent unless you explicitly change it.
|
|
198
202
|
- **Docs maintenance**: `ospec docs generate` refreshes or repairs project knowledge docs when you need it later.
|
|
199
203
|
- **Tracked requirement execution**: each change can keep proposal, tasks, state, verification, and review files aligned.
|
|
200
204
|
- **Queue helpers**: `queue` and `run` support explicit multi-change execution when one active change is not enough.
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: project-ai-guide
|
|
3
|
+
title: دليل الذكاء الاصطناعي
|
|
4
|
+
tags: [ai, guide, ospec]
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# دليل الذكاء الاصطناعي
|
|
8
|
+
|
|
9
|
+
## الهدف
|
|
10
|
+
|
|
11
|
+
هذه الوثيقة هي النسخة المعتمدة داخل المشروع من مواصفة OSpec الأم. يجب على الذكاء الاصطناعي اتباع القواعد المعتمدة داخل المشروع أولاً بدلاً من الارتجال انطلاقاً من المستودع الأم.
|
|
12
|
+
|
|
13
|
+
## ترتيب العمل
|
|
14
|
+
|
|
15
|
+
1. اقرأ `.skillrc`
|
|
16
|
+
2. اقرأ `SKILL.index.json`
|
|
17
|
+
3. اقرأ القواعد المعتمدة للمشروع تحت `docs/project/`
|
|
18
|
+
4. اقرأ ملفات `SKILL.md` ذات الصلة
|
|
19
|
+
5. اقرأ ملفات التنفيذ الخاصة بالتغيير الحالي
|
|
20
|
+
6. إذا كان Stitch مفعلاً وكان التغيير الحالي يفعّل `stitch_design_review`، فافحص `artifacts/stitch/approval.json` أولاً
|
|
21
|
+
7. إذا احتجت إلى تثبيت Stitch أو تبديل provider أو إصلاح doctor أو إعداد MCP أو المصادقة، فاقرأ مواصفة Stitch المحلية في المستودع أولاً. وعندما يوجد `docs/stitch-plugin-spec.zh-CN.md` فاعتبر مقاطع الإعداد فيه هي المصدر المعتمد
|
|
22
|
+
|
|
23
|
+
## السلوك المطلوب
|
|
24
|
+
|
|
25
|
+
- حافظ على `proposal.md` و`tasks.md` و`verification.md` و`review.md` باللغة المعتمدة للمشروع
|
|
26
|
+
- لا تستنتج لغة وثائق change من لغة واجهة المنتج أو locale الموقع أو من متطلب "الإنجليزية أولاً" فقط
|
|
27
|
+
- إذا كان البروتوكول المعتمد للمشروع بالصينية أو كانت وثائق change الحالية بالصينية بالفعل، فاستمر بالصينية ما لم تغيّر قواعد المشروع ذلك صراحةً
|
|
28
|
+
- استخدم الفهرس لتحديد موقع المعرفة قبل قراءة الملفات الهدف
|
|
29
|
+
- اقرأ القواعد المعتمدة للمشروع قبل بدء التنفيذ
|
|
30
|
+
- إذا كان `stitch_design_review` مفعلاً وكان `approval.json.preview_url` أو `submitted_at` فارغاً، فشغّل أولاً `ospec plugins run stitch <change-path>` لتوليد preview ثم أرسل الرابط للمستخدم
|
|
31
|
+
- إذا كانت `.skillrc.plugins.stitch.project.project_id` مضبوطة مسبقاً، فيجب إعادة استخدام مشروع Stitch نفسه وعدم إنشاء مشروع جديد
|
|
32
|
+
- إذا كانت `.skillrc.plugins.stitch.project.project_id` فارغة، فاعتبر أول تشغيل ناجح لـ Stitch هو المشروع canonical وأعد استخدامه لاحقاً
|
|
33
|
+
- إذا كان `stitch_design_review` مفعلاً وكان `approval.json.status != approved` فتوقف عند بوابة مراجعة التصميم
|
|
34
|
+
- يجب أن تفرض مراجعة صفحات Stitch تخطيطاً canonical واحداً لكل مسار أعمال
|
|
35
|
+
- عند إنتاج `light/dark` اشتق النسختين من الشاشة canonical نفسها ولا تعِد ترتيب الوحدات أو تغيّر هيكل المعلومات أو تنقل CTA أو تنشئ تركيباً مختلفاً
|
|
36
|
+
- إذا كانت الصفحة المطابقة موجودة بالفعل ففضّل `edit existing screen` أو `duplicate existing canonical screen and derive a theme variant`
|
|
37
|
+
- يجب أن يتضمن كل تسليم Stitch ملف `screen mapping` يحتوي على route ومعرفات canonical dark/light وعلاقة الاشتقاق ومعرفات الشاشات المؤرشفة
|
|
38
|
+
- يجب أرشفة أو إعادة تسمية الشاشات القديمة وشاشات الاستكشاف والشاشات المستبدلة بدلاً من تركها كصفحات رئيسية موازية للشاشة canonical
|
|
39
|
+
- إذا كان اختيار canonical أو pairing للثيمات أو screen mapping أو تنظيف التكرارات ناقصاً فلا تعتبر المراجعة مكتملة
|
|
40
|
+
- يستخدم `ospec plugins run stitch <change-path>` افتراضياً موائم Stitch provider المضبوط. استخدم runner مخصصاً فقط عند وجود override صريح في `.skillrc.plugins.stitch.runner`
|
|
41
|
+
- إذا استخدم runner مخصص `token_env` فتأكد من ضبط متغير البيئة الموافق قبل التشغيل
|
|
42
|
+
- إذا لم تتضح جاهزية runner أو Gemini CLI أو Codex CLI أو stitch MCP أو المصادقة، فشغّل أولاً `ospec plugins doctor stitch <project-path>`
|
|
43
|
+
- إذا أظهر `plugins doctor stitch` نتيجة غير PASS لفحوص provider المحدد، فاطلب من المستخدم تثبيت CLI المطلوب وإكمال إعداد stitch MCP / API token
|
|
44
|
+
- عند تثبيت Stitch أو تبديل provider أو إصلاح doctor أو إعداد MCP أو المصادقة، اقرأ مواصفة Stitch المحلية أولاً. وعندما يوجد `docs/stitch-plugin-spec.zh-CN.md` فانسخ شكل إعداد Gemini / Codex الموثق فيه بدلاً من ابتكار إعداد بديل
|
|
45
|
+
- إذا كان provider الداخلي `codex` ينجح في الاستدعاءات للقراءة فقط لكن `create_project` أو `generate_screen` أو `edit_screens` يتوقف محلياً، فتحقق أولاً من أن التشغيل يستخدم `codex exec --dangerously-bypass-approvals-and-sandbox`
|
|
46
|
+
- إذا كان المشروع يبدّل `.skillrc.plugins.stitch.runner` صراحةً ومع ذلك يبقى Codex مسؤولاً عن كتابات Stitch، فيجب على runner / wrapper المخصص تمرير `--dangerously-bypass-approvals-and-sandbox` أيضاً
|
|
47
|
+
- زامن `SKILL.md` بعد التغييرات البرمجية المهمة
|
|
48
|
+
- أعد بناء `SKILL.index.json` عند الحاجة
|
|
49
|
+
|
|
50
|
+
## أولوية قواعد المشروع
|
|
51
|
+
|
|
52
|
+
- اتفاقيات التسمية: `docs/project/naming-conventions.md`
|
|
53
|
+
- اتفاقيات SKILL: `docs/project/skill-conventions.md`
|
|
54
|
+
- اتفاقيات سير العمل: `docs/project/workflow-conventions.md`
|
|
55
|
+
- دليل التطوير: `docs/project/development-guide.md`
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: project-execution-protocol
|
|
3
|
+
title: بروتوكول التنفيذ
|
|
4
|
+
tags: [ai, protocol, ospec]
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# بروتوكول تنفيذ الذكاء الاصطناعي
|
|
8
|
+
|
|
9
|
+
## اقرأ هذا أولاً في كل مرة تدخل فيها إلى مشروع
|
|
10
|
+
|
|
11
|
+
1. `.skillrc`
|
|
12
|
+
2. `SKILL.index.json`
|
|
13
|
+
3. `docs/project/naming-conventions.md`
|
|
14
|
+
4. `docs/project/skill-conventions.md`
|
|
15
|
+
5. `docs/project/workflow-conventions.md`
|
|
16
|
+
6. ملفات change الحالية: `proposal.md / tasks.md / state.json / verification.md`
|
|
17
|
+
7. إذا وُجد `stitch_design_review` فاقرأ `artifacts/stitch/approval.json`
|
|
18
|
+
8. إذا كان يجب تعديل Stitch provider أو MCP أو إعدادات المصادقة، فاقرأ مواصفة Stitch المحلية أولاً. وعندما يوجد `docs/stitch-plugin-spec.zh-CN.md` فاعتبر مقاطع الإعداد فيه مرجعية
|
|
19
|
+
|
|
20
|
+
## القواعد الإلزامية
|
|
21
|
+
|
|
22
|
+
- حافظ على `proposal.md` و`tasks.md` و`verification.md` و`review.md` باللغة المعتمدة للمشروع
|
|
23
|
+
- لا تعِد كتابة وثائق change إلى الإنجليزية فقط لأن واجهة المنتج أو locale الموقع أو نص المتطلب يميل إلى الإنجليزية
|
|
24
|
+
- إذا كانت وثائق change الحالية بالصينية بالفعل، فاستمر بالصينية ما لم تتطلب قواعد المشروع التحويل إلى الإنجليزية صراحةً
|
|
25
|
+
- لا تتجاوز proposal/tasks وتنتقل مباشرة إلى التنفيذ
|
|
26
|
+
- استخدم `state.json` كمصدر الحقيقة لحالة التنفيذ
|
|
27
|
+
- يجب أن تظهر optional steps المفعلة في `tasks.md` و`verification.md`
|
|
28
|
+
- إذا كان `stitch_design_review` مفعلاً وكان `approval.json.preview_url` أو `submitted_at` فارغاً، فشغّل أولاً `ospec plugins run stitch <change-path>` لإرسال preview
|
|
29
|
+
- يجب أن تفرض مراجعة تصميم Stitch تخطيطاً canonical واحداً لكل route، ويجب تصنيف الشاشات غير canonical على أنها `archive / old / exploration`
|
|
30
|
+
- في متغيرات الثيم `light/dark` حافظ على التخطيط canonical نفسه وحوّل الثيم البصري فقط من دون إعادة ترتيب الوحدات أو نقل CTA أو تغيير البنية
|
|
31
|
+
- إذا كانت الصفحة المطابقة موجودة بالفعل ففضّل `edit existing screen` أو `duplicate existing canonical screen and derive a theme variant`
|
|
32
|
+
- يجب أن يخرج كل تسليم Stitch `screen mapping` يتضمن route ومعرفات canonical dark/light وعلاقة الاشتقاق ومعرفات الشاشات المؤرشفة
|
|
33
|
+
- يجب ألا تبقى الشاشات القديمة أو الاستكشافية أو المستبدلة بجوار الشاشات canonical كصفحات رئيسية موازية
|
|
34
|
+
- إذا كانت `.skillrc.plugins.stitch.project.project_id` موجودة، فأعد استخدام معرف مشروع Stitch نفسه ولا تنشئ مشروعاً آخر لهذا التغيير
|
|
35
|
+
- إذا كان مشروع Stitch canonical ما زال فارغاً، فإن أول إرسال ناجح لـ Stitch يصبح المشروع canonical للمستودع
|
|
36
|
+
- قبل تشغيل Stitch افترض أن الإضافة الداخلية `stitch` تستخدم provider المضبوط افتراضياً؛ ولا تعتبر `.skillrc.plugins.stitch.runner` مرجعاً إلا إذا كان هناك override صريح
|
|
37
|
+
- إذا كان المشروع يستخدم runner مخصصاً وكان `token_env` مضبوطاً، فتأكد من ضبط متغير البيئة الموافق
|
|
38
|
+
- إذا كانت جاهزية Stitch bridge أو Gemini CLI أو Codex CLI أو stitch MCP أو المصادقة غير واضحة، فشغّل أولاً `ospec plugins doctor stitch <project-path>`
|
|
39
|
+
- إذا كشف `plugins doctor stitch` عن مشكلات في provider أو MCP أو المصادقة، فارجع أولاً إلى مواصفة Stitch المحلية في المستودع ولا تبتكر إعدادات بديلة خارجها
|
|
40
|
+
- إذا كان provider الداخلي `codex` يستطيع تنفيذ الاستدعاءات للقراءة فقط لكن `create_project` أو `generate_screen` أو `edit_screens` يتوقف محلياً، فتحقق أولاً من أن التشغيل يستخدم `codex exec --dangerously-bypass-approvals-and-sandbox`
|
|
41
|
+
- إذا كان المشروع يبدّل `.skillrc.plugins.stitch.runner` صراحةً وما زال يستخدم Codex في كتابات Stitch، فيجب على runner / wrapper المخصص تمرير `--dangerously-bypass-approvals-and-sandbox`
|
|
42
|
+
- إذا كان `stitch_design_review` مفعلاً وكان `approval.json.status != approved` فلا تعتبر التغيير جاهزاً للاستمرار أو الاكتمال أو الأرشفة
|
|
43
|
+
- إذا كان اختيار canonical أو pairing للثيمات أو screen mapping أو تنظيف التكرارات ناقصاً فلا تعتبر مراجعة التصميم ناجحة
|
|
44
|
+
- لا تعتبر العمل مكتملاً عندما تكون ملفات `SKILL.md` والفهرس غير متزامنة
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: project-ai-guide
|
|
3
|
+
title: AI ガイド
|
|
4
|
+
tags: [ai, guide, ospec]
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# AI ガイド
|
|
8
|
+
|
|
9
|
+
## 目的
|
|
10
|
+
|
|
11
|
+
この文書は OSpec 母仕様からコピーされた、プロジェクト採用済みの AI ガイドです。AI は母リポジトリの規則を即興で当てはめるのではなく、まずこのプロジェクト採用ルールに従う必要があります。
|
|
12
|
+
|
|
13
|
+
## 作業順序
|
|
14
|
+
|
|
15
|
+
1. `.skillrc` を読む
|
|
16
|
+
2. `SKILL.index.json` を読む
|
|
17
|
+
3. `docs/project/` 配下のプロジェクト採用ルールを読む
|
|
18
|
+
4. 関連する `SKILL.md` を読む
|
|
19
|
+
5. 現在の change 実行ファイルを読む
|
|
20
|
+
6. Stitch が有効で、現在の change が `stitch_design_review` を有効化している場合は、先に `artifacts/stitch/approval.json` を確認する
|
|
21
|
+
7. Stitch のインストール、provider 切り替え、doctor 修復、MCP 設定、認証設定が必要な場合は、先にリポジトリ内の Stitch 仕様を読む。`docs/stitch-plugin-spec.zh-CN.md` が存在する場合、その設定断片を正とみなす
|
|
22
|
+
|
|
23
|
+
## 必須動作
|
|
24
|
+
|
|
25
|
+
- `proposal.md`、`tasks.md`、`verification.md`、`review.md` はプロジェクト採用の文書言語で維持する
|
|
26
|
+
- 製品 UI、サイト locale、または「英語優先」という要件だけから change 文書言語を推測しない
|
|
27
|
+
- プロジェクト採用プロトコルが中国語、または現在の change 文書がすでに中国語なら、明示的なルール変更がない限り change 文書は中国語のまま維持する
|
|
28
|
+
- 目的の文書を読む前に、まず index を使って知識の所在を確認する
|
|
29
|
+
- 実装作業前にプロジェクト採用ルールを読む
|
|
30
|
+
- `stitch_design_review` が有効で `approval.json.preview_url` または `submitted_at` が空なら、まず `ospec plugins run stitch <change-path>` を実行して preview を生成し、その URL をユーザーに送る
|
|
31
|
+
- `.skillrc.plugins.stitch.project.project_id` が既に設定されている場合は、その Stitch project を再利用し、新しい project を作成しない
|
|
32
|
+
- `.skillrc.plugins.stitch.project.project_id` が空なら、最初に成功した Stitch 実行を canonical project として以後も再利用する
|
|
33
|
+
- `stitch_design_review` が有効で `approval.json.status != approved` の間は、デザインレビューゲートで停止する
|
|
34
|
+
- Stitch のページレビューでは、各業務ルートにつき canonical layout を 1 つだけ維持する
|
|
35
|
+
- `light/dark` を作る場合は同じ canonical screen から派生し、モジュール順、情報設計、CTA の位置、構成を変えない
|
|
36
|
+
- 対応するページが既にある場合は `edit existing screen` または `duplicate existing canonical screen and derive a theme variant` を優先する
|
|
37
|
+
- すべての Stitch 成果物には、route、canonical dark/light screen id、派生関係、archived screen id を含む `screen mapping` が必要
|
|
38
|
+
- 古い画面、探索案、置き換え済み画面は canonical 画面と並列の main page として残さず、archive または rename する
|
|
39
|
+
- canonical 選定、theme pairing、screen mapping、重複整理が欠けている場合は、レビュー完了とみなさない
|
|
40
|
+
- `ospec plugins run stitch <change-path>` は既定で設定済み provider adapter を使う。`.skillrc.plugins.stitch.runner` を明示的に上書きしている場合のみ custom runner を使う
|
|
41
|
+
- custom runner で `token_env` を使う場合は、対応する環境変数が設定済みかを確認する
|
|
42
|
+
- runner、Gemini CLI、Codex CLI、stitch MCP、認証準備が不明な場合は、まず `ospec plugins doctor stitch <project-path>` を実行する
|
|
43
|
+
- `plugins doctor stitch` が選択 provider のチェックで PASS 以外を返したら、必要な CLI の導入と stitch MCP / API token 設定をユーザーに依頼する
|
|
44
|
+
- Stitch のインストール、provider 切り替え、doctor 修復、MCP 設定、認証設定では、まずリポジトリ内の Stitch 仕様を読む。`docs/stitch-plugin-spec.zh-CN.md` が存在する場合は、Gemini / Codex の設定形をそのまま使い、回避目的の別設定を即興で作らない
|
|
45
|
+
- 内蔵 `codex` provider が read-only 呼び出しでは成功するのに `create_project`、`generate_screen`、`edit_screens` が止まる場合は、`codex exec --dangerously-bypass-approvals-and-sandbox` が実際に使われているか確認する
|
|
46
|
+
- プロジェクトが `.skillrc.plugins.stitch.runner` を明示的に上書きし、それでも Codex が Stitch 書き込みを担当する場合は、その custom runner / wrapper でも `--dangerously-bypass-approvals-and-sandbox` を渡す
|
|
47
|
+
- 重要なコード変更後は `SKILL.md` を同期する
|
|
48
|
+
- 必要に応じて `SKILL.index.json` を再生成する
|
|
49
|
+
|
|
50
|
+
## プロジェクト採用ルール優先
|
|
51
|
+
|
|
52
|
+
- 命名規約: `docs/project/naming-conventions.md`
|
|
53
|
+
- SKILL 規約: `docs/project/skill-conventions.md`
|
|
54
|
+
- ワークフロー規約: `docs/project/workflow-conventions.md`
|
|
55
|
+
- 開発ガイド: `docs/project/development-guide.md`
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: project-execution-protocol
|
|
3
|
+
title: 実行プロトコル
|
|
4
|
+
tags: [ai, protocol, ospec]
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# AI 実行プロトコル
|
|
8
|
+
|
|
9
|
+
## プロジェクトに入るたびに最初に読むもの
|
|
10
|
+
|
|
11
|
+
1. `.skillrc`
|
|
12
|
+
2. `SKILL.index.json`
|
|
13
|
+
3. `docs/project/naming-conventions.md`
|
|
14
|
+
4. `docs/project/skill-conventions.md`
|
|
15
|
+
5. `docs/project/workflow-conventions.md`
|
|
16
|
+
6. 現在の change ファイル: `proposal.md / tasks.md / state.json / verification.md`
|
|
17
|
+
7. `stitch_design_review` がある場合は `artifacts/stitch/approval.json`
|
|
18
|
+
8. Stitch provider、MCP、認証設定を変更する必要がある場合は、先にリポジトリ内の Stitch 仕様を読む。`docs/stitch-plugin-spec.zh-CN.md` が存在する場合、その設定断片を正とみなす
|
|
19
|
+
|
|
20
|
+
## 必須ルール
|
|
21
|
+
|
|
22
|
+
- `proposal.md`、`tasks.md`、`verification.md`、`review.md` はプロジェクト採用の文書言語で維持する
|
|
23
|
+
- 製品 UI やサイト locale が英語中心でも、それだけを理由に change 文書を英語へ書き換えない
|
|
24
|
+
- 現在の change 文書が既に中国語なら、プロジェクトルールが明示的に英語切り替えを要求しない限り中国語のまま続ける
|
|
25
|
+
- proposal/tasks を飛ばして実装へ直行しない
|
|
26
|
+
- 実行状態の正は `state.json` とする
|
|
27
|
+
- 有効化された optional step は `tasks.md` と `verification.md` に出現していなければならない
|
|
28
|
+
- `stitch_design_review` が有効で `approval.json.preview_url` または `submitted_at` が空なら、まず `ospec plugins run stitch <change-path>` を実行して preview を提出する
|
|
29
|
+
- Stitch のデザインレビューでは、ルートごとに canonical layout を 1 つだけ維持する。非 canonical 画面は `archive / old / exploration` として明示する
|
|
30
|
+
- `light/dark` の theme 変体では canonical layout を維持し、モジュール再配置、セクション再編、CTA 移動、ナビ構造変更をしない
|
|
31
|
+
- 対応ページが既にある場合は `edit existing screen` または `duplicate existing canonical screen and derive a theme variant` を優先する
|
|
32
|
+
- Stitch 成果物は route、canonical dark/light screen id、派生関係、archived screen id を含む `screen mapping` を必ず出力する
|
|
33
|
+
- 古い画面、探索画面、置き換え済み画面を canonical 画面の横に main page として残さない
|
|
34
|
+
- `.skillrc.plugins.stitch.project.project_id` が存在する場合は、その Stitch project を再利用し、この change 用に別 project を作成しない
|
|
35
|
+
- canonical Stitch project がまだ空なら、最初に成功した Stitch 提出が canonical project になる
|
|
36
|
+
- Stitch 実行前は、既定では設定済み provider が使われるとみなす。`.skillrc.plugins.stitch.runner` が明示的に上書きされている場合のみ custom runner を使う
|
|
37
|
+
- custom runner で `token_env` を使う場合は、対応する環境変数が設定済みか確認する
|
|
38
|
+
- ローカル Stitch bridge、Gemini CLI、Codex CLI、stitch MCP、認証準備が不明なら、まず `ospec plugins doctor stitch <project-path>` を実行する
|
|
39
|
+
- `plugins doctor stitch` が provider、MCP、認証の問題を示した場合は、まずリポジトリ内 Stitch 仕様に戻る。`docs/stitch-plugin-spec.zh-CN.md` がある場合、その仕様外の代替設定を作らない
|
|
40
|
+
- 内蔵 `codex` provider が read-only 呼び出しは完了できるのに `create_project`、`generate_screen`、`edit_screens` が止まる場合は、`codex exec --dangerously-bypass-approvals-and-sandbox` が使われているか確認する
|
|
41
|
+
- プロジェクトが `.skillrc.plugins.stitch.runner` を明示的に上書きしつつ Codex で Stitch 書き込みを行う場合は、custom runner / wrapper でも `--dangerously-bypass-approvals-and-sandbox` を渡す
|
|
42
|
+
- `stitch_design_review` が有効で `approval.json.status != approved` の間は、その change を継続実装、完了、archive 可能と扱わない
|
|
43
|
+
- canonical 選定、theme pairing、screen mapping、重複整理が欠けている場合は、デザインレビュー通過とみなさない
|
|
44
|
+
- `SKILL.md` と index がずれている状態を完了扱いしない
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: project-development-guide
|
|
3
|
+
title: دليل تطوير المشروع
|
|
4
|
+
tags: [conventions, development, ospec]
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# دليل تطوير المشروع
|
|
8
|
+
|
|
9
|
+
## الهدف
|
|
10
|
+
|
|
11
|
+
هذا الملف هو دليل التطوير المعتمد داخل المشروع الذي يربط بين تخطيط المشروع وطبقة المعرفة وطبقة التنفيذ وقواعد التعاون مع الذكاء الاصطناعي.
|
|
12
|
+
|
|
13
|
+
## الخط الأساسي
|
|
14
|
+
|
|
15
|
+
- تعيش معرفة المشروع طويلة الأمد في `docs/project/`
|
|
16
|
+
- تعيش الحقائق الحالية في ملفات `SKILL.md` متعددة الطبقات
|
|
17
|
+
- تعيش تنفيذات change في `changes/active/<change>/`
|
|
18
|
+
- تعيش نقاط دخول تنفيذ الذكاء الاصطناعي في `for-ai/`
|
|
19
|
+
|
|
20
|
+
## المسار الموصى به
|
|
21
|
+
|
|
22
|
+
1. أكّد الاتفاقيات المعتمدة للمشروع
|
|
23
|
+
2. اقرأ طبقة معرفة المشروع وملفات `SKILL.md` ذات الصلة
|
|
24
|
+
3. ادخل إلى change النشط
|
|
25
|
+
4. زامن الوثائق والفهرس بعد التنفيذ
|
|
26
|
+
|
|
27
|
+
## تجنب
|
|
28
|
+
|
|
29
|
+
- لا تدع الذكاء الاصطناعي يخترع اتفاقيات التسمية أثناء العمل
|
|
30
|
+
- لا تتجاوز `changes/` في الأعمال طويلة الأمد
|
|
31
|
+
- لا تحدّث الكود من دون تحديث طبقة المعرفة
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: project-naming-conventions
|
|
3
|
+
title: اتفاقيات تسمية المشروع
|
|
4
|
+
tags: [conventions, naming, ospec]
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# اتفاقيات التسمية
|
|
8
|
+
|
|
9
|
+
## الهدف
|
|
10
|
+
|
|
11
|
+
هذا الملف هو النسخة المعتمدة داخل المشروع من مواصفة OSpec الأم. وهو يثبت قواعد التسمية داخل المشروع حتى لا يخترع الذكاء الاصطناعي أو البشر أنماط تسمية عشوائية.
|
|
12
|
+
|
|
13
|
+
## القواعد الأساسية
|
|
14
|
+
|
|
15
|
+
- تستخدم أسماء الأدلة والوحدات وchanges صيغة kebab-case الصغيرة
|
|
16
|
+
- تستخدم flags وoptional steps صيغة snake_case الصغيرة
|
|
17
|
+
- تحتفظ ملفات بروتوكول workflow بأسمائها الثابتة
|
|
18
|
+
- تستخدم وثائق API أسماء semantic بصيغة kebab-case
|
|
19
|
+
|
|
20
|
+
## أسماء change
|
|
21
|
+
|
|
22
|
+
- استخدم `changes/active/<change-name>/`
|
|
23
|
+
- مثال: `add-token-refresh`
|
|
24
|
+
- تجنب التواريخ والمسافات والأحرف الكبيرة والتسميات غير الدلالية
|
|
25
|
+
|
|
26
|
+
## أسماء الوحدات
|
|
27
|
+
|
|
28
|
+
- تستخدم أدلة الوحدات أسماء إنجليزية دلالية
|
|
29
|
+
- مثال: `src/modules/auth`, `src/modules/content`
|
|
30
|
+
- تحتفظ كل وحدة بملف `SKILL.md` في جذرها
|
|
31
|
+
|
|
32
|
+
## أسماء الوثائق
|
|
33
|
+
|
|
34
|
+
- وثائق المشروع في `docs/project/`
|
|
35
|
+
- وثائق التصميم في `docs/design/`
|
|
36
|
+
- وثائق التخطيط في `docs/planning/`
|
|
37
|
+
- وثائق API في `docs/api/`
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: project-skill-conventions
|
|
3
|
+
title: اتفاقيات SKILL
|
|
4
|
+
tags: [conventions, skill, ospec]
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# اتفاقيات SKILL
|
|
8
|
+
|
|
9
|
+
## الهدف
|
|
10
|
+
|
|
11
|
+
يثبت هذا الملف حدود المسؤولية لملفات `SKILL.md` متعددة الطبقات حتى يتمكن الذكاء الاصطناعي من الوصول إلى السياق بشكل ثابت عبر الفهرس ثم قراءة وثيقة المعرفة الصحيحة.
|
|
12
|
+
|
|
13
|
+
## البنية متعددة الطبقات
|
|
14
|
+
|
|
15
|
+
- `SKILL.md` الجذري: خريطة دخول المشروع
|
|
16
|
+
- `docs/SKILL.md`: مركز docs
|
|
17
|
+
- `src/SKILL.md`: خريطة المصدر
|
|
18
|
+
- `src/core/SKILL.md`: طبقة المنصة الأساسية
|
|
19
|
+
- `src/modules/<module>/SKILL.md`: وحدة معرفة خاصة بالوحدة
|
|
20
|
+
- `tests/SKILL.md`: استراتيجية الاختبارات ومدخلها
|
|
21
|
+
|
|
22
|
+
## قواعد التحرير
|
|
23
|
+
|
|
24
|
+
- توثق ملفات `SKILL.md` الحقائق الحالية لا الخطط المستقبلية
|
|
25
|
+
- يجب أن تغطي ملفات `SKILL.md` الخاصة بالوحدات المسؤوليات والبنية وAPI والاعتماديات وتوقعات الاختبار
|
|
26
|
+
- عند تغير API أو الحدود، حدّث ملف `SKILL.md` الموافق
|
|
27
|
+
- عند إنشاء وحدة جديدة، أضف ملف `SKILL.md` الخاص بها
|
|
28
|
+
|
|
29
|
+
## العلاقة مع الفهرس
|
|
30
|
+
|
|
31
|
+
- `SKILL.index.json` للاكتشاف وليس بديلاً عن `SKILL.md`
|
|
32
|
+
- أعد بناء الفهرس بعد تحديث `SKILL.md`
|
|
33
|
+
- يجب على الذكاء الاصطناعي قراءة الفهرس أولاً ثم ملف `SKILL.md` الهدف
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: project-workflow-conventions
|
|
3
|
+
title: اتفاقيات تنفيذ workflow
|
|
4
|
+
tags: [conventions, workflow, change, ospec]
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# اتفاقيات تنفيذ workflow
|
|
8
|
+
|
|
9
|
+
## الهدف
|
|
10
|
+
|
|
11
|
+
تثبت هذه الوثيقة مسار تنفيذ OSpec داخل المشروع حتى تنتقل المتطلبات عبر planning وimplementation وverification وarchive مع بوابات متسقة.
|
|
12
|
+
|
|
13
|
+
## الترتيب القياسي
|
|
14
|
+
|
|
15
|
+
1. توضيح سياق المشروع ونطاق التأثير
|
|
16
|
+
2. إنشاء `proposal.md` أو تحديثه
|
|
17
|
+
3. إنشاء `tasks.md` أو تحديثه
|
|
18
|
+
4. دفع التنفيذ وفق `state.json`
|
|
19
|
+
5. تحديث `SKILL.md` ذي الصلة
|
|
20
|
+
6. إعادة بناء `SKILL.index.json`
|
|
21
|
+
7. إكمال `verification.md`
|
|
22
|
+
8. الأرشفة فقط بعد اجتياز جميع البوابات
|
|
23
|
+
|
|
24
|
+
## قيود الحالة
|
|
25
|
+
|
|
26
|
+
- استخدم `state.json` كمصدر الحقيقة لحالة التنفيذ
|
|
27
|
+
- لا يستبدل `verification.md` ملف `state.json`
|
|
28
|
+
- إذا اختلفت ملفات الحالة وملفات التنفيذ، أصلح الحالة أولاً
|
|
29
|
+
|
|
30
|
+
## لغة الوثائق
|
|
31
|
+
|
|
32
|
+
- حافظ على `proposal.md` و`tasks.md` و`verification.md` و`review.md` باللغة المعتمدة للمشروع
|
|
33
|
+
- قد تختلف لغة واجهة المنتج عن لغة وثائق OSpec الخاصة بالchange؛ لا تستنتج إحداهما من الأخرى
|
|
34
|
+
- إذا أُنشىء change بالصينية، فاستمر بالصينية ما لم تتطلب قواعد المشروع التحويل إلى الإنجليزية صراحةً
|
|
35
|
+
|
|
36
|
+
## optional steps
|
|
37
|
+
|
|
38
|
+
- يتم التحكم في تفعيل optional steps عبر `.skillrc.workflow`
|
|
39
|
+
- يجب أن تبقى proposal flags متوافقة مع إعدادات workflow
|
|
40
|
+
- يجب أن تظهر optional steps المفعلة في `tasks.md` و`verification.md`
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: project-development-guide
|
|
3
|
+
title: プロジェクト開発ガイド
|
|
4
|
+
tags: [conventions, development, ospec]
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# プロジェクト開発ガイド
|
|
8
|
+
|
|
9
|
+
## 目的
|
|
10
|
+
|
|
11
|
+
このファイルは、プロジェクト計画、知識レイヤー、実行レイヤー、AI 協業ルールをつなぐ、プロジェクト採用済みの開発ガイドです。
|
|
12
|
+
|
|
13
|
+
## ベースライン
|
|
14
|
+
|
|
15
|
+
- 長期的なプロジェクト知識は `docs/project/` に置く
|
|
16
|
+
- 現在の事実はレイヤー化された `SKILL.md` に置く
|
|
17
|
+
- change 実行は `changes/active/<change>/` に置く
|
|
18
|
+
- AI 実行の入口は `for-ai/` に置く
|
|
19
|
+
|
|
20
|
+
## 推奨フロー
|
|
21
|
+
|
|
22
|
+
1. プロジェクト採用規約を確認する
|
|
23
|
+
2. プロジェクト知識レイヤーと関連 `SKILL.md` を読む
|
|
24
|
+
3. active change に入る
|
|
25
|
+
4. 実装後に文書と index を同期する
|
|
26
|
+
|
|
27
|
+
## 避けること
|
|
28
|
+
|
|
29
|
+
- AI にその場で命名規則を発明させない
|
|
30
|
+
- 長期作業で `changes/` を迂回しない
|
|
31
|
+
- 知識レイヤーを更新せずにコードだけ変えない
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: project-naming-conventions
|
|
3
|
+
title: プロジェクト命名規約
|
|
4
|
+
tags: [conventions, naming, ospec]
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# 命名規約
|
|
8
|
+
|
|
9
|
+
## 目的
|
|
10
|
+
|
|
11
|
+
このファイルは OSpec 母仕様をプロジェクト内に取り込んだものです。AI と人間が場当たり的な命名を発明しないよう、プロジェクト内の命名規則を固定します。
|
|
12
|
+
|
|
13
|
+
## 基本ルール
|
|
14
|
+
|
|
15
|
+
- ディレクトリ、モジュール、change 名は小文字の kebab-case を使う
|
|
16
|
+
- flags と optional steps は小文字の snake_case を使う
|
|
17
|
+
- ワークフロープロトコルファイルは固定ファイル名を保つ
|
|
18
|
+
- API 文書は意味のある kebab-case 名を使う
|
|
19
|
+
|
|
20
|
+
## change 名
|
|
21
|
+
|
|
22
|
+
- `changes/active/<change-name>/` を使う
|
|
23
|
+
- 例: `add-token-refresh`
|
|
24
|
+
- 日付、空白、大文字、意味の薄いラベルは避ける
|
|
25
|
+
|
|
26
|
+
## モジュール名
|
|
27
|
+
|
|
28
|
+
- モジュールディレクトリは意味のある英語名を使う
|
|
29
|
+
- 例: `src/modules/auth`, `src/modules/content`
|
|
30
|
+
- 各モジュールはルートに `SKILL.md` を置く
|
|
31
|
+
|
|
32
|
+
## 文書名
|
|
33
|
+
|
|
34
|
+
- プロジェクト文書は `docs/project/`
|
|
35
|
+
- 設計文書は `docs/design/`
|
|
36
|
+
- 計画文書は `docs/planning/`
|
|
37
|
+
- API 文書は `docs/api/`
|
|
38
|
+
|
|
39
|
+
## 固定プロトコルファイル
|
|
40
|
+
|
|
41
|
+
- `proposal.md`
|
|
42
|
+
- `tasks.md`
|
|
43
|
+
- `state.json`
|
|
44
|
+
- `verification.md`
|
|
45
|
+
- `review.md`
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: project-skill-conventions
|
|
3
|
+
title: SKILL 規約
|
|
4
|
+
tags: [conventions, skill, ospec]
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# SKILL 規約
|
|
8
|
+
|
|
9
|
+
## 目的
|
|
10
|
+
|
|
11
|
+
このファイルはレイヤー化された `SKILL.md` の責務境界を固定し、AI が index を使って正しい知識文書へ一貫して到達できるようにします。
|
|
12
|
+
|
|
13
|
+
## レイヤー構造
|
|
14
|
+
|
|
15
|
+
- ルート `SKILL.md`: プロジェクト入口マップ
|
|
16
|
+
- `docs/SKILL.md`: docs ハブ
|
|
17
|
+
- `src/SKILL.md`: ソースマップ
|
|
18
|
+
- `src/core/SKILL.md`: コア基盤レイヤー
|
|
19
|
+
- `src/modules/<module>/SKILL.md`: モジュール知識単位
|
|
20
|
+
- `tests/SKILL.md`: テスト戦略と入口
|
|
21
|
+
|
|
22
|
+
## 作成ルール
|
|
23
|
+
|
|
24
|
+
- `SKILL.md` は将来計画ではなく現在の事実を記述する
|
|
25
|
+
- モジュール `SKILL.md` は責務、構造、API、依存関係、テスト期待を扱う
|
|
26
|
+
- API や境界が変わったら関連する `SKILL.md` を更新する
|
|
27
|
+
- 新しいモジュールを作成したら、その `SKILL.md` を追加する
|
|
28
|
+
|
|
29
|
+
## index との関係
|
|
30
|
+
|
|
31
|
+
- `SKILL.index.json` は発見用であり、`SKILL.md` の代替ではない
|
|
32
|
+
- `SKILL.md` 更新後は index を再生成する
|
|
33
|
+
- AI はまず index を読み、その後に対象 `SKILL.md` を読む
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: project-workflow-conventions
|
|
3
|
+
title: ワークフロー実行規約
|
|
4
|
+
tags: [conventions, workflow, change, ospec]
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# ワークフロー実行規約
|
|
8
|
+
|
|
9
|
+
## 目的
|
|
10
|
+
|
|
11
|
+
この文書はプロジェクト内の OSpec 実行フローを固定し、要件が planning、implementation、verification、archive を一貫した gate で通過できるようにします。
|
|
12
|
+
|
|
13
|
+
## 標準順序
|
|
14
|
+
|
|
15
|
+
1. プロジェクト文脈と影響範囲を確認する
|
|
16
|
+
2. `proposal.md` を作成または更新する
|
|
17
|
+
3. `tasks.md` を作成または更新する
|
|
18
|
+
4. `state.json` に従って実装を進める
|
|
19
|
+
5. 関連する `SKILL.md` を更新する
|
|
20
|
+
6. `SKILL.index.json` を再生成する
|
|
21
|
+
7. `verification.md` を完了させる
|
|
22
|
+
8. すべての gate 通過後にだけ archive する
|
|
23
|
+
|
|
24
|
+
## 状態制約
|
|
25
|
+
|
|
26
|
+
- 実行状態の正は `state.json` とする
|
|
27
|
+
- `verification.md` は `state.json` の代わりにならない
|
|
28
|
+
- 状態ファイルと実行ファイルが矛盾する場合は、まず状態を直す
|
|
29
|
+
|
|
30
|
+
## 文書言語
|
|
31
|
+
|
|
32
|
+
- `proposal.md`、`tasks.md`、`verification.md`、`review.md` はプロジェクト採用文書言語で維持する
|
|
33
|
+
- 製品 UI 言語と OSpec change 文書言語は異なってよく、片方からもう片方を推測しない
|
|
34
|
+
- change が中国語で作成されている場合は、プロジェクトルールが明示的に英語切り替えを要求しない限り中国語で継続する
|
|
35
|
+
|
|
36
|
+
## optional steps
|
|
37
|
+
|
|
38
|
+
- optional step の有効化は `.skillrc.workflow` で管理する
|
|
39
|
+
- proposal flags は workflow 設定と整合していなければならない
|
|
40
|
+
- 有効化された optional step は `tasks.md` と `verification.md` に必ず出す
|
package/dist/cli.js
CHANGED
|
@@ -224,10 +224,10 @@ const services_1 = require("./services");
|
|
|
224
224
|
|
|
225
225
|
|
|
226
226
|
|
|
227
|
-
const CLI_VERSION = '0.3.
|
|
227
|
+
const CLI_VERSION = '0.3.4';
|
|
228
228
|
|
|
229
229
|
function showInitUsage() {
|
|
230
|
-
console.log('Usage: ospec init [root-dir] [--summary "..."] [--tech-stack node,react] [--architecture "..."] [--document-language zh-CN|
|
|
230
|
+
console.log('Usage: ospec init [root-dir] [--summary "..."] [--tech-stack node,react] [--architecture "..."] [--document-language en-US|zh-CN|ja-JP|ar]');
|
|
231
231
|
}
|
|
232
232
|
|
|
233
233
|
function parseInitCommandArgs(commandArgs) {
|
|
@@ -131,10 +131,10 @@ class NewCommand extends BaseCommand_1.BaseCommand {
|
|
|
131
131
|
if (guideLanguage) {
|
|
132
132
|
return guideLanguage;
|
|
133
133
|
}
|
|
134
|
-
return '
|
|
134
|
+
return 'en-US';
|
|
135
135
|
}
|
|
136
136
|
normalizeDocumentLanguage(input) {
|
|
137
|
-
return input === 'en-US' || input === 'zh-CN' ? input : null;
|
|
137
|
+
return input === 'en-US' || input === 'zh-CN' || input === 'ja-JP' || input === 'ar' ? input : null;
|
|
138
138
|
}
|
|
139
139
|
async readDocumentLanguageFromAssetManifest(targetDir) {
|
|
140
140
|
const manifestPath = path.join(targetDir, '.ospec', 'asset-sources.json');
|
|
@@ -151,6 +151,12 @@ class NewCommand extends BaseCommand_1.BaseCommand {
|
|
|
151
151
|
for (const targetRelativePath of ['for-ai/ai-guide.md', 'for-ai/execution-protocol.md']) {
|
|
152
152
|
const asset = assets.find(item => item?.targetRelativePath === targetRelativePath);
|
|
153
153
|
const sourceRelativePath = typeof asset?.sourceRelativePath === 'string' ? asset.sourceRelativePath : '';
|
|
154
|
+
if (sourceRelativePath.includes('/ar/')) {
|
|
155
|
+
return 'ar';
|
|
156
|
+
}
|
|
157
|
+
if (sourceRelativePath.includes('/ja-JP/')) {
|
|
158
|
+
return 'ja-JP';
|
|
159
|
+
}
|
|
154
160
|
if (sourceRelativePath.includes('/en-US/')) {
|
|
155
161
|
return 'en-US';
|
|
156
162
|
}
|
|
@@ -171,18 +177,43 @@ class NewCommand extends BaseCommand_1.BaseCommand {
|
|
|
171
177
|
}
|
|
172
178
|
try {
|
|
173
179
|
const content = await services_1.services.fileService.readFile(aiGuidePath);
|
|
174
|
-
|
|
175
|
-
return 'zh-CN';
|
|
176
|
-
}
|
|
177
|
-
if (/[A-Za-z]/.test(content)) {
|
|
178
|
-
return 'en-US';
|
|
179
|
-
}
|
|
180
|
+
return this.detectDocumentLanguageFromText(content) || null;
|
|
180
181
|
}
|
|
181
182
|
catch {
|
|
182
183
|
return null;
|
|
183
184
|
}
|
|
184
185
|
return null;
|
|
185
186
|
}
|
|
187
|
+
detectDocumentLanguageFromText(content) {
|
|
188
|
+
if (typeof content !== 'string' || content.trim().length === 0) {
|
|
189
|
+
return null;
|
|
190
|
+
}
|
|
191
|
+
if (/[\u0600-\u06FF]/.test(content)) {
|
|
192
|
+
return 'ar';
|
|
193
|
+
}
|
|
194
|
+
if (/[ぁ-ゟ゠-ヿ]/.test(content)) {
|
|
195
|
+
return 'ja-JP';
|
|
196
|
+
}
|
|
197
|
+
if (this.isLikelyJapaneseKanjiContent(content)) {
|
|
198
|
+
return 'ja-JP';
|
|
199
|
+
}
|
|
200
|
+
if (/[一-龥]/.test(content)) {
|
|
201
|
+
return 'zh-CN';
|
|
202
|
+
}
|
|
203
|
+
if (/[A-Za-z]/.test(content)) {
|
|
204
|
+
return 'en-US';
|
|
205
|
+
}
|
|
206
|
+
return null;
|
|
207
|
+
}
|
|
208
|
+
isLikelyJapaneseKanjiContent(content) {
|
|
209
|
+
if (!/[一-龥]/.test(content)) {
|
|
210
|
+
return false;
|
|
211
|
+
}
|
|
212
|
+
if (/[々〆ヵヶ「」『』]/.test(content)) {
|
|
213
|
+
return true;
|
|
214
|
+
}
|
|
215
|
+
return /(一覧|詳細|設定|権限|検索|構成|変更|確認|対応|連携|承認|申請|手順|履歴|機能|実装|設計|運用|画面|帳票|組織|拠点|区分|種別|完了|開始|終了|表示|取得|追加|削除|更新|登録)/.test(content);
|
|
216
|
+
}
|
|
186
217
|
async ensureChangeNameAvailable(targetDir, featureName) {
|
|
187
218
|
const activeDir = PathUtils_1.PathUtils.getChangeDir(targetDir, constants_1.DIR_NAMES.ACTIVE, featureName);
|
|
188
219
|
const queuedDir = PathUtils_1.PathUtils.getChangeDir(targetDir, constants_1.DIR_NAMES.QUEUED, featureName);
|
package/dist/core/types.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ProjectMode } from '../core/types';
|
|
2
2
|
export type ProjectPresetId = 'official-site' | 'nextjs-web';
|
|
3
|
-
export type ProjectPresetDocumentLanguage = 'zh-CN' | 'en-US';
|
|
3
|
+
export type ProjectPresetDocumentLanguage = 'zh-CN' | 'en-US' | 'ja-JP' | 'ar';
|
|
4
4
|
export interface ProjectPresetFirstChangeSuggestion {
|
|
5
5
|
name: string;
|
|
6
6
|
background: string;
|
|
@@ -38,4 +38,4 @@ export declare const getLocalizedProjectPresetContent: (presetId: ProjectPresetI
|
|
|
38
38
|
export declare const inferProjectPresetFromDescription: (description: string) => ProjectPresetDefinition | undefined;
|
|
39
39
|
export declare const getProjectPresetFirstChangeSuggestion: (presetId: ProjectPresetId | null | undefined, language: ProjectPresetDocumentLanguage, projectName: string) => ProjectPresetFirstChangeSuggestion | null;
|
|
40
40
|
export {};
|
|
41
|
-
//# sourceMappingURL=ProjectPresets.d.ts.map
|
|
41
|
+
//# sourceMappingURL=ProjectPresets.d.ts.map
|