speccrew 0.6.37 → 0.6.39
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-team-leader-xml.md +7 -0
- package/.speccrew/skills/speccrew-knowledge-bizs-dispatch-xml/SKILL.md +4 -0
- package/.speccrew/skills/speccrew-knowledge-system-summarize/SKILL.md +5 -5
- package/.speccrew/skills/speccrew-knowledge-system-summarize-xml/SKILL.md +3 -3
- package/.speccrew/skills/speccrew-knowledge-techs-dispatch/SKILL.md +2 -2
- package/.speccrew/skills/speccrew-knowledge-techs-dispatch-xml/SKILL.md +4 -0
- package/.speccrew/skills/speccrew-knowledge-techs-index/SKILL.md +2 -2
- package/.speccrew/skills/speccrew-knowledge-techs-index-xml/SKILL.md +2 -2
- package/.speccrew/skills/speccrew-knowledge-techs-init/SKILL.md +2 -2
- package/.speccrew/skills/speccrew-knowledge-techs-init-xml/SKILL.md +2 -2
- package/package.json +1 -1
- package/workspace-template/scripts/get-timestamp.js +35 -0
|
@@ -400,6 +400,13 @@ When user reports problems ("something went wrong", "error occurred", "not worki
|
|
|
400
400
|
- When dispatching workers: ensure task descriptions explicitly state "use PowerShell/Bash only"
|
|
401
401
|
- For JSON operations: use `node -e` with inline JS, or PowerShell `ConvertFrom-Json` / `ConvertTo-Json`
|
|
402
402
|
|
|
403
|
+
**CONTINUOUS EXECUTION ENFORCEMENT:**
|
|
404
|
+
- NEVER offer A/B/C choices during pipeline execution
|
|
405
|
+
- NEVER pause to ask "Should I continue?" when workload is large
|
|
406
|
+
- NEVER suggest "partial execution" or "on-demand initialization" as options
|
|
407
|
+
- When context window is running low, complete current stage fully, write checkpoint, then continue in next context — DO NOT ask user
|
|
408
|
+
- The ONLY acceptable reason to stop is: unrecoverable error (file system failure, missing dependencies)
|
|
409
|
+
|
|
403
410
|
**Must NOT Do:**
|
|
404
411
|
- Do not directly execute specific steps in Skill (must read Skill file first)
|
|
405
412
|
- Do not skip Skill and directly generate deliverables
|
|
@@ -105,6 +105,10 @@ Stage 4: System Summary
|
|
|
105
105
|
<field name="text">DO NOT ask for confirmation before generating output files</field>
|
|
106
106
|
<field name="text">DO NOT warn about "large number of files" or "this may take a while" — proceed with generation</field>
|
|
107
107
|
<field name="text">ONLY pause at explicit <event action="confirm"> blocks defined in the workflow</field>
|
|
108
|
+
<field name="text">DO NOT offer "continue/pause/partial" options — EVER</field>
|
|
109
|
+
<field name="text">DO NOT estimate workload and suggest breaking it into phases — execute ALL phases in sequence</field>
|
|
110
|
+
<field name="text">When many features need analysis, dispatch ALL of them — do NOT skip or defer any</field>
|
|
111
|
+
<field name="text">Context window management: if approaching limit, save progress to checkpoint file and resume — do NOT ask user for guidance</field>
|
|
108
112
|
</block>
|
|
109
113
|
|
|
110
114
|
<!-- ============================================================
|
|
@@ -55,7 +55,7 @@ Before starting, verify:
|
|
|
55
55
|
- **Empty modules directory**: If no `*-overview.md` files found, generate a skeleton system-overview.md with empty statistics and return `status: "warning"`.
|
|
56
56
|
- **Incomplete module overviews**: If a module-overview.md only has Section 1-2 (initial version), use available data and note gaps with `<!-- DATA INCOMPLETE -->`.
|
|
57
57
|
- **Same module name from different platforms**: Treat as separate modules. Use `{module_name} ({platform_type})` for display and `{module_name}_{platform_type}` as internal ID.
|
|
58
|
-
- **
|
|
58
|
+
- **Timestamp generation**: Run `node scripts/get-timestamp.js` to get current timestamp. If the script is unavailable, use system current time as fallback.
|
|
59
59
|
|
|
60
60
|
```mermaid
|
|
61
61
|
flowchart TD
|
|
@@ -261,10 +261,10 @@ Fill each `[TO BE FILLED]` placeholder with actual content:
|
|
|
261
261
|
- Read `speccrew-workspace/docs/configs/tech-stack-mappings.json` → system tech stacks and display names
|
|
262
262
|
- Read `speccrew-workspace/docs/rules/mermaid-rule.md` → Mermaid diagram guidelines
|
|
263
263
|
|
|
264
|
-
2. **
|
|
265
|
-
-
|
|
266
|
-
-
|
|
267
|
-
- Use the
|
|
264
|
+
2. **Get timestamp** by running the script:
|
|
265
|
+
- Run: `node scripts/get-timestamp.js`
|
|
266
|
+
- Default format: `YYYY-MM-DD-HHmmss` (e.g., `2026-03-17-132645`)
|
|
267
|
+
- Use the output as generation timestamp in document
|
|
268
268
|
|
|
269
269
|
3. **Determine Technology Stack**:
|
|
270
270
|
- Extract platform types from discovered module paths
|
|
@@ -292,9 +292,9 @@ rule : Constraint declaration (level: forbidden | mandatory | note)
|
|
|
292
292
|
<output name="mermaid_rules" />
|
|
293
293
|
</task>
|
|
294
294
|
|
|
295
|
-
<!--
|
|
296
|
-
<task name="get_timestamp" action="run-
|
|
297
|
-
<
|
|
295
|
+
<!-- Get timestamp via script -->
|
|
296
|
+
<task name="get_timestamp" action="run-script" description="Get current timestamp">
|
|
297
|
+
<run-script script="scripts/get-timestamp.js" output="timestamp" />
|
|
298
298
|
</task>
|
|
299
299
|
|
|
300
300
|
<!-- Gateway: Fallback for timestamp -->
|
|
@@ -308,7 +308,7 @@ speccrew-workspace/knowledges/techs/{platform_id}/
|
|
|
308
308
|
2. `speccrew-knowledge-techs-index` must check actual existing documents per platform and dynamically generate links
|
|
309
309
|
|
|
310
310
|
**Status Tracking**:
|
|
311
|
-
- **Get timestamp
|
|
311
|
+
- **Get timestamp**: Run `node scripts/get-timestamp.js` to get current timestamp
|
|
312
312
|
- **Generate `stage2-status.json`** at `speccrew-workspace/knowledges/base/sync-state/knowledge-techs/stage2-status.json`
|
|
313
313
|
|
|
314
314
|
**Stage 2 status tracks**:
|
|
@@ -675,7 +675,7 @@ THRESHOLD: warnings > 5 → flag for manual review
|
|
|
675
675
|
- `speccrew-workspace/knowledges/techs/INDEX.md` (complete with platform index and Agent mapping, dynamically generated)
|
|
676
676
|
|
|
677
677
|
**Status Tracking**:
|
|
678
|
-
- **Get timestamp
|
|
678
|
+
- **Get timestamp**: Run `node scripts/get-timestamp.js` to get current timestamp
|
|
679
679
|
- **Generate `stage3-status.json`** at `speccrew-workspace/knowledges/base/sync-state/knowledge-techs/stage3-status.json`
|
|
680
680
|
|
|
681
681
|
**Stage 3 status tracks**:
|
|
@@ -118,6 +118,10 @@ Read `speccrew-workspace/docs/configs/platform-mapping.json` for standardized pl
|
|
|
118
118
|
<field name="text">DO NOT ask for confirmation before generating output files</field>
|
|
119
119
|
<field name="text">DO NOT warn about "large number of files" or "this may take a while" — proceed with generation</field>
|
|
120
120
|
<field name="text">ONLY pause at explicit <event action="confirm"> blocks defined in the workflow</field>
|
|
121
|
+
<field name="text">DO NOT offer "continue/pause/partial" options — EVER</field>
|
|
122
|
+
<field name="text">DO NOT estimate workload and suggest breaking it into phases — execute ALL phases in sequence</field>
|
|
123
|
+
<field name="text">When many platforms need analysis, dispatch ALL of them — do NOT skip or defer any</field>
|
|
124
|
+
<field name="text">Context window management: if approaching limit, save progress to checkpoint file and resume — do NOT ask user for guidance</field>
|
|
121
125
|
</block>
|
|
122
126
|
|
|
123
127
|
<!-- ============================================================
|
|
@@ -160,8 +160,8 @@ Read each platform's INDEX.md to extract:
|
|
|
160
160
|
- Preserve all template section headers and structure
|
|
161
161
|
|
|
162
162
|
3. **Get Timestamp**:
|
|
163
|
-
- **CRITICAL**:
|
|
164
|
-
- Store the
|
|
163
|
+
- **CRITICAL**: Run `node scripts/get-timestamp.js` to get current timestamp (no format parameter needed, uses default)
|
|
164
|
+
- Store the output as `{{generated_at}}` template variable
|
|
165
165
|
|
|
166
166
|
4. **Fill the following sections** in the copied template:
|
|
167
167
|
|
|
@@ -120,8 +120,8 @@ rule : Constraint declaration (level: forbidden | mandatory | note)
|
|
|
120
120
|
</loop>
|
|
121
121
|
|
|
122
122
|
<!-- Step 4: Get Timestamp -->
|
|
123
|
-
<task id="step4-get-timestamp" action="run-
|
|
124
|
-
<run-
|
|
123
|
+
<task id="step4-get-timestamp" action="run-script" description="Get current timestamp for generated_at field">
|
|
124
|
+
<run-script script="scripts/get-timestamp.js" output="timestamp" />
|
|
125
125
|
</task>
|
|
126
126
|
|
|
127
127
|
<!-- Step 5: Generate Root INDEX.md -->
|
|
@@ -155,8 +155,8 @@ For each detected platform, extract:
|
|
|
155
155
|
### Step 3: Generate techs-manifest.json
|
|
156
156
|
|
|
157
157
|
1. **Get Timestamp**:
|
|
158
|
-
- **CRITICAL**:
|
|
159
|
-
- Store the
|
|
158
|
+
- **CRITICAL**: Run `node scripts/get-timestamp.js` to get current timestamp (no format parameter needed, uses default)
|
|
159
|
+
- Store the output as `generated_at` value
|
|
160
160
|
|
|
161
161
|
2. **Create JSON file** with detected platforms:
|
|
162
162
|
|
|
@@ -132,8 +132,8 @@ rule : Constraint declaration (level: forbidden | mandatory | note)
|
|
|
132
132
|
</loop>
|
|
133
133
|
|
|
134
134
|
<!-- Step 3: Get Timestamp -->
|
|
135
|
-
<task id="step3-get-timestamp" action="run-
|
|
136
|
-
<run-
|
|
135
|
+
<task id="step3-get-timestamp" action="run-script" description="Get current timestamp for generated_at field">
|
|
136
|
+
<run-script script="scripts/get-timestamp.js" output="timestamp" />
|
|
137
137
|
</task>
|
|
138
138
|
|
|
139
139
|
<!-- Step 4: Generate techs-manifest.json -->
|
package/package.json
CHANGED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Get current timestamp in specified format
|
|
4
|
+
* Usage: node get-timestamp.js [format]
|
|
5
|
+
* Default format: YYYY-MM-DD-HHmmss
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
const FORMATS = {
|
|
9
|
+
'YYYY-MM-DD-HHmmss': () => {
|
|
10
|
+
const now = new Date();
|
|
11
|
+
return `${now.getFullYear()}-${String(now.getMonth() + 1).padStart(2, '0')}-${String(now.getDate()).padStart(2, '0')}-${String(now.getHours()).padStart(2, '0')}${String(now.getMinutes()).padStart(2, '0')}${String(now.getSeconds()).padStart(2, '0')}`;
|
|
12
|
+
},
|
|
13
|
+
'YYYY-MM-DD': () => {
|
|
14
|
+
const now = new Date();
|
|
15
|
+
return `${now.getFullYear()}-${String(now.getMonth() + 1).padStart(2, '0')}-${String(now.getDate()).padStart(2, '0')}`;
|
|
16
|
+
},
|
|
17
|
+
'HHmm': () => {
|
|
18
|
+
const now = new Date();
|
|
19
|
+
return `${String(now.getHours()).padStart(2, '0')}${String(now.getMinutes()).padStart(2, '0')}`;
|
|
20
|
+
},
|
|
21
|
+
'ISO': () => new Date().toISOString()
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
function getTimestamp(format = 'YYYY-MM-DD-HHmmss') {
|
|
25
|
+
const formatter = FORMATS[format];
|
|
26
|
+
if (formatter) {
|
|
27
|
+
return formatter();
|
|
28
|
+
}
|
|
29
|
+
// Default fallback
|
|
30
|
+
return FORMATS['YYYY-MM-DD-HHmmss']();
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
// Main execution
|
|
34
|
+
const format = process.argv[2] || 'YYYY-MM-DD-HHmmss';
|
|
35
|
+
console.log(getTimestamp(format));
|