mindforge-cc 2.1.4 → 2.3.0

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 (118) hide show
  1. package/.agent/CLAUDE.md +14 -0
  2. package/.agent/forge/help.md +4 -0
  3. package/.agent/forge/init-project.md +4 -0
  4. package/.agent/forge/plan-phase.md +4 -0
  5. package/.agent/mindforge/approve.md +4 -0
  6. package/.agent/mindforge/audit.md +4 -0
  7. package/.agent/mindforge/auto.md +4 -0
  8. package/.agent/mindforge/benchmark.md +4 -0
  9. package/.agent/mindforge/browse.md +4 -0
  10. package/.agent/mindforge/complete-milestone.md +4 -0
  11. package/.agent/mindforge/costs.md +4 -0
  12. package/.agent/mindforge/cross-review.md +4 -0
  13. package/.agent/mindforge/dashboard.md +4 -0
  14. package/.agent/mindforge/debug.md +4 -0
  15. package/.agent/mindforge/discuss-phase.md +4 -0
  16. package/.agent/mindforge/execute-phase.md +4 -0
  17. package/.agent/mindforge/health.md +4 -0
  18. package/.agent/mindforge/help.md +4 -0
  19. package/.agent/mindforge/init-org.md +4 -0
  20. package/.agent/mindforge/init-project.md +4 -0
  21. package/.agent/mindforge/install-skill.md +4 -0
  22. package/.agent/mindforge/learn.md +4 -0
  23. package/.agent/mindforge/map-codebase.md +4 -0
  24. package/.agent/mindforge/marketplace.md +4 -0
  25. package/.agent/mindforge/metrics.md +4 -0
  26. package/.agent/mindforge/migrate.md +4 -0
  27. package/.agent/mindforge/milestone.md +4 -0
  28. package/.agent/mindforge/new-runtime.md +4 -0
  29. package/.agent/mindforge/next.md +4 -0
  30. package/.agent/mindforge/plan-phase.md +4 -0
  31. package/.agent/mindforge/plugins.md +4 -0
  32. package/.agent/mindforge/pr-review.md +4 -0
  33. package/.agent/mindforge/profile-team.md +4 -0
  34. package/.agent/mindforge/publish-skill.md +4 -0
  35. package/.agent/mindforge/qa.md +4 -0
  36. package/.agent/mindforge/quick.md +4 -0
  37. package/.agent/mindforge/release.md +4 -0
  38. package/.agent/mindforge/remember.md +4 -0
  39. package/.agent/mindforge/research.md +4 -0
  40. package/.agent/mindforge/retrospective.md +4 -0
  41. package/.agent/mindforge/review.md +4 -0
  42. package/.agent/mindforge/security-scan.md +4 -0
  43. package/.agent/mindforge/ship.md +4 -0
  44. package/.agent/mindforge/skills.md +4 -0
  45. package/.agent/mindforge/status.md +4 -0
  46. package/.agent/mindforge/steer.md +4 -0
  47. package/.agent/mindforge/sync-confluence.md +4 -0
  48. package/.agent/mindforge/sync-jira.md +4 -0
  49. package/.agent/mindforge/tokens.md +4 -0
  50. package/.agent/mindforge/update.md +4 -0
  51. package/.agent/mindforge/verify-phase.md +4 -0
  52. package/.agent/mindforge/workspace.md +4 -0
  53. package/.agent/workflows/forge:help.md +10 -0
  54. package/.agent/workflows/forge:init-project.md +35 -0
  55. package/.agent/workflows/forge:plan-phase.md +33 -0
  56. package/.agent/workflows/mindforge:add-backlog.md +24 -0
  57. package/.agent/workflows/mindforge:agent.md +25 -0
  58. package/.agent/workflows/mindforge:approve.md +21 -0
  59. package/.agent/workflows/mindforge:audit.md +33 -0
  60. package/.agent/workflows/mindforge:auto.md +25 -0
  61. package/.agent/workflows/mindforge:benchmark.md +36 -0
  62. package/.agent/workflows/mindforge:browse.md +29 -0
  63. package/.agent/workflows/mindforge:complete-milestone.md +21 -0
  64. package/.agent/workflows/mindforge:costs.md +14 -0
  65. package/.agent/workflows/mindforge:cross-review.md +20 -0
  66. package/.agent/workflows/mindforge:dashboard.md +101 -0
  67. package/.agent/workflows/mindforge:debug.md +129 -0
  68. package/.agent/workflows/mindforge:discuss-phase.md +141 -0
  69. package/.agent/workflows/mindforge:do.md +25 -0
  70. package/.agent/workflows/mindforge:execute-phase.md +193 -0
  71. package/.agent/workflows/mindforge:health.md +24 -0
  72. package/.agent/workflows/mindforge:help.md +26 -0
  73. package/.agent/workflows/mindforge:init-org.md +134 -0
  74. package/.agent/workflows/mindforge:init-project.md +169 -0
  75. package/.agent/workflows/mindforge:install-skill.md +27 -0
  76. package/.agent/workflows/mindforge:learn.md +146 -0
  77. package/.agent/workflows/mindforge:map-codebase.md +301 -0
  78. package/.agent/workflows/mindforge:marketplace.md +123 -0
  79. package/.agent/workflows/mindforge:metrics.md +25 -0
  80. package/.agent/workflows/mindforge:migrate.md +43 -0
  81. package/.agent/workflows/mindforge:milestone.md +15 -0
  82. package/.agent/workflows/mindforge:new-runtime.md +22 -0
  83. package/.agent/workflows/mindforge:next.md +108 -0
  84. package/.agent/workflows/mindforge:note.md +27 -0
  85. package/.agent/workflows/mindforge:plan-phase.md +128 -0
  86. package/.agent/workflows/mindforge:plant-seed.md +24 -0
  87. package/.agent/workflows/mindforge:plugins.md +43 -0
  88. package/.agent/workflows/mindforge:pr-review.md +44 -0
  89. package/.agent/workflows/mindforge:profile-team.md +26 -0
  90. package/.agent/workflows/mindforge:publish-skill.md +22 -0
  91. package/.agent/workflows/mindforge:qa.md +19 -0
  92. package/.agent/workflows/mindforge:quick.md +138 -0
  93. package/.agent/workflows/mindforge:release.md +13 -0
  94. package/.agent/workflows/mindforge:remember.md +29 -0
  95. package/.agent/workflows/mindforge:research.md +15 -0
  96. package/.agent/workflows/mindforge:retrospective.md +29 -0
  97. package/.agent/workflows/mindforge:review-backlog.md +26 -0
  98. package/.agent/workflows/mindforge:review.md +160 -0
  99. package/.agent/workflows/mindforge:security-scan.md +236 -0
  100. package/.agent/workflows/mindforge:session-report.md +31 -0
  101. package/.agent/workflows/mindforge:ship.md +103 -0
  102. package/.agent/workflows/mindforge:skills.md +144 -0
  103. package/.agent/workflows/mindforge:status.md +107 -0
  104. package/.agent/workflows/mindforge:steer.md +16 -0
  105. package/.agent/workflows/mindforge:sync-confluence.md +14 -0
  106. package/.agent/workflows/mindforge:sync-jira.md +15 -0
  107. package/.agent/workflows/mindforge:tokens.md +11 -0
  108. package/.agent/workflows/mindforge:ui-phase.md +27 -0
  109. package/.agent/workflows/mindforge:ui-review.md +28 -0
  110. package/.agent/workflows/mindforge:update.md +45 -0
  111. package/.agent/workflows/mindforge:validate-phase.md +25 -0
  112. package/.agent/workflows/mindforge:verify-phase.md +65 -0
  113. package/.agent/workflows/mindforge:workspace.md +32 -0
  114. package/.agent/workflows/mindforge:workstreams.md +27 -0
  115. package/.claude/CLAUDE.md +14 -0
  116. package/bin/installer-core.js +115 -19
  117. package/bin/wizard/theme.js +1 -1
  118. package/package.json +1 -1
@@ -0,0 +1,26 @@
1
+ ---
2
+ description: Review and promote backlog items to the active phase sequence
3
+ ---
4
+ <objective>
5
+ Review items currently parked in the ROADMAP.md backlog and facilitate their promotion to the active development plan.
6
+ </objective>
7
+
8
+ <execution_context>
9
+ .claude/commands/mindforge/review-backlog.md
10
+ </execution_context>
11
+
12
+ <context>
13
+ Target File: ROADMAP.md, STATE.md
14
+ State: Resolves the next available phase number from STATE.md for promotion.
15
+ </context>
16
+
17
+ <process>
18
+ 1. **Read ROADMAP.md**: Extract all items under the `## Backlog` section (999.x).
19
+ 2. **Present to User**: List the backlog items and ask which one(s) should be promoted.
20
+ 3. **Determine Promotion Slot**: Read STATE.md to find the next sequential phase number.
21
+ 4. **Promote Item**:
22
+ - Move the item from the backlog to the active milestone list.
23
+ - Renumber the item to the next available phase number.
24
+ 5. **Update STATE.md**: Add the new phase to STATE.md in `unplanned` or `planned` status as appropriate.
25
+ 6. **Confirm**: Summarize the promotion to the user.
26
+ </process>
@@ -0,0 +1,160 @@
1
+ ---
2
+ description: - /mindforge:review (no args) → review all uncommitted changes (git diff)
3
+ ---
4
+ # MindForge — Review Command
5
+ # Usage: /mindforge:review [path|phase N|--staged|--last-commit]
6
+ # Performs a comprehensive code review using code-quality and security skills.
7
+
8
+ ## Review targets
9
+ - `/mindforge:review` (no args) → review all uncommitted changes (`git diff`)
10
+ - `/mindforge:review --staged` → review staged changes (`git diff --cached`)
11
+ - `/mindforge:review --last-commit` → review the last commit (`git diff HEAD~1`)
12
+ - `/mindforge:review phase [N]` → review all commits in phase N
13
+ - `/mindforge:review [file-path]` → review a specific file
14
+ - `/mindforge:review [dir-path]` → review all files in a directory
15
+
16
+ ## Step 1 — Establish review scope
17
+
18
+ Based on the target argument, build the file list to review:
19
+ ```bash
20
+ # Uncommitted changes
21
+ git diff --name-only
22
+
23
+ # Staged changes
24
+ git diff --cached --name-only
25
+
26
+ # Last commit
27
+ git diff HEAD~1 --name-only
28
+
29
+ # Phase N (all commits between phase start and phase end tags)
30
+ git log --oneline --name-only [phase-start-sha]..[phase-end-sha]
31
+ ```
32
+
33
+ Display the file list to the user before reviewing:
34
+ "Reviewing [N] files: [list]"
35
+
36
+ ## Step 2 — Load review personas and skills
37
+
38
+ Activate TWO personas simultaneously for a comprehensive review:
39
+
40
+ **Primary:** `code-quality.md` — structural quality, conventions, complexity
41
+ **Secondary:** `security-reviewer.md` — security issues, data exposure, auth
42
+
43
+ Load these skills:
44
+ - `code-quality/SKILL.md` — always
45
+ - `security-review/SKILL.md` — always
46
+ - Contextual skills based on file types detected in the diff:
47
+ - `.ts`/`.tsx` → also load `api-design/SKILL.md` (if routes present)
48
+ - Database migration files → also load `database-patterns/SKILL.md`
49
+ - UI component files → also load `accessibility/SKILL.md`
50
+
51
+ ## Step 3 — Review each file
52
+
53
+ For each file in the review scope:
54
+
55
+ **Read the full file content** (not just the diff — context matters).
56
+ **Read the diff for this file** to understand what changed.
57
+
58
+ Apply ALL of the following checks:
59
+
60
+ ### Code quality checks
61
+ - [ ] Functions within length limits (CONVENTIONS.md standard)
62
+ - [ ] Cyclomatic complexity ≤ 10 (count if/else/switch/catch/ternary branches)
63
+ - [ ] No magic numbers (named constants used instead)
64
+ - [ ] No commented-out code
65
+ - [ ] No `TODO` or `FIXME` left uncommitted
66
+ - [ ] Error handling is explicit (no empty catch blocks)
67
+ - [ ] Naming is precise and unambiguous (no `data`, `info`, `temp`)
68
+ - [ ] Every exported function has a JSDoc/docstring
69
+ - [ ] DRY: no logic duplicated 3+ times
70
+ - [ ] No dead code (imports/variables defined but never used)
71
+
72
+ ### Convention checks (from CONVENTIONS.md)
73
+ - [ ] File naming follows convention
74
+ - [ ] Import order follows the defined order
75
+ - [ ] All forbidden patterns are absent
76
+ - [ ] Architecture boundaries respected (services don't import routes, etc.)
77
+
78
+ ### Security checks (from security-review SKILL)
79
+ - [ ] No hardcoded credentials or secrets
80
+ - [ ] User input validated at boundaries
81
+ - [ ] SQL queries parameterised
82
+ - [ ] Sensitive data not in logs or error messages
83
+ - [ ] New dependencies CVE-scanned
84
+
85
+ ### Type safety (TypeScript projects)
86
+ - [ ] No `any` types without justification comment
87
+ - [ ] No `as unknown as X` casting without justification
88
+ - [ ] All function parameters typed (no implicit any)
89
+ - [ ] Return types explicitly declared on public functions
90
+
91
+ ## Step 4 — Write the review report
92
+
93
+ Create `.planning/phases/[current-phase]/CODE-REVIEW-[timestamp].md`
94
+ or `.planning/quick/review-[timestamp].md` for ad-hoc reviews:
95
+
96
+ ```markdown
97
+ # Code Review Report
98
+ **Date:** [ISO-8601]
99
+ **Reviewer:** MindForge (code-quality + security-reviewer)
100
+ **Scope:** [what was reviewed]
101
+ **Files reviewed:** [N]
102
+
103
+ ## Summary
104
+ [2-3 sentences: overall quality, major themes, recommendation]
105
+
106
+ ## Findings
107
+
108
+ ### 🔴 Blocking (must fix before merge)
109
+ | # | File | Line | Issue | Recommendation |
110
+ |---|---|---|---|---|
111
+ | 1 | src/auth/login.ts | 47 | Parameterised query not used | Use `db.query('SELECT * FROM users WHERE id = $1', [id])` |
112
+
113
+ ### 🟠 Major (should fix in this PR)
114
+ | # | File | Line | Issue | Recommendation |
115
+ |---|---|---|---|---|
116
+ | 1 | src/api/users.ts | 23 | Function is 67 lines (limit: 40) | Extract `validateUserInput` to separate function |
117
+
118
+ ### 🟡 Minor (fix in follow-up)
119
+ | # | File | Line | Issue | Recommendation |
120
+ |---|---|---|---|---|
121
+ | 1 | src/models/order.ts | 8 | Missing JSDoc on exported function | Add `@param`, `@returns`, `@throws` |
122
+
123
+ ### 💡 Suggestions (optional improvements)
124
+ | # | File | Line | Suggestion |
125
+ |---|---|---|---|
126
+ | 1 | src/services/email.ts | 15 | Consider memoising the template compilation |
127
+
128
+ ## Metrics
129
+ - Files reviewed: [N]
130
+ - Lines reviewed: [N]
131
+ - Blocking findings: [N]
132
+ - Major findings: [N]
133
+ - Minor findings: [N]
134
+ - Suggestions: [N]
135
+
136
+ ## Verdict
137
+ ✅ APPROVED — No blocking or major findings
138
+ ⚠️ APPROVED WITH CONDITIONS — Fix [N] major findings
139
+ ❌ CHANGES REQUIRED — [N] blocking findings must be fixed
140
+ ```
141
+
142
+ ## Step 5 — Write AUDIT entry
143
+
144
+ ```json
145
+ {
146
+ "event": "code_review_completed",
147
+ "scope": "[what was reviewed]",
148
+ "files_reviewed": [N],
149
+ "blocking_findings": [N],
150
+ "major_findings": [N],
151
+ "verdict": "approved | changes_required",
152
+ "report_path": ".planning/.../CODE-REVIEW-[timestamp].md"
153
+ }
154
+ ```
155
+
156
+ ## Step 6 — Report to user
157
+
158
+ Display a summary of findings.
159
+ If blocking findings exist: do not allow merge.
160
+ Tell the user: "Fix the [N] blocking issues, then run /mindforge:review again to re-check."
@@ -0,0 +1,236 @@
1
+ ---
2
+ description: - Default: OWASP Top 10 review on the changed files or specified path
3
+ ---
4
+ # MindForge — Security Scan Command
5
+ # Usage: /mindforge:security-scan [path] [--deep] [--deps] [--secrets]
6
+ # Standalone security scan. Can be run independently of the phase lifecycle.
7
+
8
+ ## Scan modes
9
+ - Default: OWASP Top 10 review on the changed files or specified path
10
+ - `--deep`: Extended scan including all files, not just changed
11
+ - `--deps`: Dependency audit (CVE scan of package.json / requirements.txt)
12
+ - `--secrets`: Secret detection scan only (fast, suitable for pre-commit hook)
13
+ - Flags composable: `--deps --secrets` runs both dependency audit and secret detection
14
+
15
+ ## Step 1 — Activate Security Reviewer persona
16
+
17
+ Load `security-reviewer.md` persona immediately and completely.
18
+ This command runs entirely in security mode. Do not switch personas.
19
+
20
+ ## Step 2 — Build scan scope
21
+
22
+ ```bash
23
+ # Default: staged + unstaged changes
24
+ git diff HEAD --name-only
25
+
26
+ # With path argument
27
+ find [path] -name "*.ts" -o -name "*.js" -o -name "*.py"
28
+
29
+ # --deep: all source files
30
+ find src/ -type f \( -name "*.ts" -o -name "*.js" -o -name "*.py" \)
31
+ ```
32
+
33
+ ## Step 3 — OWASP Top 10 scan (always runs unless --secrets only)
34
+
35
+ For each file in scope, check all 10 OWASP categories:
36
+
37
+ ### A01 — Broken Access Control
38
+ - Scan for: missing auth middleware, direct object references, path traversal
39
+ - Patterns to flag:
40
+ ```
41
+ req.params.userId # Direct user ID from request — verify ownership check
42
+ fs.readFile(userInput) # Path traversal risk
43
+ WHERE id = ${id} # Direct injection without parameterisation
44
+ ```
45
+
46
+ ### A02 — Cryptographic Failures
47
+ - Scan for: weak algorithms, insecure transport, unencrypted sensitive data
48
+ - Patterns to flag:
49
+ ```
50
+ md5(, sha1(, sha256(password # Weak password hashing
51
+ http:// # Non-HTTPS URLs in API calls
52
+ Math.random() # Cryptographically insecure random
53
+ ```
54
+
55
+ ### A03 — Injection
56
+ - Scan for: SQL, NoSQL, OS, LDAP injection
57
+ - Patterns to flag:
58
+ ```
59
+ `SELECT * FROM users WHERE email = '${ # SQL injection
60
+ exec(, execSync(, child_process # OS command injection
61
+ eval(userInput # Code injection
62
+ ```
63
+
64
+ ### A04 — Insecure Design
65
+ - Scan for: missing rate limiting, no input validation, trust boundary issues
66
+ - Patterns to flag: endpoints without validation middleware, no rate limit decorators
67
+
68
+ ### A05 — Security Misconfiguration
69
+ - Scan for: debug mode in production, default credentials, verbose errors
70
+ - Patterns to flag:
71
+ ```
72
+ console.error(err) # Exposes stack traces to clients
73
+ NODE_ENV !== 'production' # Debug code paths
74
+ ALLOW_ALL, *, cors({origin: '*'}) # Overly permissive CORS
75
+ ```
76
+
77
+ ### A06 — Vulnerable Components
78
+ - Run: `npm audit --audit-level=moderate` or `pip-audit`
79
+ - Flag any HIGH or CRITICAL CVEs
80
+
81
+ ### A07 — Authentication Failures
82
+ - Scan for: missing password complexity, no brute force protection, weak sessions
83
+ - Patterns to flag:
84
+ ```
85
+ bcrypt.hashSync(pass, 1) # Cost factor too low
86
+ jwt.verify(token, '', { # Empty secret
87
+ session.destroy( # Verify redirect after destroy
88
+ ```
89
+
90
+ ### A08 — Software and Data Integrity Failures
91
+ - Check: no package-lock.json means no integrity guarantee
92
+ - Check: any `curl | sh` or `wget | bash` patterns
93
+
94
+ ### A09 — Security Logging Failures
95
+ - Scan for: no logging on auth failures, admin actions not logged, PII in logs
96
+ - Patterns to flag:
97
+ ```
98
+ user.email in any log statement
99
+ password in any log statement
100
+ catch(e) {} # Silent failure = no security log
101
+ ```
102
+
103
+ ### A10 — SSRF
104
+ - Scan for: server-side requests to user-controlled URLs
105
+ - Patterns to flag:
106
+ ```
107
+ fetch(req., axios.get(req., axios.post(req., http.get(req.,
108
+ req.body.url, req.params.url, req.query.url, req.headers
109
+ ```
110
+
111
+ ## Step 4 — Secret detection (--secrets or always as part of default scan)
112
+
113
+ Pattern-based scan across all files in scope:
114
+
115
+ ```bash
116
+ # High confidence patterns (always flag as CRITICAL)
117
+ grep -rn -E "(sk-[a-zA-Z0-9]{20,}|AKIA[A-Z0-9]{16}|ghp_[a-zA-Z0-9]{36})" .
118
+
119
+ # Credential assignment patterns (flag as HIGH)
120
+ grep -rn -E "(password|passwd|secret|api_key|apikey|access_token)\s*=\s*['\"][^'\"]{8,}" .
121
+
122
+ # Azure connection strings
123
+ grep -rn -E "DefaultEndpointsProtocol=https;AccountName=" .
124
+
125
+ # GCP service account keys
126
+ grep -rn -E "\"type\"\\s*:\\s*\"service_account\"" .
127
+
128
+ # PEM/Certificate content
129
+ grep -rn "-----BEGIN (RSA |EC |OPENSSH )?PRIVATE KEY-----" .
130
+
131
+ # Database URLs with credentials
132
+ grep -rn -E "postgres://[^:]+:[^@]+@|mysql://[^:]+:[^@]+@" .
133
+ ```
134
+
135
+ Report each finding with:
136
+ - File and line number
137
+ - The matched pattern (redact the actual secret value: show first 4 chars + ***)
138
+ - Severity: CRITICAL if a real credential pattern, HIGH if credential-shaped pattern
139
+ Redaction applies to both console output and the report file.
140
+
141
+ ## Step 5 — Dependency audit (--deps flag)
142
+
143
+ ```bash
144
+ # Node.js projects
145
+ npm audit --json 2>/dev/null | node -e "
146
+ const data = JSON.parse(require('fs').readFileSync('/dev/stdin', 'utf8'));
147
+ const vulns = data.vulnerabilities || {};
148
+ Object.entries(vulns).forEach(([name, v]) => {
149
+ if (['high','critical'].includes(v.severity)) {
150
+ console.log(v.severity.toUpperCase() + ': ' + name + ' — ' + v.via[0]?.title);
151
+ }
152
+ });
153
+ "
154
+
155
+ # Python projects
156
+ pip-audit --format json 2>/dev/null
157
+ ```
158
+
159
+ ## Step 6 — Write security scan report
160
+
161
+ `.planning/SECURITY-SCAN-[timestamp].md`:
162
+
163
+ ```markdown
164
+ # Security Scan Report
165
+ **Date:** [ISO-8601]
166
+ **Scope:** [what was scanned]
167
+ **Scanner:** MindForge Security Reviewer
168
+
169
+ ## Executive Summary
170
+ [1-2 sentences: overall security posture, number of findings by severity]
171
+
172
+ ## Critical Findings (fix immediately — block all merges)
173
+ [OWASP category] | [File:Line] | [Description] | [Remediation]
174
+
175
+ ## High Findings (fix before next release)
176
+ ...
177
+
178
+ ## Medium Findings (fix in next sprint)
179
+ ...
180
+
181
+ ## Low Findings (backlog)
182
+ ...
183
+
184
+ ## Dependency Audit
185
+ | Package | Version | Severity | CVE | Fixed in |
186
+ |---|---|---|---|---|
187
+
188
+ ## Secret Detection
189
+ | File | Pattern | Severity | Action |
190
+ |---|---|---|---|
191
+
192
+ ## Verdict
193
+ ✅ CLEAN — No critical or high findings
194
+ ⚠️ ISSUES — [N] critical, [N] high findings require attention
195
+ ```
196
+
197
+ ## Important: scan report visibility
198
+
199
+ Security scan reports are written to `.planning/SECURITY-SCAN-[timestamp].md`.
200
+
201
+ **Private repository:** Keep reports committed — they are valuable for audit
202
+ history and team security review.
203
+
204
+ **Public repository:** Add `.planning/SECURITY-SCAN-*.md` to `.gitignore`
205
+ to avoid exposing vulnerability information to potential attackers.
206
+
207
+ MindForge does not make this decision for you — configure `.gitignore`
208
+ based on your repository's visibility.
209
+
210
+ ## Step 7 — Write AUDIT entry
211
+
212
+ ```json
213
+ {
214
+ "event": "security_scan_completed",
215
+ "scope": "[path or 'staged changes']",
216
+ "flags": ["--deps", "--secrets"],
217
+ "critical_findings": [N],
218
+ "high_findings": [N],
219
+ "secrets_detected": [N],
220
+ "vulnerable_deps": [N],
221
+ "report_path": ".planning/SECURITY-SCAN-[timestamp].md"
222
+ }
223
+ ```
224
+
225
+ ## Automatic blocking behaviour
226
+ If CRITICAL findings are detected: print a prominent warning:
227
+ ```
228
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
229
+ 🔴 CRITICAL SECURITY FINDINGS DETECTED
230
+
231
+ [N] critical issues must be fixed before any code is merged.
232
+ See: .planning/SECURITY-SCAN-[timestamp].md
233
+
234
+ Do NOT commit or deploy until these are resolved.
235
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
236
+ ```
@@ -0,0 +1,31 @@
1
+ ---
2
+ description: Generate a post-session summary document capturing work performed and resource usage
3
+ ---
4
+ <objective>
5
+ Generate a comprehensive summary of an active coding session, providing a clear trail of work for stakeholders and a diagnostic record of resource usage (tokens, time, etc.).
6
+ </objective>
7
+
8
+ <execution_context>
9
+ .claude/commands/mindforge/session-report.md
10
+ </execution_context>
11
+
12
+ <context>
13
+ Storage: .planning/reports/
14
+ Data sources: Git logs, terminal history, `STATE.md`, and session memory.
15
+ </context>
16
+
17
+ <process>
18
+ 1. **Gather Data**:
19
+ - Get recent git commits and diff summaries.
20
+ - Read the current `STATE.md` for phase/plan status updates.
21
+ - Extract key decisions or findings from the session.
22
+ 2. **Profile Resources**:
23
+ - Estimate token usage if possible.
24
+ - Calculate session duration.
25
+ 3. **Draft Report**: Create `SESSION_REPORT_[timestamp].md` containing:
26
+ - Summary of Work Performed
27
+ - Outcomes achieved (Plans "completed")
28
+ - Key Decisions
29
+ - Resource Usage Profile
30
+ 4. **Confirm**: Notify the user and provide a link to the report.
31
+ </process>
@@ -0,0 +1,103 @@
1
+ ---
2
+ description: Create a release PR for a verified phase. Usage: /mindforge:ship [N]
3
+ ---
4
+ Create a release PR for a verified phase. Usage: /mindforge:ship [N]
5
+
6
+ ## Pre-check
7
+ Read UAT.md for phase N. If status is not "All passed ✅": stop.
8
+ Tell the user: "Phase [N] has not been fully verified. Run /mindforge:verify-phase [N] first."
9
+
10
+ ## Step 1 — Generate changelog entry
11
+ Read all SUMMARY files for phase N.
12
+ Read REQUIREMENTS.md for phase N items.
13
+ Generate a CHANGELOG.md entry following Keep a Changelog format:
14
+
15
+ ```markdown
16
+ ## [Unreleased] — Phase [N]: [Phase description]
17
+
18
+ ### Added
19
+ - [New feature from this phase]
20
+
21
+ ### Changed
22
+ - [Changed behaviour]
23
+
24
+ ### Fixed
25
+ - [Bug fixes]
26
+
27
+ ### Security
28
+ - [Security improvements]
29
+ ```
30
+
31
+ Prepend this to CHANGELOG.md.
32
+
33
+ ## Step 2 — Run final quality gates
34
+ Run all of the following and report results:
35
+ ```bash
36
+ # Type checking
37
+ npx tsc --noEmit
38
+
39
+ # Linting
40
+ npx eslint . --ext .ts,.tsx --max-warnings 0
41
+
42
+ # Tests
43
+ npm test
44
+
45
+ # Security scan (if npm project)
46
+ npm audit --audit-level=high
47
+ ```
48
+
49
+ If any gate fails: stop. Report the failures. Do not proceed to PR creation.
50
+
51
+ ## Step 3 — Create PR description
52
+ Generate a complete PR description:
53
+
54
+ ```markdown
55
+ ## MindForge Phase [N] — [Phase description]
56
+
57
+ ### Summary
58
+ [2-3 sentences describing what this phase delivered]
59
+
60
+ ### Changes
61
+ [Bullet list of major changes from SUMMARY files]
62
+
63
+ ### Requirements delivered
64
+ | FR ID | Description | Verified |
65
+ |-------|------------------------------|----------|
66
+ | FR-01 | ... | ✅ |
67
+
68
+ ### Testing
69
+ - Unit tests: [pass/fail + coverage %]
70
+ - Integration tests: [pass/fail]
71
+ - UAT: Completed and signed off (see UAT.md)
72
+
73
+ ### Security
74
+ - [ ] Security review completed (see SECURITY-REVIEW-N.md)
75
+ - [ ] No hardcoded secrets in diff
76
+ - [ ] All dependencies scanned for CVEs
77
+
78
+ ### Checklist
79
+ - [x] CHANGELOG.md updated
80
+ - [x] All tests pass
81
+ - [x] No linter errors
82
+ - [x] UAT signed off
83
+ - [ ] Reviewed by: [assign]
84
+ ```
85
+
86
+ ## Step 4 — Commit and tag
87
+ ```bash
88
+ git add CHANGELOG.md
89
+ git commit -m "docs(changelog): add Phase [N] release notes"
90
+ git push origin feat/mindforge-core-scaffold
91
+ ```
92
+
93
+ Tell the user the PR description and instruct them to open the PR manually
94
+ (or provide the `gh pr create` command if GitHub CLI is available).
95
+
96
+ Tell the user:
97
+ "✅ Phase [N] ready to ship.
98
+ PR description generated above.
99
+ Open your PR, assign reviewers, and merge when approved."
100
+
101
+ ## Step 5 — Update state
102
+ Update STATE.md to mark Phase [N] as shipped.
103
+ Update HANDOFF.json with next phase number.
@@ -0,0 +1,144 @@
1
+ ---
2
+ description: /mindforge:skills list
3
+ ---
4
+ # MindForge — Skills Command
5
+ # Usage: /mindforge:skills [subcommand] [args]
6
+ # Subcommands: list | add | update | validate | info | search
7
+
8
+ ## Subcommand: list
9
+ `/mindforge:skills list`
10
+
11
+ Read MANIFEST.md. Display all registered skills in a formatted table
12
+ (include path for each skill):
13
+
14
+ ```
15
+ MindForge Skills Registry
16
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
17
+
18
+ Tier 1 — Core Skills (10 installed)
19
+ ────────────────────────────────────────────────────────────
20
+ ✅ security-review v1.0.0 stable .mindforge/skills/security-review/SKILL.md
21
+ ✅ code-quality v1.0.0 stable .mindforge/skills/code-quality/SKILL.md
22
+ ✅ api-design v1.0.0 stable .mindforge/skills/api-design/SKILL.md
23
+ ✅ testing-standards v1.0.0 stable .mindforge/skills/testing-standards/SKILL.md
24
+ ✅ documentation v1.0.0 stable .mindforge/skills/documentation/SKILL.md
25
+ ✅ performance v1.0.0 stable .mindforge/skills/performance/SKILL.md
26
+ ✅ accessibility v1.0.0 stable .mindforge/skills/accessibility/SKILL.md
27
+ ✅ data-privacy v1.0.0 stable .mindforge/skills/data-privacy/SKILL.md
28
+ ✅ incident-response v1.0.0 stable .mindforge/skills/incident-response/SKILL.md
29
+ ✅ database-patterns v1.0.0 stable .mindforge/skills/database-patterns/SKILL.md
30
+
31
+ Tier 2 — Org Skills (0 installed)
32
+ ────────────────────────────────────────────────────────────
33
+ (none — run /mindforge:skills add to add org skills)
34
+
35
+ Tier 3 — Project Skills (0 installed)
36
+ ────────────────────────────────────────────────────────────
37
+ (none)
38
+
39
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
40
+ Total: 10 skills | Run /mindforge:skills validate to check health
41
+ ```
42
+
43
+ ## Subcommand: info
44
+ `/mindforge:skills info [skill-name]`
45
+
46
+ Display detailed information about a specific skill:
47
+
48
+ ```
49
+ Skill: security-review
50
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
51
+ Version : 1.0.0
52
+ Status : stable
53
+ Tier : 1 (Core)
54
+ Min MindForge: 0.1.0
55
+ Path : .mindforge/skills/security-review/SKILL.md
56
+
57
+ Triggers (25):
58
+ auth, authentication, authorisation, authorization, login,
59
+ logout, password, token, JWT, session, cookie, OAuth,
60
+ payment, billing, stripe, PII, GDPR, personal data,
61
+ upload, file upload, credentials, API key, secret, env,
62
+ environment variable, encryption, hashing, bcrypt, argon2
63
+
64
+ Changelog:
65
+ 1.0.0 — Initial stable release
66
+ ```
67
+
68
+ ## Subcommand: search
69
+ `/mindforge:skills search [keyword]`
70
+
71
+ Find which skills would activate for a given keyword:
72
+
73
+ ```
74
+ /mindforge:skills search "database query"
75
+
76
+ Matching skills for "database query":
77
+ ────────────────────────────────────────────────────────────
78
+ database-patterns v1.0.0 [tier 1] trigger: "database", "query"
79
+ performance v1.0.0 [tier 1] trigger: "query time"
80
+
81
+ These 2 skills would be automatically loaded for a task
82
+ containing "database query" in its description.
83
+ ```
84
+
85
+ ## Subcommand: validate
86
+ `/mindforge:skills validate`
87
+
88
+ Run a health check on all installed skills:
89
+
90
+ ```
91
+ Validating skills...
92
+
93
+ ✅ security-review — frontmatter valid, file readable, triggers: 29
94
+ ✅ code-quality — frontmatter valid, file readable, triggers: 14
95
+ ✅ performance — frontmatter valid, file readable, triggers: 31
96
+ ⚠️ [org-skill-name] — frontmatter valid but missing 'version' field
97
+ ❌ [missing-skill] — listed in MANIFEST.md but file not found
98
+
99
+ Issues found: 2
100
+ Run /mindforge:skills add to fix missing skills.
101
+ Fix frontmatter issues manually in the SKILL.md file.
102
+ ```
103
+
104
+ Validation checks:
105
+ 1. Every manifest entry has a corresponding SKILL.md file
106
+ 2. Every SKILL.md has: `name`, `version`, `status`, `triggers` in frontmatter
107
+ 3. Every SKILL.md has a self-check or checklist section
108
+ 4. All versions are valid semver strings
109
+ 5. No two skills at the same tier share the same trigger keyword (flag as ⚠️)
110
+ 6. Every skill file is readable (not empty, not corrupted)
111
+
112
+ ## Subcommand: add
113
+ `/mindforge:skills add [path-to-skill-dir]`
114
+
115
+ Register a new skill in the manifest:
116
+
117
+ 1. Read the SKILL.md in the provided path
118
+ 2. Validate the frontmatter (all required fields present)
119
+ 3. Check for trigger keyword conflicts with existing skills
120
+ 4. Ask the user: "Which tier should this skill be registered as? (2=Org / 3=Project)"
121
+ 5. Show the exact MANIFEST.md entry that will be written and ask for confirmation
122
+ 6. Add the entry to MANIFEST.md in the correct section
123
+ 7. Run `/mindforge:skills validate` to confirm registration is clean
124
+ 8. Commit: `feat(skills): register [skill-name] v[version] as tier [N] skill`
125
+
126
+ ## Subcommand: update
127
+ `/mindforge:skills update [skill-name]`
128
+
129
+ Update a skill to a newer version:
130
+
131
+ 1. Read current version from MANIFEST.md
132
+ 2. Check the skill's changelog in SKILL.md for available updates
133
+ 3. If MAJOR version change: show breaking changes, require confirmation
134
+ 4. If MINOR or PATCH: update automatically
135
+ 5. Update MANIFEST.md version entry
136
+ 6. Run `/mindforge:skills validate` after update
137
+ 7. Run `node tests/skills-platform.test.js` after update
138
+ 8. Commit: `chore(skills): update [name] v[old] → v[new]`
139
+
140
+ ## Error handling
141
+ - If MANIFEST.md does not exist: offer to create it with current skills
142
+ - If a skill name is not found: suggest similar names (fuzzy match)
143
+ - If validation finds critical errors: block any phase execution until fixed
144
+ (A skills validation failure is a BLOCKING issue)