speccrew 0.1.12 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.speccrew/agents/speccrew-feature-designer.md +120 -0
- package/.speccrew/agents/speccrew-product-manager.md +54 -0
- package/.speccrew/agents/speccrew-system-designer.md +150 -14
- package/.speccrew/agents/speccrew-system-developer.md +309 -37
- package/.speccrew/agents/speccrew-task-worker.md +43 -0
- package/.speccrew/agents/speccrew-team-leader.md +108 -11
- package/.speccrew/agents/speccrew-test-manager.md +278 -0
- package/.speccrew/skills/speccrew-dev-backend/SKILL.md +44 -0
- package/.speccrew/skills/speccrew-dev-desktop/SKILL.md +44 -0
- package/.speccrew/skills/speccrew-dev-frontend/SKILL.md +44 -0
- package/.speccrew/skills/speccrew-dev-mobile/SKILL.md +44 -0
- package/.speccrew/skills/speccrew-fd-api-contract/SKILL.md +70 -0
- package/.speccrew/skills/speccrew-fd-feature-design/SKILL.md +158 -0
- package/.speccrew/skills/speccrew-knowledge-bizs-api-analyze/SKILL.md +59 -29
- package/.speccrew/skills/speccrew-knowledge-bizs-dispatch/SKILL.md +37 -15
- package/.speccrew/skills/speccrew-knowledge-bizs-dispatch/STATUS-FORMATS.md +29 -4
- package/.speccrew/skills/speccrew-knowledge-bizs-dispatch/scripts/process-batch-results.js +71 -4
- package/.speccrew/skills/speccrew-knowledge-bizs-ui-analyze/SKILL.md +60 -30
- package/.speccrew/skills/speccrew-pm-requirement-analysis/SKILL.md +65 -0
- package/.speccrew/skills/speccrew-sd-backend/SKILL.md +38 -0
- package/.speccrew/skills/speccrew-sd-desktop/SKILL.md +38 -0
- package/.speccrew/skills/speccrew-sd-frontend/SKILL.md +38 -0
- package/.speccrew/skills/speccrew-sd-mobile/SKILL.md +38 -0
- package/.speccrew/skills/speccrew-test-case-design/SKILL.md +33 -0
- package/.speccrew/skills/speccrew-test-code-gen/SKILL.md +34 -0
- package/.speccrew/skills/speccrew-test-execute/SKILL.md +34 -0
- package/README.ar.md +70 -3
- package/README.bn.md +52 -0
- package/README.bs.md +70 -3
- package/README.da.md +70 -3
- package/README.de.md +70 -3
- package/README.el.md +52 -0
- package/README.en.md +69 -2
- package/README.es.md +70 -3
- package/README.fr.md +70 -3
- package/README.it.md +70 -3
- package/README.ja.md +70 -3
- package/README.ko.md +70 -3
- package/README.md +69 -2
- package/README.no.md +70 -3
- package/README.pl.md +70 -3
- package/README.pt-BR.md +70 -3
- package/README.ru.md +70 -3
- package/README.th.md +69 -2
- package/README.tr.md +69 -2
- package/README.uk.md +69 -2
- package/README.vi.md +52 -0
- package/README.zh-TW.md +70 -3
- package/docs/GETTING-STARTED.ar.md +78 -4
- package/docs/GETTING-STARTED.bn.md +78 -4
- package/docs/GETTING-STARTED.bs.md +78 -4
- package/docs/GETTING-STARTED.da.md +78 -4
- package/docs/GETTING-STARTED.de.md +78 -4
- package/docs/GETTING-STARTED.el.md +78 -4
- package/docs/GETTING-STARTED.en.md +78 -4
- package/docs/GETTING-STARTED.es.md +78 -4
- package/docs/GETTING-STARTED.fr.md +78 -4
- package/docs/GETTING-STARTED.it.md +78 -4
- package/docs/GETTING-STARTED.ja.md +79 -5
- package/docs/GETTING-STARTED.ko.md +79 -5
- package/docs/GETTING-STARTED.md +78 -4
- package/docs/GETTING-STARTED.no.md +78 -4
- package/docs/GETTING-STARTED.pl.md +78 -4
- package/docs/GETTING-STARTED.pt-BR.md +78 -4
- package/docs/GETTING-STARTED.ru.md +78 -4
- package/docs/GETTING-STARTED.th.md +79 -5
- package/docs/GETTING-STARTED.tr.md +78 -4
- package/docs/GETTING-STARTED.uk.md +78 -4
- package/docs/GETTING-STARTED.vi.md +79 -5
- package/docs/GETTING-STARTED.zh-TW.md +79 -5
- package/package.json +1 -1
- package/.speccrew/skills/speccrew-create-agents/SKILL.md +0 -98
- package/.speccrew/skills/speccrew-create-agents/templates/agents/designer-agent.md +0 -54
- package/.speccrew/skills/speccrew-create-agents/templates/agents/dev-agent.md +0 -79
- package/.speccrew/skills/speccrew-create-agents/templates/agents/test-agent.md +0 -80
- package/.speccrew/skills/speccrew-project-diagnosis/SKILL.md +0 -233
- package/.speccrew/skills/speccrew-project-diagnosis/templates/DIAGNOSIS-REPORT-TEMPLATE.md +0 -202
- package/.speccrew/skills/speccrew-workflow-diagnose/SKILL.md +0 -155
- package/workspace-template/docs/solutions/Agent/346/212/200/350/203/275/345/256/232/344/271/211+/351/234/200/346/261/202/346/226/207/346/241/243+UML/344/275/277/347/224/250/346/250/241/346/235/277/357/274/210ISA-95/345/205/255/346/256/265/345/274/217/350/236/215/345/220/210/347/211/210/357/274/211.md +0 -586
- package/workspace-template/docs/solutions/harness.md +0 -410
|
@@ -71,8 +71,8 @@ Analyze one specific UI feature from source code, extract business functionality
|
|
|
71
71
|
|
|
72
72
|
**Generated Files (MANDATORY - Task is NOT complete until all files are written):**
|
|
73
73
|
1. `{{documentPath}}` - Feature documentation file
|
|
74
|
-
2. `{{completed_dir}}/{{fileName}
|
|
75
|
-
3. `{{completed_dir}}/{{fileName}
|
|
74
|
+
2. `{{completed_dir}}/{module}-{subpath}-{fileName}.done.json` - Completion status marker
|
|
75
|
+
3. `{{completed_dir}}/{module}-{subpath}-{fileName}.graph.json` - Graph data marker
|
|
76
76
|
|
|
77
77
|
**Return Value (JSON format):**
|
|
78
78
|
```json
|
|
@@ -808,7 +808,7 @@ After analysis is complete, write the results to marker files for dispatch to pr
|
|
|
808
808
|
> **ASSUMPTION**: The `completed_dir` directory already exists (pre-created by dispatch Stage 2). If write fails, report error — do NOT attempt to create directories.
|
|
809
809
|
|
|
810
810
|
### Pre-write Checklist (VERIFY before writing each file):
|
|
811
|
-
- [ ] Filename follows `{fileName}` pattern (
|
|
811
|
+
- [ ] Filename follows `{module}-{subpath}-{fileName}` pattern (see naming convention below)
|
|
812
812
|
- [ ] File content is valid JSON (not empty)
|
|
813
813
|
- [ ] All required fields are present and non-empty
|
|
814
814
|
- [ ] File is written with UTF-8 encoding
|
|
@@ -829,30 +829,57 @@ After analysis is complete, write the results to marker files for dispatch to pr
|
|
|
829
829
|
|
|
830
830
|
**✅ CORRECT Format - MUST USE:**
|
|
831
831
|
```
|
|
832
|
-
{completed_dir}/{fileName}.done.json ← Completion status marker (JSON format)
|
|
833
|
-
{completed_dir}/{fileName}.graph.json ← Graph data marker (JSON format)
|
|
832
|
+
{completed_dir}/{module}-{subpath}-{fileName}.done.json ← Completion status marker (JSON format)
|
|
833
|
+
{completed_dir}/{module}-{subpath}-{fileName}.graph.json ← Graph data marker (JSON format)
|
|
834
834
|
```
|
|
835
835
|
|
|
836
|
+
**Naming Rule Explanation:**
|
|
837
|
+
|
|
838
|
+
The marker filename MUST follow the composite naming pattern `{module}-{subpath}-{fileName}` to prevent conflicts between same-named source files.
|
|
839
|
+
|
|
840
|
+
**How to Extract Each Component from `{{sourcePath}}`:**
|
|
841
|
+
|
|
842
|
+
1. **module**: Use `{{module}}` input variable directly (e.g., `system`, `trade`, `bpm`)
|
|
843
|
+
|
|
844
|
+
2. **subpath**: Extract the middle path between the platform source root and the file name:
|
|
845
|
+
- Remove the top-level directory prefix (e.g., `yudao-ui/yudao-ui-admin-vue3/src/views/`)
|
|
846
|
+
- Remove the file name at the end
|
|
847
|
+
- Replace path separators (`/`) with hyphens (`-`)
|
|
848
|
+
- If the file is at the module root directory, subpath will be empty → omit from filename
|
|
849
|
+
|
|
850
|
+
3. **fileName**: Use `{{fileName}}` input variable (file name WITHOUT extension)
|
|
851
|
+
|
|
836
852
|
**Examples:**
|
|
837
|
-
|
|
838
|
-
|
|
853
|
+
|
|
854
|
+
| sourcePath | module | subpath | fileName | Marker Filename |
|
|
855
|
+
|------------|--------|---------|----------|-----------------|
|
|
856
|
+
| `yudao-ui/yudao-ui-admin-vue3/src/views/system/notify/message/index.vue` | `system` | `notify-message` | `index` | `system-notify-message-index.done.json` |
|
|
857
|
+
| `yudao-ui/yudao-ui-admin-vue3/src/views/system/user/index.vue` | `system` | `user` | `index` | `system-user-index.done.json` |
|
|
858
|
+
| `yudao-ui/yudao-ui-admin-vue3/src/views/bpm/process-instance/index.vue` | `bpm` | `process-instance` | `index` | `bpm-process-instance-index.done.json` |
|
|
859
|
+
|
|
860
|
+
**Special Case - Empty subpath:**
|
|
861
|
+
- If the file is directly in the module root directory (no subpath), use format: `{module}-{fileName}.done.json`
|
|
862
|
+
- Example: `yudao-ui/yudao-ui-admin-vue3/src/views/system/index.vue` → `system-index.done.json`
|
|
863
|
+
|
|
864
|
+
**Full Path Examples:**
|
|
865
|
+
- `d:/dev/speccrew/speccrew-workspace/knowledges/base/sync-state/knowledge-bizs/completed/system-notify-message-index.done.json`
|
|
866
|
+
- `d:/dev/speccrew/speccrew-workspace/knowledges/base/sync-state/knowledge-bizs/completed/system-user-index.graph.json`
|
|
839
867
|
|
|
840
868
|
**❌ WRONG Format - NEVER USE:**
|
|
841
869
|
```
|
|
842
|
-
{fileName}.
|
|
843
|
-
{fileName}.
|
|
844
|
-
{fileName}.done.
|
|
845
|
-
{fileName}
|
|
846
|
-
{fileName}
|
|
870
|
+
{fileName}.done.json ← WRONG: missing module and subpath (causes conflicts)
|
|
871
|
+
{fileName}.graph.json ← WRONG: missing module and subpath (causes conflicts)
|
|
872
|
+
{module}-{fileName}.done.json ← WRONG: missing subpath (may still conflict)
|
|
873
|
+
{fileName}.completed.json ← WRONG extension
|
|
874
|
+
{fileName}.done ← WRONG extension (missing .json)
|
|
875
|
+
{fileName}_done.json ← WRONG separator and extension
|
|
847
876
|
```
|
|
848
877
|
|
|
849
878
|
**❌ WRONG Filename Examples - NEVER USE:**
|
|
879
|
+
- `index.done.json` - WRONG: missing module and subpath (conflicts with other `index.vue` files)
|
|
880
|
+
- `system-index.done.json` - WRONG: missing subpath (if file is in `system/notify/message/`)
|
|
850
881
|
- `index.completed.json` - WRONG: uses `.completed.json` instead of `.done.json`
|
|
851
|
-
- `index.done` - WRONG: uses `.done` instead of `.done.json`
|
|
852
|
-
- `index.done.txt` - WRONG: uses `.done.txt` instead of `.done.json`
|
|
853
882
|
- `index_done.json` - WRONG: uses underscore and wrong extension
|
|
854
|
-
- `dict-index.done.json` - WRONG: has module prefix
|
|
855
|
-
- `system-index.done.json` - WRONG: has module prefix
|
|
856
883
|
|
|
857
884
|
---
|
|
858
885
|
|
|
@@ -942,9 +969,9 @@ After analysis is complete, write the results to marker files for dispatch to pr
|
|
|
942
969
|
> {"fileName": "index", "status": "success", ...}
|
|
943
970
|
> ```
|
|
944
971
|
|
|
945
|
-
Use the Write tool to create file at `{{completed_dir}}/{{fileName}
|
|
972
|
+
Use the Write tool to create file at `{{completed_dir}}/{module}-{subpath}-{fileName}.done.json`:
|
|
946
973
|
|
|
947
|
-
**Full path example:** `d:/dev/speccrew/speccrew-workspace/knowledges/base/sync-state/knowledge-bizs/completed/index.done.json`
|
|
974
|
+
**Full path example:** `d:/dev/speccrew/speccrew-workspace/knowledges/base/sync-state/knowledge-bizs/completed/system-notify-message-index.done.json`
|
|
948
975
|
|
|
949
976
|
**Complete JSON Template (ALL fields required):**
|
|
950
977
|
```json
|
|
@@ -981,12 +1008,13 @@ After analysis is complete, write the results to marker files for dispatch to pr
|
|
|
981
1008
|
|
|
982
1009
|
> **⚠️ CRITICAL**: The `documentPath` field is MANDATORY. It MUST match the `{{documentPath}}` variable from Step 5a. This is used to verify the document was created successfully.
|
|
983
1010
|
|
|
984
|
-
⚠️ **CRITICAL NAMING RULE:** Filename MUST be `{fileName}.done.json
|
|
985
|
-
- ✅ CORRECT: `index.done.json` (
|
|
986
|
-
- ✅ CORRECT: `
|
|
1011
|
+
⚠️ **CRITICAL NAMING RULE:** Filename MUST be `{module}-{subpath}-{fileName}.done.json` to prevent conflicts between same-named files.
|
|
1012
|
+
- ✅ CORRECT: `system-notify-message-index.done.json` (full composite naming)
|
|
1013
|
+
- ✅ CORRECT: `system-user-index.done.json` (full composite naming)
|
|
1014
|
+
- ✅ CORRECT: `bpm-index.done.json` (when subpath is empty, file at module root)
|
|
1015
|
+
- ❌ WRONG: `index.done.json` (missing module and subpath - will conflict)
|
|
987
1016
|
- ❌ WRONG: `index.done` (missing .json extension)
|
|
988
|
-
- ❌ WRONG: `
|
|
989
|
-
- ❌ WRONG: `system-index.done.json` (using module prefix)
|
|
1017
|
+
- ❌ WRONG: `system-index.done.json` (missing subpath when file is in nested directory)
|
|
990
1018
|
|
|
991
1019
|
⚠️ **CRITICAL:** The file MUST contain valid JSON content. Empty files or files with only whitespace will cause processing failures.
|
|
992
1020
|
|
|
@@ -994,9 +1022,9 @@ After analysis is complete, write the results to marker files for dispatch to pr
|
|
|
994
1022
|
|
|
995
1023
|
> **⚠️ CRITICAL FORMAT REQUIREMENT**: The `.graph.json` file MUST be valid JSON and **MUST include the root-level `module` field**. Do NOT rely on scripts to infer the module from `.done` file - the `module` field MUST be explicitly present at the root level of `.graph.json`.
|
|
996
1024
|
|
|
997
|
-
Use the Write tool to create file at `{{completed_dir}}/{{fileName}
|
|
1025
|
+
Use the Write tool to create file at `{{completed_dir}}/{module}-{subpath}-{fileName}.graph.json`:
|
|
998
1026
|
|
|
999
|
-
**Full path example:** `d:/dev/speccrew/speccrew-workspace/knowledges/base/sync-state/knowledge-bizs/completed/index.graph.json`
|
|
1027
|
+
**Full path example:** `d:/dev/speccrew/speccrew-workspace/knowledges/base/sync-state/knowledge-bizs/completed/system-notify-message-index.graph.json`
|
|
1000
1028
|
|
|
1001
1029
|
```json
|
|
1002
1030
|
{
|
|
@@ -1031,11 +1059,13 @@ After analysis is complete, write the results to marker files for dispatch to pr
|
|
|
1031
1059
|
> - Do NOT assume scripts will fall back to reading from `.done` file
|
|
1032
1060
|
> - Missing `module` field will cause the graph merge pipeline to reject this file
|
|
1033
1061
|
|
|
1034
|
-
⚠️ **CRITICAL NAMING RULE:** Filename MUST be `{fileName}.graph.json
|
|
1035
|
-
- ✅ CORRECT: `index.graph.json` (
|
|
1036
|
-
- ✅ CORRECT: `
|
|
1062
|
+
⚠️ **CRITICAL NAMING RULE:** Filename MUST be `{module}-{subpath}-{fileName}.graph.json` to prevent conflicts between same-named files.
|
|
1063
|
+
- ✅ CORRECT: `system-notify-message-index.graph.json` (full composite naming)
|
|
1064
|
+
- ✅ CORRECT: `system-user-index.graph.json` (full composite naming)
|
|
1065
|
+
- ✅ CORRECT: `bpm-index.graph.json` (when subpath is empty, file at module root)
|
|
1066
|
+
- ❌ WRONG: `index.graph.json` (missing module and subpath - will conflict)
|
|
1037
1067
|
- ❌ WRONG: `dict-index.graph.json` (using old featureId format)
|
|
1038
|
-
- ❌ WRONG: `system-index.graph.json` (
|
|
1068
|
+
- ❌ WRONG: `system-index.graph.json` (missing subpath when file is in nested directory)
|
|
1039
1069
|
|
|
1040
1070
|
⚠️ **CRITICAL:** The file MUST contain valid JSON content. Empty files or files with only whitespace will cause processing failures.
|
|
1041
1071
|
|
|
@@ -1047,7 +1077,7 @@ After analysis is complete, write the results to marker files for dispatch to pr
|
|
|
1047
1077
|
- [ ] Each `calls` edge has proper metadata with trigger information
|
|
1048
1078
|
- [ ] No API import is left without a corresponding edge
|
|
1049
1079
|
|
|
1050
|
-
**Output:** "Step 7 Status: ✅ COMPLETED - Marker files written ({{completed_dir}}/{{fileName}
|
|
1080
|
+
**Output:** "Step 7 Status: ✅ COMPLETED - Marker files written ({{completed_dir}}/{module}-{subpath}-{fileName}.done.json, .graph.json)"
|
|
1051
1081
|
|
|
1052
1082
|
**On Failure:** "Step 7 Status: ⚠️ PARTIAL - Marker file write failed, but analysis completed"
|
|
1053
1083
|
|
|
@@ -442,6 +442,69 @@ Please confirm the following key points:
|
|
|
442
442
|
|
|
443
443
|
After confirmation, you can start the Solution Agent for solution planning.
|
|
444
444
|
|
|
445
|
+
## Step 13: Write Progress Files
|
|
446
|
+
|
|
447
|
+
After user confirms the PRD, write progress tracking files:
|
|
448
|
+
|
|
449
|
+
### 13a Write Checkpoint File
|
|
450
|
+
|
|
451
|
+
Write or update the checkpoint file at:
|
|
452
|
+
```
|
|
453
|
+
speccrew-workspace/iterations/{iteration}/01.product-requirement/.checkpoints.json
|
|
454
|
+
```
|
|
455
|
+
|
|
456
|
+
Content:
|
|
457
|
+
```json
|
|
458
|
+
{
|
|
459
|
+
"stage": "01_prd",
|
|
460
|
+
"checkpoints": {
|
|
461
|
+
"prd_review": {
|
|
462
|
+
"passed": true,
|
|
463
|
+
"confirmed_at": "<current-ISO-timestamp>",
|
|
464
|
+
"description": "PRD review and confirmation"
|
|
465
|
+
}
|
|
466
|
+
}
|
|
467
|
+
}
|
|
468
|
+
```
|
|
469
|
+
|
|
470
|
+
### 13b Update Workflow Progress
|
|
471
|
+
|
|
472
|
+
Read and update the WORKFLOW-PROGRESS.json file:
|
|
473
|
+
|
|
474
|
+
1. **Read**: `speccrew-workspace/iterations/{iteration}/WORKFLOW-PROGRESS.json`
|
|
475
|
+
2. **Update the following fields**:
|
|
476
|
+
- `current_stage` = "02_feature_design"
|
|
477
|
+
- `01_prd.status` = "confirmed"
|
|
478
|
+
- `01_prd.completed_at` = `<current-ISO-timestamp>`
|
|
479
|
+
- `01_prd.confirmed_at` = `<current-ISO-timestamp>`
|
|
480
|
+
- `01_prd.outputs` = `["01.product-requirement/{feature-name}-prd.md"]`
|
|
481
|
+
|
|
482
|
+
**Example updated stage entry**:
|
|
483
|
+
```json
|
|
484
|
+
{
|
|
485
|
+
"01_prd": {
|
|
486
|
+
"status": "confirmed",
|
|
487
|
+
"started_at": "2026-04-08T10:00:00Z",
|
|
488
|
+
"completed_at": "2026-04-08T11:30:00Z",
|
|
489
|
+
"confirmed_at": "2026-04-08T11:35:00Z",
|
|
490
|
+
"outputs": [
|
|
491
|
+
"01.product-requirement/user-management-prd.md"
|
|
492
|
+
]
|
|
493
|
+
}
|
|
494
|
+
}
|
|
495
|
+
```
|
|
496
|
+
|
|
497
|
+
### 13c Handle Missing Progress File
|
|
498
|
+
|
|
499
|
+
If WORKFLOW-PROGRESS.json does not exist (backward compatibility):
|
|
500
|
+
- Create the file with initial structure
|
|
501
|
+
- Set `01_prd` to confirmed state directly
|
|
502
|
+
- Other stages remain as `pending`
|
|
503
|
+
|
|
504
|
+
**Status Flow**: `pending` → `in_progress` → `completed` → `confirmed`
|
|
505
|
+
|
|
506
|
+
---
|
|
507
|
+
|
|
445
508
|
# Knowledge Loading Strategy
|
|
446
509
|
|
|
447
510
|
1. **First**: Read `system-overview.md` for system context
|
|
@@ -473,3 +536,5 @@ After confirmation, you can start the Solution Agent for solution planning.
|
|
|
473
536
|
- [ ] **[If modifying existing features]** All changes marked with [EXISTING]/[MODIFIED]/[NEW]
|
|
474
537
|
- [ ] Files written to correct paths
|
|
475
538
|
- [ ] Summary shown to user and confirmation requested
|
|
539
|
+
- [ ] **[After confirmation]** Checkpoint file written to `01.product-requirement/.checkpoints.json`
|
|
540
|
+
- [ ] **[After confirmation]** WORKFLOW-PROGRESS.json updated with confirmed status and outputs
|
|
@@ -191,6 +191,44 @@ Files Generated:
|
|
|
191
191
|
- {list all file paths}
|
|
192
192
|
```
|
|
193
193
|
|
|
194
|
+
## Step 7: Task Completion Report
|
|
195
|
+
|
|
196
|
+
After completing all steps, output a structured completion report for the System Designer Agent to parse and update DISPATCH-PROGRESS.json:
|
|
197
|
+
|
|
198
|
+
### On Success
|
|
199
|
+
|
|
200
|
+
```
|
|
201
|
+
## Task Completion Report
|
|
202
|
+
- **Status**: SUCCESS
|
|
203
|
+
- **Task ID**: {task_id from context}
|
|
204
|
+
- **Platform**: {platform_id}
|
|
205
|
+
- **Feature**: {feature_name}
|
|
206
|
+
- **Output Files**:
|
|
207
|
+
- speccrew-workspace/iterations/{iter}/03.system-design/{platform_id}/INDEX.md
|
|
208
|
+
- speccrew-workspace/iterations/{iter}/03.system-design/{platform_id}/{module1}-design.md
|
|
209
|
+
- speccrew-workspace/iterations/{iter}/03.system-design/{platform_id}/{module2}-design.md
|
|
210
|
+
- **Summary**: Backend system design completed for {feature_name} on {platform_id} with {count} module designs
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
### On Failure
|
|
214
|
+
|
|
215
|
+
```
|
|
216
|
+
## Task Completion Report
|
|
217
|
+
- **Status**: FAILED
|
|
218
|
+
- **Task ID**: {task_id from context}
|
|
219
|
+
- **Platform**: {platform_id}
|
|
220
|
+
- **Feature**: {feature_name}
|
|
221
|
+
- **Output Files**: []
|
|
222
|
+
- **Error**: {description of what went wrong}
|
|
223
|
+
- **Error Category**: DEPENDENCY_MISSING | VALIDATION_ERROR | BLOCKED
|
|
224
|
+
- **Recovery Hint**: {suggestion for how to resolve or retry}
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
**Error Categories:**
|
|
228
|
+
- `DEPENDENCY_MISSING`: Required input file or knowledge document not found
|
|
229
|
+
- `VALIDATION_ERROR`: Input validation failed (e.g., invalid Feature Spec format)
|
|
230
|
+
- `BLOCKED`: Blocked by external dependency or prerequisite not met
|
|
231
|
+
|
|
194
232
|
# Key Rules
|
|
195
233
|
|
|
196
234
|
| Rule | Description |
|
|
@@ -208,6 +208,44 @@ Concerns/Trade-offs:
|
|
|
208
208
|
4. Are all API calls from API Contract covered?
|
|
209
209
|
5. Is the native integration approach suitable?
|
|
210
210
|
|
|
211
|
+
## Step 7: Task Completion Report
|
|
212
|
+
|
|
213
|
+
After completing all steps, output a structured completion report for the System Designer Agent to parse and update DISPATCH-PROGRESS.json:
|
|
214
|
+
|
|
215
|
+
### On Success
|
|
216
|
+
|
|
217
|
+
```
|
|
218
|
+
## Task Completion Report
|
|
219
|
+
- **Status**: SUCCESS
|
|
220
|
+
- **Task ID**: {task_id from context}
|
|
221
|
+
- **Platform**: {platform_id}
|
|
222
|
+
- **Feature**: {feature_name}
|
|
223
|
+
- **Output Files**:
|
|
224
|
+
- speccrew-workspace/iterations/{iter}/03.system-design/{platform_id}/INDEX.md
|
|
225
|
+
- speccrew-workspace/iterations/{iter}/03.system-design/{platform_id}/{module1}-design.md
|
|
226
|
+
- speccrew-workspace/iterations/{iter}/03.system-design/{platform_id}/{module2}-design.md
|
|
227
|
+
- **Summary**: Desktop system design completed for {feature_name} on {platform_id} with {count} module designs
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
### On Failure
|
|
231
|
+
|
|
232
|
+
```
|
|
233
|
+
## Task Completion Report
|
|
234
|
+
- **Status**: FAILED
|
|
235
|
+
- **Task ID**: {task_id from context}
|
|
236
|
+
- **Platform**: {platform_id}
|
|
237
|
+
- **Feature**: {feature_name}
|
|
238
|
+
- **Output Files**: []
|
|
239
|
+
- **Error**: {description of what went wrong}
|
|
240
|
+
- **Error Category**: DEPENDENCY_MISSING | VALIDATION_ERROR | BLOCKED
|
|
241
|
+
- **Recovery Hint**: {suggestion for how to resolve or retry}
|
|
242
|
+
```
|
|
243
|
+
|
|
244
|
+
**Error Categories:**
|
|
245
|
+
- `DEPENDENCY_MISSING`: Required input file or knowledge document not found
|
|
246
|
+
- `VALIDATION_ERROR`: Input validation failed (e.g., invalid Feature Spec format)
|
|
247
|
+
- `BLOCKED`: Blocked by external dependency or prerequisite not met
|
|
248
|
+
|
|
211
249
|
# Key Rules
|
|
212
250
|
|
|
213
251
|
| Rule | Description |
|
|
@@ -196,6 +196,44 @@ Concerns/Trade-offs:
|
|
|
196
196
|
3. Do the pseudo-code patterns match project conventions?
|
|
197
197
|
4. Are all API calls from API Contract covered?
|
|
198
198
|
|
|
199
|
+
## Step 7: Task Completion Report
|
|
200
|
+
|
|
201
|
+
After completing all steps, output a structured completion report for the System Designer Agent to parse and update DISPATCH-PROGRESS.json:
|
|
202
|
+
|
|
203
|
+
### On Success
|
|
204
|
+
|
|
205
|
+
```
|
|
206
|
+
## Task Completion Report
|
|
207
|
+
- **Status**: SUCCESS
|
|
208
|
+
- **Task ID**: {task_id from context}
|
|
209
|
+
- **Platform**: {platform_id}
|
|
210
|
+
- **Feature**: {feature_name}
|
|
211
|
+
- **Output Files**:
|
|
212
|
+
- speccrew-workspace/iterations/{iter}/03.system-design/{platform_id}/INDEX.md
|
|
213
|
+
- speccrew-workspace/iterations/{iter}/03.system-design/{platform_id}/{module1}-design.md
|
|
214
|
+
- speccrew-workspace/iterations/{iter}/03.system-design/{platform_id}/{module2}-design.md
|
|
215
|
+
- **Summary**: Frontend system design completed for {feature_name} on {platform_id} with {count} module designs
|
|
216
|
+
```
|
|
217
|
+
|
|
218
|
+
### On Failure
|
|
219
|
+
|
|
220
|
+
```
|
|
221
|
+
## Task Completion Report
|
|
222
|
+
- **Status**: FAILED
|
|
223
|
+
- **Task ID**: {task_id from context}
|
|
224
|
+
- **Platform**: {platform_id}
|
|
225
|
+
- **Feature**: {feature_name}
|
|
226
|
+
- **Output Files**: []
|
|
227
|
+
- **Error**: {description of what went wrong}
|
|
228
|
+
- **Error Category**: DEPENDENCY_MISSING | VALIDATION_ERROR | BLOCKED
|
|
229
|
+
- **Recovery Hint**: {suggestion for how to resolve or retry}
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
**Error Categories:**
|
|
233
|
+
- `DEPENDENCY_MISSING`: Required input file or knowledge document not found
|
|
234
|
+
- `VALIDATION_ERROR`: Input validation failed (e.g., invalid Feature Spec format)
|
|
235
|
+
- `BLOCKED`: Blocked by external dependency or prerequisite not met
|
|
236
|
+
|
|
199
237
|
# Key Rules
|
|
200
238
|
|
|
201
239
|
| Rule | Description |
|
|
@@ -204,6 +204,44 @@ Concerns/Trade-offs:
|
|
|
204
204
|
4. Are all API calls from API Contract covered?
|
|
205
205
|
5. Are platform-specific features (permissions, native integration) properly handled?
|
|
206
206
|
|
|
207
|
+
## Step 7: Task Completion Report
|
|
208
|
+
|
|
209
|
+
After completing all steps, output a structured completion report for the System Designer Agent to parse and update DISPATCH-PROGRESS.json:
|
|
210
|
+
|
|
211
|
+
### On Success
|
|
212
|
+
|
|
213
|
+
```
|
|
214
|
+
## Task Completion Report
|
|
215
|
+
- **Status**: SUCCESS
|
|
216
|
+
- **Task ID**: {task_id from context}
|
|
217
|
+
- **Platform**: {platform_id}
|
|
218
|
+
- **Feature**: {feature_name}
|
|
219
|
+
- **Output Files**:
|
|
220
|
+
- speccrew-workspace/iterations/{iter}/03.system-design/{platform_id}/INDEX.md
|
|
221
|
+
- speccrew-workspace/iterations/{iter}/03.system-design/{platform_id}/{module1}-design.md
|
|
222
|
+
- speccrew-workspace/iterations/{iter}/03.system-design/{platform_id}/{module2}-design.md
|
|
223
|
+
- **Summary**: Mobile system design completed for {feature_name} on {platform_id} with {count} module designs
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
### On Failure
|
|
227
|
+
|
|
228
|
+
```
|
|
229
|
+
## Task Completion Report
|
|
230
|
+
- **Status**: FAILED
|
|
231
|
+
- **Task ID**: {task_id from context}
|
|
232
|
+
- **Platform**: {platform_id}
|
|
233
|
+
- **Feature**: {feature_name}
|
|
234
|
+
- **Output Files**: []
|
|
235
|
+
- **Error**: {description of what went wrong}
|
|
236
|
+
- **Error Category**: DEPENDENCY_MISSING | VALIDATION_ERROR | BLOCKED
|
|
237
|
+
- **Recovery Hint**: {suggestion for how to resolve or retry}
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
**Error Categories:**
|
|
241
|
+
- `DEPENDENCY_MISSING`: Required input file or knowledge document not found
|
|
242
|
+
- `VALIDATION_ERROR`: Input validation failed (e.g., invalid Feature Spec format)
|
|
243
|
+
- `BLOCKED`: Blocked by external dependency or prerequisite not met
|
|
244
|
+
|
|
207
245
|
# Key Rules
|
|
208
246
|
|
|
209
247
|
| Rule | Description |
|
|
@@ -302,3 +302,36 @@ Fill each section with test case data using `search_replace`.
|
|
|
302
302
|
- [ ] Preconditions are clearly stated for each test case
|
|
303
303
|
- [ ] Steps are detailed enough for execution without ambiguity
|
|
304
304
|
- [ ] Document written to correct output path
|
|
305
|
+
|
|
306
|
+
---
|
|
307
|
+
|
|
308
|
+
# Task Completion Report
|
|
309
|
+
|
|
310
|
+
Upon completion (success or failure), output the following report format:
|
|
311
|
+
|
|
312
|
+
## Success Report
|
|
313
|
+
```
|
|
314
|
+
## Task Completion Report
|
|
315
|
+
- **Status**: SUCCESS
|
|
316
|
+
- **Task ID**: <from dispatch context, e.g., "test-case-web-vue">
|
|
317
|
+
- **Platform**: <platform_id, e.g., "web-vue">
|
|
318
|
+
- **Phase**: test_case_design
|
|
319
|
+
- **Output Files**:
|
|
320
|
+
- `speccrew-workspace/iterations/{iteration}/05.system-test/cases/{platform_id}/[feature]-test-cases.md`
|
|
321
|
+
- **Summary**: Test case design completed with {count} test cases covering {dimensions} dimensions
|
|
322
|
+
```
|
|
323
|
+
|
|
324
|
+
## Failure Report
|
|
325
|
+
```
|
|
326
|
+
## Task Completion Report
|
|
327
|
+
- **Status**: FAILED
|
|
328
|
+
- **Task ID**: <from dispatch context>
|
|
329
|
+
- **Platform**: <platform_id>
|
|
330
|
+
- **Phase**: test_case_design
|
|
331
|
+
- **Output Files**: None
|
|
332
|
+
- **Summary**: Test case design failed during {step}
|
|
333
|
+
- **Error**: <detailed error description>
|
|
334
|
+
- **Error Category**: DEPENDENCY_MISSING | BUILD_FAILURE | VALIDATION_ERROR | RUNTIME_ERROR | BLOCKED
|
|
335
|
+
- **Partial Outputs**: <list of partially generated files or "None">
|
|
336
|
+
- **Recovery Hint**: <suggestion for recovery, e.g., "Check feature spec document exists at specified path">
|
|
337
|
+
```
|
|
@@ -344,3 +344,37 @@ Fill each section with code plan data from Step 4.
|
|
|
344
344
|
- [ ] Shared fixtures and helpers are extracted properly
|
|
345
345
|
- [ ] Arrange-Act-Assert structure maintained in tests
|
|
346
346
|
- [ ] Code plan document written to correct path
|
|
347
|
+
|
|
348
|
+
---
|
|
349
|
+
|
|
350
|
+
# Task Completion Report
|
|
351
|
+
|
|
352
|
+
Upon completion (success or failure), output the following report format:
|
|
353
|
+
|
|
354
|
+
## Success Report
|
|
355
|
+
```
|
|
356
|
+
## Task Completion Report
|
|
357
|
+
- **Status**: SUCCESS
|
|
358
|
+
- **Task ID**: <from dispatch context, e.g., "test-code-web-vue">
|
|
359
|
+
- **Platform**: <platform_id, e.g., "web-vue">
|
|
360
|
+
- **Phase**: test_code_gen
|
|
361
|
+
- **Output Files**:
|
|
362
|
+
- `speccrew-workspace/iterations/{iteration}/05.system-test/code/{platform_id}/[feature]-test-code-plan.md`
|
|
363
|
+
- <list of generated test source files>
|
|
364
|
+
- **Summary**: Test code generation completed with {file_count} files covering {case_count} test cases
|
|
365
|
+
```
|
|
366
|
+
|
|
367
|
+
## Failure Report
|
|
368
|
+
```
|
|
369
|
+
## Task Completion Report
|
|
370
|
+
- **Status**: FAILED
|
|
371
|
+
- **Task ID**: <from dispatch context>
|
|
372
|
+
- **Platform**: <platform_id>
|
|
373
|
+
- **Phase**: test_code_gen
|
|
374
|
+
- **Output Files**: <list of partial outputs or "None">
|
|
375
|
+
- **Summary**: Test code generation failed during {step}
|
|
376
|
+
- **Error**: <detailed error description>
|
|
377
|
+
- **Error Category**: DEPENDENCY_MISSING | BUILD_FAILURE | VALIDATION_ERROR | RUNTIME_ERROR | BLOCKED
|
|
378
|
+
- **Partial Outputs**: <list of partially generated files or "None">
|
|
379
|
+
- **Recovery Hint**: <suggestion for recovery, e.g., "Verify test case document format is valid">
|
|
380
|
+
```
|
|
@@ -291,3 +291,37 @@ Each bug report must include:
|
|
|
291
291
|
- [ ] Bug severity is classified (Critical/High/Medium/Low)
|
|
292
292
|
- [ ] All bug reports written to correct output path
|
|
293
293
|
- [ ] Test report written to correct output path
|
|
294
|
+
|
|
295
|
+
---
|
|
296
|
+
|
|
297
|
+
# Task Completion Report
|
|
298
|
+
|
|
299
|
+
Upon completion (success or failure), output the following report format:
|
|
300
|
+
|
|
301
|
+
## Success Report
|
|
302
|
+
```
|
|
303
|
+
## Task Completion Report
|
|
304
|
+
- **Status**: SUCCESS
|
|
305
|
+
- **Task ID**: <from dispatch context, e.g., "test-exec-web-vue">
|
|
306
|
+
- **Platform**: <platform_id, e.g., "web-vue">
|
|
307
|
+
- **Phase**: test_execution
|
|
308
|
+
- **Output Files**:
|
|
309
|
+
- `speccrew-workspace/iterations/{iteration}/05.system-test/reports/[feature]-test-report.md`
|
|
310
|
+
- `speccrew-workspace/iterations/{iteration}/05.system-test/bugs/[feature]-bug-{seq}.md` (if any failures)
|
|
311
|
+
- **Summary**: Test execution completed with {passed}/{total} passed, {failed} failed, {skipped} skipped
|
|
312
|
+
```
|
|
313
|
+
|
|
314
|
+
## Failure Report
|
|
315
|
+
```
|
|
316
|
+
## Task Completion Report
|
|
317
|
+
- **Status**: FAILED
|
|
318
|
+
- **Task ID**: <from dispatch context>
|
|
319
|
+
- **Platform**: <platform_id>
|
|
320
|
+
- **Phase**: test_execution
|
|
321
|
+
- **Output Files**: <list of partial outputs or "None">
|
|
322
|
+
- **Summary**: Test execution failed during {step}
|
|
323
|
+
- **Error**: <detailed error description>
|
|
324
|
+
- **Error Category**: DEPENDENCY_MISSING | BUILD_FAILURE | VALIDATION_ERROR | RUNTIME_ERROR | BLOCKED
|
|
325
|
+
- **Partial Outputs**: <list of partially generated files or "None">
|
|
326
|
+
- **Recovery Hint**: <suggestion for recovery, e.g., "Check test dependencies are installed and test configuration is valid">
|
|
327
|
+
```
|
package/README.ar.md
CHANGED
|
@@ -41,6 +41,58 @@ SpecCrew هو إطار عمل مدمج لفريق تطوير افتراضي با
|
|
|
41
41
|
|
|
42
42
|
---
|
|
43
43
|
|
|
44
|
+
## ✨ الميزات الرئيسية
|
|
45
|
+
|
|
46
|
+
### 🏭 فريق البرمجيات الافتراضي
|
|
47
|
+
توليد بنقرة واحدة **7 أدوار وكيل احترافية** + **30+ سير عمل للمهارات**، بناء فريق برمجيات افتراضي كامل:
|
|
48
|
+
- **Team Leader** - الجدولة العالمية وإدارة التكرارات
|
|
49
|
+
- **Product Manager** - تحليل المتطلبات وإخراج PRD
|
|
50
|
+
- **Feature Designer** - تصميم الميزات + عقود API
|
|
51
|
+
- **System Designer** - تصميم الأنظمة Frontend/Backend/Mobile/Desktop
|
|
52
|
+
- **System Developer** - التطوير المتوازي متعدد المنصات
|
|
53
|
+
- **Test Manager** - تنسيق الاختبار في ثلاث مراحل
|
|
54
|
+
- **Task Worker** - تنفيذ المهام الفرعية المتوازية
|
|
55
|
+
|
|
56
|
+
### 📐 نمذجة ISA-95 ذات المراحل الست
|
|
57
|
+
استنادًا إلى منهجية النمذجة الدولية **ISA-95**، توحيد تحويل متطلبات الأعمال إلى أنظمة البرمجيات:
|
|
58
|
+
```
|
|
59
|
+
Domain Descriptions → Functions in Domains → Functions of Interest
|
|
60
|
+
↓ ↓ ↓
|
|
61
|
+
Information Flows → Categories of Information → Information Descriptions
|
|
62
|
+
```
|
|
63
|
+
- كل مرحلة تتوافق مع مخططات UML محددة (حالات الاستخدام، التسلسل، الفئات)
|
|
64
|
+
- متطلبات الأعمال "تُصقل خطوة بخطوة"، بدون فقدان المعلومات
|
|
65
|
+
- المخرجات قابلة للاستخدام مباشرة في التطوير
|
|
66
|
+
|
|
67
|
+
### 📚 نظام قاعدة المعرفة
|
|
68
|
+
بنية قاعدة معرفية من ثلاثة مستويات تضمن عمل الذكاء الاصطناعي دائمًا استنادًا إلى "مصدر الحقيقة الوحيد":
|
|
69
|
+
|
|
70
|
+
| المستوى | الدليل | المحتوى | الغرض |
|
|
71
|
+
|---------|--------|---------|--------|
|
|
72
|
+
| L1 معرفة النظام | `knowledge/techs/` | مجموعة التقنيات، البنية، الاتفاقيات | الذكاء الاصطناعي يفهم الحدود التقنية للمشروع |
|
|
73
|
+
| L2 معرفة الأعمال | `knowledge/bizs/` | وظائف الوحدات، تدفقات الأعمال، الكيانات | الذكاء الاصطناعي يفهم منطق الأعمال |
|
|
74
|
+
| L3 منتجات التكرار | `iterations/iXXX/` | PRD، وثائق التصميم، تقارير الاختبار | سلسلة التتبع الكاملة للمتطلبات الحالية |
|
|
75
|
+
|
|
76
|
+
### 🔄 خط أنابيب المعرفة ذي الأربع مراحل
|
|
77
|
+
**بنية توليد المعرفة الآلية**، توليد تلقائي لوثائق الأعمال/التقنية من الكود المصدري:
|
|
78
|
+
```
|
|
79
|
+
المرحلة 1: مسح الكود المصدري → توليد قائمة الوحدات
|
|
80
|
+
المرحلة 2: التحليل المتوازي → استخراج الميزات (عاملين متعددين متوازيًا)
|
|
81
|
+
المرحلة 3: التلخيص المتوازي → إكمال نظرة عامة على الوحدات (عاملين متعددين متوازيًا)
|
|
82
|
+
المرحلة 4: تجميع النظام → توليد بانوراما النظام
|
|
83
|
+
```
|
|
84
|
+
- يدعم **المزامنة الكاملة** و**المزامنة التزايدي** (استنادًا إلى Git diff)
|
|
85
|
+
- شخص واحد يحسن، الفريق يشارك
|
|
86
|
+
|
|
87
|
+
### 🔧 Harness إطار التنفيذ العملي
|
|
88
|
+
**إطار تنفيذ موحد**، يضمن تحويل مستندات التصميم بدقة إلى تعليمات تطوير قابلة للتنفيذ:
|
|
89
|
+
- **مبدأ دليل العمليات**: Skill هو SOP، خطوات واضحة ومتتالية ومكتملة ذاتياً
|
|
90
|
+
- **عقد المدخلات والمخرجات**: تعريف واضح للواجهات، تنفيذ صارم مثل الكود الزائف
|
|
91
|
+
- **بنية الإفصاح التدريجي**: تحميل الطبقات للمعلومات، تجنب التحميل الزائد للسياق
|
|
92
|
+
- **تفويض الوكلاء الفرعيين**: المهام المعقدة تُقسم تلقائياً، التنفيذ المتوازي يضمن الجودة
|
|
93
|
+
|
|
94
|
+
---
|
|
95
|
+
|
|
44
96
|
## 8 مشاكل أساسية تم حلها
|
|
45
97
|
|
|
46
98
|
### 1. الذكاء الاصطناعي يتجاهل توثيق المشروع الحالي (فجوة المعرفة)
|
|
@@ -189,7 +241,7 @@ speccrew init --ide claude
|
|
|
189
241
|
|
|
190
242
|
بعد التهيئة، سيتم إنشاء ما يلي في مشروعك:
|
|
191
243
|
- `.qoder/agents/` / `.cursor/agents/` / `.claude/agents/` — 7 تعريفات أدوار Agent
|
|
192
|
-
- `.qoder/skills/` / `.cursor/skills/` / `.claude/skills/` —
|
|
244
|
+
- `.qoder/skills/` / `.cursor/skills/` / `.claude/skills/` — 30+ سير عمل Skill
|
|
193
245
|
- `speccrew-workspace/` — مساحة العمل (أدلة التكرار، قاعدة المعرفة، قوالب المستندات)
|
|
194
246
|
- `.speccrewrc` — ملف تكوين SpecCrew
|
|
195
247
|
|
|
@@ -213,7 +265,22 @@ speccrew update --ide claude
|
|
|
213
265
|
|
|
214
266
|
> تتطلب مخرجات كل مرحلة تأكيداً بشرياً قبل الانتقال إلى المرحلة التالية.
|
|
215
267
|
|
|
216
|
-
### 4.
|
|
268
|
+
### 4. تحديث SpecCrew
|
|
269
|
+
|
|
270
|
+
عندما يتم إصدار نسخة جديدة من SpecCrew، يتطلب الأمر خطوتين لإكمال التحديث:
|
|
271
|
+
|
|
272
|
+
```bash
|
|
273
|
+
# Step 1: 更新全局 CLI 工具到最新版本
|
|
274
|
+
npm install -g speccrew@latest
|
|
275
|
+
|
|
276
|
+
# Step 2: 同步项目中的 Agents 和 Skills 到最新版本
|
|
277
|
+
cd /path/to/your-project
|
|
278
|
+
speccrew update
|
|
279
|
+
```
|
|
280
|
+
|
|
281
|
+
> **ملاحظة**: يقوم الأمر `npm install -g speccrew@latest` بتحديث أداة CLI نفسها، بينما يقوم الأمر `speccrew update` بتحديث ملفات تعريف Agent و Skill في المشروع. يجب تنفيذ الخطوتين لإكمال التحديث الكامل.
|
|
282
|
+
|
|
283
|
+
### 5. أوامر CLI الأخرى
|
|
217
284
|
|
|
218
285
|
```bash
|
|
219
286
|
speccrew list # عرض قائمة agents و skills المثبتة
|
|
@@ -239,7 +306,7 @@ your-project/
|
|
|
239
306
|
│ │ ├── speccrew-system-developer.md # مطور النظام: التطوير المتوازي حسب المنصة
|
|
240
307
|
│ │ ├── speccrew-test-manager.md # مدير الاختبار: تنسيق الاختبار ثلاثي المراحل
|
|
241
308
|
│ │ └── speccrew-task-worker.md # عامل المهام: تنفيذ المهام الفرعية المتوازية
|
|
242
|
-
│ └── skills/ #
|
|
309
|
+
│ └── skills/ # 30+ مهارة (مجمعة حسب الوظيفة)
|
|
243
310
|
│ ├── speccrew-pm-*/ # إدارة المنتج (تحليل المتطلبات، التقييم)
|
|
244
311
|
│ ├── speccrew-fd-*/ # تصميم الميزات (Feature Design، عقد API)
|
|
245
312
|
│ ├── speccrew-sd-*/ # تصميم النظام (واجهة/خلفية/محمول/سطح مكتب)
|