mindforge-cc 2.2.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/.agent/CLAUDE.md +14 -0
- package/.agent/forge/help.md +4 -0
- package/.agent/forge/init-project.md +4 -0
- package/.agent/forge/plan-phase.md +4 -0
- package/.agent/mindforge/approve.md +4 -0
- package/.agent/mindforge/audit.md +4 -0
- package/.agent/mindforge/auto.md +4 -0
- package/.agent/mindforge/benchmark.md +4 -0
- package/.agent/mindforge/browse.md +4 -0
- package/.agent/mindforge/complete-milestone.md +4 -0
- package/.agent/mindforge/costs.md +4 -0
- package/.agent/mindforge/cross-review.md +4 -0
- package/.agent/mindforge/dashboard.md +4 -0
- package/.agent/mindforge/debug.md +4 -0
- package/.agent/mindforge/discuss-phase.md +4 -0
- package/.agent/mindforge/execute-phase.md +4 -0
- package/.agent/mindforge/health.md +4 -0
- package/.agent/mindforge/help.md +4 -0
- package/.agent/mindforge/init-org.md +4 -0
- package/.agent/mindforge/init-project.md +4 -0
- package/.agent/mindforge/install-skill.md +4 -0
- package/.agent/mindforge/learn.md +4 -0
- package/.agent/mindforge/map-codebase.md +4 -0
- package/.agent/mindforge/marketplace.md +4 -0
- package/.agent/mindforge/metrics.md +4 -0
- package/.agent/mindforge/migrate.md +4 -0
- package/.agent/mindforge/milestone.md +4 -0
- package/.agent/mindforge/new-runtime.md +4 -0
- package/.agent/mindforge/next.md +4 -0
- package/.agent/mindforge/plan-phase.md +4 -0
- package/.agent/mindforge/plugins.md +4 -0
- package/.agent/mindforge/pr-review.md +4 -0
- package/.agent/mindforge/profile-team.md +4 -0
- package/.agent/mindforge/publish-skill.md +4 -0
- package/.agent/mindforge/qa.md +4 -0
- package/.agent/mindforge/quick.md +4 -0
- package/.agent/mindforge/release.md +4 -0
- package/.agent/mindforge/remember.md +4 -0
- package/.agent/mindforge/research.md +4 -0
- package/.agent/mindforge/retrospective.md +4 -0
- package/.agent/mindforge/review.md +4 -0
- package/.agent/mindforge/security-scan.md +4 -0
- package/.agent/mindforge/ship.md +4 -0
- package/.agent/mindforge/skills.md +4 -0
- package/.agent/mindforge/status.md +4 -0
- package/.agent/mindforge/steer.md +4 -0
- package/.agent/mindforge/sync-confluence.md +4 -0
- package/.agent/mindforge/sync-jira.md +4 -0
- package/.agent/mindforge/tokens.md +4 -0
- package/.agent/mindforge/update.md +4 -0
- package/.agent/mindforge/verify-phase.md +4 -0
- package/.agent/mindforge/workspace.md +4 -0
- package/.agent/workflows/forge:help.md +10 -0
- package/.agent/workflows/forge:init-project.md +35 -0
- package/.agent/workflows/forge:plan-phase.md +33 -0
- package/.agent/workflows/mindforge:add-backlog.md +24 -0
- package/.agent/workflows/mindforge:agent.md +25 -0
- package/.agent/workflows/mindforge:approve.md +21 -0
- package/.agent/workflows/mindforge:audit.md +33 -0
- package/.agent/workflows/mindforge:auto.md +25 -0
- package/.agent/workflows/mindforge:benchmark.md +36 -0
- package/.agent/workflows/mindforge:browse.md +29 -0
- package/.agent/workflows/mindforge:complete-milestone.md +21 -0
- package/.agent/workflows/mindforge:costs.md +14 -0
- package/.agent/workflows/mindforge:cross-review.md +20 -0
- package/.agent/workflows/mindforge:dashboard.md +101 -0
- package/.agent/workflows/mindforge:debug.md +129 -0
- package/.agent/workflows/mindforge:discuss-phase.md +141 -0
- package/.agent/workflows/mindforge:do.md +25 -0
- package/.agent/workflows/mindforge:execute-phase.md +193 -0
- package/.agent/workflows/mindforge:health.md +24 -0
- package/.agent/workflows/mindforge:help.md +26 -0
- package/.agent/workflows/mindforge:init-org.md +134 -0
- package/.agent/workflows/mindforge:init-project.md +169 -0
- package/.agent/workflows/mindforge:install-skill.md +27 -0
- package/.agent/workflows/mindforge:learn.md +146 -0
- package/.agent/workflows/mindforge:map-codebase.md +301 -0
- package/.agent/workflows/mindforge:marketplace.md +123 -0
- package/.agent/workflows/mindforge:metrics.md +25 -0
- package/.agent/workflows/mindforge:migrate.md +43 -0
- package/.agent/workflows/mindforge:milestone.md +15 -0
- package/.agent/workflows/mindforge:new-runtime.md +22 -0
- package/.agent/workflows/mindforge:next.md +108 -0
- package/.agent/workflows/mindforge:note.md +27 -0
- package/.agent/workflows/mindforge:plan-phase.md +128 -0
- package/.agent/workflows/mindforge:plant-seed.md +24 -0
- package/.agent/workflows/mindforge:plugins.md +43 -0
- package/.agent/workflows/mindforge:pr-review.md +44 -0
- package/.agent/workflows/mindforge:profile-team.md +26 -0
- package/.agent/workflows/mindforge:publish-skill.md +22 -0
- package/.agent/workflows/mindforge:qa.md +19 -0
- package/.agent/workflows/mindforge:quick.md +138 -0
- package/.agent/workflows/mindforge:release.md +13 -0
- package/.agent/workflows/mindforge:remember.md +29 -0
- package/.agent/workflows/mindforge:research.md +15 -0
- package/.agent/workflows/mindforge:retrospective.md +29 -0
- package/.agent/workflows/mindforge:review-backlog.md +26 -0
- package/.agent/workflows/mindforge:review.md +160 -0
- package/.agent/workflows/mindforge:security-scan.md +236 -0
- package/.agent/workflows/mindforge:session-report.md +31 -0
- package/.agent/workflows/mindforge:ship.md +103 -0
- package/.agent/workflows/mindforge:skills.md +144 -0
- package/.agent/workflows/mindforge:status.md +107 -0
- package/.agent/workflows/mindforge:steer.md +16 -0
- package/.agent/workflows/mindforge:sync-confluence.md +14 -0
- package/.agent/workflows/mindforge:sync-jira.md +15 -0
- package/.agent/workflows/mindforge:tokens.md +11 -0
- package/.agent/workflows/mindforge:ui-phase.md +27 -0
- package/.agent/workflows/mindforge:ui-review.md +28 -0
- package/.agent/workflows/mindforge:update.md +45 -0
- package/.agent/workflows/mindforge:validate-phase.md +25 -0
- package/.agent/workflows/mindforge:verify-phase.md +65 -0
- package/.agent/workflows/mindforge:workspace.md +32 -0
- package/.agent/workflows/mindforge:workstreams.md +27 -0
- package/.claude/CLAUDE.md +14 -0
- 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 +204 -63
- package/bin/wizard/theme.js +4 -2
- 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
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',
|
|
@@ -104,6 +119,31 @@ function generateEntryContent(runtime, sourceContent) {
|
|
|
104
119
|
return sourceContent;
|
|
105
120
|
}
|
|
106
121
|
|
|
122
|
+
/**
|
|
123
|
+
* Extract an enterprise-grade description from command markdown.
|
|
124
|
+
* Prioritizes YAML frontmatter 'description' field, then falls back to first non-empty text.
|
|
125
|
+
*/
|
|
126
|
+
function getCommandDescription(content) {
|
|
127
|
+
// Check for YAML frontmatter
|
|
128
|
+
const frontmatterMatch = content.match(/^---\s*\n([\s\S]*?)\n---\s*\n/);
|
|
129
|
+
if (frontmatterMatch) {
|
|
130
|
+
const frontmatter = frontmatterMatch[1];
|
|
131
|
+
const descMatch = frontmatter.match(/^description:\s*(.*)$/m);
|
|
132
|
+
if (descMatch) return descMatch[1].trim();
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
// Fallback to first non-empty, non-header line
|
|
136
|
+
const lines = content.split('\n');
|
|
137
|
+
for (let line of lines) {
|
|
138
|
+
line = line.trim();
|
|
139
|
+
if (line && !line.startsWith('#') && !line.startsWith('---')) {
|
|
140
|
+
return line.length > 100 ? line.substring(0, 97) + '...' : line;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
return 'No description available';
|
|
145
|
+
}
|
|
146
|
+
|
|
107
147
|
// ── File system utilities ─────────────────────────────────────────────────────
|
|
108
148
|
const fsu = {
|
|
109
149
|
exists: p => fs.existsSync(p),
|
|
@@ -112,9 +152,19 @@ const fsu = {
|
|
|
112
152
|
ensureDir: p => { if (!fs.existsSync(p)) fs.mkdirSync(p, { recursive: true }); },
|
|
113
153
|
copy: (src, dst) => { fsu.ensureDir(path.dirname(dst)); fs.copyFileSync(src, dst); },
|
|
114
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
|
+
},
|
|
115
165
|
|
|
116
166
|
copyDir(src, dst, options = {}) {
|
|
117
|
-
const { excludePatterns = [] } = options;
|
|
167
|
+
const { excludePatterns = [], noOverwrite = false } = options;
|
|
118
168
|
fsu.ensureDir(dst);
|
|
119
169
|
for (const entry of fs.readdirSync(src, { withFileTypes: true })) {
|
|
120
170
|
const skip = excludePatterns.some(pat =>
|
|
@@ -124,7 +174,12 @@ const fsu = {
|
|
|
124
174
|
|
|
125
175
|
const s = path.join(src, entry.name);
|
|
126
176
|
const d = path.join(dst, entry.name);
|
|
127
|
-
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
|
+
}
|
|
128
183
|
}
|
|
129
184
|
},
|
|
130
185
|
};
|
|
@@ -173,11 +228,38 @@ const src = (...parts) => path.join(SOURCE_ROOT, ...parts);
|
|
|
173
228
|
const SENSITIVE_EXCLUDE = [
|
|
174
229
|
'.env', // exact filename match
|
|
175
230
|
/^\.env\..*/, // .env.local, .env.production, etc.
|
|
176
|
-
/\.key
|
|
177
|
-
/\.pem
|
|
231
|
+
/\.key$/i, // anything ending in .key
|
|
232
|
+
/\.pem$/i, // anything ending in .pem
|
|
178
233
|
'secrets', // exact directory name
|
|
179
234
|
'.secrets', // exact directory name
|
|
180
|
-
/^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'
|
|
181
263
|
];
|
|
182
264
|
|
|
183
265
|
const norm = p => path.normalize(p);
|
|
@@ -271,7 +353,7 @@ async function install(runtime, scope, options = {}) {
|
|
|
271
353
|
const baseDir = resolveBaseDir(runtime, scope);
|
|
272
354
|
const cmdsDir = norm(path.join(baseDir, cfg.commandsSubdir));
|
|
273
355
|
const selfInstall = isSelfInstall();
|
|
274
|
-
const targetDir = baseDir;
|
|
356
|
+
const targetDir = baseDir;
|
|
275
357
|
|
|
276
358
|
Theme.printPrompt(`Runtime : ${c.cyan(runtime)}`);
|
|
277
359
|
Theme.printPrompt(`Scope : ${c.dim(scope)} → ${c.bold(targetDir)}`);
|
|
@@ -288,15 +370,21 @@ async function install(runtime, scope, options = {}) {
|
|
|
288
370
|
const assetMappings = [
|
|
289
371
|
{ key: 'skillsSubdir', src: src('.agent', 'skills'), label: 'skills' },
|
|
290
372
|
{ key: 'hooksSubdir', src: src('.agent', 'hooks'), label: 'hooks' },
|
|
291
|
-
{ 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' }
|
|
292
376
|
];
|
|
293
377
|
|
|
294
378
|
assetMappings.forEach(asset => {
|
|
295
379
|
const subDir = cfg[asset.key];
|
|
296
380
|
if (subDir && fsu.exists(asset.src)) {
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
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
|
+
}
|
|
300
388
|
}
|
|
301
389
|
});
|
|
302
390
|
return;
|
|
@@ -350,40 +438,59 @@ async function install(runtime, scope, options = {}) {
|
|
|
350
438
|
}
|
|
351
439
|
|
|
352
440
|
// ── 2. Install commands ─────────────────────────────────────────────────────
|
|
353
|
-
const
|
|
354
|
-
|
|
355
|
-
: src('.agent', '
|
|
441
|
+
const cmdSources = [
|
|
442
|
+
{ src: src('.agent', 'mindforge'), namespace: 'mindforge' },
|
|
443
|
+
{ src: src('.agent', 'forge'), namespace: 'forge' }
|
|
444
|
+
];
|
|
356
445
|
|
|
357
|
-
if (
|
|
446
|
+
if (runtime === 'claude') {
|
|
447
|
+
// Claude Code specifically looks in .claude/commands/mindforge
|
|
448
|
+
cmdSources.length = 0;
|
|
449
|
+
cmdSources.push({ src: src('.claude', 'commands', 'mindforge'), namespace: 'mindforge' });
|
|
450
|
+
}
|
|
451
|
+
|
|
452
|
+
let totalCount = 0;
|
|
453
|
+
cmdSources.forEach(source => {
|
|
454
|
+
if (!fsu.exists(source.src)) return;
|
|
455
|
+
|
|
456
|
+
const files = fsu.listFiles(source.src).filter(f => f.endsWith('.md'));
|
|
457
|
+
totalCount += files.length;
|
|
358
458
|
fsu.ensureDir(cmdsDir);
|
|
359
|
-
|
|
360
|
-
// Install for specific runtime
|
|
459
|
+
|
|
361
460
|
files.forEach(f => {
|
|
362
|
-
|
|
363
|
-
const
|
|
461
|
+
// Logic for naming: antigravity uses namespace:prefix, others use just the file name
|
|
462
|
+
const targetName = runtime === 'antigravity' ? `${source.namespace}:${f}` : f;
|
|
463
|
+
const srcPath = path.join(source.src, f);
|
|
364
464
|
const dstPath = path.join(cmdsDir, targetName);
|
|
365
465
|
|
|
366
466
|
if (runtime === 'antigravity') {
|
|
367
467
|
const content = fsu.read(srcPath);
|
|
368
|
-
const
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
468
|
+
const description = getCommandDescription(content);
|
|
469
|
+
const metadata = `---\ndescription: ${description}\n---\n`;
|
|
470
|
+
|
|
471
|
+
// Strip existing frontmatter from source when injecting into Antigravity
|
|
472
|
+
const cleanContent = content.replace(/^---\s*\n[\s\S]*?\n---\s*\n/, '');
|
|
473
|
+
fsu.write(dstPath, metadata + cleanContent);
|
|
372
474
|
} else {
|
|
373
475
|
fsu.copy(srcPath, dstPath);
|
|
374
476
|
}
|
|
375
477
|
});
|
|
376
478
|
|
|
377
|
-
//
|
|
479
|
+
// Mirror to .claude/commands for cross-IDE compatibility (Cursor/Windsurf/Claude Code)
|
|
378
480
|
if (scope === 'local' && runtime !== 'claude' && !selfInstall) {
|
|
379
|
-
const standardCmdDir = path.join(process.cwd(), '.claude', 'commands',
|
|
481
|
+
const standardCmdDir = path.join(process.cwd(), '.claude', 'commands', source.namespace);
|
|
380
482
|
fsu.ensureDir(standardCmdDir);
|
|
381
483
|
files.forEach(f => {
|
|
382
|
-
fsu.copy(path.join(
|
|
484
|
+
fsu.copy(path.join(source.src, f), path.join(standardCmdDir, f));
|
|
383
485
|
});
|
|
384
|
-
|
|
486
|
+
}
|
|
487
|
+
});
|
|
488
|
+
|
|
489
|
+
if (totalCount > 0) {
|
|
490
|
+
if (scope === 'local' && runtime !== 'claude' && !selfInstall) {
|
|
491
|
+
Theme.printResolved(`${c.bold(totalCount)} commands (Mirrored to .claude/commands/)`);
|
|
385
492
|
} else {
|
|
386
|
-
Theme.printResolved(`${c.bold(
|
|
493
|
+
Theme.printResolved(`${c.bold(totalCount)} commands`);
|
|
387
494
|
}
|
|
388
495
|
}
|
|
389
496
|
|
|
@@ -392,17 +499,25 @@ async function install(runtime, scope, options = {}) {
|
|
|
392
499
|
const assetTypes = [
|
|
393
500
|
{ key: 'skillsSubdir', src: src('.agent', 'skills'), label: 'skills' },
|
|
394
501
|
{ key: 'hooksSubdir', src: src('.agent', 'hooks'), label: 'hooks' },
|
|
395
|
-
{ 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' }
|
|
396
507
|
];
|
|
397
508
|
|
|
398
509
|
assetTypes.forEach(asset => {
|
|
399
510
|
const subDir = cfg[asset.key];
|
|
400
511
|
if (subDir && fsu.exists(asset.src)) {
|
|
401
|
-
|
|
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
|
+
}
|
|
402
517
|
fsu.ensureDir(dstDir);
|
|
403
518
|
// Use copyDir for the whole directory
|
|
404
|
-
fsu.copyDir(asset.src, dstDir, { excludePatterns: SENSITIVE_EXCLUDE });
|
|
405
|
-
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)`);
|
|
406
521
|
}
|
|
407
522
|
});
|
|
408
523
|
}
|
|
@@ -413,51 +528,69 @@ async function install(runtime, scope, options = {}) {
|
|
|
413
528
|
const forgeSrc = src('.mindforge');
|
|
414
529
|
const forgeDst = path.join(process.cwd(), '.mindforge');
|
|
415
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
|
+
|
|
416
537
|
if (minimal) {
|
|
417
538
|
const minimalEntries = new Set([
|
|
418
539
|
'MINDFORGE-SCHEMA.json',
|
|
419
|
-
'engine',
|
|
420
|
-
'org',
|
|
421
|
-
'governance',
|
|
422
|
-
'integrations',
|
|
423
|
-
'personas',
|
|
424
|
-
'skills',
|
|
425
|
-
'team',
|
|
540
|
+
'engine', 'org', 'governance', 'integrations', 'personas', 'skills', 'team'
|
|
426
541
|
]);
|
|
427
542
|
fsu.ensureDir(forgeDst);
|
|
428
543
|
for (const entry of fs.readdirSync(forgeSrc, { withFileTypes: true })) {
|
|
429
544
|
if (!minimalEntries.has(entry.name)) continue;
|
|
430
545
|
const s = path.join(forgeSrc, entry.name);
|
|
431
546
|
const d = path.join(forgeDst, entry.name);
|
|
432
|
-
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
|
+
}
|
|
433
552
|
}
|
|
434
|
-
Theme.printResolved(`${c.bold('.mindforge/')} (minimal
|
|
553
|
+
Theme.printResolved(`${c.bold('.mindforge/')} (minimal sync)`);
|
|
435
554
|
} else {
|
|
436
|
-
|
|
437
|
-
|
|
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)`);
|
|
438
561
|
}
|
|
439
562
|
}
|
|
440
563
|
|
|
441
|
-
// .planning/ —
|
|
564
|
+
// .planning/ — merge templates but preserve existing state
|
|
442
565
|
const planningDst = path.join(process.cwd(), '.planning');
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
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)`);
|
|
458
593
|
}
|
|
459
|
-
} else {
|
|
460
|
-
Theme.printPrompt(c.dim('.planning/ already exists — preserved (run /mindforge:health to verify)'));
|
|
461
594
|
}
|
|
462
595
|
|
|
463
596
|
// MINDFORGE.md — create only if it doesn't already exist
|
|
@@ -529,17 +662,25 @@ function collectManifestStats() {
|
|
|
529
662
|
skills: 0,
|
|
530
663
|
governance: 0,
|
|
531
664
|
integrations: 0,
|
|
532
|
-
actions: 0
|
|
665
|
+
actions: 0,
|
|
666
|
+
docs: 0,
|
|
667
|
+
templates: 0
|
|
533
668
|
};
|
|
534
669
|
|
|
535
670
|
try {
|
|
536
671
|
const forgeSrc = src('.mindforge');
|
|
537
672
|
if (fsu.exists(forgeSrc)) {
|
|
538
673
|
stats.personas = fsu.listFiles(path.join(forgeSrc, 'personas')).filter(f => f.endsWith('.md')).length;
|
|
539
|
-
stats.skills = fsu.listFiles(path.join(
|
|
674
|
+
stats.skills = fsu.listFiles(path.join(SOURCE_ROOT, '.agent', 'skills')).length;
|
|
540
675
|
stats.governance = fsu.listFiles(path.join(forgeSrc, 'governance')).filter(f => f.endsWith('.md')).length;
|
|
541
676
|
stats.integrations = fsu.listFiles(path.join(forgeSrc, 'integrations')).filter(f => f.endsWith('.md')).length;
|
|
542
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;
|
|
543
684
|
|
|
544
685
|
// Commands count
|
|
545
686
|
const claudeCmdSrc = src('.claude', 'commands', 'mindforge');
|
|
@@ -552,7 +693,7 @@ function collectManifestStats() {
|
|
|
552
693
|
}
|
|
553
694
|
} catch (e) {
|
|
554
695
|
// Fallback to default values if counting fails
|
|
555
|
-
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 };
|
|
556
697
|
}
|
|
557
698
|
|
|
558
699
|
return stats;
|
package/bin/wizard/theme.js
CHANGED
|
@@ -59,7 +59,7 @@ const Theme = {
|
|
|
59
59
|
*/
|
|
60
60
|
printBrandManifest() {
|
|
61
61
|
console.log(` ${this.colors.dim('│')}`);
|
|
62
|
-
console.log(` ${this.colors.dim('│')} ${this.colors.green('🎉 V2.
|
|
62
|
+
console.log(` ${this.colors.dim('│')} ${this.colors.green('🎉 V2.3.0 IS HERE!')} Welcome to MindForge V2!`);
|
|
63
63
|
console.log(` ${this.colors.dim('│')}`);
|
|
64
64
|
console.log(` ${this.colors.dim('│')} ${this.colors.bold('THE PLATFORM VISION:')}`);
|
|
65
65
|
console.log(` ${this.colors.dim('│')} - Unified Enterprise Agentic Ecosystem`);
|
|
@@ -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
|
-
}
|