mindforge-cc 1.0.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.
- package/.agent/CLAUDE.md +462 -0
- package/.agent/forge/help.md +7 -0
- package/.agent/forge/init-project.md +32 -0
- package/.agent/forge/plan-phase.md +30 -0
- package/.agent/mindforge/approve.md +18 -0
- package/.agent/mindforge/audit.md +30 -0
- package/.agent/mindforge/benchmark.md +33 -0
- package/.agent/mindforge/complete-milestone.md +18 -0
- package/.agent/mindforge/debug.md +126 -0
- package/.agent/mindforge/discuss-phase.md +138 -0
- package/.agent/mindforge/execute-phase.md +165 -0
- package/.agent/mindforge/health.md +21 -0
- package/.agent/mindforge/help.md +23 -0
- package/.agent/mindforge/init-org.md +131 -0
- package/.agent/mindforge/init-project.md +155 -0
- package/.agent/mindforge/install-skill.md +15 -0
- package/.agent/mindforge/map-codebase.md +298 -0
- package/.agent/mindforge/metrics.md +22 -0
- package/.agent/mindforge/migrate.md +40 -0
- package/.agent/mindforge/milestone.md +12 -0
- package/.agent/mindforge/next.md +105 -0
- package/.agent/mindforge/plan-phase.md +125 -0
- package/.agent/mindforge/plugins.md +40 -0
- package/.agent/mindforge/pr-review.md +41 -0
- package/.agent/mindforge/profile-team.md +23 -0
- package/.agent/mindforge/publish-skill.md +19 -0
- package/.agent/mindforge/quick.md +135 -0
- package/.agent/mindforge/release.md +10 -0
- package/.agent/mindforge/retrospective.md +26 -0
- package/.agent/mindforge/review.md +157 -0
- package/.agent/mindforge/security-scan.md +233 -0
- package/.agent/mindforge/ship.md +100 -0
- package/.agent/mindforge/skills.md +141 -0
- package/.agent/mindforge/status.md +104 -0
- package/.agent/mindforge/sync-confluence.md +11 -0
- package/.agent/mindforge/sync-jira.md +12 -0
- package/.agent/mindforge/tokens.md +8 -0
- package/.agent/mindforge/update.md +42 -0
- package/.agent/mindforge/verify-phase.md +62 -0
- package/.agent/mindforge/workspace.md +29 -0
- package/.claude/CLAUDE.md +462 -0
- package/.claude/commands/forge/help.md +7 -0
- package/.claude/commands/forge/init-project.md +32 -0
- package/.claude/commands/forge/plan-phase.md +30 -0
- package/.claude/commands/mindforge/approve.md +18 -0
- package/.claude/commands/mindforge/audit.md +30 -0
- package/.claude/commands/mindforge/benchmark.md +33 -0
- package/.claude/commands/mindforge/complete-milestone.md +18 -0
- package/.claude/commands/mindforge/debug.md +126 -0
- package/.claude/commands/mindforge/discuss-phase.md +138 -0
- package/.claude/commands/mindforge/execute-phase.md +165 -0
- package/.claude/commands/mindforge/health.md +21 -0
- package/.claude/commands/mindforge/help.md +23 -0
- package/.claude/commands/mindforge/init-org.md +131 -0
- package/.claude/commands/mindforge/init-project.md +155 -0
- package/.claude/commands/mindforge/install-skill.md +15 -0
- package/.claude/commands/mindforge/map-codebase.md +298 -0
- package/.claude/commands/mindforge/metrics.md +22 -0
- package/.claude/commands/mindforge/migrate.md +40 -0
- package/.claude/commands/mindforge/milestone.md +12 -0
- package/.claude/commands/mindforge/next.md +105 -0
- package/.claude/commands/mindforge/plan-phase.md +125 -0
- package/.claude/commands/mindforge/plugins.md +40 -0
- package/.claude/commands/mindforge/pr-review.md +41 -0
- package/.claude/commands/mindforge/profile-team.md +23 -0
- package/.claude/commands/mindforge/publish-skill.md +19 -0
- package/.claude/commands/mindforge/quick.md +135 -0
- package/.claude/commands/mindforge/release.md +10 -0
- package/.claude/commands/mindforge/retrospective.md +26 -0
- package/.claude/commands/mindforge/review.md +157 -0
- package/.claude/commands/mindforge/security-scan.md +233 -0
- package/.claude/commands/mindforge/ship.md +100 -0
- package/.claude/commands/mindforge/skills.md +141 -0
- package/.claude/commands/mindforge/status.md +104 -0
- package/.claude/commands/mindforge/sync-confluence.md +11 -0
- package/.claude/commands/mindforge/sync-jira.md +12 -0
- package/.claude/commands/mindforge/tokens.md +8 -0
- package/.claude/commands/mindforge/update.md +42 -0
- package/.claude/commands/mindforge/verify-phase.md +62 -0
- package/.claude/commands/mindforge/workspace.md +29 -0
- package/.forge/org/CONVENTIONS.md +0 -0
- package/.forge/org/ORG.md +0 -0
- package/.forge/org/SECURITY.md +0 -0
- package/.forge/org/TOOLS.md +0 -0
- package/.forge/personas/analyst.md +0 -0
- package/.forge/personas/architect.md +0 -0
- package/.forge/personas/debug-specialist.md +0 -0
- package/.forge/personas/developer.md +26 -0
- package/.forge/personas/qa-engineer.md +0 -0
- package/.forge/personas/release-manager.md +0 -0
- package/.forge/personas/security-reviewer.md +33 -0
- package/.forge/personas/tech-writer.md +0 -0
- package/.forge/skills/api-design/SKILL.md +0 -0
- package/.forge/skills/code-quality/SKILL.md +0 -0
- package/.forge/skills/documentation/SKILL.md +0 -0
- package/.forge/skills/security-review/SKILL.md +23 -0
- package/.forge/skills/testing-standards/SKILL.md +27 -0
- package/.github/workflows/mindforge-ci.yml +224 -0
- package/.gitlab-ci-mindforge.yml +18 -0
- package/.mindforge/MINDFORGE-SCHEMA.json +165 -0
- package/.mindforge/audit/AUDIT-SCHEMA.md +451 -0
- package/.mindforge/ci/ci-config-schema.md +21 -0
- package/.mindforge/ci/ci-mode.md +179 -0
- package/.mindforge/ci/github-actions-adapter.md +224 -0
- package/.mindforge/ci/gitlab-ci-adapter.md +31 -0
- package/.mindforge/ci/jenkins-adapter.md +44 -0
- package/.mindforge/distribution/registry-client.md +166 -0
- package/.mindforge/distribution/registry-schema.md +96 -0
- package/.mindforge/distribution/skill-publisher.md +44 -0
- package/.mindforge/distribution/skill-validator.md +74 -0
- package/.mindforge/engine/compaction-protocol.md +182 -0
- package/.mindforge/engine/context-injector.md +128 -0
- package/.mindforge/engine/dependency-parser.md +113 -0
- package/.mindforge/engine/skills/conflict-resolver.md +69 -0
- package/.mindforge/engine/skills/loader.md +184 -0
- package/.mindforge/engine/skills/registry.md +98 -0
- package/.mindforge/engine/skills/versioning.md +75 -0
- package/.mindforge/engine/verification-pipeline.md +111 -0
- package/.mindforge/engine/wave-executor.md +235 -0
- package/.mindforge/governance/GOVERNANCE-CONFIG.md +17 -0
- package/.mindforge/governance/approval-workflow.md +37 -0
- package/.mindforge/governance/change-classifier.md +63 -0
- package/.mindforge/governance/compliance-gates.md +31 -0
- package/.mindforge/integrations/confluence.md +27 -0
- package/.mindforge/integrations/connection-manager.md +163 -0
- package/.mindforge/integrations/github.md +25 -0
- package/.mindforge/integrations/gitlab.md +13 -0
- package/.mindforge/integrations/jira.md +102 -0
- package/.mindforge/integrations/slack.md +41 -0
- package/.mindforge/intelligence/antipattern-detector.md +75 -0
- package/.mindforge/intelligence/difficulty-scorer.md +55 -0
- package/.mindforge/intelligence/health-engine.md +208 -0
- package/.mindforge/intelligence/skill-gap-analyser.md +40 -0
- package/.mindforge/intelligence/smart-compaction.md +71 -0
- package/.mindforge/metrics/METRICS-SCHEMA.md +42 -0
- package/.mindforge/metrics/quality-tracker.md +32 -0
- package/.mindforge/monorepo/cross-package-planner.md +114 -0
- package/.mindforge/monorepo/dependency-graph-builder.md +32 -0
- package/.mindforge/monorepo/workspace-detector.md +129 -0
- package/.mindforge/org/CONVENTIONS.md +62 -0
- package/.mindforge/org/ORG.md +51 -0
- package/.mindforge/org/SECURITY.md +50 -0
- package/.mindforge/org/TOOLS.md +53 -0
- package/.mindforge/org/integrations/INTEGRATIONS-CONFIG.md +58 -0
- package/.mindforge/org/skills/MANIFEST.md +38 -0
- package/.mindforge/personas/analyst.md +52 -0
- package/.mindforge/personas/architect.md +75 -0
- package/.mindforge/personas/debug-specialist.md +52 -0
- package/.mindforge/personas/developer.md +85 -0
- package/.mindforge/personas/overrides/README.md +85 -0
- package/.mindforge/personas/qa-engineer.md +61 -0
- package/.mindforge/personas/release-manager.md +76 -0
- package/.mindforge/personas/security-reviewer.md +91 -0
- package/.mindforge/personas/tech-writer.md +51 -0
- package/.mindforge/plugins/PLUGINS-MANIFEST.md +23 -0
- package/.mindforge/plugins/plugin-loader.md +93 -0
- package/.mindforge/plugins/plugin-registry.md +44 -0
- package/.mindforge/plugins/plugin-schema.md +68 -0
- package/.mindforge/pr-review/ai-reviewer.md +266 -0
- package/.mindforge/pr-review/finding-formatter.md +46 -0
- package/.mindforge/pr-review/review-prompt-templates.md +44 -0
- package/.mindforge/production/compatibility-layer.md +39 -0
- package/.mindforge/production/migration-engine.md +52 -0
- package/.mindforge/production/production-checklist.md +165 -0
- package/.mindforge/production/token-optimiser.md +68 -0
- package/.mindforge/skills/accessibility/SKILL.md +106 -0
- package/.mindforge/skills/api-design/SKILL.md +98 -0
- package/.mindforge/skills/code-quality/SKILL.md +88 -0
- package/.mindforge/skills/data-privacy/SKILL.md +126 -0
- package/.mindforge/skills/database-patterns/SKILL.md +192 -0
- package/.mindforge/skills/documentation/SKILL.md +91 -0
- package/.mindforge/skills/incident-response/SKILL.md +180 -0
- package/.mindforge/skills/performance/SKILL.md +120 -0
- package/.mindforge/skills/security-review/SKILL.md +83 -0
- package/.mindforge/skills/testing-standards/SKILL.md +97 -0
- package/.mindforge/team/TEAM-PROFILE.md +42 -0
- package/.mindforge/team/multi-handoff.md +23 -0
- package/.mindforge/team/profiles/README.md +13 -0
- package/.mindforge/team/session-merger.md +18 -0
- package/.planning/ARCHITECTURE.md +0 -0
- package/.planning/AUDIT.jsonl +0 -0
- package/.planning/HANDOFF.json +28 -0
- package/.planning/PROJECT.md +33 -0
- package/.planning/RELEASE-CHECKLIST.md +68 -0
- package/.planning/REQUIREMENTS.md +0 -0
- package/.planning/ROADMAP.md +0 -0
- package/.planning/STATE.md +31 -0
- package/.planning/approvals/.gitkeep +1 -0
- package/.planning/archive/.gitkeep +1 -0
- package/.planning/audit-archive/.gitkeep +1 -0
- package/.planning/decisions/.gitkeep +0 -0
- package/.planning/decisions/ADR-001-handoff-tracking.md +41 -0
- package/.planning/decisions/ADR-002-markdown-commands.md +46 -0
- package/.planning/decisions/ADR-003-skills-trigger-model.md +37 -0
- package/.planning/decisions/ADR-004-wave-parallelism-model.md +45 -0
- package/.planning/decisions/ADR-005-append-only-audit-log.md +51 -0
- package/.planning/decisions/ADR-006-tiered-skills-system.md +22 -0
- package/.planning/decisions/ADR-007-trigger-keyword-model.md +22 -0
- package/.planning/decisions/ADR-008-just-in-time-skill-loading.md +29 -0
- package/.planning/decisions/ADR-009-enterprise-integration-retry-policy.md +8 -0
- package/.planning/decisions/ADR-010-governance-tier-escalation.md +8 -0
- package/.planning/decisions/ADR-011-multi-developer-handoff-contract.md +8 -0
- package/.planning/decisions/ADR-012-intelligence-feedback-loops.md +19 -0
- package/.planning/decisions/ADR-013-mindforge-md-constitution.md +16 -0
- package/.planning/decisions/ADR-014-metrics-as-signals-not-evaluation.md +15 -0
- package/.planning/decisions/ADR-015-npm-based-skill-registry.md +26 -0
- package/.planning/decisions/ADR-016-ci-exit-code-0-on-timeout.md +27 -0
- package/.planning/decisions/ADR-017-sdk-localhost-only.md +28 -0
- package/.planning/decisions/ADR-018-installer-self-install-detection.md +15 -0
- package/.planning/decisions/ADR-019-self-update-scope-preservation.md +14 -0
- package/.planning/decisions/ADR-020-v1.0.0-stable-interface-contract.md +23 -0
- package/.planning/jira-sync.json +9 -0
- package/.planning/milestones/.gitkeep +1 -0
- package/.planning/phases/day1/REVIEW-DAY1.md +50 -0
- package/.planning/phases/day1/SECURITY-REVIEW-DAY1.md +15 -0
- package/.planning/phases/day2/REVIEW-DAY2.md +521 -0
- package/.planning/phases/day3/REVIEW-DAY3.md +234 -0
- package/.planning/slack-threads.json +6 -0
- package/CHANGELOG.md +175 -0
- package/LICENSE +21 -0
- package/MINDFORGE.md +76 -0
- package/README.md +182 -0
- package/RELEASENOTES.md +41 -0
- package/SECURITY.md +4 -0
- package/bin/install.js +120 -0
- package/bin/installer-core.js +292 -0
- package/bin/migrations/0.1.0-to-0.5.0.js +37 -0
- package/bin/migrations/0.5.0-to-0.6.0.js +17 -0
- package/bin/migrations/0.6.0-to-1.0.0.js +100 -0
- package/bin/migrations/migrate.js +151 -0
- package/bin/migrations/schema-versions.js +64 -0
- package/bin/updater/changelog-fetcher.js +62 -0
- package/bin/updater/self-update.js +169 -0
- package/bin/updater/version-comparator.js +68 -0
- package/bin/validate-config.js +92 -0
- package/bin/wizard/config-generator.js +112 -0
- package/bin/wizard/environment-detector.js +76 -0
- package/bin/wizard/setup-wizard.js +237 -0
- package/docs/Context/Master-Context.md +701 -0
- package/docs/architecture/README.md +35 -0
- package/docs/architecture/decision-records-index.md +26 -0
- package/docs/ci-cd-integration.md +30 -0
- package/docs/ci-quickstart.md +78 -0
- package/docs/commands-reference.md +11 -0
- package/docs/contributing/CONTRIBUTING.md +38 -0
- package/docs/contributing/plugin-authoring.md +50 -0
- package/docs/contributing/skill-authoring.md +41 -0
- package/docs/enterprise-setup.md +25 -0
- package/docs/faq.md +38 -0
- package/docs/getting-started.md +36 -0
- package/docs/governance-guide.md +23 -0
- package/docs/mindforge-md-reference.md +53 -0
- package/docs/monorepo-guide.md +26 -0
- package/docs/persona-customisation.md +56 -0
- package/docs/quick-verify.md +33 -0
- package/docs/reference/audit-events.md +53 -0
- package/docs/reference/commands.md +82 -0
- package/docs/reference/config-reference.md +64 -0
- package/docs/reference/sdk-api.md +48 -0
- package/docs/reference/skills-api.md +57 -0
- package/docs/release-checklist-guide.md +37 -0
- package/docs/requirements.md +29 -0
- package/docs/sdk-reference.md +27 -0
- package/docs/security/SECURITY.md +42 -0
- package/docs/security/penetration-test-results.md +31 -0
- package/docs/security/threat-model.md +142 -0
- package/docs/skills-authoring-guide.md +119 -0
- package/docs/skills-publishing-guide.md +21 -0
- package/docs/team-setup-guide.md +21 -0
- package/docs/troubleshooting.md +119 -0
- package/docs/tutorial.md +195 -0
- package/docs/upgrade.md +44 -0
- package/docs/user-guide.md +131 -0
- package/docs/usp-features.md +214 -0
- package/eslint.config.mjs +31 -0
- package/examples/starter-project/.planning/AUDIT.jsonl +1 -0
- package/examples/starter-project/.planning/HANDOFF.json +23 -0
- package/examples/starter-project/.planning/PROJECT.md +27 -0
- package/examples/starter-project/.planning/STATE.md +10 -0
- package/examples/starter-project/MINDFORGE.md +40 -0
- package/examples/starter-project/README.md +14 -0
- package/implementation-roadmap/day-1-imp/DAY1-HARDEN.md +823 -0
- package/implementation-roadmap/day-1-imp/DAY1-IMPLEMENT.md +2459 -0
- package/implementation-roadmap/day-1-imp/DAY1-REVIEW.md +288 -0
- package/implementation-roadmap/day-2-imp/DAY2-HARDEN.md +954 -0
- package/implementation-roadmap/day-2-imp/DAY2-IMPLEMENT.md +2347 -0
- package/implementation-roadmap/day-2-imp/DAY2-REVIEW.md +422 -0
- package/implementation-roadmap/day-3-imp/DAY3-HARDEN.md +870 -0
- package/implementation-roadmap/day-3-imp/DAY3-IMPLEMENT.md +2798 -0
- package/implementation-roadmap/day-3-imp/DAY3-REVIEW.md +484 -0
- package/implementation-roadmap/day-4-imp/DAY4-HARDEN.md +1087 -0
- package/implementation-roadmap/day-4-imp/DAY4-IMPLEMENT.md +2874 -0
- package/implementation-roadmap/day-4-imp/DAY4-REVIEW.md +386 -0
- package/implementation-roadmap/day-5-imp/DAY5-HARDEN.md +1078 -0
- package/implementation-roadmap/day-5-imp/DAY5-IMPLEMENT.md +3151 -0
- package/implementation-roadmap/day-5-imp/DAY5-REVIEW.md +345 -0
- package/implementation-roadmap/day-6-imp/DAY6-COMPLETE.md +3919 -0
- package/implementation-roadmap/day-7-imp-prod/DAY7-PRODUCTION-FINAL.md +4513 -0
- package/package.json +31 -0
- package/sdk/README.md +69 -0
- package/sdk/eslint.config.mjs +34 -0
- package/sdk/package-lock.json +1507 -0
- package/sdk/package.json +30 -0
- package/sdk/src/client.ts +133 -0
- package/sdk/src/commands.ts +63 -0
- package/sdk/src/events.ts +166 -0
- package/sdk/src/index.ts +22 -0
- package/sdk/src/types.ts +87 -0
- package/sdk/tsconfig.json +13 -0
- package/tests/audit.test.js +206 -0
- package/tests/ci-mode.test.js +162 -0
- package/tests/compaction.test.js +161 -0
- package/tests/distribution.test.js +205 -0
- package/tests/e2e.test.js +618 -0
- package/tests/governance.test.js +130 -0
- package/tests/install.test.js +209 -0
- package/tests/integrations.test.js +128 -0
- package/tests/intelligence.test.js +117 -0
- package/tests/metrics.test.js +96 -0
- package/tests/migration.test.js +309 -0
- package/tests/production.test.js +416 -0
- package/tests/sdk.test.js +200 -0
- package/tests/skills-platform.test.js +403 -0
- package/tests/wave-engine.test.js +338 -0
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
Human acceptance testing for a completed phase. Usage: /mindforge:verify-phase [N]
|
|
2
|
+
|
|
3
|
+
## Pre-check
|
|
4
|
+
`.planning/phases/[N]/VERIFICATION.md` must exist.
|
|
5
|
+
If it does not: instruct the user to run /mindforge:execute-phase [N] first.
|
|
6
|
+
|
|
7
|
+
## Step 1 — Extract testable deliverables
|
|
8
|
+
Read REQUIREMENTS.md and the phase PLAN files.
|
|
9
|
+
Generate a list of testable deliverables — things the user can actually check.
|
|
10
|
+
|
|
11
|
+
Format each as a clear, actionable test instruction:
|
|
12
|
+
"Navigate to /login and submit a form with a valid email and password.
|
|
13
|
+
You should be redirected to /dashboard within 2 seconds."
|
|
14
|
+
|
|
15
|
+
## Step 2 — Walk through each deliverable
|
|
16
|
+
Present one at a time. After each:
|
|
17
|
+
"Please test this now and tell me: pass ✅ or fail ❌ — and describe what you saw."
|
|
18
|
+
|
|
19
|
+
Wait for the user's response before proceeding to the next.
|
|
20
|
+
|
|
21
|
+
## Step 3 — Handle failures
|
|
22
|
+
If the user reports a failure:
|
|
23
|
+
1. Ask: "What exactly happened? (error message, wrong behaviour, nothing happened)"
|
|
24
|
+
2. Spawn a debug subagent with: the failure description, the relevant PLAN file,
|
|
25
|
+
and the relevant source files. Instruct it to find the root cause.
|
|
26
|
+
3. Create a fix plan: `.planning/phases/[N]/FIX-PLAN-[N]-[NN].md`
|
|
27
|
+
using the same XML format as regular plans.
|
|
28
|
+
4. Ask the user: "Fix plan created. Run /mindforge:execute-phase [N] again
|
|
29
|
+
to apply the fixes?"
|
|
30
|
+
|
|
31
|
+
## Step 4 — Write UAT record
|
|
32
|
+
Write `.planning/phases/[N]/UAT.md`:
|
|
33
|
+
|
|
34
|
+
```markdown
|
|
35
|
+
# UAT — Phase [N]
|
|
36
|
+
|
|
37
|
+
## Tester
|
|
38
|
+
[User name or "developer"]
|
|
39
|
+
|
|
40
|
+
## Date
|
|
41
|
+
[ISO 8601 date]
|
|
42
|
+
|
|
43
|
+
## Results
|
|
44
|
+
|
|
45
|
+
| # | Deliverable | Result | Notes |
|
|
46
|
+
|---|------------------------------------|--------|------------------------|
|
|
47
|
+
| 1 | [description] | ✅ | [what was observed] |
|
|
48
|
+
| 2 | [description] | ❌ | [what went wrong] |
|
|
49
|
+
|
|
50
|
+
## Overall status
|
|
51
|
+
All passed ✅ / Issues found — fix plans created ❌
|
|
52
|
+
|
|
53
|
+
## Sign-off
|
|
54
|
+
[Passed / Pending fixes]
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
## Step 5 — Update state if all pass
|
|
58
|
+
If all deliverables pass:
|
|
59
|
+
Update STATE.md: phase N = verified and signed off.
|
|
60
|
+
Tell the user:
|
|
61
|
+
"✅ Phase [N] verified and signed off.
|
|
62
|
+
Run /mindforge:ship [N] to create the release PR."
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# MindForge — Workspace Command
|
|
2
|
+
# Usage: /mindforge:workspace [detect|list|plan phase N|test]
|
|
3
|
+
|
|
4
|
+
Monorepo workspace management.
|
|
5
|
+
|
|
6
|
+
## detect
|
|
7
|
+
Run workspace detector from `.mindforge/monorepo/workspace-detector.md`.
|
|
8
|
+
Write WORKSPACE-MANIFEST.json.
|
|
9
|
+
Report: workspace type, packages found, dependency order.
|
|
10
|
+
|
|
11
|
+
## list
|
|
12
|
+
Read WORKSPACE-MANIFEST.json and display package list:
|
|
13
|
+
```
|
|
14
|
+
Workspace: Turborepo (4 packages)
|
|
15
|
+
packages/shared → @myapp/shared (lib, 0 dependents)
|
|
16
|
+
apps/api → @myapp/api (api, depends on: shared)
|
|
17
|
+
apps/web → @myapp/web (web, depends on: shared, api)
|
|
18
|
+
apps/mobile → @myapp/mobile (mobile, depends on: shared)
|
|
19
|
+
Execution order: shared → api → (web, mobile in parallel)
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## plan phase N
|
|
23
|
+
Create a phase plan that spans multiple packages.
|
|
24
|
+
Uses cross-package-planner.md to determine package execution order.
|
|
25
|
+
Each PLAN file includes a `<package>` and `<working-dir>` field.
|
|
26
|
+
|
|
27
|
+
## test
|
|
28
|
+
Run tests across all packages in dependency order.
|
|
29
|
+
Report per-package test results and aggregate coverage.
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1,26 @@
|
|
|
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
|
|
@@ -0,0 +1,33 @@
|
|
|
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
|
|
@@ -0,0 +1,23 @@
|
|
|
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
|
|
@@ -0,0 +1,27 @@
|
|
|
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
|
|
@@ -0,0 +1,224 @@
|
|
|
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
|
+
});
|
|
@@ -0,0 +1,18 @@
|
|
|
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
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
+
"title": "MindForge Project Configuration Schema",
|
|
4
|
+
"description": "JSON Schema for MINDFORGE.md key-value settings",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"properties": {
|
|
7
|
+
"MINDFORGE_VERSION_REQUIRED": {
|
|
8
|
+
"type": "string",
|
|
9
|
+
"pattern": "^\\d+\\.\\d+\\.\\d+$",
|
|
10
|
+
"description": "Minimum MindForge version required for this config"
|
|
11
|
+
},
|
|
12
|
+
"PLANNER_MODEL": {
|
|
13
|
+
"type": "enum",
|
|
14
|
+
"values": ["claude-opus-4-5", "claude-sonnet-4-5", "claude-haiku-4-5", "inherit"],
|
|
15
|
+
"description": "Claude model to use for the planning agent"
|
|
16
|
+
},
|
|
17
|
+
"EXECUTOR_MODEL": {
|
|
18
|
+
"type": "enum",
|
|
19
|
+
"values": ["claude-opus-4-5", "claude-sonnet-4-5", "claude-haiku-4-5", "inherit"],
|
|
20
|
+
"description": "Claude model to use for execution agents"
|
|
21
|
+
},
|
|
22
|
+
"REVIEWER_MODEL": {
|
|
23
|
+
"type": "enum",
|
|
24
|
+
"values": ["claude-opus-4-5", "claude-sonnet-4-5", "claude-haiku-4-5", "inherit"],
|
|
25
|
+
"description": "Claude model to use for the code reviewer"
|
|
26
|
+
},
|
|
27
|
+
"SECURITY_MODEL": {
|
|
28
|
+
"type": "enum",
|
|
29
|
+
"values": ["claude-opus-4-5", "claude-sonnet-4-5", "claude-haiku-4-5", "inherit"],
|
|
30
|
+
"description": "Claude model to use for security review (recommend Opus for thoroughness)"
|
|
31
|
+
},
|
|
32
|
+
"TIER1_AUTO_APPROVE": {
|
|
33
|
+
"type": "boolean",
|
|
34
|
+
"description": "Auto-approve Tier 1 changes without user confirmation"
|
|
35
|
+
},
|
|
36
|
+
"WAVE_CONFIRMATION_REQUIRED": {
|
|
37
|
+
"type": "boolean",
|
|
38
|
+
"description": "Require user confirmation before each execution wave"
|
|
39
|
+
},
|
|
40
|
+
"AUTO_DISCUSS_PHASE": {
|
|
41
|
+
"type": "boolean",
|
|
42
|
+
"description": "Automatically run discuss-phase before every plan-phase"
|
|
43
|
+
},
|
|
44
|
+
"VERIFY_PASS_RATE_WARNING_THRESHOLD": {
|
|
45
|
+
"type": "number",
|
|
46
|
+
"minimum": 0,
|
|
47
|
+
"maximum": 1,
|
|
48
|
+
"description": "Warn when first-attempt verify pass rate drops below this"
|
|
49
|
+
},
|
|
50
|
+
"COMPACTION_THRESHOLD_PCT": {
|
|
51
|
+
"type": "number",
|
|
52
|
+
"minimum": 50,
|
|
53
|
+
"maximum": 90,
|
|
54
|
+
"description": "Context window percentage that triggers compaction"
|
|
55
|
+
},
|
|
56
|
+
"MAX_TASKS_PER_PHASE": {
|
|
57
|
+
"type": "number",
|
|
58
|
+
"minimum": 1,
|
|
59
|
+
"maximum": 50,
|
|
60
|
+
"description": "Suggest phase split when task count exceeds this"
|
|
61
|
+
},
|
|
62
|
+
"MIN_TEST_COVERAGE_PCT": {
|
|
63
|
+
"type": "number",
|
|
64
|
+
"minimum": 0,
|
|
65
|
+
"maximum": 100,
|
|
66
|
+
"description": "Minimum test coverage percentage required"
|
|
67
|
+
},
|
|
68
|
+
"MAX_FUNCTION_LINES": {
|
|
69
|
+
"type": "number",
|
|
70
|
+
"minimum": 10,
|
|
71
|
+
"maximum": 200,
|
|
72
|
+
"description": "Maximum allowed function length in lines"
|
|
73
|
+
},
|
|
74
|
+
"MAX_CYCLOMATIC_COMPLEXITY": {
|
|
75
|
+
"type": "number",
|
|
76
|
+
"minimum": 3,
|
|
77
|
+
"maximum": 30,
|
|
78
|
+
"description": "Maximum allowed cyclomatic complexity per function"
|
|
79
|
+
},
|
|
80
|
+
"BLOCK_ON_MEDIUM_SECURITY_FINDINGS": {
|
|
81
|
+
"type": "boolean",
|
|
82
|
+
"description": "Block PR creation on MEDIUM security findings (default: only HIGH+)"
|
|
83
|
+
},
|
|
84
|
+
"ALWAYS_LOAD_SKILLS": {
|
|
85
|
+
"type": "string",
|
|
86
|
+
"description": "Comma-separated list of skills to always load regardless of triggers"
|
|
87
|
+
},
|
|
88
|
+
"DISABLED_SKILLS": {
|
|
89
|
+
"type": "string",
|
|
90
|
+
"description": "Comma-separated list of skills to never load"
|
|
91
|
+
},
|
|
92
|
+
"MAX_FULL_SKILL_INJECTIONS": {
|
|
93
|
+
"type": "number",
|
|
94
|
+
"minimum": 1,
|
|
95
|
+
"maximum": 10,
|
|
96
|
+
"description": "Maximum number of skills to inject in full (rest are summarised)"
|
|
97
|
+
},
|
|
98
|
+
"COMMIT_FORMAT": {
|
|
99
|
+
"type": "enum",
|
|
100
|
+
"values": ["conventional-commits", "custom", "none"],
|
|
101
|
+
"description": "Commit message format convention"
|
|
102
|
+
},
|
|
103
|
+
"BRANCHING_STRATEGY": {
|
|
104
|
+
"type": "enum",
|
|
105
|
+
"values": ["none", "phase", "milestone"],
|
|
106
|
+
"description": "Git branching strategy for MindForge phases"
|
|
107
|
+
},
|
|
108
|
+
"NOTIFY_ON": {
|
|
109
|
+
"type": "string",
|
|
110
|
+
"description": "Comma-separated events that trigger Slack notifications"
|
|
111
|
+
},
|
|
112
|
+
"DISCUSS_PHASE_REQUIRED_ABOVE_DIFFICULTY": {
|
|
113
|
+
"type": "number",
|
|
114
|
+
"minimum": 1,
|
|
115
|
+
"maximum": 5,
|
|
116
|
+
"description": "Require discuss-phase when difficulty score exceeds this value"
|
|
117
|
+
},
|
|
118
|
+
"AI_REVIEW_DAILY_LIMIT": {
|
|
119
|
+
"type": "number",
|
|
120
|
+
"minimum": 0,
|
|
121
|
+
"maximum": 500,
|
|
122
|
+
"description": "Maximum AI PR reviews per day (0 = unlimited)"
|
|
123
|
+
},
|
|
124
|
+
"CI_AUTO_APPROVE_TIER2": {
|
|
125
|
+
"type": "boolean",
|
|
126
|
+
"nonOverridable": false,
|
|
127
|
+
"description": "Auto-approve Tier 2 changes in CI mode"
|
|
128
|
+
},
|
|
129
|
+
"CI_SECURITY_SCAN": {
|
|
130
|
+
"type": "boolean",
|
|
131
|
+
"description": "Run security scan in CI mode"
|
|
132
|
+
},
|
|
133
|
+
"CI_MIN_COVERAGE_PCT": {
|
|
134
|
+
"type": "number",
|
|
135
|
+
"minimum": 0,
|
|
136
|
+
"maximum": 100,
|
|
137
|
+
"description": "Minimum test coverage in CI (may differ from interactive threshold)"
|
|
138
|
+
},
|
|
139
|
+
"CI_OUTPUT_FORMAT": {
|
|
140
|
+
"type": "enum",
|
|
141
|
+
"values": ["json", "text", "github-annotations"],
|
|
142
|
+
"description": "Output format for CI execution logs"
|
|
143
|
+
},
|
|
144
|
+
"SECURITY_AUTOTRIGGER": {
|
|
145
|
+
"type": "boolean",
|
|
146
|
+
"nonOverridable": true,
|
|
147
|
+
"description": "NON-OVERRIDABLE: security auto-trigger for auth/payment/PII changes"
|
|
148
|
+
},
|
|
149
|
+
"SECRET_DETECTION": {
|
|
150
|
+
"type": "boolean",
|
|
151
|
+
"nonOverridable": true,
|
|
152
|
+
"description": "NON-OVERRIDABLE: secret detection compliance gate"
|
|
153
|
+
},
|
|
154
|
+
"PLAN_FIRST": {
|
|
155
|
+
"type": "boolean",
|
|
156
|
+
"nonOverridable": true,
|
|
157
|
+
"description": "NON-OVERRIDABLE: plan-first rule (no implementation without a PLAN)"
|
|
158
|
+
},
|
|
159
|
+
"AUDIT_WRITING": {
|
|
160
|
+
"type": "boolean",
|
|
161
|
+
"nonOverridable": true,
|
|
162
|
+
"description": "NON-OVERRIDABLE: AUDIT.jsonl writing for every significant action"
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
}
|