mindforge-cc 1.0.0 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/bin/installer-core.js +3 -3
  3. package/bin/wizard/setup-wizard.js +1 -1
  4. package/package.json +18 -2
  5. package/.forge/org/CONVENTIONS.md +0 -0
  6. package/.forge/org/ORG.md +0 -0
  7. package/.forge/org/SECURITY.md +0 -0
  8. package/.forge/org/TOOLS.md +0 -0
  9. package/.forge/personas/analyst.md +0 -0
  10. package/.forge/personas/architect.md +0 -0
  11. package/.forge/personas/debug-specialist.md +0 -0
  12. package/.forge/personas/developer.md +0 -26
  13. package/.forge/personas/qa-engineer.md +0 -0
  14. package/.forge/personas/release-manager.md +0 -0
  15. package/.forge/personas/security-reviewer.md +0 -33
  16. package/.forge/personas/tech-writer.md +0 -0
  17. package/.forge/skills/api-design/SKILL.md +0 -0
  18. package/.forge/skills/code-quality/SKILL.md +0 -0
  19. package/.forge/skills/documentation/SKILL.md +0 -0
  20. package/.forge/skills/security-review/SKILL.md +0 -23
  21. package/.forge/skills/testing-standards/SKILL.md +0 -27
  22. package/.github/workflows/mindforge-ci.yml +0 -224
  23. package/.gitlab-ci-mindforge.yml +0 -18
  24. package/eslint.config.mjs +0 -31
  25. package/implementation-roadmap/day-1-imp/DAY1-HARDEN.md +0 -823
  26. package/implementation-roadmap/day-1-imp/DAY1-IMPLEMENT.md +0 -2459
  27. package/implementation-roadmap/day-1-imp/DAY1-REVIEW.md +0 -288
  28. package/implementation-roadmap/day-2-imp/DAY2-HARDEN.md +0 -954
  29. package/implementation-roadmap/day-2-imp/DAY2-IMPLEMENT.md +0 -2347
  30. package/implementation-roadmap/day-2-imp/DAY2-REVIEW.md +0 -422
  31. package/implementation-roadmap/day-3-imp/DAY3-HARDEN.md +0 -870
  32. package/implementation-roadmap/day-3-imp/DAY3-IMPLEMENT.md +0 -2798
  33. package/implementation-roadmap/day-3-imp/DAY3-REVIEW.md +0 -484
  34. package/implementation-roadmap/day-4-imp/DAY4-HARDEN.md +0 -1087
  35. package/implementation-roadmap/day-4-imp/DAY4-IMPLEMENT.md +0 -2874
  36. package/implementation-roadmap/day-4-imp/DAY4-REVIEW.md +0 -386
  37. package/implementation-roadmap/day-5-imp/DAY5-HARDEN.md +0 -1078
  38. package/implementation-roadmap/day-5-imp/DAY5-IMPLEMENT.md +0 -3151
  39. package/implementation-roadmap/day-5-imp/DAY5-REVIEW.md +0 -345
  40. package/implementation-roadmap/day-6-imp/DAY6-COMPLETE.md +0 -3919
  41. package/implementation-roadmap/day-7-imp-prod/DAY7-PRODUCTION-FINAL.md +0 -4513
  42. package/sdk/README.md +0 -69
  43. package/sdk/eslint.config.mjs +0 -34
  44. package/sdk/package-lock.json +0 -1507
  45. package/sdk/package.json +0 -30
  46. package/sdk/src/client.ts +0 -133
  47. package/sdk/src/commands.ts +0 -63
  48. package/sdk/src/events.ts +0 -166
  49. package/sdk/src/index.ts +0 -22
  50. package/sdk/src/types.ts +0 -87
  51. package/sdk/tsconfig.json +0 -13
  52. package/tests/audit.test.js +0 -206
  53. package/tests/ci-mode.test.js +0 -162
  54. package/tests/compaction.test.js +0 -161
  55. package/tests/distribution.test.js +0 -205
  56. package/tests/e2e.test.js +0 -618
  57. package/tests/governance.test.js +0 -130
  58. package/tests/install.test.js +0 -209
  59. package/tests/integrations.test.js +0 -128
  60. package/tests/intelligence.test.js +0 -117
  61. package/tests/metrics.test.js +0 -96
  62. package/tests/migration.test.js +0 -309
  63. package/tests/production.test.js +0 -416
  64. package/tests/sdk.test.js +0 -200
  65. package/tests/skills-platform.test.js +0 -403
  66. package/tests/wave-engine.test.js +0 -338
package/CHANGELOG.md CHANGED
@@ -3,6 +3,15 @@
3
3
  All notable changes to MindForge are documented here.
4
4
  Format follows [Keep a Changelog](https://keepachangelog.com).
5
5
 
6
+ ## [1.0.1] — v1.0.1 Installer and Packaging Fixes — 2026-03-22
7
+
8
+ ### Fixed
9
+ - Interactive setup now uses installer-core directly (no recursive wizard call).
10
+ - Package bin entry corrected to use `mindforge-cc` → `bin/install.js`.
11
+
12
+ ### Changed
13
+ - Added publish whitelist to reduce package size and exclude build-only files.
14
+
6
15
  ## [1.0.0] — v1.0.0 First Stable Public Release — 2026-03-22
7
16
 
8
17
  🎉 **MindForge v1.0.0 — Enterprise Agentic Framework — First Stable Release**
@@ -20,7 +20,7 @@ const RUNTIMES = {
20
20
  },
21
21
  antigravity: {
22
22
  globalDir: path.join(os.homedir(), '.gemini', 'antigravity'),
23
- localDir: '.agent',
23
+ localDir: '.agents',
24
24
  commandsSubdir: 'mindforge',
25
25
  entryFile: 'CLAUDE.md',
26
26
  },
@@ -150,7 +150,7 @@ async function install(runtime, scope, options = {}) {
150
150
  // ── 1. Install CLAUDE.md ────────────────────────────────────────────────────
151
151
  const claudeSrc = runtime === 'claude'
152
152
  ? src('.claude', 'CLAUDE.md')
153
- : src('.agent', 'CLAUDE.md');
153
+ : src('.agents', 'CLAUDE.md');
154
154
 
155
155
  if (fsu.exists(claudeSrc)) {
156
156
  safeCopyClaude(claudeSrc, path.join(baseDir, 'CLAUDE.md'), { force, verbose });
@@ -160,7 +160,7 @@ async function install(runtime, scope, options = {}) {
160
160
  // ── 2. Install commands ─────────────────────────────────────────────────────
161
161
  const cmdSrc = runtime === 'claude'
162
162
  ? src('.claude', 'commands', 'mindforge')
163
- : src('.agent', 'mindforge');
163
+ : src('.agents', 'mindforge');
164
164
 
165
165
  if (fsu.exists(cmdSrc)) {
166
166
  fsu.ensureDir(cmdsDir);
@@ -150,7 +150,7 @@ async function configureFeatures(rl) {
150
150
  }
151
151
 
152
152
  async function install(runtimes, scope) {
153
- const installer = require('../install');
153
+ const installer = require('../installer-core');
154
154
  if (!installer || typeof installer.install !== 'function') return;
155
155
  for (const runtime of runtimes) {
156
156
  await installer.install(runtime, scope);
package/package.json CHANGED
@@ -1,10 +1,26 @@
1
1
  {
2
2
  "name": "mindforge-cc",
3
- "version": "1.0.0",
3
+ "version": "1.0.1",
4
4
  "description": "MindForge \u2014 Enterprise Agentic Framework for Claude Code and Antigravity",
5
5
  "bin": {
6
- "mindforge": "./bin/wizard/setup-wizard.js"
6
+ "mindforge-cc": "./bin/install.js"
7
7
  },
8
+ "files": [
9
+ ".agent/",
10
+ ".claude/",
11
+ ".mindforge/",
12
+ ".planning/",
13
+ "bin/",
14
+ "docs/",
15
+ "examples/",
16
+ "CHANGELOG.md",
17
+ "LICENSE",
18
+ "MINDFORGE.md",
19
+ "README.md",
20
+ "RELEASENOTES.md",
21
+ "SECURITY.md",
22
+ "package.json"
23
+ ],
8
24
  "scripts": {
9
25
  "test": "node tests/install.test.js",
10
26
  "lint": "eslint ."
File without changes
package/.forge/org/ORG.md DELETED
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -1,26 +0,0 @@
1
- # Senior Developer Persona
2
-
3
- ## Identity
4
- You are a senior software engineer with 10+ years of experience.
5
- You write clean, maintainable, well-tested code.
6
- You think before you type. You read the architecture before touching any file.
7
-
8
- ## Before writing any code
9
- 1. Read ARCHITECTURE.md to understand the system design.
10
- 2. Read CONVENTIONS.md to understand naming and structure rules.
11
- 3. Read the PLAN file for this specific task — follow it precisely.
12
- 4. Identify which files you will touch. Touch nothing else.
13
-
14
- ## While coding
15
- - Follow the naming conventions in CONVENTIONS.md exactly.
16
- - Write tests alongside implementation, not after.
17
- - If you encounter an ambiguity in the plan, document your decision in SUMMARY.md — don't silently guess.
18
- - If a task is larger than expected, stop and flag it. Do not expand scope.
19
-
20
- ## Definition of done
21
- A task is done when:
22
- - The `<verify>` step in the PLAN passes
23
- - Tests are written and passing
24
- - No linter errors
25
- - Code is committed with the correct message format
26
- - SUMMARY.md is written
File without changes
File without changes
@@ -1,33 +0,0 @@
1
- # Security Reviewer Persona
2
-
3
- ## Identity
4
- You are a senior application security engineer.
5
- You approach every review assuming the adversary has already read the code.
6
-
7
- ## OWASP Top 10 checklist (run on every review)
8
- 1. Injection — SQL, NoSQL, OS command, LDAP
9
- 2. Broken authentication — session management, credential exposure
10
- 3. Sensitive data exposure — PII in logs, unencrypted storage
11
- 4. XML External Entities — if XML parsing is present
12
- 5. Broken access control — unauthorized resource access
13
- 6. Security misconfiguration — default credentials, verbose errors
14
- 7. Cross-site scripting — reflected, stored, DOM-based
15
- 8. Insecure deserialization — untrusted object deserialization
16
- 9. Known vulnerable components — outdated dependencies
17
- 10. Insufficient logging — missing audit trail for sensitive actions
18
-
19
- ## Secret detection
20
- Scan every diff for:
21
- - API keys (any string matching `sk-`, `pk-`, `Bearer `, `token=`)
22
- - Passwords in config files
23
- - PEM keys or certificate content
24
- - Database connection strings with credentials
25
-
26
- ## Output format
27
- Write findings to `.planning/phases/phase-N/SECURITY-REVIEW-N.md`:
28
- - CRITICAL — blocks merge, must be fixed immediately
29
- - HIGH — must be fixed before release
30
- - MEDIUM — should be fixed in next sprint
31
- - LOW — informational, log for backlog
32
-
33
- Never approve a change with a CRITICAL finding.
File without changes
File without changes
File without changes
File without changes
@@ -1,23 +0,0 @@
1
- ---
2
- name: security-review
3
- triggers: auth, login, password, token, JWT, session, payment, PII, personal data, upload, credentials, API key, secret
4
- ---
5
-
6
- # Security Review Skill
7
-
8
- ## When this skill activates
9
- Any task involving authentication, authorization, payment processing, personal data handling, file uploads, or secret management.
10
-
11
- ## What to do when activated
12
- Before writing any code for this task:
13
- 1. Switch to the Security Reviewer persona (`.forge/personas/security-reviewer.md`)
14
- 2. Review the existing code in the files you will touch for existing vulnerabilities
15
- 3. Plan your implementation to avoid introducing new ones
16
- 4. After implementation, run the OWASP checklist from the Security Reviewer persona
17
-
18
- ## Common patterns for this project
19
- - Auth: Always use httpOnly cookies, never localStorage for tokens
20
- - Passwords: bcrypt with cost factor ≥ 12, never MD5 or SHA1 alone
21
- - SQL: Always parameterized queries, never string concatenation
22
- - Secrets: Environment variables only, never in code or git
23
- - API responses: Never return stack traces to clients in production
@@ -1,27 +0,0 @@
1
- ---
2
- name: testing-standards
3
- triggers: test, spec, unit test, integration test, coverage, jest, vitest, pytest, verify
4
- ---
5
-
6
- # Testing Standards Skill
7
-
8
- ## Coverage targets
9
- - Unit tests: 80% line coverage minimum on business logic
10
- - Integration tests: All API endpoints must have at least one happy-path and one error-path test
11
- - E2E: Critical user flows only (login, core action, logout)
12
-
13
- ## What every test file must have
14
- - Descriptive test names: "should return 401 when token is expired" not "auth test 3"
15
- - Arrange / Act / Assert structure with a blank line between each section
16
- - No test should depend on another test's side effects (fully isolated)
17
- - No hardcoded test data that overlaps with production data
18
-
19
- ## Test file placement
20
- - Unit tests: co-located with source file (`auth.ts` → `auth.test.ts`)
21
- - Integration tests: `/tests/integration/`
22
- - E2E tests: `/tests/e2e/`
23
-
24
- ## What to do when this skill activates
25
- 1. Before implementing a feature, write the test first (TDD where possible)
26
- 2. After implementing, run the full test suite — do not mark task complete if tests fail
27
- 3. Check coverage with `[project test coverage command]` — must meet targets above
@@ -1,224 +0,0 @@
1
- name: MindForge CI
2
-
3
- on:
4
- push:
5
- branches: [ main, 'feat/**' ]
6
- pull_request:
7
- branches: [ main ]
8
-
9
- env:
10
- CI: true
11
- MINDFORGE_CI: true
12
- NODE_VERSION: '20'
13
-
14
- jobs:
15
- mindforge-health:
16
- name: MindForge Health Check
17
- runs-on: ubuntu-latest
18
- steps:
19
- - uses: actions/checkout@v4
20
- with:
21
- fetch-depth: 0
22
-
23
- - uses: actions/setup-node@v4
24
- with:
25
- node-version: ${{ env.NODE_VERSION }}
26
-
27
- - name: Install dependencies
28
- run: npm install
29
-
30
- - name: Install MindForge
31
- run: node bin/wizard/setup-wizard.js --claude --local
32
-
33
- - name: Validate MINDFORGE.md
34
- run: node bin/validate-config.js
35
-
36
- - name: Run MindForge health check
37
- run: |
38
- echo "::group::MindForge Health Report"
39
- node -e "
40
- const fs = require('fs');
41
- const files = ['.planning/AUDIT.jsonl', '.planning/STATE.md', '.planning/HANDOFF.json'];
42
- let allPresent = true;
43
- files.forEach(f => {
44
- if (!fs.existsSync(f)) {
45
- console.log('::warning::Missing state file: ' + f);
46
- allPresent = false;
47
- }
48
- });
49
- console.log(allPresent ? '::notice::All state files present' : '::warning::Some state files missing');
50
- "
51
- echo "::endgroup::"
52
-
53
- mindforge-security:
54
- name: Security Scan
55
- runs-on: ubuntu-latest
56
- needs: mindforge-health
57
- steps:
58
- - uses: actions/checkout@v4
59
-
60
- - uses: actions/setup-node@v4
61
- with:
62
- node-version: ${{ env.NODE_VERSION }}
63
-
64
- - name: Install dependencies
65
- run: npm ci
66
-
67
- - name: MindForge secret detection
68
- run: |
69
- echo "::group::Secret Detection"
70
- if grep -rE "(sk-[a-zA-Z0-9]{20,}|ghp_[a-zA-Z0-9]+|xoxb-[a-zA-Z0-9-]+)" \
71
- --include="*.ts" --include="*.js" --include="*.json" \
72
- --exclude-dir=node_modules --exclude-dir=.git \
73
- . 2>/dev/null; then
74
- echo "::error::Credentials detected in source files. Remove before merging."
75
- exit 1
76
- fi
77
- echo "::notice::No credentials detected ✅"
78
- echo "::endgroup::"
79
-
80
- - name: Dependency audit
81
- run: |
82
- echo "::group::Dependency Audit"
83
- npm audit --audit-level=high 2>&1 || {
84
- echo "::error::High/critical vulnerabilities found. Run: npm audit fix"
85
- exit 1
86
- }
87
- echo "::endgroup::"
88
-
89
- mindforge-quality:
90
- name: Code Quality Gates
91
- runs-on: ubuntu-latest
92
- needs: mindforge-health
93
- env:
94
- ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
95
- steps:
96
- - uses: actions/checkout@v4
97
-
98
- - uses: actions/setup-node@v4
99
- with:
100
- node-version: ${{ env.NODE_VERSION }}
101
-
102
- - name: Install dependencies
103
- run: |
104
- npm ci
105
- if [ -d "sdk" ]; then
106
- cd sdk && npm install && cd ..
107
- fi
108
-
109
- - name: Type check
110
- run: |
111
- if [ -f "sdk/tsconfig.json" ]; then
112
- npx tsc --noEmit -p sdk/tsconfig.json 2>&1 | while read line; do
113
- echo "::error::$line"
114
- done
115
- else
116
- echo "::notice::No root or SDK tsconfig - skipping type check"
117
- fi
118
-
119
- - name: Lint
120
- run: |
121
- if [ -d "sdk" ] && ( [ -f "sdk/eslint.config.js" ] || [ -f "sdk/eslint.config.mjs" ] || [ -f "sdk/.eslintrc.json" ] || [ -f "sdk/.eslintrc.js" ] ); then
122
- cd sdk && npx eslint src/ --max-warnings 0 && cd ..
123
- else
124
- echo "::notice::No ESLint configured for SDK - skipping"
125
- fi
126
-
127
- - name: Test suite with coverage
128
- run: npm test -- --coverage
129
- env:
130
- COVERAGE_THRESHOLD: 80
131
-
132
- - name: Check coverage threshold
133
- run: |
134
- if [ -f "coverage/coverage-summary.json" ]; then
135
- COVERAGE=$(node -e "const d=JSON.parse(require('fs').readFileSync('coverage/coverage-summary.json','utf8')); \
136
- console.log(Math.floor(d.total.lines.pct))" 2>/dev/null || echo "0")
137
- MIN=${CI_MIN_COVERAGE_PCT:-80}
138
- if [ "${COVERAGE}" -lt "${MIN}" ]; then
139
- echo "::error::Coverage ${COVERAGE}% is below minimum ${MIN}%"
140
- exit 1
141
- fi
142
- echo "::notice::Coverage: ${COVERAGE}% ✅"
143
- else
144
- echo "::notice::No coverage summary found in coverage/coverage-summary.json - skipping threshold check."
145
- fi
146
-
147
- - name: Check governance tier (Tier 3 blocks CI)
148
- run: |
149
- PENDING_T3=$(find .planning/approvals/ -name "*.json" 2>/dev/null | xargs grep -l '"tier": 3' 2>/dev/null | xargs -r grep -l '"status": "pending"' 2>/dev/null | wc -l)
150
-
151
- if [ "${PENDING_T3}" -gt 0 ]; then
152
- echo "::error title=Tier 3 Governance Block::${PENDING_T3} Tier 3 change(s) require compliance review."
153
- echo "::error::Tier 3 changes (auth/payment/PII) cannot be auto-approved in CI."
154
- echo "::error::To resolve: get human approval with /mindforge:approve [id], then push again."
155
-
156
- {
157
- echo "## 🔴 Governance Block: Tier 3 Approval Required"
158
- echo ""
159
- echo "This PR contains changes that require compliance review (auth, payment, or PII handling)."
160
- echo ""
161
- echo "**Next steps:**"
162
- echo "1. Run \`/mindforge:approve\` to see pending approval requests"
163
- echo "2. Have your compliance officer approve with \`/mindforge:approve [id]\`"
164
- echo "3. Push again — CI will pass once the approval is recorded"
165
- echo ""
166
- echo "See \`.planning/approvals/\` for details."
167
- } >> "${GITHUB_STEP_SUMMARY}"
168
- exit 1
169
- fi
170
-
171
- echo "::notice::Governance check passed — no pending Tier 3 blocks ✅"
172
-
173
- mindforge-ai-review:
174
- name: AI Code Review
175
- runs-on: ubuntu-latest
176
- needs: [mindforge-security, mindforge-quality]
177
- if: github.event_name == 'pull_request'
178
- env:
179
- ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
180
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
181
- steps:
182
- - uses: actions/checkout@v4
183
- with:
184
- fetch-depth: 0
185
-
186
- - uses: actions/setup-node@v4
187
- with:
188
- node-version: ${{ env.NODE_VERSION }}
189
-
190
- - name: Install dependencies
191
- run: npm install
192
-
193
- - name: Install MindForge
194
- run: node bin/wizard/setup-wizard.js --claude --local
195
-
196
- - name: Run AI PR Review
197
- run: |
198
- if [ -z "${ANTHROPIC_API_KEY}" ]; then
199
- echo "::notice::ANTHROPIC_API_KEY not set — skipping AI review"
200
- exit 0
201
- fi
202
-
203
- git diff ${{ github.event.pull_request.base.sha }}...${{ github.event.pull_request.head.sha }} > /tmp/pr.diff
204
-
205
- node -e "
206
- console.log('::notice::AI PR review completed — see review comment on PR');
207
- "
208
-
209
- - name: Post review as PR comment
210
- uses: actions/github-script@v7
211
- with:
212
- script: |
213
- const fs = require('fs');
214
- const review = fs.existsSync('/tmp/mindforge-review.md') ?
215
- fs.readFileSync('/tmp/mindforge-review.md', 'utf8') :
216
- '✅ MindForge AI review: no significant issues found.';
217
-
218
- await github.rest.pulls.createReview({
219
- owner: context.repo.owner,
220
- repo: context.repo.repo,
221
- pull_number: context.issue.number,
222
- body: review,
223
- event: 'COMMENT'
224
- });
@@ -1,18 +0,0 @@
1
- stages:
2
- - mindforge
3
-
4
- mindforge:
5
- stage: mindforge
6
- image: node:20
7
- variables:
8
- CI: "true"
9
- MINDFORGE_CI: "true"
10
- script:
11
- - npx mindforge-cc@latest --claude --local
12
- - node bin/validate-config.js
13
- - node tests/ci-mode.test.js
14
- artifacts:
15
- when: always
16
- paths:
17
- - .planning/HANDOFF.json
18
- - .planning/STATE.md
package/eslint.config.mjs DELETED
@@ -1,31 +0,0 @@
1
- import js from "@eslint/js";
2
- import globals from "globals";
3
-
4
- /** @type {import('eslint').Linter.Config[]} */
5
- export default [
6
- js.configs.recommended,
7
- {
8
- languageOptions: {
9
- ecmaVersion: "latest",
10
- sourceType: "module",
11
- globals: {
12
- ...globals.node,
13
- ...globals.es2021
14
- }
15
- },
16
- rules: {
17
- "no-console": "off",
18
- "no-unused-vars": "warn",
19
- "semi": ["error", "always"],
20
- "quotes": ["error", "single"]
21
- }
22
- },
23
- {
24
- ignores: [
25
- "**/node_modules/",
26
- "dist/",
27
- "coverage/",
28
- ".gemini/"
29
- ]
30
- }
31
- ];