mindforge-cc 2.3.0 → 2.3.5
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/.mindforge/memory/knowledge-base.jsonl +11 -0
- package/.mindforge/memory/pattern-library.jsonl +2 -0
- package/.mindforge/memory/team-preferences.jsonl +5 -0
- package/.planning/AUDIT.jsonl +1 -1
- package/.planning/HANDOFF.json +6 -26
- package/.planning/ROADMAP.md +3 -1
- package/.planning/jira-sync.json +3 -7
- package/.planning/phases/.gitkeep +0 -0
- package/.planning/research/.gitkeep +0 -0
- package/.planning/screenshots/.gitkeep +0 -0
- package/.planning/slack-threads.json +1 -4
- package/CHANGELOG.md +69 -9
- package/README.md +1 -1
- package/RELEASENOTES.md +1 -1
- package/bin/installer-core.js +143 -46
- package/bin/wizard/theme.js +3 -1
- package/package.json +1 -1
- package/.planning/approvals/v2-architecture-approval.json +0 -15
- package/.planning/decisions/ADR-001-handoff-tracking.md +0 -41
- package/.planning/decisions/ADR-002-markdown-commands.md +0 -46
- package/.planning/decisions/ADR-003-skills-trigger-model.md +0 -37
- package/.planning/decisions/ADR-004-wave-parallelism-model.md +0 -45
- package/.planning/decisions/ADR-005-append-only-audit-log.md +0 -51
- package/.planning/decisions/ADR-006-tiered-skills-system.md +0 -22
- package/.planning/decisions/ADR-007-trigger-keyword-model.md +0 -22
- package/.planning/decisions/ADR-008-just-in-time-skill-loading.md +0 -29
- package/.planning/decisions/ADR-009-enterprise-integration-retry-policy.md +0 -8
- package/.planning/decisions/ADR-010-governance-tier-escalation.md +0 -8
- package/.planning/decisions/ADR-011-multi-developer-handoff-contract.md +0 -8
- package/.planning/decisions/ADR-012-intelligence-feedback-loops.md +0 -19
- package/.planning/decisions/ADR-013-mindforge-md-constitution.md +0 -16
- package/.planning/decisions/ADR-014-metrics-as-signals-not-evaluation.md +0 -15
- package/.planning/decisions/ADR-015-npm-based-skill-registry.md +0 -26
- package/.planning/decisions/ADR-016-ci-exit-code-0-on-timeout.md +0 -27
- package/.planning/decisions/ADR-017-sdk-localhost-only.md +0 -28
- package/.planning/decisions/ADR-018-installer-self-install-detection.md +0 -15
- package/.planning/decisions/ADR-019-self-update-scope-preservation.md +0 -14
- package/.planning/decisions/ADR-020-v1.0.0-stable-interface-contract.md +0 -23
- package/.planning/decisions/ADR-021-autonomy-boundary.md +0 -17
- package/.planning/decisions/ADR-022-node-repair-hierarchy.md +0 -19
- package/.planning/decisions/ADR-023-gate-3-timing.md +0 -15
- package/.planning/decisions/ADR-036-learn-command-docs-as-skill-source.md +0 -26
- package/.planning/decisions/ADR-037-auto-capture-frequency-threshold.md +0 -26
- package/.planning/decisions/ADR-038-skill-quality-minimum-60.md +0 -27
- package/.planning/phases/day1/REVIEW-DAY1.md +0 -50
- package/.planning/phases/day1/SECURITY-REVIEW-DAY1.md +0 -15
- package/.planning/phases/day2/REVIEW-DAY2.md +0 -521
- package/.planning/phases/day3/REVIEW-DAY3.md +0 -234
- /package/{.planning/phases/01-migrate-gsd-to-mindforge/.gitkeep → .mindforge/memory/decision-library.jsonl} +0 -0
- /package/docs/{Context → context}/Master-Context.md +0 -0
- /package/docs/{References → references}/audit-events.md +0 -0
- /package/docs/{References → references}/checkpoints.md +0 -0
- /package/docs/{References → references}/commands.md +0 -0
- /package/docs/{References → references}/config-reference.md +0 -0
- /package/docs/{References → references}/continuation-format.md +0 -0
- /package/docs/{References → references}/decimal-phase-calculation.md +0 -0
- /package/docs/{References → references}/git-integration.md +0 -0
- /package/docs/{References → references}/git-planning-commit.md +0 -0
- /package/docs/{References → references}/model-profile-resolution.md +0 -0
- /package/docs/{References → references}/model-profiles.md +0 -0
- /package/docs/{References → references}/phase-argument-parsing.md +0 -0
- /package/docs/{References → references}/planning-config.md +0 -0
- /package/docs/{References → references}/questioning.md +0 -0
- /package/docs/{References → references}/sdk-api.md +0 -0
- /package/docs/{References → references}/skills-api.md +0 -0
- /package/docs/{References → references}/tdd.md +0 -0
- /package/docs/{References → references}/ui-brand.md +0 -0
- /package/docs/{References → references}/user-profiling.md +0 -0
- /package/docs/{References → references}/verification-patterns.md +0 -0
- /package/docs/{References → references}/workstream-flag.md +0 -0
- /package/docs/{Templates → templates}/Agents/CLAUDE-MD.md +0 -0
- /package/docs/{Templates → templates}/Agents/COPILOT-INSTRUCTIONS.md +0 -0
- /package/docs/{Templates → templates}/Agents/DEBUGGER-PROMPT.md +0 -0
- /package/docs/{Templates → templates}/Agents/PLANNER-PROMPT.md +0 -0
- /package/docs/{Templates → templates}/Execution/CONTINUE-HERE.md +0 -0
- /package/docs/{Templates → templates}/Execution/DISCUSSION-LOG.md +0 -0
- /package/docs/{Templates → templates}/Execution/PHASE-PROMPT.md +0 -0
- /package/docs/{Templates → templates}/Execution/STATE.md +0 -0
- /package/docs/{Templates → templates}/Execution/SUMMARY-COMPLEX.md +0 -0
- /package/docs/{Templates → templates}/Execution/SUMMARY-MINIMAL.md +0 -0
- /package/docs/{Templates → templates}/Execution/SUMMARY-STANDARD.md +0 -0
- /package/docs/{Templates → templates}/Execution/SUMMARY.md +0 -0
- /package/docs/{Templates → templates}/Profile/DEV-PREFERENCES.md +0 -0
- /package/docs/{Templates → templates}/Profile/USER-PROFILE.md +0 -0
- /package/docs/{Templates → templates}/Profile/USER-SETUP.md +0 -0
- /package/docs/{Templates → templates}/Project/DISCOVERY.md +0 -0
- /package/docs/{Templates → templates}/Project/MILESTONE-ARCHIVE.md +0 -0
- /package/docs/{Templates → templates}/Project/MILESTONE.md +0 -0
- /package/docs/{Templates → templates}/Project/PROJECT.md +0 -0
- /package/docs/{Templates → templates}/Project/REQUIREMENTS.md +0 -0
- /package/docs/{Templates → templates}/Project/RETROSPECTIVE.md +0 -0
- /package/docs/{Templates → templates}/Project/ROADMAP.md +0 -0
- /package/docs/{Templates → templates}/Quality/DEBUG.md +0 -0
- /package/docs/{Templates → templates}/Quality/UAT.md +0 -0
- /package/docs/{Templates → templates}/Quality/UI-SPEC.md +0 -0
- /package/docs/{Templates → templates}/Quality/VALIDATION.md +0 -0
- /package/docs/{Templates → templates}/Quality/VERIFICATION-REPORT.md +0 -0
- /package/docs/{Templates → templates}/System/CONFIG.json +0 -0
- /package/docs/{Templates → templates}/System/CONTEXT.md +0 -0
- /package/docs/{Templates/Codebase → templates/codebase}/architecture.md +0 -0
- /package/docs/{Templates/Codebase → templates/codebase}/concerns.md +0 -0
- /package/docs/{Templates/Codebase → templates/codebase}/conventions.md +0 -0
- /package/docs/{Templates/Codebase → templates/codebase}/integrations.md +0 -0
- /package/docs/{Templates/Codebase → templates/codebase}/stack.md +0 -0
- /package/docs/{Templates/Codebase → templates/codebase}/structure.md +0 -0
- /package/docs/{Templates/Codebase → templates/codebase}/testing.md +0 -0
- /package/docs/{Templates/Research → templates/research}/ARCHITECTURE.md +0 -0
- /package/docs/{Templates/Research → templates/research}/FEATURES.md +0 -0
- /package/docs/{Templates/Research → templates/research}/PITFALLS.md +0 -0
- /package/docs/{Templates/Research → templates/research}/STACK.md +0 -0
- /package/docs/{Templates/Research → templates/research}/SUMMARY.md +0 -0
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
{"id":"34a7925f-7361-4836-91eb-916495033861","timestamp":"2026-03-22T17:25:37.659Z","type":"team_preference","topic":"Use Tailwind","content":"Always use Tailwind for CSS.","source":"manual","project":"[Project Name]","confidence":0.9,"tags":["ui","css"],"linked_adrs":[],"times_referenced":0,"last_referenced":null,"deprecated":false,"deprecated_by":null}
|
|
2
|
+
{"id":"34a7925f-7361-4836-91eb-916495033861","timestamp":"2026-03-22T17:25:37.659Z","type":"team_preference","topic":"Use Tailwind","content":"Always use Tailwind for CSS.","source":"manual","project":"[Project Name]","confidence":0.9500000000000001,"tags":["ui","css"],"linked_adrs":[],"times_referenced":1,"last_referenced":"2026-03-22T17:25:37.665Z","deprecated":false,"deprecated_by":null}
|
|
3
|
+
{"id":"34a7925f-7361-4836-91eb-916495033861","timestamp":"2026-03-22T17:25:37.659Z","type":"team_preference","topic":"Use Tailwind","content":"Always use Tailwind for CSS.","source":"manual","project":"[Project Name]","confidence":0.9500000000000001,"tags":["ui","css"],"linked_adrs":[],"times_referenced":1,"last_referenced":"2026-03-22T17:25:37.665Z","deprecated":true,"deprecated_by":null,"deprecated_reason":"Switching to Vanilla CSS","deprecated_at":"2026-03-22T17:25:37.666Z"}
|
|
4
|
+
{"id":"a2d4b3a6-fdaa-4c9a-b654-286d9ea133e2","timestamp":"2026-03-22T17:25:37.670Z","type":"domain_knowledge","topic":"Auth with JWT","content":"Secure JWT with httpOnly cookies.","source":"manual","project":"[Project Name]","confidence":0.8,"tags":["auth"],"linked_adrs":[],"times_referenced":0,"last_referenced":null,"deprecated":false,"deprecated_by":null}
|
|
5
|
+
{"id":"6c1f0f31-3903-4b95-bae8-5473ffbec9eb","timestamp":"2026-03-22T17:25:37.671Z","type":"domain_knowledge","topic":"Database SQL","content":"Use indexed columns for fast queries.","source":"manual","project":"[Project Name]","confidence":0.7,"tags":["db"],"linked_adrs":[],"times_referenced":0,"last_referenced":null,"deprecated":false,"deprecated_by":null}
|
|
6
|
+
{"id":"a9878977-cb7c-4dcf-8161-760ffd5e7de9","timestamp":"2026-03-22T17:25:37.673Z","type":"code_pattern","topic":"React Memo","content":"Use React.memo to prevent re-renders.","source":"manual","project":"[Project Name]","confidence":0.6,"tags":["ui"],"linked_adrs":[],"times_referenced":0,"last_referenced":null,"deprecated":false,"deprecated_by":null}
|
|
7
|
+
{"id":"739dcb0a-9c4b-40d2-846b-535b7e4cb274","timestamp":"2026-03-22T17:25:51.782Z","type":"team_preference","topic":"Use Tailwind","content":"Always use Tailwind for CSS.","source":"manual","project":"[Project Name]","confidence":0.9,"tags":["ui","css"],"linked_adrs":[],"times_referenced":0,"last_referenced":null,"deprecated":false,"deprecated_by":null}
|
|
8
|
+
{"id":"739dcb0a-9c4b-40d2-846b-535b7e4cb274","timestamp":"2026-03-22T17:25:51.782Z","type":"team_preference","topic":"Use Tailwind","content":"Always use Tailwind for CSS.","source":"manual","project":"[Project Name]","confidence":0.9500000000000001,"tags":["ui","css"],"linked_adrs":[],"times_referenced":1,"last_referenced":"2026-03-25T17:42:57.286Z","deprecated":false,"deprecated_by":null}
|
|
9
|
+
{"id":"a9878977-cb7c-4dcf-8161-760ffd5e7de9","timestamp":"2026-03-22T17:25:37.673Z","type":"code_pattern","topic":"React Memo","content":"Use React.memo to prevent re-renders.","source":"manual","project":"[Project Name]","confidence":0.65,"tags":["ui"],"linked_adrs":[],"times_referenced":1,"last_referenced":"2026-03-25T17:42:57.297Z","deprecated":false,"deprecated_by":null}
|
|
10
|
+
{"id":"a2d4b3a6-fdaa-4c9a-b654-286d9ea133e2","timestamp":"2026-03-22T17:25:37.670Z","type":"domain_knowledge","topic":"Auth with JWT","content":"Secure JWT with httpOnly cookies.","source":"manual","project":"[Project Name]","confidence":0.8500000000000001,"tags":["auth"],"linked_adrs":[],"times_referenced":1,"last_referenced":"2026-03-25T17:42:57.298Z","deprecated":false,"deprecated_by":null}
|
|
11
|
+
{"id":"6c1f0f31-3903-4b95-bae8-5473ffbec9eb","timestamp":"2026-03-22T17:25:37.671Z","type":"domain_knowledge","topic":"Database SQL","content":"Use indexed columns for fast queries.","source":"manual","project":"[Project Name]","confidence":0.75,"tags":["db"],"linked_adrs":[],"times_referenced":1,"last_referenced":"2026-03-25T17:42:57.299Z","deprecated":false,"deprecated_by":null}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
{"id":"a9878977-cb7c-4dcf-8161-760ffd5e7de9","timestamp":"2026-03-22T17:25:37.673Z","type":"code_pattern","topic":"React Memo","content":"Use React.memo to prevent re-renders.","source":"manual","project":"[Project Name]","confidence":0.6,"tags":["ui"],"linked_adrs":[],"times_referenced":0,"last_referenced":null,"deprecated":false,"deprecated_by":null}
|
|
2
|
+
{"id":"a9878977-cb7c-4dcf-8161-760ffd5e7de9","timestamp":"2026-03-22T17:25:37.673Z","type":"code_pattern","topic":"React Memo","content":"Use React.memo to prevent re-renders.","source":"manual","project":"[Project Name]","confidence":0.65,"tags":["ui"],"linked_adrs":[],"times_referenced":1,"last_referenced":"2026-03-25T17:42:57.297Z","deprecated":false,"deprecated_by":null}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
{"id":"34a7925f-7361-4836-91eb-916495033861","timestamp":"2026-03-22T17:25:37.659Z","type":"team_preference","topic":"Use Tailwind","content":"Always use Tailwind for CSS.","source":"manual","project":"[Project Name]","confidence":0.9,"tags":["ui","css"],"linked_adrs":[],"times_referenced":0,"last_referenced":null,"deprecated":false,"deprecated_by":null}
|
|
2
|
+
{"id":"34a7925f-7361-4836-91eb-916495033861","timestamp":"2026-03-22T17:25:37.659Z","type":"team_preference","topic":"Use Tailwind","content":"Always use Tailwind for CSS.","source":"manual","project":"[Project Name]","confidence":0.9500000000000001,"tags":["ui","css"],"linked_adrs":[],"times_referenced":1,"last_referenced":"2026-03-22T17:25:37.665Z","deprecated":false,"deprecated_by":null}
|
|
3
|
+
{"id":"34a7925f-7361-4836-91eb-916495033861","timestamp":"2026-03-22T17:25:37.659Z","type":"team_preference","topic":"Use Tailwind","content":"Always use Tailwind for CSS.","source":"manual","project":"[Project Name]","confidence":0.9500000000000001,"tags":["ui","css"],"linked_adrs":[],"times_referenced":1,"last_referenced":"2026-03-22T17:25:37.665Z","deprecated":true,"deprecated_by":null,"deprecated_reason":"Switching to Vanilla CSS","deprecated_at":"2026-03-22T17:25:37.666Z"}
|
|
4
|
+
{"id":"739dcb0a-9c4b-40d2-846b-535b7e4cb274","timestamp":"2026-03-22T17:25:51.782Z","type":"team_preference","topic":"Use Tailwind","content":"Always use Tailwind for CSS.","source":"manual","project":"[Project Name]","confidence":0.9,"tags":["ui","css"],"linked_adrs":[],"times_referenced":0,"last_referenced":null,"deprecated":false,"deprecated_by":null}
|
|
5
|
+
{"id":"739dcb0a-9c4b-40d2-846b-535b7e4cb274","timestamp":"2026-03-22T17:25:51.782Z","type":"team_preference","topic":"Use Tailwind","content":"Always use Tailwind for CSS.","source":"manual","project":"[Project Name]","confidence":0.9500000000000001,"tags":["ui","css"],"linked_adrs":[],"times_referenced":1,"last_referenced":"2026-03-25T17:42:57.286Z","deprecated":false,"deprecated_by":null}
|
package/.planning/AUDIT.jsonl
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"
|
|
1
|
+
{"event":"INIT","date":"2026-03-25T00:00:00Z","summary":"MindForge Project Initialized"}
|
package/.planning/HANDOFF.json
CHANGED
|
@@ -1,28 +1,8 @@
|
|
|
1
1
|
{
|
|
2
|
-
"
|
|
3
|
-
"
|
|
4
|
-
"
|
|
5
|
-
"
|
|
6
|
-
"
|
|
7
|
-
"
|
|
8
|
-
"description": null,
|
|
9
|
-
"commit_sha": null,
|
|
10
|
-
"verified": null
|
|
11
|
-
},
|
|
12
|
-
"next_task": "Run /mindforge:init-project",
|
|
13
|
-
"in_progress": {
|
|
14
|
-
"file": null,
|
|
15
|
-
"intent": null,
|
|
16
|
-
"completed_steps": [],
|
|
17
|
-
"remaining_steps": []
|
|
18
|
-
},
|
|
19
|
-
"blockers": [],
|
|
20
|
-
"decisions_needed": [],
|
|
21
|
-
"context_refs": [],
|
|
22
|
-
"agent_notes": "",
|
|
23
|
-
"session_summary": "",
|
|
24
|
-
"recent_files": [],
|
|
25
|
-
"recent_commits": [],
|
|
26
|
-
"updated_at": null,
|
|
27
|
-
"_warning": "Never store secrets, tokens, or passwords in this file. It is tracked in git."
|
|
2
|
+
"_warning": "DO NOT ADD SECRETS OR SENSITIVE DATA TO THIS FILE. IT IS SYNCED ACROSS SESSIONS.",
|
|
3
|
+
"schema_type": "HANDOFF",
|
|
4
|
+
"schema_version": "2.0.0",
|
|
5
|
+
"handoffs": [],
|
|
6
|
+
"current_context": "",
|
|
7
|
+
"last_updated": "2026-03-25T00:00:00Z"
|
|
28
8
|
}
|
package/.planning/ROADMAP.md
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
+
# MindForge Roadmap
|
|
1
2
|
|
|
2
|
-
### Phase 1:
|
|
3
|
+
### Phase 1: MindForge Enterprise Stabilization
|
|
3
4
|
|
|
4
5
|
**Goal:** [To be planned]
|
|
5
6
|
**Requirements**: TBD
|
|
@@ -7,4 +8,5 @@
|
|
|
7
8
|
**Plans:** 0 plans
|
|
8
9
|
|
|
9
10
|
Plans:
|
|
11
|
+
|
|
10
12
|
- [ ] TBD (run /mindforge-plan-phase 1 to break down)
|
package/.planning/jira-sync.json
CHANGED
|
@@ -1,9 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"
|
|
3
|
-
"last_sync":
|
|
4
|
-
"
|
|
5
|
-
"phase_mappings": {},
|
|
6
|
-
"transition_cache": {},
|
|
7
|
-
"security_bugs": [],
|
|
8
|
-
"_warning": "Do not store credentials in this file."
|
|
2
|
+
"sync_status": "idle",
|
|
3
|
+
"last_sync": "",
|
|
4
|
+
"mappings": []
|
|
9
5
|
}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
package/CHANGELOG.md
CHANGED
|
@@ -1,27 +1,86 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [2.3.5] — Intelligent Asset Sync & Merge — 2026-03-26
|
|
4
|
+
|
|
5
|
+
🚀 **MindForge v2.3.5 — Intelligent Asset Sync & Merge**
|
|
6
|
+
|
|
7
|
+
This release transforms the installation engine from a static "skip if exists" model to an intelligent "Merge & Sync" system, ensuring all framework assets, documentation, and advanced modules are correctly deployed even into existing project environments.
|
|
8
|
+
|
|
9
|
+
### Added (v2.3.5)
|
|
10
|
+
|
|
11
|
+
- **Intelligent Merging**: Refactored `copyDir` to support `noOverwrite` mode, allowing the installer to add missing subfolders and templates without disrupting user-customized files.
|
|
12
|
+
- **Advanced Module Sync**: Added explicit path mapping for `memory`, `plugins`, `intelligence`, and `dashboard` modules into the standard installation payload.
|
|
13
|
+
- **Expanded Asset Types**: Upgraded runtime definitions to include `memorySubdir` and `pluginsSubdir` for all supported IDE environments.
|
|
14
|
+
|
|
15
|
+
### Fixed (v2.3.5)
|
|
16
|
+
|
|
17
|
+
- **Sync Gating**: Removed restrictive directory existence checks that caused the installer to skip entire asset categories if the parent folder already existed.
|
|
18
|
+
- **Documentation Parity**: Hardened the documentation sync logic to ensure `references/` and `templates/` always reach the `.agents/docs/` target.
|
|
19
|
+
|
|
20
|
+
## [2.3.4] — Architectural Sync & Zero-GSD Purge — 2026-03-25
|
|
21
|
+
|
|
22
|
+
### Added (v2.3.4)
|
|
23
|
+
|
|
24
|
+
- **Comprehensive Planning Sync**: Expanded `.planning` deployment to include `ROADMAP.md`, `ARCHITECTURE.md`, `REQUIREMENTS.md`, and `RELEASE-CHECKLIST.md` by default.
|
|
25
|
+
- **Zero-GSD Standard**: Completed the removal of all "GSD" instances from the installer logic and internal system identifiers.
|
|
26
|
+
|
|
27
|
+
### Fixed (v2.3.4)
|
|
28
|
+
|
|
29
|
+
- **Documentation Payload**: Fixed a discrepancy in the path-mapping for documentation subdirectories (`references/`, `templates/`) ensuring they correctly sync into `.agents/docs/`.
|
|
30
|
+
- **Directory Persistence**: Ensured that empty planning subdirectories correctly persist with `.gitkeep` during fresh installations.
|
|
31
|
+
|
|
32
|
+
## [2.3.3] — Payload Cleanup & Enterprise Pruning — 2026-03-25
|
|
33
|
+
|
|
34
|
+
🚀 **MindForge v2.3.3 — Payload Cleanup & Enterprise Pruning**
|
|
35
|
+
|
|
36
|
+
This release strictly prunes the installation payload to remove legacy GSD artifacts, project-specific state, and development-only folders, ensuring a clean "out-of-the-box" enterprise experience.
|
|
37
|
+
|
|
38
|
+
### Fixed (v2.3.3)
|
|
39
|
+
|
|
40
|
+
- **Installation Payload**: Removed legacy migration folders (`01-migrate-legacy-to-mindforge`, `day1`, `day2`, `day3`).
|
|
41
|
+
- **State Leakage**: Excluded project-specific state files (`AUDIT.jsonl`, `HANDOFF.json`, `jira-sync.json`, `slack-threads.json`) from distribution.
|
|
42
|
+
- **Enterprise Pruning**: Updated `installer-core.js` to automatically filter out development-only framework folders (e.g., `distribution`, `monorepo`, `production`).
|
|
43
|
+
|
|
44
|
+
## [2.3.2] — Asset Sync Repair — 2026-03-25
|
|
45
|
+
|
|
46
|
+
🚀 **MindForge v2.3.2 — Asset Sync Repair**
|
|
47
|
+
|
|
48
|
+
This release fixes documentation asset synchronization and repairs logic corruption in the installer core.
|
|
49
|
+
|
|
50
|
+
### Added (v2.3.2)
|
|
51
|
+
|
|
52
|
+
- **Docs & Templates Sync**: Integrated `docs/references` and `docs/templates` into the standard installation payload.
|
|
53
|
+
- **Recursive Counting**: Implemented deep directory file counting for accurate manifest reporting.
|
|
54
|
+
|
|
55
|
+
### Fixed (v2.3.2)
|
|
56
|
+
|
|
57
|
+
- **Installer Logic**: Repaired syntax corruption and removed duplicated code blocks in `installer-core.js`.
|
|
58
|
+
|
|
3
59
|
## [2.1.2] — Beast Mode Branding & CI Fix — 2026-03-25
|
|
4
60
|
|
|
5
61
|
🚀 **MindForge v2.1.2 — Beast Mode Branding & CI Fix**
|
|
6
62
|
|
|
7
63
|
This release transforms the MindForge installation experience with a high-impact "Beast Mode" CLI interface and resolves critical CI/CD integration issues.
|
|
8
64
|
|
|
9
|
-
### Added
|
|
65
|
+
### Added (v2.1.2)
|
|
66
|
+
|
|
10
67
|
- **Beast Mode CLI Branding**: New ultra-blocky ASCII "MINDFORGE" branding and high-contrast "Digital Architect" design system.
|
|
11
68
|
- **Payload Manifest Summary**: Architectural summary screen displaying dynamic counts of deployed Personas, Skills, and Integrations.
|
|
12
69
|
- **"TRY IT NOW" Utility**: Boxed terminal widget providing immediate post-install command guidance.
|
|
13
70
|
- **Enhanced Status Reporting**: Unified architectural status grid for environment detection.
|
|
14
71
|
|
|
15
|
-
### Fixed
|
|
72
|
+
### Fixed (v2.1.2)
|
|
73
|
+
|
|
16
74
|
- **CI/CD Permissions**: Resolved `RequestError [HttpError]: GitHub Actions is not permitted to create or approve pull requests` by adding `contents: write` to `auto-pr.yml`.
|
|
17
75
|
|
|
18
76
|
## [2.1.1] — Core Migration Finalization — 2026-03-25
|
|
19
77
|
|
|
20
78
|
🧩 **MindForge v2.1.1 — Core Migration Finalization**
|
|
21
79
|
|
|
22
|
-
This release completes the structural rebranding and migration of the
|
|
80
|
+
This release completes the structural rebranding and migration of the MindForge framework into MindForge. It finalizes the path alignment for all 120+ assets, hardens the core configuration management, and fully integrates the expanded persona ecosystem.
|
|
81
|
+
|
|
82
|
+
### Added (v2.1.1)
|
|
23
83
|
|
|
24
|
-
### Added
|
|
25
84
|
- **Finalized Path Mapping**: All framework assets (skills, workflows, bin) now reside in a unified, flat `.agent/` structure for cross-IDE compatibility.
|
|
26
85
|
- **32-Persona Ecosystem**: Full integration of 32 specialized engineering personas with defined tool permissions and capability matrices.
|
|
27
86
|
- **Unified 4-Pillar Workflow**: Hardened `plan`, `execute`, `verify`, and `ship` logic with project-level `.agent/` integrity.
|
|
@@ -29,8 +88,9 @@ This release completes the structural rebranding and migration of the GSD framew
|
|
|
29
88
|
- **Consolidated Configuration**: Unified framework settings and project-level governance in `.mindforge/` and `.agent/`.
|
|
30
89
|
- **Rebranded Lifecycle Hooks**: 5 new high-performance hooks for context monitoring, prompt guarding, and real-time status updates.
|
|
31
90
|
|
|
32
|
-
### Changed
|
|
33
|
-
|
|
91
|
+
### Changed (v2.1.1)
|
|
92
|
+
|
|
93
|
+
- **Zero-Watermark Integrity**: 100% elimination of residual "MindForge" and "get-shit-done" identifiers from codebase, documentation, and metadata.
|
|
34
94
|
- **Documentation Overhaul**: Modernized the entire documentation suite, including Architecture, Personas, Skills Authoring, and Command References.
|
|
35
95
|
- **Hardened Settings**: `settings.json` now features dynamic hook pathing for increased portability across system environments.
|
|
36
96
|
|
|
@@ -38,7 +98,7 @@ This release completes the structural rebranding and migration of the GSD framew
|
|
|
38
98
|
|
|
39
99
|
🧩 **MindForge v2.1.0 — The Specialized Expansion**
|
|
40
100
|
|
|
41
|
-
This release significantly expands the MindForge persona ecosystem, integrating 18+ high-performance specialized agents from the
|
|
101
|
+
This release significantly expands the MindForge persona ecosystem, integrating 18+ high-performance specialized agents from the MindForge framework. This expansion doubles the framework's baseline capabilities in research, architecture, execution, and quality assurance.
|
|
42
102
|
|
|
43
103
|
### Added
|
|
44
104
|
- **18+ New Specialized Personas**: Integration of advanced agents including `nyquist-auditor`, `user-profiler`, `advisor-researcher`, `ui-auditor`, and more.
|
|
@@ -48,7 +108,7 @@ This release significantly expands the MindForge persona ecosystem, integrating
|
|
|
48
108
|
|
|
49
109
|
### Changed
|
|
50
110
|
- **Documentation Overhaul**: Complete update of `PERSONAS.md` and `Master-Context.md` to reflect the expanded ecosystem.
|
|
51
|
-
- **Branding Alignment**: All integrated
|
|
111
|
+
- **Branding Alignment**: All integrated MindForge personas rebranded and fully sanitized for MindForge native use.
|
|
52
112
|
|
|
53
113
|
---
|
|
54
114
|
|
|
@@ -65,7 +125,7 @@ This major release transforms MindForge from a Claude-centric framework into a u
|
|
|
65
125
|
- **Unified Migration Engine (v2.0.0)**: Additive schema upgrades for `AUDIT.jsonl` (runtime/agent_id) and `token-usage.jsonl` (model_group).
|
|
66
126
|
- **Hardened Self-Building Skills**: Automated skill capture from documentation and phase outputs.
|
|
67
127
|
- **7-Dimension Quality Scorer**: Enhanced static analysis for skill authoring.
|
|
68
|
-
- **
|
|
128
|
+
- **MindForge Integration**: 10 new advanced commands for design-first planning, zero-friction capture, and smart routing.
|
|
69
129
|
- **`/mindforge:do`**: Smart natural language dispatcher that routes intent to the correct command.
|
|
70
130
|
- **`/mindforge:ui-phase` & `/mindforge:ui-review`**: Tier-1 visual design contract and visual audit engine.
|
|
71
131
|
- **`/mindforge:note`**: Instant idea capture with todo promotion.
|
package/README.md
CHANGED
|
@@ -319,7 +319,7 @@ See `.mindforge/production/token-optimiser.md`.
|
|
|
319
319
|
|
|
320
320
|
## What's new in v2.1.1
|
|
321
321
|
- **Unified 4-Pillar Workflow**: `plan`, `execute`, `verify`, `ship` now hardened with `.agent/` structural integrity.
|
|
322
|
-
- **Expanded Persona Ecosystem**: 32+ specialized engineering personas integrated from the
|
|
322
|
+
- **Expanded Persona Ecosystem**: 32+ specialized engineering personas integrated from the MindForge core.
|
|
323
323
|
- **Real-time Dashboard**: `/mindforge:dashboard` and high-performance web-based observability.
|
|
324
324
|
- **Persistent Knowledge Graph**: `/mindforge:remember` and long-term project memory.
|
|
325
325
|
- **Multi-Model Intelligence Layer**: `/mindforge:cross-review`, `/mindforge:research`, and `/mindforge:costs`.
|
package/RELEASENOTES.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
## Top Summary
|
|
4
4
|
|
|
5
|
-
MindForge v2.1.1 is a major structural update that finalizes the migration of the
|
|
5
|
+
MindForge v2.1.1 is a major structural update that finalizes the migration of the MindForge framework into the MindForge ecosystem. This release establishes a unified `.agent/` asset structure, expands the persona count from 8 to 32+, and hardens the 4-pillar workflow (`plan`, `execute`, `verify`, `ship`) for enterprise-scale AI orchestration.
|
|
6
6
|
|
|
7
7
|
## Highlights
|
|
8
8
|
|
package/bin/installer-core.js
CHANGED
|
@@ -25,6 +25,9 @@ const RUNTIMES = {
|
|
|
25
25
|
skillsSubdir: 'skills',
|
|
26
26
|
hooksSubdir: 'hooks',
|
|
27
27
|
personasSubdir: 'personas',
|
|
28
|
+
docsSubdir: 'docs',
|
|
29
|
+
memorySubdir: 'memory',
|
|
30
|
+
pluginsSubdir: 'plugins',
|
|
28
31
|
},
|
|
29
32
|
antigravity: {
|
|
30
33
|
displayName: 'Antigravity',
|
|
@@ -36,6 +39,9 @@ const RUNTIMES = {
|
|
|
36
39
|
skillsSubdir: 'skills',
|
|
37
40
|
hooksSubdir: 'hooks',
|
|
38
41
|
personasSubdir: 'personas',
|
|
42
|
+
docsSubdir: 'docs',
|
|
43
|
+
memorySubdir: 'memory',
|
|
44
|
+
pluginsSubdir: 'plugins',
|
|
39
45
|
},
|
|
40
46
|
cursor: {
|
|
41
47
|
displayName: 'Cursor',
|
|
@@ -47,6 +53,9 @@ const RUNTIMES = {
|
|
|
47
53
|
skillsSubdir: 'skills',
|
|
48
54
|
hooksSubdir: 'hooks',
|
|
49
55
|
personasSubdir: 'personas',
|
|
56
|
+
docsSubdir: 'docs',
|
|
57
|
+
memorySubdir: 'memory',
|
|
58
|
+
pluginsSubdir: 'plugins',
|
|
50
59
|
},
|
|
51
60
|
opencode: {
|
|
52
61
|
displayName: 'OpenCode',
|
|
@@ -58,6 +67,9 @@ const RUNTIMES = {
|
|
|
58
67
|
skillsSubdir: 'skills',
|
|
59
68
|
hooksSubdir: 'hooks',
|
|
60
69
|
personasSubdir: 'personas',
|
|
70
|
+
docsSubdir: 'docs',
|
|
71
|
+
memorySubdir: 'memory',
|
|
72
|
+
pluginsSubdir: 'plugins',
|
|
61
73
|
},
|
|
62
74
|
gemini: {
|
|
63
75
|
displayName: 'Gemini CLI',
|
|
@@ -69,6 +81,9 @@ const RUNTIMES = {
|
|
|
69
81
|
skillsSubdir: 'skills',
|
|
70
82
|
hooksSubdir: 'hooks',
|
|
71
83
|
personasSubdir: 'personas',
|
|
84
|
+
docsSubdir: 'docs',
|
|
85
|
+
memorySubdir: 'memory',
|
|
86
|
+
pluginsSubdir: 'plugins',
|
|
72
87
|
},
|
|
73
88
|
copilot: {
|
|
74
89
|
displayName: 'GitHub Copilot',
|
|
@@ -137,9 +152,19 @@ const fsu = {
|
|
|
137
152
|
ensureDir: p => { if (!fs.existsSync(p)) fs.mkdirSync(p, { recursive: true }); },
|
|
138
153
|
copy: (src, dst) => { fsu.ensureDir(path.dirname(dst)); fs.copyFileSync(src, dst); },
|
|
139
154
|
listFiles: p => fs.existsSync(p) ? fs.readdirSync(p) : [],
|
|
155
|
+
listFilesRecursive: (p, ext = '.md') => {
|
|
156
|
+
if (!fs.existsSync(p)) return [];
|
|
157
|
+
let results = [];
|
|
158
|
+
for (const entry of fs.readdirSync(p, { withFileTypes: true })) {
|
|
159
|
+
const full = path.join(p, entry.name);
|
|
160
|
+
if (entry.isDirectory()) results = results.concat(fsu.listFilesRecursive(full, ext));
|
|
161
|
+
else if (entry.name.endsWith(ext)) results.push(full);
|
|
162
|
+
}
|
|
163
|
+
return results;
|
|
164
|
+
},
|
|
140
165
|
|
|
141
166
|
copyDir(src, dst, options = {}) {
|
|
142
|
-
const { excludePatterns = [] } = options;
|
|
167
|
+
const { excludePatterns = [], noOverwrite = false } = options;
|
|
143
168
|
fsu.ensureDir(dst);
|
|
144
169
|
for (const entry of fs.readdirSync(src, { withFileTypes: true })) {
|
|
145
170
|
const skip = excludePatterns.some(pat =>
|
|
@@ -149,7 +174,12 @@ const fsu = {
|
|
|
149
174
|
|
|
150
175
|
const s = path.join(src, entry.name);
|
|
151
176
|
const d = path.join(dst, entry.name);
|
|
152
|
-
entry.isDirectory()
|
|
177
|
+
if (entry.isDirectory()) {
|
|
178
|
+
fsu.copyDir(s, d, options);
|
|
179
|
+
} else {
|
|
180
|
+
if (noOverwrite && fsu.exists(d)) continue;
|
|
181
|
+
fsu.copy(s, d);
|
|
182
|
+
}
|
|
153
183
|
}
|
|
154
184
|
},
|
|
155
185
|
};
|
|
@@ -198,11 +228,38 @@ const src = (...parts) => path.join(SOURCE_ROOT, ...parts);
|
|
|
198
228
|
const SENSITIVE_EXCLUDE = [
|
|
199
229
|
'.env', // exact filename match
|
|
200
230
|
/^\.env\..*/, // .env.local, .env.production, etc.
|
|
201
|
-
/\.key
|
|
202
|
-
/\.pem
|
|
231
|
+
/\.key$/i, // anything ending in .key
|
|
232
|
+
/\.pem$/i, // anything ending in .pem
|
|
203
233
|
'secrets', // exact directory name
|
|
204
234
|
'.secrets', // exact directory name
|
|
205
|
-
/^secrets
|
|
235
|
+
/^secrets$/i, // exact match at directory level
|
|
236
|
+
'node_modules',
|
|
237
|
+
'.git',
|
|
238
|
+
'.DS_Store',
|
|
239
|
+
'browser-daemon.log',
|
|
240
|
+
/audit\.jsonl/i,
|
|
241
|
+
/handoff\.json/i,
|
|
242
|
+
/jira-sync\.json/i,
|
|
243
|
+
/slack-threads\.json/i,
|
|
244
|
+
// Specific legacy or project-private folders
|
|
245
|
+
'01-migrate-legacy-to-mindforge',
|
|
246
|
+
'day1',
|
|
247
|
+
'day2',
|
|
248
|
+
'day3',
|
|
249
|
+
'research',
|
|
250
|
+
'screenshots',
|
|
251
|
+
];
|
|
252
|
+
|
|
253
|
+
// Special-case folders in .mindforge that are development-only
|
|
254
|
+
const MINDFORGE_DEV_EXCLUDE = [
|
|
255
|
+
'distribution',
|
|
256
|
+
'monorepo',
|
|
257
|
+
'production',
|
|
258
|
+
'pr-review',
|
|
259
|
+
'skills-builder',
|
|
260
|
+
'ci',
|
|
261
|
+
'browser',
|
|
262
|
+
'audit'
|
|
206
263
|
];
|
|
207
264
|
|
|
208
265
|
const norm = p => path.normalize(p);
|
|
@@ -296,7 +353,7 @@ async function install(runtime, scope, options = {}) {
|
|
|
296
353
|
const baseDir = resolveBaseDir(runtime, scope);
|
|
297
354
|
const cmdsDir = norm(path.join(baseDir, cfg.commandsSubdir));
|
|
298
355
|
const selfInstall = isSelfInstall();
|
|
299
|
-
const targetDir = baseDir;
|
|
356
|
+
const targetDir = baseDir;
|
|
300
357
|
|
|
301
358
|
Theme.printPrompt(`Runtime : ${c.cyan(runtime)}`);
|
|
302
359
|
Theme.printPrompt(`Scope : ${c.dim(scope)} → ${c.bold(targetDir)}`);
|
|
@@ -313,15 +370,21 @@ async function install(runtime, scope, options = {}) {
|
|
|
313
370
|
const assetMappings = [
|
|
314
371
|
{ key: 'skillsSubdir', src: src('.agent', 'skills'), label: 'skills' },
|
|
315
372
|
{ key: 'hooksSubdir', src: src('.agent', 'hooks'), label: 'hooks' },
|
|
316
|
-
{ key: 'personasSubdir', src: src('.mindforge', 'personas'), label: 'personas' }
|
|
373
|
+
{ key: 'personasSubdir', src: src('.mindforge', 'personas'), label: 'personas' },
|
|
374
|
+
{ key: 'docsSubdir', src: src('docs', 'references'), label: 'references' },
|
|
375
|
+
{ key: 'docsSubdir', src: src('docs', 'templates'), label: 'templates' }
|
|
317
376
|
];
|
|
318
377
|
|
|
319
378
|
assetMappings.forEach(asset => {
|
|
320
379
|
const subDir = cfg[asset.key];
|
|
321
380
|
if (subDir && fsu.exists(asset.src)) {
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
381
|
+
if (asset.label === 'references' || asset.label === 'templates') {
|
|
382
|
+
console.log(` ${asset.label.padEnd(12)} → ${path.join(baseDir, subDir, asset.label)}`);
|
|
383
|
+
} else {
|
|
384
|
+
const count = fsu.listFiles(asset.src).length;
|
|
385
|
+
const countStr = `${count} ${asset.label}`.padEnd(12);
|
|
386
|
+
console.log(` ${countStr} → ${path.join(baseDir, subDir)}`);
|
|
387
|
+
}
|
|
325
388
|
}
|
|
326
389
|
});
|
|
327
390
|
return;
|
|
@@ -436,17 +499,25 @@ async function install(runtime, scope, options = {}) {
|
|
|
436
499
|
const assetTypes = [
|
|
437
500
|
{ key: 'skillsSubdir', src: src('.agent', 'skills'), label: 'skills' },
|
|
438
501
|
{ key: 'hooksSubdir', src: src('.agent', 'hooks'), label: 'hooks' },
|
|
439
|
-
{ key: 'personasSubdir', src: src('.mindforge', 'personas'), label: 'personas' }
|
|
502
|
+
{ key: 'personasSubdir', src: src('.mindforge', 'personas'), label: 'personas' },
|
|
503
|
+
{ key: 'docsSubdir', src: src('docs', 'references'), label: 'references' },
|
|
504
|
+
{ key: 'docsSubdir', src: src('docs', 'templates'), label: 'templates' },
|
|
505
|
+
{ key: 'memorySubdir', src: src('.mindforge', 'memory'), label: 'memory' },
|
|
506
|
+
{ key: 'pluginsSubdir', src: src('.mindforge', 'plugins'), label: 'plugins' }
|
|
440
507
|
];
|
|
441
508
|
|
|
442
509
|
assetTypes.forEach(asset => {
|
|
443
510
|
const subDir = cfg[asset.key];
|
|
444
511
|
if (subDir && fsu.exists(asset.src)) {
|
|
445
|
-
|
|
512
|
+
let dstDir = path.join(baseDir, subDir);
|
|
513
|
+
// Documentation and templates go into subdirectories of their own
|
|
514
|
+
if (asset.label === 'references' || asset.label === 'templates') {
|
|
515
|
+
dstDir = path.join(dstDir, asset.label);
|
|
516
|
+
}
|
|
446
517
|
fsu.ensureDir(dstDir);
|
|
447
518
|
// Use copyDir for the whole directory
|
|
448
|
-
fsu.copyDir(asset.src, dstDir, { excludePatterns: SENSITIVE_EXCLUDE });
|
|
449
|
-
Theme.printResolved(`${c.bold(asset.label.padEnd(
|
|
519
|
+
fsu.copyDir(asset.src, dstDir, { excludePatterns: SENSITIVE_EXCLUDE, noOverwrite: !force });
|
|
520
|
+
Theme.printResolved(`${c.bold(asset.label.padEnd(12))} (Enterprise sync)`);
|
|
450
521
|
}
|
|
451
522
|
});
|
|
452
523
|
}
|
|
@@ -457,51 +528,69 @@ async function install(runtime, scope, options = {}) {
|
|
|
457
528
|
const forgeSrc = src('.mindforge');
|
|
458
529
|
const forgeDst = path.join(process.cwd(), '.mindforge');
|
|
459
530
|
if (fsu.exists(forgeSrc)) {
|
|
531
|
+
// Define all required enterprise framework folders
|
|
532
|
+
const standardFrameworkFolders = [
|
|
533
|
+
'engine', 'org', 'governance', 'integrations', 'personas', 'skills',
|
|
534
|
+
'team', 'intelligence', 'memory', 'metrics', 'models', 'plugins', 'dashboard'
|
|
535
|
+
];
|
|
536
|
+
|
|
460
537
|
if (minimal) {
|
|
461
538
|
const minimalEntries = new Set([
|
|
462
539
|
'MINDFORGE-SCHEMA.json',
|
|
463
|
-
'engine',
|
|
464
|
-
'org',
|
|
465
|
-
'governance',
|
|
466
|
-
'integrations',
|
|
467
|
-
'personas',
|
|
468
|
-
'skills',
|
|
469
|
-
'team',
|
|
540
|
+
'engine', 'org', 'governance', 'integrations', 'personas', 'skills', 'team'
|
|
470
541
|
]);
|
|
471
542
|
fsu.ensureDir(forgeDst);
|
|
472
543
|
for (const entry of fs.readdirSync(forgeSrc, { withFileTypes: true })) {
|
|
473
544
|
if (!minimalEntries.has(entry.name)) continue;
|
|
474
545
|
const s = path.join(forgeSrc, entry.name);
|
|
475
546
|
const d = path.join(forgeDst, entry.name);
|
|
476
|
-
entry.isDirectory()
|
|
547
|
+
if (entry.isDirectory()) {
|
|
548
|
+
fsu.copyDir(s, d, { excludePatterns: SENSITIVE_EXCLUDE, noOverwrite: true });
|
|
549
|
+
} else {
|
|
550
|
+
if (!fsu.exists(d) || force) fsu.copy(s, d);
|
|
551
|
+
}
|
|
477
552
|
}
|
|
478
|
-
Theme.printResolved(`${c.bold('.mindforge/')} (minimal
|
|
553
|
+
Theme.printResolved(`${c.bold('.mindforge/')} (minimal sync)`);
|
|
479
554
|
} else {
|
|
480
|
-
|
|
481
|
-
|
|
555
|
+
// Standard merge: Ensure missing folders are added, but don't overwrite existing user configs
|
|
556
|
+
fsu.copyDir(forgeSrc, forgeDst, {
|
|
557
|
+
excludePatterns: [...SENSITIVE_EXCLUDE, ...MINDFORGE_DEV_EXCLUDE],
|
|
558
|
+
noOverwrite: !force
|
|
559
|
+
});
|
|
560
|
+
Theme.printResolved(`${c.bold('.mindforge/')} (synchronized framework)`);
|
|
482
561
|
}
|
|
483
562
|
}
|
|
484
563
|
|
|
485
|
-
// .planning/ —
|
|
564
|
+
// .planning/ — merge templates but preserve existing state
|
|
486
565
|
const planningDst = path.join(process.cwd(), '.planning');
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
566
|
+
const planningSrc = src('.planning');
|
|
567
|
+
if (fsu.exists(planningSrc)) {
|
|
568
|
+
fsu.ensureDir(planningDst);
|
|
569
|
+
|
|
570
|
+
// Define standard planning templates that must exist
|
|
571
|
+
const standardPlanningFiles = [
|
|
572
|
+
'STATE.md', 'HANDOFF.json', 'PROJECT.md',
|
|
573
|
+
'ROADMAP.md', 'ARCHITECTURE.md', 'REQUIREMENTS.md',
|
|
574
|
+
'RELEASE-CHECKLIST.md'
|
|
575
|
+
];
|
|
576
|
+
|
|
577
|
+
// Always ensure top-level standard templates are copied if missing
|
|
578
|
+
standardPlanningFiles.forEach((name) => {
|
|
579
|
+
const s = path.join(planningSrc, name);
|
|
580
|
+
const d = path.join(planningDst, name);
|
|
581
|
+
if (fsu.exists(s) && (!fsu.exists(d) || force)) fsu.copy(s, d);
|
|
582
|
+
});
|
|
583
|
+
|
|
584
|
+
if (!minimal) {
|
|
585
|
+
// Merge subdirectories (empty ones persist via .gitkeep)
|
|
586
|
+
fsu.copyDir(planningSrc, planningDst, {
|
|
587
|
+
excludePatterns: SENSITIVE_EXCLUDE,
|
|
588
|
+
noOverwrite: true
|
|
589
|
+
});
|
|
590
|
+
Theme.printResolved(`${c.bold('.planning/')} (merged templates)`);
|
|
591
|
+
} else {
|
|
592
|
+
Theme.printResolved(`${c.bold('.planning/')} (minimal sync)`);
|
|
502
593
|
}
|
|
503
|
-
} else {
|
|
504
|
-
Theme.printPrompt(c.dim('.planning/ already exists — preserved (run /mindforge:health to verify)'));
|
|
505
594
|
}
|
|
506
595
|
|
|
507
596
|
// MINDFORGE.md — create only if it doesn't already exist
|
|
@@ -573,17 +662,25 @@ function collectManifestStats() {
|
|
|
573
662
|
skills: 0,
|
|
574
663
|
governance: 0,
|
|
575
664
|
integrations: 0,
|
|
576
|
-
actions: 0
|
|
665
|
+
actions: 0,
|
|
666
|
+
docs: 0,
|
|
667
|
+
templates: 0
|
|
577
668
|
};
|
|
578
669
|
|
|
579
670
|
try {
|
|
580
671
|
const forgeSrc = src('.mindforge');
|
|
581
672
|
if (fsu.exists(forgeSrc)) {
|
|
582
673
|
stats.personas = fsu.listFiles(path.join(forgeSrc, 'personas')).filter(f => f.endsWith('.md')).length;
|
|
583
|
-
stats.skills = fsu.listFiles(path.join(
|
|
674
|
+
stats.skills = fsu.listFiles(path.join(SOURCE_ROOT, '.agent', 'skills')).length;
|
|
584
675
|
stats.governance = fsu.listFiles(path.join(forgeSrc, 'governance')).filter(f => f.endsWith('.md')).length;
|
|
585
676
|
stats.integrations = fsu.listFiles(path.join(forgeSrc, 'integrations')).filter(f => f.endsWith('.md')).length;
|
|
586
677
|
}
|
|
678
|
+
|
|
679
|
+
// Docs & Templates count
|
|
680
|
+
const refSrc = src('docs', 'references');
|
|
681
|
+
const tmpSrc = src('docs', 'templates');
|
|
682
|
+
if (fsu.exists(refSrc)) stats.docs = fsu.listFiles(refSrc).filter(f => f.endsWith('.md')).length;
|
|
683
|
+
if (fsu.exists(tmpSrc)) stats.templates = fsu.listFilesRecursive(tmpSrc).length;
|
|
587
684
|
|
|
588
685
|
// Commands count
|
|
589
686
|
const claudeCmdSrc = src('.claude', 'commands', 'mindforge');
|
|
@@ -596,7 +693,7 @@ function collectManifestStats() {
|
|
|
596
693
|
}
|
|
597
694
|
} catch (e) {
|
|
598
695
|
// Fallback to default values if counting fails
|
|
599
|
-
return { personas: 32, skills: 10, governance: 4, integrations: 6, actions: 60 };
|
|
696
|
+
return { personas: 32, skills: 10, governance: 4, integrations: 6, actions: 60, docs: 12, templates: 5 };
|
|
600
697
|
}
|
|
601
698
|
|
|
602
699
|
return stats;
|
package/bin/wizard/theme.js
CHANGED
|
@@ -121,7 +121,7 @@ const Theme = {
|
|
|
121
121
|
* Print Manifest (Hardened for V2)
|
|
122
122
|
*/
|
|
123
123
|
printManifest(stats = {}) {
|
|
124
|
-
const { personas = 32, skills = 12, governance = 4, integrations = 7, actions = 60 } = stats;
|
|
124
|
+
const { personas = 32, skills = 12, governance = 4, integrations = 7, actions = 60, docs = 12, templates = 8 } = stats;
|
|
125
125
|
|
|
126
126
|
console.log(` ${this.colors.bold('PAYLOAD MANIFEST')}`);
|
|
127
127
|
console.log(` ${this.colors.dim('┌' + '─'.repeat(74) + '┐')}`);
|
|
@@ -131,6 +131,8 @@ const Theme = {
|
|
|
131
131
|
['SKILLS', skills, 'Enterprise-grade skill packs'],
|
|
132
132
|
['GOVERNANCE', governance, 'Compliance and safety modules'],
|
|
133
133
|
['INTEGRATIONS', integrations, 'Multi-platform connector suite'],
|
|
134
|
+
['REFERENCES', docs, 'Standardized architecture references'],
|
|
135
|
+
['TEMPLATES', templates, 'Engineering and planning templates'],
|
|
134
136
|
['ACTIONS', actions, 'Total autonomous commands deployed'],
|
|
135
137
|
];
|
|
136
138
|
|
package/package.json
CHANGED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"id": "MF-AUTH-V2-001",
|
|
3
|
-
"project": "MindForge",
|
|
4
|
-
"version": "2.0.0-alpha.2",
|
|
5
|
-
"tier": 3,
|
|
6
|
-
"approved_by": "Antigravity (Agentic AI)",
|
|
7
|
-
"timestamp": "2026-03-22T20:28:00Z",
|
|
8
|
-
"scope": [
|
|
9
|
-
".github/workflows/*",
|
|
10
|
-
"bin/mindforge-cli.js",
|
|
11
|
-
"bin/change-classifier.js"
|
|
12
|
-
],
|
|
13
|
-
"reason": "Implementation of 5-Layer Plane Architecture and standardized CLI routing.",
|
|
14
|
-
"signature": "sha256:d8e8fca2dc0f896fd7cb4cb0031ba249"
|
|
15
|
-
}
|